From 2668b85b4714eea4a3a0f2cc03451f520038b212 Mon Sep 17 00:00:00 2001 From: "penify-dev[bot]" <146478655+penify-dev[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 04:09:54 +0000 Subject: [PATCH] Add architecture documentation --- docs/html/README_8md.html | 131 + docs/html/annotated.html | 161 + docs/html/annotated_dup.js | 44 + docs/html/api__client_8py.html | 147 + docs/html/api__client_8py.js | 4 + docs/html/auth__commands_8py.html | 151 + docs/html/auth__commands_8py.js | 5 + docs/html/base__analyzer_8py.html | 147 + docs/html/base__analyzer_8py.js | 4 + docs/html/bc_s.png | Bin 0 -> 676 bytes docs/html/bdwn.png | Bin 0 -> 147 bytes docs/html/classException.html | 146 + docs/html/classException__coll__graph.map | 3 + docs/html/classException__coll__graph.md5 | 1 + docs/html/classException__coll__graph.svg | 26 + docs/html/classException__inherit__graph.map | 4 + docs/html/classException__inherit__graph.md5 | 1 + docs/html/classException__inherit__graph.svg | 46 + docs/html/classes.html | 160 + ...k_1_1api__client_1_1APIClient-members.html | 142 + ...ify__hook_1_1api__client_1_1APIClient.html | 469 +++ ...enify__hook_1_1api__client_1_1APIClient.js | 12 + ...1api__client_1_1APIClient__coll__graph.map | 3 + ...1api__client_1_1APIClient__coll__graph.md5 | 1 + ...1api__client_1_1APIClient__coll__graph.svg | 36 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.map | 4 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.md5 | 1 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.svg | 39 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.map | 6 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 | 1 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.svg | 158 + ...470b897935f9fb372cd0e7e51e3_cgraph_org.svg | 70 + ...ase__analyzer_1_1BaseAnalyzer-members.html | 141 + ...ook_1_1base__analyzer_1_1BaseAnalyzer.html | 309 ++ ..._hook_1_1base__analyzer_1_1BaseAnalyzer.js | 11 + ..._analyzer_1_1BaseAnalyzer__coll__graph.map | 3 + ..._analyzer_1_1BaseAnalyzer__coll__graph.md5 | 1 + ..._analyzer_1_1BaseAnalyzer__coll__graph.svg | 33 + ...alyzer_1_1BaseAnalyzer__inherit__graph.map | 7 + ...alyzer_1_1BaseAnalyzer__inherit__graph.md5 | 1 + ...alyzer_1_1BaseAnalyzer__inherit__graph.svg | 215 ++ ...er_1_1BaseAnalyzer__inherit__graph_org.svg | 127 + ..._analyzer_1_1CommitDocGenHook-members.html | 139 + ...1commit__analyzer_1_1CommitDocGenHook.html | 487 +++ ...1_1commit__analyzer_1_1CommitDocGenHook.js | 9 + ...lyzer_1_1CommitDocGenHook__coll__graph.map | 4 + ...lyzer_1_1CommitDocGenHook__coll__graph.md5 | 1 + ...lyzer_1_1CommitDocGenHook__coll__graph.svg | 57 + ...er_1_1CommitDocGenHook__inherit__graph.map | 4 + ...er_1_1CommitDocGenHook__inherit__graph.md5 | 1 + ...er_1_1CommitDocGenHook__inherit__graph.svg | 57 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.map | 12 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 | 1 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.svg | 268 ++ ...03f7ed9175ef6f81e931a105ea9_cgraph_org.svg | 180 ++ ...496194276441fa2eb2fa014eaab9a37_cgraph.map | 5 + ...496194276441fa2eb2fa014eaab9a37_cgraph.md5 | 1 + ...496194276441fa2eb2fa014eaab9a37_cgraph.svg | 142 + ...94276441fa2eb2fa014eaab9a37_cgraph_org.svg | 54 + ...96194276441fa2eb2fa014eaab9a37_icgraph.map | 4 + ...96194276441fa2eb2fa014eaab9a37_icgraph.md5 | 1 + ...96194276441fa2eb2fa014eaab9a37_icgraph.svg | 40 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.map | 4 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 | 1 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.svg | 40 + ...da13cc121d96342476ccf72b63a007f_cgraph.map | 7 + ...da13cc121d96342476ccf72b63a007f_cgraph.md5 | 1 + ...da13cc121d96342476ccf72b63a007f_cgraph.svg | 174 ++ ...cc121d96342476ccf72b63a007f_cgraph_org.svg | 86 + ...a13cc121d96342476ccf72b63a007f_icgraph.map | 4 + ...a13cc121d96342476ccf72b63a007f_icgraph.md5 | 1 + ...a13cc121d96342476ccf72b63a007f_icgraph.svg | 40 + ...127d86729e226d74dbeb095b008db3e_cgraph.map | 3 + ...127d86729e226d74dbeb095b008db3e_cgraph.md5 | 1 + ...127d86729e226d74dbeb095b008db3e_cgraph.svg | 30 + ...27d86729e226d74dbeb095b008db3e_icgraph.map | 3 + ...27d86729e226d74dbeb095b008db3e_icgraph.md5 | 1 + ...27d86729e226d74dbeb095b008db3e_icgraph.svg | 30 + ...alyzer_1_1FileAnalyzerGenHook-members.html | 138 + ...file__analyzer_1_1FileAnalyzerGenHook.html | 363 +++ ..._1file__analyzer_1_1FileAnalyzerGenHook.js | 8 + ...er_1_1FileAnalyzerGenHook__coll__graph.map | 4 + ...er_1_1FileAnalyzerGenHook__coll__graph.md5 | 1 + ...er_1_1FileAnalyzerGenHook__coll__graph.svg | 56 + ...1_1FileAnalyzerGenHook__inherit__graph.map | 4 + ...1_1FileAnalyzerGenHook__inherit__graph.md5 | 1 + ...1_1FileAnalyzerGenHook__inherit__graph.svg | 56 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map | 6 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 | 1 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg | 159 + ...22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg | 71 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map | 5 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 | 1 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg | 55 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.map | 14 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 | 1 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.svg | 292 ++ ...fbc432fac3e259d957dd1e187f1_cgraph_org.svg | 204 ++ ...ab39391dfb7686f2a2d21a702dd3073_cgraph.map | 4 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 | 1 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.svg | 40 + ...yzer_1_1FolderAnalyzerGenHook-members.html | 137 + ...er__analyzer_1_1FolderAnalyzerGenHook.html | 302 ++ ...lder__analyzer_1_1FolderAnalyzerGenHook.js | 7 + ..._1_1FolderAnalyzerGenHook__coll__graph.map | 4 + ..._1_1FolderAnalyzerGenHook__coll__graph.md5 | 1 + ..._1_1FolderAnalyzerGenHook__coll__graph.svg | 55 + ...1FolderAnalyzerGenHook__inherit__graph.map | 4 + ...1FolderAnalyzerGenHook__inherit__graph.md5 | 1 + ...1FolderAnalyzerGenHook__inherit__graph.svg | 55 + ...b845318fc7ac3b607daf26378e19ec_icgraph.map | 4 + ...b845318fc7ac3b607daf26378e19ec_icgraph.md5 | 1 + ...b845318fc7ac3b607daf26378e19ec_icgraph.svg | 41 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.map | 4 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.md5 | 1 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.svg | 41 + ...it__analyzer_1_1GitDocGenHook-members.html | 138 + ...ook_1_1git__analyzer_1_1GitDocGenHook.html | 386 +++ ..._hook_1_1git__analyzer_1_1GitDocGenHook.js | 8 + ...analyzer_1_1GitDocGenHook__coll__graph.map | 4 + ...analyzer_1_1GitDocGenHook__coll__graph.md5 | 1 + ...analyzer_1_1GitDocGenHook__coll__graph.svg | 58 + ...lyzer_1_1GitDocGenHook__inherit__graph.map | 4 + ...lyzer_1_1GitDocGenHook__inherit__graph.md5 | 1 + ...lyzer_1_1GitDocGenHook__inherit__graph.svg | 58 + ...5313caa22b173ce75638f0db08eeb85_cgraph.map | 4 + ...5313caa22b173ce75638f0db08eeb85_cgraph.md5 | 1 + ...5313caa22b173ce75638f0db08eeb85_cgraph.svg | 39 + ...313caa22b173ce75638f0db08eeb85_icgraph.map | 5 + ...313caa22b173ce75638f0db08eeb85_icgraph.md5 | 1 + ...313caa22b173ce75638f0db08eeb85_icgraph.svg | 55 + ...549766100e91eb94b5f1a1d34bf481_icgraph.map | 4 + ...549766100e91eb94b5f1a1d34bf481_icgraph.md5 | 1 + ...549766100e91eb94b5f1a1d34bf481_icgraph.svg | 40 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.map | 18 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.md5 | 1 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.svg | 356 +++ ...14e92d717391a74bb70b1fab0ae_cgraph_org.svg | 268 ++ ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map | 3 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 | 1 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg | 29 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map | 3 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 | 1 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg | 29 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map | 6 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 | 1 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg | 159 + ...51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg | 71 + ...1_1jira__client_1_1JiraClient-members.html | 148 + ...y__hook_1_1jira__client_1_1JiraClient.html | 775 +++++ ...ify__hook_1_1jira__client_1_1JiraClient.js | 18 + ...ira__client_1_1JiraClient__coll__graph.map | 3 + ...ira__client_1_1JiraClient__coll__graph.md5 | 1 + ...ira__client_1_1JiraClient__coll__graph.svg | 44 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.map | 10 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.md5 | 1 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.svg | 264 ++ ...ae006313a21576362d26ac5ec8_icgraph_org.svg | 176 ++ ...93d6456fe053ef7a7862d5d6851910c_cgraph.map | 5 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.md5 | 1 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.svg | 142 + ...456fe053ef7a7862d5d6851910c_cgraph_org.svg | 54 + ...9ea1149758f7f5212149d357b13cc23_cgraph.map | 6 + ...9ea1149758f7f5212149d357b13cc23_cgraph.md5 | 1 + ...9ea1149758f7f5212149d357b13cc23_cgraph.svg | 166 + ...149758f7f5212149d357b13cc23_cgraph_org.svg | 78 + ...ea1149758f7f5212149d357b13cc23_icgraph.map | 4 + ...ea1149758f7f5212149d357b13cc23_icgraph.md5 | 1 + ...ea1149758f7f5212149d357b13cc23_icgraph.svg | 41 + ...5f6924819084b7c8d268956a784804a_cgraph.map | 4 + ...5f6924819084b7c8d268956a784804a_cgraph.md5 | 1 + ...5f6924819084b7c8d268956a784804a_cgraph.svg | 39 + ...f6924819084b7c8d268956a784804a_icgraph.map | 6 + ...f6924819084b7c8d268956a784804a_icgraph.md5 | 1 + ...f6924819084b7c8d268956a784804a_icgraph.svg | 168 ++ ...4819084b7c8d268956a784804a_icgraph_org.svg | 80 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.map | 9 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 | 1 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.svg | 241 ++ ...5a6432aa6f238da0ff65d49a760_cgraph_org.svg | 153 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map | 4 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 | 1 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg | 45 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.map | 3 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 | 1 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg | 29 + ...967169a4b7970c67c0947b9ac56f746_cgraph.map | 4 + ...967169a4b7970c67c0947b9ac56f746_cgraph.md5 | 1 + ...967169a4b7970c67c0947b9ac56f746_cgraph.svg | 40 + ...67169a4b7970c67c0947b9ac56f746_icgraph.map | 5 + ...67169a4b7970c67c0947b9ac56f746_icgraph.md5 | 1 + ...67169a4b7970c67c0947b9ac56f746_icgraph.svg | 58 + ...a8837552d37bfd611de23441a240826_cgraph.map | 4 + ...a8837552d37bfd611de23441a240826_cgraph.md5 | 1 + ...a8837552d37bfd611de23441a240826_cgraph.svg | 40 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.map | 5 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.md5 | 1 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.svg | 145 + ...d1d3baaedd38039913c3a97fd7_icgraph_org.svg | 57 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.map | 6 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 | 1 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg | 85 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.map | 4 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 | 1 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg | 41 + ...k_1_1llm__client_1_1LLMClient-members.html | 138 + ...ify__hook_1_1llm__client_1_1LLMClient.html | 361 +++ ...enify__hook_1_1llm__client_1_1LLMClient.js | 8 + ...1llm__client_1_1LLMClient__coll__graph.map | 3 + ...1llm__client_1_1LLMClient__coll__graph.md5 | 1 + ...1llm__client_1_1LLMClient__coll__graph.svg | 29 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.map | 4 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 | 1 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.svg | 38 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.map | 4 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.md5 | 1 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.svg | 39 + ...f06658ca922793f879474f2234518e_icgraph.map | 5 + ...f06658ca922793f879474f2234518e_icgraph.md5 | 1 + ...f06658ca922793f879474f2234518e_icgraph.svg | 142 + ...58ca922793f879474f2234518e_icgraph_org.svg | 54 + ...hook_1_1utils_1_1GitRepoNotFoundError.html | 146 + ...s_1_1GitRepoNotFoundError__coll__graph.map | 4 + ...s_1_1GitRepoNotFoundError__coll__graph.md5 | 1 + ...s_1_1GitRepoNotFoundError__coll__graph.svg | 46 + ..._1GitRepoNotFoundError__inherit__graph.map | 4 + ..._1GitRepoNotFoundError__inherit__graph.md5 | 1 + ..._1GitRepoNotFoundError__inherit__graph.svg | 46 + ...ommands_1_1TestCommitCommands-members.html | 145 + ...ommit__commands_1_1TestCommitCommands.html | 792 +++++ ..._commit__commands_1_1TestCommitCommands.js | 15 + ...nds_1_1TestCommitCommands__coll__graph.map | 3 + ...nds_1_1TestCommitCommands__coll__graph.md5 | 1 + ...nds_1_1TestCommitCommands__coll__graph.svg | 42 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.map | 11 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.md5 | 1 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.svg | 244 ++ ...f3707124aa48e8eb581106b8691_cgraph_org.svg | 156 + ...d04b125e102190a768f65f1948f15bc_cgraph.map | 4 + ...d04b125e102190a768f65f1948f15bc_cgraph.md5 | 1 + ...d04b125e102190a768f65f1948f15bc_cgraph.svg | 40 + ...13e368262340af98b30fd8ebdac6597_cgraph.map | 18 + ...13e368262340af98b30fd8ebdac6597_cgraph.md5 | 1 + ...13e368262340af98b30fd8ebdac6597_cgraph.svg | 405 +++ ...68262340af98b30fd8ebdac6597_cgraph_org.svg | 317 ++ ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.map | 11 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 | 1 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.svg | 244 ++ ...e4189792a3f7c11d2a745f479c0_cgraph_org.svg | 156 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.map | 11 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 | 1 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg | 245 ++ ...934ee0f2b914b0b893736e8fe4e_cgraph_org.svg | 157 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.map | 11 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.md5 | 1 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.svg | 244 ++ ...013055ec39ddde86b487aefcf8b_cgraph_org.svg | 156 + ...ommands_1_1TestConfigCommands-members.html | 145 + ...onfig__commands_1_1TestConfigCommands.html | 887 ++++++ ..._config__commands_1_1TestConfigCommands.js | 15 + ...nds_1_1TestConfigCommands__coll__graph.map | 3 + ...nds_1_1TestConfigCommands__coll__graph.md5 | 1 + ...nds_1_1TestConfigCommands__coll__graph.svg | 50 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.map | 5 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 | 1 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.svg | 150 + ...2082bcdd5652bb37bdb14cf453a_cgraph_org.svg | 62 + ...355f7d313bebaa71694387cf2bc5232_cgraph.map | 8 + ...355f7d313bebaa71694387cf2bc5232_cgraph.md5 | 1 + ...355f7d313bebaa71694387cf2bc5232_cgraph.svg | 211 ++ ...7d313bebaa71694387cf2bc5232_cgraph_org.svg | 123 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.map | 5 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.md5 | 1 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.svg | 150 + ...60eee3b67e1cde3aed755ebb948_cgraph_org.svg | 62 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.map | 8 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.md5 | 1 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.svg | 211 ++ ...5d9fcdc159714e8df54920f9436_cgraph_org.svg | 123 + ...73984d31452b56acd6ce4011a1248bd_cgraph.map | 7 + ...73984d31452b56acd6ce4011a1248bd_cgraph.md5 | 1 + ...73984d31452b56acd6ce4011a1248bd_cgraph.svg | 189 ++ ...4d31452b56acd6ce4011a1248bd_cgraph_org.svg | 101 + ...c0207be563c3de59a6d16277805114c_cgraph.map | 8 + ...c0207be563c3de59a6d16277805114c_cgraph.md5 | 1 + ...c0207be563c3de59a6d16277805114c_cgraph.svg | 211 ++ ...7be563c3de59a6d16277805114c_cgraph_org.svg | 123 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.map | 5 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.md5 | 1 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.svg | 150 + ...4dfb21e16003e095b79f6eab2ac_cgraph_org.svg | 62 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map | 7 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 | 1 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg | 189 ++ ...028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg | 101 + ...d8df8219441b9e9871b903a681400d9_cgraph.map | 5 + ...d8df8219441b9e9871b903a681400d9_cgraph.md5 | 1 + ...d8df8219441b9e9871b903a681400d9_cgraph.svg | 150 + ...8219441b9e9871b903a681400d9_cgraph_org.svg | 62 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.map | 7 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 | 1 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.svg | 189 ++ ...233a3f4cc5725b9d4f05758b167_cgraph_org.svg | 101 + ...e37b97432821d19758c6325d4c74bcf_cgraph.map | 7 + ...e37b97432821d19758c6325d4c74bcf_cgraph.md5 | 1 + ...e37b97432821d19758c6325d4c74bcf_cgraph.svg | 189 ++ ...97432821d19758c6325d4c74bcf_cgraph_org.svg | 101 + ...8d62310da2d768e21770f8f01ff5375_cgraph.map | 5 + ...8d62310da2d768e21770f8f01ff5375_cgraph.md5 | 1 + ...8d62310da2d768e21770f8f01ff5375_cgraph.svg | 150 + ...310da2d768e21770f8f01ff5375_cgraph_org.svg | 62 + ..._web__config_1_1TestWebConfig-members.html | 135 + ...1_1test__web__config_1_1TestWebConfig.html | 269 ++ ...s_1_1test__web__config_1_1TestWebConfig.js | 5 + ...__config_1_1TestWebConfig__coll__graph.map | 3 + ...__config_1_1TestWebConfig__coll__graph.md5 | 1 + ...__config_1_1TestWebConfig__coll__graph.svg | 30 + ...6e600222e426b003850509cb1d3190a_cgraph.map | 9 + ...6e600222e426b003850509cb1d3190a_cgraph.md5 | 1 + ...6e600222e426b003850509cb1d3190a_cgraph.svg | 227 ++ ...0222e426b003850509cb1d3190a_cgraph_org.svg | 139 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.map | 4 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.md5 | 1 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.svg | 40 + docs/html/closed.png | Bin 0 -> 132 bytes docs/html/commit-commands_8md.html | 131 + docs/html/commit__analyzer_8py.html | 147 + docs/html/commit__analyzer_8py.js | 4 + docs/html/commit__commands_8py.html | 153 + docs/html/commit__commands_8py.js | 6 + docs/html/config-commands_8md.html | 131 + docs/html/config__command_8py.html | 149 + docs/html/config__command_8py.js | 5 + docs/html/config__commands_8py.html | 175 ++ docs/html/config__commands_8py.js | 15 + docs/html/conftest_8py.html | 141 + docs/html/constants_8py.html | 149 + docs/html/constants_8py.js | 5 + docs/html/detailed-usage_8md.html | 131 + .../dir_063e2d5fe58a131099a7fe4200cca78c.html | 153 + .../dir_063e2d5fe58a131099a7fe4200cca78c.js | 9 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.map | 4 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.md5 | 1 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.svg | 30 + .../dir_1648a057408aae8db85b8e3797335623.html | 137 + ...r_1648a057408aae8db85b8e3797335623_dep.map | 4 + ...r_1648a057408aae8db85b8e3797335623_dep.md5 | 1 + ...r_1648a057408aae8db85b8e3797335623_dep.svg | 30 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.html | 153 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.js | 9 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.map | 4 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 | 1 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.svg | 30 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.html | 146 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.js | 7 + .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.html | 176 ++ .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.js | 19 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map | 5 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 | 1 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg | 42 + docs/html/doc.png | Bin 0 -> 746 bytes docs/html/doc__commands_8md.html | 131 + docs/html/doc__commands_8py.html | 159 + docs/html/doc__commands_8py.js | 7 + docs/html/doxygen-awesome-darkmode-toggle.js | 157 + .../doxygen-awesome-fragment-copy-button.js | 85 + docs/html/doxygen-awesome-interactive-toc.js | 81 + docs/html/doxygen-awesome-paragraph-link.js | 51 + ...n-awesome-sidebar-only-darkmode-toggle.css | 40 + docs/html/doxygen-awesome-sidebar-only.css | 116 + docs/html/doxygen-awesome-tabs.js | 90 + docs/html/doxygen-awesome.css | 2675 +++++++++++++++++ docs/html/doxygen.css | 1841 ++++++++++++ docs/html/doxygen.svg | 26 + docs/html/dynsections.js | 121 + docs/html/example-workflows_8md.html | 131 + docs/html/file__analyzer_8py.html | 153 + docs/html/file__analyzer_8py.js | 5 + docs/html/files.html | 167 + docs/html/files_dup.js | 4 + docs/html/folder__analyzer_8py.html | 147 + docs/html/folder__analyzer_8py.js | 4 + docs/html/folderclosed.png | Bin 0 -> 616 bytes docs/html/folderopen.png | Bin 0 -> 597 bytes docs/html/functions.html | 262 ++ docs/html/functions_func.html | 231 ++ docs/html/functions_vars.html | 148 + docs/html/git__analyzer_8py.html | 153 + docs/html/git__analyzer_8py.js | 5 + docs/html/graph_legend.html | 190 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 117 + docs/html/hierarchy.html | 149 + docs/html/hierarchy.js | 18 + docs/html/hook__commands_8py.html | 159 + docs/html/hook__commands_8py.js | 7 + docs/html/index.html | 130 + docs/html/inherit_graph_0.map | 4 + docs/html/inherit_graph_0.md5 | 1 + docs/html/inherit_graph_0.svg | 38 + docs/html/inherit_graph_1.map | 3 + docs/html/inherit_graph_1.md5 | 1 + docs/html/inherit_graph_1.svg | 22 + docs/html/inherit_graph_2.map | 7 + docs/html/inherit_graph_2.md5 | 1 + docs/html/inherit_graph_2.svg | 87 + docs/html/inherit_graph_3.map | 3 + docs/html/inherit_graph_3.md5 | 1 + docs/html/inherit_graph_3.svg | 23 + docs/html/inherit_graph_4.map | 3 + docs/html/inherit_graph_4.md5 | 1 + docs/html/inherit_graph_4.svg | 22 + docs/html/inherit_graph_5.map | 3 + docs/html/inherit_graph_5.md5 | 1 + docs/html/inherit_graph_5.svg | 23 + docs/html/inherit_graph_6.map | 3 + docs/html/inherit_graph_6.md5 | 1 + docs/html/inherit_graph_6.svg | 23 + docs/html/inherit_graph_7.map | 3 + docs/html/inherit_graph_7.md5 | 1 + docs/html/inherit_graph_7.svg | 23 + docs/html/inherits.html | 150 + docs/html/jira__client_8py.html | 153 + docs/html/jira__client_8py.js | 5 + docs/html/jquery.js | 35 + docs/html/llm__client_8py.html | 147 + docs/html/llm__client_8py.js | 4 + docs/html/login__command_8py.html | 149 + docs/html/login__command_8py.js | 5 + docs/html/main_8py.html | 147 + docs/html/main_8py.js | 4 + ...nContext_Penify_dev_penify_cli_README.html | 245 ++ ...y_dev_penify_cli_docs_commit_commands.html | 256 ++ ...y_dev_penify_cli_docs_config_commands.html | 287 ++ ...fy_dev_penify_cli_docs_detailed_usage.html | 281 ++ ...nify_dev_penify_cli_docs_doc_commands.html | 364 +++ ...dev_penify_cli_docs_example_workflows.html | 240 ++ docs/html/menu.js | 135 + docs/html/menudata.js | 117 + docs/html/namespacemembers.html | 290 ++ docs/html/namespacemembers_func.html | 229 ++ docs/html/namespacemembers_vars.html | 216 ++ docs/html/namespacepenify__hook.html | 167 + docs/html/namespacepenify__hook.js | 56 + .../namespacepenify__hook_1_1api__client.html | 139 + .../namespacepenify__hook_1_1api__client.js | 4 + ...mespacepenify__hook_1_1base__analyzer.html | 139 + ...namespacepenify__hook_1_1base__analyzer.js | 4 + .../namespacepenify__hook_1_1commands.html | 147 + .../html/namespacepenify__hook_1_1commands.js | 38 + ...y__hook_1_1commands_1_1auth__commands.html | 230 ++ ...8f375c58bb6f69f98675e6a9ac84655_cgraph.map | 5 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.md5 | 1 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.svg | 149 + ...5c58bb6f69f98675e6a9ac84655_cgraph_org.svg | 61 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.map | 5 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.md5 | 1 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.svg | 148 + ...c58bb6f69f98675e6a9ac84655_icgraph_org.svg | 60 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.map | 4 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 | 1 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg | 45 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.map | 6 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 | 1 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.svg | 164 + ...a1749d4218ea1dc6e5b6218b24_icgraph_org.svg | 76 + ..._hook_1_1commands_1_1commit__commands.html | 312 ++ ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.map | 10 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 | 1 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg | 227 ++ ...c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg | 139 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.map | 10 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 | 1 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg | 234 ++ ...4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg | 146 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.map | 5 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.md5 | 1 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.svg | 61 + ...4f739f524c38b437e4e47673d683e23_cgraph.map | 17 + ...4f739f524c38b437e4e47673d683e23_cgraph.md5 | 1 + ...4f739f524c38b437e4e47673d683e23_cgraph.svg | 388 +++ ...9f524c38b437e4e47673d683e23_cgraph_org.svg | 300 ++ ...f739f524c38b437e4e47673d683e23_icgraph.map | 5 + ...f739f524c38b437e4e47673d683e23_icgraph.md5 | 1 + ...f739f524c38b437e4e47673d683e23_icgraph.svg | 61 + ..._hook_1_1commands_1_1config__commands.html | 568 ++++ ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map | 6 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 | 1 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg | 172 ++ ...685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg | 84 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map | 10 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 | 1 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg | 237 ++ ...85c4dcb5c15ba6a4055e484cf2_icgraph_org.svg | 149 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.map | 6 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 | 1 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.svg | 165 + ...34a655ed80e6c95939b6f3c35c_icgraph_org.svg | 77 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.map | 24 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 | 1 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg | 486 +++ ...062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg | 398 +++ ...617bc5956e502c9555dc0dda0376df4_cgraph.map | 4 + ...617bc5956e502c9555dc0dda0376df4_cgraph.md5 | 1 + ...617bc5956e502c9555dc0dda0376df4_cgraph.svg | 45 + ...17bc5956e502c9555dc0dda0376df4_icgraph.map | 7 + ...17bc5956e502c9555dc0dda0376df4_icgraph.md5 | 1 + ...17bc5956e502c9555dc0dda0376df4_icgraph.svg | 182 ++ ...5956e502c9555dc0dda0376df4_icgraph_org.svg | 94 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.map | 7 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.md5 | 1 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.svg | 194 ++ ...51c905e2f1b299b12d2a73bd812_cgraph_org.svg | 106 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.map | 14 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.md5 | 1 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.svg | 302 ++ ...1c905e2f1b299b12d2a73bd812_icgraph_org.svg | 214 ++ ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map | 6 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 | 1 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg | 172 ++ ...c8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg | 84 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.map | 9 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 | 1 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg | 216 ++ ...8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg | 128 + ...559a82d0bf727703d550d1003d3ed20_cgraph.map | 4 + ...559a82d0bf727703d550d1003d3ed20_cgraph.md5 | 1 + ...559a82d0bf727703d550d1003d3ed20_cgraph.svg | 45 + ...59a82d0bf727703d550d1003d3ed20_icgraph.map | 17 + ...59a82d0bf727703d550d1003d3ed20_icgraph.md5 | 1 + ...59a82d0bf727703d550d1003d3ed20_icgraph.svg | 352 +++ ...2d0bf727703d550d1003d3ed20_icgraph_org.svg | 264 ++ ...be277132ce0bc0aacef951cf1dee2ae_cgraph.map | 4 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.md5 | 1 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.svg | 51 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.map | 24 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.md5 | 1 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.svg | 491 +++ ...132ce0bc0aacef951cf1dee2ae_icgraph_org.svg | 403 +++ ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map | 4 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 | 1 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg | 45 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.map | 8 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 | 1 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg | 204 ++ ...c2bf16b4a671e49625bfa4f9b4_icgraph_org.svg | 116 + ...115198ea5d6808ccb98733957f50b06_cgraph.map | 8 + ...115198ea5d6808ccb98733957f50b06_cgraph.md5 | 1 + ...115198ea5d6808ccb98733957f50b06_cgraph.svg | 210 ++ ...98ea5d6808ccb98733957f50b06_cgraph_org.svg | 122 + ...15198ea5d6808ccb98733957f50b06_icgraph.map | 6 + ...15198ea5d6808ccb98733957f50b06_icgraph.md5 | 1 + ...15198ea5d6808ccb98733957f50b06_icgraph.svg | 165 + ...8ea5d6808ccb98733957f50b06_icgraph_org.svg | 77 + ...fy__hook_1_1commands_1_1doc__commands.html | 280 ++ ...006ab13bff718ef783868a910c0b704_cgraph.map | 11 + ...006ab13bff718ef783868a910c0b704_cgraph.md5 | 1 + ...006ab13bff718ef783868a910c0b704_cgraph.svg | 258 ++ ...b13bff718ef783868a910c0b704_cgraph_org.svg | 170 ++ ...06ab13bff718ef783868a910c0b704_icgraph.map | 8 + ...06ab13bff718ef783868a910c0b704_icgraph.md5 | 1 + ...06ab13bff718ef783868a910c0b704_icgraph.svg | 108 + ...aac68bc563432bf25c85dc78081a25_icgraph.map | 15 + ...aac68bc563432bf25c85dc78081a25_icgraph.md5 | 1 + ...aac68bc563432bf25c85dc78081a25_icgraph.svg | 309 ++ ...8bc563432bf25c85dc78081a25_icgraph_org.svg | 221 ++ ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.map | 5 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 | 1 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg | 60 + ...y__hook_1_1commands_1_1hook__commands.html | 243 ++ ...543eb5fa835fd1237f24e8bce6201d_icgraph.map | 9 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.md5 | 1 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.svg | 212 ++ ...b5fa835fd1237f24e8bce6201d_icgraph_org.svg | 124 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.map | 9 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 | 1 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.svg | 212 ++ ...d3bf1c3795974a391ee95b72b2_icgraph_org.svg | 124 + ...spacepenify__hook_1_1commit__analyzer.html | 139 + ...mespacepenify__hook_1_1commit__analyzer.js | 4 + ...espacepenify__hook_1_1config__command.html | 206 ++ ...40e5331681eb574ac319d7458783bde_cgraph.map | 11 + ...40e5331681eb574ac319d7458783bde_cgraph.md5 | 1 + ...40e5331681eb574ac319d7458783bde_cgraph.svg | 270 ++ ...331681eb574ac319d7458783bde_cgraph_org.svg | 182 ++ ...0e5331681eb574ac319d7458783bde_icgraph.map | 4 + ...0e5331681eb574ac319d7458783bde_icgraph.md5 | 1 + ...0e5331681eb574ac319d7458783bde_icgraph.svg | 44 + ...3eb92164a69df1446d745f8a09285e_icgraph.map | 4 + ...3eb92164a69df1446d745f8a09285e_icgraph.md5 | 1 + ...3eb92164a69df1446d745f8a09285e_icgraph.svg | 45 + .../namespacepenify__hook_1_1constants.html | 170 ++ ...mespacepenify__hook_1_1file__analyzer.html | 160 + ...namespacepenify__hook_1_1file__analyzer.js | 5 + ...spacepenify__hook_1_1folder__analyzer.html | 139 + ...mespacepenify__hook_1_1folder__analyzer.js | 4 + ...amespacepenify__hook_1_1git__analyzer.html | 160 + .../namespacepenify__hook_1_1git__analyzer.js | 5 + ...namespacepenify__hook_1_1jira__client.html | 160 + .../namespacepenify__hook_1_1jira__client.js | 5 + .../namespacepenify__hook_1_1llm__client.html | 139 + .../namespacepenify__hook_1_1llm__client.js | 4 + ...mespacepenify__hook_1_1login__command.html | 197 ++ ...63db4c484797bead34b7d874020c6a_icgraph.map | 4 + ...63db4c484797bead34b7d874020c6a_icgraph.md5 | 1 + ...63db4c484797bead34b7d874020c6a_icgraph.svg | 44 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map | 6 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 | 1 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg | 165 + ...32fbafeff834b0a0c5a37f74ccd_cgraph_org.svg | 77 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.map | 4 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 | 1 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg | 44 + docs/html/namespacepenify__hook_1_1main.html | 177 ++ ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.map | 34 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 | 1 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.svg | 708 +++++ ...b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg | 620 ++++ ...838b20df4bd14ee4b5e1dd2906738f_icgraph.map | 3 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 | 1 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.svg | 28 + .../namespacepenify__hook_1_1ui__utils.html | 796 +++++ ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map | 17 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 | 1 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg | 347 +++ ...613c6fe053b6e4356cd9e5cda2_icgraph_org.svg | 259 ++ ...2b92532b1458af94f3649d411b5505c_cgraph.map | 4 + ...2b92532b1458af94f3649d411b5505c_cgraph.md5 | 1 + ...2b92532b1458af94f3649d411b5505c_cgraph.svg | 38 + ...b92532b1458af94f3649d411b5505c_icgraph.map | 4 + ...b92532b1458af94f3649d411b5505c_icgraph.md5 | 1 + ...b92532b1458af94f3649d411b5505c_icgraph.svg | 39 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.map | 4 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 | 1 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.svg | 39 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.map | 16 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.md5 | 1 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.svg | 331 ++ ...671dbe233770268e2dd66a67fa_icgraph_org.svg | 243 ++ ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map | 4 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 | 1 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg | 39 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.map | 6 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 | 1 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg | 71 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.map | 4 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.md5 | 1 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.svg | 38 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.map | 4 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.md5 | 1 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.svg | 39 + ...d934568897433fa73f9cc182ac4a3e_icgraph.map | 12 + ...d934568897433fa73f9cc182ac4a3e_icgraph.md5 | 1 + ...d934568897433fa73f9cc182ac4a3e_icgraph.svg | 266 ++ ...568897433fa73f9cc182ac4a3e_icgraph_org.svg | 178 ++ ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.map | 7 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 | 1 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.svg | 175 ++ ...4de7c679ce8b29c3e9116c4776_icgraph_org.svg | 87 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.map | 6 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 | 1 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.svg | 165 + ...d0fc60fb80f17514d60bf45f1d_icgraph_org.svg | 77 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.map | 4 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 | 1 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg | 39 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.map | 11 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 | 1 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.svg | 250 ++ ...7dd91abfe67d0807803bc3b65f_icgraph_org.svg | 162 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.map | 4 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.md5 | 1 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.svg | 37 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.map | 16 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.md5 | 1 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.svg | 356 +++ ...df6e9bf71510c379b6fa155e44_icgraph_org.svg | 268 ++ ...c3e466d1912058167be2eacf85b9f6_icgraph.map | 20 + ...c3e466d1912058167be2eacf85b9f6_icgraph.md5 | 1 + ...c3e466d1912058167be2eacf85b9f6_icgraph.svg | 425 +++ ...66d1912058167be2eacf85b9f6_icgraph_org.svg | 337 +++ ...e684c00e26199440137a87ed9b195c_icgraph.map | 5 + ...e684c00e26199440137a87ed9b195c_icgraph.md5 | 1 + ...e684c00e26199440137a87ed9b195c_icgraph.svg | 55 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map | 4 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 | 1 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg | 39 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.map | 4 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 | 1 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg | 39 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map | 6 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 | 1 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg | 160 + ...b3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg | 72 + docs/html/namespacepenify__hook_1_1utils.html | 254 ++ docs/html/namespacepenify__hook_1_1utils.js | 8 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map | 3 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 | 1 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg | 29 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map | 41 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 | 1 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg | 815 +++++ ...c80860d6a2e2d061d2fb660a3f_icgraph_org.svg | 727 +++++ docs/html/namespaces.html | 174 ++ docs/html/namespaces_dup.js | 20 + docs/html/namespacesetup.html | 346 +++ docs/html/namespacetests.html | 147 + docs/html/namespacetests.js | 20 + docs/html/namespacetests_1_1conftest.html | 131 + ...espacetests_1_1test__commit__commands.html | 139 + ...amespacetests_1_1test__commit__commands.js | 4 + ...espacetests_1_1test__config__commands.html | 139 + ...amespacetests_1_1test__config__commands.js | 4 + ...namespacetests_1_1test__doc__commands.html | 747 +++++ ...e74c920f258f442914771164fe26b45_cgraph.map | 4 + ...e74c920f258f442914771164fe26b45_cgraph.md5 | 1 + ...e74c920f258f442914771164fe26b45_cgraph.svg | 39 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map | 4 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 | 1 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg | 39 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.map | 12 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.md5 | 1 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.svg | 274 ++ ...f9ad0128c3ca1263b552fd5e482_cgraph_org.svg | 186 ++ ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.map | 4 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 | 1 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.svg | 39 + ...bb75610e40d94d42bc169b25403c186_cgraph.map | 4 + ...bb75610e40d94d42bc169b25403c186_cgraph.md5 | 1 + ...bb75610e40d94d42bc169b25403c186_cgraph.svg | 39 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.map | 4 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.md5 | 1 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.svg | 40 + ...06110833eb0aad547156faf014b31d8_cgraph.map | 4 + ...06110833eb0aad547156faf014b31d8_cgraph.md5 | 1 + ...06110833eb0aad547156faf014b31d8_cgraph.svg | 39 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.map | 12 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 | 1 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.svg | 274 ++ ...fa48469b6c097a7a55fcb20c21a_cgraph_org.svg | 186 ++ ...74688baa8c9b5ba302c2877a9789d05_cgraph.map | 12 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.md5 | 1 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.svg | 274 ++ ...8baa8c9b5ba302c2877a9789d05_cgraph_org.svg | 186 ++ ...c76cc25c23476794234cdadbcaef0c0_cgraph.map | 4 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.md5 | 1 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.svg | 39 + ...9b01e5fc89255cac96747fa081c442c_cgraph.map | 12 + ...9b01e5fc89255cac96747fa081c442c_cgraph.md5 | 1 + ...9b01e5fc89255cac96747fa081c442c_cgraph.svg | 274 ++ ...e5fc89255cac96747fa081c442c_cgraph_org.svg | 186 ++ .../namespacetests_1_1test__web__config.html | 139 + .../namespacetests_1_1test__web__config.js | 4 + docs/html/nav_f.png | Bin 0 -> 153 bytes docs/html/nav_g.png | Bin 0 -> 95 bytes docs/html/nav_h.png | Bin 0 -> 98 bytes docs/html/navtree.css | 147 + docs/html/navtree.js | 549 ++++ docs/html/navtreedata.js | 241 ++ docs/html/navtreeindex0.js | 253 ++ docs/html/navtreeindex1.js | 253 ++ docs/html/navtreeindex2.js | 90 + docs/html/open.png | Bin 0 -> 123 bytes docs/html/pages.html | 140 + docs/html/penify-cli-documentation_8md.html | 131 + docs/html/penify__hook_2____init_____8py.html | 131 + ...ify__hook_2commands_2____init_____8py.html | 141 + docs/html/resize.js | 150 + docs/html/search/all_0.html | 37 + docs/html/search/all_0.js | 7 + docs/html/search/all_1.html | 37 + docs/html/search/all_1.js | 14 + docs/html/search/all_10.html | 37 + docs/html/search/all_10.js | 16 + docs/html/search/all_11.html | 37 + docs/html/search/all_11.js | 47 + docs/html/search/all_12.html | 37 + docs/html/search/all_12.js | 9 + docs/html/search/all_13.html | 37 + docs/html/search/all_13.js | 4 + docs/html/search/all_14.html | 37 + docs/html/search/all_14.js | 5 + docs/html/search/all_2.html | 37 + docs/html/search/all_2.js | 6 + docs/html/search/all_3.html | 37 + docs/html/search/all_3.js | 18 + docs/html/search/all_4.html | 37 + docs/html/search/all_4.js | 11 + docs/html/search/all_5.html | 37 + docs/html/search/all_5.js | 11 + docs/html/search/all_6.html | 37 + docs/html/search/all_6.js | 17 + docs/html/search/all_7.html | 37 + docs/html/search/all_7.js | 23 + docs/html/search/all_8.html | 37 + docs/html/search/all_8.js | 11 + docs/html/search/all_9.html | 37 + docs/html/search/all_9.js | 7 + docs/html/search/all_a.html | 37 + docs/html/search/all_a.js | 10 + docs/html/search/all_b.html | 37 + docs/html/search/all_b.js | 14 + docs/html/search/all_c.html | 37 + docs/html/search/all_c.js | 12 + docs/html/search/all_d.html | 37 + docs/html/search/all_d.js | 5 + docs/html/search/all_e.html | 37 + docs/html/search/all_e.js | 43 + docs/html/search/all_f.html | 37 + docs/html/search/all_f.js | 10 + docs/html/search/classes_0.html | 37 + docs/html/search/classes_0.js | 4 + docs/html/search/classes_1.html | 37 + docs/html/search/classes_1.js | 4 + docs/html/search/classes_2.html | 37 + docs/html/search/classes_2.js | 4 + docs/html/search/classes_3.html | 37 + docs/html/search/classes_3.js | 4 + docs/html/search/classes_4.html | 37 + docs/html/search/classes_4.js | 5 + docs/html/search/classes_5.html | 37 + docs/html/search/classes_5.js | 5 + docs/html/search/classes_6.html | 37 + docs/html/search/classes_6.js | 4 + docs/html/search/classes_7.html | 37 + docs/html/search/classes_7.js | 4 + docs/html/search/classes_8.html | 37 + docs/html/search/classes_8.js | 6 + docs/html/search/close.svg | 31 + docs/html/search/files_0.html | 37 + docs/html/search/files_0.js | 4 + docs/html/search/files_1.html | 37 + docs/html/search/files_1.js | 5 + docs/html/search/files_10.html | 37 + docs/html/search/files_10.js | 5 + docs/html/search/files_2.html | 37 + docs/html/search/files_2.js | 4 + docs/html/search/files_3.html | 37 + docs/html/search/files_3.js | 11 + docs/html/search/files_4.html | 37 + docs/html/search/files_4.js | 6 + docs/html/search/files_5.html | 37 + docs/html/search/files_5.js | 4 + docs/html/search/files_6.html | 37 + docs/html/search/files_6.js | 5 + docs/html/search/files_7.html | 37 + docs/html/search/files_7.js | 4 + docs/html/search/files_8.html | 37 + docs/html/search/files_8.js | 4 + docs/html/search/files_9.html | 37 + docs/html/search/files_9.js | 4 + docs/html/search/files_a.html | 37 + docs/html/search/files_a.js | 5 + docs/html/search/files_b.html | 37 + docs/html/search/files_b.js | 4 + docs/html/search/files_c.html | 37 + docs/html/search/files_c.js | 4 + docs/html/search/files_d.html | 37 + docs/html/search/files_d.js | 4 + docs/html/search/files_e.html | 37 + docs/html/search/files_e.js | 4 + docs/html/search/files_f.html | 37 + docs/html/search/files_f.js | 7 + docs/html/search/functions_0.html | 37 + docs/html/search/functions_0.js | 5 + docs/html/search/functions_1.html | 37 + docs/html/search/functions_1.js | 4 + docs/html/search/functions_2.html | 37 + docs/html/search/functions_2.js | 8 + docs/html/search/functions_3.html | 37 + docs/html/search/functions_3.js | 6 + docs/html/search/functions_4.html | 37 + docs/html/search/functions_4.js | 11 + docs/html/search/functions_5.html | 37 + docs/html/search/functions_5.js | 20 + docs/html/search/functions_6.html | 37 + docs/html/search/functions_6.js | 7 + docs/html/search/functions_7.html | 37 + docs/html/search/functions_7.js | 5 + docs/html/search/functions_8.html | 37 + docs/html/search/functions_8.js | 7 + docs/html/search/functions_9.html | 37 + docs/html/search/functions_9.js | 10 + docs/html/search/functions_a.html | 37 + docs/html/search/functions_a.js | 11 + docs/html/search/functions_b.html | 37 + docs/html/search/functions_b.js | 5 + docs/html/search/functions_c.html | 37 + docs/html/search/functions_c.js | 11 + docs/html/search/functions_d.html | 37 + docs/html/search/functions_d.js | 34 + docs/html/search/functions_e.html | 37 + docs/html/search/functions_e.js | 6 + docs/html/search/mag_sel.svg | 74 + docs/html/search/namespaces_0.html | 37 + docs/html/search/namespaces_0.js | 24 + docs/html/search/namespaces_1.html | 37 + docs/html/search/namespaces_1.js | 4 + docs/html/search/namespaces_2.html | 37 + docs/html/search/namespaces_2.js | 9 + docs/html/search/nomatches.html | 13 + docs/html/search/pages_0.html | 37 + docs/html/search/pages_0.js | 9 + docs/html/search/search.css | 263 ++ docs/html/search/search.js | 802 +++++ docs/html/search/search_l.png | Bin 0 -> 567 bytes docs/html/search/search_m.png | Bin 0 -> 158 bytes docs/html/search/search_r.png | Bin 0 -> 553 bytes docs/html/search/searchdata.js | 33 + docs/html/search/variables_0.html | 37 + docs/html/search/variables_0.js | 4 + docs/html/search/variables_1.html | 37 + docs/html/search/variables_1.js | 10 + docs/html/search/variables_10.html | 37 + docs/html/search/variables_10.js | 4 + docs/html/search/variables_11.html | 37 + docs/html/search/variables_11.js | 4 + docs/html/search/variables_12.html | 37 + docs/html/search/variables_12.js | 5 + docs/html/search/variables_2.html | 37 + docs/html/search/variables_2.js | 4 + docs/html/search/variables_3.html | 37 + docs/html/search/variables_3.js | 4 + docs/html/search/variables_4.html | 37 + docs/html/search/variables_4.js | 8 + docs/html/search/variables_5.html | 37 + docs/html/search/variables_5.js | 6 + docs/html/search/variables_6.html | 37 + docs/html/search/variables_6.js | 5 + docs/html/search/variables_7.html | 37 + docs/html/search/variables_7.js | 6 + docs/html/search/variables_8.html | 37 + docs/html/search/variables_8.js | 5 + docs/html/search/variables_9.html | 37 + docs/html/search/variables_9.js | 8 + docs/html/search/variables_a.html | 37 + docs/html/search/variables_a.js | 7 + docs/html/search/variables_b.html | 37 + docs/html/search/variables_b.js | 4 + docs/html/search/variables_c.html | 37 + docs/html/search/variables_c.js | 5 + docs/html/search/variables_d.html | 37 + docs/html/search/variables_d.js | 7 + docs/html/search/variables_e.html | 37 + docs/html/search/variables_e.js | 7 + docs/html/search/variables_f.html | 37 + docs/html/search/variables_f.js | 6 + docs/html/setup_8py.html | 169 ++ docs/html/setup_8py.js | 16 + docs/html/splitbar.png | Bin 0 -> 314 bytes docs/html/svgpan.js | 323 ++ docs/html/sync_off.png | Bin 0 -> 853 bytes docs/html/sync_on.png | Bin 0 -> 845 bytes docs/html/tab_a.png | Bin 0 -> 142 bytes docs/html/tab_b.png | Bin 0 -> 169 bytes docs/html/tab_h.png | Bin 0 -> 177 bytes docs/html/tab_s.png | Bin 0 -> 184 bytes docs/html/tabs.css | 1 + docs/html/test__commit__commands_8py.html | 147 + docs/html/test__commit__commands_8py.js | 4 + docs/html/test__config__commands_8py.html | 147 + docs/html/test__config__commands_8py.js | 4 + docs/html/test__doc__commands_8py.html | 167 + docs/html/test__doc__commands_8py.js | 14 + docs/html/test__web__config_8py.html | 147 + docs/html/test__web__config_8py.js | 4 + docs/html/tests_2____init_____8py.html | 139 + docs/html/toggle-alternative-theme.js | 11 + docs/html/ui__utils_8py.html | 201 ++ docs/html/ui__utils_8py.js | 29 + docs/html/utils_8py.html | 163 + docs/html/utils_8py.js | 8 + docs/penify-cli-Penify-dev-g.tar.gz | Bin 0 -> 790624 bytes 973 files changed, 73086 insertions(+) create mode 100644 docs/html/README_8md.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/annotated_dup.js create mode 100644 docs/html/api__client_8py.html create mode 100644 docs/html/api__client_8py.js create mode 100644 docs/html/auth__commands_8py.html create mode 100644 docs/html/auth__commands_8py.js create mode 100644 docs/html/base__analyzer_8py.html create mode 100644 docs/html/base__analyzer_8py.js create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/bdwn.png create mode 100644 docs/html/classException.html create mode 100644 docs/html/classException__coll__graph.map create mode 100644 docs/html/classException__coll__graph.md5 create mode 100644 docs/html/classException__coll__graph.svg create mode 100644 docs/html/classException__inherit__graph.map create mode 100644 docs/html/classException__inherit__graph.md5 create mode 100644 docs/html/classException__inherit__graph.svg create mode 100644 docs/html/classes.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.js create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg create mode 100644 docs/html/closed.png create mode 100644 docs/html/commit-commands_8md.html create mode 100644 docs/html/commit__analyzer_8py.html create mode 100644 docs/html/commit__analyzer_8py.js create mode 100644 docs/html/commit__commands_8py.html create mode 100644 docs/html/commit__commands_8py.js create mode 100644 docs/html/config-commands_8md.html create mode 100644 docs/html/config__command_8py.html create mode 100644 docs/html/config__command_8py.js create mode 100644 docs/html/config__commands_8py.html create mode 100644 docs/html/config__commands_8py.js create mode 100644 docs/html/conftest_8py.html create mode 100644 docs/html/constants_8py.html create mode 100644 docs/html/constants_8py.js create mode 100644 docs/html/detailed-usage_8md.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623.html create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg create mode 100644 docs/html/doc.png create mode 100644 docs/html/doc__commands_8md.html create mode 100644 docs/html/doc__commands_8py.html create mode 100644 docs/html/doc__commands_8py.js create mode 100644 docs/html/doxygen-awesome-darkmode-toggle.js create mode 100644 docs/html/doxygen-awesome-fragment-copy-button.js create mode 100644 docs/html/doxygen-awesome-interactive-toc.js create mode 100644 docs/html/doxygen-awesome-paragraph-link.js create mode 100644 docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css create mode 100644 docs/html/doxygen-awesome-sidebar-only.css create mode 100644 docs/html/doxygen-awesome-tabs.js create mode 100644 docs/html/doxygen-awesome.css create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/example-workflows_8md.html create mode 100644 docs/html/file__analyzer_8py.html create mode 100644 docs/html/file__analyzer_8py.js create mode 100644 docs/html/files.html create mode 100644 docs/html/files_dup.js create mode 100644 docs/html/folder__analyzer_8py.html create mode 100644 docs/html/folder__analyzer_8py.js create mode 100644 docs/html/folderclosed.png create mode 100644 docs/html/folderopen.png create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_func.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/git__analyzer_8py.html create mode 100644 docs/html/git__analyzer_8py.js create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/graph_legend.md5 create mode 100644 docs/html/graph_legend.svg create mode 100644 docs/html/hierarchy.html create mode 100644 docs/html/hierarchy.js create mode 100644 docs/html/hook__commands_8py.html create mode 100644 docs/html/hook__commands_8py.js create mode 100644 docs/html/index.html create mode 100644 docs/html/inherit_graph_0.map create mode 100644 docs/html/inherit_graph_0.md5 create mode 100644 docs/html/inherit_graph_0.svg create mode 100644 docs/html/inherit_graph_1.map create mode 100644 docs/html/inherit_graph_1.md5 create mode 100644 docs/html/inherit_graph_1.svg create mode 100644 docs/html/inherit_graph_2.map create mode 100644 docs/html/inherit_graph_2.md5 create mode 100644 docs/html/inherit_graph_2.svg create mode 100644 docs/html/inherit_graph_3.map create mode 100644 docs/html/inherit_graph_3.md5 create mode 100644 docs/html/inherit_graph_3.svg create mode 100644 docs/html/inherit_graph_4.map create mode 100644 docs/html/inherit_graph_4.md5 create mode 100644 docs/html/inherit_graph_4.svg create mode 100644 docs/html/inherit_graph_5.map create mode 100644 docs/html/inherit_graph_5.md5 create mode 100644 docs/html/inherit_graph_5.svg create mode 100644 docs/html/inherit_graph_6.map create mode 100644 docs/html/inherit_graph_6.md5 create mode 100644 docs/html/inherit_graph_6.svg create mode 100644 docs/html/inherit_graph_7.map create mode 100644 docs/html/inherit_graph_7.md5 create mode 100644 docs/html/inherit_graph_7.svg create mode 100644 docs/html/inherits.html create mode 100644 docs/html/jira__client_8py.html create mode 100644 docs/html/jira__client_8py.js create mode 100644 docs/html/jquery.js create mode 100644 docs/html/llm__client_8py.html create mode 100644 docs/html/llm__client_8py.js create mode 100644 docs/html/login__command_8py.html create mode 100644 docs/html/login__command_8py.js create mode 100644 docs/html/main_8py.html create mode 100644 docs/html/main_8py.js create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/namespacemembers.html create mode 100644 docs/html/namespacemembers_func.html create mode 100644 docs/html/namespacemembers_vars.html create mode 100644 docs/html/namespacepenify__hook.html create mode 100644 docs/html/namespacepenify__hook.js create mode 100644 docs/html/namespacepenify__hook_1_1api__client.html create mode 100644 docs/html/namespacepenify__hook_1_1api__client.js create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands.js create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1config__command.html create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1constants.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.html create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.js create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.html create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.js create mode 100644 docs/html/namespacepenify__hook_1_1login__command.html create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main.html create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils.html create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils.html create mode 100644 docs/html/namespacepenify__hook_1_1utils.js create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg create mode 100644 docs/html/namespaces.html create mode 100644 docs/html/namespaces_dup.js create mode 100644 docs/html/namespacesetup.html create mode 100644 docs/html/namespacetests.html create mode 100644 docs/html/namespacetests.js create mode 100644 docs/html/namespacetests_1_1conftest.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.js create mode 100644 docs/html/namespacetests_1_1test__config__commands.html create mode 100644 docs/html/namespacetests_1_1test__config__commands.js create mode 100644 docs/html/namespacetests_1_1test__doc__commands.html create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__web__config.html create mode 100644 docs/html/namespacetests_1_1test__web__config.js create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_g.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/navtreedata.js create mode 100644 docs/html/navtreeindex0.js create mode 100644 docs/html/navtreeindex1.js create mode 100644 docs/html/navtreeindex2.js create mode 100644 docs/html/open.png create mode 100644 docs/html/pages.html create mode 100644 docs/html/penify-cli-documentation_8md.html create mode 100644 docs/html/penify__hook_2____init_____8py.html create mode 100644 docs/html/penify__hook_2commands_2____init_____8py.html create mode 100644 docs/html/resize.js create mode 100644 docs/html/search/all_0.html create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.html create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_10.html create mode 100644 docs/html/search/all_10.js create mode 100644 docs/html/search/all_11.html create mode 100644 docs/html/search/all_11.js create mode 100644 docs/html/search/all_12.html create mode 100644 docs/html/search/all_12.js create mode 100644 docs/html/search/all_13.html create mode 100644 docs/html/search/all_13.js create mode 100644 docs/html/search/all_14.html create mode 100644 docs/html/search/all_14.js create mode 100644 docs/html/search/all_2.html create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.html create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.html create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.html create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.html create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.html create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.html create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/all_9.html create mode 100644 docs/html/search/all_9.js create mode 100644 docs/html/search/all_a.html create mode 100644 docs/html/search/all_a.js create mode 100644 docs/html/search/all_b.html create mode 100644 docs/html/search/all_b.js create mode 100644 docs/html/search/all_c.html create mode 100644 docs/html/search/all_c.js create mode 100644 docs/html/search/all_d.html create mode 100644 docs/html/search/all_d.js create mode 100644 docs/html/search/all_e.html create mode 100644 docs/html/search/all_e.js create mode 100644 docs/html/search/all_f.html create mode 100644 docs/html/search/all_f.js create mode 100644 docs/html/search/classes_0.html create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/classes_1.html create mode 100644 docs/html/search/classes_1.js create mode 100644 docs/html/search/classes_2.html create mode 100644 docs/html/search/classes_2.js create mode 100644 docs/html/search/classes_3.html create mode 100644 docs/html/search/classes_3.js create mode 100644 docs/html/search/classes_4.html create mode 100644 docs/html/search/classes_4.js create mode 100644 docs/html/search/classes_5.html create mode 100644 docs/html/search/classes_5.js create mode 100644 docs/html/search/classes_6.html create mode 100644 docs/html/search/classes_6.js create mode 100644 docs/html/search/classes_7.html create mode 100644 docs/html/search/classes_7.js create mode 100644 docs/html/search/classes_8.html create mode 100644 docs/html/search/classes_8.js create mode 100644 docs/html/search/close.svg create mode 100644 docs/html/search/files_0.html create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.html create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/files_10.html create mode 100644 docs/html/search/files_10.js create mode 100644 docs/html/search/files_2.html create mode 100644 docs/html/search/files_2.js create mode 100644 docs/html/search/files_3.html create mode 100644 docs/html/search/files_3.js create mode 100644 docs/html/search/files_4.html create mode 100644 docs/html/search/files_4.js create mode 100644 docs/html/search/files_5.html create mode 100644 docs/html/search/files_5.js create mode 100644 docs/html/search/files_6.html create mode 100644 docs/html/search/files_6.js create mode 100644 docs/html/search/files_7.html create mode 100644 docs/html/search/files_7.js create mode 100644 docs/html/search/files_8.html create mode 100644 docs/html/search/files_8.js create mode 100644 docs/html/search/files_9.html create mode 100644 docs/html/search/files_9.js create mode 100644 docs/html/search/files_a.html create mode 100644 docs/html/search/files_a.js create mode 100644 docs/html/search/files_b.html create mode 100644 docs/html/search/files_b.js create mode 100644 docs/html/search/files_c.html create mode 100644 docs/html/search/files_c.js create mode 100644 docs/html/search/files_d.html create mode 100644 docs/html/search/files_d.js create mode 100644 docs/html/search/files_e.html create mode 100644 docs/html/search/files_e.js create mode 100644 docs/html/search/files_f.html create mode 100644 docs/html/search/files_f.js create mode 100644 docs/html/search/functions_0.html create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.html create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/functions_2.html create mode 100644 docs/html/search/functions_2.js create mode 100644 docs/html/search/functions_3.html create mode 100644 docs/html/search/functions_3.js create mode 100644 docs/html/search/functions_4.html create mode 100644 docs/html/search/functions_4.js create mode 100644 docs/html/search/functions_5.html create mode 100644 docs/html/search/functions_5.js create mode 100644 docs/html/search/functions_6.html create mode 100644 docs/html/search/functions_6.js create mode 100644 docs/html/search/functions_7.html create mode 100644 docs/html/search/functions_7.js create mode 100644 docs/html/search/functions_8.html create mode 100644 docs/html/search/functions_8.js create mode 100644 docs/html/search/functions_9.html create mode 100644 docs/html/search/functions_9.js create mode 100644 docs/html/search/functions_a.html create mode 100644 docs/html/search/functions_a.js create mode 100644 docs/html/search/functions_b.html create mode 100644 docs/html/search/functions_b.js create mode 100644 docs/html/search/functions_c.html create mode 100644 docs/html/search/functions_c.js create mode 100644 docs/html/search/functions_d.html create mode 100644 docs/html/search/functions_d.js create mode 100644 docs/html/search/functions_e.html create mode 100644 docs/html/search/functions_e.js create mode 100644 docs/html/search/mag_sel.svg create mode 100644 docs/html/search/namespaces_0.html create mode 100644 docs/html/search/namespaces_0.js create mode 100644 docs/html/search/namespaces_1.html create mode 100644 docs/html/search/namespaces_1.js create mode 100644 docs/html/search/namespaces_2.html create mode 100644 docs/html/search/namespaces_2.js create mode 100644 docs/html/search/nomatches.html create mode 100644 docs/html/search/pages_0.html create mode 100644 docs/html/search/pages_0.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/search_l.png create mode 100644 docs/html/search/search_m.png create mode 100644 docs/html/search/search_r.png create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/variables_0.html create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.html create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/search/variables_10.html create mode 100644 docs/html/search/variables_10.js create mode 100644 docs/html/search/variables_11.html create mode 100644 docs/html/search/variables_11.js create mode 100644 docs/html/search/variables_12.html create mode 100644 docs/html/search/variables_12.js create mode 100644 docs/html/search/variables_2.html create mode 100644 docs/html/search/variables_2.js create mode 100644 docs/html/search/variables_3.html create mode 100644 docs/html/search/variables_3.js create mode 100644 docs/html/search/variables_4.html create mode 100644 docs/html/search/variables_4.js create mode 100644 docs/html/search/variables_5.html create mode 100644 docs/html/search/variables_5.js create mode 100644 docs/html/search/variables_6.html create mode 100644 docs/html/search/variables_6.js create mode 100644 docs/html/search/variables_7.html create mode 100644 docs/html/search/variables_7.js create mode 100644 docs/html/search/variables_8.html create mode 100644 docs/html/search/variables_8.js create mode 100644 docs/html/search/variables_9.html create mode 100644 docs/html/search/variables_9.js create mode 100644 docs/html/search/variables_a.html create mode 100644 docs/html/search/variables_a.js create mode 100644 docs/html/search/variables_b.html create mode 100644 docs/html/search/variables_b.js create mode 100644 docs/html/search/variables_c.html create mode 100644 docs/html/search/variables_c.js create mode 100644 docs/html/search/variables_d.html create mode 100644 docs/html/search/variables_d.js create mode 100644 docs/html/search/variables_e.html create mode 100644 docs/html/search/variables_e.js create mode 100644 docs/html/search/variables_f.html create mode 100644 docs/html/search/variables_f.js create mode 100644 docs/html/setup_8py.html create mode 100644 docs/html/setup_8py.js create mode 100644 docs/html/splitbar.png create mode 100644 docs/html/svgpan.js create mode 100644 docs/html/sync_off.png create mode 100644 docs/html/sync_on.png create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tabs.css create mode 100644 docs/html/test__commit__commands_8py.html create mode 100644 docs/html/test__commit__commands_8py.js create mode 100644 docs/html/test__config__commands_8py.html create mode 100644 docs/html/test__config__commands_8py.js create mode 100644 docs/html/test__doc__commands_8py.html create mode 100644 docs/html/test__doc__commands_8py.js create mode 100644 docs/html/test__web__config_8py.html create mode 100644 docs/html/test__web__config_8py.js create mode 100644 docs/html/tests_2____init_____8py.html create mode 100644 docs/html/toggle-alternative-theme.js create mode 100644 docs/html/ui__utils_8py.html create mode 100644 docs/html/ui__utils_8py.js create mode 100644 docs/html/utils_8py.html create mode 100644 docs/html/utils_8py.js create mode 100644 docs/penify-cli-Penify-dev-g.tar.gz diff --git a/docs/html/README_8md.html b/docs/html/README_8md.html new file mode 100644 index 0000000..92f773d --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..f3b4768 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+ + + + + diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js new file mode 100644 index 0000000..e374ec6 --- /dev/null +++ b/docs/html/annotated_dup.js @@ -0,0 +1,44 @@ +var annotated_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", [ + [ "api_client", "namespacepenify__hook_1_1api__client.html", [ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] + ] ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", [ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] + ] ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", [ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", [ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ] + ] ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", [ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] + ] ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", [ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ] + ] ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", [ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ] + ] ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", [ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", [ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ] + ] ], + [ "tests", "namespacetests.html", [ + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", [ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] + ] ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", [ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", [ + [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] + ] ] + ] ], + [ "Exception", "classException.html", null ] +]; \ No newline at end of file diff --git a/docs/html/api__client_8py.html b/docs/html/api__client_8py.html new file mode 100644 index 0000000..ba19911 --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
api_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.api_client.APIClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.api_client
 
+
+
+ + + + + diff --git a/docs/html/api__client_8py.js b/docs/html/api__client_8py.js new file mode 100644 index 0000000..a3575a0 --- /dev/null +++ b/docs/html/api__client_8py.js @@ -0,0 +1,4 @@ +var api__client_8py = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/auth__commands_8py.html b/docs/html/auth__commands_8py.html new file mode 100644 index 0000000..8998059 --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/auth_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
auth_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.auth_commands
 
+ + + + + +

+Functions

def penify_hook.commands.auth_commands.save_credentials (api_key)
 
def penify_hook.commands.auth_commands.login (api_url, dashboard_url)
 
+
+
+ + + + + diff --git a/docs/html/auth__commands_8py.js b/docs/html/auth__commands_8py.js new file mode 100644 index 0000000..3e747e3 --- /dev/null +++ b/docs/html/auth__commands_8py.js @@ -0,0 +1,5 @@ +var auth__commands_8py = +[ + [ "login", "auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] +]; \ No newline at end of file diff --git a/docs/html/base__analyzer_8py.html b/docs/html/base__analyzer_8py.html new file mode 100644 index 0000000..6714cab --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
base_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.base_analyzer.BaseAnalyzer
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.base_analyzer
 
+
+
+ + + + + diff --git a/docs/html/base__analyzer_8py.js b/docs/html/base__analyzer_8py.js new file mode 100644 index 0000000..0d5c745 --- /dev/null +++ b/docs/html/base__analyzer_8py.js @@ -0,0 +1,4 @@ +var base__analyzer_8py = +[ + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] +]; \ No newline at end of file diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + + + + + + + + + + + + +penify-cli: Exception Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Exception Class Reference
+
+
+
+Inheritance diagram for Exception:
+
+
+
+
+
+Collaboration diagram for Exception:
+
+
+
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + diff --git a/docs/html/classException__coll__graph.map b/docs/html/classException__coll__graph.map new file mode 100644 index 0000000..9036a49 --- /dev/null +++ b/docs/html/classException__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classException__coll__graph.md5 b/docs/html/classException__coll__graph.md5 new file mode 100644 index 0000000..38ed226 --- /dev/null +++ b/docs/html/classException__coll__graph.md5 @@ -0,0 +1 @@ +8bfc7cbaf3c53c3b1288446104b2c7ee \ No newline at end of file diff --git a/docs/html/classException__coll__graph.svg b/docs/html/classException__coll__graph.svg new file mode 100644 index 0000000..d2d4076 --- /dev/null +++ b/docs/html/classException__coll__graph.svg @@ -0,0 +1,26 @@ + + + + + + +Exception + + + +Node1 + + +Exception + + + + + + + + + diff --git a/docs/html/classException__inherit__graph.map b/docs/html/classException__inherit__graph.map new file mode 100644 index 0000000..02cc09e --- /dev/null +++ b/docs/html/classException__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classException__inherit__graph.md5 b/docs/html/classException__inherit__graph.md5 new file mode 100644 index 0000000..f7c5b12 --- /dev/null +++ b/docs/html/classException__inherit__graph.md5 @@ -0,0 +1 @@ +02df0cdd064aa2dca59b7424cdd2be62 \ No newline at end of file diff --git a/docs/html/classException__inherit__graph.svg b/docs/html/classException__inherit__graph.svg new file mode 100644 index 0000000..33700b9 --- /dev/null +++ b/docs/html/classException__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +Exception + + + +Node1 + + +Exception + + + + + + + + + +Node2 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..607ac65 --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Index + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html new file mode 100644 index 0000000..b7ae918 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.api_client.APIClient Member List
+
+
+ +

This is the complete list of members for penify_hook.api_client.APIClient, including all inherited members.

+ + + + + + + + + + +
__init__(self, api_url, str api_token=None, str bearer_token=None)penify_hook.api_client.APIClient
api_urlpenify_hook.api_client.APIClient
AUTH_TOKENpenify_hook.api_client.APIClient
BEARER_TOKENpenify_hook.api_client.APIClient
generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)penify_hook.api_client.APIClient
generate_commit_summary_with_llm(self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)penify_hook.api_client.APIClient
get_api_key(self)penify_hook.api_client.APIClient
get_supported_file_types(self)penify_hook.api_client.APIClient
send_file_for_docstring_generation(self, file_name, content, line_numbers, repo_details=None)penify_hook.api_client.APIClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html new file mode 100644 index 0000000..1206d1a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client.APIClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.api_client.APIClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.api_client.APIClient:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, api_url, str api_token=None, str bearer_token=None)
 
def send_file_for_docstring_generation (self, file_name, content, line_numbers, repo_details=None)
 
def generate_commit_summary (self, git_diff, str instruction="", repo_details=None, dict jira_context=None)
 
list[str] get_supported_file_types (self)
 
def generate_commit_summary_with_llm (self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)
 
def get_api_key (self)
 
+ + + + + + + +

+Public Attributes

 api_url
 
 AUTH_TOKEN
 
 BEARER_TOKEN
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.__init__ ( self,
 api_url,
str  api_token = None,
str  bearer_token = None 
)
+
+ +
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.generate_commit_summary ( self,
 git_diff,
str  instruction = "",
 repo_details = None,
dict  jira_context = None 
)
+
+
Generates a commit summary by sending a POST request to the API endpoint.
+
+This function constructs a payload containing the git diff and any additional
+instructions provided. It then sends this payload to a specified API endpoint
+to generate a summary of the commit. If the request is successful, it returns
+the response from the API; otherwise, it returns None. The function also
+handles optional repository details and JIRA context if they are provided.
+
+Args:
+    git_diff (str): The git diff of the commit.
+    instruction (str): Additional instruction for the commit. Defaults to "".
+    repo_details (dict): Details of the git repository. Defaults to None.
+    jira_context (dict): JIRA issue details to enhance the commit summary. Defaults to None.
+
+Returns:
+    dict: The response from the API if the request is successful, None otherwise.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ generate_commit_summary_with_llm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.generate_commit_summary_with_llm ( self,
 diff,
 message,
bool generate_description,
 repo_details,
LLMClient llm_client,
 jira_context = None 
)
+
+
Generates a commit summary using a local LLM client; falls back to API on
+error.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_api_key()

+ +
+
+ + + + + + + + +
def penify_hook.api_client.APIClient.get_api_key ( self)
+
+
Fetch an API key from a specified URL using a Bearer token.
+
+
+ +

◆ get_supported_file_types()

+ +
+
+ + + + + + + + +
list[str] penify_hook.api_client.APIClient.get_supported_file_types ( self)
+
+
Retrieve supported file types from the API or return a default list.
+
+
+ +

◆ send_file_for_docstring_generation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.api_client.APIClient.send_file_for_docstring_generation ( self,
 file_name,
 content,
 line_numbers,
 repo_details = None 
)
+
+
Send file content and modified lines to the API and return modified content.
+
+
+

Member Data Documentation

+ +

◆ api_url

+ +
+
+ + + + +
penify_hook.api_client.APIClient.api_url
+
+ +
+
+ +

◆ AUTH_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.AUTH_TOKEN
+
+ +
+
+ +

◆ BEARER_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.BEARER_TOKEN
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js new file mode 100644 index 0000000..be81d43 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js @@ -0,0 +1,12 @@ +var classpenify__hook_1_1api__client_1_1APIClient = +[ + [ "__init__", "classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086", null ], + [ "generate_commit_summary", "classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce", null ], + [ "generate_commit_summary_with_llm", "classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3", null ], + [ "get_api_key", "classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99", null ], + [ "get_supported_file_types", "classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402", null ], + [ "send_file_for_docstring_generation", "classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3", null ], + [ "api_url", "classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872", null ], + [ "AUTH_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237", null ], + [ "BEARER_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map new file mode 100644 index 0000000..05e004c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 new file mode 100644 index 0000000..2c7b583 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 @@ -0,0 +1 @@ +92a3e9cee2cd5e4975e6a42b548f0d62 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg new file mode 100644 index 0000000..fe24d95 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +penify_hook.api_client.APIClient + + + +Node1 + + +penify_hook.api_client.APIClient + ++ api_url ++ AUTH_TOKEN ++ BEARER_TOKEN + ++ __init__() ++ send_file_for_docstring +_generation() ++ generate_commit_summary() ++ get_supported_file +_types() ++ generate_commit_summary +_with_llm() ++ get_api_key() + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map new file mode 100644 index 0000000..86604e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 new file mode 100644 index 0000000..b12cf91 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 @@ -0,0 +1 @@ +ea70dd7bbb840c4828c970ec1a8f5446 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg new file mode 100644 index 0000000..b3f0027 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map new file mode 100644 index 0000000..fa6ff5d --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 new file mode 100644 index 0000000..186981a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 @@ -0,0 +1 @@ +6b1ca4842de706fb2f00719bcb509a8b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg new file mode 100644 index 0000000..7970d85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg new file mode 100644 index 0000000..8567a2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html new file mode 100644 index 0000000..f9d23c7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html new file mode 100644 index 0000000..841cd21 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer.BaseAnalyzer Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.base_analyzer.BaseAnalyzer Class Reference
+
+
+
+Inheritance diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+
+Collaboration diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+ + + + +

+Public Member Functions

def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.base_analyzer.BaseAnalyzer.__init__ ( self,
str folder_path,
APIClient api_client 
)
+
+
+

Member Data Documentation

+ +

◆ api_client

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.api_client
+
+ +
+
+ +

◆ folder_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.folder_path
+
+ +
+
+ +

◆ relative_file_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.relative_file_path
+
+ +
+
+ +

◆ repo

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo
+
+ +
+
+ +

◆ repo_details

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_details
+
+ +
+
+ +

◆ repo_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_path
+
+ +
+
+ +

◆ supported_file_types

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.supported_file_types
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js new file mode 100644 index 0000000..026bd02 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js @@ -0,0 +1,11 @@ +var classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer = +[ + [ "__init__", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344", null ], + [ "api_client", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2", null ], + [ "folder_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25", null ], + [ "relative_file_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4", null ], + [ "repo", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369", null ], + [ "repo_details", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5", null ], + [ "repo_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499", null ], + [ "supported_file_types", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map new file mode 100644 index 0000000..da4b46d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 new file mode 100644 index 0000000..8f67765 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 @@ -0,0 +1 @@ +ba0c3a1d5b95dea65df70168e43976e0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg new file mode 100644 index 0000000..c7b4e4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg @@ -0,0 +1,33 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map new file mode 100644 index 0000000..a407121 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 new file mode 100644 index 0000000..cb38209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 @@ -0,0 +1 @@ +63e8393eea1557a855929943cd8aca92 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg new file mode 100644 index 0000000..7dc042a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg new file mode 100644 index 0000000..0ec411d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg @@ -0,0 +1,127 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html new file mode 100644 index 0000000..8f78807 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.commit_analyzer.CommitDocGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.commit_analyzer.CommitDocGenHook, including all inherited members.

+ + + + + + + +
__init__(self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)penify_hook.commit_analyzer.CommitDocGenHook
_amend_commit(self)penify_hook.commit_analyzer.CommitDocGenHookprivate
get_summary(self, str instruction, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
llm_clientpenify_hook.commit_analyzer.CommitDocGenHook
process_jira_integration(self, str title, str description, str msg)penify_hook.commit_analyzer.CommitDocGenHook
run(self, Optional[str] msg, bool edit_commit_message, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html new file mode 100644 index 0000000..e18023f --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer.CommitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.commit_analyzer.CommitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)
 
dict get_summary (self, str instruction, bool generate_description)
 
def run (self, Optional[str] msg, bool edit_commit_message, bool generate_description)
 
tuple process_jira_integration (self, str title, str description, str msg)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 llm_client
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+ + + +

+Private Member Functions

def _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client,
 llm_client = None,
 jira_client = None 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _amend_commit()

+ +
+
+ + + + + +
+ + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook._amend_commit ( self)
+
+private
+
+
Amends the last commit message in the repository.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
dict penify_hook.commit_analyzer.CommitDocGenHook.get_summary ( self,
str instruction,
bool generate_description 
)
+
+
Generate a summary for the commit based on the staged changes.
+
+This function retrieves the differences of the staged changes in the repository
+and generates a commit summary using the provided instruction. If there are no
+changes staged for commit, an exception is raised. If a JIRA client is
+connected, it will attempt to extract issue keys from the current branch and
+use them to fetch context. The summary can be generated either with a Language
+Model (LLM) client or through the API client.
+
+Args:
+    instruction (str): A string containing instructions for generating the commit summary.
+    generate_description (bool): Whether to include detailed descriptions in the summary.
+
+Raises:
+    ValueError: If there are no changes staged for commit.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_jira_integration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration ( self,
str title,
str description,
str msg 
)
+
+
Process JIRA integration by extracting issue keys from commit message
+components and branch name.
+
+This function looks for JIRA issue keys in the provided commit title,
+description, original user message, and the active branch name. It uses these
+keys to update the commit message with JIRA information and adds comments to
+the corresponding JIRA issues. If no keys are found, it logs a warning.
+
+Args:
+    title (str): The generated commit title.
+    description (str): The generated commit description.
+    msg (str): The original user message that might contain JIRA references.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with included JIRA
+        information.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook.run ( self,
Optional[str] msg,
bool edit_commit_message,
bool generate_description 
)
+
+
Run the post-commit hook.
+
+This method processes the modified files from the last commit, stages them, and
+creates an auto-commit with an optional message. It also handles JIRA
+integration if available. If there is an error generating the commit summary,
+an exception is raised.
+
+Args:
+    msg (Optional[str]): An optional message to include in the commit.
+    edit_commit_message (bool): A flag indicating whether to open the git commit
+        edit terminal after committing.
+    generate_description (bool): A flag indicating whether to include a description
+        in the commit message.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ llm_client

+ +
+
+ + + + +
penify_hook.commit_analyzer.CommitDocGenHook.llm_client
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js new file mode 100644 index 0000000..77da79e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js @@ -0,0 +1,9 @@ +var classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e", null ], + [ "_amend_commit", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca", null ], + [ "get_summary", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37", null ], + [ "process_jira_integration", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f", null ], + [ "run", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9", null ], + [ "llm_client", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map new file mode 100644 index 0000000..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map new file mode 100644 index 0000000..c4c0415 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 new file mode 100644 index 0000000..d530502 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 @@ -0,0 +1 @@ +503804b19fd6263bc4d634da365fcb38 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg new file mode 100644 index 0000000..876ec67 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg new file mode 100644 index 0000000..4cb8182 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg @@ -0,0 +1,180 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map new file mode 100644 index 0000000..45b7af5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 new file mode 100644 index 0000000..96b4195 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 @@ -0,0 +1 @@ +ad1182651b0cfe9906faf8af31cf667d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg new file mode 100644 index 0000000..72f52e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg new file mode 100644 index 0000000..2e46cc5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map new file mode 100644 index 0000000..bced407 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 new file mode 100644 index 0000000..fffc366 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 @@ -0,0 +1 @@ +086b563bbc1068f3e0325d4a68d5bd17 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg new file mode 100644 index 0000000..1a0196d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map new file mode 100644 index 0000000..d518791 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 new file mode 100644 index 0000000..0536af9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 @@ -0,0 +1 @@ +fb0bae9cf2f7e07ac778eed1297c327b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg new file mode 100644 index 0000000..eb672c4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook._amend_commit + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map new file mode 100644 index 0000000..5f79a9a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 new file mode 100644 index 0000000..76d8830 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 @@ -0,0 +1 @@ +4cfab920326b3a6b29c805803ac72558 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg new file mode 100644 index 0000000..fbb1bd6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg new file mode 100644 index 0000000..28c33ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg @@ -0,0 +1,86 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map new file mode 100644 index 0000000..81bb08e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 new file mode 100644 index 0000000..cf1b6d3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 @@ -0,0 +1 @@ +3cd15e6828a60d49cece5c87177581df \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg new file mode 100644 index 0000000..f2f541f --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 new file mode 100644 index 0000000..5f2103d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 @@ -0,0 +1 @@ +95c682625e7209c65fce50a4bb060a81 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg new file mode 100644 index 0000000..d985a2a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 new file mode 100644 index 0000000..39adea9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 @@ -0,0 +1 @@ +534bd5898147e11eac4c0e46a39c7860 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg new file mode 100644 index 0000000..8cebb40 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html new file mode 100644 index 0000000..94190cd --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.file_analyzer.FileAnalyzerGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html new file mode 100644 index 0000000..5be1495 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+
+ + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str file_path, APIClient api_client)
 
def process_file (self, file_path, pbar, str new_param="")
 
def print_processing (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 file_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.__init__ ( self,
str file_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing ( self,
 file_path 
)
+
+
Prints a message indicating that a file is being processed.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.process_file ( self,
 file_path,
 pbar,
str  new_param = "" 
)
+
+
Processes a file by validating its extension, reading content,
+generating documentation, and writing changes back to the file.  The function
+performs several stages of processing: 1. Validates the file's extension to
+ensure it is supported. 2. Reads the content of the file. 3. Sends the file
+content for documentation generation. 4. Writes the generated documentation
+back to the file if there are changes.
+
+Args:
+    file_path (str): The path of the file to be processed.
+    pbar (tqdm.tqdm): A progress bar object to update the status of processing stages.
+    new_param (str?): An additional parameter for future use. Defaults to an empty string.
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.run ( self)
+
+
Runs the documentation process with a progress bar.
+
+This method orchestrates the documentation process by creating a progress bar,
+processing the file, and handling exceptions to ensure the progress bar
+completes properly. It updates the progress bar through various stages and
+provides feedback based on the result of the file processing.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ file_path

+ +
+
+ + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.file_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js new file mode 100644 index 0000000..56b1d3a --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b", null ], + [ "print_processing", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073", null ], + [ "process_file", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e", null ], + [ "run", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1", null ], + [ "file_path", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map new file mode 100644 index 0000000..c05e761 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 new file mode 100644 index 0000000..416cd78 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 @@ -0,0 +1 @@ +dd6dbfdde640f0bc6f1c0cc995a9b4fb \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg new file mode 100644 index 0000000..ebc39ac --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg new file mode 100644 index 0000000..e169853 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map new file mode 100644 index 0000000..b1658b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 new file mode 100644 index 0000000..8da8816 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 @@ -0,0 +1 @@ +dce29e772ed93d06e90894791ddc50ca \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg new file mode 100644 index 0000000..5462f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map new file mode 100644 index 0000000..d166069 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 new file mode 100644 index 0000000..f40daaf --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 @@ -0,0 +1 @@ +5c58a576c4056ea132d5a9cca6880cb6 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg new file mode 100644 index 0000000..d480dca --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg new file mode 100644 index 0000000..68f9912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg @@ -0,0 +1,204 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map new file mode 100644 index 0000000..9da4fb2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 new file mode 100644 index 0000000..a24f9ee --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 @@ -0,0 +1 @@ +e106885ca4b06113170f86da8447c21c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg new file mode 100644 index 0000000..af5e14f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html new file mode 100644 index 0000000..e39c1a7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.folder_analyzer.FolderAnalyzerGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html new file mode 100644 index 0000000..47ccc20 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+ + + + + + + + + + +

+Public Member Functions

def __init__ (self, str dir_path, APIClient api_client)
 
def list_all_files_in_dir (self, str dir_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 dir_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__ ( self,
str dir_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir ( self,
str dir_path 
)
+
+
List all non-hidden files in a directory and its subdirectories.
+
+This function recursively traverses the specified directory and its
+subdirectories, collecting paths of all non-hidden files. It filters out hidden
+directories and files (those starting with a dot) to ensure only visible files
+are returned.
+
+Args:
+    dir_path (str): The path to the directory whose files and subdirectory files need to be listed.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.folder_analyzer.FolderAnalyzerGenHook.run ( self)
+
+
Run the post-commit hook and process files with a progress bar.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ dir_path

+ +
+
+ + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.dir_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js new file mode 100644 index 0000000..5b2a45e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js @@ -0,0 +1,7 @@ +var classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821", null ], + [ "list_all_files_in_dir", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec", null ], + [ "run", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc", null ], + [ "dir_path", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map new file mode 100644 index 0000000..b96ef6a --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 new file mode 100644 index 0000000..4aed41f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 @@ -0,0 +1 @@ +e2a0ef57ef0713a63ba1c8ee5591e9f5 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg new file mode 100644 index 0000000..dd93702 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map new file mode 100644 index 0000000..fb5d687 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 new file mode 100644 index 0000000..88516d8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 @@ -0,0 +1 @@ +a3c6817cbc08f61a1a5f2b81334ae3dc \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg new file mode 100644 index 0000000..3e978da --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.run + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html new file mode 100644 index 0000000..7dec602 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.git_analyzer.GitDocGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html new file mode 100644 index 0000000..2995fa6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer.GitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.git_analyzer.GitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str repo_path, APIClient api_client)
 
def get_modified_files_in_last_commit (self)
 
def get_modified_lines (self, diff_text)
 
def process_file (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ get_modified_files_in_last_commit()

+ +
+
+ + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit ( self)
+
+
Get the list of files modified in the last commit.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_modified_lines()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.get_modified_lines ( self,
 diff_text 
)
+
+
Extract modified line numbers from a diff text.
+
+This function processes a diff text to identify and extract the line numbers
+that have been modified. It distinguishes between added and deleted lines and
+keeps track of the current line number as it parses through the diff. The
+function handles hunk headers and ensures that any deletions at the end of the
+file are also captured.
+
+Args:
+    diff_text (str): A string containing the diff text to be processed.
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.process_file ( self,
 file_path 
)
+
+
Processes a file by checking its type, reading its content, and sending it to
+an API.
+
+This method constructs the absolute path of the specified file and verifies if
+the file has a valid extension. If the file type is supported, it reads the
+content of the file and retrieves the differences from the last commit in the
+repository. If changes are detected, it sends the file content along with the
+modified lines to an API for further processing. If the API response indicates
+no changes, the original file will not be overwritten.
+
+Args:
+    file_path (str): The relative path to the file to be processed.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.run ( self)
+
+
Run the post-commit hook.
+
+This method retrieves the list of modified files from the last commit and
+processes each file. It stages any files that have been modified during
+processing and creates an auto-commit if changes were made. A progress bar is
+displayed to indicate the processing status of each file. The method handles
+any exceptions that occur during file processing, printing an error message for
+each file that fails to process. If any modifications are made to the files, an
+auto-commit is created to save those changes.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js new file mode 100644 index 0000000..553f118 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1git__analyzer_1_1GitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c", null ], + [ "get_modified_files_in_last_commit", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481", null ], + [ "get_modified_lines", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd", null ], + [ "process_file", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85", null ], + [ "run", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map new file mode 100644 index 0000000..f66377c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 new file mode 100644 index 0000000..bfda978 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 @@ -0,0 +1 @@ +d30b2fe6c8ef2ddf32a8fa6ab13a25f2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg new file mode 100644 index 0000000..78f9802 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map new file mode 100644 index 0000000..7d6cbb4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 new file mode 100644 index 0000000..519d9fc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 @@ -0,0 +1 @@ +4e6accfb0097a03bb56e2f390d46b980 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg new file mode 100644 index 0000000..41b0db0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map new file mode 100644 index 0000000..7d6a6aa --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 new file mode 100644 index 0000000..e94ad2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 @@ -0,0 +1 @@ +c545389fcb803268668d7fa34c6d8fd9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg new file mode 100644 index 0000000..0c109b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map new file mode 100644 index 0000000..2bd16a0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 new file mode 100644 index 0000000..cda212c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 @@ -0,0 +1 @@ +4498c89a026edc471fa55e435c85053e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg new file mode 100644 index 0000000..684d392 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg new file mode 100644 index 0000000..91ef970 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 new file mode 100644 index 0000000..4c4eb97 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 @@ -0,0 +1 @@ +eb87828bf186415180fe0c4a9a69bffa \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg new file mode 100644 index 0000000..cec3173 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 new file mode 100644 index 0000000..756ea69 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 @@ -0,0 +1 @@ +3a80069fcc09aa58b795925a04c3a1a9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg new file mode 100644 index 0000000..caf1235 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map new file mode 100644 index 0000000..10ddcfb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 new file mode 100644 index 0000000..5dc8e1b --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 @@ -0,0 +1 @@ +1071229abc0a24fe1359fe7763b4c8d0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg new file mode 100644 index 0000000..c278664 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg new file mode 100644 index 0000000..b1e00b5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html new file mode 100644 index 0000000..d87990d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.jira_client.JiraClient Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html new file mode 100644 index 0000000..fb5bf85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,775 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client.JiraClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.jira_client.JiraClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.jira_client.JiraClient:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def __init__ (self, str jira_url=None, str jira_user=None, str jira_api_token=None)
 
bool is_connected (self)
 
List[str] extract_issue_keys_from_branch (self, str branch_name)
 
List[str] extract_issue_keys (self, str text)
 
Optional[Dict[str, Any]] get_issue_details (self, str issue_key)
 
bool add_comment (self, str issue_key, str comment)
 
bool update_issue_status (self, str issue_key, str transition_name)
 
tuple format_commit_message_with_jira_info (self, str commit_title, str commit_description, List[str] issue_keys=None)
 
Dict[str, Any] get_detailed_issue_context (self, str issue_key)
 
Dict[str, Any] get_commit_context_from_issues (self, List[str] issue_keys)
 
tuple enhance_commit_message (self, str title, str description, List[str] issue_keys)
 
+ + + + + + + + + +

+Public Attributes

 jira_url
 
 jira_user
 
 jira_api_token
 
 jira_client
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.jira_client.JiraClient.__init__ ( self,
str  jira_url = None,
str  jira_user = None,
str  jira_api_token = None 
)
+
+
Initialize the JIRA client.
+
+Args:
+    jira_url: Base URL for JIRA instance (e.g., "https://your-domain.atlassian.net")
+    jira_user: JIRA username or email
+    jira_api_token: JIRA API token
+
+
+
+

Member Function Documentation

+ +

◆ add_comment()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.add_comment ( self,
str issue_key,
str comment 
)
+
+
Adds a comment to a JIRA issue.
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ enhance_commit_message()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.enhance_commit_message ( self,
str title,
str description,
List[str] issue_keys 
)
+
+
Enhance a commit message with business and technical context from JIRA issues.
+
+This function first checks if the list of issue keys is empty or if there is no
+connection. If so, it returns the original title and description without
+modification. It then retrieves context information from the specified JIRA
+issues. If the primary issue is missing, it formats the commit message with
+basic JIRA info.  The function enhances the commit title by prefixing it with
+the primary issue key if not already included. It appends a business context
+section to the description, including details like issue type, status,
+priority, sprint, acceptance criteria, and a condensed issue description. If
+comments are available, they are added as technical notes. Finally, related
+issues are listed.
+
+Args:
+    title (str): Original commit title.
+    description (str): Original commit description.
+    issue_keys (List[str]): List of JIRA issue keys to include in the enhanced commit message.
+
+Returns:
+    tuple: A tuple containing the enhanced commit title and description with added
+        context from JIRA issues.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ extract_issue_keys()

+ +
+
+ + + + + + + + + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys ( self,
str text 
)
+
+
Extract unique JIRA issue keys from the given text.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ extract_issue_keys_from_branch()

+ +
+
+ + + + + + + + + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch ( self,
str branch_name 
)
+
+
Extracts unique JIRA issue keys from a branch name.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ format_commit_message_with_jira_info()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info ( self,
str commit_title,
str commit_description,
List[str]  issue_keys = None 
)
+
+
Format commit message with JIRA issue information.
+
+This function updates the provided commit title and description by
+incorporating JIRA issue keys. If no issue keys are supplied, it extracts them
+from the commit title and description. It then formats the commit title to
+include the first issue key if not already present and appends detailed
+information about each issue to the commit description.
+
+Args:
+    commit_title (str): The original commit title.
+    commit_description (str): The original commit description.
+    issue_keys (List[str]?): A list of JIRA issue keys to include in the commit message. If not
+        provided, issue keys will be extracted from both the title and the description.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with JIRA
+        information included.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_commit_context_from_issues()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_commit_context_from_issues ( self,
List[str] issue_keys 
)
+
+
Gather contextual information from JIRA issues to improve commit messages.
+
+This function processes a list of JIRA issue keys, retrieves detailed context
+for each issue, and aggregates it into a dictionary that can be used to enhance
+commit messages. It first retrieves the primary issue (the first key in the
+list) and then gathers basic details for any related issues. The resulting
+context includes information from both the primary and related issues, along
+with all issue keys.
+
+Args:
+    issue_keys: List of JIRA issue keys to gather information from
+
+Returns:
+    Dict containing business and technical context from the issues
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_detailed_issue_context()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_detailed_issue_context ( self,
str issue_key 
)
+
+
Retrieve comprehensive details about a JIRA issue including context for better
+commit messages.
+
+This function fetches detailed information from a specified JIRA issue and
+constructs a dictionary containing various context fields such as the issue
+summary, description, type, status, priority, comments, URL, and additional
+custom fields like acceptance criteria and sprint information. It handles
+errors by logging appropriate warnings or errors.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Returns:
+    Dict[str, Any]: A dictionary containing business and technical context from the issue.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ get_issue_details()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Optional[Dict[str, Any]] penify_hook.jira_client.JiraClient.get_issue_details ( self,
str issue_key 
)
+
+
Retrieve details of a JIRA issue based on its key.
+
+This function fetches detailed information about a specified JIRA issue using
+the provided issue key. It first checks if the JIRA client is connected; if
+not, it logs a warning and returns `None`. If connected, it attempts to
+retrieve the issue from the JIRA server. On success, it constructs and returns
+a dictionary containing various details such as the issue's key, summary,
+status, description, assignee, reporter, type, priority, and URL. Errors during
+this process are logged, and `None` is returned.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ is_connected()

+ +
+
+ + + + + + + + +
bool penify_hook.jira_client.JiraClient.is_connected ( self)
+
+
Check if the JIRA client is connected.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ update_issue_status()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.update_issue_status ( self,
str issue_key,
str transition_name 
)
+
+
Update the status of a JIRA issue.
+
+This method checks if the JIRA client is connected, retrieves available
+transitions for the given issue, finds the transition ID by name, and updates
+the issue's status accordingly. If any step fails or the specified transition
+is not found, appropriate logs are generated, and False is returned.
+
+Args:
+    issue_key (str): The key of the JIRA issue to be updated.
+    transition_name (str): The name of the desired transition.
+
+Returns:
+    bool: True if the status was successfully updated, False otherwise.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ jira_api_token

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_api_token
+
+ +
+
+ +

◆ jira_client

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_client
+
+ +
+
+ +

◆ jira_url

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_url
+
+ +
+
+ +

◆ jira_user

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_user
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js new file mode 100644 index 0000000..f68eed5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js @@ -0,0 +1,18 @@ +var classpenify__hook_1_1jira__client_1_1JiraClient = +[ + [ "__init__", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5", null ], + [ "add_comment", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1", null ], + [ "enhance_commit_message", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760", null ], + [ "extract_issue_keys", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7", null ], + [ "extract_issue_keys_from_branch", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c", null ], + [ "format_commit_message_with_jira_info", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23", null ], + [ "get_commit_context_from_issues", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd", null ], + [ "get_detailed_issue_context", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746", null ], + [ "get_issue_details", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a", null ], + [ "is_connected", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8", null ], + [ "update_issue_status", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826", null ], + [ "jira_api_token", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9", null ], + [ "jira_client", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6", null ], + [ "jira_url", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197", null ], + [ "jira_user", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map new file mode 100644 index 0000000..2bc82ba --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 new file mode 100644 index 0000000..fd79a8c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 @@ -0,0 +1 @@ +6c94c8bb54063a87c9a021e499d2535a \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg new file mode 100644 index 0000000..9d17916 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.jira_client.JiraClient + + + +Node1 + + +penify_hook.jira_client. +JiraClient + ++ jira_url ++ jira_user ++ jira_api_token ++ jira_client + ++ __init__() ++ is_connected() ++ extract_issue_keys +_from_branch() ++ extract_issue_keys() ++ get_issue_details() ++ add_comment() ++ update_issue_status() ++ format_commit_message +_with_jira_info() ++ get_detailed_issue +_context() ++ get_commit_context +_from_issues() ++ enhance_commit_message() + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map new file mode 100644 index 0000000..0aabfe7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 new file mode 100644 index 0000000..15413c7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 @@ -0,0 +1 @@ +e49f7a18c7f7394bc3ba168c4b7dfcbf \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg new file mode 100644 index 0000000..8976bbb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg new file mode 100644 index 0000000..3d42518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg @@ -0,0 +1,176 @@ + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map new file mode 100644 index 0000000..d9cf631 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 new file mode 100644 index 0000000..bf358a8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 @@ -0,0 +1 @@ +c2b8f7eecd95ef8d0186d7f206ad610c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg new file mode 100644 index 0000000..8f34c4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg new file mode 100644 index 0000000..b16e395 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map new file mode 100644 index 0000000..18d2610 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 new file mode 100644 index 0000000..c70fc7f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 @@ -0,0 +1 @@ +3fdd0ff288b79c613c0ccbdde81f6b44 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg new file mode 100644 index 0000000..da43481 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg new file mode 100644 index 0000000..d90f209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg @@ -0,0 +1,78 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map new file mode 100644 index 0000000..9762fa4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 new file mode 100644 index 0000000..58d4f7d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 @@ -0,0 +1 @@ +e64b34f639342bc29f69697ff85b6115 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg new file mode 100644 index 0000000..bff31d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map new file mode 100644 index 0000000..3b9c39b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 new file mode 100644 index 0000000..e84f7d7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 @@ -0,0 +1 @@ +ce0d7d39675e66eb580380759195be0e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg new file mode 100644 index 0000000..4ad6e4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map new file mode 100644 index 0000000..7074523 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 new file mode 100644 index 0000000..584c012 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 @@ -0,0 +1 @@ +b4d0f6392752d140ca4858cea5527f74 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg new file mode 100644 index 0000000..0945c22 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg new file mode 100644 index 0000000..6d9824e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg @@ -0,0 +1,80 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map new file mode 100644 index 0000000..9fb10de --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 new file mode 100644 index 0000000..d953518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 @@ -0,0 +1 @@ +9194291c6b536fb2aa39473066ce3d57 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg new file mode 100644 index 0000000..036f520 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg new file mode 100644 index 0000000..9f7cbe1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg @@ -0,0 +1,153 @@ + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map new file mode 100644 index 0000000..f7e25fe --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 new file mode 100644 index 0000000..ea4f60f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 @@ -0,0 +1 @@ +01a09828002214953a0e4ce5a004f82b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg new file mode 100644 index 0000000..6bfdd52 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map new file mode 100644 index 0000000..a54aa35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 new file mode 100644 index 0000000..8cce519 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 @@ -0,0 +1 @@ +be0799c63ed63825acfa4aefd053a607 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg new file mode 100644 index 0000000..dcc9f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map new file mode 100644 index 0000000..2e5bc9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 new file mode 100644 index 0000000..562794f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 @@ -0,0 +1 @@ +de5b0ac337604f2c79dc74aaee0a1763 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg new file mode 100644 index 0000000..d83a7d1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map new file mode 100644 index 0000000..7028556 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 new file mode 100644 index 0000000..cc19180 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 @@ -0,0 +1 @@ +8ed68fcd41631bf9876f85ae6b4b3de2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg new file mode 100644 index 0000000..06c5c4d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map new file mode 100644 index 0000000..75c520f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 new file mode 100644 index 0000000..b855a20 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 @@ -0,0 +1 @@ +2e42fe22a9070fc3f543991e99faf205 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg new file mode 100644 index 0000000..e1b859e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.update_issue_status + + + +Node1 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map new file mode 100644 index 0000000..3722ccb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 new file mode 100644 index 0000000..f452c00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 @@ -0,0 +1 @@ +f5fed9d6bb8f646e32b31343d031871d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg new file mode 100644 index 0000000..b80a9d9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg new file mode 100644 index 0000000..1e3bc11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map new file mode 100644 index 0000000..b89125f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 new file mode 100644 index 0000000..990f237 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 @@ -0,0 +1 @@ +e8676c5f3006c0807c1fe30ed75a7701 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg new file mode 100644 index 0000000..0587bf7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg @@ -0,0 +1,85 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node4 + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map new file mode 100644 index 0000000..5f09a4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 new file mode 100644 index 0000000..3221326 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 @@ -0,0 +1 @@ +8e9085e7e96a72eae434ab3b9bb34f71 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg new file mode 100644 index 0000000..bd95f00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html new file mode 100644 index 0000000..6ecc517 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.llm_client.LLMClient Member List
+
+
+ +

This is the complete list of members for penify_hook.llm_client.LLMClient, including all inherited members.

+ + + + + + +
__init__(self, str model=None, str api_base=None, str api_key=None)penify_hook.llm_client.LLMClient
_litellmpenify_hook.llm_client.LLMClientprivate
generate_commit_summary(self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)penify_hook.llm_client.LLMClient
litellm(self)penify_hook.llm_client.LLMClient
modelpenify_hook.llm_client.LLMClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html new file mode 100644 index 0000000..b7ea953 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client.LLMClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.llm_client.LLMClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.llm_client.LLMClient:
+
+
+
+
+ + + + + + + + +

+Public Member Functions

def __init__ (self, str model=None, str api_base=None, str api_key=None)
 
def litellm (self)
 
Dict generate_commit_summary (self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)
 
+ + + +

+Public Attributes

 model
 
+ + + +

+Private Attributes

 _litellm
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.llm_client.LLMClient.__init__ ( self,
str  model = None,
str  api_base = None,
str  api_key = None 
)
+
+
Initialize the LLM client.
+
+Args:
+    model: LLM model to use (e.g., "gpt-4", "ollama/llama2", etc.)
+    api_base: Base URL for API requests (e.g., "http://localhost:11434" for Ollama)
+    api_key: API key for the LLM service
+
+
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dict penify_hook.llm_client.LLMClient.generate_commit_summary ( self,
str diff,
str message,
bool generate_description,
Dict repo_details,
Dict  jira_context = None 
)
+
+
Generate a concise and descriptive commit summary based on Git diff, user
+instructions, repository details, and optional JIRA context.
+
+This function constructs a prompt for an LLM to produce a commit title and, if
+requested, a detailed description. The summary adheres to Semantic Commit
+Messages guidelines. If JIRA context is provided, it enriches the prompt with
+relevant issue information.
+
+Args:
+    diff (str): Git diff of changes.
+    message (str): User-provided commit message or instructions.
+    generate_description (bool): Flag indicating whether to include a detailed description in the summary.
+    repo_details (Dict): Details about the repository.
+    jira_context (Dict?): Optional JIRA issue context to enhance the summary.
+
+Returns:
+    Dict: A dictionary containing the title and description for the commit. If
+        `generate_description` is False, the 'description' key may be absent.
+
+Raises:
+    ValueError: If the LLM model is not configured.
+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ litellm()

+ +
+
+ + + + + + + + +
def penify_hook.llm_client.LLMClient.litellm ( self)
+
+
Returns the litellm module, loading it if necessary.
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ _litellm

+ +
+
+ + + + + +
+ + + + +
penify_hook.llm_client.LLMClient._litellm
+
+private
+
+ +
+
+ +

◆ model

+ +
+
+ + + + +
penify_hook.llm_client.LLMClient.model
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js new file mode 100644 index 0000000..719b127 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1llm__client_1_1LLMClient = +[ + [ "__init__", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764", null ], + [ "generate_commit_summary", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000", null ], + [ "litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e", null ], + [ "_litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362", null ], + [ "model", "classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map new file mode 100644 index 0000000..dcac6b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 new file mode 100644 index 0000000..6db17d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 @@ -0,0 +1 @@ +98e4897c5b45a162671e50e760d299ce \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg new file mode 100644 index 0000000..40f016c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.llm_client.LLMClient + + + +Node1 + + +penify_hook.llm_client.LLMClient + ++ model +- _litellm + ++ __init__() ++ litellm() ++ generate_commit_summary() + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map new file mode 100644 index 0000000..5d480bd --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 new file mode 100644 index 0000000..5ae4b79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 @@ -0,0 +1 @@ +3a38b34ed8236aa424f3ba243fba3cf0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg new file mode 100644 index 0000000..047611c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map new file mode 100644 index 0000000..4094a12 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 new file mode 100644 index 0000000..6c5244f --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 @@ -0,0 +1 @@ +2232db7a39aade439b305a1e3373c005 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg new file mode 100644 index 0000000..212c293 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map new file mode 100644 index 0000000..12bd8c0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 new file mode 100644 index 0000000..22a2946 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 @@ -0,0 +1 @@ +3dd9f4364bc4c50da31157ac03a3e97f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg new file mode 100644 index 0000000..1a42767 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg new file mode 100644 index 0000000..13d364a --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html new file mode 100644 index 0000000..428f91c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils.GitRepoNotFoundError Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.utils.GitRepoNotFoundError Class Reference
+
+
+
+Inheritance diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
+
+Collaboration diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map new file mode 100644 index 0000000..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 new file mode 100644 index 0000000..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg new file mode 100644 index 0000000..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg @@ -0,0 +1,46 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node2 + + +Exception + + + + + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map new file mode 100644 index 0000000..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 new file mode 100644 index 0000000..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg new file mode 100644 index 0000000..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + + + + + +Node2 + + +Exception + + + + + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html new file mode 100644 index 0000000..dd1fe4a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_commit_commands.TestCommitCommands Member List
+
+
+ +

This is the complete list of members for tests.test_commit_commands.TestCommitCommands, including all inherited members.

+ + + + + + + + + + + + + +
mock_api_client(self)tests.test_commit_commands.TestCommitCommands
mock_commit_doc_gen(self)tests.test_commit_commands.TestCommitCommands
mock_git_folder_search(self)tests.test_commit_commands.TestCommitCommands
mock_jira_client(self)tests.test_commit_commands.TestCommitCommands
mock_llm_client(self)tests.test_commit_commands.TestCommitCommands
mock_print_functions(self)tests.test_commit_commands.TestCommitCommands
test_commit_code_error_handling(self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_connection_failure(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_llm_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_handle_commit(self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)tests.test_commit_commands.TestCommitCommands
test_setup_commit_parser(self)tests.test_commit_commands.TestCommitCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html new file mode 100644 index 0000000..86c0363 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,792 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands.TestCommitCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_commit_commands.TestCommitCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_commit_commands.TestCommitCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def mock_api_client (self)
 
def mock_llm_client (self)
 
def mock_jira_client (self)
 
def mock_commit_doc_gen (self)
 
def mock_git_folder_search (self)
 
def mock_print_functions (self)
 
def test_commit_code_with_llm_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)
 
def test_commit_code_with_jira_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)
 
def test_commit_code_with_jira_connection_failure (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)
 
def test_commit_code_error_handling (self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)
 
def test_setup_commit_parser (self)
 
def test_handle_commit (self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)
 
+

Member Function Documentation

+ +

◆ mock_api_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_api_client ( self)
+
+
Mocks an instance of APIClient using unittest.mock.
+
+This function creates a mock object for APIClient and yields it along
+with the mocked instance. It is useful for testing purposes where real
+API calls should be avoided.
+
+Yields:
+    tuple: A tuple containing the mock of APIClient and the mocked instance of
+        APIClient.
+
+
+
+ +

◆ mock_commit_doc_gen()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_commit_doc_gen ( self)
+
+
Mocks the CommitDocGenHook class and returns a MagicMock instance.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to create a mock of the `CommitDocGenHook` class. It then sets up this
+mock to return a new `MagicMock` instance when invoked. The function
+yields both the mock object and the mocked instance, allowing for easy
+testing of functions that rely on `CommitDocGenHook`.
+
+Returns:
+    tuple: A tuple containing two elements:
+        - mock (patch): The patch object used to mock the `CommitDocGenHook`
+        class.
+        - doc_gen_instance (MagicMock): The mocked instance of
+        `CommitDocGenHook`.
+
+
+
+ +

◆ mock_git_folder_search()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_git_folder_search ( self)
+
+
Mock the `recursive_search_git_folder` function to return a predefined
+git folder path.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to intercept calls to `penify_hook.utils.recursive_search_git_folder`.
+When called, it will return '/mock/git/folder' instead of performing an
+actual search. This is useful for testing purposes where you need a
+consistent response without interacting with the file system.
+
+Yields:
+    MagicMock: A mock object that simulates the `recursive_search_git_folder` function.
+
+
+
+ +

◆ mock_jira_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_jira_client ( self)
+
+
Create a mock JIRA client for testing purposes.
+
+This function yields a tuple containing a mock JIRA client instance and
+its `is_connected` method. The mock client is configured to simulate an
+active connection. This is useful for unit tests that require
+interaction with a JIRA client without making actual network calls.
+
+Yields:
+    tuple: A tuple containing the mocked JIRA client instance and its
+        `is_connected` method.
+
+
+
+ +

◆ mock_llm_client()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_llm_client ( self)
+
+
Mock an instance of LLMClient for testing purposes.
+
+This function yields a mock object representing an instance of
+LLMClient, which can be used to simulate interactions with a language
+model during testing. The mock is patched to replace the actual
+LLMClient class from the penify_hook module.
+
+Yields:
+    tuple: A tuple containing two elements:
+        - mock (MagicMock): The mock object for LLMClient.
+        - llm_client_instance (MagicMock): An instance of the mocked LLMClient.
+
+
+
+ +

◆ mock_print_functions()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.mock_print_functions ( self)
+
+
Mocks the print functions from `penify_hook.ui_utils` for testing
+purposes.
+
+This function uses Python's `unittest.mock.patch` to replace the actual
+print functions (`print`, `print_warning`, and `print_error`) with mock
+objects. These mock objects can be used in tests to capture calls made
+to these print functions without actually printing anything.
+
+Yields:
+    tuple: A tuple containing three mock objects corresponding to `print_info`,
+        `print_warning`,
+        and `print_error`.
+
+
+
+ +

◆ test_commit_code_error_handling()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling ( self,
 mock_print,
 mock_exit,
 mock_git_folder_search,
 mock_doc_gen,
 mock_api_client 
)
+
+
Test the error handling in the test_commit_code function.
+
+This function sets up mocks to simulate exceptions and test the error
+handling of the commit_code function. It verifies that the function
+correctly prints an error message and exits with a status code of 1 when
+an exception occurs during documentation generation.
+
+Args:
+    mock_print (MagicMock): Mock for the print function, used to verify error message output.
+    mock_exit (MagicMock): Mock for the sys.exit function, used to verify exit behavior.
+    mock_git_folder_search (MagicMock): Mock for the git_folder_search function, returning a mock Git folder
+        path.
+    mock_doc_gen (MagicMock): Mock for the doc_gen function, simulating an exception during
+        documentation generation.
+    mock_api_client (MagicMock): Mock for the API client class, not directly used but referenced in the
+        function signature.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_jira_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_jira_client,
 mock_llm_client,
 mock_api_client 
)
+
+
Test committing code using a JIRA client.
+
+This function tests the commit_code function with various parameters,
+including API and JIRA credentials. It sets up mock objects for
+dependencies such as the JIRA client, LLM client, and doc generator to
+simulate the behavior of the real classes. The function then calls
+commit_code and verifies that the JIRA client and doc generator are
+called with the correct parameters.
+
+Args:
+    mock_error (MagicMock): A MagicMock object for simulating error logging.
+    mock_warning (MagicMock): A MagicMock object for simulating warning logging.
+    mock_info (MagicMock): A MagicMock object for simulating info logging.
+    mock_git_folder_search (MagicMock): A MagicMock object for simulating the git folder search function.
+    mock_doc_gen (MagicMock): A MagicMock object for simulating the doc generator function.
+    mock_jira_client (MagicMock): A MagicMock object for simulating the JIRA client class.
+    mock_llm_client (MagicMock): A MagicMock object for simulating the LLM client class.
+    mock_api_client (MagicMock): A MagicMock object for simulating the API client class.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_jira_connection_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_jira_client,
 mock_api_client 
)
+
+
Test the commit_code function when JIRA connection fails.
+
+This function tests the scenario where the JIRA connection fails during
+a code commit. It sets up various mocks to simulate different components
+of the system and then calls the `commit_code` function with specific
+parameters. The function is expected to handle the JIRA connection
+failure gracefully by logging an appropriate warning.
+
+Args:
+    mock_error (MagicMock): Mock for error logging.
+    mock_warning (MagicMock): Mock for warning logging.
+    mock_info (MagicMock): Mock for info logging.
+    mock_git_folder_search (MagicMock): Mock for searching the Git folder.
+    mock_doc_gen (MagicMock): Mock for generating documentation.
+    mock_jira_client (MagicMock): Mock for creating a JIRA client.
+    mock_api_client (MagicMock): Mock for creating an API client.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_commit_code_with_llm_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client ( self,
 mock_error,
 mock_warning,
 mock_info,
 mock_git_folder_search,
 mock_doc_gen,
 mock_llm_client,
 mock_api_client 
)
+
+
Test committing code using an LLM client.
+
+This function sets up mock objects for various components and then calls
+the `commit_code` function with specified parameters. It verifies that
+the correct mocks are created and called with the appropriate arguments.
+
+Args:
+    mock_error (MagicMock): Mock object for error handling.
+    mock_warning (MagicMock): Mock object for warning logging.
+    mock_info (MagicMock): Mock object for info logging.
+    mock_git_folder_search (MagicMock): Mock object to simulate git folder search.
+    mock_doc_gen (MagicMock): Mock object for document generation.
+    mock_llm_client (MagicMock): Mock object for LLM client interaction.
+    mock_api_client (MagicMock): Mock object for API client interaction.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_handle_commit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_handle_commit ( self,
 mock_print_info,
 mock_commit_code,
 mock_get_token,
 mock_get_llm_config,
 mock_get_jira_config 
)
+
+
Test the handle_commit function with various mock objects.
+
+This function sets up mocks for retrieving LLM configuration, JIRA
+configuration, and commit code. It then creates an argument object and
+calls the handle_commit function. Finally, it verifies that the mock
+functions were called with the expected arguments.
+
+Args:
+    mock_print_info (MagicMock): Mock object for printing information.
+    mock_commit_code (MagicMock): Mock object for committing code.
+    mock_get_token (MagicMock): Mock object for retrieving API token.
+    mock_get_llm_config (MagicMock): Mock object for retrieving LLM configuration.
+    mock_get_jira_config (MagicMock): Mock object for retrieving JIRA configuration.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_setup_commit_parser()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser ( self)
+
+
Set up the argument parser for the commit command.
+
+This function configures an argument parser to handle various options
+for committing changes. It adds three arguments: - '-m' or '--message':
+An optional argument to specify a contextual commit message with a
+default value of "N/A". - '-e' or '--terminal': A boolean flag to open
+an edit terminal before committing. - '-d' or '--description': A boolean
+flag that, when set to False, indicates the generation of a commit
+message with title and description.
+
+Args:
+    parser (MagicMock): The argument parser to be configured.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js new file mode 100644 index 0000000..46b59e3 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__commit__commands_1_1TestCommitCommands = +[ + [ "mock_api_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2", null ], + [ "mock_commit_doc_gen", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6", null ], + [ "mock_git_folder_search", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e", null ], + [ "mock_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be", null ], + [ "mock_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4", null ], + [ "mock_print_functions", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be", null ], + [ "test_commit_code_error_handling", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691", null ], + [ "test_commit_code_with_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b", null ], + [ "test_commit_code_with_jira_connection_failure", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e", null ], + [ "test_commit_code_with_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0", null ], + [ "test_handle_commit", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597", null ], + [ "test_setup_commit_parser", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map new file mode 100644 index 0000000..c06dd4a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 new file mode 100644 index 0000000..9d383d8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 @@ -0,0 +1 @@ +01c384c51b9b9d20ecd5af3519740055 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg new file mode 100644 index 0000000..71f1b91 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg @@ -0,0 +1,42 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands + + + ++ mock_api_client() ++ mock_llm_client() ++ mock_jira_client() ++ mock_commit_doc_gen() ++ mock_git_folder_search() ++ mock_print_functions() ++ test_commit_code_with +_llm_client() ++ test_commit_code_with +_jira_client() ++ test_commit_code_with +_jira_connection_failure() ++ test_commit_code_error +_handling() ++ test_setup_commit_parser() ++ test_handle_commit() + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map new file mode 100644 index 0000000..cb1751e --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 new file mode 100644 index 0000000..f317412 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 @@ -0,0 +1 @@ +fac6736890d3e6569a3e562221e2e80c \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg new file mode 100644 index 0000000..9da54b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg new file mode 100644 index 0000000..add0cc8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map new file mode 100644 index 0000000..889f430 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 new file mode 100644 index 0000000..6ec9086 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 @@ -0,0 +1 @@ +cae6ed50d17895098d586359b58517cc \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg new file mode 100644 index 0000000..390efd9 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node2 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map new file mode 100644 index 0000000..ae0be27 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 new file mode 100644 index 0000000..332ac4f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 @@ -0,0 +1 @@ +ef8182faf1bcd63d3487614530947b10 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg new file mode 100644 index 0000000..cd07d25 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg new file mode 100644 index 0000000..90c6c04 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg @@ -0,0 +1,317 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map new file mode 100644 index 0000000..24ac63a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 new file mode 100644 index 0000000..9c174cc --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 @@ -0,0 +1 @@ +acd28568eb3edcfc33ca2521297fd075 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg new file mode 100644 index 0000000..59cb486 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg new file mode 100644 index 0000000..853b56c --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map new file mode 100644 index 0000000..9780c3f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 new file mode 100644 index 0000000..080d356 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 @@ -0,0 +1 @@ +8bc1cc2849f225faaeab1719b6c0a3d6 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg new file mode 100644 index 0000000..786afd0 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg new file mode 100644 index 0000000..4b43aba --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg @@ -0,0 +1,157 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map new file mode 100644 index 0000000..2c56c22 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 new file mode 100644 index 0000000..a77222b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 @@ -0,0 +1 @@ +2b4709da9a40be7a45efe895e73cc31f \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg new file mode 100644 index 0000000..1ed6c1b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg new file mode 100644 index 0000000..b3aa423 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html new file mode 100644 index 0000000..1f58359 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_config_commands.TestConfigCommands Member List
+
+
+ +

This is the complete list of members for tests.test_config_commands.TestConfigCommands, including all inherited members.

+ + + + + + + + + + + + + +
test_get_jira_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_empty(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_invalid_json(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_penify_config_existing_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_penify_config_new_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_token_from_config(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_from_env(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_not_found(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_save_jira_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_path)tests.test_config_commands.TestConfigCommands
test_save_llm_config_failure(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_save_llm_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html new file mode 100644 index 0000000..856e599 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands.TestConfigCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_config_commands.TestConfigCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_config_commands.TestConfigCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def test_get_penify_config_existing_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
def test_get_penify_config_new_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
def test_get_llm_config_exists (self, mock_file_open, mock_get_config)
 
def test_get_llm_config_empty (self, mock_file_open, mock_get_config)
 
def test_get_llm_config_invalid_json (self, mock_print, mock_file_open, mock_get_config)
 
def test_get_jira_config_exists (self, mock_file_open, mock_get_config)
 
def test_save_llm_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_get_config)
 
def test_save_llm_config_failure (self, mock_print, mock_file_open, mock_get_config)
 
def test_save_jira_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_path)
 
def test_get_token_from_env (self, mock_file_open, mock_path, mock_getenv)
 
def test_get_token_from_config (self, mock_file_open, mock_path, mock_getenv)
 
def test_get_token_not_found (self, mock_file_open, mock_path, mock_getenv)
 
+

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test that get_jira_config returns the correct JIRA configuration when
+the configuration file exists.
+
+It sets up a mock for the configuration file to simulate its existence
+and verifies that the function reads from the correct file and returns
+the expected JIRA configuration dictionary. Additionally, it checks that
+the mock file open is called with the appropriate arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_get_config (MagicMock): A mock for the `get_config` function, which is expected to return a mock
+        configuration file object.
+
+Returns:
+    None: This test function does not explicitly return anything. Its assertions
+        serve as the verification of its correctness.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_empty()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test the behavior of get_llm_config when called with an empty
+configuration file.
+
+This function sets up a mock configuration file that exists but returns
+no content. It then calls the `get_llm_config` function and asserts that
+it returns an empty dictionary and that the file open method was called
+exactly once with the correct arguments.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the built-in open function.
+    mock_get_config (MagicMock): A MagicMock object simulating the get_config function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists ( self,
 mock_file_open,
 mock_get_config 
)
+
+
Test the get_llm_config function when the configuration file exists.
+
+This function sets up a mock configuration file that exists and returns
+it when called. It then calls the get_llm_config function and asserts
+that it returns the correct configuration dictionary. Additionally, it
+checks that the mock_file_open function was called with the correct
+arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the open() function.
+    mock_get_config (MagicMock): A mock for the get_config() function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_llm_config_invalid_json()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json ( self,
 mock_print,
 mock_file_open,
 mock_get_config 
)
+
+
Test function to verify the behavior of get_llm_config when reading an
+invalid JSON file.
+
+It sets up a mock configuration file that exists but contains invalid
+JSON. The function is expected to handle this gracefully by printing an
+error message and returning an empty dictionary.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_get_config (MagicMock): Mock for the get_config function, which returns the mock configuration
+        file.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_penify_config_existing_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir ( self,
 mock_file_open,
 mock_makedirs,
 mock_path,
 mock_git_folder 
)
+
+
Test the get_penify_config function when the .penify config directory
+exists.
+
+It should not create a new directory and assert that all mocked
+functions were called correctly.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the open() function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the os.makedirs() function.
+    mock_path (MagicMock): A MagicMock object simulating the Path class from pathlib module.
+    mock_git_folder (MagicMock): A MagicMock object simulating the git_folder_search() function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_penify_config_new_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir ( self,
 mock_file_open,
 mock_makedirs,
 mock_path,
 mock_git_folder 
)
+
+
Test the behavior of get_penify_config when the .penify directory does
+not exist.
+
+This function mocks various system calls to simulate a scenario where
+the .penify directory is not present. It then asserts that the
+appropriate actions are taken to create the directory and write an empty
+JSON file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the `open` function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the `os.makedirs` function.
+    mock_path (MagicMock): A MagicMock object simulating the `Path` class from `pathlib`.
+    mock_git_folder (MagicMock): A MagicMock object simulating a git folder search function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_from_config()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_from_config ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test retrieving a token from the configuration.
+
+This function sets up mocks for environment variables and configuration
+files, calls the `get_token` function, and asserts its behavior. It
+verifies that when the environment variable is not found, the function
+reads a token from a configuration file located in the user's home
+directory.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_path (MagicMock): A mock for the `pathlib.Path` class.
+    mock_getenv (MagicMock): A mock for the `os.getenv` function.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_from_env()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_from_env ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test retrieving a token from the environment variable.
+
+This function tests the behavior of `get_token` when an environment
+variable is set. It verifies that if the 'PENIFY_API_TOKEN' environment
+variable exists, the function returns its value without attempting to
+read a file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object for simulating file operations.
+    mock_path (MagicMock): A MagicMock object for simulating path operations.
+    mock_getenv (MagicMock): A MagicMock object for simulating environment variable retrieval.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_get_token_not_found()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_get_token_not_found ( self,
 mock_file_open,
 mock_path,
 mock_getenv 
)
+
+
Test the get_token function when the API token environment variable is
+not found.
+
+This function tests the scenario where the `PENIFY_API_TOKEN`
+environment variable is not set. It mocks the environment variable to
+return `None`, and verifies that the function returns `None`. The test
+also checks that the environment variable is accessed once and that a
+file open operation is attempted on a configuration file located in the
+user's home directory.
+
+Args:
+    mock_file_open (MagicMock): Mock for the built-in `open` function.
+    mock_path (MagicMock): Mock for the `pathlib.Path` module.
+    mock_getenv (MagicMock): Mock for the `os.getenv` function.
+
+Returns:
+    None: The function does not return anything; it asserts conditions to verify
+        correctness.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_jira_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_jira_config_success ( self,
 mock_print,
 mock_json_dump,
 mock_file_open,
 mock_path 
)
+
+
Test the save_jira_config function to ensure it saves JIRA configuration
+successfully.
+
+This function sets up mocks for various dependencies and tests the
+functionality of saving a JIRA configuration. It asserts that the
+function returns `True`, the JSON dump is called with the correct
+configuration, and the print statement contains the expected message.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_json_dump (MagicMock): Mock for the json.dump function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_path (MagicMock): Mock for the path module.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_llm_config_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure ( self,
 mock_print,
 mock_file_open,
 mock_get_config 
)
+
+
Test function to verify that the save_llm_config function returns False
+and prints an error message when it fails to save the LLM configuration
+due to a permission error.
+
+It sets up a mock configuration file that exists and calls the
+save_llm_config function with valid parameters. The function is expected
+to return False and print "Error saving LLM configuration: Permission
+denied" in case of a failure.
+
+Args:
+    self (TestLLMConfig): An instance of the test class.
+    mock_print (MagicMock): A MagicMock object representing the print function, which will be used
+        to assert that it was called with the expected error message.
+    mock_file_open (MagicMock): A MagicMock object representing the open function, which is not used in
+        this test but is included as a parameter for completeness.
+    mock_get_config (MagicMock): A MagicMock object representing the get_config function, which will be
+        used to return the mock configuration file.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_save_llm_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_llm_config_success ( self,
 mock_print,
 mock_json_dump,
 mock_file_open,
 mock_get_config 
)
+
+
Test the save_llm_config function successfully.
+
+This function tests that the save_llm_config function correctly saves an
+LLM configuration and handles various mock objects and side effects. It
+ensures that the function returns True upon successful execution, writes
+the expected configuration to a file, and prints a confirmation message.
+
+Args:
+    mock_print (MagicMock): A mock object for the print function.
+    mock_json_dump (MagicMock): A mock object for json.dump.
+    mock_file_open (MagicMock): A mock object for file opening.
+    mock_get_config (MagicMock): A mock object to return a configuration file mock.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js new file mode 100644 index 0000000..88e855a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__config__commands_1_1TestConfigCommands = +[ + [ "test_get_jira_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf", null ], + [ "test_get_llm_config_empty", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd", null ], + [ "test_get_llm_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167", null ], + [ "test_get_llm_config_invalid_json", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd", null ], + [ "test_get_penify_config_existing_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a", null ], + [ "test_get_penify_config_new_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948", null ], + [ "test_get_token_from_config", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c", null ], + [ "test_get_token_from_env", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232", null ], + [ "test_get_token_not_found", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436", null ], + [ "test_save_jira_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375", null ], + [ "test_save_llm_config_failure", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac", null ], + [ "test_save_llm_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map new file mode 100644 index 0000000..b44b108 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 new file mode 100644 index 0000000..eb46690 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 @@ -0,0 +1 @@ +2db6cf58d997b43a776fb21752d4aa29 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg new file mode 100644 index 0000000..9daa237 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg @@ -0,0 +1,50 @@ + + + + + + +tests.test_config_commands.TestConfigCommands + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands + + + ++ test_get_penify_config +_existing_dir() ++ test_get_penify_config +_new_dir() ++ test_get_llm_config +_exists() ++ test_get_llm_config +_empty() ++ test_get_llm_config +_invalid_json() ++ test_get_jira_config +_exists() ++ test_save_llm_config +_success() ++ test_save_llm_config +_failure() ++ test_save_jira_config +_success() ++ test_get_token_from +_env() ++ test_get_token_from +_config() ++ test_get_token_not +_found() + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map new file mode 100644 index 0000000..078fe57 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 new file mode 100644 index 0000000..9e0bad2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 @@ -0,0 +1 @@ +fe055e22847261fb4e8e965247fa63e4 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg new file mode 100644 index 0000000..f4a0db4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg new file mode 100644 index 0000000..223d6fc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map new file mode 100644 index 0000000..eda7789 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 new file mode 100644 index 0000000..9cef76a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 @@ -0,0 +1 @@ +28bc7f826bf5c37f1e543c6a2217c011 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg new file mode 100644 index 0000000..b978430 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg new file mode 100644 index 0000000..c5e3f5e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map new file mode 100644 index 0000000..b8a69cd --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 new file mode 100644 index 0000000..179211c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 @@ -0,0 +1 @@ +66249d926cb6fd81bdf9ba46dc56d466 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg new file mode 100644 index 0000000..3c9de34 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg new file mode 100644 index 0000000..3b4f6d8 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map new file mode 100644 index 0000000..9ca3973 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 new file mode 100644 index 0000000..494b2db --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 @@ -0,0 +1 @@ +fe3072609a9a0bf3d14e3143add0e6da \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg new file mode 100644 index 0000000..dd9b3ef --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg new file mode 100644 index 0000000..65b3e03 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map new file mode 100644 index 0000000..bdcc413 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 new file mode 100644 index 0000000..bdddb02 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 @@ -0,0 +1 @@ +6604e171883373f917ba1e50c7dcf2a8 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg new file mode 100644 index 0000000..803f331 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg new file mode 100644 index 0000000..4b1b7ba --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map new file mode 100644 index 0000000..8da2d5a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 new file mode 100644 index 0000000..49db9b2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 @@ -0,0 +1 @@ +18a45266c6274df8d06c6771aea4d3ce \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg new file mode 100644 index 0000000..d4ab491 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg new file mode 100644 index 0000000..9a84079 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map new file mode 100644 index 0000000..27f9795 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 new file mode 100644 index 0000000..d5a551d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 @@ -0,0 +1 @@ +2efae0628f3580e167ff4e2e9744ff76 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg new file mode 100644 index 0000000..48f17d2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg new file mode 100644 index 0000000..f52311f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map new file mode 100644 index 0000000..9e0e801 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 new file mode 100644 index 0000000..b6d0832 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 @@ -0,0 +1 @@ +ccb36b28b36810b7debb14198aa8c840 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg new file mode 100644 index 0000000..8e3f6ab --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg new file mode 100644 index 0000000..325a4d7 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map new file mode 100644 index 0000000..cb3426e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 new file mode 100644 index 0000000..616400e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 @@ -0,0 +1 @@ +2dda560e911927ca62424d428f826e98 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg new file mode 100644 index 0000000..657b852 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg new file mode 100644 index 0000000..cf3f2f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map new file mode 100644 index 0000000..98b03e3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 new file mode 100644 index 0000000..5292fed --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 @@ -0,0 +1 @@ +8a521fb6ddaca64c6678d226bec595a0 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg new file mode 100644 index 0000000..6c791c9 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg new file mode 100644 index 0000000..9c3f7c4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map new file mode 100644 index 0000000..d0930f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 new file mode 100644 index 0000000..904ab8d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 @@ -0,0 +1 @@ +6fbf377ddd24e2b0afa956a95f55e6c5 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg new file mode 100644 index 0000000..e31aeb0 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg new file mode 100644 index 0000000..19057f1 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map new file mode 100644 index 0000000..7a6d255 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 new file mode 100644 index 0000000..68d6c1c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 @@ -0,0 +1 @@ +2e054bb79c0b6f45c4788678aac6e514 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg new file mode 100644 index 0000000..e18fa25 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg new file mode 100644 index 0000000..eaa2159 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html new file mode 100644 index 0000000..0a9f26c --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_web_config.TestWebConfig Member List
+
+
+ +

This is the complete list of members for tests.test_web_config.TestWebConfig, including all inherited members.

+ + + +
test_config_jira_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
test_config_llm_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html new file mode 100644 index 0000000..75b14ed --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config.TestWebConfig Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_web_config.TestWebConfig Class Reference
+
+
+
+Collaboration diagram for tests.test_web_config.TestWebConfig:
+
+
+
+
+ + + + + + +

+Public Member Functions

def test_config_llm_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
def test_config_jira_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
+

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup ( self,
 mock_resource_filename,
 mock_server,
 mock_webbrowser 
)
+
+
Test the configuration and setup of a JIRA web server.
+
+This function tests the entire process of setting up a JIRA web server,
+including mocking necessary resources, configuring the server to shut
+down after handling one request, and verifying that the web browser is
+opened with the correct URL. The function uses several mocks to simulate
+external dependencies such as resource files, servers, and web browsers.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object for simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object for simulating the server setup.
+    mock_webbrowser (MagicMock): A MagicMock object for simulating the web browser opening.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ test_config_llm_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup ( self,
 mock_resource_filename,
 mock_server,
 mock_webbrowser 
)
+
+
Set up and test the web server configuration for an LLM (Large Language
+Model) web interface.
+
+This function configures a mock web server for testing purposes,
+including setting up resource filenames, mocking server behavior, and
+verifying that the web browser is opened and the server starts
+correctly. The function uses various mocks to simulate external
+dependencies such as `resource_filename` and `server`.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object simulating the context manager for the web server.
+    mock_webbrowser (MagicMock): A MagicMock object simulating the `webbrowser` module.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js new file mode 100644 index 0000000..64ea648 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js @@ -0,0 +1,5 @@ +var classtests_1_1test__web__config_1_1TestWebConfig = +[ + [ "test_config_jira_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a", null ], + [ "test_config_llm_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map new file mode 100644 index 0000000..77d4a58 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 new file mode 100644 index 0000000..f0a528b --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 @@ -0,0 +1 @@ +ab8cbd57a4ebb302c58c19a4efbc1c6e \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg new file mode 100644 index 0000000..acbac22 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg @@ -0,0 +1,30 @@ + + + + + + +tests.test_web_config.TestWebConfig + + + +Node1 + + +tests.test_web_config.Test +WebConfig + + + ++ test_config_llm_web +_server_setup() ++ test_config_jira_web +_server_setup() + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map new file mode 100644 index 0000000..249e111 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 new file mode 100644 index 0000000..064b512 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 @@ -0,0 +1 @@ +40be6a2b68a00531af40fd3546a6f158 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg new file mode 100644 index 0000000..ba12fb0 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg new file mode 100644 index 0000000..6325fbe --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map new file mode 100644 index 0000000..0befd5a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 new file mode 100644 index 0000000..2632d9a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 @@ -0,0 +1 @@ +5ca25c9e4be6eb96370b0328e2a5e679 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg new file mode 100644 index 0000000..a5b8af9 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/commit-commands_8md.html b/docs/html/commit-commands_8md.html new file mode 100644 index 0000000..3202768 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.html b/docs/html/commit__analyzer_8py.html new file mode 100644 index 0000000..4878956 --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.commit_analyzer.CommitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commit_analyzer
 
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.js b/docs/html/commit__analyzer_8py.js new file mode 100644 index 0000000..d7c51ca --- /dev/null +++ b/docs/html/commit__analyzer_8py.js @@ -0,0 +1,4 @@ +var commit__analyzer_8py = +[ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/commit__commands_8py.html b/docs/html/commit__commands_8py.html new file mode 100644 index 0000000..0d6b239 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.commit_commands
 
+ + + + + + + +

+Functions

def penify_hook.commands.commit_commands.commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
 
def penify_hook.commands.commit_commands.setup_commit_parser (parser)
 
def penify_hook.commands.commit_commands.handle_commit (args)
 
+
+
+ + + + + diff --git a/docs/html/commit__commands_8py.js b/docs/html/commit__commands_8py.js new file mode 100644 index 0000000..823f902 --- /dev/null +++ b/docs/html/commit__commands_8py.js @@ -0,0 +1,6 @@ +var commit__commands_8py = +[ + [ "commit_code", "commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] +]; \ No newline at end of file diff --git a/docs/html/config-commands_8md.html b/docs/html/config-commands_8md.html new file mode 100644 index 0000000..ba41f6e --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/config__command_8py.html b/docs/html/config__command_8py.html new file mode 100644 index 0000000..96a43f6 --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/config_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
config_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.config_command
 
+ + + + + +

+Functions

def penify_hook.config_command.setup_config_parser (parent_parser)
 
def penify_hook.config_command.handle_config (args)
 
+
+
+ + + + + diff --git a/docs/html/config__command_8py.js b/docs/html/config__command_8py.js new file mode 100644 index 0000000..7d1ed0a --- /dev/null +++ b/docs/html/config__command_8py.js @@ -0,0 +1,5 @@ +var config__command_8py = +[ + [ "handle_config", "config__command_8py.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e", null ] +]; \ No newline at end of file diff --git a/docs/html/config__commands_8py.html b/docs/html/config__commands_8py.html new file mode 100644 index 0000000..f6f25ee --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/config__commands_8py.js b/docs/html/config__commands_8py.js new file mode 100644 index 0000000..395f3fb --- /dev/null +++ b/docs/html/config__commands_8py.js @@ -0,0 +1,15 @@ +var config__commands_8py = +[ + [ "config_jira_web", "config__commands_8py.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "config__commands_8py.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880", null ] +]; \ No newline at end of file diff --git a/docs/html/conftest_8py.html b/docs/html/conftest_8py.html new file mode 100644 index 0000000..3f7af38 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/conftest.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
conftest.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  tests
 
namespace  tests.conftest
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.html b/docs/html/constants_8py.html new file mode 100644 index 0000000..0be8df2 --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/constants.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
constants.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.constants
 
+ + + + + +

+Variables

string penify_hook.constants.API_URL = 'http://localhost:8000/api'
 
string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.js b/docs/html/constants_8py.js new file mode 100644 index 0000000..adbd23d --- /dev/null +++ b/docs/html/constants_8py.js @@ -0,0 +1,5 @@ +var constants_8py = +[ + [ "API_URL", "constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0", null ] +]; \ No newline at end of file diff --git a/docs/html/detailed-usage_8md.html b/docs/html/detailed-usage_8md.html new file mode 100644 index 0000000..43f83e6 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html new file mode 100644 index 0000000..7f16484 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests Directory Reference
+
+
+
+Directory dependency graph for tests:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  conftest.py
 
file  test_commit_commands.py
 
file  test_config_commands.py
 
file  test_doc_commands.py
 
file  test_web_config.py
 
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js new file mode 100644 index 0000000..176f804 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js @@ -0,0 +1,9 @@ +var dir_063e2d5fe58a131099a7fe4200cca78c = +[ + [ "__init__.py", "tests_2____init_____8py.html", null ], + [ "conftest.py", "conftest_8py.html", null ], + [ "test_commit_commands.py", "test__commit__commands_8py.html", "test__commit__commands_8py" ], + [ "test_config_commands.py", "test__config__commands_8py.html", "test__config__commands_8py" ], + [ "test_doc_commands.py", "test__doc__commands_8py.html", "test__doc__commands_8py" ], + [ "test_web_config.py", "test__web__config_8py.html", "test__web__config_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map new file mode 100644 index 0000000..599c63c --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 new file mode 100644 index 0000000..afb9081 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 @@ -0,0 +1 @@ +fdbdbdbe253c547a3b41063e5036418d \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg new file mode 100644 index 0000000..08fb018 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_063e2d5fe58a131099a7fe4200cca78c + + +tests + + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623.html b/docs/html/dir_1648a057408aae8db85b8e3797335623.html new file mode 100644 index 0000000..74d57c0 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
docs Directory Reference
+
+
+
+Directory dependency graph for docs:
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map new file mode 100644 index 0000000..0f23bcc --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 new file mode 100644 index 0000000..2214ec5 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 @@ -0,0 +1 @@ +103c12b563793db32ed50b111f45bada \ No newline at end of file diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg new file mode 100644 index 0000000..10a902d --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_1648a057408aae8db85b8e3797335623 + + +docs + + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html new file mode 100644 index 0000000..6ae1d54 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
commands Directory Reference
+
+
+
+Directory dependency graph for commands:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  auth_commands.py
 
file  commit_commands.py
 
file  config_commands.py
 
file  doc_commands.py
 
file  hook_commands.py
 
+
+
+ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js new file mode 100644 index 0000000..94925e7 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js @@ -0,0 +1,9 @@ +var dir_624fa2a8bce97f0444ac5cca335d4e23 = +[ + [ "__init__.py", "penify__hook_2commands_2____init_____8py.html", null ], + [ "auth_commands.py", "auth__commands_8py.html", "auth__commands_8py" ], + [ "commit_commands.py", "commit__commands_8py.html", "commit__commands_8py" ], + [ "config_commands.py", "config__commands_8py.html", "config__commands_8py" ], + [ "doc_commands.py", "doc__commands_8py.html", "doc__commands_8py" ], + [ "hook_commands.py", "hook__commands_8py.html", "hook__commands_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map new file mode 100644 index 0000000..34cf9f2 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 new file mode 100644 index 0000000..597f466 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 @@ -0,0 +1 @@ +1c8b9302d49050442030c2a1fe004137 \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg new file mode 100644 index 0000000..866d63c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + +penify_hook + + + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html new file mode 100644 index 0000000..6deb4ae --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  docs
 
directory  penify_hook
 
directory  tests
 
+ + + +

+Files

file  setup.py
 
+
+
+ + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js new file mode 100644 index 0000000..f7aa196 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js @@ -0,0 +1,7 @@ +var dir_b3b22d2ab7966b65f6b237e3231b41be = +[ + [ "docs", "dir_1648a057408aae8db85b8e3797335623.html", null ], + [ "penify_hook", "dir_f88c3381c1861b3f7ca1f3d63cf244b5.html", "dir_f88c3381c1861b3f7ca1f3d63cf244b5" ], + [ "tests", "dir_063e2d5fe58a131099a7fe4200cca78c.html", "dir_063e2d5fe58a131099a7fe4200cca78c" ], + [ "setup.py", "setup_8py.html", "setup_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html new file mode 100644 index 0000000..9705dee --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook Directory Reference
+
+
+
+Directory dependency graph for penify_hook:
+
+
+
+
+ + + + +

+Directories

directory  commands
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  api_client.py
 
file  base_analyzer.py
 
file  commit_analyzer.py
 
file  config_command.py
 
file  constants.py
 
file  file_analyzer.py
 
file  folder_analyzer.py
 
file  git_analyzer.py
 
file  jira_client.py
 
file  llm_client.py
 
file  login_command.py
 
file  main.py
 
file  ui_utils.py
 
file  utils.py
 
+
+
+ + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js new file mode 100644 index 0000000..1be563a --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js @@ -0,0 +1,19 @@ +var dir_f88c3381c1861b3f7ca1f3d63cf244b5 = +[ + [ "commands", "dir_624fa2a8bce97f0444ac5cca335d4e23.html", "dir_624fa2a8bce97f0444ac5cca335d4e23" ], + [ "__init__.py", "penify__hook_2____init_____8py.html", null ], + [ "api_client.py", "api__client_8py.html", "api__client_8py" ], + [ "base_analyzer.py", "base__analyzer_8py.html", "base__analyzer_8py" ], + [ "commit_analyzer.py", "commit__analyzer_8py.html", "commit__analyzer_8py" ], + [ "config_command.py", "config__command_8py.html", "config__command_8py" ], + [ "constants.py", "constants_8py.html", "constants_8py" ], + [ "file_analyzer.py", "file__analyzer_8py.html", "file__analyzer_8py" ], + [ "folder_analyzer.py", "folder__analyzer_8py.html", "folder__analyzer_8py" ], + [ "git_analyzer.py", "git__analyzer_8py.html", "git__analyzer_8py" ], + [ "jira_client.py", "jira__client_8py.html", "jira__client_8py" ], + [ "llm_client.py", "llm__client_8py.html", "llm__client_8py" ], + [ "login_command.py", "login__command_8py.html", "login__command_8py" ], + [ "main.py", "main_8py.html", "main_8py" ], + [ "ui_utils.py", "ui__utils_8py.html", "ui__utils_8py" ], + [ "utils.py", "utils_8py.html", "utils_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map new file mode 100644 index 0000000..769a769 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 new file mode 100644 index 0000000..577134d --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 @@ -0,0 +1 @@ +81055f3442546e3f091686cb9eef1bc5 \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg new file mode 100644 index 0000000..9c6c5d0 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg @@ -0,0 +1,42 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + + + + + + +dir_f88c3381c1861b3f7ca1f3d63cf244b5 +penify_hook + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/doc.png b/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/html/doc__commands_8md.html b/docs/html/doc__commands_8md.html new file mode 100644 index 0000000..7fdd439 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/doc_commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/doc_commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.html b/docs/html/doc__commands_8py.html new file mode 100644 index 0000000..d16c335 --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
doc_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.doc_commands
 
+ + + + + + + +

+Functions

def penify_hook.commands.doc_commands.generate_doc (api_url, token, location=None)
 
def penify_hook.commands.doc_commands.setup_docgen_parser (parser)
 
def penify_hook.commands.doc_commands.handle_docgen (args)
 
+ + + +

+Variables

string penify_hook.commands.doc_commands.docgen_description
 
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.js b/docs/html/doc__commands_8py.js new file mode 100644 index 0000000..4bb5a06 --- /dev/null +++ b/docs/html/doc__commands_8py.js @@ -0,0 +1,7 @@ +var doc__commands_8py = +[ + [ "generate_doc", "doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "doc__commands_8py.html#a3e42540047da37565afffeaf106cb948", null ] +]; \ No newline at end of file diff --git a/docs/html/doxygen-awesome-darkmode-toggle.js b/docs/html/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 0000000..40fe2d3 --- /dev/null +++ b/docs/html/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/docs/html/doxygen-awesome-fragment-copy-button.js b/docs/html/doxygen-awesome-fragment-copy-button.js new file mode 100644 index 0000000..86c16fd --- /dev/null +++ b/docs/html/doxygen-awesome-fragment-copy-button.js @@ -0,0 +1,85 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeFragmentCopyButton extends HTMLElement { + constructor() { + super(); + this.onclick=this.copyContent + } + static title = "Copy to clipboard" + static copyIcon = `` + static successIcon = `` + static successDuration = 980 + static init() { + $(function() { + $(document).ready(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const fragmentWrapper = document.createElement("div") + fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" + const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") + fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title + + fragment.parentNode.replaceChild(fragmentWrapper, fragment) + fragmentWrapper.appendChild(fragment) + fragmentWrapper.appendChild(fragmentCopyButton) + + } + } + }) + }) + } + + + copyContent() { + const content = this.previousSibling.cloneNode(true) + // filter out line number from file listings + content.querySelectorAll(".lineno, .ttc").forEach((node) => { + node.remove() + }) + let textContent = content.textContent + // remove trailing newlines that appear in file listings + let numberOfTrailingNewlines = 0 + while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { + numberOfTrailingNewlines++; + } + textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) + navigator.clipboard.writeText(textContent); + this.classList.add("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon + window.setTimeout(() => { + this.classList.remove("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + }, DoxygenAwesomeFragmentCopyButton.successDuration); + } +} + +customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) diff --git a/docs/html/doxygen-awesome-interactive-toc.js b/docs/html/doxygen-awesome-interactive-toc.js new file mode 100644 index 0000000..20a9669 --- /dev/null +++ b/docs/html/doxygen-awesome-interactive-toc.js @@ -0,0 +1,81 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeInteractiveToc { + static topOffset = 38 + static hideMobileMenu = true + static headers = [] + + static init() { + window.addEventListener("load", () => { + let toc = document.querySelector(".contents > .toc") + if(toc) { + toc.classList.add("interactive") + if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) { + toc.classList.add("open") + } + document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => { + if(toc.classList.contains("open")) { + toc.classList.remove("open") + } else { + toc.classList.add("open") + } + }) + + document.querySelectorAll(".contents > .toc > ul a").forEach((node) => { + let id = node.getAttribute("href").substring(1) + DoxygenAwesomeInteractiveToc.headers.push({ + node: node, + headerNode: document.getElementById(id) + }) + + document.getElementById("doc-content")?.addEventListener("scroll", () => { + DoxygenAwesomeInteractiveToc.update() + }) + }) + DoxygenAwesomeInteractiveToc.update() + } + }) + } + + static update() { + let active = DoxygenAwesomeInteractiveToc.headers[0]?.node + DoxygenAwesomeInteractiveToc.headers.forEach((header) => { + let position = header.headerNode.getBoundingClientRect().top + header.node.classList.remove("active") + header.node.classList.remove("aboveActive") + if(position < DoxygenAwesomeInteractiveToc.topOffset) { + active = header.node + active?.classList.add("aboveActive") + } + }) + active?.classList.add("active") + active?.classList.remove("aboveActive") + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome-paragraph-link.js b/docs/html/doxygen-awesome-paragraph-link.js new file mode 100644 index 0000000..e53d132 --- /dev/null +++ b/docs/html/doxygen-awesome-paragraph-link.js @@ -0,0 +1,51 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeParagraphLink { + // Icon from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static icon = `` + static title = "Permanent Link" + static init() { + $(function() { + $(document).ready(function() { + document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => { + let anchorlink = document.createElement("a") + anchorlink.setAttribute("href", `#${node.getAttribute("id")}`) + anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title) + anchorlink.classList.add("anchorlink") + node.classList.add("anchor") + anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon + node.parentElement.appendChild(anchorlink) + }) + }) + }) + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 0000000..d207446 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only.css b/docs/html/doxygen-awesome-sidebar-only.css new file mode 100644 index 0000000..853f6d6 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/docs/html/doxygen-awesome-tabs.js b/docs/html/doxygen-awesome-tabs.js new file mode 100644 index 0000000..06dfd3d --- /dev/null +++ b/docs/html/doxygen-awesome-tabs.js @@ -0,0 +1,90 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +class DoxygenAwesomeTabs { + + static init() { + window.addEventListener("load", () => { + document.querySelectorAll(".tabbed:not(:empty)").forEach((tabbed, tabbedIndex) => { + let tabLinkList = [] + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + tab.id = "tab_" + tabbedIndex + "_" + tabIndex + let header = tab.querySelector(".tab-title") + let tabLink = document.createElement("button") + tabLink.classList.add("tab-button") + tabLink.appendChild(header) + header.title = header.textContent + tabLink.addEventListener("click", () => { + tabbed.querySelectorAll(":scope > ul > li").forEach((tab) => { + tab.classList.remove("selected") + }) + tabLinkList.forEach((tabLink) => { + tabLink.classList.remove("active") + }) + tab.classList.add("selected") + tabLink.classList.add("active") + }) + tabLinkList.push(tabLink) + if(tabIndex == 0) { + tab.classList.add("selected") + tabLink.classList.add("active") + } + }) + let tabsOverview = document.createElement("div") + tabsOverview.classList.add("tabs-overview") + let tabsOverviewContainer = document.createElement("div") + tabsOverviewContainer.classList.add("tabs-overview-container") + tabLinkList.forEach((tabLink) => { + tabsOverview.appendChild(tabLink) + }) + tabsOverviewContainer.appendChild(tabsOverview) + tabbed.before(tabsOverviewContainer) + + function resize() { + let maxTabHeight = 0 + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + let visibility = tab.style.display + tab.style.display = "block" + maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight) + tab.style.display = visibility + }) + tabbed.style.height = `${maxTabHeight + 10}px` + } + + resize() + new ResizeObserver(resize).observe(tabbed) + }) + }) + + } + + static resize(tabbed) { + + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome.css b/docs/html/doxygen-awesome.css new file mode 100644 index 0000000..a44945b --- /dev/null +++ b/docs/html/doxygen-awesome.css @@ -0,0 +1,2675 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..2010785 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode { + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/example-workflows.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/example-workflows.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.html b/docs/html/file__analyzer_8py.html new file mode 100644 index 0000000..8254bd0 --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
file_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.file_analyzer.FileAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.file_analyzer
 
+ + + +

+Variables

 penify_hook.file_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.js b/docs/html/file__analyzer_8py.js new file mode 100644 index 0000000..a650b8a --- /dev/null +++ b/docs/html/file__analyzer_8py.js @@ -0,0 +1,5 @@ +var file__analyzer_8py = +[ + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..0ba0a39 --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js new file mode 100644 index 0000000..dd5a1a9 --- /dev/null +++ b/docs/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "penify-cli", "dir_b3b22d2ab7966b65f6b237e3231b41be.html", "dir_b3b22d2ab7966b65f6b237e3231b41be" ] +]; \ No newline at end of file diff --git a/docs/html/folder__analyzer_8py.html b/docs/html/folder__analyzer_8py.html new file mode 100644 index 0000000..fc17216 --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
folder_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.folder_analyzer.FolderAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.folder_analyzer
 
+
+
+ + + + + diff --git a/docs/html/folder__analyzer_8py.js b/docs/html/folder__analyzer_8py.js new file mode 100644 index 0000000..f51e8e5 --- /dev/null +++ b/docs/html/folder__analyzer_8py.js @@ -0,0 +1,4 @@ +var folder__analyzer_8py = +[ + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..f14799b --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..956e309 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- a -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..9dea7e9 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..4507a15 --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
git_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.git_analyzer.GitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.git_analyzer
 
+ + + +

+Variables

 penify_hook.git_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/git__analyzer_8py.js b/docs/html/git__analyzer_8py.js new file mode 100644 index 0000000..f8197a4 --- /dev/null +++ b/docs/html/git__analyzer_8py.js @@ -0,0 +1,5 @@ +var git__analyzer_8py = +[ + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "logger", "git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..29f9b60 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Graph Legend + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..5543aee --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +2949d8d683b49299ad5e82dbf5d1be6c \ No newline at end of file diff --git a/docs/html/graph_legend.svg b/docs/html/graph_legend.svg new file mode 100644 index 0000000..5c7a71a --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,117 @@ + + + + + + +Graph Legend + + + +Node9 + +Inherited + + + +Node10 + +PublicBase + + + +Node10->Node9 + + + + + +Node11 + +Truncated + + + +Node11->Node10 + + + + + +Node13 + +ProtectedBase + + + +Node13->Node9 + + + + + +Node14 + +PrivateBase + + + +Node14->Node9 + + + + + +Node15 + +Undocumented + + + +Node15->Node9 + + + + + +Node16 + +Templ< int > + + + +Node16->Node9 + + + + + +Node17 + +Templ< T > + + + +Node17->Node16 + + +< int > + + + +Node18 + +Used + + + +Node18->Node9 + + +m_usedClass + + + diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html new file mode 100644 index 0000000..02d96f9 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js new file mode 100644 index 0000000..6af7a4f --- /dev/null +++ b/docs/html/hierarchy.js @@ -0,0 +1,18 @@ +var hierarchy = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", null ], + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", [ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", null ], + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", null ], + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", null ], + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", null ] + ] ], + [ "Exception", "classException.html", [ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ], + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", null ], + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", null ], + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", null ], + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", null ], + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", null ] +]; \ No newline at end of file diff --git a/docs/html/hook__commands_8py.html b/docs/html/hook__commands_8py.html new file mode 100644 index 0000000..1fed28d --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/hook_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
hook_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.hook_commands
 
+ + + + + +

+Functions

def penify_hook.commands.hook_commands.install_git_hook (location, token)
 
def penify_hook.commands.hook_commands.uninstall_git_hook (location)
 
+ + + + + +

+Variables

string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
 
string penify_hook.commands.hook_commands.HOOK_TEMPLATE
 
+
+
+ + + + + diff --git a/docs/html/hook__commands_8py.js b/docs/html/hook__commands_8py.js new file mode 100644 index 0000000..7868841 --- /dev/null +++ b/docs/html/hook__commands_8py.js @@ -0,0 +1,7 @@ +var hook__commands_8py = +[ + [ "install_git_hook", "hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] +]; \ No newline at end of file diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..3301f1a --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Documentation
+
+
+
+
+ + + + + diff --git a/docs/html/inherit_graph_0.map b/docs/html/inherit_graph_0.map new file mode 100644 index 0000000..4d4472c --- /dev/null +++ b/docs/html/inherit_graph_0.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/inherit_graph_0.md5 b/docs/html/inherit_graph_0.md5 new file mode 100644 index 0000000..927ae02 --- /dev/null +++ b/docs/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +fbdbe5195fd7acea201510f0e9bb231e \ No newline at end of file diff --git a/docs/html/inherit_graph_0.svg b/docs/html/inherit_graph_0.svg new file mode 100644 index 0000000..af8bbff --- /dev/null +++ b/docs/html/inherit_graph_0.svg @@ -0,0 +1,38 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +Exception + + + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + +Node0->Node1 + + + + + diff --git a/docs/html/inherit_graph_1.map b/docs/html/inherit_graph_1.map new file mode 100644 index 0000000..e29f764 --- /dev/null +++ b/docs/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_1.md5 b/docs/html/inherit_graph_1.md5 new file mode 100644 index 0000000..ea3634a --- /dev/null +++ b/docs/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +61b97d863a0d1fddd4dbd69906ebc213 \ No newline at end of file diff --git a/docs/html/inherit_graph_1.svg b/docs/html/inherit_graph_1.svg new file mode 100644 index 0000000..31bd0a8 --- /dev/null +++ b/docs/html/inherit_graph_1.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.api_client.APIClient + + + + + diff --git a/docs/html/inherit_graph_2.map b/docs/html/inherit_graph_2.map new file mode 100644 index 0000000..799bfbb --- /dev/null +++ b/docs/html/inherit_graph_2.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/inherit_graph_2.md5 b/docs/html/inherit_graph_2.md5 new file mode 100644 index 0000000..4b44272 --- /dev/null +++ b/docs/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +75e192bb568d3adda84eea21391817f9 \ No newline at end of file diff --git a/docs/html/inherit_graph_2.svg b/docs/html/inherit_graph_2.svg new file mode 100644 index 0000000..2677d68 --- /dev/null +++ b/docs/html/inherit_graph_2.svg @@ -0,0 +1,87 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.base_analyzer. +BaseAnalyzer + + + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + + + + + +Node0->Node1 + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + + + + + +Node0->Node2 + + + + + +Node3 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + + + + + +Node0->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook + + + + + +Node0->Node4 + + + + + diff --git a/docs/html/inherit_graph_3.map b/docs/html/inherit_graph_3.map new file mode 100644 index 0000000..697011d --- /dev/null +++ b/docs/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_3.md5 b/docs/html/inherit_graph_3.md5 new file mode 100644 index 0000000..dc81dee --- /dev/null +++ b/docs/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +fceca40b7ed3dc42e967f284c6fcc468 \ No newline at end of file diff --git a/docs/html/inherit_graph_3.svg b/docs/html/inherit_graph_3.svg new file mode 100644 index 0000000..8d32efa --- /dev/null +++ b/docs/html/inherit_graph_3.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.jira_client. +JiraClient + + + + + diff --git a/docs/html/inherit_graph_4.map b/docs/html/inherit_graph_4.map new file mode 100644 index 0000000..8833eec --- /dev/null +++ b/docs/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_4.md5 b/docs/html/inherit_graph_4.md5 new file mode 100644 index 0000000..7b024dc --- /dev/null +++ b/docs/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +78a208cc7ff8d5e3d76f7fe246474324 \ No newline at end of file diff --git a/docs/html/inherit_graph_4.svg b/docs/html/inherit_graph_4.svg new file mode 100644 index 0000000..f51c5c8 --- /dev/null +++ b/docs/html/inherit_graph_4.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.llm_client.LLMClient + + + + + diff --git a/docs/html/inherit_graph_5.map b/docs/html/inherit_graph_5.map new file mode 100644 index 0000000..340884d --- /dev/null +++ b/docs/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_5.md5 b/docs/html/inherit_graph_5.md5 new file mode 100644 index 0000000..a572e33 --- /dev/null +++ b/docs/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +07fe5f1877ad04afe232476f3697a187 \ No newline at end of file diff --git a/docs/html/inherit_graph_5.svg b/docs/html/inherit_graph_5.svg new file mode 100644 index 0000000..d1eb1ca --- /dev/null +++ b/docs/html/inherit_graph_5.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_commit_commands. +TestCommitCommands + + + + + diff --git a/docs/html/inherit_graph_6.map b/docs/html/inherit_graph_6.map new file mode 100644 index 0000000..093c227 --- /dev/null +++ b/docs/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_6.md5 b/docs/html/inherit_graph_6.md5 new file mode 100644 index 0000000..37adffc --- /dev/null +++ b/docs/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +df59af5d6cbe4d3df1d1ec09b3fe3a88 \ No newline at end of file diff --git a/docs/html/inherit_graph_6.svg b/docs/html/inherit_graph_6.svg new file mode 100644 index 0000000..6156f4f --- /dev/null +++ b/docs/html/inherit_graph_6.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_config_commands. +TestConfigCommands + + + + + diff --git a/docs/html/inherit_graph_7.map b/docs/html/inherit_graph_7.map new file mode 100644 index 0000000..f1fc41d --- /dev/null +++ b/docs/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_7.md5 b/docs/html/inherit_graph_7.md5 new file mode 100644 index 0000000..474c162 --- /dev/null +++ b/docs/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +0da5838f91ae0c3b8f7bfe23d4aad90f \ No newline at end of file diff --git a/docs/html/inherit_graph_7.svg b/docs/html/inherit_graph_7.svg new file mode 100644 index 0000000..a9bcadf --- /dev/null +++ b/docs/html/inherit_graph_7.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_web_config.Test +WebConfig + + + + + diff --git a/docs/html/inherits.html b/docs/html/inherits.html new file mode 100644 index 0000000..9984dbf --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.html b/docs/html/jira__client_8py.html new file mode 100644 index 0000000..755b163 --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
jira_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.jira_client.JiraClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.jira_client
 
+ + + +

+Variables

bool penify_hook.jira_client.JIRA_AVAILABLE = True
 
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.js b/docs/html/jira__client_8py.js new file mode 100644 index 0000000..887fb38 --- /dev/null +++ b/docs/html/jira__client_8py.js @@ -0,0 +1,5 @@ +var jira__client_8py = +[ + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..c9ed3d9 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html new file mode 100644 index 0000000..f72bb20 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
llm_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.llm_client.LLMClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.llm_client
 
+
+
+ + + + + diff --git a/docs/html/llm__client_8py.js b/docs/html/llm__client_8py.js new file mode 100644 index 0000000..afd0616 --- /dev/null +++ b/docs/html/llm__client_8py.js @@ -0,0 +1,4 @@ +var llm__client_8py = +[ + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/login__command_8py.html b/docs/html/login__command_8py.html new file mode 100644 index 0000000..80315c5 --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
login_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.login_command
 
+ + + + + +

+Functions

def penify_hook.login_command.setup_login_parser (parser)
 
def penify_hook.login_command.handle_login (args)
 
+
+
+ + + + + diff --git a/docs/html/login__command_8py.js b/docs/html/login__command_8py.js new file mode 100644 index 0000000..7ce13bc --- /dev/null +++ b/docs/html/login__command_8py.js @@ -0,0 +1,5 @@ +var login__command_8py = +[ + [ "handle_login", "login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "login__command_8py.html#aae63db4c484797bead34b7d874020c6a", null ] +]; \ No newline at end of file diff --git a/docs/html/main_8py.html b/docs/html/main_8py.html new file mode 100644 index 0000000..976fe09 --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/main.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
main.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

def penify_hook.main.main ()
 
+
+
+ + + + + diff --git a/docs/html/main_8py.js b/docs/html/main_8py.js new file mode 100644 index 0000000..6150b32 --- /dev/null +++ b/docs/html/main_8py.js @@ -0,0 +1,4 @@ +var main_8py = +[ + [ "main", "main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] +]; \ No newline at end of file diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html new file mode 100644 index 0000000..3283bac --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Tool
+
+
+

Tests Coverage

+

A CLI tool to generate smart commit messages, code documentation, and more.

+

+Features

+
    +
  • Automatically generate documentation for your code
  • +
  • Support for multiple programming languages
  • +
  • Git hook integration for automatic documentation on commits
  • +
  • Folder and file analysis
  • +
+

+Installation

+

Install from PyPI:

+
pip install penify
+

+Usage

+

Penify CLI provides several subcommands for different functionalities, organized into basic commands (no login required) and advanced commands (login required).

+

+Basic Commands (No login required)

+

+Commit

+

Generate smart commit messages using local LLM:

+
penify commit [-m "Optional message"] [-e] [-d]
+

Options:

    +
  • -m, --message: Optional custom commit message
  • +
  • -e, --terminal: Open editor to modify commit message before committing
  • +
  • -d, --description: Generate commit message with both title and description (without this flag, only title is generated)
  • +
+

+Config

+

Configure local LLM and JIRA settings:

+
# Configure LLM settings
+
penify config llm --model MODEL_NAME [--api-base API_URL] [--api-key API_KEY]
+
+
# Configure LLM settings through web interface
+
penify config llm-web
+
+
# Configure JIRA settings
+
penify config jira --url JIRA_URL --username USERNAME --api-token TOKEN [--verify]
+
+
# Configure JIRA settings through web interface
+
penify config jira-web
+

+Advanced Commands (Login required)

+

+Login

+

To log in and obtain an API token:

+
penify login
+

This command will open a browser window for authentication. After successful login, the API key will be saved locally for future use.

+

+Documentation Generation

+

Generate documentation for Git diff, files or folders:

+
# Generate documentation for latest Git commit diff
+
penify docgen
+
+
# Generate documentation for specific file or folder
+
penify docgen -l /path/to/file/or/folder
+

Options:

    +
  • -l, --location: Path to specific file or folder for documentation generation (defaults to current directory)
  • +
+

+Git Hook Management

+

Install or uninstall Git post-commit hooks:

+
# Install Git hook
+
penify docgen install-hook [-l /path/to/repo]
+
+
# Uninstall Git hook
+
penify docgen uninstall-hook [-l /path/to/repo]
+

Options:

    +
  • -l, --location: Path to the Git repository (defaults to current directory)
  • +
+

+Authentication

+

Penify CLI uses an API token for authentication with advanced features.

+

If no token is available and you try to access an advanced feature, you'll be prompted to log in.

+

+Local LLM Configuration

+

For commit message generation, Penify can use a local LLM. Configure it using:

+
penify config llm --model MODEL_NAME --api-base API_URL --api-key API_KEY
+

Common configurations:

+

+JIRA Integration

+

Configure JIRA integration to enhance commit messages with issue details:

+
penify config jira --url https://your-domain.atlassian.net --username your-email@example.com --api-token YOUR_API_TOKEN
+

+Development

+

To set up the development environment:

+
    +
  1. Clone the repository:
    git clone https://github.com/SingularityX-ai/penify-cli.git
    +
  2. +
  3. Install the package in editable mode:
    pip install -e .
    +
  4. +
+

+Running Tests

+
pytest
+

+License

+

This project is licensed under the MIT License.

+

+Author

+

Suman Saurabh (ss.su.nosp@m.mans.nosp@m.aurab.nosp@m.h92@.nosp@m.gmail.nosp@m..com)

+

+Contributing

+

Contributions are welcome! Please feel free to submit a Pull Request.

+

+Issues

+

If you encounter any problems or have suggestions, please file an issue on the GitHub repository.

+

+Support

+

For automated API Documentation, Architecture Documentation, Code Documentation, Pull Request Documentation, or if you need a demo, please join our Discord support channel.

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html new file mode 100644 index 0000000..063c872 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Commit Commands
+
+
+

The commit command allows you to generate smart, AI-powered commit messages for your Git changes. This document explains all available options and combinations.

+

+Basic Usage

+
penify commit
+

By default, this command:

    +
  • Analyzes your staged Git changes
  • +
  • Generates a concise commit title only
  • +
  • Uses local LLM if configured, or falls back to Penify API
  • +
+

+Command Options

+

+<tt>-m, --message</tt>

+

Provide context for the commit message generation:

+
penify commit -m "Fix login flow"
+

This hint helps the AI understand your intention and improves the quality of the generated message.

+

+<tt>-e, --terminal</tt>

+

Open an editor to review and edit the generated commit message before committing:

+
penify commit -e
+

This opens your default Git editor with the generated message for review.

+

+<tt>-d, --description</tt>

+

Generate a detailed commit message with both title and description:

+
penify commit -d
+

Without this flag, only the commit title is generated.

+

+Option Combinations

+

You can combine these options for different workflows:

+

+Generate Title Only with Context

+
penify commit -m "Update login UI"
+

+Generate Title and Description with Context

+
penify commit -m "Update login UI" -d
+

+Generate and Edit Full Commit Message

+
penify commit -d -e
+

+Generate, Edit, and Provide Context

+
penify commit -m "Refactor authentication" -d -e
+

+LLM and JIRA Integration

+

+Using Local LLM

+

If you've configured a local LLM using penify config llm, the commit command will automatically use it for message generation.

+

Benefits:

    +
  • Privacy: your code changes don't leave your machine
  • +
  • Speed: no network latency
  • +
  • Works offline
  • +
+

+JIRA Enhancement

+

If you've configured JIRA integration using penify config jira, the commit command will:

+
    +
  1. Detect JIRA issue references in your changes
  2. +
  3. Fetch issue details from your JIRA instance
  4. +
  5. Include issue information in the commit message
  6. +
  7. Format the commit message according to JIRA's smart commit format
  8. +
+

Example output:

PROJ-123: Fix authentication bug in login flow
+
+
- Updated OAuth token validation
+
- Fixed session timeout handling
+
- Added unit tests for edge cases
+
+
[PROJ-123]
+

+Configuration Requirements

+

For the commit command to work:

+
    +
  1. You must have configured either:
      +
    • Local LLM via penify config llm, OR
    • +
    • Logged in via penify login
    • +
    +
  2. +
  3. For JIRA enhancement (optional):
      +
    • Configure JIRA via penify config jira
    • +
    +
  4. +
+

+Examples

+

+Basic Commit with Default Settings

+
# Stage your changes
+
git add .
+
+
# Generate commit message
+
penify commit
+
+
# Commit with the generated message
+
git commit -m "Generated message here"
+

+Full Workflow with All Features

+
# Stage your changes
+
git add .
+
+
# Generate detailed commit message with JIRA integration,
+
# provide context, and open editor for review
+
penify commit -m "Fix login issue" -d -e
+
+
# The commit is automatically completed after you save and exit the editor
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"No LLM model or API token provided"**
      +
    • Run penify config llm to configure a local LLM, or
    • +
    • Run penify login to authenticate with Penify
    • +
    +
  2. +
  3. **"Failed to connect to JIRA"**
      +
    • Check your JIRA configuration with cat ~/.penify
    • +
    • Verify your network connection
    • +
    • Ensure your JIRA credentials are valid
    • +
    +
  4. +
  5. **"Error initializing LLM client"**
      +
    • Verify your LLM configuration settings
    • +
    • Ensure the LLM API is accessible
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html new file mode 100644 index 0000000..b900b9a --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Configuration Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Configuration Commands
+
+
+

The config command allows you to set up and manage configuration settings for Penify CLI. This document explains all available configuration options and how to use them.

+

+Configuration Overview

+

Penify CLI stores configuration in a JSON file at ~/.penify/config.json. The configuration includes:

+
    +
  • LLM (Large Language Model) settings for local commit message generation
  • +
  • JIRA integration settings for enhanced commit messages
  • +
  • API tokens and other credentials
  • +
+

+Basic Usage

+
# Configure LLM settings
+
penify config llm
+
+
# Configure JIRA integration
+
penify config jira
+

+LLM Configuration

+

+Web Interface

+

Running penify config llm opens a web interface in your browser where you can configure:

+
    +
  1. Model: The LLM model to use (e.g., gpt-3.5-turbo)
  2. +
  3. API Base URL: The endpoint URL for your LLM API (e.g., https://api.openai.com/v1)
  4. +
  5. API Key: Your authentication key for the LLM API
  6. +
+

+Supported LLMs

+

Penify CLI supports various LLM providers:

+

+OpenAI

+ +

+Anthropic

+ +

+Ollama (Local)

+ +

+Azure OpenAI

+
    +
  • Model: Your deployed model name
  • +
  • API Base: Your Azure endpoint
  • +
  • API Key: Your Azure API key
  • +
+

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"llm": {
+
"model": "gpt-3.5-turbo",
+
"api_base": "https://api.openai.com/v1",
+
"api_key": "sk-..."
+
}
+
}
+

+JIRA Configuration

+

+Web Interface

+

Running penify config jira opens a web interface where you can configure:

+
    +
  1. JIRA URL: Your JIRA instance URL (e.g., https://yourcompany.atlassian.net)
  2. +
  3. Username: Your JIRA username (typically your email)
  4. +
  5. API Token: Your JIRA API token
  6. +
+

+Creating a JIRA API Token

+
    +
  1. Log in to https://id.atlassian.com/manage-profile/security/api-tokens
  2. +
  3. Click "Create API token"
  4. +
  5. Give it a name (e.g., "Penify CLI")
  6. +
  7. Copy the generated token and paste it into the configuration
  8. +
+

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"jira": {
+
"url": "https://yourcompany.atlassian.net",
+
"username": "your.email@example.com",
+
"api_token": "your-jira-api-token"
+
}
+
}
+

+Configuration Locations

+

Penify CLI looks for configuration in multiple locations:

+
    +
  1. Project-specific: .penify/config.json in the Git repository root
  2. +
  3. User-specific: ~/.penify/config.json in your home directory
  4. +
+

The project-specific configuration takes precedence if both exist.

+

+Environment Variables

+

You can override configuration settings using environment variables:

+
    +
  • PENIFY_API_TOKEN: Override the stored API token
  • +
  • PENIFY_LLM_MODEL: Override the configured LLM model
  • +
  • PENIFY_LLM_API_BASE: Override the configured LLM API base URL
  • +
  • PENIFY_LLM_API_KEY: Override the configured LLM API key
  • +
  • PENIFY_JIRA_URL: Override the configured JIRA URL
  • +
  • PENIFY_JIRA_USER: Override the configured JIRA username
  • +
  • PENIFY_JIRA_TOKEN: Override the configured JIRA API token
  • +
+

Example:

export PENIFY_LLM_MODEL="gpt-4"
+
penify commit
+

+Command-Line Configuration

+

For advanced users or scripting, you can directly edit the configuration file:

+
# View current configuration
+
cat ~/.penify/config.json
+
+
# Edit configuration with your preferred editor
+
nano ~/.penify/config.json
+

+Sharing Configuration

+

You can share configuration between machines by copying the .penify/config.json file. However, be cautious with API keys and credentials.

+

For team settings, consider:

    +
  1. Using a project-specific .penify/config.json with shared settings
  2. +
  3. Excluding API keys from shared configuration
  4. +
  5. Using environment variables for sensitive credentials
  6. +
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Error reading configuration file"**
      +
    • Check if the file exists: ls -la ~/.penify
    • +
    • Ensure it contains valid JSON: cat ~/.penify/config.json
    • +
    +
  2. +
  3. **"Failed to connect to LLM API"**
      +
    • Verify API base URL and API key
    • +
    • Check network connectivity to the API endpoint
    • +
    • Ensure your account has access to the specified model
    • +
    +
  4. +
  5. **"Failed to connect to JIRA"**
      +
    • Check JIRA URL format (should include https://)
    • +
    • Verify username and API token
    • +
    • Ensure your JIRA account has API access permissions
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html new file mode 100644 index 0000000..3ea4081 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Detailed Usage Guide
+
+
+

This document provides in-depth information about all features and capabilities of the Penify CLI tool.

+

+Table of Contents

+
    +
  • Penify CLI - Detailed Usage Guide
      +
    • Table of Contents
    • +
    • Authentication
        +
      • Login Process
      • +
      • API Token Storage
      • +
      • Token Precedence
      • +
      +
    • +
    • Command Overview
    • +
    • Commit Message Generation
    • +
    • Code Documentation Generation
        +
      • Use Cases
      • +
      • Authentication Requirement
      • +
      +
    • +
    • Configuration Settings
    • +
    • Git Hooks
        +
      • Post-Commit Hook
      • +
      • Custom Hook Location
      • +
      +
    • +
    • Advanced Use Cases
        +
      • CI/CD Integration
      • +
      • Remote Repository Documentation
      • +
      +
    • +
    • Troubleshooting
        +
      • Common Issues
      • +
      • Logs
      • +
      • Support
      • +
      +
    • +
    +
  • +
+

+Authentication

+

+Login Process

+

When you run penify login, the tool:

+
    +
  1. Opens your default web browser
  2. +
  3. Redirects you to Penify's login page
  4. +
  5. Captures the authentication token after successful login
  6. +
  7. Saves the token in ~/.penify file
  8. +
+

+API Token Storage

+

API tokens are stored in your home directory in the .penify file. This JSON file contains:

+
{
+
"api_keys": "your-api-token",
+
"llm": { "model": "...", "api_base": "...", "api_key": "..." },
+
"jira": { "url": "...", "username": "...", "api_token": "..." }
+
}
+

+Token Precedence

+
    +
  1. Environment variable PENIFY_API_TOKEN (highest priority)
  2. +
  3. Token in ~/.penify file
  4. +
+

+Command Overview

+
penify
+
├── commit Generate smart commit messages
+
├── config Configure local LLM and JIRA
+
│ ├── llm Configure local LLM settings
+
│ └── jira Configure JIRA integration
+
├── login Log in to Penify account
+
└── docgen Generate code documentation
+
├── install-hook Install Git post-commit hook
+
└── uninstall-hook Remove Git post-commit hook
+

+Commit Message Generation

+

The commit command analyzes your staged changes and generates meaningful commit messages. It can:

+
    +
  • Use a local LLM if configured
  • +
  • Enhance messages with JIRA issue details
  • +
  • Provide both title and description
  • +
+

For specific options and examples, see docs/commit-commands.md.

+

+Code Documentation Generation

+

The docgen command generates documentation for your code:

+

+Use Cases

+
    +
  1. Current Git Diff: Default behavior, documents only changed files
  2. +
  3. Specific File: Pass a file path with -l path/to/file.py
  4. +
  5. Entire Folder: Pass a folder path with -l path/to/folder
  6. +
+

+Authentication Requirement

+

This feature requires authentication with a Penify account. Run penify login before using documentation features.

+

+Configuration Settings

+

Configure local settings using the config command:

+
    +
  • LLM Settings: Configure a local LLM for commit message generation
  • +
  • JIRA Settings: Set up JIRA integration for enhanced commit messages
  • +
+

For detailed configuration options, see docs/config-commands.md.

+

+Git Hooks

+

Penify can install Git hooks to automate documentation generation:

+

+Post-Commit Hook

+
    +
  • Install: penify docgen install-hook
  • +
  • What it does: Automatically generates documentation for changed files after each commit
  • +
  • Uninstall: penify docgen uninstall-hook
  • +
+

+Custom Hook Location

+

You can specify a custom location for Git hooks:

+
penify docgen install-hook -l /path/to/git/repo
+

+Advanced Use Cases

+

+CI/CD Integration

+

For CI/CD pipelines:

+
    +
  1. Set PENIFY_API_TOKEN as an environment variable
  2. +
  3. Run commands without requiring interactive login
  4. +
+

+Remote Repository Documentation

+

Generate documentation for an entire repository:

+
git clone https://github.com/user/repo
+
cd repo
+
penify docgen -l .
+

+Troubleshooting

+

+Common Issues

+
    +
  1. API Key Errors: Ensure you've run penify login or set PENIFY_API_TOKEN
  2. +
  3. LLM Configuration: Check your LLM settings with cat ~/.penify
  4. +
  5. JIRA Integration: Verify JIRA credentials in your configuration
  6. +
+

+Logs

+

For more detailed logs, you can set the environment variable:

+
export PENIFY_DEBUG=1
+

+Support

+

For additional help, visit https://docs.penify.dev/ or contact suppo.nosp@m.rt@p.nosp@m.enify.nosp@m..dev

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html new file mode 100644 index 0000000..3d02237 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Documentation Generation Commands
+
+
+

This document provides a detailed guide to all permutations and combinations of the docgen command, including extensive information about Git hook commands for automating documentation generation.

+

+Table of Contents

+
    +
  • Basic Usage
  • +
  • Command Options
  • +
  • Option Combinations
  • +
  • Git Hook Commands
      +
    • Hook Installation
    • +
    • Hook Customization
    • +
    • Hook Uninstallation
    • +
    +
  • +
  • Advanced Use Cases
  • +
  • Troubleshooting
  • +
+

+Basic Usage

+
penify docgen
+

By default, this command:

    +
  • Analyzes the current Git diff (changes since last commit)
  • +
  • Generates documentation for changed files only
  • +
  • Requires authentication via penify login
  • +
+

+Command Options

+

+<tt>-l, --location</tt>

+

Specify a target for documentation generation:

+
# Generate documentation for a specific file
+
penify docgen -l path/to/file.py
+
+
# Generate documentation for a specific folder
+
penify docgen -l path/to/folder
+

Without this flag, Penify analyzes only Git-tracked modified files.

+

+Subcommands

+

+<tt>install-hook</tt>

+

Install a Git post-commit hook to automatically generate documentation:

+
penify docgen install-hook
+

+<tt>uninstall-hook</tt>

+

Remove the Git post-commit hook:

+
penify docgen uninstall-hook
+

+Option Combinations

+

+Generate Documentation for Current Git Diff

+
# Basic usage - current Git diff
+
penify docgen
+

+Generate Documentation for a Specific File

+
# Single file documentation
+
penify docgen -l src/main.py
+

+Generate Documentation for a Folder

+
# Folder documentation
+
penify docgen -l src/models/
+

+Install Hook in Current Repository

+
# Install hook in current Git repository
+
penify docgen install-hook
+

+Install Hook in Specific Repository

+
# Install hook in a specific Git repository
+
penify docgen install-hook -l /path/to/repo
+

+Uninstall Hook from Current Repository

+
# Uninstall hook from current Git repository
+
penify docgen uninstall-hook
+

+Uninstall Hook from Specific Repository

+
# Uninstall hook from a specific Git repository
+
penify docgen uninstall-hook -l /path/to/repo
+

+Git Hook Commands

+

Penify provides Git hook commands to automate documentation generation as part of your Git workflow.

+

+Hook Installation

+

+How Hooks Work

+

When you install a Git hook with penify docgen install-hook, Penify:

+
    +
  1. Creates a post-commit hook script in the .git/hooks directory
  2. +
  3. Makes the script executable
  4. +
  5. Configures the hook to run penify docgen after each commit
  6. +
+

+Hook Script Content

+

The generated post-commit hook contains:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
penify docgen -gf /path/to/git/repository -t your_api_token
+

+Installation Location

+

By default, hooks are installed in the current Git repository. You can specify a different location:

+
penify docgen install-hook -l /path/to/repo
+

+Installation Requirements

+

To install hooks, you need:

    +
  • A valid Penify API token (login first with penify login)
  • +
  • Write permissions to the .git/hooks directory
  • +
+

+Verifying Installation

+

After installation, you can verify that the hook is installed:

+
cat .git/hooks/post-commit
+

+Hook Customization

+

You can customize the post-commit hook after installation:

+

+Modifying Hook Behavior

+
    +
  1. Edit the .git/hooks/post-commit file
  2. +
  3. Add additional options to the penify docgen command
  4. +
  5. Add other commands to run after commit
  6. +
+

Example of a customized hook:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
# Generate documentation
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
+
# Additional custom commands
+
echo "Documentation generation complete!"
+

+Advanced Hook Scenarios

+

Conditional Documentation Generation:

+
#!/bin/sh
+
# Only generate documentation for commits to the main branch
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
+
if [ "$BRANCH" = "main" ]; then
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
fi
+

Documenting Specific Files/Folders:

+
#!/bin/sh
+
# Only document Python files in the src directory
+
penify docgen -l src/ -gf /path/to/git/repository -t your_api_token
+

+Hook Uninstallation

+

+Standard Uninstallation

+

To remove a hook from the current repository:

+
penify docgen uninstall-hook
+

+Specific Repository Uninstallation

+

To remove a hook from a specific repository:

+
penify docgen uninstall-hook -l /path/to/repo
+

+Manual Hook Removal

+

If needed, you can manually remove the hook:

+
rm .git/hooks/post-commit
+

+Verifying Uninstallation

+

Check that the hook was successfully removed:

+
ls -la .git/hooks/post-commit # Should return "No such file or directory"
+

+Advanced Use Cases

+

+Continuous Integration

+

Run documentation generation in CI pipelines:

+
# In your CI script
+
export PENIFY_API_TOKEN=your_api_token
+
penify docgen -l src/
+

+Batch Documentation

+

Generate documentation for multiple repositories:

+
# Bash script for batch documentation
+
for repo in repo1 repo2 repo3; do
+
cd /path/to/$repo
+
penify docgen -l .
+
done
+

+Custom Git Hook Integration

+

Integrate with other Git hooks:

+
# In .git/hooks/pre-push
+
penify docgen -l src/
+

+Documenting Release Tags

+

Generate documentation when creating a release tag:

+
# Document everything when creating a tag
+
git tag -a v1.0.0
+
penify docgen -l . # Document entire codebase
+
git commit --amend -m "Release v1.0.0 with updated documentation"
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Authentication required"**
      +
    • Run penify login before using documentation features
    • +
    • Check your API token with cat ~/.penify
    • +
    +
  2. +
  3. **"Permission denied when installing hook"**
      +
    • Check Git repository permissions
    • +
    • Try running with sudo (if appropriate for your environment)
    • +
    • Ensure the .git/hooks directory exists
    • +
    +
  4. +
  5. **"Hook installed but not running"**
      +
    • Check if the hook is executable: ls -la .git/hooks/post-commit
    • +
    • Make it executable if needed: chmod +x .git/hooks/post-commit
    • +
    • Check for syntax errors in the hook script
    • +
    +
  6. +
  7. **"File or directory not found"**
      +
    • Verify the path provided to the -l option
    • +
    • Ensure you're running the command from the correct directory
    • +
    +
  8. +
  9. **"Hook uninstallation failed"**
      +
    • Check permissions on the .git/hooks directory
    • +
    • Try manual removal: rm .git/hooks/post-commit
    • +
    +
  10. +
+

+Debugging

+

For detailed output when running documentation commands:

+
export PENIFY_DEBUG=1
+
penify docgen -l src/
+

+Getting Help

+

For command-specific help:

+
penify docgen --help
+
penify docgen install-hook --help
+
penify docgen uninstall-hook --help
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html new file mode 100644 index 0000000..ab35bd4 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Example Workflows
+
+
+

This document demonstrates how to use Penify CLI in real-world development workflows to improve your productivity.

+

+Workflow 1: Efficient Git Commits with AI

+

+Setup

+

First, configure your local LLM for offline operation:

+
penify config llm
+

Configure your JIRA integration for enhanced commit messages:

+
penify config jira
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. When ready to commit, use Penify to generate a smart commit message:
  4. +
+
penify commit
+
    +
  1. Review and confirm the generated commit message
  2. +
  3. Git commit and push as usual
  4. +
+

+Benefits

+
    +
  • Consistent and descriptive commit messages
  • +
  • Automatic inclusion of relevant JIRA ticket information
  • +
  • Time saved from writing detailed commit messages
  • +
+

+Workflow 2: Documentation Generation Pipeline

+

+Setup

+

Login to Penify to access advanced documentation features:

+
penify login
+

Install the Git hook for automatic documentation generation:

+
penify docgen install-hook
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. Commit your changes
  4. +
  5. Documentation is automatically generated for changed files
  6. +
  7. Review the generated documentation
  8. +
+

+Manual Documentation

+

For specific files or folders:

+
penify docgen -l src/components/authentication
+

+Benefits

+
    +
  • Always up-to-date documentation
  • +
  • Consistent documentation style
  • +
  • Time saved from writing detailed documentation
  • +
+

+Workflow 3: Code Review Enhancement

+

+Setup

+

Ensure you're logged into Penify:

+
penify login
+

+Workflow

+
    +
  1. Before submitting a PR, generate documentation for changed files:
  2. +
+
penify docgen
+
    +
  1. Include the generated documentation in your PR
  2. +
  3. Reviewers can better understand your changes with the AI-generated explanations
  4. +
+

+Benefits

+
    +
  • Improved PR quality
  • +
  • Faster code reviews
  • +
  • Better team understanding of code changes
  • +
+

+Workflow 4: Onboarding New Team Members

+

+For Team Leads

+

Generate comprehensive documentation for the entire codebase:

+
penify docgen -l .
+

+For New Team Members

+

Generate focused documentation for components you're working on:

+
penify docgen -l src/components/my-feature
+

+Benefits

+
    +
  • Faster onboarding
  • +
  • Better understanding of code structure
  • +
  • Reduced questions to senior team members
  • +
+

+Workflow 5: Legacy Code Understanding

+

When working with unfamiliar legacy code:

+
# Document a specific complex file
+
penify docgen -l src/legacy/complex_module.py
+
+
# Document an entire legacy component
+
penify docgen -l src/legacy/old_component
+

+Benefits

+
    +
  • Quickly understand complex legacy systems
  • +
  • Reduce time spent deciphering undocumented code
  • +
  • Make safer changes to legacy systems
  • +
+
+
+
+ + + + + diff --git a/docs/html/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..818b859 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,135 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js new file mode 100644 index 0000000..314c51a --- /dev/null +++ b/docs/html/menudata.js @@ -0,0 +1,117 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"u",url:"namespacemembers.html#index_u"}, +{text:"v",url:"namespacemembers.html#index_v"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"f",url:"namespacemembers_func.html#index_f"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"h",url:"namespacemembers_func.html#index_h"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"s",url:"namespacemembers_func.html#index_s"}, +{text:"t",url:"namespacemembers_func.html#index_t"}, +{text:"u",url:"namespacemembers_func.html#index_u"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"p",url:"namespacemembers_vars.html#index_p"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"u",url:"namespacemembers_vars.html#index_u"}, +{text:"v",url:"namespacemembers_vars.html#index_v"}, +{text:"w",url:"namespacemembers_vars.html#index_w"}]}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__5F"}, +{text:"a",url:"functions_func.html#index_a"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 0000000..03db0a5 --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html new file mode 100644 index 0000000..cbb9e0c --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html new file mode 100644 index 0000000..a3a22d5 --- /dev/null +++ b/docs/html/namespacemembers_vars.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - c -

      +
    • classifiers : setup
    • +
    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - n -

    + + +

    - p -

    + + +

    - s -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.html b/docs/html/namespacepenify__hook.html new file mode 100644 index 0000000..bca23f7 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  api_client
     
    namespace  base_analyzer
     
    namespace  commands
     
    namespace  commit_analyzer
     
    namespace  config_command
     
    namespace  constants
     
    namespace  file_analyzer
     
    namespace  folder_analyzer
     
    namespace  git_analyzer
     
    namespace  jira_client
     
    namespace  llm_client
     
    namespace  login_command
     
    namespace  main
     
    namespace  ui_utils
     
    namespace  utils
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.js b/docs/html/namespacepenify__hook.js new file mode 100644 index 0000000..3344578 --- /dev/null +++ b/docs/html/namespacepenify__hook.js @@ -0,0 +1,56 @@ +var namespacepenify__hook = +[ + [ "api_client", "namespacepenify__hook_1_1api__client.html", "namespacepenify__hook_1_1api__client" ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", "namespacepenify__hook_1_1base__analyzer" ], + [ "commands", "namespacepenify__hook_1_1commands.html", "namespacepenify__hook_1_1commands" ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", "namespacepenify__hook_1_1commit__analyzer" ], + [ "config_command", "namespacepenify__hook_1_1config__command.html", [ + [ "handle_config", "namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e", null ] + ] ], + [ "constants", "namespacepenify__hook_1_1constants.html", [ + [ "API_URL", "namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0", null ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", "namespacepenify__hook_1_1file__analyzer" ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", "namespacepenify__hook_1_1folder__analyzer" ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", "namespacepenify__hook_1_1git__analyzer" ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", "namespacepenify__hook_1_1jira__client" ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", "namespacepenify__hook_1_1llm__client" ], + [ "login_command", "namespacepenify__hook_1_1login__command.html", [ + [ "handle_login", "namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a", null ] + ] ], + [ "main", "namespacepenify__hook_1_1main.html", [ + [ "main", "namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] + ] ], + [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [ + [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", "namespacepenify__hook_1_1utils" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1api__client.html b/docs/html/namespacepenify__hook_1_1api__client.html new file mode 100644 index 0000000..7614a0c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.api_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  APIClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1api__client.js b/docs/html/namespacepenify__hook_1_1api__client.js new file mode 100644 index 0000000..fb9b017 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1api__client = +[ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.html b/docs/html/namespacepenify__hook_1_1base__analyzer.html new file mode 100644 index 0000000..06db35f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.base_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  BaseAnalyzer
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.js b/docs/html/namespacepenify__hook_1_1base__analyzer.js new file mode 100644 index 0000000..6701f69 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1base__analyzer = +[ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands.html b/docs/html/namespacepenify__hook_1_1commands.html new file mode 100644 index 0000000..83a7972 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  auth_commands
     
    namespace  commit_commands
     
    namespace  config_commands
     
    namespace  doc_commands
     
    namespace  hook_commands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands.js b/docs/html/namespacepenify__hook_1_1commands.js new file mode 100644 index 0000000..28e70f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.js @@ -0,0 +1,38 @@ +var namespacepenify__hook_1_1commands = +[ + [ "auth_commands", "namespacepenify__hook_1_1commands_1_1auth__commands.html", [ + [ "login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] + ] ], + [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [ + [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] + ] ], + [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [ + [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880", null ] + ] ], + [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [ + [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948", null ] + ] ], + [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [ + [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html new file mode 100644 index 0000000..ace4712 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.auth_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def save_credentials (api_key)
     
    def login (api_url, dashboard_url)
     
    +

    Function Documentation

    + +

    ◆ login()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.auth_commands.login ( api_url,
     dashboard_url 
    )
    +
    +
    Open the login page in a web browser and capture the token via redirect.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_credentials()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.auth_commands.save_credentials ( api_key)
    +
    +
    Save the API key in a priority-based manner.
    +
    +This function attempts to save the API key in two locations, based on priority:
    +1. In a `.env` file located in the root of the Git repository if one is found.
    +2. In a global `.penify` file located in the user's home directory as a
    +fallback.  The function first tries to locate the Git repository using
    +`recursive_search_git_folder`. If a Git repository is found, it reads the
    +existing `.env` file (if present), updates or adds the API key under the key
    +`PENIFY_API_TOKEN`, and writes the updated content back. If any error occurs
    +during this process, it falls back to saving the credentials in the global
    +`.penify` file. The function handles exceptions and prints appropriate error
    +messages.
    +
    +Args:
    +    api_key (str): The API key to save.
    +
    +Returns:
    +    bool: True if the API key is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map new file mode 100644 index 0000000..966bdbb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 new file mode 100644 index 0000000..3843ca4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 @@ -0,0 +1 @@ +8ad325585e8efe43cb16f6c7070d7d0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg new file mode 100644 index 0000000..50d45ea --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg new file mode 100644 index 0000000..964fd40 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map new file mode 100644 index 0000000..88a6ff8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 new file mode 100644 index 0000000..a7db012 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 @@ -0,0 +1 @@ +65e495614449516908c997067ca3d2d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg new file mode 100644 index 0000000..028514f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg new file mode 100644 index 0000000..a07bb01 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map new file mode 100644 index 0000000..5c0b505 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 new file mode 100644 index 0000000..17fadc1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 @@ -0,0 +1 @@ +31a51591f0a8f9ef897c4a08daac5829 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg new file mode 100644 index 0000000..e40984b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map new file mode 100644 index 0000000..c6d1bd8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 new file mode 100644 index 0000000..051c10c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 @@ -0,0 +1 @@ +ec7d7c899a70e1c68057353448e9a6d9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg new file mode 100644 index 0000000..7d1c3a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg new file mode 100644 index 0000000..8ab520a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg @@ -0,0 +1,76 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html new file mode 100644 index 0000000..50e13a2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.commit_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    def commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
     
    def setup_commit_parser (parser)
     
    def handle_commit (args)
     
    +

    Function Documentation

    + +

    ◆ commit_code()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.commit_commands.commit_code ( api_url,
     token,
     message,
     open_terminal,
     generate_description,
     llm_model = None,
     llm_api_base = None,
     llm_api_key = None,
     jira_url = None,
     jira_user = None,
     jira_api_token = None 
    )
    +
    +
    Enhance Git commits with AI-powered commit messages.
    +
    +This function allows for the generation of enhanced commit messages using
    +natural language processing models and optionally integrates with JIRA for
    +additional context. It processes the current Git folder to find relevant files
    +and generates a detailed commit message based on the provided parameters.
    +
    +Args:
    +    api_url (str): URL of the API endpoint.
    +    token (str): Authentication token for the API.
    +    message (str): Initial commit message provided by the user.
    +    open_terminal (bool): Whether to open the terminal after committing.
    +    generate_description (bool): Whether to generate a detailed description in the commit message.
    +    llm_model (str?): The language model to use for generating the commit message. Defaults to None.
    +    llm_api_base (str?): Base URL of the LLM API. Defaults to None.
    +    llm_api_key (str?): API key for accessing the LLM service. Defaults to None.
    +    jira_url (str?): URL of the JIRA instance. Defaults to None.
    +    jira_user (str?): Username for authenticating with JIRA. Defaults to None.
    +    jira_api_token (str?): API token for accessing JIRA. Defaults to None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_commit()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.commit_commands.handle_commit ( args)
    +
    +
    Handle commit functionality by processing arguments and invoking the
    +appropriate commands.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_commit_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.commit_commands.setup_commit_parser ( parser)
    +
    +
    Sets up an argument parser for generating smart commit messages.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map new file mode 100644 index 0000000..9d410b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 new file mode 100644 index 0000000..f0df322 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 @@ -0,0 +1 @@ +ebbb356587ab923660dadd713f529935 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg new file mode 100644 index 0000000..1a0e3d8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg new file mode 100644 index 0000000..602876a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map new file mode 100644 index 0000000..45d80f3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 new file mode 100644 index 0000000..30b2f36 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 @@ -0,0 +1 @@ +b42af33551c96c0ccabd26bf5dac7901 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg new file mode 100644 index 0000000..ec9d033 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg new file mode 100644 index 0000000..c3b9bf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg @@ -0,0 +1,146 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map new file mode 100644 index 0000000..f16a071 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 new file mode 100644 index 0000000..c49ca59 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 @@ -0,0 +1 @@ +9d31c6bce57180d0019639c06f0a64c6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg new file mode 100644 index 0000000..e254716 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.setup_commit_parser + + + +Node1 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map new file mode 100644 index 0000000..2910728 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 new file mode 100644 index 0000000..9c1af92 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 @@ -0,0 +1 @@ +76b990698c4e374b742a1a611bfd524b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg new file mode 100644 index 0000000..7ad44ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg new file mode 100644 index 0000000..bd1b9a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg @@ -0,0 +1,300 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map new file mode 100644 index 0000000..d25f3e9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 new file mode 100644 index 0000000..47a6cde --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 @@ -0,0 +1 @@ +a8800179f1f560b476cc721ea33d08f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg new file mode 100644 index 0000000..c57863f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html new file mode 100644 index 0000000..27e838b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,568 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.config_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    None load_env_files ()
     
    Path get_penify_config ()
     
    Any get_env_var_or_default (str env_var, Any default=None)
     
    def save_llm_config (model, api_base, api_key)
     
    def save_jira_config (url, username, api_token)
     
    Dict[str, str] get_llm_config ()
     
    Dict[str, str] get_jira_config ()
     
    def config_llm_web ()
     
    def config_jira_web ()
     
    Optional[str] get_token ()
     
    + + + + + +

    +Variables

    bool DOTENV_AVAILABLE = True
     
     path
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

    + +
    +
    + + + + + + + +
    def penify_hook.commands.config_commands.config_jira_web ()
    +
    +
    Starts a web server for configuring JIRA settings.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ config_llm_web()

    + +
    +
    + + + + + + + +
    def penify_hook.commands.config_commands.config_llm_web ()
    +
    +
    Starts an HTTP server for configuring LLM settings via a web interface.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_env_var_or_default()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Any penify_hook.commands.config_commands.get_env_var_or_default (str env_var,
    Any  default = None 
    )
    +
    +
    Get environment variable or return default value.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_jira_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_jira_config ()
    +
    +
    Retrieve JIRA configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_llm_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_llm_config ()
    +
    +
    Retrieve LLM configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_penify_config()

    + +
    +
    + + + + + + + +
    Path penify_hook.commands.config_commands.get_penify_config ()
    +
    +
    Returns the path to the `config.json` file within the `.penify` directory,
    +creating it if necessary.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_token()

    + +
    +
    + + + + + + + +
    Optional[str] penify_hook.commands.config_commands.get_token ()
    +
    +
    Retrieves an API token using a prioritized method.
    +
    +This function first attempts to load environment variables from all `.env`
    +files and checks if the `PENIFY_API_TOKEN` environment variable is set. If
    +found, it returns the token. If not, it looks for the API key in a
    +configuration file named 'api_keys'. If both methods fail, it returns None.
    +
    +Returns:
    +    str or None: The API token if found, otherwise None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ load_env_files()

    + +
    +
    + + + + + + + +
    None penify_hook.commands.config_commands.load_env_files ()
    +
    +
    Load environment variables from .env files in various locations with proper
    +priority.
    +
    +This function loads environment variables from .env files located in different
    +directories, prioritizing the current directory over the Git repo root and the
    +user home directory. The loading process ensures that later files override
    +earlier ones.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_jira_config()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_jira_config ( url,
     username,
     api_token 
    )
    +
    +
    Save JIRA configuration settings to a .env file.
    +
    +This function saves JIRA configuration following these steps: 1. Determine the
    +target .env file location based on whether the current directory is inside a
    +Git repository. 2. If inside a Git repo, use the Git repo root's .env file;
    +otherwise, use the user home directory's .env file. 3. Read the existing
    +content of the .env file (if it exists) to preserve other settings. 4. Update
    +the .env content with the new JIRA configuration. 5. Write the updated content
    +back to the .env file. 6. Optionally, reload environment variables to make
    +changes immediately available.
    +
    +Args:
    +    url (str): The JIRA URL to be saved in the .env file.
    +    username (str): The JIRA username to be saved in the .env file.
    +    api_token (str): The JIRA API token to be saved in the .env file.
    +
    +Returns:
    +    bool: True if the configuration was successfully saved, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_llm_config()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_llm_config ( model,
     api_base,
     api_key 
    )
    +
    +
    Save LLM configuration settings to an .env file.
    +
    +This function saves the LLM configuration following a specific priority: 1. Git
    +repo root .env (if inside a git repo) 2. User home directory .env  It handles
    +the detection of the Git repo root, reads the existing .env content, updates it
    +with the new LLM configuration, and writes it back to the file. It also reloads
    +the environment variables to make changes immediately available.
    +
    +Args:
    +    model (str): The name of the language model.
    +    api_base (str): The base URL for the API.
    +    api_key (str): The API key for authentication.
    +
    +Returns:
    +    bool: True if the configuration is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.commands.config_commands.DOTENV_AVAILABLE = True
    +
    + +
    +
    + +

    ◆ path

    + +
    +
    + + + + +
    penify_hook.commands.config_commands.path
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map new file mode 100644 index 0000000..3d04ded --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 new file mode 100644 index 0000000..8a855e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 @@ -0,0 +1 @@ +168858f3e9d4759f99db4c52c229e797 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg new file mode 100644 index 0000000..fb362e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg new file mode 100644 index 0000000..3cc35c6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map new file mode 100644 index 0000000..31799e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 new file mode 100644 index 0000000..3595ee0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 @@ -0,0 +1 @@ +543187d5c63c1c460ff6dd5d57c6a646 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg new file mode 100644 index 0000000..b03c3d5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg new file mode 100644 index 0000000..9f5c40f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg @@ -0,0 +1,149 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map new file mode 100644 index 0000000..6bb067d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 new file mode 100644 index 0000000..fd6eb21 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 @@ -0,0 +1 @@ +91a6c2c6a25f3c8c1d38cd6f5f5c3f25 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg new file mode 100644 index 0000000..ece71b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg new file mode 100644 index 0000000..3ab7894 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map new file mode 100644 index 0000000..988f965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 new file mode 100644 index 0000000..f9c067a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 @@ -0,0 +1 @@ +78a315f2a9f5ef12496dc5b4a1f2f578 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg new file mode 100644 index 0000000..af8bba2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg new file mode 100644 index 0000000..5dd38f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg @@ -0,0 +1,398 @@ + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map new file mode 100644 index 0000000..523e618 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 new file mode 100644 index 0000000..1d6bd9c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 @@ -0,0 +1 @@ +1312bc7ffa0a3c4b3d914591e46647ea \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg new file mode 100644 index 0000000..6772dc2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map new file mode 100644 index 0000000..0a1bd6e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 new file mode 100644 index 0000000..4427799 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 @@ -0,0 +1 @@ +64e3e5d1614b987e9beaa7b1002e49e6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg new file mode 100644 index 0000000..7653ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg new file mode 100644 index 0000000..4779598 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg @@ -0,0 +1,94 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map new file mode 100644 index 0000000..8a89956 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 new file mode 100644 index 0000000..47f24a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 @@ -0,0 +1 @@ +e227b3587529f3c7fa14501fb496ccc8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg new file mode 100644 index 0000000..af6abf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg new file mode 100644 index 0000000..0cd794d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg @@ -0,0 +1,106 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map new file mode 100644 index 0000000..27e33e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 new file mode 100644 index 0000000..5a5a866 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 @@ -0,0 +1 @@ +9c6b048bd5412b617ea890b1f88c2104 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg new file mode 100644 index 0000000..6b05345 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg new file mode 100644 index 0000000..8a0f76b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg @@ -0,0 +1,214 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map new file mode 100644 index 0000000..55fc422 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 new file mode 100644 index 0000000..c4b9ce2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 @@ -0,0 +1 @@ +67c138c843a1f5d8ab7592c326643328 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg new file mode 100644 index 0000000..aa2fbc9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg new file mode 100644 index 0000000..4b9759c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map new file mode 100644 index 0000000..11e9843 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 new file mode 100644 index 0000000..280df61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 @@ -0,0 +1 @@ +32e055c0ae757bbecf2b86db164d29df \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg new file mode 100644 index 0000000..2e5a94a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg new file mode 100644 index 0000000..7c7fba4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg @@ -0,0 +1,128 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map new file mode 100644 index 0000000..a9f72bb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 new file mode 100644 index 0000000..6643612 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 @@ -0,0 +1 @@ +69777adad7caeabd935b90d3f0ca21e8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg new file mode 100644 index 0000000..26a2c27 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map new file mode 100644 index 0000000..9de687d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 new file mode 100644 index 0000000..3e643ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 @@ -0,0 +1 @@ +4f8f2c5d878438fd8fa2e1f0ca1dbc52 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg new file mode 100644 index 0000000..9a839f1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg new file mode 100644 index 0000000..a6f9814 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg @@ -0,0 +1,264 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map new file mode 100644 index 0000000..85cba52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 new file mode 100644 index 0000000..26009b0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 @@ -0,0 +1 @@ +91b1c0b60f8171163e43b782cfdc5e4b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg new file mode 100644 index 0000000..5ed2818 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg @@ -0,0 +1,51 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map new file mode 100644 index 0000000..d99de6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 new file mode 100644 index 0000000..a2245b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 @@ -0,0 +1 @@ +e208c1be2bea05a2824626f2971c2bf3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg new file mode 100644 index 0000000..e4f35a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg new file mode 100644 index 0000000..a264e4b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg @@ -0,0 +1,403 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map new file mode 100644 index 0000000..66dc072 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 new file mode 100644 index 0000000..9c2e575 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 @@ -0,0 +1 @@ +68e4fb55d25659f523e8547c8cb01464 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg new file mode 100644 index 0000000..d2e2758 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map new file mode 100644 index 0000000..c80d943 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 new file mode 100644 index 0000000..1f53baa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 @@ -0,0 +1 @@ +d1ffd3debe0bd71ea914f1dd47c727ad \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg new file mode 100644 index 0000000..359799d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg new file mode 100644 index 0000000..d5eb5c0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg @@ -0,0 +1,116 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map new file mode 100644 index 0000000..f9b2f55 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 new file mode 100644 index 0000000..7795142 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 @@ -0,0 +1 @@ +e83a80d18918d47faae41628fcd92c7a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg new file mode 100644 index 0000000..5211cae --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg new file mode 100644 index 0000000..d7f7ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg @@ -0,0 +1,122 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map new file mode 100644 index 0000000..fc35b2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 new file mode 100644 index 0000000..166f9b7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 @@ -0,0 +1 @@ +e627346d77982130e6685bfc2c553220 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg new file mode 100644 index 0000000..b4cc55b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg new file mode 100644 index 0000000..72fd941 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html new file mode 100644 index 0000000..58e82c0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.doc_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    def generate_doc (api_url, token, location=None)
     
    def setup_docgen_parser (parser)
     
    def handle_docgen (args)
     
    + + + +

    +Variables

    string docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.doc_commands.generate_doc ( api_url,
     token,
     location = None 
    )
    +
    +
    Generates documentation based on the given parameters.
    +
    +This function initializes an API client using the provided API URL and token.
    +It then generates documentation by analyzing the specified location, which can
    +be a folder, a file, or the current working directory if no location is
    +provided. The function handles different types of analysis based on the input
    +location and reports any errors encountered during the process.
    +
    +Args:
    +    api_url (str): The URL of the API to connect to for documentation generation.
    +    token (str): The authentication token for accessing the API.
    +    location (str?): The path to a specific file or folder to analyze. If not provided,
    +        the current working directory is used.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_docgen()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.doc_commands.handle_docgen ( args)
    +
    +
    Handle document generation and hook management based on subcommands.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_docgen_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.doc_commands.setup_docgen_parser ( parser)
    +
    +
    Configure a parser for generating documentation using Git commands.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ docgen_description

    + +
    +
    + + + + +
    string penify_hook.commands.doc_commands.docgen_description
    +
    +Initial value:
    1= """Generate code documentation using Penify.
    +
    2
    +
    3This command requires you to be logged in to your Penify account.
    +
    4You can generate documentation for:
    +
    5- Current Git diff (default)
    +
    6- Specific file
    +
    7- Specific folder
    +
    8"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map new file mode 100644 index 0000000..2c0a565 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 new file mode 100644 index 0000000..472a430 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 @@ -0,0 +1 @@ +d7ee1e07127beb9f489b974a61acce5d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg new file mode 100644 index 0000000..9ea3b5d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg new file mode 100644 index 0000000..838bb12 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg @@ -0,0 +1,170 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map new file mode 100644 index 0000000..37a65e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 new file mode 100644 index 0000000..9d429ee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 @@ -0,0 +1 @@ +ed70390d069e80c493faf1a14a7c6fff \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg new file mode 100644 index 0000000..6790fe4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg @@ -0,0 +1,108 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node1->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node1->Node6 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map new file mode 100644 index 0000000..3084ab9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 new file mode 100644 index 0000000..171b82e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 @@ -0,0 +1 @@ +5e9faa5a79a60188abcf0c90efae69aa \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg new file mode 100644 index 0000000..c5131ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg new file mode 100644 index 0000000..4cf4b48 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg @@ -0,0 +1,221 @@ + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map new file mode 100644 index 0000000..0ee99eb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 new file mode 100644 index 0000000..0dc7e32 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 @@ -0,0 +1 @@ +0fa78969e5f8672d0da52972dd124680 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg new file mode 100644 index 0000000..998d629 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.doc_commands.setup_docgen_parser + + + +Node1 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html new file mode 100644 index 0000000..93bf695 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.hook_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def install_git_hook (location, token)
     
    def uninstall_git_hook (location)
     
    + + + + + +

    +Variables

    string HOOK_FILENAME = "post-commit"
     
    string HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.hook_commands.install_git_hook ( location,
     token 
    )
    +
    +
    Install a post-commit Git hook that generates documentation for changed files.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ uninstall_git_hook()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.hook_commands.uninstall_git_hook ( location)
    +
    +
    Uninstalls the post-commit hook from the specified location.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

    + +
    +
    + + + + +
    string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
    +
    + +
    +
    + +

    ◆ HOOK_TEMPLATE

    + +
    +
    + + + + +
    string penify_hook.commands.hook_commands.HOOK_TEMPLATE
    +
    +Initial value:
    1= """#!/bin/sh
    +
    2# This is a post-commit hook generated by penify.
    +
    3# Automatically generates documentation for changed files after each commit.
    +
    4
    +
    5penify docgen -gf {git_folder_path} -t {token}
    +
    6"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map new file mode 100644 index 0000000..ea3d3f4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 new file mode 100644 index 0000000..197f108 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 @@ -0,0 +1 @@ +25f36344702d0e8ec428aac2f670078e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg new file mode 100644 index 0000000..a399555 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg new file mode 100644 index 0000000..6068928 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map new file mode 100644 index 0000000..16920b6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 new file mode 100644 index 0000000..333d2ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 @@ -0,0 +1 @@ +3ec2e3ff4462cc865b4cb6fd3a62753d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg new file mode 100644 index 0000000..ebcff0a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg new file mode 100644 index 0000000..8141220 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.html b/docs/html/namespacepenify__hook_1_1commit__analyzer.html new file mode 100644 index 0000000..79a94c3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commit_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  CommitDocGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.js b/docs/html/namespacepenify__hook_1_1commit__analyzer.js new file mode 100644 index 0000000..da2cbba --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1commit__analyzer = +[ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command.html b/docs/html/namespacepenify__hook_1_1config__command.html new file mode 100644 index 0000000..c80bd9a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.config_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_config_parser (parent_parser)
     
    def handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.handle_config ( args)
    +
    +
    Handle configuration settings based on the specified config type.
    +
    +This function processes different types of configurations such as LLM (Language
    +Model) and JIRA. It saves configurations, sets up web-based configurations, and
    +verifies JIRA connections. Depending on the `args.config_type`, it imports
    +necessary modules, handles configuration saving or setup, and optionally
    +verifies JIRA connectivity.
    +
    +Args:
    +    args (argparse.Namespace): Command-line arguments containing the type of configuration to handle.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_config_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.setup_config_parser ( parent_parser)
    +
    +
    Set up configuration parsers with subcommands for LLM and JIRA settings.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map new file mode 100644 index 0000000..5262513 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 new file mode 100644 index 0000000..1e009e6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 @@ -0,0 +1 @@ +4f75720d323fed0e1cf98ec14ae8f6e9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg new file mode 100644 index 0000000..7daaddc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg new file mode 100644 index 0000000..2707803 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg @@ -0,0 +1,182 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map new file mode 100644 index 0000000..b702a42 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 new file mode 100644 index 0000000..a09bdd4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 @@ -0,0 +1 @@ +f35e472a3767aa0a0b09219e96174cf9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg new file mode 100644 index 0000000..cafcc47 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map new file mode 100644 index 0000000..f0c2ef3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 new file mode 100644 index 0000000..48311b5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 @@ -0,0 +1 @@ +a17b5eb406ca6a74de12d7201d9bcee7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg new file mode 100644 index 0000000..edae0c9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.config_command.setup_config_parser + + + +Node1 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1constants.html b/docs/html/namespacepenify__hook_1_1constants.html new file mode 100644 index 0000000..c045bf4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.constants Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.constants Namespace Reference
    +
    +
    + + + + + + +

    +Variables

    string API_URL = 'http://localhost:8000/api'
     
    string DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
     
    +

    Variable Documentation

    + +

    ◆ API_URL

    + +
    +
    + + + + +
    string penify_hook.constants.API_URL = 'http://localhost:8000/api'
    +
    + +
    +
    + +

    ◆ DASHBOARD_URL

    + +
    +
    + + + + +
    string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.html b/docs/html/namespacepenify__hook_1_1file__analyzer.html new file mode 100644 index 0000000..82f9557 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.file_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FileAnalyzerGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.file_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.js b/docs/html/namespacepenify__hook_1_1file__analyzer.js new file mode 100644 index 0000000..2fd7c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1file__analyzer = +[ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.html b/docs/html/namespacepenify__hook_1_1folder__analyzer.html new file mode 100644 index 0000000..e3b56fb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.folder_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FolderAnalyzerGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.js b/docs/html/namespacepenify__hook_1_1folder__analyzer.js new file mode 100644 index 0000000..01d86ca --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1folder__analyzer = +[ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.html b/docs/html/namespacepenify__hook_1_1git__analyzer.html new file mode 100644 index 0000000..fa71d5f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.git_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitDocGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.git_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.js b/docs/html/namespacepenify__hook_1_1git__analyzer.js new file mode 100644 index 0000000..d89c507 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1git__analyzer = +[ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "logger", "namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1jira__client.html b/docs/html/namespacepenify__hook_1_1jira__client.html new file mode 100644 index 0000000..cfae7dc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.jira_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  JiraClient
     
    + + + +

    +Variables

    bool JIRA_AVAILABLE = True
     
    +

    Variable Documentation

    + +

    ◆ JIRA_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.jira_client.JIRA_AVAILABLE = True
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1jira__client.js b/docs/html/namespacepenify__hook_1_1jira__client.js new file mode 100644 index 0000000..824018c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1jira__client = +[ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1llm__client.html b/docs/html/namespacepenify__hook_1_1llm__client.html new file mode 100644 index 0000000..e233571 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.llm_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  LLMClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1llm__client.js b/docs/html/namespacepenify__hook_1_1llm__client.js new file mode 100644 index 0000000..9f99a1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1llm__client = +[ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command.html b/docs/html/namespacepenify__hook_1_1login__command.html new file mode 100644 index 0000000..9e412df --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.login_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_login_parser (parser)
     
    def handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.handle_login ( args)
    +
    +
    Initiates a user login process using predefined constants and the `login`
    +function.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_login_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.setup_login_parser ( parser)
    +
    +
    Set up command-line arguments for login.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map new file mode 100644 index 0000000..e39c064 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 new file mode 100644 index 0000000..2daae41 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 @@ -0,0 +1 @@ +34cbd1a77d726e3937d67455d405b0ba \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg new file mode 100644 index 0000000..84d1c1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.setup_login_parser + + + +Node1 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map new file mode 100644 index 0000000..dd44b98 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 new file mode 100644 index 0000000..ad91965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 @@ -0,0 +1 @@ +6a1ceeef99a0101ba5882e9e71fa9bce \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg new file mode 100644 index 0000000..23caccd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg new file mode 100644 index 0000000..97e0e2a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map new file mode 100644 index 0000000..74fa8c7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 new file mode 100644 index 0000000..7a114f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 @@ -0,0 +1 @@ +1f6ec32e02e9919f90ba1a6a23743cb6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg new file mode 100644 index 0000000..88bfdb9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main.html b/docs/html/namespacepenify__hook_1_1main.html new file mode 100644 index 0000000..6dbf6d1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.main Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.main Namespace Reference
    +
    +
    + + + + +

    +Functions

    def main ()
     
    +

    Function Documentation

    + +

    ◆ main()

    + +
    +
    + + + + + + + +
    def penify_hook.main.main ()
    +
    +
    Main function to handle command-line interface (CLI) interactions with Penify
    +services.
    +
    +This tool provides a command-line interface for generating smart commit
    +messages, configuring local-LLM and JIRA, and generating code documentation. It
    +supports basic commands that do not require login and advanced commands that
    +require user authentication. The `--version` flag can be used to display the
    +version information.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map new file mode 100644 index 0000000..5c35b70 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 new file mode 100644 index 0000000..304cb74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 @@ -0,0 +1 @@ +73631f13dbb5d5f90aafdead88d96c1c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg new file mode 100644 index 0000000..eed8f52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg @@ -0,0 +1,708 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg new file mode 100644 index 0000000..4199d83 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg @@ -0,0 +1,620 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map new file mode 100644 index 0000000..3aaa58c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 new file mode 100644 index 0000000..4bf17ac --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 @@ -0,0 +1 @@ +3a9435159e82b3293bbcf47f41f2b41c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg new file mode 100644 index 0000000..5001f6b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg @@ -0,0 +1,28 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils.html b/docs/html/namespacepenify__hook_1_1ui__utils.html new file mode 100644 index 0000000..ae8db6c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,796 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.ui_utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.ui_utils Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def format_info (message)
     
    def format_success (message)
     
    def format_warning (message)
     
    def format_error (message)
     
    def format_highlight (message)
     
    def format_file_path (file_path)
     
    def print_info (message)
     
    def print_success (message)
     
    def print_warning (message)
     
    def print_error (message)
     
    def print_processing (file_path)
     
    def print_status (status, message)
     
    def create_progress_bar (total, desc="Processing", unit="item")
     
    def create_stage_progress_bar (stages, desc="Processing")
     
    def update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     autoreset
     
     INFO_COLOR = Fore.CYAN
     
     SUCCESS_COLOR = Fore.GREEN
     
     WARNING_COLOR = Fore.YELLOW
     
     ERROR_COLOR = Fore.RED
     
     HIGHLIGHT_COLOR = Fore.BLUE
     
     NEUTRAL_COLOR = Fore.WHITE
     
    string SUCCESS_SYMBOL = "✓"
     
    string WARNING_SYMBOL = "○"
     
    string ERROR_SYMBOL = "✗"
     
    string PROCESSING_SYMBOL = "⟳"
     
    +

    Detailed Description

    +
    UI utilities for Penify CLI.
    +
    +This module provides utility functions for consistent UI formatting,
    +colored output, and progress indicators across the Penify CLI application.
    +

    Function Documentation

    + +

    ◆ create_progress_bar()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.create_progress_bar ( total,
     desc = "Processing",
     unit = "item" 
    )
    +
    +
    Create a tqdm progress bar with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ create_stage_progress_bar()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.create_stage_progress_bar ( stages,
     desc = "Processing" 
    )
    +
    +
    Create a tqdm progress bar for processing stages with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_error()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_error ( message)
    +
    +
    Format an error message with the specified error color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_file_path()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_file_path ( file_path)
    +
    +
    Format a file path with a warning color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_highlight()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_highlight ( message)
    +
    +
    Format a highlighted message with appropriate color.
    +
    +
    + +

    ◆ format_info()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_info ( message)
    +
    +
    Format an informational message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_success()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_success ( message)
    +
    +
    Formats a success message with green color and reset style.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ format_warning()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.format_warning ( message)
    +
    +
    Format a warning message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_error()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_error ( message)
    +
    +
    Print an error message with appropriate formatting.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_info()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_info ( message)
    +
    +
    Prints an informational message with formatting.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_processing()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_processing ( file_path)
    +
    +
    Print a processing message for a specified file.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_status()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.print_status ( status,
     message 
    )
    +
    +
    Print a status message with an appropriate symbol.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_success()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_success ( message)
    +
    +
    Prints a formatted success message.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_warning()

    + +
    +
    + + + + + + + + +
    def penify_hook.ui_utils.print_warning ( message)
    +
    +
    Prints a warning message with formatted output.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ update_stage()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.update_stage ( pbar,
     stage_name 
    )
    +
    +
    Update the progress bar with a new stage name.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ autoreset

    + +
    +
    + + + + +
    penify_hook.ui_utils.autoreset
    +
    + +
    +
    + +

    ◆ ERROR_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.ERROR_COLOR = Fore.RED
    +
    + +
    +
    + +

    ◆ ERROR_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
    +
    + +
    +
    + +

    ◆ HIGHLIGHT_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
    +
    + +
    +
    + +

    ◆ INFO_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
    +
    + +
    +
    + +

    ◆ NEUTRAL_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
    +
    + +
    +
    + +

    ◆ PROCESSING_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
    +
    + +
    +
    + +

    ◆ SUCCESS_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
    +
    + +
    +
    + +

    ◆ SUCCESS_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
    +
    + +
    +
    + +

    ◆ WARNING_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
    +
    + +
    +
    + +

    ◆ WARNING_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map new file mode 100644 index 0000000..25e33d6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 new file mode 100644 index 0000000..e8c2c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 @@ -0,0 +1 @@ +e844738072248c6c64fdcc2330f4e553 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg new file mode 100644 index 0000000..d1398fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg new file mode 100644 index 0000000..1de8b95 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg @@ -0,0 +1,259 @@ + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map new file mode 100644 index 0000000..b3bbd49 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 new file mode 100644 index 0000000..61c5559 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 @@ -0,0 +1 @@ +107c8ab941ac9fce368d49be27d3ad77 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg new file mode 100644 index 0000000..4f4e98b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map new file mode 100644 index 0000000..2837065 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 new file mode 100644 index 0000000..28e733d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 @@ -0,0 +1 @@ +31face48bece50b969dd777e2fc02655 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg new file mode 100644 index 0000000..c38d43e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map new file mode 100644 index 0000000..9aa84d3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 new file mode 100644 index 0000000..95113cf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 @@ -0,0 +1 @@ +dc9c89eee18a938f2f9191abf1d0c4e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg new file mode 100644 index 0000000..3d3ba26 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.ui_utils.format +_warning + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map new file mode 100644 index 0000000..951c8b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 new file mode 100644 index 0000000..cd55665 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 @@ -0,0 +1 @@ +9fb882734b6d928eec5be79c1f8ddcfd \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg new file mode 100644 index 0000000..c19d945 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg new file mode 100644 index 0000000..8fa32d4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg @@ -0,0 +1,243 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map new file mode 100644 index 0000000..dd6f039 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 new file mode 100644 index 0000000..2cb272d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 @@ -0,0 +1 @@ +86ecc3cd8eb77718a70cf2d0a033d81b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg new file mode 100644 index 0000000..7e446d7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.ui_utils.format +_success + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map new file mode 100644 index 0000000..ae7f6f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 new file mode 100644 index 0000000..aeb43db --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 @@ -0,0 +1 @@ +5a5f4e31cb2a03012aa538af45b7c2f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg new file mode 100644 index 0000000..72720aa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map new file mode 100644 index 0000000..7bb444c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 new file mode 100644 index 0000000..13a3f9b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 @@ -0,0 +1 @@ +07bb20aff57367351bd025b6bbac0225 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg new file mode 100644 index 0000000..29c14be --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map new file mode 100644 index 0000000..f7b8a4e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 new file mode 100644 index 0000000..2972d31 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 @@ -0,0 +1 @@ +c7fe8cba89008798c4a6df0ce478844e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg new file mode 100644 index 0000000..756b57c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map new file mode 100644 index 0000000..1474643 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 new file mode 100644 index 0000000..69b06bc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 @@ -0,0 +1 @@ +e9b17f53f8eea3fa235635a840d97fb5 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg new file mode 100644 index 0000000..35fcfaa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg new file mode 100644 index 0000000..d6c4844 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg @@ -0,0 +1,178 @@ + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map new file mode 100644 index 0000000..9ed7a63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 new file mode 100644 index 0000000..5199573 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 @@ -0,0 +1 @@ +e25efaa5775be3034819eb11f9cbeeb3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg new file mode 100644 index 0000000..1b60170 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg new file mode 100644 index 0000000..a84c7b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg @@ -0,0 +1,87 @@ + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map new file mode 100644 index 0000000..68ad486 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 new file mode 100644 index 0000000..882dba5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 @@ -0,0 +1 @@ +3b447097b4d45a9b7a66bc911d7dd54f \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg new file mode 100644 index 0000000..dd6a762 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg new file mode 100644 index 0000000..1b51200 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map new file mode 100644 index 0000000..b95ed08 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 new file mode 100644 index 0000000..e14594c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 @@ -0,0 +1 @@ +f7f77cf41919f414860683374ddefc0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg new file mode 100644 index 0000000..268b380 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.ui_utils.format +_error + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map new file mode 100644 index 0000000..cfe84b1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 new file mode 100644 index 0000000..8538194 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 @@ -0,0 +1 @@ +9c27aeee4681a41d96bdc9cb1c2cd259 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg new file mode 100644 index 0000000..5e321ab --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg new file mode 100644 index 0000000..e913c1f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg @@ -0,0 +1,162 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map new file mode 100644 index 0000000..07143b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 new file mode 100644 index 0000000..f566c4a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 @@ -0,0 +1 @@ +0ee2c99f818d114be866466bd3ca67e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg new file mode 100644 index 0000000..ec42fa5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg @@ -0,0 +1,37 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map new file mode 100644 index 0000000..a111cc8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 new file mode 100644 index 0000000..9d7b6fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 @@ -0,0 +1 @@ +4693bdcc77b647a09f27d1c12b6cf38a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg new file mode 100644 index 0000000..5e238f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg new file mode 100644 index 0000000..f960222 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map new file mode 100644 index 0000000..7df2c63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 new file mode 100644 index 0000000..0acebf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 @@ -0,0 +1 @@ +ebb2d3fbd74327cb6297532859329884 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg new file mode 100644 index 0000000..af64c2d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg new file mode 100644 index 0000000..99f7f74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg @@ -0,0 +1,337 @@ + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map new file mode 100644 index 0000000..a068346 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 new file mode 100644 index 0000000..fc03531 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 @@ -0,0 +1 @@ +cb2ef693a136057440c77b2ffc5fc5cc \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg new file mode 100644 index 0000000..57fce61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.ui_utils.print_status + + + +Node1 + + +penify_hook.ui_utils.print +_status + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map new file mode 100644 index 0000000..0d99cfe --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 new file mode 100644 index 0000000..c14d515 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 @@ -0,0 +1 @@ +65fe82e63024fcc065fa65dce2c0c8fb \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg new file mode 100644 index 0000000..a59c184 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map new file mode 100644 index 0000000..f15b74e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 new file mode 100644 index 0000000..568301c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 @@ -0,0 +1 @@ +34c0d184b1a914e69d4b0bdacbaaff04 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg new file mode 100644 index 0000000..8c29f6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map new file mode 100644 index 0000000..37c3667 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 new file mode 100644 index 0000000..354e231 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 @@ -0,0 +1 @@ +788f6631fd68b88312b14eace530bcf4 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg new file mode 100644 index 0000000..fa2467e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg new file mode 100644 index 0000000..2e9a0f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg @@ -0,0 +1,72 @@ + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.html b/docs/html/namespacepenify__hook_1_1utils.html new file mode 100644 index 0000000..52f5586 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.utils Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

    def get_repo_details (Repo repo)
     
    def recursive_search_git_folder (folder_path)
     
    def find_git_parent (path)
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.find_git_parent ( path)
    +
    +
    Traverse up from the given path to find the nearest directory containing a .git
    +subdirectory.
    +
    +
    + +

    ◆ get_repo_details()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.get_repo_details (Repo repo)
    +
    +
    Determine the details of a repository including its remote URL, hosting
    +service, organization name, and repository name.
    +
    +This function extracts the remote URL from the given Git repository object and
    +determines the hosting service (e.g., GitHub, Azure DevOps, Bitbucket, GitLab).
    +It then parses the URL to extract the organization name and repository name. If
    +the URL does not match any known hosting service pattern, it sets the hosting
    +service as "Unknown". The function handles exceptions that may occur during
    +this process and logs an error message if needed.
    +
    +Args:
    +    repo (Repo): A GitPython Repo object representing the local git repository.
    +
    +Returns:
    +    dict: A dictionary containing the organization name, repository name, and hosting
    +        service.
    +
    +
    +
    + +

    ◆ recursive_search_git_folder()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.recursive_search_git_folder ( folder_path)
    +
    +
    Recursively searches for a .git folder starting from the given directory.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.utils.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.js b/docs/html/namespacepenify__hook_1_1utils.js new file mode 100644 index 0000000..af7a599 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.js @@ -0,0 +1,8 @@ +var namespacepenify__hook_1_1utils = +[ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map new file mode 100644 index 0000000..054f06d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 new file mode 100644 index 0000000..1431c94 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 @@ -0,0 +1 @@ +dd726258fb2e799d709d2647521b3371 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg new file mode 100644 index 0000000..058cc5f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map new file mode 100644 index 0000000..24785f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 new file mode 100644 index 0000000..768ce43 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 @@ -0,0 +1 @@ +7f750ca69d16550b240f7065f5db45d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg new file mode 100644 index 0000000..4b06faf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg @@ -0,0 +1,815 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg new file mode 100644 index 0000000..8094fbd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg @@ -0,0 +1,727 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..6ef0d57 --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Namespace List
    +
    + +
    + + + + + diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js new file mode 100644 index 0000000..7fcb39b --- /dev/null +++ b/docs/html/namespaces_dup.js @@ -0,0 +1,20 @@ +var namespaces_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", "namespacepenify__hook" ], + [ "setup", "namespacesetup.html", [ + [ "author", "namespacesetup.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "namespacesetup.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "namespacesetup.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "namespacesetup.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "namespacesetup.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "namespacesetup.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c", null ] + ] ], + [ "tests", "namespacetests.html", "namespacetests" ] +]; \ No newline at end of file diff --git a/docs/html/namespacesetup.html b/docs/html/namespacesetup.html new file mode 100644 index 0000000..0c4170a --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + +penify-cli: setup Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     name
     
     version
     
     packages
     
     install_requires
     
     entry_points
     
     author
     
     author_email
     
     description
     
     long_description
     
     long_description_content_type
     
     url
     
     classifiers
     
     python_requires
     
    +

    Variable Documentation

    + +

    ◆ author

    + +
    +
    + + + + +
    setup.author
    +
    + +
    +
    + +

    ◆ author_email

    + +
    +
    + + + + +
    setup.author_email
    +
    + +
    +
    + +

    ◆ classifiers

    + +
    +
    + + + + +
    setup.classifiers
    +
    + +
    +
    + +

    ◆ description

    + +
    +
    + + + + +
    setup.description
    +
    + +
    +
    + +

    ◆ entry_points

    + +
    +
    + + + + +
    setup.entry_points
    +
    + +
    +
    + +

    ◆ install_requires

    + +
    +
    + + + + +
    setup.install_requires
    +
    + +
    +
    + +

    ◆ long_description

    + +
    +
    + + + + +
    setup.long_description
    +
    + +
    +
    + +

    ◆ long_description_content_type

    + +
    +
    + + + + +
    setup.long_description_content_type
    +
    + +
    +
    + +

    ◆ name

    + +
    +
    + + + + +
    setup.name
    +
    + +
    +
    + +

    ◆ packages

    + +
    +
    + + + + +
    setup.packages
    +
    + +
    +
    + +

    ◆ python_requires

    + +
    +
    + + + + +
    setup.python_requires
    +
    + +
    +
    + +

    ◆ url

    + +
    +
    + + + + +
    setup.url
    +
    + +
    +
    + +

    ◆ version

    + +
    +
    + + + + +
    setup.version
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.html b/docs/html/namespacetests.html new file mode 100644 index 0000000..75f360e --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  conftest
     
    namespace  test_commit_commands
     
    namespace  test_config_commands
     
    namespace  test_doc_commands
     
    namespace  test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.js b/docs/html/namespacetests.js new file mode 100644 index 0000000..cc880ce --- /dev/null +++ b/docs/html/namespacetests.js @@ -0,0 +1,20 @@ +var namespacetests = +[ + [ "conftest", "namespacetests_1_1conftest.html", null ], + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", "namespacetests_1_1test__commit__commands" ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", "namespacetests_1_1test__config__commands" ], + [ "test_doc_commands", "namespacetests_1_1test__doc__commands.html", [ + [ "test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", "namespacetests_1_1test__web__config" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1conftest.html b/docs/html/namespacetests_1_1conftest.html new file mode 100644 index 0000000..c5394ef --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.conftest Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    tests.conftest Namespace Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.html b/docs/html/namespacetests_1_1test__commit__commands.html new file mode 100644 index 0000000..6d85f49 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_commit_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestCommitCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.js b/docs/html/namespacetests_1_1test__commit__commands.js new file mode 100644 index 0000000..03fd373 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__commit__commands = +[ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__config__commands.html b/docs/html/namespacetests_1_1test__config__commands.html new file mode 100644 index 0000000..faf46cd --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_config_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestConfigCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__config__commands.js b/docs/html/namespacetests_1_1test__config__commands.js new file mode 100644 index 0000000..ae998ee --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__config__commands = +[ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands.html b/docs/html/namespacetests_1_1test__doc__commands.html new file mode 100644 index 0000000..2a04375 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,747 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_doc_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def test_setup_docgen_parser ()
     
    def test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_error_handling ( mock_api_client,
     mock_git_analyzer,
     mock_exit 
    )
    +
    +
    Generate a documentation string for the provided code snippet using
    +Google Docstring style.
    +
    +Short one line description: Test function to ensure proper error
    +handling during API calls with GitAnalyzer.  Multiline long description:
    +This test function is designed to verify that the generate_doc function
    +handles exceptions correctly when an error occurs during API interaction
    +with GitAnalyzer. It sets up a mock API client and a mock Git analyzer,
    +causing the analyzer to raise an exception to simulate a failure
    +condition. The function then asserts that the exit code is set to 1 when
    +the error handling mechanism is invoked.
    +
    +Args:
    +    mock_api_client (MagicMock): A mock object simulating the API client.
    +    mock_git_analyzer (MagicMock): A mock object simulating the Git analyzer, configured to raise an
    +        exception.
    +    mock_exit (MagicMock): A mock object representing the exit function, which should be called
    +        with an error code.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_file_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_file_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test generating a documentation file location.
    +
    +This function tests the process of generating a documentation file
    +location using mock objects for API client, folder analyzer, file
    +analyzer, and Git analyzer. It sets up the necessary mocks, calls the
    +`generate_doc` function with specified parameters, and asserts that the
    +appropriate methods on the mock objects are called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_folder_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_folder_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test the function to generate documentation for a folder location.
    +
    +It sets up mock objects for API client, folder analyzer, file analyzer,
    +and Git analyzer, then calls the `generate_doc` function with specified
    +parameters. Finally, it asserts that the correct methods on the mock
    +objects were called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_no_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_no_location ( mock_getcwd,
     mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test function to generate documentation without location information.
    +
    +This function sets up mocks for the API client, current working
    +directory, and Git analyzer. It then calls the `generate_doc` function
    +with a fake API URL and token. The function is expected to initialize
    +the API client, configure the Git analyzer, and run it without any
    +location information.
    +
    +Args:
    +    mock_getcwd (MagicMock): Mock for os.getcwd().
    +    mock_api_client (MagicMock): Mock for creating an API client.
    +    mock_folder_analyzer (MagicMock): Mock for folder analysis.
    +    mock_file_analyzer (MagicMock): Mock for file analysis.
    +    mock_git_analyzer (MagicMock): Mock for Git analyzer setup.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_file_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_file_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a Python source file.
    +
    +This function reads a Python file and generates a docstring based on its
    +content. It uses mock objects to simulate API calls and directory
    +operations during testing.
    +
    +Args:
    +    mock_api_client (unittest.mock.MagicMock): A mock object for simulating API client behavior.
    +    mock_getcwd (unittest.mock.MagicMock): A mock object for simulating the current working directory function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_folder_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_folder_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a given API endpoint and save it to a
    +folder.
    +
    +This function fetches data from the specified API endpoint, processes
    +it, and saves the generated documentation in the provided folder. If an
    +error occurs during the fetching process, a SystemExit exception is
    +raised with an appropriate message.
    +
    +Args:
    +    api_url (str): The URL of the API endpoint from which data will be fetched.
    +    token (str): The authentication token required to access the API.
    +    folder_path (str): The path to the folder where the documentation will be saved.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_generate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_generate ( mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the direct documentation generation functionality.
    +
    +This function tests the `handle_docgen` function when no subcommand is
    +provided. It verifies that the document generation hook is called and
    +the uninstall and install hooks are not called.
    +
    +Args:
    +    mock_get_token (MagicMock): Mocked function to get authentication token.
    +    mock_generate_doc (MagicMock): Mocked function for generating documentation.
    +    mock_uninstall_hook (MagicMock): Mocked function for uninstalling the document generation hook.
    +    mock_install_hook (MagicMock): Mocked function for installing the document generation hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_install_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_install_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the handling of the 'install-hook' subcommand.
    +
    +This function sets up a mock environment where it simulates the
    +execution of the 'install-hook' subcommand. It verifies that the
    +`mock_install_hook` is called with the correct arguments, while
    +`mock_generate_doc` and `mock_uninstall_hook` are not called.
    +
    +Args:
    +    mock_exit (MagicMock): Mock object for sys.exit.
    +    mock_get_token (MagicMock): Mock object to simulate fetching a token.
    +    mock_generate_doc (MagicMock): Mock object to simulate generating documentation.
    +    mock_uninstall_hook (MagicMock): Mock object to simulate uninstalling a hook.
    +    mock_install_hook (MagicMock): Mock object to simulate installing a hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_no_token()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_no_token ( mock_exit,
     mock_get_token 
    )
    +
    +
    Test the behavior of the `handle_docgen` function when no token is
    +provided.
    +
    +This function asserts that if no token is returned by `mock_get_token`,
    +the `handle_docgen` function will call `mock_exit` with a status code of
    +1.
    +
    +Args:
    +    mock_exit (MagicMock): A MagicMock object simulating the `exit` function.
    +    mock_get_token (MagicMock): A MagicMock object simulating the `get_token` function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_uninstall_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the uninstall-hook subcommand of the handle_docgen function.
    +This test case sets up a mock environment and verifies that the
    +uninstall-hook is called with the correct location, while generate_doc
    +and install_hook are not called.
    +
    +Args:
    +    mock_exit (MagicMock): A mock for the exit function.
    +    mock_get_token (MagicMock): A mock for the get_token function.
    +    mock_generate_doc (MagicMock): A mock for the generate_doc function.
    +    mock_uninstall_hook (MagicMock): A mock for the uninstall_hook function.
    +    mock_install_hook (MagicMock): A mock for the install_hook function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_setup_docgen_parser()

    + +
    +
    + + + + + + + +
    def tests.test_doc_commands.test_setup_docgen_parser ()
    +
    +
    Test the setup_docgen_parser function to ensure it properly configures
    +the ArgumentParser for docgen options.
    +
    +It verifies that the parser correctly sets up docgen options and handles
    +different subcommands like 'install-hook' and 'uninstall-hook'.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map new file mode 100644 index 0000000..f0f54c3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 new file mode 100644 index 0000000..b280dc5 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 @@ -0,0 +1 @@ +28c17f21f2a2a250d23b14c68e3e5d3a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg new file mode 100644 index 0000000..c482b86 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_file_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map new file mode 100644 index 0000000..a8ff77b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 new file mode 100644 index 0000000..53e2e0a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 @@ -0,0 +1 @@ +192fbe5412db3710d1849692c54ac106 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg new file mode 100644 index 0000000..6ca2ff2 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_setup_docgen_parser + + + +Node1 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node2 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map new file mode 100644 index 0000000..b5bbb57 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 new file mode 100644 index 0000000..300f399 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 @@ -0,0 +1 @@ +aef759552fc6cc4d80899b0b13739a5e \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg new file mode 100644 index 0000000..94a320e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg new file mode 100644 index 0000000..fd67a25 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map new file mode 100644 index 0000000..f220740 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 new file mode 100644 index 0000000..ef64a42 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 @@ -0,0 +1 @@ +10d76966ac7089e8706fb1aec3e4f9d6 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg new file mode 100644 index 0000000..b369e3b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_file_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map new file mode 100644 index 0000000..1cee3ef --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 new file mode 100644 index 0000000..076630a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 @@ -0,0 +1 @@ +064f1a8c9470887507dea5cf5dd184eb \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg new file mode 100644 index 0000000..d9f33f9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_folder_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map new file mode 100644 index 0000000..6505473 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 new file mode 100644 index 0000000..314f15d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 @@ -0,0 +1 @@ +e42b926dad2f0ff5205af415d972f1da \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg new file mode 100644 index 0000000..f231670 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_folder_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map new file mode 100644 index 0000000..73c8b64 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 new file mode 100644 index 0000000..99c08a9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 @@ -0,0 +1 @@ +d4d1f9d92eb42ae249ce3409ab7627ac \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg new file mode 100644 index 0000000..0ee0fcd --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_no_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map new file mode 100644 index 0000000..86fe3ea --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 new file mode 100644 index 0000000..28ac74a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 @@ -0,0 +1 @@ +810237d2c8640fcab5bd4448f12a9692 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg new file mode 100644 index 0000000..ae76a88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg new file mode 100644 index 0000000..408dbc3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map new file mode 100644 index 0000000..97c848c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 new file mode 100644 index 0000000..56e1467 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 @@ -0,0 +1 @@ +dc60bba75d6f8dafbd4701e4ac271385 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg new file mode 100644 index 0000000..927f757 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg new file mode 100644 index 0000000..0258a01 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map new file mode 100644 index 0000000..1b841f4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 new file mode 100644 index 0000000..ef9f04c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 @@ -0,0 +1 @@ +7930a342103b95a29b43ca93e1212cff \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg new file mode 100644 index 0000000..9768a7e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_error_handling + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map new file mode 100644 index 0000000..6b196ac --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 new file mode 100644 index 0000000..8969799 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 @@ -0,0 +1 @@ +4dfa85ad92a13ab307edd504ab65bb1a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg new file mode 100644 index 0000000..b636d21 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg new file mode 100644 index 0000000..0cfb00d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.html b/docs/html/namespacetests_1_1test__web__config.html new file mode 100644 index 0000000..f43d9ee --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_web_config Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestWebConfig
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.js b/docs/html/namespacetests_1_1test__web__config.js new file mode 100644 index 0000000..9c444bb --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__web__config = +[ + [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] +]; \ No newline at end of file diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/-m, --message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3", null ], + [ "-e, --terminal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4", null ], + [ "-d, --description", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5", null ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6", [ + [ "Generate Title Only with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7", null ], + [ "Generate Title and Description with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8", null ], + [ "Generate and Edit Full Commit Message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9", null ], + [ "Generate, Edit, and Provide Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10", null ] + ] ], + [ "LLM and JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11", [ + [ "Using Local LLM", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12", null ], + [ "JIRA Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13", null ] + ] ], + [ "Configuration Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14", null ], + [ "Examples", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15", [ + [ "Basic Commit with Default Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16", null ], + [ "Full Workflow with All Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19", null ] + ] ] + ] ], + [ "Penify CLI - Configuration Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html", [ + [ "Configuration Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22", null ], + [ "LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24", null ], + [ "Supported LLMs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25", [ + [ "OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26", null ], + [ "Anthropic", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27", null ], + [ "Ollama (Local)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28", null ], + [ "Azure OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29", null ] + ] ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30", null ] + ] ], + [ "JIRA Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32", null ], + [ "Creating a JIRA API Token", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33", null ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34", null ] + ] ], + [ "Configuration Locations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35", null ], + [ "Environment Variables", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36", null ], + [ "Command-Line Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37", null ], + [ "Sharing Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38", null ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40", null ] + ] ] + ] ], + [ "Penify CLI - Detailed Usage Guide", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42", null ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43", [ + [ "Login Process", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44", null ], + [ "API Token Storage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45", null ], + [ "Token Precedence", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46", null ] + ] ], + [ "Command Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47", null ], + [ "Commit Message Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48", null ], + [ "Code Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49", [ + [ "Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50", null ], + [ "Authentication Requirement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51", null ] + ] ], + [ "Configuration Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52", null ], + [ "Git Hooks", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53", [ + [ "Post-Commit Hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54", null ], + [ "Custom Hook Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55", null ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56", [ + [ "CI/CD Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57", null ], + [ "Remote Repository Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60", null ], + [ "Logs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62", null ] + ] ] + ] ], + [ "Penify CLI - Documentation Generation Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65", null ], + [ "Command Options", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66", [ + [ "-l, --location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67", null ], + [ "Subcommands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68", [ + [ "install-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69", null ], + [ "uninstall-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70", null ] + ] ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71", [ + [ "Generate Documentation for Current Git Diff", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72", null ], + [ "Generate Documentation for a Specific File", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73", null ], + [ "Generate Documentation for a Folder", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74", null ], + [ "Install Hook in Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75", null ], + [ "Install Hook in Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76", null ], + [ "Uninstall Hook from Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77", null ], + [ "Uninstall Hook from Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78", null ] + ] ], + [ "Git Hook Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79", [ + [ "Hook Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80", [ + [ "How Hooks Work", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81", null ], + [ "Hook Script Content", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82", null ], + [ "Installation Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83", null ], + [ "Installation Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84", null ], + [ "Verifying Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85", null ] + ] ], + [ "Hook Customization", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86", [ + [ "Modifying Hook Behavior", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87", null ], + [ "Advanced Hook Scenarios", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88", null ] + ] ], + [ "Hook Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89", [ + [ "Standard Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90", null ], + [ "Specific Repository Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91", null ], + [ "Manual Hook Removal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92", null ], + [ "Verifying Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93", null ] + ] ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94", [ + [ "Continuous Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95", null ], + [ "Batch Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96", null ], + [ "Custom Git Hook Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97", null ], + [ "Documenting Release Tags", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100", null ], + [ "Debugging", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101", null ], + [ "Getting Help", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102", null ] + ] ] + ] ], + [ "Penify CLI Example Workflows", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html", [ + [ "Workflow 1: Efficient Git Commits with AI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107", null ] + ] ], + [ "Workflow 2: Documentation Generation Pipeline", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110", null ], + [ "Manual Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112", null ] + ] ], + [ "Workflow 3: Code Review Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114", null ], + [ "Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116", null ] + ] ], + [ "Workflow 4: Onboarding New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117", [ + [ "For Team Leads", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118", null ], + [ "For New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120", null ] + ] ], + [ "Workflow 5: Legacy Code Understanding", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121", [ + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122", null ] + ] ] + ] ], + [ "Penify CLI Tool", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html", [ + [ "Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157", null ], + [ "Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158", null ], + [ "Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159", null ], + [ "Basic Commands (No login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160", [ + [ "Commit", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161", null ], + [ "Config", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162", null ] + ] ], + [ "Advanced Commands (Login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163", [ + [ "Login", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164", null ], + [ "Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165", null ], + [ "Git Hook Management", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166", null ] + ] ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167", null ], + [ "Local LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168", null ], + [ "JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169", null ], + [ "Development", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170", [ + [ "Running Tests", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171", null ] + ] ], + [ "License", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172", null ], + [ "Author", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173", null ], + [ "Contributing", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174", null ], + [ "Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176", null ] + ] ], + [ "Namespaces", "namespaces.html", [ + [ "Namespace List", "namespaces.html", "namespaces_dup" ], + [ "Namespace Members", "namespacemembers.html", [ + [ "All", "namespacemembers.html", null ], + [ "Functions", "namespacemembers_func.html", null ], + [ "Variables", "namespacemembers_vars.html", null ] + ] ] + ] ], + [ "Classes", "annotated.html", [ + [ "Class List", "annotated.html", "annotated_dup" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions", "functions_func.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ], + [ "Files", "files.html", [ + [ "File List", "files.html", "files_dup" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"annotated.html", +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js new file mode 100644 index 0000000..8358b16 --- /dev/null +++ b/docs/html/navtreeindex0.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX0 = +{ +"annotated.html":[7,0], +"api__client_8py.html":[8,0,0,1,2], +"auth__commands_8py.html":[8,0,0,1,0,1], +"auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655":[8,0,0,1,0,1,0], +"auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24":[8,0,0,1,0,1,1], +"base__analyzer_8py.html":[8,0,0,1,3], +"classException.html":[7,0,2], +"classes.html":[7,1], +"classpenify__hook_1_1api__client_1_1APIClient.html":[7,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html":[6,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[6,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[7,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[6,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[7,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[7,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[6,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[6,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[7,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[6,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[7,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[6,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[7,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[7,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[6,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[6,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[7,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[7,0,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[6,0,0,0,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[6,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[7,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[6,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[7,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[6,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[7,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[7,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[6,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[6,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[7,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[6,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[7,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[6,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[7,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[7,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[6,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[7,0,0,1,0,3], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[6,0,0,1,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[6,0,0,3,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[7,0,0,2,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[6,0,0,3,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[7,0,0,2,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[6,0,0,3,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[7,0,0,2,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[7,0,0,2,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[6,0,0,3,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[7,0,0,2,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[6,0,0,3,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[7,0,0,2,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[6,0,0,3,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[7,0,0,2,0,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[6,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[6,0,0,6,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[7,0,0,3,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[6,0,0,6,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[7,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[7,0,0,3,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[6,0,0,6,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[6,0,0,6,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[7,0,0,3,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[7,0,0,3,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[6,0,0,6,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[6,0,0,6,0,4], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[7,0,0,3,0,4], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[6,0,0,7,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[7,0,0,4,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[7,0,0,4,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[6,0,0,7,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[6,0,0,7,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[7,0,0,4,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[7,0,0,4,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[6,0,0,7,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[7,0,0,4,0,2], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[6,0,0,7,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[6,0,0,8,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[7,0,0,5,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[7,0,0,5,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[6,0,0,8,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[6,0,0,8,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[7,0,0,5,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[7,0,0,5,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[6,0,0,8,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[6,0,0,8,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[7,0,0,5,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[7,0,0,5,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[6,0,0,8,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[7,0,0,6,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[6,0,0,9,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[7,0,0,6,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[6,0,0,9,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[7,0,0,6,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[6,0,0,9,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[6,0,0,9,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[7,0,0,6,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[7,0,0,6,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[6,0,0,9,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[6,0,0,9,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[7,0,0,6,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[6,0,0,9,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[7,0,0,6,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[7,0,0,6,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[6,0,0,9,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[6,0,0,9,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[7,0,0,6,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[7,0,0,6,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[6,0,0,9,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[7,0,0,6,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[6,0,0,9,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[7,0,0,6,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[6,0,0,9,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[7,0,0,6,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[6,0,0,9,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[7,0,0,6,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[6,0,0,9,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[7,0,0,6,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[6,0,0,9,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[7,0,0,6,0,11], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[6,0,0,9,0,11], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[6,0,0,10,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[7,0,0,7,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[7,0,0,7,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[6,0,0,10,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[7,0,0,7,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[6,0,0,10,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[6,0,0,10,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[7,0,0,7,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[7,0,0,7,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[6,0,0,10,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[7,0,0,7,0,2], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[6,0,0,10,0,2], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[7,0,0,8,0], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[6,0,0,14,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[6,0,2,1,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[7,0,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[6,0,2,1,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[7,0,1,0,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[7,0,1,0,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[6,0,2,1,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[7,0,1,0,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[6,0,2,1,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[7,0,1,0,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[6,0,2,1,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[6,0,2,1,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[7,0,1,0,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[7,0,1,0,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[6,0,2,1,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[6,0,2,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[7,0,1,0,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[7,0,1,0,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[6,0,2,1,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[7,0,1,0,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[6,0,2,1,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[6,0,2,1,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[7,0,1,0,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[6,0,2,1,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[7,0,1,0,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[6,0,2,1,0,5], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[7,0,1,0,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[6,0,2,2,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[7,0,1,1,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[7,0,1,1,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[6,0,2,2,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[6,0,2,2,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[7,0,1,1,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[7,0,1,1,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[6,0,2,2,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[7,0,1,1,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[6,0,2,2,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[7,0,1,1,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[6,0,2,2,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[7,0,1,1,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[6,0,2,2,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[7,0,1,1,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[6,0,2,2,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[6,0,2,2,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[7,0,1,1,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[7,0,1,1,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[6,0,2,2,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[6,0,2,2,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[7,0,1,1,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[6,0,2,2,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[7,0,1,1,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[7,0,1,1,0,9], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[6,0,2,2,0,9], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[6,0,2,4,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[7,0,1,2,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[6,0,2,4,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[7,0,1,2,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[7,0,1,2,0,1], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[6,0,2,4,0,1], +"commit__analyzer_8py.html":[8,0,0,1,4], +"commit__commands_8py.html":[8,0,0,1,0,2], +"commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a":[8,0,0,1,0,2,0], +"commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c":[8,0,0,1,0,2,2], +"commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23":[8,0,0,1,0,2,1], +"config__command_8py.html":[8,0,0,1,5], +"config__command_8py.html#a240e5331681eb574ac319d7458783bde":[8,0,0,1,5,0], +"config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e":[8,0,0,1,5,1], +"config__commands_8py.html":[8,0,0,1,0,3], +"config__commands_8py.html#a152642ab83cf6219b604bda6122aba67":[8,0,0,1,0,3,10], +"config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[8,0,0,1,0,3,3], +"config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c":[8,0,0,1,0,3,1], +"config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[8,0,0,1,0,3,2], +"config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4":[8,0,0,1,0,3,9], +"config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880":[8,0,0,1,0,3,11], +"config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812":[8,0,0,1,0,3,6], +"config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[8,0,0,1,0,3,4], +"config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20":[8,0,0,1,0,3,5], +"config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae":[8,0,0,1,0,3,7], +"config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[8,0,0,1,0,3,8], +"config__commands_8py.html#af115198ea5d6808ccb98733957f50b06":[8,0,0,1,0,3,0], +"conftest_8py.html":[8,0,0,2,1], +"constants_8py.html":[8,0,0,1,6], +"constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0":[8,0,0,1,6,1], +"constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0":[8,0,0,1,6,0], +"dir_063e2d5fe58a131099a7fe4200cca78c.html":[8,0,0,2], +"dir_1648a057408aae8db85b8e3797335623.html":[8,0,0,0], +"dir_624fa2a8bce97f0444ac5cca335d4e23.html":[8,0,0,1,0], +"dir_b3b22d2ab7966b65f6b237e3231b41be.html":[8,0,0], +"dir_f88c3381c1861b3f7ca1f3d63cf244b5.html":[8,0,0,1], +"doc__commands_8py.html":[8,0,0,1,0,4], +"doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704":[8,0,0,1,0,4,1], +"doc__commands_8py.html#a3e42540047da37565afffeaf106cb948":[8,0,0,1,0,4,3], +"doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25":[8,0,0,1,0,4,0], +"doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0":[8,0,0,1,0,4,2], +"file__analyzer_8py.html":[8,0,0,1,7], +"file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828":[8,0,0,1,7,1], +"files.html":[8,0], +"folder__analyzer_8py.html":[8,0,0,1,8], +"functions.html":[7,3,0], +"functions_func.html":[7,3,1], +"functions_vars.html":[7,3,2], +"git__analyzer_8py.html":[8,0,0,1,9], +"git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a":[8,0,0,1,9,1], +"hierarchy.html":[7,2], +"hook__commands_8py.html":[8,0,0,1,0,5], +"hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[8,0,0,1,0,5,3], +"hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d":[8,0,0,1,0,5,1], +"hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2":[8,0,0,1,0,5,0], +"hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1":[8,0,0,1,0,5,2], +"index.html":[], +"jira__client_8py.html":[8,0,0,1,10] +}; diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js new file mode 100644 index 0000000..f9245fe --- /dev/null +++ b/docs/html/navtreeindex1.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX1 = +{ +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2":[8,0,0,1,10,1], +"llm__client_8py.html":[8,0,0,1,11], +"login__command_8py.html":[8,0,0,1,12], +"login__command_8py.html#aae63db4c484797bead34b7d874020c6a":[8,0,0,1,12,1], +"login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[8,0,0,1,12,0], +"main_8py.html":[8,0,0,1,13], +"main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f":[8,0,0,1,13,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html":[5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157":[5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158":[5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159":[5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160":[5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161":[5,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162":[5,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163":[5,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164":[5,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165":[5,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166":[5,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167":[5,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168":[5,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169":[5,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170":[5,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171":[5,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172":[5,9], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173":[5,10], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174":[5,11], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175":[5,12], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176":[5,13], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html":[0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md1":[0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10":[0,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11":[0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12":[0,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13":[0,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14":[0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15":[0,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16":[0,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17":[0,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18":[0,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19":[0,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md2":[0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3":[0,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4":[0,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5":[0,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6":[0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7":[0,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8":[0,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9":[0,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html":[1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21":[1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22":[1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23":[1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24":[1,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25":[1,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26":[1,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27":[1,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28":[1,2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29":[1,2,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30":[1,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31":[1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32":[1,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33":[1,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34":[1,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35":[1,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36":[1,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37":[1,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38":[1,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39":[1,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40":[1,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html":[2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42":[2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43":[2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44":[2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45":[2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46":[2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47":[2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48":[2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49":[2,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50":[2,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51":[2,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52":[2,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53":[2,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54":[2,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55":[2,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56":[2,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57":[2,7,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58":[2,7,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59":[2,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60":[2,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61":[2,8,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62":[2,8,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html":[3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100":[3,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101":[3,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102":[3,6,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64":[3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65":[3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66":[3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67":[3,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68":[3,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69":[3,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70":[3,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71":[3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72":[3,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73":[3,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74":[3,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75":[3,3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76":[3,3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77":[3,3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78":[3,3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79":[3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80":[3,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81":[3,4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82":[3,4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83":[3,4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84":[3,4,0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85":[3,4,0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86":[3,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87":[3,4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88":[3,4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89":[3,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90":[3,4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91":[3,4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92":[3,4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93":[3,4,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94":[3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95":[3,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96":[3,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97":[3,5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98":[3,5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99":[3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html":[4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104":[4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105":[4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106":[4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107":[4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108":[4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109":[4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110":[4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111":[4,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112":[4,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113":[4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114":[4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115":[4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116":[4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117":[4,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118":[4,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119":[4,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120":[4,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121":[4,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122":[4,4,0], +"namespacemembers.html":[6,1,0], +"namespacemembers_func.html":[6,1,1], +"namespacemembers_vars.html":[6,1,2], +"namespacepenify__hook.html":[6,0,0], +"namespacepenify__hook_1_1api__client.html":[6,0,0,0], +"namespacepenify__hook_1_1base__analyzer.html":[6,0,0,1], +"namespacepenify__hook_1_1commands.html":[6,0,0,2], +"namespacepenify__hook_1_1commands_1_1auth__commands.html":[6,0,0,2,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655":[6,0,0,2,0,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24":[6,0,0,2,0,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html":[6,0,0,2,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a":[6,0,0,2,1,0], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c":[6,0,0,2,1,2], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23":[6,0,0,2,1,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html":[6,0,0,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67":[6,0,0,2,2,10], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[6,0,0,2,2,3], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c":[6,0,0,2,2,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[6,0,0,2,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4":[6,0,0,2,2,9], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880":[6,0,0,2,2,11], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812":[6,0,0,2,2,6], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[6,0,0,2,2,4], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20":[6,0,0,2,2,5], +"namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae":[6,0,0,2,2,7], +"namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[6,0,0,2,2,8], +"namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06":[6,0,0,2,2,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html":[6,0,0,2,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704":[6,0,0,2,3,1], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948":[6,0,0,2,3,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25":[6,0,0,2,3,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0":[6,0,0,2,3,2], +"namespacepenify__hook_1_1commands_1_1hook__commands.html":[6,0,0,2,4], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[6,0,0,2,4,3], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d":[6,0,0,2,4,1], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2":[6,0,0,2,4,0], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1":[6,0,0,2,4,2], +"namespacepenify__hook_1_1commit__analyzer.html":[6,0,0,3], +"namespacepenify__hook_1_1config__command.html":[6,0,0,4], +"namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde":[6,0,0,4,0], +"namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e":[6,0,0,4,1], +"namespacepenify__hook_1_1constants.html":[6,0,0,5], +"namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0":[6,0,0,5,1], +"namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0":[6,0,0,5,0], +"namespacepenify__hook_1_1file__analyzer.html":[6,0,0,6], +"namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828":[6,0,0,6,1], +"namespacepenify__hook_1_1folder__analyzer.html":[6,0,0,7], +"namespacepenify__hook_1_1git__analyzer.html":[6,0,0,8], +"namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a":[6,0,0,8,1], +"namespacepenify__hook_1_1jira__client.html":[6,0,0,9], +"namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2":[6,0,0,9,1], +"namespacepenify__hook_1_1llm__client.html":[6,0,0,10], +"namespacepenify__hook_1_1login__command.html":[6,0,0,11], +"namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a":[6,0,0,11,1], +"namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[6,0,0,11,0], +"namespacepenify__hook_1_1main.html":[6,0,0,12], +"namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f":[6,0,0,12,0], +"namespacepenify__hook_1_1ui__utils.html":[6,0,0,13], +"namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[6,0,0,13,7], +"namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c":[6,0,0,13,0], +"namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff":[6,0,0,13,24], +"namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa":[6,0,0,13,13], +"namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4":[6,0,0,13,22], +"namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[6,0,0,13,12], +"namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756":[6,0,0,13,21], +"namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[6,0,0,13,23], +"namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef":[6,0,0,13,1], +"namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe":[6,0,0,13,16], +"namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e":[6,0,0,13,2], +"namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776":[6,0,0,13,6], +"namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d":[6,0,0,13,14], +"namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16":[6,0,0,13,25], +"namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f":[6,0,0,13,8], +"namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44":[6,0,0,13,9], +"namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6":[6,0,0,13,5], +"namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c":[6,0,0,13,19], +"namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0":[6,0,0,13,17], +"namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c":[6,0,0,13,11], +"namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71":[6,0,0,13,15], +"namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[6,0,0,13,18], +"namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5":[6,0,0,13,20], +"namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[6,0,0,13,4], +"namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[6,0,0,13,10], +"namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[6,0,0,13,3], +"namespacepenify__hook_1_1utils.html":[6,0,0,14], +"namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01":[6,0,0,14,4], +"namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[6,0,0,14,1], +"namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[6,0,0,14,3], +"namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[6,0,0,14,2], +"namespaces.html":[6,0], +"namespacesetup.html":[6,0,1], +"namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c":[6,0,1,12], +"namespacesetup.html#a3796ea10c998699d07d391414ff5d720":[6,0,1,7], +"namespacesetup.html#a3a57a4772d418a06835249cbade0d86a":[6,0,1,0], +"namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde":[6,0,1,6], +"namespacesetup.html#a5b08034343aa2be607722a8b315f3625":[6,0,1,1], +"namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf":[6,0,1,10], +"namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f":[6,0,1,8], +"namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785":[6,0,1,2] +}; diff --git a/docs/html/navtreeindex2.js b/docs/html/navtreeindex2.js new file mode 100644 index 0000000..8e18872 --- /dev/null +++ b/docs/html/navtreeindex2.js @@ -0,0 +1,90 @@ +var NAVTREEINDEX2 = +{ +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588":[6,0,1,5], +"namespacesetup.html#ada7058afc98897f073d3f3b8b9157059":[6,0,1,4], +"namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0":[6,0,1,3], +"namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb":[6,0,1,11], +"namespacesetup.html#aff2375a361fd5865c77bd9aa093be747":[6,0,1,9], +"namespacetests.html":[6,0,2], +"namespacetests_1_1conftest.html":[6,0,2,0], +"namespacetests_1_1test__commit__commands.html":[6,0,2,1], +"namespacetests_1_1test__config__commands.html":[6,0,2,2], +"namespacetests_1_1test__doc__commands.html":[6,0,2,3], +"namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45":[6,0,2,3,1], +"namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[6,0,2,3,10], +"namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482":[6,0,2,3,9], +"namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0":[6,0,2,3,4], +"namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186":[6,0,2,3,2], +"namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3":[6,0,2,3,5], +"namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8":[6,0,2,3,3], +"namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a":[6,0,2,3,6], +"namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05":[6,0,2,3,7], +"namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0":[6,0,2,3,0], +"namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c":[6,0,2,3,8], +"namespacetests_1_1test__web__config.html":[6,0,2,4], +"pages.html":[], +"penify__hook_2____init_____8py.html":[8,0,0,1,1], +"penify__hook_2commands_2____init_____8py.html":[8,0,0,1,0,0], +"setup_8py.html":[8,0,0,3], +"setup_8py.html#a2aa722b36a933088812b50ea79b97a5c":[8,0,0,3,12], +"setup_8py.html#a3796ea10c998699d07d391414ff5d720":[8,0,0,3,7], +"setup_8py.html#a3a57a4772d418a06835249cbade0d86a":[8,0,0,3,0], +"setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde":[8,0,0,3,6], +"setup_8py.html#a5b08034343aa2be607722a8b315f3625":[8,0,0,3,1], +"setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf":[8,0,0,3,10], +"setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f":[8,0,0,3,8], +"setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785":[8,0,0,3,2], +"setup_8py.html#abead4f26b530856f858f0d44c7cf2588":[8,0,0,3,5], +"setup_8py.html#ada7058afc98897f073d3f3b8b9157059":[8,0,0,3,4], +"setup_8py.html#aedf461ec52a946bda975938ba0b93ec0":[8,0,0,3,3], +"setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb":[8,0,0,3,11], +"setup_8py.html#aff2375a361fd5865c77bd9aa093be747":[8,0,0,3,9], +"test__commit__commands_8py.html":[8,0,0,2,2], +"test__config__commands_8py.html":[8,0,0,2,3], +"test__doc__commands_8py.html":[8,0,0,2,4], +"test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45":[8,0,0,2,4,1], +"test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[8,0,0,2,4,10], +"test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482":[8,0,0,2,4,9], +"test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0":[8,0,0,2,4,4], +"test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186":[8,0,0,2,4,2], +"test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3":[8,0,0,2,4,5], +"test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8":[8,0,0,2,4,3], +"test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a":[8,0,0,2,4,6], +"test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05":[8,0,0,2,4,7], +"test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0":[8,0,0,2,4,0], +"test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c":[8,0,0,2,4,8], +"test__web__config_8py.html":[8,0,0,2,5], +"tests_2____init_____8py.html":[8,0,0,2,0], +"ui__utils_8py.html":[8,0,0,1,14], +"ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[8,0,0,1,14,7], +"ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c":[8,0,0,1,14,0], +"ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff":[8,0,0,1,14,24], +"ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa":[8,0,0,1,14,13], +"ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4":[8,0,0,1,14,22], +"ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[8,0,0,1,14,12], +"ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756":[8,0,0,1,14,21], +"ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[8,0,0,1,14,23], +"ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef":[8,0,0,1,14,1], +"ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe":[8,0,0,1,14,16], +"ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e":[8,0,0,1,14,2], +"ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776":[8,0,0,1,14,6], +"ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d":[8,0,0,1,14,14], +"ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16":[8,0,0,1,14,25], +"ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f":[8,0,0,1,14,8], +"ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44":[8,0,0,1,14,9], +"ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6":[8,0,0,1,14,5], +"ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c":[8,0,0,1,14,19], +"ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0":[8,0,0,1,14,17], +"ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c":[8,0,0,1,14,11], +"ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71":[8,0,0,1,14,15], +"ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[8,0,0,1,14,18], +"ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5":[8,0,0,1,14,20], +"ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[8,0,0,1,14,4], +"ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[8,0,0,1,14,10], +"ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[8,0,0,1,14,3], +"utils_8py.html":[8,0,0,1,15], +"utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01":[8,0,0,1,15,4], +"utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[8,0,0,1,15,1], +"utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[8,0,0,1,15,3], +"utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[8,0,0,1,15,2] +}; diff --git a/docs/html/open.png b/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + + + + + + + + + + +penify-cli: Related Pages + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Related Pages
    +
    + +
    + + + + + diff --git a/docs/html/penify-cli-documentation_8md.html b/docs/html/penify-cli-documentation_8md.html new file mode 100644 index 0000000..1011d95 --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/penify__hook_2____init_____8py.html b/docs/html/penify__hook_2____init_____8py.html new file mode 100644 index 0000000..466004f --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    __init__.py File Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/penify__hook_2commands_2____init_____8py.html b/docs/html/penify__hook_2commands_2____init_____8py.html new file mode 100644 index 0000000..1496688 --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.commands
     
    +
    +
    + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..7fe30d1 --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,150 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html new file mode 100644 index 0000000..bb9e364 --- /dev/null +++ b/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..66bb827 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5f_5finit_5f_5f_2epy_1',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]], + ['_5famend_5fcommit_2',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['_5flitellm_3',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html new file mode 100644 index 0000000..8989416 --- /dev/null +++ b/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..b6a2dbe --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]], + ['api_5fclient_1',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5fclient_2epy_2',['api_client.py',['../api__client_8py.html',1,'']]], + ['api_5furl_3',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_4',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['apiclient_5',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]], + ['auth_5fcommands_2epy_6',['auth_commands.py',['../auth__commands_8py.html',1,'']]], + ['auth_5ftoken_7',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_8',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_9',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_10',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html new file mode 100644 index 0000000..a7c1f9c --- /dev/null +++ b/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 0000000..7fb377d --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_4',['setup',['../namespacesetup.html',1,'']]], + ['setup_2epy_5',['setup.py',['../setup_8py.html',1,'']]], + ['setup_5fcommit_5fparser_6',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_7',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_8',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_9',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]], + ['success_5fcolor_10',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_11',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_12',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html new file mode 100644 index 0000000..8f86146 --- /dev/null +++ b/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 0000000..45646f7 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcode_5ferror_5fhandling_1',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_2',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_3',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_4',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcommands_5',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fcommit_5fcommands_2epy_6',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_7',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2epy_8',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_9',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_10',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fdoc_5fcommands_11',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_2epy_12',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_13',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_14',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_15',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_16',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_17',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_18',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_19',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_20',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_21',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_22',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_23',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_24',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_25',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_26',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_27',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_28',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_29',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_30',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_31',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_32',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_33',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_34',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_35',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_36',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_37',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]], + ['test_5fweb_5fconfig_38',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['test_5fweb_5fconfig_2epy_39',['test_web_config.py',['../test__web__config_8py.html',1,'']]], + ['testcommitcommands_40',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_41',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['tests_42',['tests',['../namespacetests.html',1,'']]], + ['testwebconfig_43',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html new file mode 100644 index 0000000..90b128f --- /dev/null +++ b/docs/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 0000000..0d33c8a --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['uninstall_5fgit_5fhook_1',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_2',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_3',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]], + ['url_4',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]], + ['utils_2epy_5',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html new file mode 100644 index 0000000..272d129 --- /dev/null +++ b/docs/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html new file mode 100644 index 0000000..291e0d9 --- /dev/null +++ b/docs/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html new file mode 100644 index 0000000..98e648c --- /dev/null +++ b/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..56f2add --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]], + ['baseanalyzer_1',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]], + ['bearer_5ftoken_2',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html new file mode 100644 index 0000000..f4e8da7 --- /dev/null +++ b/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..45ec4ff --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]], + ['commit_2dcommands_2emd_1',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_2',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcode_3',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['commit_5fcommands_2epy_4',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['commitdocgenhook_5',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]], + ['config_2dcommands_2emd_6',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_7',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_8',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['config_5fjira_5fweb_9',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_10',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['conftest_2epy_11',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_12',['constants.py',['../constants_8py.html',1,'']]], + ['create_5fprogress_5fbar_13',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_14',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html new file mode 100644 index 0000000..678d3a2 --- /dev/null +++ b/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..ccfe815 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['detailed_2dusage_2emd_2',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['dir_5fpath_3',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['doc_5fcommands_2emd_4',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_5',['doc_commands.py',['../doc__commands_8py.html',1,'']]], + ['docgen_5fdescription_6',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_7',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html new file mode 100644 index 0000000..aa9af78 --- /dev/null +++ b/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..89b0ea5 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['entry_5fpoints_1',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_2',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_3',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]], + ['example_2dworkflows_2emd_4',['example-workflows.md',['../example-workflows_8md.html',1,'']]], + ['exception_5',['Exception',['../classException.html',1,'']]], + ['extract_5fissue_5fkeys_6',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_7',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html new file mode 100644 index 0000000..d3026a7 --- /dev/null +++ b/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..9da4602 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['file_5fpath_1',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['fileanalyzergenhook_2',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['find_5fgit_5fparent_3',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['folder_5fanalyzer_2epy_4',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]], + ['folder_5fpath_5',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['folderanalyzergenhook_6',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_7',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_8',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_9',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_10',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_11',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_12',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_13',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html new file mode 100644 index 0000000..b2ee042 --- /dev/null +++ b/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..d5e7346 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]], + ['git_5fanalyzer_2epy_17',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]], + ['gitdocgenhook_18',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_19',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html new file mode 100644 index 0000000..40a0b3f --- /dev/null +++ b/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..b83bbc6 --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]], + ['highlight_5fcolor_4',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5fcommands_2epy_5',['hook_commands.py',['../hook__commands_8py.html',1,'']]], + ['hook_5ffilename_6',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_7',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html new file mode 100644 index 0000000..7c49144 --- /dev/null +++ b/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..bf0f94f --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5fgit_5fhook_1',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['install_5frequires_2',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]], + ['is_5fconnected_3',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html new file mode 100644 index 0000000..fc9d79c --- /dev/null +++ b/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..cb87635 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fclient_2epy_3',['jira_client.py',['../jira__client_8py.html',1,'']]], + ['jira_5furl_4',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_5',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]], + ['jiraclient_6',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html new file mode 100644 index 0000000..dafb1fa --- /dev/null +++ b/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..2024217 --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['llm_5fclient_2',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['llm_5fclient_2epy_3',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['llmclient_4',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]], + ['load_5fenv_5ffiles_5',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['logger_6',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['login_7',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]], + ['login_5fcommand_2epy_8',['login_command.py',['../login__command_8py.html',1,'']]], + ['long_5fdescription_9',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_10',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html new file mode 100644 index 0000000..9df619d --- /dev/null +++ b/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..885d3c4 --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['main_2epy_1',['main.py',['../main_8py.html',1,'']]], + ['mock_5fapi_5fclient_2',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_3',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_4',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_5',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_6',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_7',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['model_8',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html new file mode 100644 index 0000000..95d8eec --- /dev/null +++ b/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html new file mode 100644 index 0000000..a54e120 --- /dev/null +++ b/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..c246db6 --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['packages_18',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_19',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['penify_20cli_20_2d_20commit_20commands_20',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_21',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_22',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_23',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_24',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_25',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]], + ['penify_2dcli_2ddocumentation_2emd_26',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]], + ['penify_5fhook_27',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['print_5ferror_28',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_29',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_30',['print_processing',['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()']]], + ['print_5fstatus_31',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_32',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_33',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_34',['process_file',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()']]], + ['process_5fjira_5fintegration_35',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['processing_5fsymbol_36',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_37',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]], + ['ui_5futils_38',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_39',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html new file mode 100644 index 0000000..8d0aed3 --- /dev/null +++ b/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..11f8b78 --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]], + ['recursive_5fsearch_5fgit_5ffolder_1',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['relative_5ffile_5fpath_2',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_3',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_4',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_5',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['run_6',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html new file mode 100644 index 0000000..9d4f871 --- /dev/null +++ b/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..d470783 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['apiclient_0',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]] +]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html new file mode 100644 index 0000000..0557f9f --- /dev/null +++ b/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 0000000..740b36f --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['baseanalyzer_0',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]] +]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html new file mode 100644 index 0000000..fa20861 --- /dev/null +++ b/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 0000000..8bdd859 --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commitdocgenhook_0',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]] +]; diff --git a/docs/html/search/classes_3.html b/docs/html/search/classes_3.html new file mode 100644 index 0000000..98fbc87 --- /dev/null +++ b/docs/html/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js new file mode 100644 index 0000000..0ed9487 --- /dev/null +++ b/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exception_0',['Exception',['../classException.html',1,'']]] +]; diff --git a/docs/html/search/classes_4.html b/docs/html/search/classes_4.html new file mode 100644 index 0000000..3b6c51e --- /dev/null +++ b/docs/html/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js new file mode 100644 index 0000000..e90ffee --- /dev/null +++ b/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fileanalyzergenhook_0',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['folderanalyzergenhook_1',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]] +]; diff --git a/docs/html/search/classes_5.html b/docs/html/search/classes_5.html new file mode 100644 index 0000000..51c2b30 --- /dev/null +++ b/docs/html/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js new file mode 100644 index 0000000..a6b1740 --- /dev/null +++ b/docs/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gitdocgenhook_0',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_1',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/classes_6.html b/docs/html/search/classes_6.html new file mode 100644 index 0000000..431fb05 --- /dev/null +++ b/docs/html/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js new file mode 100644 index 0000000..6f010a9 --- /dev/null +++ b/docs/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jiraclient_0',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/classes_7.html b/docs/html/search/classes_7.html new file mode 100644 index 0000000..0c76bf5 --- /dev/null +++ b/docs/html/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js new file mode 100644 index 0000000..bd37889 --- /dev/null +++ b/docs/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['llmclient_0',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]] +]; diff --git a/docs/html/search/classes_8.html b/docs/html/search/classes_8.html new file mode 100644 index 0000000..5a392ee --- /dev/null +++ b/docs/html/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js new file mode 100644 index 0000000..ca590a4 --- /dev/null +++ b/docs/html/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['testcommitcommands_0',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_1',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['testwebconfig_2',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html new file mode 100644 index 0000000..2dbb4c2 --- /dev/null +++ b/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..7b3d690 --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_2epy_0',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]] +]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html new file mode 100644 index 0000000..18ccd15 --- /dev/null +++ b/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..6d2b14e --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['api_5fclient_2epy_0',['api_client.py',['../api__client_8py.html',1,'']]], + ['auth_5fcommands_2epy_1',['auth_commands.py',['../auth__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_10.html b/docs/html/search/files_10.html new file mode 100644 index 0000000..c6af52c --- /dev/null +++ b/docs/html/search/files_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_10.js b/docs/html/search/files_10.js new file mode 100644 index 0000000..b759a00 --- /dev/null +++ b/docs/html/search/files_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['utils_2epy_1',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html new file mode 100644 index 0000000..a4c2be4 --- /dev/null +++ b/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..ba3909d --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html new file mode 100644 index 0000000..3ac4cfb --- /dev/null +++ b/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..bb00fd4 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['commit_2dcommands_2emd_0',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_1',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcommands_2epy_2',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['config_2dcommands_2emd_3',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_4',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_5',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['conftest_2epy_6',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_7',['constants.py',['../constants_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html new file mode 100644 index 0000000..eb19ecf --- /dev/null +++ b/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js new file mode 100644 index 0000000..e7bf2b2 --- /dev/null +++ b/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['detailed_2dusage_2emd_0',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['doc_5fcommands_2emd_1',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_2',['doc_commands.py',['../doc__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html new file mode 100644 index 0000000..61d86d0 --- /dev/null +++ b/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js new file mode 100644 index 0000000..29d814a --- /dev/null +++ b/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['example_2dworkflows_2emd_0',['example-workflows.md',['../example-workflows_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html new file mode 100644 index 0000000..333517d --- /dev/null +++ b/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js new file mode 100644 index 0000000..3d76b9d --- /dev/null +++ b/docs/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['folder_5fanalyzer_2epy_1',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html new file mode 100644 index 0000000..ad481b0 --- /dev/null +++ b/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js new file mode 100644 index 0000000..4c89ef8 --- /dev/null +++ b/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['git_5fanalyzer_2epy_0',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html new file mode 100644 index 0000000..2af8404 --- /dev/null +++ b/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js new file mode 100644 index 0000000..3d83c4a --- /dev/null +++ b/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hook_5fcommands_2epy_0',['hook_commands.py',['../hook__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html new file mode 100644 index 0000000..8d5c07d --- /dev/null +++ b/docs/html/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js new file mode 100644 index 0000000..fcddd7a --- /dev/null +++ b/docs/html/search/files_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jira_5fclient_2epy_0',['jira_client.py',['../jira__client_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_a.html b/docs/html/search/files_a.html new file mode 100644 index 0000000..806a999 --- /dev/null +++ b/docs/html/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_a.js b/docs/html/search/files_a.js new file mode 100644 index 0000000..876ef0d --- /dev/null +++ b/docs/html/search/files_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['llm_5fclient_2epy_0',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['login_5fcommand_2epy_1',['login_command.py',['../login__command_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_b.html b/docs/html/search/files_b.html new file mode 100644 index 0000000..371cc0f --- /dev/null +++ b/docs/html/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_b.js b/docs/html/search/files_b.js new file mode 100644 index 0000000..01a0bf7 --- /dev/null +++ b/docs/html/search/files_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2epy_0',['main.py',['../main_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_c.html b/docs/html/search/files_c.html new file mode 100644 index 0000000..5b93d7f --- /dev/null +++ b/docs/html/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_c.js b/docs/html/search/files_c.js new file mode 100644 index 0000000..6f265cb --- /dev/null +++ b/docs/html/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['penify_2dcli_2ddocumentation_2emd_0',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_d.html b/docs/html/search/files_d.html new file mode 100644 index 0000000..a9b1c64 --- /dev/null +++ b/docs/html/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_d.js b/docs/html/search/files_d.js new file mode 100644 index 0000000..9847676 --- /dev/null +++ b/docs/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_e.html b/docs/html/search/files_e.html new file mode 100644 index 0000000..db2d31a --- /dev/null +++ b/docs/html/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_e.js b/docs/html/search/files_e.js new file mode 100644 index 0000000..d0dfcff --- /dev/null +++ b/docs/html/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_2epy_0',['setup.py',['../setup_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_f.html b/docs/html/search/files_f.html new file mode 100644 index 0000000..82b198a --- /dev/null +++ b/docs/html/search/files_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_f.js b/docs/html/search/files_f.js new file mode 100644 index 0000000..133fd11 --- /dev/null +++ b/docs/html/search/files_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['test_5fcommit_5fcommands_2epy_0',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_2epy_1',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fdoc_5fcommands_2epy_2',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fweb_5fconfig_2epy_3',['test_web_config.py',['../test__web__config_8py.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html new file mode 100644 index 0000000..3b739c7 --- /dev/null +++ b/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..8362237 --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html new file mode 100644 index 0000000..2cef5e3 --- /dev/null +++ b/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..6c71456 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html new file mode 100644 index 0000000..3308c65 --- /dev/null +++ b/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..9ea0560 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['commit_5fcode_0',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_3.html b/docs/html/search/functions_3.html new file mode 100644 index 0000000..43ac697 --- /dev/null +++ b/docs/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 0000000..79bed7c --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_1',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_2',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_4.html b/docs/html/search/functions_4.html new file mode 100644 index 0000000..d12c2df --- /dev/null +++ b/docs/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..3c2e1af --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['find_5fgit_5fparent_0',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_1',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_2',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_5.html b/docs/html/search/functions_5.html new file mode 100644 index 0000000..7266236 --- /dev/null +++ b/docs/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..75c7e99 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()'],['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/functions_6.html b/docs/html/search/functions_6.html new file mode 100644 index 0000000..7f9fc45 --- /dev/null +++ b/docs/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..6ef2054 --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_7.html b/docs/html/search/functions_7.html new file mode 100644 index 0000000..ad0f88b --- /dev/null +++ b/docs/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..f0f0714 --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['install_5fgit_5fhook_0',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['is_5fconnected_1',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_8.html b/docs/html/search/functions_8.html new file mode 100644 index 0000000..ea7fa74 --- /dev/null +++ b/docs/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js new file mode 100644 index 0000000..8934697 --- /dev/null +++ b/docs/html/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['load_5fenv_5ffiles_2',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['login_3',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]] +]; diff --git a/docs/html/search/functions_9.html b/docs/html/search/functions_9.html new file mode 100644 index 0000000..d831dc7 --- /dev/null +++ b/docs/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 0000000..70a2559 --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]] +]; diff --git a/docs/html/search/functions_a.html b/docs/html/search/functions_a.html new file mode 100644 index 0000000..7018fc6 --- /dev/null +++ b/docs/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 0000000..0283fbe --- /dev/null +++ b/docs/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['print_5ferror_0',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]], + ['process_5fjira_5fintegration_7',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_b.html b/docs/html/search/functions_b.html new file mode 100644 index 0000000..c0660b0 --- /dev/null +++ b/docs/html/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js new file mode 100644 index 0000000..aa36dc7 --- /dev/null +++ b/docs/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['recursive_5fsearch_5fgit_5ffolder_0',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/functions_c.html b/docs/html/search/functions_c.html new file mode 100644 index 0000000..b642767 --- /dev/null +++ b/docs/html/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 0000000..8de5e4c --- /dev/null +++ b/docs/html/search/functions_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_d.html b/docs/html/search/functions_d.html new file mode 100644 index 0000000..16464b4 --- /dev/null +++ b/docs/html/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 0000000..36538fa --- /dev/null +++ b/docs/html/search/functions_d.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['test_5fcommit_5fcode_5ferror_5fhandling_0',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_1',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_2',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_3',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_4',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_5',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_13',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_14',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_15',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_16',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_17',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_18',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_19',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_20',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_27',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_28',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]] +]; diff --git a/docs/html/search/functions_e.html b/docs/html/search/functions_e.html new file mode 100644 index 0000000..e55bbf1 --- /dev/null +++ b/docs/html/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 0000000..60953c2 --- /dev/null +++ b/docs/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uninstall_5fgit_5fhook_0',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_1',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_2',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..b2d68fe --- /dev/null +++ b/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..3a1e6d3 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_18',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['ui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/namespaces_1.html b/docs/html/search/namespaces_1.html new file mode 100644 index 0000000..a4b1530 --- /dev/null +++ b/docs/html/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js new file mode 100644 index 0000000..fdca1a8 --- /dev/null +++ b/docs/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_0',['setup',['../namespacesetup.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_2.html b/docs/html/search/namespaces_2.html new file mode 100644 index 0000000..a89a756 --- /dev/null +++ b/docs/html/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js new file mode 100644 index 0000000..10ec4ce --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcommands_1',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_3',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fweb_5fconfig_4',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['tests_5',['tests',['../namespacetests.html',1,'']]] +]; diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html new file mode 100644 index 0000000..1981712 --- /dev/null +++ b/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..3cd36ca --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['penify_20cli_20_2d_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_3',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_4',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_5',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..607f4e1 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js new file mode 100644 index 0000000..37552a5 --- /dev/null +++ b/docs/html/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghijlmnprstuvw", + 1: "abcefgjlt", + 2: "pst", + 3: "_abcdefghjlmprstu", + 4: "_acefghilmprstu", + 5: "_abcdefhijlmnprsuvw", + 6: "p" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Pages" +}; + diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html new file mode 100644 index 0000000..fd893a6 --- /dev/null +++ b/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js new file mode 100644 index 0000000..ee0a9ff --- /dev/null +++ b/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5flitellm_0',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html new file mode 100644 index 0000000..5f8e440 --- /dev/null +++ b/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js new file mode 100644 index 0000000..a34ece5 --- /dev/null +++ b/docs/html/search/variables_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5furl_1',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_2',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['auth_5ftoken_3',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_4',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_5',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_6',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html new file mode 100644 index 0000000..943cbd1 --- /dev/null +++ b/docs/html/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js new file mode 100644 index 0000000..28d0871 --- /dev/null +++ b/docs/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['url_0',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]] +]; diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html new file mode 100644 index 0000000..47f1ec5 --- /dev/null +++ b/docs/html/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html new file mode 100644 index 0000000..2842f66 --- /dev/null +++ b/docs/html/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html new file mode 100644 index 0000000..77a7f48 --- /dev/null +++ b/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js new file mode 100644 index 0000000..d02ac2e --- /dev/null +++ b/docs/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bearer_5ftoken_0',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html new file mode 100644 index 0000000..3ee62ba --- /dev/null +++ b/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js new file mode 100644 index 0000000..c6d851a --- /dev/null +++ b/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]] +]; diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html new file mode 100644 index 0000000..640713f --- /dev/null +++ b/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js new file mode 100644 index 0000000..ea198d0 --- /dev/null +++ b/docs/html/search/variables_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['dir_5fpath_2',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['docgen_5fdescription_3',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_4',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html new file mode 100644 index 0000000..7b2ba97 --- /dev/null +++ b/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js new file mode 100644 index 0000000..0ca10cf --- /dev/null +++ b/docs/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['entry_5fpoints_0',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_1',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_2',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html new file mode 100644 index 0000000..fb1de8f --- /dev/null +++ b/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js new file mode 100644 index 0000000..6f038b5 --- /dev/null +++ b/docs/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fpath_0',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['folder_5fpath_1',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html new file mode 100644 index 0000000..cf8dcf4 --- /dev/null +++ b/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js new file mode 100644 index 0000000..05d3ba9 --- /dev/null +++ b/docs/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['highlight_5fcolor_0',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5ffilename_1',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_2',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html new file mode 100644 index 0000000..88cbb01 --- /dev/null +++ b/docs/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js new file mode 100644 index 0000000..6c4b704 --- /dev/null +++ b/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5frequires_1',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]] +]; diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html new file mode 100644 index 0000000..36c49bd --- /dev/null +++ b/docs/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js new file mode 100644 index 0000000..4d28226 --- /dev/null +++ b/docs/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5furl_3',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_4',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html new file mode 100644 index 0000000..0005c6a --- /dev/null +++ b/docs/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js new file mode 100644 index 0000000..1b06afc --- /dev/null +++ b/docs/html/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['llm_5fclient_0',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['logger_1',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['long_5fdescription_2',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_3',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html new file mode 100644 index 0000000..757c068 --- /dev/null +++ b/docs/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js new file mode 100644 index 0000000..0081627 --- /dev/null +++ b/docs/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_0',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html new file mode 100644 index 0000000..451a136 --- /dev/null +++ b/docs/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html new file mode 100644 index 0000000..aea4286 --- /dev/null +++ b/docs/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js new file mode 100644 index 0000000..e4b61ad --- /dev/null +++ b/docs/html/search/variables_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['processing_5fsymbol_2',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_3',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]] +]; diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html new file mode 100644 index 0000000..ec3793e --- /dev/null +++ b/docs/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js new file mode 100644 index 0000000..90e3cd7 --- /dev/null +++ b/docs/html/search/variables_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['relative_5ffile_5fpath_0',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_1',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_2',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_3',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html new file mode 100644 index 0000000..ee82fce --- /dev/null +++ b/docs/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js new file mode 100644 index 0000000..2dcc04a --- /dev/null +++ b/docs/html/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['success_5fcolor_0',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_1',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_2',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/setup_8py.html b/docs/html/setup_8py.html new file mode 100644 index 0000000..77892dc --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  setup
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     setup.name
     
     setup.version
     
     setup.packages
     
     setup.install_requires
     
     setup.entry_points
     
     setup.author
     
     setup.author_email
     
     setup.description
     
     setup.long_description
     
     setup.long_description_content_type
     
     setup.url
     
     setup.classifiers
     
     setup.python_requires
     
    +
    +
    + + + + + diff --git a/docs/html/setup_8py.js b/docs/html/setup_8py.js new file mode 100644 index 0000000..241d406 --- /dev/null +++ b/docs/html/setup_8py.js @@ -0,0 +1,16 @@ +var setup_8py = +[ + [ "author", "setup_8py.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "setup_8py.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "setup_8py.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "setup_8py.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "setup_8py.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "setup_8py.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "setup_8py.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "setup_8py.html#a2aa722b36a933088812b50ea79b97a5c", null ] +]; \ No newline at end of file diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/svgpan.js b/docs/html/svgpan.js new file mode 100644 index 0000000..2678d38 --- /dev/null +++ b/docs/html/svgpan.js @@ -0,0 +1,323 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + try { + if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections + top.window.registerShow(sectionId,show); + } + } catch(e) { + // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages + // locally, since they treat every local page as having a different origin + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} +/* @license-end */ diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..fb0977a --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/docs/html/test__commit__commands_8py.html b/docs/html/test__commit__commands_8py.html new file mode 100644 index 0000000..26dcea1 --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_commit_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_commit_commands.TestCommitCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_commit_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__commit__commands_8py.js b/docs/html/test__commit__commands_8py.js new file mode 100644 index 0000000..1aa1dc7 --- /dev/null +++ b/docs/html/test__commit__commands_8py.js @@ -0,0 +1,4 @@ +var test__commit__commands_8py = +[ + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__config__commands_8py.html b/docs/html/test__config__commands_8py.html new file mode 100644 index 0000000..b281e22 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_config_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_config_commands.TestConfigCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_config_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__config__commands_8py.js b/docs/html/test__config__commands_8py.js new file mode 100644 index 0000000..2eebb0e --- /dev/null +++ b/docs/html/test__config__commands_8py.js @@ -0,0 +1,4 @@ +var test__config__commands_8py = +[ + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__doc__commands_8py.html b/docs/html/test__doc__commands_8py.html new file mode 100644 index 0000000..71be0eb --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_doc_commands.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_doc_commands
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def tests.test_doc_commands.test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def tests.test_doc_commands.test_setup_docgen_parser ()
     
    def tests.test_doc_commands.test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def tests.test_doc_commands.test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def tests.test_doc_commands.test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +
    +
    + + + + + diff --git a/docs/html/test__doc__commands_8py.js b/docs/html/test__doc__commands_8py.js new file mode 100644 index 0000000..31809a6 --- /dev/null +++ b/docs/html/test__doc__commands_8py.js @@ -0,0 +1,14 @@ +var test__doc__commands_8py = +[ + [ "test_generate_doc_error_handling", "test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] +]; \ No newline at end of file diff --git a/docs/html/test__web__config_8py.html b/docs/html/test__web__config_8py.html new file mode 100644 index 0000000..d2cedc0 --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_web_config.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_web_config.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_web_config.TestWebConfig
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/test__web__config_8py.js b/docs/html/test__web__config_8py.js new file mode 100644 index 0000000..d691683 --- /dev/null +++ b/docs/html/test__web__config_8py.js @@ -0,0 +1,4 @@ +var test__web__config_8py = +[ + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] +]; \ No newline at end of file diff --git a/docs/html/tests_2____init_____8py.html b/docs/html/tests_2____init_____8py.html new file mode 100644 index 0000000..3bc1efa --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  tests
     
    +
    +
    + + + + + diff --git a/docs/html/toggle-alternative-theme.js b/docs/html/toggle-alternative-theme.js new file mode 100644 index 0000000..dc822e1 --- /dev/null +++ b/docs/html/toggle-alternative-theme.js @@ -0,0 +1,11 @@ +let original_theme_active = true; + +function toggle_alternative_theme() { + if(original_theme_active) { + document.documentElement.classList.add("alternative") + original_theme_active = false; + } else { + document.documentElement.classList.remove("alternative") + original_theme_active = true; + } +} \ No newline at end of file diff --git a/docs/html/ui__utils_8py.html b/docs/html/ui__utils_8py.html new file mode 100644 index 0000000..1ba4ca7 --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/ui_utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    ui_utils.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.ui_utils
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def penify_hook.ui_utils.format_info (message)
     
    def penify_hook.ui_utils.format_success (message)
     
    def penify_hook.ui_utils.format_warning (message)
     
    def penify_hook.ui_utils.format_error (message)
     
    def penify_hook.ui_utils.format_highlight (message)
     
    def penify_hook.ui_utils.format_file_path (file_path)
     
    def penify_hook.ui_utils.print_info (message)
     
    def penify_hook.ui_utils.print_success (message)
     
    def penify_hook.ui_utils.print_warning (message)
     
    def penify_hook.ui_utils.print_error (message)
     
    def penify_hook.ui_utils.print_processing (file_path)
     
    def penify_hook.ui_utils.print_status (status, message)
     
    def penify_hook.ui_utils.create_progress_bar (total, desc="Processing", unit="item")
     
    def penify_hook.ui_utils.create_stage_progress_bar (stages, desc="Processing")
     
    def penify_hook.ui_utils.update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     penify_hook.ui_utils.autoreset
     
     penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
     
     penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
     
     penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
     
     penify_hook.ui_utils.ERROR_COLOR = Fore.RED
     
     penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
     
     penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
     
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
     
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
     
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
     
    string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
     
    +
    +
    + + + + + diff --git a/docs/html/ui__utils_8py.js b/docs/html/ui__utils_8py.js new file mode 100644 index 0000000..04380b0 --- /dev/null +++ b/docs/html/ui__utils_8py.js @@ -0,0 +1,29 @@ +var ui__utils_8py = +[ + [ "create_progress_bar", "ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] +]; \ No newline at end of file diff --git a/docs/html/utils_8py.html b/docs/html/utils_8py.html new file mode 100644 index 0000000..ac76dbf --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    utils.py File Reference
    +
    +
    + + + + +

    +Classes

    class  penify_hook.utils.GitRepoNotFoundError
     
    + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.utils
     
    + + + + + + + +

    +Functions

    def penify_hook.utils.get_repo_details (Repo repo)
     
    def penify_hook.utils.recursive_search_git_folder (folder_path)
     
    def penify_hook.utils.find_git_parent (path)
     
    + + + +

    +Variables

     penify_hook.utils.logger = logging.getLogger(__name__)
     
    +
    +
    + + + + + diff --git a/docs/html/utils_8py.js b/docs/html/utils_8py.js new file mode 100644 index 0000000..073b162 --- /dev/null +++ b/docs/html/utils_8py.js @@ -0,0 +1,8 @@ +var utils_8py = +[ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-Penify-dev-g.tar.gz b/docs/penify-cli-Penify-dev-g.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..eaccf17fbac76dd355fc504f7e43609046c694a7 GIT binary patch literal 790624 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�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

    <-U_AzOwA;M?X#ahP=PIqtE@r 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 z zRhbJi87<#BsMqobO{++=@)&scDTThlQ){<@b)QRUqgZ)+|9+esJ7R4I9PbNu+`79X zzIPQA2QIxhR~)y%30ri^0M$zXxX?G!2U7bGG$;DwdmEZl;2@PfMcolL2d?Ocoj}m@ z@HRLvwW<#e?!C#dmzyzE-?ju$5#B$z2VP{BTjmf%9@zJFHpLF?%B8xyq-c_<1AA`cYwru2*t)wjd*ZB~V`D?y zDMOHvx5S(XrDip4p9SQlASf|*18^qp6ojyuYt9UipNdvXsR>*~jhYX>EoP7SMg!dy zGg;U?^W5sZFool}mplehm&bnSg$YyP>SG}+Mq?+gORI|q#WP_@T~EOKqhcM~7_mnL z)9z@;LzuGZ5wvVUxp!;Y&AU6I-iN6*4t69kr6e8@xQrMnj4-4F;UfxL!l|@z?@elH zngD0u6-FoF^n?p7z}@X|YYsw=8QZ8)u@yyTBe8ZGzn@&ji&+U{9up}snXk&Jyowk3 zV{ogV)RSn1RxL@iUzK^fSk@{;p>bgZ4@a|`IGrpoIUh&N@+<#f82;N#AjT>ooj+vr zSEsS!J4#@sa$DvwCjTze$}wC1q?ro5%K9gaHcQX<2q8g9y4mc*^!Z8fY5xamBAUeM zqsjEqlY8Gq8R0E2!_@Y$oAg2Nn%yq$c^TytZ@g%g6dhQT-h?}bw7lvKR(;(5ib~jG zF8E(>HeRtx5^oFYgc~r^n8^U$MC1H8}u|0x4X$X`iwXfzqFm6wJX0VdNvOb^a3$0 zzMi4E60wLQBIwFs;f(#q+GLUJ<|CML6>!xHa9q;G8%(Zwe)92k{PDlRR*0_id{HMs zeb`)JPu0iAJdLlwG8@YX{%ex_Xt09A5$rBz<>i==yH?Io63_GIzzK#RHXX*wVg}-? z1fv9cru;}ha9{$qK&^k=s^g%zMTXv1B_g*q$r}dJs)IM)i9;shFnSnc(w<82v!&6D zN9TCf1GiXp3MM}DR{Kcc))*4}##6W`g%lzJ^PFpEjX4Di-CM7uie7<>K4!)_&QCe+ zU}djzzSZev0BNkeVk^I-8XlLI+4-TyIZ3$RHtu*T4Ho;E)F0@b5;K>6u1l4N&7ZO?`pT^KKv{EO%< zdS?^NVTi8?*treY`R$vtkNB(r=p2fpMeWWdyfeLUCxmi9M#ef+H;*&;xy~1Hgmp*x z-)|@HpP!u1rVHTV(c8P592t_1D&R=E`C0ldF2S{b9-yqx+8*+^(O+MT&S%%)FHMrG z`g6Yj=DAC5AuTUGm{^r~7e~4xv(8#Ke@X1*WPp35@de2P>mrL{%XP03Cucd7-KIHS+HC#Ds zy=`(GU)FEK4w?f=%KT;ql$(`zBdRjTrR{gO$u0Q#Rb^aUJCn-ccHZ8ese+rVaBSpU zk&HOclMyI;j=^WTD1=Cr7Q0%J0SE$6_bv+L;mFMo*^@AB)MprEtryO7GG zCA>7Dc|;i29$n2A^JrE?DcwBzHC(!hOCZW3FX!W3ZMZG3YVUsf6qoYh+|#Gw2BgV1 zKfK&Yku}X0&<=Q08^yxNs49fMe>yMIPtpI)rW`(cn)f|C;g)o0@8vrF>Il^S)97q* zeRCH2?t(h?4gBv#nZ65avm{ACYWx^(0p2`Y-+fkdbJhxTd~+9JR8;gPFY+>6E(pDk~sijx%kGE^bbKNRs>YL4?j18A@=;_m%rcUn$y93!raTrOXEH3}| z8VtA5Vs?3Xl@IX5qKq$bERE9H&D|(W%?6KRMY z|CrG8BQR(4avF#BAe$cbs4%fr$%#r#{JEmUIS}IOKnL2u;7Lo}moN@q!#H>whQZEy zKQ77e3aPNO+V|_ueG7fNv))_mvg&H>Q)_%Xjo&ZIJU^Uu59skS$1sr&q^cT&0w>JTetfwD!w?Z{r|__vo^PlBRQY_D{!8@vAso01mCnX z-pM-i$gL-tN<6c5w{@j}BxrLZi9V8Y;+e{Szixm}Su!YV5?hH>m6#6@XmmIF0W{EL zxbWj@P^~Dk7uIo@ClL==c9>4bH-CDCw?t^~28N|Q9i-7ssY)w*qqt1R6E+n#h18ZH zPBSoh^P$wNtc0v%7*z+Nw?C*o=HI{oCV4u`LQX)F|Ckg%&Dy7D1Y?HzPXyr86zwWd z=hHMpt(rkSQo`I`j=~+m@ULE1v04!{mRKMWv-HA#0;P3CV92NAS;3D7N)4|p}SCptPMJv9B=TH&o z)WFd&fEr4h7F2@K({g;MD)C;g#iwaO(y#MgsghvS@`xEwF&Kexq zI*h1;KYDiy0}4KLOW&vaADU!PQF1NjU@?UFL}-#I1>s$QIG+F*;P)jtfkGNd3Idnm zIL&1?uTr)Bhg2(dJ*YEqnpXt1idhLzqqISp{iKNGQdgG#8~hkHPA;a6mXH-5j(Ln)U|{o!{EF0|mEWP`yW4UtMVTQK z5^W5N2;mqOnfz0#*rDhOUWkGMQG6N^RKy}nS5`FB2c4v6ow=nlC)wTh`0%gfyKxe7 z@YV?UjZWb-UJ6uyrb(AC@KksP1Z*Z2zkmCDkZe|}g_Fg5wjIz{rE zX;?QbZcgg)*%_+UMGf`UI4Quou7$$kB>nvmXW9;PK8B$$GX&K=5FwcS<= z)t`swujSnF2lB=Xc6|=$-QT;tCIpNIEG9VURn^sshx+jkv|Z7yO78d$?Cca=gUj?C zW@9WaIjVP@%uB^gV%}w{pCzlm7Nq#6__mD8DT4)3?V*od0L~f#HF!B~fA|_&+dr85 za8@Y4`w5t~^&J=hGB#21*+2NrzDQsuGB-+2kiAcY0nzEbtOQhNJ{uP~*>5RJ9y54$ zun;4!Wcd;$@V=^AO!w71c66O4(Z1N}fUl+RBQ$CqnjO) zsn?oeU5&=sWWutW-IgEubsfG3wZ5pY(P$&zd<~Z3ajPt7p2G>B1mKSDp8STc8StSj zJ2##?aL8HhllF`9(VdgILcYxlJ6U5*hO)YrM5?S7`9eY)@o+5PWo^iS?f?~-C1Hvd z4sa80sJ=9s1Y_y!szN1TK}xt9T_w5N2o!N=Z7g0IC&DI?7D=mp04yo^MW z@;Q{0fxW_N!nBkk4F9^k71m!}6VlDmk7c{J>Uq`uG)RjgorvyLTbk+_?uD=o}bA6ud6q^9ptwmUkPJ!b6&|zj~RU(KyTx6P`~@ASS{`0k33e| z;-XrOZA%a_T3TX6IapW>u5e&SG!Bi}vK-rG;7U`*Ov7Ta$@P0tJ})xp-6y8{*FE~O zkS_*Le|bLo_0^e>y5Ew$a_xQ$4&(ST&5I)svmdjoWKYFCD`RtwLCZ|)V5pq#aLcmv zIPeU^3LV?BLX%ND-YCkc`?8pF&z`>i>F+O}zIxW8-#7m^ON--b`Zr?vWstHg8ps+3 zxDd)_#brZZxVlKD@-rocSH=3O0;KJQR61DNNX_$><=ObyBB&)!Q?xeQtI~9UTX^eY zVn=dSuJO{_?gq{@H9Nl9wYZlpClOA0OgWFhio;gWd%-zuQd!<|_5*jXj7#@qoV4l! z6LJZ!L`gOZ%)l@rg9R=)0|AEG1%~Nz(=cgZ(SUcPJ5E(dkv>jNR%s>nywEf~8dA@p z0UjWU(Xo+ZhOuE;fxS#0uh7hGf1_)e)fLX8ND^lEq%&hun~N1ww^$k4PbL?0pG!lz zDvd!%tuIRKiN$uYF{Ix9VzqX6&@w8pWTV}o&@H3_`pFRKTicS=q!9M>VWR{G!=6c0 zrg3sHmqev+8+XV5xsK`1$N!tuwYTwqpW?TT|J%m@ZR7v8@qeFx{NIw)Rzj~;_oSXV z*~av3WBRr+ecPD6ZA{-brf(b5w~guB#`JAt`nEBB+nBy>Oy4%9ZyVFMjp^IQ^lfAM zHY=v@{_8y3*uQP;-$#o5LuPHlaegRS_frM`-G55>QAP%KkXe$mi(nD&)WWhl-iZa= za9wH|A=iUYXMl&;w`myDh;xJSdqvH>0EznvVrCR#?du+$8>cK9@#*yl)2>KX+dohS zy{w9~b;6n)+xD4fM0yar(5P-kwyj6tu$Ym_BjbKyO}~Jn^%w}G?%V}0MrFmaj=nTn z6>n>Wo`ozn0^Kp9$TR~AY~V&w=o*F<>v8P4_oC6$>CIyxk-Be4A{;^>zDH>`Dz%xU zQx4cF-)RJTROz~JQADVTxGG}TA)@6_HweK{bGWS=AsB3S6zWmLbklXB*t!=Hp}UWP zi0Z!O?3&9=v8_>t^VDOFu&YEIk}I#kI8qaCRb;M1xWKSHhlNHEQzx*P<5F(GQLv ze?R-a+>&&j&3F%uxf<%$^8ErsH+0uvCNl%irgrFuhHW{9!Tr$l?q`TT1`??|hHLJ9 zc7m>qqt$nMEg78Ed?tC;jwKeOZ>Jo%YVA-C=RRsgByDV9fv!|D%-D(Q@fFV|41>M| z(aIU@9@T&IwePt4@i)^TzdDwP$7<)*A_`mVU}vhiukSgSO_vAHh{>up?2)W2>B=-u+PR(%ZC;6}Eub#rYqJW!x@MH)Topcr< zqMK>GAo3H3W|Ca2_k?UbCUOIT*cpg171i3^QMIf}jqa*j9%vh*F`T5Oz5 z3nEyxNX1eadHvguN2JK`qy`vJ>3fZwUS=uIV7z8A=v|EfCSStPgJD0-3qU(iB*4g_ zlX}T&ZUJ{8qL&g3;QIVYmZ)h)9|6tgNmz<{rKeVj`W`ObI-*`(y+YKN9_ofk`V#8R z6!cT_)A{)?%S8Rz+0V74C)Wup6@%FN5yLQCRr-Gp!bHX88!k+g3rv+T>9G>EjxbSI zzf71cUVVFDp(2+0dP$YV;NMTWV33wLvZLi=sD%-qoRk1O8N#(jmJ6V}`Yx(`%Wrm1 z)Ix0;=!msdVXv24;Tl})Ct(_K5rFYzC@vS(r|Q$fE-V+;A4_Wg$O~LNPO@~055QTL zGcPCu%E+vWU%-!^eUb86B{+J>XGhl`t$bE4o7BdhdVOUrV^3NAUGllLUi8p{xx3`n zUq-jOuvwOH(1`I2P6l4NSxZ|l~> z(`fIo!pW1i-|2{YG|X z@b5gGzQLVnTpUJ~Oy%41K*%>FN-*ton%!tSVa6HG1&dA4F`4p^=Q+!69#%zs0_mb) z`$Y=Da-BxDxSv+Ee94MHMXJr7{ZWRKRf?cT+}S#cKwbS^iad$dUVT zo8V%9LAnws<=+gTz?&Vhkr0{&WL)y_ZH}r#sF+{AfARc>{~qDt>gO;2@%@W8i|4ih zken9-@;u&&)7dlkzz8I4XU^?GwTEaX zC*KoQ1!-|vq62DT$+*)jE++t%O5J)SNQ67PphbLjM9#~0C90vvCFoEq&)y|DFRS?C zoGX>&=o3EUKD>PXl60z)WSgy1m3x;fo!VoQ^Ex_JUHvkh+TFAL(25lWTR(l;g?qD< z>X||TqV6NIU!ZsJWjf0Vrj(FpeTaj9#$=uYMHD?kXjC3cOI>@N@_FPm)U*i_Iqkq3RG&tQ9(h zJ|Tdd&oYi;kbyR4BISgD5*x^pi0^QgjT1ckWXkggR)Zg3f~to0)`5I9%1%kD%~p2G z&CHdu>#^&39c8DkewnhH-`>3`(W3KkuM^R=YDm;98$Wm`*UB)Ld-XRC@cL*00r>_; zo4sa>gGB0xU=U)gF+pxwFUaxv!YC6E-t{qH;0l9WyULFU9gt_3?_iQlxiB~6*~(1| zwfRKw@QnzMVSabX(W72s&Ln7j;W>Ta_*WKdc*84z+5v47s5Sk4* z#2S!auOhIqcIqmsYK4)BPw{Na+k_YpdqDmPCSlnHQA<>Py%VtTZM9m^>WDL_=g!7A z8XkDP+!ThdC+scX2`}070!`tGIQ+HX;~T=RSu)0Az&KB{i*gnPM3p!s=RnS(2%vv` zb%r$sT(Fcdal0_dFH3=O>+|}Bx{iA6-m0XT%(=Uk?wk;AOg$32JF8i*?nrpYa+1$N zw3*`>pi@?>kst7g%x1Favp0}c=D^lKel!NMl2kqRKRn{4cI7!um4V#jK&N#KWOem- z8pw|($Z9qFc-_dV`&n$_RIiP+Gtmy(NWh`V&%!*u9ZA=*j;BiV7*)f9aJ4xcbW-0(TcDcD|_~$v|bO;(EatcaVkF{&kG`tdd`LQ7=isQp(`!Y zjuDK;9!^NMP1ugXsg*V)7<$D{$N0R}MNLd9zC+^^OOv*-DeX)E4XmKFG%zK6cUqaG zzm+LQeA~to_F>uQG1M|+7hINV3_~1j?Qg_A+NQ0A#-=o`IJOE`i;!3rvkOBH66wsW zYBS<`s4za;hU1rKGO85h)?|D%CZm#6JxoUT5pJ1Xay(0Q9@1UMvnbElZ+nF%0!vj&&-?$yM6f5y$ytAzJ%(4pxT#EpCq)FFQKe{8Ik2#NDoNZ zUNn_Z{+R@9l7du+*~?S}&GS}*hbHBX$QvzFtalQ>(gD>6dR+_?a2Hj%CTUL8%Km{} zsomobW9>8 zZdVstjVd%L9L%>$$<9M(Uw`=DU^p0lca}~sFazsH zYD0&gV_D)a{O14apmpnO@tlGeOur&$9|@k$Z-(NBkgw3AyQ`e){f7PqLop!1?JR^; zzzZo8lA>j_!kcq=b1I&nHm0l@8gXp8x=RgH z?^DoUG5!tLGQXlWjC!4#whQG<@OGT9i2f-M@P&{6ConW+jz;8wfgpcL{n{|NP5HTU z5g+j^OS6%fJj0W9OH=;OtrT5}j5Ba+8D?9- znqgqZQA6ZPUS5q+*-(G!X+(7gN_C>YVLMi6agRl|ABUC`*-jYfv5$_VOW7T;8m^=H zre^D|2BSd%t*M4~mW)QTA{p19#X1Y|5E!4bAm)x6>7MR-x*3F+Yc9SEjV{$}&9z<4 zautBts{;m713<$at9}r>)TVl9x_FKlc;z;?th)fS0W8d!YihoyfXrPTG8)H003IQY z0&bY5>*|K%aU+TxhdFM17c~)O)G!6osADN$^LxP7g3Gr+O>zJBhn+mwB)p2G4gPE4?c%Bd9-He%wpoY{lSZFbm-vOIvy1-^s zH+%4zvpQtH5t`g`oQT3`)InJ}E|8V8F!t=gkDa?9Gbr*I)$JaP=B*Bz4x=+N9BPJ6 z%%PFM;g$)KBl5W&M$Awk4H-?Kt>UyH2zP~(Q|kYD$Z+Lx6pj<{=kfOJ?B`Q?1Cnk$ z9*s(~F0%XR7?u66TY6Xj8>X#WTmAnje!j;o7^0yaST>`MfdLG*&RviwhVO^`q2b&9 zKJITYR7|DWV%2A1XO zz8hE(2mn8Dnd1bZPsKTbwiQ1#eB0m0{oOJC$LU2ftzDZD<5m#+CRmp&=5g$qR-iLI zw3+F~t`&wYAuu=FqZ3!*)h+3<;*#r=>>)!#n%6`_w>(g+sOW&zk*foYWpfu_#_G0PMa!e znz<&IY253**Xd;V0orOM(I-)kolO4sw+oOGCDW2Dt8QLvW@3TF*K)DDSOB}rIHf`Z zRZC4%&~}I)@Nng#sm)ZIhNLb1P1Wm9{<=Z`xAQ(Ep5r&)&+}J#@h!USKQlWri;IA@ zd%NrSUog7F|03Z0f&cI0YUF>rCT$w}CjMVh`VKpGl*2+>0n4$?`QMQ8vrFKAV@YNX zG*|7-;5LKc?U4Uz*!kAiiur#xAAT9G-~T6EF75x5fYJy4zmKbt|2O@bQCxhRGz9z_dVsG-7gbD`3t1FM#!z=YJ`Khxz|LuGRBD4tp)$ zpSARRi$ zvnV4}#GIz#8u$dU_!B~{gRg;AHh_#PiZZGg=xRWX8K-fqdC%XReG(|`3&{^#{G2S?p`{o^;^ zzvwwFx6}EF_d1=YCr_RK7(XuR5$9wajV65??5NXu_6np1y6%*oJMXxck54-%KXfj! zEsB-Pq+8T#dTEj3O2Bk@IUI~8#|_O;rIf90%IYYEpP?=y2g|zpztjH3ajR#2&fF6W zy-<0lq22LiVJjadXVG|~i{l?pzICk_yVl5m+#jE~y?l5c75#WnZ|B9cV>Pd1mptWy z2G2rf<(|$w+mt7kE1)ylc|I;`<*g%AsxSJ9cFj%O>5l+E(ZHP~5eQ_v4TBDD-#mN% z;+2zwT46n(vE?*^){U2(>Bk06Ev}AR`DxcWLSBdM$vZvChmg~0tkxe!r}b);Pu4t0 zm}`o_imqRrO=AorRTjpTUx$O{02;pvIwGTfnuWv-!z^|w)v>EmPF+E$%reFjA=yn( zqH*e4pe5e<^32~I&wC-DM1APthVuCRY5>vVV-e#HL8yHq? z;@t$pbUdi_-R;8rzJ+JquC0J$^6b^q8%Jb5W(B~3K8+0{R+`7#0v7k($vF8V@V^Mk z=G3!T@BRm_8i!^qoA)TaG~Hy-?>e1gc;2zNdux!2$CXdU$=TC9d9FuBl7Q5BZL8G$ z51}?rl9SHDzQ!s#MQtZql3-te!{MP#3r zo|eDdnPo%#nKnxV^F5 z38Jjbt-WfEZ%5Gu`jKzWx*K48tS9~V+t7Lm3<|gHYcJQVz3fCsAO<`3XQ!{c(DIh> zFG6?oTar7m51!s9er=^DjZ zK7iTH=o5CP1aUeBb$8OSvufquzn~OVL0{?>X8Q{N#z+j4d^%1v2B>}BFTR_`kZWSu z9=G1cgJ|?y3HT^SoeHM%Q9j05b!A3W`^^&xS^F5`q4gVp*NtqA~oeiDu0me4MY7)fxU!-2F{CM63Wub>g z0t!}GJxaM3ww3Y%hf;Xb4wdKElRe59rWuxC#FOnH#1ivl4@LTn2^GV@l$a$=FRHBqY?>3#2lyzK<^md_gnOVuX8i$-S{Y}!mk)4BRN~#N z_dwYjx;fys5BP^x&MzHG{PWAh8O`KLk-O1&*n|}-J%db(6#>xT4Fz0;UI1y|lLjxL zc`gw795Vn;!~ypaen15DtS}iu85k14jIvnbi0LpiSPBq%!j!PaX8 z1k+Z~6;w2+@u4|JpaV=|8<0ldHU?cX7+^p?2@E8LJSoBrz)~Ctpje;<-()cJLNYLe zBFsC(jWQzyh2SO8GtH2iWG0OO0f$iRg8QafZpM)ZNYs#l2WW=e;BRQsA+Sy(!PO}V zMcSN{P-Ql;K#mMiKK2$QRQJq$-NUO$@Iy2LMcc>lbbhZ*g6$2qKP^gcQG$RN{i%5#}a_36P!0R_UQ0+g8i zk6)W0e$M_dy0kk6T}gnW4nA!BTBCfVKQ5Nu=Jh`UVhuj$A$mZfwyHQlCIH!34*?7t zpbZL{kA*=p8RQciD5jj+K3fd+W9AIp0>>?%GFp-z3~;mCL}CNEj`!zLnwIwTAOlX_@tIWy48di5|& zxG*$jY-|~)iaAF-wr$(CZQFM3vTfV8ZPzZ_ z#(&Riy#5_GBaO5&(n!_{X6C1KxdCO>nkbRc_(#FQ$Y3%}t2n{q_t2N`oB~_j2B8K= zqU+q>O$%3Hyx3m%dA^HEL9K+?fSL+xHs$W??}{|3)Pz*@-+5z$Pia3S`1${U6ODaf z=8w_SLtY>MMm{9Y7R5pr*OV|qIybo34{7&R-@a=o;4dSbU~^AS2v3 z^+v#3e0f^`q+u@8u}Rl>Pn*r%#jo|>XdG6(BIY0p%69O2K?mO6-Lxt_Sz2H&HuY*; z4xU+@`LOhW@Z+61e68wF1w{l&)uU^(-t@Mnz9AyyCMcdAZ8=p`5X>{`X-c->8z4eM z%=Ax;R+ME8rP}7b>NUSI!RejM5orC^M0^dsNS9jC3Dgh8%AGo`UW$=x6q~L!c6#w1 z&4a7gBC}M?L;irYTxBXcMtt~Scx>)O;R9Xad_Y&ppsCd!p6FhEFIBxL{(L_?yRo?W z3T}C#>E!@P`}qZVI;;{~WKFo4l`L*;Z;Km#=Ey>hj%?P;WpKwFYzmQx`!}4( zqzL-2wroCTFKWFJ-<21{=^|Qi$DmqrxM5`5vALS8q6dellZYUQu?QTK-VlEZWyiR(|_dN~td`RYl)E91Y@%hnb^ zM|wy_3I&{Wo*A2^)Oboc1Mgn=Fc`1<)J?{`84fM@ z{*O18ofAg$p@gjK(0mfF=VU2JY4--wELahn6m^K9^>`6DF}>$~jeG7HlpT^eelAbe zeHX65$@cEeHwAe&CI7=`wk>scJng)u0iDz@DCKZZXT=**MS;L=2{s$Bgg@ioe?4tw zaWB8{waIrZw`Kw_dCaSaP%re0X2)mQ7hXZh6XNCLs7)LNPt`FzVPPcPY(00FUx&X| z3L)pNzZXvt?;#YbGAU;5O?M@oRYYfJap#}@i<|zrvpG|JJXaXlQf6?a(x8D)P>9w# zb6$G{Xh1bITSGwtb-=*)t%gq8M@-e)ZG9O za>2SdRQM070tFlt+?O~dNFy8S?23^O2f_J8j(R{9u-P=|lsX)x4Zfl}&O*2UooVqo zN@^`KzDqq>2^qg8F^M>3A}>5{c4FbMUw>YP*`gsG9#hdZrt;xF4G~+=fQN{fx9h_z zF?PsS0~S$pqDG2r<_3D`qpKO-%Mt@W#^Zg=^1pj*x~u0F@|=5nDNZ`|S}7$~&!&

    dbBxMljIu&t$NMJ*A*kopw$ir_h>%8toTV|6%0cZZo#=|-C z6yyprMs{PlzL_jrleOdR#xe#zke!Gp>ja2ExNLXI?@}SR;z*45*V8#!XgMm&DUR?! za;_^7dytcv7+njI&Y5s$aGWV~_7onoVR&Min=E*#QHvba9u9?B=1Dux#PECw#M?md z2bN)T?y);W1^e*;=S;xy*f&M{kpQ~)%9Q*e4yfuei`BEsi4U-2!5@4`^TA-ph_<22 zc;1POM@&Xc+36H+IDbc~z_q0XIYV-(4y3|n#d~g+XftzEnhYgYmg0>ZEC(zO+X!6> zMNyE`QWIr<4jKVvg;^J-*0cvOh(Mv}bXSU43n!MfNmt$rgY#L;d0z>vpg*QQea&S8 z4vY1~(~y<;^+%k21MJ3`NAEE4I#pe0<3Wkflq|UAo(aP>cOlj=h+)Gb&#aDqhhc=W zXfLXk;Tg?5%(xmeu%Q=Ze+0=Em>Zf9MdsxMkVjfo+t#%wA>wu7cp5=Gj3GNv&cO)b zDK`qVYQ*gtKw6z6Oreq2F<6?8QSsGXC$Z>FsJp<9m%EqA z7Vudf^{TM+oVkic&C9`0Xj60}dTg32`k5Zvvc)pNj7Vu~{1c$R@CjD~=`)WZ8il#U z7a6G#Y!p`hGD4dU0_RKi5$%A7M;G4aQYEuoBAIQ0OdWSzKg(bqB81PI0-MpJ=8&xa z3Rxryw34m6ugCWTmOPi*KffcG{!O3U^}i#&61=(mu+0Sorqr5q@F_5%ll3fA>T^E^ zRoy-LTIQe*Ir_t?eh9Q&Y8LVE?+q5|4Tqgumr!{70wXgL91>r5nCY&*gs~BE+(J*s z_a-Fpe|5e+PfjN16L@iQq}UsZzXnjA*sNn+JuiH8XcnPP%Y-RP&rbm!r;j@4*R3VO zxiHTuLVsj)Ov;`42JCVzK;tGSIW#C1FK80^zI@8h2bSh@{B(X}7;MEH3M9%$Gu~n*(GKz9e2iB7PY9Tf%TH)~4ov40`-8<;s|P*7>bsLXM93W;Uy%x#wyQL@^Yi zjdv2t!2?aoHhSH)J{M4b-=P2+6_k27)Wsjgsusx~H`h)}1Qd*_l7dISe@<^@u7=#r z{0-ra+TPbyP2gXqQWsmZ(lq}@8z7dsKxSU8FS-_CpvUCn08JM&3f=EVUpAWqImxRU z-KI8z46_@qW{B`KRD}l6QLL5!{0+OpJ$N+l!=|)evcXy|x;QcSb1#^QzRm<~q}e*A z^@X;Pc0y{yW-AC=t;z`zpp6E6i(N z4tggMC%j3>j~yQ)GiS?a2c7-=>1KS=1)GyeFJy+J0o>g*-&KFf719NXRT}WFZq5#{ zC&6~J_3p&$!fCEcmj1euWwNSFf?&sUtNYivC5b#Fm}3YWY7Vpzmj-b9yyrH~2bLRo zYI0X%ucu>B@or~FFgRmv^4Q+9)gGad-#tx)B3`bf1TL)@58fNM@n(a2*|1hyt_Zjr zOCiAsf@c5tFR`QIY9!C(xEM`c&q*V#sXXbnO>U+Wo`kn=%xTn7O&s;VynDY7|5usD zYQ&ndX+B7Tqy1k9JAn`l4GNk)XX-;CW{%9(>T~dPM@gKDG_t|W3P1DBq3~vAvf#|` za05m3o7XVk&#%HqWbA;tU2Oy!Q_XzBmFJ^(4CS-;SOM$3+Cz4=em(L<>{9B(fN3V1 zs2pa(l(BS22HjcC!{}kC4(Dkuoe<43b0X%PE(*0FSF18jEK>ztv~X>=jmm0kGIs?2 z{a3zfT}h1?z`^$Ssa;^AheiUT1^Lp_qFE#j7eL^nv7N)2RC34CUo?c*Zey^Z=^#0= ze8q`<#P0G=2BfgRGXg2@?1)R$nXQb$=u*VZ&kDIwNHk_u%|bSPB7PN`!9maK+hd$}P&stRek zoT;m>UdfgM&LmtKjOgad(32u*q)0YV^6sUGY=KqyqgTSinlUYD6V(A61YzA+M$L+a zj0f|QMZVOd`pnT=X6fJ#`PaHj_6muKEk&~4QCJj_u5qj+D^#B7FJ#PCv^<(A;?<(M zfwFL|=`uUKQls1ClBnF8n8Z974f|^mCWWY!#c=z{-bX{s!J7q`Ti#l72x;@&v~l zhSk)RRsaQDFkGH9X?Z-w=fQ~tVzaf;l+9(!AJ)eZ>I1;q4gNb+voJFWX@9MF6MdC% z)gY)Hy8Xz62Wq=v=$Ld>6pNUy0L)`k0~`%)^&DU@*%GY&cQyC-g|waCdP2Gqj?US2 zmE2A(yx z$HW`XJHs={n%cWq?$KiJo9W++W2mi&0DeR9II+8FYT#+I zoJ=G2H)Tl)yj;2YbGe7Y0xaPm>^T*?F&KC*2<6rWD|bM~U=*Dkh2?R&hr)c_O^>Os z^cFTB)0quBm%y(e393$({QLyNU3A_R+_58Y%QFL_<7=8s3&-y;M`d`O6Cb$GY~}LrdC9 zb4W~D{=Z&@bvLb$Sb8OCjxK?13m$;LG*)Jr$#fUtMR=t)F~sy%)`g|pF#71Hqe)(U z&o_gckp2@uva{afycRgU!RhidBz#s5pHLsSq*`=!XD1W{4 zuiz~4zeL7uCWeHkf-gnVse~~TPL*AyT#wUbf>qXdVQ3+R1e5^+a5jXT-+O*VoCmbI zr<`+a<30|^^l$}c8`w3AIrMycPRt$|giCqee0xYCw>W=eJW|aE(Ek7W{ge-oEbqY1 z-FNghY1W}*Z~cot7k2VD{{K+#t|Z4b>>g4m_|qu(Zx2Q!0=P0UpU#RWl%Iy-T2iCn zWmI6Jdv&q~q>s1qG6o>hbHe<*dG`(Y1Fb)nFK5%4nOA~KKfhOo>aG|TnrvgoLjl6o zTFH1id1@cjA&)fw<-47>ymBLrkRe|7z^WNhgsEfDg$O+0OvGE-0VD=qX5(VRYbw48 zCexNh+{-fR?G>3OjFaJXW!M1Bgot6rR8>ou#3Bo>=x7K|^RxV!Ct&O1)15B}=G?p> z=xFNPBy@Z{vy8CwSlZM1<0Wv2$36|IE2mqzYw8P}cqWf(u+K|(h)XOe?g4AfR)uo% zI*vJ%9eiIWy0jNq6Ow8CII3JhgE&V-w_rgwv@LLKhDe0iUjGzzF0h^xT0(M0u2pFg z6O#M3NCb?_l2k5p{8E>yCgw0U5J<-^SRZF|P7*aGuugiZU`wfBa~yb;M$%QQSn+tG zb*_W^T7;g_9h1u7I4-LSmM@h45?Js=HAYpnLke}TqCov`yk#BQo>&wK12zr6jUufU zO8p5>-oh~D{&_B6x-=GQ=y)L}$12l*ale?svSs4**t~Hm2XC7)-yqV5-yTVO4}Ebs z2(S*nk9BvD_4uQhlv~T0rs%3VqdV3~wUSj-Q0G_57|(yHw3{km$9TwG{F{qReXZ%>36sh6jn#d%UB<*l=m-X*gCUo*m2t!gy&f^N z*sNgd8r8J^JK6jS)1Lrk+bJJPk|1tAe@Z+|#V%{G)fRpX|UG2w6B(}I3a=H(nUyt~2# zsIFU|peOE}E85>MWMhn!&_OO=-^H17JJjPjq+o*T7 z0wY$dU=#2oMtB`KI=aS_q|ncAbm%&RZwHpr<0N%N5(;>D%Ynp^$6B^Zhg}vAQs>0^ zYr~HV?27rle9B$JIvsa@Z#Fd4zg=uj>Nga3`0XE6G)c{l2Y;&UjN z!Z~6|L6YQuc5(SV$XB8+Pw;d0wd3t5wt0Uzj%Ahd6ytp&U?s#}@sFoD@7YHw{l;&r zX{(BPd!V5{a8QPbM(x06tEXa>rXfY$sR!-{)yPk-Q9DAT6?bYCjf%1{Ivo>Fk5hv1 z-vwd%51Lf_)?+%OMi^dv?97Z0URI%8cs1F2VrnQIwSQu*eVat2xZI|x(<3G~{hy+i zjm~cK1);U2#XLn?8{u48>WirX;FZ$S*IRIjQUMtwXrM!-WK)GBZ%=sKwQJ+NBc?#M z#8!qVb2M02(Ejf|v`<=(3(v%q!nL!2RZ$a;+d-ll2Cj~iYCi2L6Vh8zH7bVEhlwr% zf=*2YFCpE0D`718YPRxJWpZ^MYJJ{PKy(F8R{U6_qlw*LUS&1UaO^S7Us;VLs7hT* zZFNbNtmfB4{q3%MVd1qZw-!yFE$a@JnW=2xPfi|_y?1V3+g|u;b-#$#nzJo|rp9)) zd0IJ3iIsUYI@5DCWb0GCjcLNuvJ0;8Lu6RupO%0L4op16!tMyrKO6WIt_<5xBDZ{B zEx0P}3s1|VrenLz5v&WvkO0=RVu>`*>e2Vd=XkDi&DZ6NDTR|1TP0iiTE`>(M@n>}JP)))L7_yY;{Nms$_d8Qc zQrTum~8~qy}F5BW9OOB+BkfbxUOsDuDCLGFXd~GbUOGZ#s z%a9toClP$lT}8@}vfNzyy35tq=Q9IHdpb-5+8#{Ac)8=a8AED92gWm+P2oFH#Ac5T zuiVK5gUguzFuX#ZSmOMm7#4|x1<}1|=`AXYRl2f>fX^xShcpg~!{q$V4m*7Swvhk> zo{Favr~W~Tvu^^m)wLr4xLVTm`#v$h*|!50KxYh)_V6F@;(h=9W6IU~hy|w;x@>^? zxgG9@P9$J@VgG;E^fM^zXV}`M67io-{Lg;-n>YYsu|wkQfpUL6Y`!wS8TiIbY|u!$}f2QThlVC)O&OWzcb!O=i90(j~qAC3oa{8#w$WT zUN*r@r*6?&{kLz&hWnNw4uuY)ZdKAk$oB|ZI#vYr0P(Y<_?s~{ z1f+s&NUfB!P;Y|P4z^37m@=4eP(y&lS|l{L=6kAI3a(3i7&hke`xT!h@1n97Cps*% z$!7%2()4sW=$O&eyv322|le4&Xtd&#w;@DXQSRo^N!#9kpkgagh(PDM# zp#OZK?)Dtvui3 z0{A|&!5KzAn?X5cx4>&nE=b2jCr=v$=K|>*N$Nl0Jfg?U`Q(09uYeC#+Jjge*@i<` z1D`|FdwMXrJxNInR^t&KU6lY*p{F~1UL-P3MD|Fih;<2N+hznl?u6+)<_4m-;dy}e zonBU?IVW~ECC}lfMTdPOjYus|6+IQa5(aj3WgK=|3Hx)GwIzHh5v4e%amX@|%NziO zOit$su#PH4`vZu1FUbQ)RL(~l=qUBQ8Zv~}-7(x0nhg`1Uzg)ScD!_-)$`#gS{2|( zsM%4f>1}=n4q!BS8Tzi+iJ+qCRde9ZR>~BCVW2x!QcV^AC3WDYYxvKmDyT_aZ4@_U z3P*{%j5ywQ6| z?k=X_9}PgL%V!AX>pOcI5cd#ZE0k1Z_aQP21~14ao^%me1>Mz6z7<_3?Y0b@s?U*{ zif*`yxI6Kf{6Q7`>vd$H7~1hm5o6rT3usMDAmffF(`mDUEdys|byac_omOu7OKuhJ zX6buk(NBO2SoBQsTWR$AUcZ|1{%)sSRV%~=i22F`s)c{LGK`{5pkR_yI~uQ3gCw?B zbUH|QWRsqnA55P!1$Lm;phj|?b&6xYG|;q3yK3D&uErgmK;D>&V!4?TkJg}(-1NRE zp_2sh%yy%?GrEr_Gm>bwUnLUmzjOKW2Vjup%Ku~i@UQ`cPfBuU>2S!?Psl$Lgmo#nfH z(ukM0q)W4l)ylR*{uZ_C+C%0m_p^j-tx=;fP5ndt?iUMx;^TkMe}j+}X?3x!7LD30 zqQyuz+%AX1KD=`GYm%x-pJqpo!H#;f9D2Xe?@IHOVs9Hit{FPr=3e~1;ZC6%l8tg3 z{DxfnzD=T_h0-?qLNlT@SFTtoXVAoZ-bSr1m5e)>>lux+fJTd5c9ie*h(rFFkRTlF zf?$kQ9SGBmX7!=a@D27{Hv0uf9Zt_q44<{k4!SPSWSMvH%COs{Z$o7^P|bd^uaD5j z?qj!fk=(s^!;l;E3eIKydiYr(-RBOW(f$SsqVSx>5n?cTLuR%2E&W^W;-W-$1L(bK z{ql3(Cds|(wl9Z&gO5QP`o@yTbr1^Z28jMa_e623Z6ba zlW%8vZNa;+u-f&==5zMg@9w^7FZ_*xN%2|k?7SA@ySaLuEr56# z;#>L!rc1B-?+DRGkok z2==oyhYyXJaZXRYv73^@(|%ZwVYpOz!JLj&PPX+zxjk{g!X7s7cab{Zm{N!NZGH@C zG4_UV;3?9e(B#q?nF0EGhX-;L?K8vel(fnv9F*}2F{2;jQmMY*oI?GHkZ@N9IT+v) z@~*QmDRBkply7BY9g3<`5US`!(Iw85sG59WV@^MOV=A%fj;firE0ihqD{g%-uW=JV zH>t<&-2UcY9X)kLfmRnSx*-uH55{6EA%u3vgkrIFiZ~Nw{3B%NY&b1qMk^d9HOhgq z9$nc!3iPss;BQ5gw)iAW?Z7kn_X9cbFvApe2`N4VYD0A#AY||hXb_^(xuZ}WmzhLVUwIpTns>UuO24MA*~8Vl$TdEZI)GDjg?5YeOB0OwvCc433oH7cl9 z(6W1jy9fWgB@`}lrEAiYtbJW&Z-ufGx~fX7o}7T%6<%@u++JY_t7OZqU%#}BY$1|T zPJF9k+!T!*kKMw5t+QR5N;8LHL;eP5iy2weaBq!_+`6md*# z%B=o}sU&~BwbY2E&u3R>r;xwX$uar@^#R^&nc1y}Y#W|}dQAg+G)^C`foG0NUdk)q zp8&xZf5VuV6zpFg4KQc)R*D9QV@hXX?$^8qC?9mJ95v|S z`J_i5>U>XX#$tjQePVB)V9Q%k&d6!KCp-2Q=-z8T8x7QNr&MgIG%&)8kZ@_u!y$1RD1)|c5I9-SdzUbz zNJ{#Wd&a>3co;4j4U$Au;|1X@ifp|sCN#CVV5_ar0Uu;7J_t(Rn7?_M(?yoC}~87BF- zhJo4qd-slMKp>kP^R;6|vz~Lyq>?A@YeRD*l6ZBgkzu?vP7?WF#^=A-MGT9X@|s=l zf3~8@L`h%OaNwf{k#{)ZKfz8PW1ioC#gZ}BXsr5(h{{f$87o>s?M%r0qFwX1BAJY8 z5d8e9XY>l8U{x(Hi4#idy!T%fVVv?{xM4tdZ z*H%)6&doJG=xIMr%@TR4-pVv1Zk4Xp5uyc7|NyZE$t^rejsPW z(*CwEVe;Nd|Lcj82UnZxz!SPGMf0E2g!~ zVfZHu&g3)9j-CKN`VwZQCe_HOfagDRbo_Z3;Ya0S?gSO+VMcce&g@j)Z}gNLV+q6% zff1G^cf(INP!jZQs1qrDk8_jkc%XsoMp;zHAlZODTn+<@W4m=qRg9yUJB z?BXS7&{)=nIOxt(3Tw1TO`Wq68Hc$6S38r4vNO5@(~*6W0+Cn6a7FPvGdHys;^3LzwogFy~_)o1G(#J{Gw(3s&YhL2a4A`{cbO(U3sNZ4=gvlN>cQq zyi21Vn-~xElgjuJ9+&LNDmE^8lfsYZo#-Q+gxJdb-yAzBO`a&nnZOd5tMBf5REtHE^O6X$Lf6h6opva9wk`60{=b3?6k$zzPb2=OXO~kG^2;TrE~7} zRwlP)UX|ps=h``x9~Fu&t*NK^l5NU$H3NR~Tm=87h)yTfY}~HRjDSc60tG!C-~u5A zULiXiFW=gKe|DMTK)3La8W^PC3Y%!OvrdCzUJOs?&SsC=Yc-SeZzs2LAq<9!&n+ zt8m!s_5LBTOYBnZRM2)QALxil01s?^WtJ)Vm&KL$f}Cd-g^_vrKzbrY%xDeHf$Ky= z?A}bO*2$d}c!)i=-K3BK7x=s=CJ{1V=1K8US?DrhG0K-u2 z4S*iggXiyXt}f-zG_syhMm%OcyN+aE(=7w{Ce;_ETPqzE3ss1@M)= zN9{Siw#EIY^Ua7iG-qAvOc%F8&WhJmSWBm3=G7}R38q3i%KK-w!|&PgG{<=Tey{JB z_enPk#iMGbtjO?)UzVepUOJUcm%QVu-u2J?-p}vLwnKtJpTUoPGG#7lmL2zfI**;EdJe#OQ-BM2+l`S+s^i?du=L!yR4>UVRi@atiu2BT*45#~ zNB}1vK-^;Zhy?I(l8V<6r%D{uFVkAb$uC>ml0D|L40$>Fk1>6?o^>Wbq*HFah724i z--Vm?vE!V6vLP5P-2B(;vV|AgZwd3X=WW zFlw>}(%jA=ec^jXuotlDUK?4~o-}BgvG{jBV0<{zz|ZCRx7@)%LUDAlUBK7r`;^kU zl_xh~qFDZH^-IHZg&ALe=c31d-5Yt4s&ka6vwzZ)mH);!40-8Jj{8qj2oaGwda z+>=)9Uic4>V*Lr?XQlv`yCJ!6bzayf-U~#X7vZB?sAwlnF57qc0hp@==mFH@4@h3P zJ}SbuJ&$uLa6kD1UR%A`LLSz>DeXl|PE4{y-++yL{^`0hA5F>R3klwXPm;W~s1T~$ zJ=5TEK7jA@<;hpNfIw99Gpmn3dsh)?ak<4}e*yP+u|Z+zn3ngSA0Pe^%lijZ73l;uo8NE*7aiwDJx^^gYVlbD3NWEEUx zuh-}2i@m{Qe|$dJLjeGf7C{>=zOA*61Uu`VX_KkBGQ z4v^`d2mdidnU7CMVblUdSHSAyQ zL@bxI!zu{c{CTbvWE_0l^*K=K2Z|E9ZQ7b?QdWueRsMR&Ypf0HSaRSSvgN!*tgndt zOv=;z4mH`FDw8H0BX_}nuS7?(lu+TGKog@ty~Z5!WVW7# z+v@sHsz(RUq^01CT(pSq#kkR-!&5n=LY260nq{x9ke31J@OwTAx2Lx`SRxb1EMrwf zCL(@BLkWDt*Q*~>mVtAxI*a0>;4IW?E+RSu?bWo$Ch26P8@&j8dh_@6T3_vKT3 zRT0zFN}dZPP7b`QzceY@ciSf)}D3=Z3wQ!V^ zZ4?=&#fL4q6lXucJ73&5x@Me2eF8xswgCw?1JQ)ZzjuiYbH)${opoykaDEmqE30ST6s`Z_B&eiBLix=q&%nH zJa%QN#o4f1uH0AJ7J6PJMNSpo4kzyo?#y_4Z4Q_v5Crs*NS}~edJXiGvU|;E$&++G zm%#;>VpHfcbG7NXK8goqb#$!-Ysi0Y+ODngmslO*UGHc4RDSm#7te-LYYXyqTZqqe zEd)6piD__c{@sr zsnrXkf#ZmS!UKo>Z8pP1HJxc&x^a9nuAbg(C^uq*pLjmU8~+x%WeuI zpNIXnC7gn)Ou2;7VHDD82x_s5XxT%a>&qh#_a;(uEXk3vg@S%1&gff>a0!!>%qfZsSvx~88_X$-Nd%>6iu4bc+@e`bp zri|?7~`*L@5gK7d3$gRBu;;$ zvrwc*HWLX@X2W#E%XCD`bb@5pV`ba%n9nS-)^h!~ndk=zMbNPSPJ0U<=2Uw}*Rico zBVsbTw+qs~nr(xHdw;bRRHcn}&dv^;r#(~a;KbdkTZUpEXDys_z1vlfW^j zeuti5dBF&V%S}r1XRE8)cVbOBwoOs;c5kr5&qYyfl6l#Xh4qt+wa(%6vvyY3rn0%3 zG_x~OfW$;zyso8C3r#HSD>Di#{6Ha`k<{w#D)B4dijP!feum!OX)&5pu-mft2*VstTK4EC7uL|vdiA;$ z{|#pmcd#Zr#+_I-1|`yHL4;LmwhH#9}IUpok$#??0!Jc2r> zg?((4+HBM^N&j!LZlKt1taz6SKiM9F@mMn3bQfRdfUa}B2eOK5S~STIgjbq>IQx(V zPQC7us%uSx_dTq$tt3%nURec#$4tu?}9eyR>Mf@o~kI+KqG&|CN&$ zD(epguUp>|234UkH23Uz#;!Z1w9p>h@oa~t zIE*UC)+41&Vnw3UA0e6|?+&w-EU}d=v+F|2L8sdA%6rBYvP+Um?e>?jd@ z7GQ9{0SATx!qDI?FGXM$V74+;DIsiNZci5?2kIWO+^aSEo*UOXWny#c<5k>37I60CoF+MH||L!5(PcOaW9aN~btc!TFh za`1yJ=fG=VIKDG=SD|IXmgMR_%O_n~A^ak0a(r3&8KAgBOtbh*khZInn?u#%k83ar zILew8J15v+xV*PX7KVSQlK7Q`X8ImkhVS=@nczdfvMddw(A${~u$YP`c1I*dls9AR zB57yVct>kYlb4{JFbQ8J<;Wj3xIgVYH(+>E0bz*~%6kD@1pK?*OmxQB?4;o-QcVV< z+E#J&Zt|g zDLsAkAN)R)YElGSy4f!h0q-z=;A#y*e$E^kg?2y|I-P3gzKjPW40d%3Tgd{xe)tw2 zPX>!Rg$&qjN;DUGm=?4?F;0|81g=2?7U3mxn2^Yv*%5w=87w1kdAf6xqrrvKILd~7$@iPkQXBD_@zAK6VJr; z{~W%b{&VyWoe5o*zjiTArXunL+l4vo4APHS zXiWUi;#-rvp8*x0t^;;<^r@(nD}%ug`?wRqWyOTb|ME)UNPg$z?r8D;8PoI!rIxAJ z>PKL`Yzr3X&V|zDC;j{#<;3FlGr1lR$HNN6IGTId04*{;Ir&c%j(>3WXz15Z!VI4r`tQ^uvX$B?UFnYP98?WZweeaQ{ur5_uhOJk3*25^~sIr;>2cl^4n z1Ck}jN$0~j(_PZ1i*Schb3T#}p~@BMBQA#8fZkifUQAkhGStV=H!u$Tlv&J8AYN&I zgA(6|g_Q9*p!&gwkG?FYcTq6e=L|g z`BqGm6HI8+oR4KU;43fhl*gACxoNzt)U>NM9XNL5)hF-RI;G}DCGXB^Pu8ky?EVN# z-B_W+R>DgZ6j?ric@x{a#iB+XI8m$fdfNAr6d2MT?>-I5 z#&Sc%+Y-y7>@6+!Rdsw*N10a@>Q~)PYIK-~%r_Idg>cJ$8mvCa74|dc@7VCCE8Q5> zmZk!4qGjtQRQ3=It{wc2?4)?Shu7Rlux!E##{4qNQ)fl*%9q{@1q1U5!`;rS;~0< zMtVs9gqonPIju=KghyYdlMdo82bjLCTqYV%@uMV>36ZXhxd0pdP&OhhW!af*=WY1U z8TJDunc>meiv2=e9=eG$KGnjUc!XL~Vk{vUG(OtD@vY*cPUy zy56cv=N!6XI2v-jM>F(_`>{Qb4v=$(3}NA(ScKqVfn|I#QsZy+bJ$CqFpo9L~( zli?Xk`6}3L%?^0yHnJIxGLdsT^o|z(#BR_p9G|gtD|!>KQ}wjHpYgZ5S;V)UUPH{^ zotsJ1wxo_-LeX&AD5zuVZ*GPB(?q-33RoaA*`C{h=CBN&0ymz2)B=|3%XX2KajTayohe-@ zqDU*j38%vLJ?Dn2+*NwC+=6@T&RtCP6Bh{kz#vjNw}NRJ{KO(89R=&bIrfgk>)2eo z_b|tucf#@<&Qh{}CH}>`c#G!TY7dCZzxgSQ?|!Il1N@8-JcDMA z1#etVOJ=$Zeaf}9>g4i{W2@_qE3@|>{cgL007SKIF=qmrPn-ZBiuHWsUl052RpX+j zt*bvXN6CYfIdNV;uJx=g%e_km9NVzK7vsg7uZ9#pCu}UeR~W1E{zm|aA(HD@axIfLt zi8fy6m1yu*4^!rU1z`peB#S1sf_XlVqQlkoYSZnkQ{W0Z!QbP>k5G9$zlQE$$=~dl zIAJn>QC?U1M_(A<0mhktd4iAsZjOr6Y;Yh znsk@lo7@_1^v4Hppmn_!fZV$QH$bIn{2`yG%UjC43H5_^&1<$trj=y@?asQq^XBE2 zCm>Cqww!Hboldvo8V|GyIqT z1yj*93M`hP6J;KVRLdt_GvX)pO5XOa2;;Du}9Y$ z`DMJ6xlv5~1gGt^MXQWV>xu2@{iext+&ow8;+Og4Wp7s60%+Aq&TdSh*|;%+ZB$d_ z{MT}e^xf%6K(oiqtR0TjZ$Ln_mL7c)GV&1beUhynu9rtLw+{!Jk3%(ks`DY0kq8p^ zpA@q0@Bh%P7Wc$L(ZpEW?XB*cxIj;Nzj7Y)#XNL!raNrhf2YQ606`u_%(vv34hen& zF=IL9i=2|A1T=r1n`I+4xs285l2pG8W*3L#RMKIAtej@)_500N)x2|)zV1d^U?seC zyHVG(-|q^-ZIxA7)Jfv36@pmXVItH#!*` z2(n|z|C$<-n0?bROwXcvpz5FOW&%<3@V=h{&aAu=>?7vWe^BaWHn=(R?2@$+=Q&qM z_~nNl+pmbF#?_p>xTM|^P1M8FIZux|Iywn#eAIm=(5XU!xW*bcMZ%ArcthiRM#si| zCjLrZKWv`o5k#O=%(Je%2yyaJ)7ZgJ9c&JKD43Jd8xr=d9|hW;pL-JC!WM*R2tqor zV%5aHsqn#d6t!?~CD@(y1@-A+-NCzOer#D;L$)v9w^1*A>-$Zv*t#aehJi5qdzmnDDo zT6D06+3OBO{q-p(?&P4YPlK(hHg?97k9xC-0xDZZ7G2(qIt?tW)KUnnM1*rkVa2%v zfCf`%qdhUpV>#{!oUI~0RoJ9DBFhJ`pyi`e0)V!2(G{h&(^~okY?qWcpX-^#E4bAw z(6rDz7#6(KyOy_)V0Q$O+918%9D=y%AYlllF3(2swESjWQ#S zs(GcBsPedT)*(<|{^Hy9E}1iMNrVI=fR)&RNXH%!_&~ei8tG9PHU|*C82@`>hjpDK zm9S*nH^(?vA1440I$@eSoSl%6(8)ajAJ@?*acvv!5KJHOq$|eh8Q3rmoufNs)1Q3R zm2nSAjDQsTY(pEcX-U2HK`n+>rW&NYXSCsc;TJ~i{G&rX0j6gfvn6W9%OI0=OHt96 z;qMS17Y}>Bjr*BjTqrkY_jY<)QUT+o$fKYH=X>?8S~Wxi89%Zf zAH2nh+w5ZK$Qa4=AH-S-9CJ8~A4|wOT^FwUZ&P6tMlR#q0&34vII}P9XxKIVy&=Xp z@*+beq*uqzqjRGX#@1*@%=6%))5t_f(F797f1mDzF@h@~^srcf@jyjje^%jz z;hyJE3$i7iH=%wGh2789m5ly84fybp^la20^p4E6^Ho9rr5N`XG2=o2Q>0x8mLULR zn|QEPL~X^w2f-$a1d9tr43>mYN+x(~Q#Jo<#eOZx_ zPx){nr=)aDa{7to6#QkVXmrd5i^Ic99#E%xZ z@%VM%zG9gaetF8(xv>8A*BG=gj^AdJj>r48j?g>n*gqt$L%EzM8V$8?7zeK~E0f?s&@ z^KfkeN5v~#=+^(t<_m(nW)*>{r=dj(S>*nKT{tSGzK_(dqFTW~P?5NzQN_SvGsgg* zVyRXfzc5ffE(c6L1wP%sj$@*CcyjW_{`)*)AA5=4Nk=0=GPS*v>q`9O!r1$k2=IeZa$QGhUp$X@~ z>^)rCyQ9A{BMv!L7L5E05wb`af6u{1BDybp#C*#uu8xuDWF#^)-)OQWg^Kx%bSZnM zOS^|_{8)LuCO&Qrl88b@UQbXo9syCD$}^_kfkj$8TnwSRt)0{69sNDIt|so>HQpGO zC}s1-srYm9ZLH|v*E90GkBSUQbH09Ab-Lks#2vxFT30m<9T1G z*{7A~)M4`+9R7lCC26hbn-Mc&i{;h&Ytf7?`GZmeFAn?LwO}iJ3oGAWW3&m?S(1i6 zx}AgvQL7$lazO8_{z0coxB>(gn;IM5{HG}j03W}1Em?fR1h#LK?e4&9UM`*W4qz@& z7*de;HakmMp{ztiG+jh(U&ssmh&6Bv2zBrf21jzlHty;+^u}HGi-kp6*|Qo;vTr%d zSbA$?d%`w?f2-&&n%w-F{yA=_-C^@_ahNF66_5*GK&%^*ke~WlFaAVp{$(%XXY_7w zg2GVkPn=_jUCS3T0nXFM$yUR0T%AfAkz53qiFvL*3*@(5)0t`?I4Im*^!JAm+2DKT zRqsf`wwIn4O)GxQkf5T9+Ah>NYKBd4B&^!jid)`QD?u|Igp(EDS~RkZ(ay2cg=Y}S z-M@%=x(rY36;4~B8I>W3(t8Jg8_!NL$uetscLWL+Ay9JV3I1f)&IF$@98_VV3ZyNz z=>bU|k5)x0MURQZ>v%y13}gjj)oK6r;;r9NQMj(VBbt@jSl7SspxpTk{Nm`EGUpuQ zeN7d$#4GfUATjO*Ej{MjW2X#Y9xXh}ekhu-<5=;`Y_wG*TpekcaSb}c8I(N>Y(vwzF>{0dOEb|qwt(V+q5L_KAK50$Te!!2v}1)< z_qgq*(^6}w4X0QsJ4)RQU?|&{i0*ULM#zDNIxN6@{(`K$u)*oJC~hHT1SXgYb^_7A`|8>EALf`jP7DJs>q0R>aIry zA=$k|1*oECC#Wnz88%v%1u+O3$YRfI`6#u-%FCs^XNK9(R)nrj>X0j!QOy7y-2*bM z)U$f8BUEgLYJO0F8d6Sjul|J~P)9p`abPhW&Go$I);m-Gl7esT2~Bb6oZTOtvOP4v zCX~CwGasRifD`%Lg&_7A#Ny5oyaMGhMQo|?A1s~{lDY;zydMwr!!-@$?|Mat+Ob$O zV?pTjx-oobvbkR-CW^h65rO^CIVt;iONscH<61eXe{J~7sI%l-#wtZ}Ydx!KAzdJ6 znLx4KR*#@*qVf?@x|TDCV_f*jLjHo2XfBwmlA<4DSL;!V{R$;z4GG-M*7eb=+6(AF)`!gcdjzprdWn>W9>c`4>x5Z$g z)NM0h(blI=p0uL$tgUw3)qX4^FkAy!=-}1su84b%u(A%UbEEYV_%&OXr`7BGVY=3} zWooXVaJd$cWhzMcUK$XaQ^B1h+6=~ z>!dICkDU_$|5Tpf2O-D%)2?<`A|cCX9mVroGX{Sv9yBz-hA%0QFQ|u$RFSap%PJvl zF2gD>T@m1+w~}6sRoTG1FYx;l`6b6+bc59T5>R<(^N}!B+2Xl^bLjO+TVT`e0oZ8* z!~*2+PxM#54`>?92AYR4;P{33Zld=yQ{<0UtA3Aqg@5I5nETAQ5ip-q8=@dKSlF+e zR^icK^K<79%$`+k|1E~U9V#j!iv4oB+keYC>EWrHea_&t5IK3`!@@N#D+kZ6i~qtJ zW?d5^bK=q&0X(fdJgdyTSKT+`c%Xn!WYn3*N=5MTd~--zf*yT*uiburY9+gPY3iPVVp3@n80NnH`k?b)k9A1%|EP)^)JUFSe5+B*)oAbpyW*-B zKYv|o5dL)15I3!iJ9$~ zVQ|RG*S!#4e0^5tTKD95jrHMe$yo{t@+pbl)3e0CJTtx`lTVWmg3slmPTknh5;vFe zspHSnLuu3R)FI6tuSBy7T5gG-7S-cDhf{$SeWKLMl@<$jX%e{llh?P;Ef$6xptbqd z9S_!kR*q;U^ACRl1EPJPXI_SLLL<ch@%WFCWKgywv1?ULZQL}DurZKvy`7~T*b%ei7!S)>*;0wGuNrzg|{PjMXP?gr)h%!7Sle`=;x|=$pB&hR@9HGW8&2U~iZ*xRW^7?Gy$pEkW=8JgntE~R1mkvS z6%1Hga^D5(c!vT3Tqrxv!H9`&o>4FjGLb^H@4#2r?a~j_`%QND!4U;p+=?c(~mcoLc)uLL)-+@N}Y$0pBL>q80ix6ioI| z0cG-bl}J@VpBR!XxpA=4m4xotm3<@{!M_dQ!}@S8!PK~)RPdmzVAe8dA)tg7*?Q);~VZ5rg$PR8OJJ_2LX8U0?xs_1jm zNFBeATnEm^jDnR$GIyfaMxDeMHCTjV^ishXHV_Y+9c$wo+UO4KkV^=mV2a-yKJhTZ(kH zLCm*+OuJCT@+dCb3ozWNYc0N=j1h#j+s+ZQ?a1cyj z*h+)t+T8b>0&jDon{yJ3LtuQH)|tKKbb+hUVu1RArq#f2I14CUGl@p=01cLi5_a1y zh1Y02?^!SVvH=yQ$eo);!f*fy4CVsKvLy3F%~QDnXMa2whsp)di9mcp=vbpZ*?(;x z;kM2?#eV$TeGs1Aa>F?#MVi61(q!$5UdWFe6~b%h5<(iZpFdn_L-!YJWMZ|@y%;o2*1_Z^$<)xM|g=3gN? znZ$?3zd|;>s8>triHMS5kD%|jWRGhCM7=PkU#b3PmXL=pu+#?2mGMe5f_S664AAM+ z6Jef-1YJ*0;<>16Jr4bqPFk_9$tB#C)C8WkwkRAo{%W0A7?{7TwR6&7X0Ob^!FaL1 zWlGLKX}yrBPn9gk^9)-`(S^MY)5Z^F-wfO@6U@Dl}ikL?YlQ44Hre@5qS>BBCCeD;9``?nbOY z@xJvmw#Q33@&Mdk3*LsQ4Bmb8ws^J9?QOdzEwS}rrM{#LWaV2)V2}unSc^0}olUMo zp_8{LOAXBa+7#O!gW42<+5|yqg+*yaiGc&$-9V?(?G!v3d({iuHS1W9#e@b+aE-~h z%7`Fi#NokVAjodO$AQ=&w^(k0JGbG6>xeiV4$oFX+kB+eg+Cb<&4-X>g`8z&Z1eA` zmfAsGWT7Pm^K>B92S5`ETd?VDu^}9UbtYNg`@=x6Y5K^lKw`ME*{$4tmkIEqP94sn z&p^rtRqoowq=?izG(F^u9(7(On!y&!ZNR2VMc242MTRW*yyl2kRq9Z22M%;=4ahTQ?EnxpzEu#+W;?iQzNnek?Fl zDt78)bO3DqK{Laff$*TX#0evFLx%<*`As?*DT1lU@3`!XITx(F zu6aN(fN!}J{PETvk#O}acu03Jql0;RbE`F*o_@u;H5+J7X*6si5{P^{Y@(0orn_|g zmN~(xZNZ6?=lGz>W~!N)|N$}@@PayPI3ygMP%Po`$ylM6z3<6DVpb>@^ zEw?Y2((a5gp^WTdPDeSmiTef2p&h4P2!aEYFqr24=n+-#%r^BOu_{ zz|if$rh>acoV#>{MaDEVBWKx!#$EQ0tkMUyF2{8=z*gLjohZSXI zcMSV0ye{+kA4bq7TU_zY!#7N}y}R*^B-))2k_*btB+Wxo`{bocQpZLIBTW>T?UY2} zpCo+m()*p74nd`2x{dnc!Q5DtR4lT)VY~b}csG6paa!$9>Rf_;p}}}Hh-MpX!KYe< z^!p_{uz|*#9Sj6#>&`_~C_yXc8~W)4*H?9;UGZ;Z>spjXd2;&`@|#!r(A3AmincYM z#}4yTT7y2&*D=}Xg4%Hq@hRPghcOvBpM@njTb{SAhlkiH0v3MJ)3uzH6D@Jz+Jwv|37BOFnU;>1Dm)EWfrn_qKIrZq zyTG&plE6~v>W`2NtbZBd(*-T9goN%Pw40Y%kU5K{?AU9qf*6}3g(LP_BzIm+R}=Bz z81P@SpYH6y8YorpfsZZF3b|{5M0K19XR1M*<%}LfZaoZys<=;!vBjilp2POk9c!Cv;j&J|Mujqd0EQx@ro+@?N`WlJpkC3TCr@OF--sKZ)ne_=&#kohzBs2{VXHP zGb>t16IkH^vm^jthv=3lBm%O$F0+LDrCyd{B`k2|FaP+$`Rf1ji5Uec{pw#k8|o7e zc;fWa$NE<1jJvqd^s$6IxHH)$*bD?27OoQq-Y5#VQtZ8c`;liVg9{d;cn~*j`xh#M ztipgX18^8Dx^4HOfV*2{!`^E}DK`*^;U?hqThV>V;6Oit1P;Tkd@>t&L8yp;YSlCKaay2M}@s_|8rrTEhAYV+%Byr1f z5L6t_5WUOA*htb|I82ui?x8!DvqIZ{B3}}lgt+65n+g$sHd#3uc>|US*@ez<1nmxX zZ^0?E`4_y3juU}1X4%Ph07==rOcP@FG%B= znS=JFLc{BdkwtAq4~gS_g?0o(euLaCOun^|D3^zk*Yx3Tu-qQ<@|-Pv`EBGdrPR&R zOoat$SNrN~@xz1}rdZ-4igp@{>%~D~;1qFD5BWwtx~NnnN1u4*)XEd2{p!CYyL9&4 z(xp9bxE5~pTs(onsJhu&MS}B+uAM1K{o$Gw-HAHdgTe3c1cluY1&JB)02}x@apWI3L?h+_$MT+g_A{ zTf8Q@#5K6GaUa$>Litg-)APPSfFPB3OJODpE(BVhRDr}se~ z^Zrbywzd3A>Tw5LT-fpd%&oKF#AQ8oejl4QQXRzcG1eVB43td2(Dby2eFzkfDo=o0 zG3JZg@>?5P*4Fjf9BA1;|G zuL0QNX5()_mCo(4eA62}vOAKM$$x-zbXnubo6*Rv3xSFEbB&)q07++Q8Jg^zTn$Sv9mh(@N|y!adVi|Och)Ci?^NqPG2IZgG!R*t80GB+glZVJSn z%p(G$(mrn{kiX}Vygh!$-EVooePs++^K-}(s-!ObJZCD7N7_rvJq9BCyZYn@q!yuj z>i2QH0uT3jv%}d3!$)Ca z@XOfs{;U5*wa3QTrBi=b{|h&m?y`-a+xJLq3ir8Zt7BuQFdOsYDep-Qqncs~RP=eA ztGz+dD%^2ys_ft*N8Lj>q; z0IyvC=4K-*@K;4krpf_#Q6VqsdMgq5&$Vg{q0C39KY8WMHZv2S0mz1bAOU{@PX@;* zUaTQ1Q1*76EIfS!j*eE`yE=d{HIZNE&Dsy;dRv&LpAfRP{5HvJ00GBz& zcZ`vPRF9mUbsn;wJVhorHx_q?yq6Ov#72Bnp1dfv7%5bVvvQdv*)4@6G2KIQ;nmXQEGgFhhVoU*v{|^^4Syg2(P<+ruMR69lb5{WN zAT&YD9K}aj_yrwBe;@Rea$dmdlAquz@*5_BH6a|2ib;|)VSX4X^|rE1K@p)77t0D= z-u4s>#l8qrjB-~)7ihAN?0A-MR#7xv7*v)^0muEF6G`%IcFm7;D)70pXfzdMCh{yF z67{f`)TCCF3aSwk|B=Il2jtj=wOfOb7&|y__%4u=I6Ma_)2KgOiksLeB7p$@9#xUx zcRj}Gl8g`n7E=yXW>Am_4*U`{q3*vsF#J(q%Wc6PGw>I3lpVysl&n0Q&$wI@iO5Vw zhIAHQM5m!a3F(EWIl&37CCsRuWIRZ$iy(rQm$SG$nn0Neng3D;#UDHKNg)kd|DL}B z3tNIJn;!*O$C05~Mi+=|#I^FC8JWm;riIXe>UCK`ePhTA&QWLvwj_CMeVOaRH z7_;RTTrW>C9uxMw59yg(BnJGQAAQRLlp*->yjBr>j2w*+0Zxko!o8Lns-cv;y&e?> zAsT2vU(Vh}YAD$7hb|pZ^xJHM4|>C~T^~2rYeMsM`I?>W@81bA`+Ck!lbW~Yd@n=P zl2{@4cp)A60__6!*fW_&7Y&OzgH2eb%^9*gbk@I@=zsF%Tg?VTW5;+SjA~H12@cee zq9jMk)m!=E7aBVu96yb&)mS9ZQePcu`|v{knkHx_m4!VO>vr%65whXDvr|uUAT|Kom!$pHZO~bu*+3Rn2{yJ0odT0v=dp<61+2gEHMH-Nb zNKm<=S{EF(iBc$}U#tW;oQr{Rh5RGQ4<~1jC0#*dhf_7jm*FcnYx-WMRQTscwHOV5 zY+x=vI?ms3^Zi_A4UdKdPckNMD<5Lql9{90=Vln@L9G1JwV)`5hr)2kF?{ng9>&Jr zM+Pp9q@JG&q9w#14k1rZ_ZrOc7kRied2-jL8%^aXje0uR&QL|s(aTKQhQ;pNF7wwY9GlsPHY)9x7c+|og^Oz-!E@@SCfUMnI=`# zQ%Gy-3p=pdm#r+cn@3Y9x%`CLF;W+pTYR*ik2@|Ibz}}J*s)nVs>A42?F%R!9x$IV zE__mKZ4vC?I6DC8x**`C8jH-<2KE&PQq0Kf!O3qIVX)ENBN9z0zzT!Mirn#(C5CzM zj@TeDe$jXOrRlqB04hf*n+LXsu+w|-A#T1~oE4<8g7!e`Ix)M5&(|o~IrP4$o7lyJ zB6HyAI}KSV_JebmcX<^+ykO2XlZr|q7a#}XW(G-W`Fc2NI37t#6MwuN{Y2Sn-!f?! z53h%aJ4WxKH!|4?EXOK!V!^Y?bDMH;6BrjiNdcwKcO+9t1!|+j5A~g7@R+zp{@?6O z@3}w!j4F4{x>o5kCvPEMx^LYpxUcjz1d1Ow5x}1oRl|9lJAr~-UnaXs`3b0CU)JE3*@Rk%>34^9P|-Fi04Grj0r5S*F|qq>nZWwHs^GlBftMH zAOL-W{9O<`(@iLKy&uPvz(g6XfD%UJ!!%v@hA75Udyigt!Fa*ddNjff#B;Cb5ua*% zJIe9K!c;deI$fsOF(NIr`~mZ?lbA4f7hA8~Q<3}jucNUl*?_~dZkC#-I_|M~%*J}^ zXc-(R7BMJ<+vDcs1H&IFM5qi7AYJ0u+OzPYu{0`4@TvG%{9r)bjPb;Wi;}||ldzK| zEIs;TkA*Wre=IT?Rv9Kje+_4?N_fC6g3Xp${$i}#Z4I+5;ng6>X?=)1g=d^g$6Zu~ zSHqQi%E|qS;{M$*9^0)Ri$X3qHk4mt@cwV_c*0R?`l3b!l6SsWW9bZ&*Tl05T}|8Y zHO*Upmh#RU<#i^oH4-rS@;Z}u(8Bh8lN5(-jck!hWxdZDQ7>}FIy*KyL&6|}ckjVD zxLc?10?>Z@!29eO0c;?)=?(j1jPHE-`^W8Ih66U)A}%f#84URkyjAxuboR`Pw9b$r z7yz>lqIW)dbN&ga00D%MoK<=}7x-cUmD@i|l=fkN9EamIzV6zP!^`vi&rkJa#I_m(rBwlRS^>UiZ&TPo+`PBQy98hY_Sz9p#O6 zBJLNEMuHzl^_Z`Q;vrzc4s{7*Fp@D6@*Z^CNp@*(yKw}|2J@TGIO&fLq6fB6L7Nw> z=Mib??!^o#2(Q-Wb74S1pn&uR7hWF!Xl-?qrZJDT4uARM@MAv^NgG3Qku2EPz_z|* zV#-%KFPKB#dBQ8D9w&YDqGbdVf<{JIy%(j$)vaXCvYy>_GO|Z>ThW_Y0qL-I3;xjF z-)d@Y=G)e#R}w&9$GfSn6M(l-JPhUD!%f+wMDQ#FLBi*-6WW0_)sGx4*dqZcF&h`Z zr9s^t+h&2oOG1lbYNE%eh7nK_mCJQ3ZG0?LG7u;Ve9XoHLm@G!s$>Tb)5E}eM+huX zhlT6%4onn{Bn<32gA9~4Nh$sN+pAm#YlCiV@^%3VZY>4OP+6>zL2K<06dWRV{2L4m z0_!oJp6M_S3_^??!H)p_jtD!xH`_CPbasM7xQ3qP(ToH%rw;lB;V_iY6U+({N3@uC zXo9t0l`Fr~795<_45|mgxAm^r%N^WH^ht!c(13PFmKvEsI`S5Q8o4?RW$(H~#K@RG zwzz(IW{_#$>J(A-XOO9CtXF2WF6B0m9LM(|@pm~`VW9@)KgxH%O|L#$)Pe z?xb~DcS9cH^dR?wI=bFb=&?a^3+3*nS7;gNFsoiGV9_BDh>b*Iqeq&U$pX1RP6&DJ z40{;j2D*?*e4)`w454FGr~(oAHq}iLLo%aJwkc1VeFg9g7{S;#vVT!MvjTWpEy}W) zXJTotvmIH(gK@VVEsF}xqPN>>f@>f>A7Kt8bT{ygs106xW9 zy%tC=JR+ymi-e6Q1Ey5F1=>%yn`xsjtW>NpP!txA*y)Q>in&N&ve48$^m2@L`w41b zS~6($z3K?ESRs)R4Uh-SC8(B-^7E6QM?!win=346-;mUj=H3oqT6ScZGt{p9=Pij% z<*WPU@jImF>=3#zSX(5ldQ|UtpzOcrr^IV5s()WW5Mje3w{)s(6sZ_b7;3V!H@?Jd zB(}~W1@2Q@0Am^kTzGQd9OMQ(B&4QD(>5V%NgR!6nuN{IC>e)aW}gC?-BtJ9f)5QD z2~C_AN1N6A(JeFI%W{$jjr_W;U?>-7xyB7Lge5n+&6kHYdLXqQM2PDojtmF}r!y~l z=W#NZk0iQHG2)3i1p^AKI|B(<&CvAl+L(c0J*%@*DKe!;W@5gH$u_~Os*pdoyoR}rYic?MFgg{6iEcX#ib(ESyl69W+({bs>~JIE62n^>Gp zO9-KZN3Qmffe{H^Pc~+wM)=Gp8JuOic>*}0?YRPw1}Q{z0cK8K$qmh9Sz=@lKPX~k z3XO8i{ESpBVw9fiK3V|2>v=0##ld|(PJFGHIQF~wcMyNO@KWkQ=%xiTDH{U2q9{*l z3;jl;_3ItK4VOh?x<&wuDl|Ix08}B!k2e6PpZDhq@Am}(z%?H5J`)c(S7TiEe|QJ1 zbWK|5wWkVTp}*Mf_yErg`T4M!>F@n8MTEd5QH`dJu}T*qE$@Dqc}ljbhGEr`=tkG55~^To&BRq zpSO6T0d_9ab7+*q3m+w!8N6g7M>cA0Ah2Z6lcx)IFC71D(_o)s2YeHwZ25(9h>VKJ zEw<#lzvGCs{CjW^14G+?z3@Z{tX-F?r+f6j9L{#LFPq-Ft5b0T@#R&{v26Z;=K2*p zc;P8U1pjbB%DgCk`q*#UYYI6zWPxsi+<2M+Ow)(G z#To-a{5|SgcnjJooD0_trGx!TPIF3}^VDId4b5ZDirrT}JgdPH5F#yUe6Up?eZ^2A zd@Bl`EQ`-K?a%oe=-Dk8;N6|!h&z)}FS?oOYBobCiuH%muXYezDlEe0Rl)9ogXo?G z$u#>T=b{X=XK_ALv>wnkBXb%c^%-zxT=G*K1DY&Pg8k8rtNm9yXfYLH96Bi!+2vk+ z9eDKYaJx$Rdmg8s%wuJ%{KZxoZFGkM!SW>E%zR!b;*c-np zzc01?3~}nQ$5+74bP05Gfak0-06aUSvghFTaRI+_w2SBoJK1?AJJN*)4`4}Zrq|IP zf0D3*ENVznoxS-DAW zW3FX+`S=P^mlW9QjLhk9PzsdKj8sKMMs|foei(k3QK$QSiXWutJP_|p9<4(gty^zP z4_ll+REoPNcnlcRU+=BPG;nDt%&ic2p2=T7vsoq;j}0fJQv^(AfbFJQsjx!nvH#5v zE&fQP2f#i1&;50c-OD)42(#%Q9u#ZAJAO^y7v1r@s%%JMh0`xZgAbU;42&b>wU98! zLKkCW&2mus8gDrG7@R9@p)xz#Ul!_hr=96jLgRe-ENmPCir`#X<+Y^2__%FY~q=M>f0a_!oU3>XLiBN51`j zhCx8C#?;B$D-B?)R+r+p`;S0QRcF50gl!&JtSyAN){_9Y0r!JoNe>F4kERCnja|Xt z%DK~oJL7jYJ31$${w!hK!kWOD&m-;jer4xE<$C%2aC<>Xz?CYuL&-a=J%yaQ=e4cjPh@>`tj43)IZ>`GI}!H<<0w*pj1tR`V^Ja%**&&W;URZt)Jt zNdbm7nGDiY$U&X$=PU7<2(8#ei-F&{h?FASJ#J>)-|=SbXuLqk8>_4rDi5{)B;l|s zCZiT$oEBn1mMB7(>+-1%MAu_H4XHc)L@bN61|WQ+L~ymMmQ9D>t9<17c=u|Ewl^HgSLbMmz$S?v-j@LQN0G_>5p!2VWj zYbPJV0Dt0JaHwm}T0CW7Ju!hzUlbk^?(66!)aWZ>&3il`dj4AcQwQ{du-O(f;zy*i z3rSW=rbZ93x4YnAlF+kyM5~EKA&8U|5|TaGS`kC0nQ%`u<|Ad?EY;@rIthd5R98{8 zV^e4B{^dOL=eg0Vrou@Wn+L$2t)KBL(ustMm}iewQd7+0utLN{NRcrbWuDPF5cKyH zJKG_kG{yD7AC|%9`-c0C7qCCG*BiKpGE5z`*uew^=f=+8&wC((yK|VpkGB%NRHEtr;Vy56bR!WcF{N* z6Rqwjat7 z^mWLhWvce3_|Oeac#jz8=h65c1|2SHZM`&BQz?{?ryu&Pex{l z__l>i%6U0rBMyY#MR|8ytQ5+fJ8cPJEvc2Mo{D$!KNt3<#}2DDyZDCbq7U0)RE3p+ zEB=g$Y6t3ECFgx49l5+b5eCxZLxrP(Ca+C1B=w4kfpgUN!8}4S@pa7;!%wwW0Mv!0 zY@=_oJiOeqHq{)h@qIHK+8PpIFZueLkdHh?8vtPNWBVQ$_Fw(at#fxa;-7x&d*Z6c z3Q^A{G7x65iUf~aXei8T6A=bKS4)iZ|8H*YAjR^g+1bE_$L?{c!HtwgL>=FANSVgI z+DMvs8@crmMJJ!Io1r4U5+-e%_-50X12GP@9XkCmM)>XV?P^0QY&RqxZD%IKfVhZh zD6(h7(@jyf!mT)$Owepa;fvqE4(%#QP4UWro5h%I`YHp_G|tnjyvay+FzKWh(jhD> zS#r%RCs7NPs!4La4C+68w{)NCLgo8D&CFXdZg%TM33EPvo!np11}i!o%IXP`@m=(< z@e5tK?@j$XpDZ||-;ZB-JXpwu5+m*7j8Rb$QNf!_Hx)@@&36*M(1L z5`Kk3%3X3J+r@*ENfbYRrAH7c2Hg=&cCtPTmFy=7eoz>1;uPCEk*=r=E8A)iaHQUd z6$fh!B`Ki4{RQF@7lFYU>5rDAFqRjhpZ8CozcwEWJ(7Q{%?g>hG{hloFp2oL83N3 z6igfbS_>$sU{UQuF{k^rJ!KC)w4f&Q&lfbLGf`uB{xF*y@Q(as`WEMR_cfmW*t~D4 zUPG?56PIesHLm1c>((D$G!n*TANaMcG}(8s-Z*+#{q>6Gr4@_{!*_NZx(qYT^g7mv zUrAsjMv3_>5fMtr(V>JN-jWcHqy8-tJnMy~S)s#I;@~k6kiOZARh2~#E&&Zd0(-w4 z?);UDX4uA-rd9X^K1?OB;8iABup#KABMBoW%V=UyhkWCU5&slrX*Yw5n-@LtY)ww; zLi@~AN-R881aQjQD{Lf$Nw=0p8q zC@4-SkQowWV?im9&@N!CW))(p+xCoA}*z zMts(eOaOVHnvN6NpZtT28{+g^**AW0@|>@pE+QlhfG;M0G@$v_{y%afPYCFux$0Dw zchx>^4z>Glg`e*98Nr$xW7>9a^M$zXWR7^fW9nmDzVo>(`@p$|*F@b0{lkE{dPKa8 zoK=wtXj)0;4O0@CJUe_+9wad;0Md!^+27@H-l*r%B03FjcxA;(31spXOk-EC;>_Cj z%d#ha=i-Ik7|)%2{hFu*-AJJhLkv3hiRq`Cpd`YkUX7M*s};DvSPsit!jiulaeg10 z2}dqxWW|sM;T65Y?}z5N$Lq}#6`f@+#(mfHJFixiURg`(>MZ(N73-hui1STtMTi-c zy1U)X6vM{Df=j{W_*9wfR&zq$+sgDw-bLZ;dKJ*jDVp}C8!4c`qbUc($t}S3%0O98 zpH&keAK+Q_S=Hx1b?@iTHU%lFFP6U*<&>Kg@k#&-jahe}DpQ{@q&WQHS@`F%7Cw4M zBOb7SE41C`&rH!eh<0Eqxs0W)ivz>Nt3y9*sZRh$j{ledUn;sj)DrnAcV z1tKd0jytfFZCYMO=>HBOn-mtALpKoV8w`?6ImDU5Gm->_8Qg-b1U!gQI@=iII|}%B ze(}lxuQL-!JTtZ_&^?e_8T$gHxSVvkZ&R85{GiC@woQ_G+)w>oQKywx`w@dwpq zw$*C-uu+nHb~JVLH(|)T4s8R2(;ek=eg&~zyZ=xjrWUNDmlC?wy{gmCwWGy4y}&obTYHvocnKCoYPi!4^5NhO>wJ?k zr0MCEBmb|bA)j22ufvf}9FCTV9qN4Ps#4lod0%J3a@)+C9%P8nD)%7P*V^ ze81mNJ0FT^&N*EBgk%}Z79hnI;ZsWh>%w-+J0jd9IK#f3$E5zf&Tf5)JdU9#vmbXldRa92c~XNAr`A1# zRE?baY~>hFA;EXc@!k7x0SJ8K5)ou$sPs(Fnxj7P!lPAVRX40!_j_p)`X#^5H z@(_kRl%8~4R-Uw7HnlysbL})Yo0`s@%l9a)osTo1WBQwWuF2}SG+~I8c)C`l)BQ=p z!0vTidUie-dKk@vG=EZH4Q4X>hWXj#tquakv}9dt5z`&!yMQ zw?e`2vd5~~Z=d%ZfStV_!6Pl2*==sqEb8RmU06aG#WT@z?GH<&@1xzrWC|FtbS*-^ zb)2O>@8##kd8-x=M2l&Wf3(#q8tuU?`}gP~<16lA$oC%H;5p^G=lL`VT5nI#_k$!? zg@$#K!_2&;n!fGvB;5~`@yk-@Md)sLm6wl8dNDpl z3-^q=_>JI_h73vHB}(%KMhJ9c$a-b!l#aN2-ePqtDElCii!QLX9dDInZi)={w6{C) z)VW~$3b`|qh#^;+FOua?H9wb1sx zuPN@o5ziJg^$!6tlS>E{2hnWY#fcb`p?(Z9JXtR^rXx^4hl{wxj_kM$_|!}z$11n^ zsO;k=>X!%$xQ7zMvg8PL^|a;l~lOkSK*}3!86uJ$tv*_C!?=byW|oRT3H1MZ0@w!a_`PWqwr`a-fDFBQ7Kj z@+5~ai=HK_BI{!06+!N&AIz@Op1a5W=U8T#WojUK;o@$Nb`%PLDxU0Sm4|Af+A8#* zn=&Lc6QmOOx~fZ>`-qERI*6bFeaesukaAp)N%T!*5(iHcDEZL>DZxGEavuS4V56A` zHFkwC2@Yg%asgctBnJ0&Q%qNq({qtpG0LDLE@ZmX!EWh`S^XiJw2*(J^5DpVBE|WR zbe-uYEYHPU)kz8rR(Z2{xcZ6Sh9|9>X52lVyn;xuDob5^5OY5?QI&YSa5Ce z{2E#5PHD=1DkSds>ym6dAFw{FlSIa#LmJ z9l6ZyQ~lBFW9{o>%NCT{)j2lYS0QQtn!Suz#wPCn2Wvo-zr3xaG^1&j#R>GgnM?xZ zvnY+2NK>LnC^B+vC7nB!=GZur+>1KL%`)3Ll~f$tsnm2lKuZttDwlC=3tgoxg=1Y^ zrE7Gx^XT5X%CU57?Q9eYXyE=s?atTXJXM=aVp}0aSDE?Nx-9n7 z<$&setj>lG3Dib$26z#5ZOJ^92mzjlffcgv!FP z+n~@*?qQMxtpZdQR1FXOrk2dZ^LJhfAG=EC3Pf;$O?kSh0AD3(0EF)}b-PbTZ|E-bI5pTQWK-b2rz8jSyQe=(P35 zn60AUL&VvzFFe&|9v1g%@Y3eG@J?+a4Ogsr-JQp z$^*(qI0ew9Te$h4bT0s76zrD3)*_~GR9vT=uVs)t4^PGeMllcOjI?#Qi&tf`s@14?W6%67h0G%Tg{`{(Yw^RnEBzD+`=7lHL?6 z<(_;2Xd>-AuF@`4cY?G|TXv$bV$cv?j&#>glE)3rW<_p(7Xo$ni}{$`#goy)U3Y@* zJdHT<1?>i3Wha;~ytQC1gvCUSf;q_PxHH0UfP%SC;x<g$O-;q?}&>Vqg3s`Mpr z^FCP^=oS)AfQce9(luZ0Oj;}}2_(glB$$hovILrhaV{)n(LO8XtspE5W;VXc&c>G* z+W4ZSt&*^09DGr8*`jv~wgv45J`Y@>eAnf1C`?zxp#z(K7L65v|oEGaqhB{sRM<`i1i(h3!%8_klosqCw7Z6Kx0 z6%=DZo5xqF^Y{{d9$!@G?Mg9xshrS}u`*G>m1kl<*4zY=hurZ@80=XO;J~&Z$y&(l zvuBymz@2+8=CRhrwbDON4IR?mLFj%Gm8cT=rIb5}{L6{N23C$aj9bv@iB%pn^M$u$ z1f=EAwQBlaOVKrI#}e2fR|6klU0Wn@3tXlOdY{nAgC!#&Bp@-w#S7IiiI;bQv;urT ziU9;5dS^ZWm=oOjb$}W}g*(2R`ilgx^V^L|}$Gb^-4E{-UWkIDVoXzRVmO4f5HU&8sp|-t+ zW=zx~q3z7`0Jao4&H@c?1}H^XB18}-b|n|wBjYSu?HrFO0UNxZk_$*eQ`8Y)Oo5h^ z@>ZDiR%>R}idj^9P|Tw5q9?7bM0qV2Xs#r?8WBSD1(Kwg#XB6WUe>DQ(J(4gan3{H z%&krd&820vY+%1+T3O$USg4gH9W7M?e3aakH*-OH<1+2KVy-_?GwXD<}I0u%N=O`Za2f?FRSspVp-lu`SeP;&w3lj%rMy}vC9qe*Sj zjOHfKbmlf9?8SaK?)LqtSUK#}6IsSU?m)~7Cf_?VnT#fPWG(6s->oC-Wtvh(1Cs7m z9ei`ppNnplOl9cL=TmU*!BLRm7L|)M?!~(M zS*VgI5*xorhDwQ2Ht|%Nff)+!&f`NG@LB-bjD zIC^r(7P3W3ShUq1!?Pg@sSAjtx=fNBq%wHfvkxqiM=t4T6LV72wMvy6f_PIUP&1Ci z2`yMYxuqcp`xc;gbwfkaNya<87#jIL>NAiU;FeMQ>T^q0mCK4*E6C7-_dH+aKF^o< z&+{b?^t+Iuo(Y{OkghRKEV==AyG~aJQc2(F*tmQ4qbFl1IxTpqVHDjGXhGH7b1{#z zq2?+TGtu*5Yu(Y#1Ss!?+`)I|>GY?n2Vz&ZnF{(d8V>FG^r!mp@Ld#oao8U`PS$$k z&5^DJ-&(#(bvIvlJGuvK3P-vZxXqx2RM1O>Cg7-CuF1K@A>$dqIUPk6Fvy)L74knM zh3cm8$okAP2R@MOeCxQ&L9%qw@4cA0f?6#cMdho`qVgq&QTgI&)ZM97&+T#p^BAZ= zgc#eC^GJls^^ps@iFX>tjyj^u~ut{TgP`Ag(;nvNRdgQHZ z)qw%(VGB7cNVT&-s-0D&+F3%XozFn3xir$(!WYtYK-$$^>BNyX-6-t&Ua)5;3J2$i zJg@M2BW`bIL90{od6vUIttHJmmE)Wpe6n^W%Q|z#-oYhnCz3q#7~RQn=l()){ZH>bKUuBY7D7~c$ z*!Ea}*daK`9bS{R4FC)j2c&MIJBYw@Jt{REJ5Hto_UPP*Pg)I>(o(asN>wg0^>Ehq z*q{^+&XL4(u=o|vD|04+V^pb=$*#siG&L#mdQ(37sGcP#?p}nX9}D z*12=6yq;*j^meNw1YS@irPtJc3+I@V4><I@U@hAHjVZl3~M&K2=85XHFy7=y;MGrAeLSOH=qz?j3RvG zm;MQ$ixoEwPE2o_<%&h@AyvZU@d!h3VXSNNO3sG*jql)p^A{ds7JL1uy?r!&?H58c z!gJM4hj>|Gb`2)p?s-_^g1*UbDaGm$k)i(JFpJk>Bd^$v?LQ$W-hSJt^@p{iwQbQ2 zmKBZRRh;BBAvS7j^f+D97~O$5*HC_mqZPTRCFxf-b&Xl;)lH-~10$zbVV9@PC7m8qWhci`#kE9n4fHMQO6aHUb z@+V(bw|TgYyV2yG4I46x!5t>13^xX52iZ?z-P-X3sHN&Hoi|g;^%?@i5a_k%SH6Q$X^{4`r$qyvgby+WXCU2xq~-@O z2Cpfk;|5;kocwcc^3oWX6w)CjEvMz#CtcApBqI?e{rS?-O8)rU_h0j5i<<)PLdTO_ z_QFtzE?2T=l;=wwJ5krs#&orJSBwX=I{ps;uP@8-e*m_9_mB8Lzs2AGkN7{OdmDeK zI^uALx5mwd1j3=^yI_DJr}O<0QwIfpqv-(4f&b9eAMk_!?m0$Ku3V#On5pU0umlU- z2<#X~EDu{>U|U@#y`$PtyKOH73AFS`wt8vz%~CHG9^hdl7TP{ollqGuwf7w!4- z8FZ~AsG;*e_#}1dDgU?$ECFr!($FNdzh7X2xxRaV-6!sw=nf{^B7>uzheP(-n51_P`LE36p`Q@j2esduiLo5v5SYUT zizmjgQOtVxNUs}gI%47QBQSxJ1PYA0)386pA%)P%@kh)_olHjY^jBa|4j^~LfJ}^f zed0EwVjN}~OTy|n+{2r+$l(#S5}9yd$81>kiJ@oQ=yA#>29UW=UcHS2$kiJ>B4eF@ zAK*Z36Ih<6Bf(l96Bq;bw84lP;;*5BjUT&%esbSnQ9nube^7OTZ)tuTIFgeQM!y;i zu!=tPoQ6B=ALYSjFu-$vn$8k6{OkSbp*)s;a=_xp$q*VfR45w3v^B8FpHZ^}Z>A-v z>5Ya_AIFqDPnSRJj@}y@j$QB+f~XU?3gg+*rk|4g5PIJ=>6}5sFvVeEKoc4>3MSJ& zEC5E{!WQR8N&xt}&2BDV-TruX-DaH|c6ELEx6aG}KT`tt29gB;gq z7q>sL%UA5|;wSbWor{+Z*8cm|b^GRqU0$=!o2&Cq8{Ty;TIX+Hb}oK6VBbT*i%Wp- z4gfaPdV5JNrge4NH(1-7_I2wuB+tI@oOf=2YOq(G+Y7Ap71VmhuFkG+JFU0pXV)N0 zU0+?^w4wc%2T<=t=i=2hw9|gmzPN2dyYP;+{{{(m^ZM-koZ32j3;n;Q9=0y8e!A}b z@cNd$zC3@~hL_*Bp=)Q~pSNvWFs#=3S?3J^&C9blXFs&5*d{~9%3fVxV*NO!P~?(ofr1xpTMbTk zc~u|_rr+MQXPtT3K0AlXZm@7MGcM_02-qW5fUccs)dBnN3S&)F8d_0=tOG^^<${Keb?b*e|)G+dPTBaBuH7n7~>X;R^?LAHgr==Ij z)6U*t3S+hwtH2 zpB9$zWVVL(MAh?NJB0lY_Ds}% zpjn3EtQQ7xV+ODnrLoqRtX{^g08-+R zOmP2rG?R~quw1~gV>fI=OGjkIAiSL-?4bnxivh9e2Ca!Pa33(U`KmQ9hlS=|;n(_f z@@S5hjkN}qfZQ-yQ%4*E>K!dzyc1l#B>+It=GVdo?f0-;%W`M+q$p4(1$zhDWDE@D zCQ!Q?x-vkjrVs`2x&t1}f>>%GM$;=g4iSzou8eKx=6>{Red)^5(q`7$wROD)Dgbru z1H?Cl>g{2fEd%DK!19VppihtErM0x~!{Iwqr+C9hOQs6I6=7%t@X7!`EY4(WFiOml z9@gykH4AwAeAZ7YcTHPD@?(D(5qxY2yHvLG05I4cO(Fz8XA?lqpty&{%Vd(a#}#w4 z4#{a#gMYrQ*S^8ajgN=n``S^nYk=CAdWn1_4=i~&jsV&JoWdxMj0&OJ;y6L&_F)RR zy?fL9r3-nNfO*!LLD)5etc6)!-RTh3Q zIGv8h^lMEU&!rE~d8b!4Y8RC_xw)kb$7A5m>p6pjLn?8xrTk zPHerF0|LICPABzRKdLoq`Fz`M%-ABBfsFado3Z(_&LP*hFl8d2vUo5Gr_b~43%R(X zB0KgiR*3?_4T1=8tEFZv;MfwFdpt4kv#8Zh*3)to&4C%dn+XObK?G30|4-!eI&u30 zi2X@@#@S&_2>&4Xma@J8UOcM=Sn|@h`caYPJUIbLy#Ij1co=oj42DCnb64(S&yvWj z+IoS(v~z->`(l2^PYYQ_V=Jb=VE@aaM|-{3b0$2e0TXY=&#Q;aKAjdv3ldwCkbTDY z;$K?#f7N>EaBN`y{~OxLI}2HD51T!NsHmTe2jRzBgVnl&QSTR+qfav_!)Cmv-Lsht z;1|8#>S+`CkQQW@t^0s#=Bh3v#0=Ojyd5ugz^-GOhLuFeu*k$AY!&mAqzqT&sZ7gS zfAT7B4*Xe(;Vf$VxAk9X3p;8817jxix_(q#;4JgMy~y#VxXy$-m6iNS`MNB9&H?av zG8&_BO|VmISeD_mwA!b|(lD$NMFsMKcB2B3S(RO2_PI(cq}}2|uWQ{rjHe%0XA@8F zoGB5^s!!o_#&vCE+c5CITRP`LJ_GxE1#3#d7_>?gp(;g zV@(I24o<#Hbwr6dMn%zgCx7@ZRsJ<$7oXhu!i_@_>Tb^jDt27g4SQa%7fR_xt`YJs zGGpt@v(4W+{~zJFbM_zK7vc~5&u{Vff7k!#Wcn~ZdDoxbKX&gX23X*0_~#7hp0zf& zMnjZzPp-%SPKMyfygwPwlD$Fyq+lLD$xat9_Y&e<6upE3Z<&`6#|S143%sw|ODNz4 zFQLyioqO>m3h+h&o&OemiR@(b27u=?R{%oW` z?8U-$yA@Gb(#q$(QZ}iKcIuT*CWR@ha9c7_?8K_zZ>?hdFZZ{O!sI@jOhWYdZiv~$ z!BlAm|EPfBeGTakz0&JL9eMT$-LbEB_c~eS-m%Hnw5f~OCUvd%Ae*i1y1Le{Y=!`v zENglqWX_GgxS$G;O?ZOY8*=go?lb!-e@IUeZ?wRYZ|&AoK<|IC_pHrv8%N$}{|X$P zi{#4!#Jn+-rP!gR#C3}6%2w`NmrAkl6xUwv(z{DZv`hc}x_j{4_lrx~CaTCC0P{jm z_e}RpKNgPfGKG}K>!{Zf{qN<$qAudtYQwaRWn!!eQ*F}FN|RW?e_a?^Tc-q9nW8q< z@P8p-c9;L-Mv3r||2xJN<(ZC(G?PpVmJ~KJx`qI6Z%lUox@A10ZtEB&zAJUw* zmM$*(!%LXcrxzDpBHrWLn*N!V=28FeC|AgV)kw1p1}Khsmd45^Msf*{c#`W!`u~kz zOV)p9i0YK)QPBHlG<`L?8D=lZgZu0pv1Vsz4gE{4XY_x$g1blhKgRXj-T!G@HV`@o zi*R|xW{wKmn>oy|rMo%G{TTM3w{w^_ORT<@gXbWdGiX4~q;3+w5>qc7p33Jq z*Pp)=x|H3;aIy7w(9IT|-(!nyHykfJjXtUCPSed6oo4(Fk-h5}a2tERnW8&}a_jkc zE~C#e73n}&4^swxflvw-gN1?QSJhlcZKW+(s9$iZ3sD`DvU%Lfvfg}e?<+WsZ>E;O8oz#vbPN^Pg_|@1CE~u_H_| zZ*H%F%2IddbeLV?XJ`;Offdb(GN+3w`QHD>m;U+a3TBCZGHBQH^~>kBDdUv<-#Uo| z-E-FYz8ZbFh35byTRJdr6+npr?bBNMorsa;@A_$ZnA0P@n0`F)iI0EIYVP`0Ghy% z&{=OEKKItAER(<;0^dyXahVxImYxb3Ny|fPPG!M#Rz#s6MMVN@MV|OJ6U>((Q$@jf zD)D$}aWAsmDL?noPgUKQb0E^um3RK#cWA|R#jMtL?KhG>eC4XJ@Vej>*e!zFImW&6rK0AJEdG5p$SPW^k}S zn~c-@fPc3un`2M6-0=sl8i&PDZVS17I_Phy58^k<3;r_21-Ek6KIgA*y;rC_`)yw2 zAPA=|Cn;o7=a}wkoJ>&p^90S2P+GhlR7RYA%~y5waR!UJRm{`3J^ zc31IW^mY_vNt7Gy?d6Y?gu_CZzLCZ#FBK-3})%UeRQi(hdjw z*rAo5#p55ZfM@fkqzQk38jErK77@!wvt!@6zB@p*h=xS}IN)0M^s@zdzXCk?JK%vc zh*+NQzpG(*jiazM+t&?n-vDfv=6i!6E8n(0wMDnX_}z4z=bMx61`v1Ztvd`=*%`7s z-MRE^$=1h~wm4fQY4E*op)Gf1>)pdtUs>UJ2MXWP(w%^3O~Rge&2nUK5(f8J}fb-}(;BJ}W%J@iN9VdxOqGZ-MDl|07) z!=e|3f%PaDM=vszqfSyQwr34iEzp?}1`mbY7<8nE`$)WUU!2~I$28p!P(~`@ULREW zBYYchU(5)B;c{4 zK?KItDI?g3(F84d)-m4z>+7o0vw z85$Hx-;A-PX@npXd?dW!glZUKq=&nY7Ab^b6Brg7$AZRD7({A#0q7Y~9K!-E%2g?EHL zSYSH8LMJWcYy~p)y#5qDwvcr(9qpD&+rPVIrLG6pjCh>Kw9ktMLtdH>2IxPV&ZqG_ z6z;F%EGzF}I{tj>Rx(J8tLdk-ZiU{Hc`MA>pHDMt0z`jwV-yeiZ->n);VSgeNdT+@ zfy%F3DX;EYSq`P(la`!GdB`#r+c=$O*pJic*!`4C>?wT;CMY8T3aylIA%-!yMps<* zUP9*tytC0%9$ByE$6J|Tue0uih57Xy2fdta2;U zG!kJJCy_|B($@YlzPf&v4WH*9fS7{mhbcMr`p?r(I?hR)nV465WO&+`*Pise^5&%X z#ASHWdqR87Xe+qDVrx6Lure~m1~a@l?h>i_`6h$Y$|20=H{Ee zKdvkQz3OfA$kAt28egHjQgK?d&;4?@X;Qnr?_`{=et-CC#@E$pZmwJ<=F8H;>I`eJ2KvXvgCjW zu1L-rS8F{Mm7!TPH&y&g=_!PIoaO1jy&JcC2ZIki0|q4>A+Iw;OP?2?U-CxzYjks6 z!LxKR(}Gz!W^E|aVS5{tm;42BCyqC1wGSQZPxGs@g>g#CUe!6jhMX>h4)ITw+Z*&1 zM7P8T)-~ba>F}9rcdnjqyG4`HbUM1C&#TV+>%H!UeRB#dUDL97$wy9d+{c}c#%Hr% z^j-DlqyzkR&$ogY>d-cZUJn;~?S9TfGH9&19u`P3-Cdu4EkK^{`3kTHojK`F2ceWr z?s&H9%-ZFA)t$*{#%fLHYbUHY7FOvrW=7gfau($=%Tk@IM8i$Oqm222yZ)mwB^By2Xc&R^Ss6W zH@h9AYgCLz$nv+91z3RkgLO9NuDs0G?3c6!KiuFa z(81G$+C7rnhr&30gHli&^jmcSAHM`O&@?;|3FjG)69Zxyh+&0JxG=fkf+dnAd1s=> zO(Qp?qj>fooH0$Mn$w%iE^k&$ASzv>ZpRU6%>e-J`ziuEnOvgRj0|>Z!Q0yR(pZ? zwfAQOU)q07^U0KEElgZoyw4LHlVQ<+ix1zx!~e~bb9%6StcZ2?pNgv)`!A;CqyL|y zT)2C?Ee3ecKlvvS;Xl0-%3bCorvX^dd7y@$>CH86`)-Y5Zm|q?uEUUXo=dKiFcgsr zRcOBu z_@n=a<6OTF`|lE+>)>_^Q8^gj3|B+|)g5ziG7euH0aViu*@Qn_V{oaL*n)2is)Lw@ zOYI4z>)&6AVYp+dl18LH()C)!VejIbOl~)Xp?UDwU%z--$MyCy76jR z?E;2LB$Z%Mk(xLai4IK`7hDSy<;>>kp`(ttc$hhN0krI z3*cZMCI1I}9b^30&_9U$bMk+vAN{``<@$Zd|Emttmy7&Lcij0azD(qYjPwHx^+Oi< zfoWPI^siPlIE0*!44Wc}xk^1~Szn+#d=!f)Awuf2Y^Um%o5)NO&x!XGT$Ya4W@3vp zYG1Ks9x?7g0AIRXQJ?BHs+6>InG{y=B8iKbBG73Xyl$X$9iB;b%!M?|7B2@^V^AEkL1Fystm5E>8u)0UJ9xZW3n^AlYuD1bxF6NEZvSUN{13(+{r?^1Vuj9A z!Sj&k)-n*}!z5<0j=3;Wq=~-o{ykoIdp(T(-$(tg`?`*&|8*5#-}lEpUUSz2(EkeY zuxDofS3Ji5IL`GskfrlyvWpH-WxBUpVKn(3=dm}rjL`|gI8Uc1?XACBT6AU=XnHgn zXA=x%sd}90o_6QV%PZlPmB}BDrMI!H%N*n|)sse5ojwJ?KY%0Zhq3;%`Sm}1T>p=8 zZFv5NX^i*OoB(RBv`l3l#hJ22Ds`rGnuLXAoX3X67mo+PzlQ4=VF^Q`kkHsmUujWpXDpgfi3Gq0<&`IL9k^M3Czj|t^Cbwxb7f$1)vTS6U+j%BGV)u z^l@<5^CRmNyqOCSWke@gy~W>6^}o@Z=0OjG-570lq8I7vM8xhMWNR6EJfvgcoBqXx zi=F0pcwK~Xnwc!KEKZ7Cn=Fh%6NMr{hF%@`;EHn$@}uw^#3dtlemIkCWl+mwU$qpW zd8tMZ$ak3Na{UrW*JJ4ThKIto3J0Zk4+nLTcOuI@%tK*1BQqtzN9XAKS5Vk26G*3r z%qPyEne`{l4N-7;aJszc4~x-uv?8}TN}VaX8?C^M6yhl_dY~rv z(0H1Pj-UZ8(TO!4oT7tnj0I|=AR@@>VDIBnbmEOP2|%(un2_rz=UJw8tW6Q$!3u>j=iK^ZO|>XB zspc)FHeZ~g-Q$iPY;D5Gdb=)7@8j_h#Gvg6PR|mY+L++Ax z5V(X?I*P23LKLw<3QSqV<5b2XKP<_~M(mP}*rm)&vXx;Yu}j{W*o7N6@rG-gwE9?b z*FEbm0{0PwI65YD>bPan6R@W6>PF(arpvoM$qnnW)QkkgsM1v{bO(HEE7v@ssaZl( zD+o<3CN#A>p;?}aTxy*$3;eB$pufOI=5bm?DzSw=Frih#ldOa%6^VADezl44)L`~u zg(pW{8%a;HgSKiG2$I5aYQ# zcd)dOL?ml@iB^*))x6zEUXphuFYUCb96?~x9YQg)G^SV3*i6yAR+WfXiwdTyHHFgE zl7cq}T2UfhFDP{rcw?;BWLY33t>$^76|jm9!1E%*DV?mM^*J)O5!&#rxm*#%pJM zbP%!lYMuYP`ScFjSbhF4jb^-i{?EAK>hb*l7*}(UkAuJPB>#Kz$&KL+-{6rhh0lx! zbg;kZT>s6trysB`ccAZ*{+op`ub$shI z5}YganJDQLmTk5G>IqzraIvrRJH>)5f7efQ7rd`Wft333z^Bvu=d3;ncd_J`MVp@w zU%z<-_f9biDt;gF=R3VPei-@rKHQ84t+qRnZQF6@myJj>W{V@!w=kp3;9!3?8K?IF z|87?{$DVGv;}2Xl4vV4OR&7BS`)6Jq{m6UWpG+HWs1;wCBByT`n3*#6Q~YX|g$4=P zi$B5CR;eG8@$m8K0cs=^+rAnHc|XQbc*EHB2MKD+sFmm@y`<=p zpkMtzd)K<$wvna(=P9ttPApeZGP-e>HL6ME>#kzEWM@*@tu0jpXxN;P1c#*TD6Txg z{@fq)XRG!h_Ko&Q_MC29Nsx_;#EV2#B?f^;qx+oGUtiDp5>1?gB7Ts1z>etfaYfo^ zU>4U@9BZY zCVh7FsULs8RC&2UQaGe+JpbJ3n*g`%PKB(?cb_s=&2w% z*F8x?k2LF^hb-j;?(|#_S=;l=b7Vt@YlK}*FC>H$JDgvP(eFy9GgAIJ~oP% z=XlP{Kr(j^ZetJv*AXeQOYs%2=i#P1!Icm}dJm}$6EY#XaZIbZ(i6F7XNQkskZm92 z54ntg(}*tUvP+ceY%;8p3bBrbFr`#XLHBMU$31Zc4?Hd>V@+Lg-$daX_yEd@GB5-K zJqSVsr+`Zr(tt`pGM&7~cYJTL#{?Oel>-FgpvBgO`{> zgl#dAIh)uZlODVc0(0<`f~gCl`uv)J>`BiQT=ouzez9!G?pz%9!!N>%AbZ-gk%}JA zHF-T7D|U{Dzpb8)_CY`+PS1f)X;gP}eZp-J45$|5RlI~0U@$!oJ_Rod z(b$k3)!_qpiFshuhaLv2FyX#|!q**95@DVM%Pme{fg-?SF(ik0Kt+WtM<~So{Qh7Z8pOkr;De^*?)&~z#du4qXJX}Kwh z6*HqR8zY(moFsCS_{Hp&6B&PrAYi9c=*;)BNC_J>Qo*hvuL>obsH4CLv>LmUf%wq&4U*1c|437pp!d~Fm;zRjX z&fT57hf~xd&)PR-#_w5(gsBu0`y4l)w?-XqELt>p8rF)V~B#&ydPCBE8lnzIJ-^qeeR z`wGT{(~}>epofnh^>F0Ti`ZbwdykTF@c7gCQ6^WAr>3oMb~F_v>jFQY<~-&Vl{=CV@D2)JNdMWq zeJ!_+uV@=@*yj%*-or<8yEkBEU|+&~F4KCZ22{^@3ap%|58fBSB447VhrS)x++wld zH?5?gmt^+|1HDv3JQ~KJBkc2Vf;|I)<>++$c2s=vJ$&u(@!X5oGv#})z+wyULGKUW zA1Pn^SAKKIKcm18GBc31mz?&c+RIF!-<)0#W>f93&{Oh=!M(?o61kM=6Oq94G;6We zml@c}=eQrjFa$5m5e5kC^@c$$;^7D_M9?Mx=cZ^2J6>bzdEGBTRR;UoR( z(PPXBpl~j$UXBb<~maZ zzttnXBvps8p0Oo;YumBjyqxgfxw!W%4vMiX7i2e|s)g{(x`t}dZEDS>?x9Za&_Xm; zE34WvIbjsI+4BBVK5ii#`_2K*t`BhbW&jR3U{&xY(sTefd&j}8EF%%C7w%L=>Rk|B zMZy*Wbne_xo%)9AY{*dOLMAUU)p88zR$W);C#qGbZ~{ zJ#zfmZP@7UxUqhmA2YsG4;Wu|94&fxZkb+v%k(y5nSbj~*y_C$k)rixinrr-S(Fd{ z{ulVYYC9!=-e#Tu?l<>HgWWx{q3ylFV7S^OF+ppKB)h)9R}c^Wytw#rl|g2Y+lZ?6 zlJz#t6DwF)7cHpBL)u0%?N+F_NlY1&=7Mk}tz>hV)LtgsCNY#lxh%*cjbzeB9_<#I z+e5qA0NTyXK>I35w-)2~CT?_f`#MEL=Xf@8Vh=iRE zw6s0W(z;#Oo@8LsO|x`TR-DiE|j$G{>=UJ6;diCsVAed+p2W$ zO+7@UH&Xr}^}(6HU-13PU0g-VqDi5z3t&n%gUXPTzVon(vNe(30(M}}pe z#c%oLeuy4FBhEt}im#yaAcm08QpY#xe5`4w*Mr16aL`Zll3#^sTG1Of3xAQu%aHTH zcg&M&d*)0yzodwj`1T(ak)Rg+UVD*F;7KPtH(z+Ub)) zUwRp0;WJ06)ZrLSU{k>;w}b!HSmb}Dd;ZsT{4L}Eu5;GniqRmj14?;hxo#8$kpT_Z z^ZmebBHs>ee$`LN-}el#Tl%*S{VUqPWm99G|J643{O@b|dl>w$rK5AlRmaB0lQ`hh z=@q72&ID`NUXcmbb(ayr8W{ga*Dzku7W2Tm<`Np%X7W0{4MJGglw3&3zgtZQOB}Cv zL`@MI3a%_OWlGDh@~3#ETX0GqVBLuzfpJ!)?sU zAt}?a)t+g%N;Q+~k;uw7&0%1B$4ZmEdAJXMFcn#kk)jM9r$Q5;kxL;DjQ;r(}&+O!{iA>+^1vs;_uVwQ=ifj{s$TG;Vf{Xv4@Y z(1wX-2WBrgN6tkANbHeqWM@Y1Wu$ze7E+jCgh`}shCW*FN{K0&mt-Pw(wLD)6z;jQ zt-%lDIBA7xvdy!S6! z)_-h$ZvIDY;_T;tYxz3`eaUE!;;h2Lo`}4Ya9(in2*WRl!Q2)9E#OJW|AY;oQzp;? zFr1_|{lqZt8ZKTR6bJhmn#)C2%S?F4O;WONVGAvSci< zT|cmF1BQcsM6JNJ!oYELmoVgJU0O^-H=&@G?xqEO0>a-g3sIr{SDjJ3Vt`kM>r*|9 zOh1GUn47-ENf=U3w;jWcvL(KXhM)YY+CL@p?ccNvbKm~g@t3v#;y6Q`PR0MF?YjD5 zhxSUn9&zSh7KX;Df`GDSBq%MafNsm zPnrwqefsJ_NxemxELDhQ&>-~9kUN3xcma2P>cQ7Nm~#cDY|Y_@I5CAsO_7& z6;j^|!pP#j!*~!_xWT+D8c|my(a0zG_y7ygP%BL()kQ0jVVWfJjR5*E*V290hh}M7 z7V{#QTrhKIw4$y^q7`w37}p70o7rnTIL^=y2n|prb5R2%6;ds6sF=AQV z+#S8BD>9z+N3F(PO=Z+YAJiu{W43R*%;ODyA+fv7tQ%p#!4|!u*Ka zPN=)O%>!+gl|Oj9R@!(0c0p%Bjsc1ADiiX`31jLoi- z-b7yawAwAEskA!vDlp!rmH{1^X}K)&%*e1!FEk19Elb}a&8RC9OgK8%L6iA7!Eg&c zOQ38P&)A@+;R)S8fA{z6c=q&N)~w|3o_0Oz&yt5IIC)j0H)<%}E~+#_rqduK1ndRI z9$vt0J+f)wS{QkV?@n)|u1KOvXjvbt6e{jdS87zPx~Agnw9LsI!_-4P3g8>Qt4G4Y zC$x1xGOdV&JEJ;vMXtwTraGyuG3c$QNnPTHYOHoP6jyE4BnKGoc;}+Hlaso@6gPLo zzC~e&N4;<1TecoV@DamvSwOh%ho=EndHQ@%HNc?Zw+m(Rlx?y#R$A zpa1gx8}+_XLlJdazd$D*J+L_SEyFWy;_@K!eA}?WCc>!QdeZtAFO;=-|I_*T^Y`x; zHS+TE`E#{Onu@8@NYior!1GO$SdMF&f#-Q#4@f`*+cWH_-SA}n!%Sr@e*XUQ&FeQW z7gh4h^NWkOKdXm~4dv8n+lculw@DZ=-|-wHa1kCYFR(fB94BhGZM6P9BV{d~UtYew zT-3vwiOmRDh3SNhMuE;qyE8i*QjfYW zX?I_xo`3vjP4zStS*NvF%QiXTB-Du=xRg4f4%T2&?wA1&e0`VHqppkW`77JbKWZwc zslYlxn@@F@Q^(So;fA3OV{(T%1~*w00;KL#+fmo$-Q`<^wq?!dfBv^Fx;2zq)Ab-c zg)7%-LOx?qLwPVb{ULp?maO?a6Nz}JJ<9_?h$WrUu~|GQFNjwlv+*QbdP<%B56*si zt)XoDvp%1SAQA6`^tJPg*T>&{^8x*jhH-d3;25gob3cSsGW|_P5F+0T;G#bj3?`7L zJR~v$^XPpOpr08OG`^mVuV+1tjY2J5Th;obupgkvrWy+-G2FpZ+j${0HXaW!1$^ij z1P7HkOO7QklT3OtS9?|ragoSIu9T_Q&lA1WS!frrIPJgpUUMa!GTk;>u~s3RQ&6}?6BfyCO(Wpg3ceM=CmTMEYm3;o{4Rk(B~j8zq@ ztjFV}m0NtH_<_?oa;I_&3gbY;H?G3fb7Auu(`J7UhdJD#>5Eu91-L|aDNyHe3T}mu zgg2wi?c)`P@AM@;25c~pqzsa?31K>gLlDstop+6`)-Ij5I(tRuy|~Z3b7LeyFV)ys+}rIDa5eCx+N=tq4XCJDqsPgCr^ZQLl_ z`#lzGjkk;>DpRjS5{zq0hkQW~qUF@~9+^l@%lf|Vs!s|-YvT5XMpC0(pmoxQ?p(HVHl4Hk>| z@N9LYVZA3ZUL+gTG}n9E3#tr#$A{F)AUY|Y)QGmz1y9u3EAS+7X5Vs1NlN+9P-O~T zU|RJOo_w5eK9Wcx&Rz&d7a64S-Xn|3@AyDP8B!yKlNzx%y1Sed_Tp8Id#q$~=;JVrjV**~B{@PCPD9P2&?%gTGW*p~z2(OcN`-uYP+fTnA;)hSVCG)I zw#uOQu)UepW~E+sd$m~^2t7Nos*af6>BOos`(=1u3|2Zr#IzCrBEutyHn!=tiaSSARTHm)q=viR<%?QKx+FMVO24owIGvJT zAVuFALgS(C-(o@d(!r_jjj8cUolair$7u^ zkl5@vEe0HuV&eeL*4xKdpaCnEB`Sn%(%b)j&zTu5Y{rS*)bD$vHfA*2Idir-XEf5R z_kof~Zuo}oV{>-vSKcG@y8UzT4>GS?yWhmwmG9g?H9cKIaOETXkImApN5DjH>~23R z=0R`lZtZ>(OOxl{JT-2{xUHPa^Vp2s`nms*k@q+k;316M-u)&OowOuCv?D^oVqJ`{5rC(%G%uZ{z0^SJ*`~H=Mrm*xcQE3|RE2 zZu@y*4|-I$wfjxnT{;NuscGv1dTY*Tdu)boJ>w;MX>K)Is!apa z55jsAOtT_H428-yuk*MKT?)~J40g{U+ZJ0}rPRWW;JDE2Q+jRFn`p858S4*5K65w` zUO0B5FY3@QIR%Ct{IZ~KTzVY)<%9ZNJzYk68L~Tqu#7$@n)LD&b*XRSbLYXFM0#)$ z1e58mqHr*>MXwcHGrt-yHRlWDVeOln8#&Q}C-aUs_Li2t6Z@QX4G-smgkZ6xF#RPV z(k~RGeI!l;&zj>ej`C&dhws-ve8~!M7ObEAY5KRpP~j>W2K$9;>9hvSLuiU)r9W=@Lr$npmidc`gW<`j3y zxcCt46sGgGJ@8F`4s%0+eHiG*WQRS8_j}^WBgLMc%_b8MFdcZo1;Iywh$lPB$#mJK zoNL=;XkB?Tz!gg{2hSe2aGDs*g1~d9atbj6WH`#xaBvoxxfbOEi|KICYlIbcp<&&d z%-KO?q@b$Rd_mPzQgbbznxsv=kq?k;FvYSH-uz+*!wb{Dl84^aOPSOhhp_fj_7Noi znp%iYms&PX{D2}J8-=Lj5P+UjZ{`pAU+xr{-YgJg`;x@TSr!b=43Vj|wH{PTr%COk0slUb=KIqwgmDDC{nqhmyVY!@2z1r0o%CDHUXHX* z>g}@zc#b)8aMmX$ojz%|j$3^I(C_2`d^2p9Xhu4RBaqSfhEwhCpxR7<$Z5|`WK!)DgL9gHHpY@yMRj1SFv7UR)?%Nhb z&wHfZ=`m`Z^_n>V(XSzB>;otT#gINY>$MooS||Nxw|jQlZ*@+xP% zc6LruY_!0WPWJ=$iezBa&yjaWO~~&eK^d`XNQE8{t=>;o1AsuoeqxjdH;Uyzyzdh)5Z`5C3jlCLNC%vPf$wm6PN09n z#H;t+!*@sB{-E$twF-yxk8chRKEA5jAA1L{2k#Euk8fW)AKrC~!=dAxVuPCVrhnKy z#FQegp>8`LZWuWA?6TNbluAvjcqeb(KvqM0-EAJ8(UXb#*=hb-tJhk!>OoNbTvZ1j z4?bSL`BbR>ad^<29dtgwIqJFZ`u+LvvN`(WZ1!<{cs+HFjNyg;N4wrpe)TKE+W4l{ zzcFgJrT5+Xkd3j{JA2#d{#vYmXtnmGY!2q!>yX~)kMsgMnF8H3HO_0fhvqQw{5YpG z3zAtd!C2nSI}ERq8AmL}60Ex(H@qQFgVXa7IuSSKEx)lxB=d|n%!&^7QJVHrDdjo1 zdCy4?w;rL~@x56>&#r9CazagF%9$h6p^1ljg2Oek115=KNX_;yWwNP1VP->!9FT0g z5QcJmvqVwCeN9m5Pc{W6MhL`7HWH(bEAd{IYK5dAl31l&ElUsnSBnlQPGq||~4!kN)B19pB08PN%(c~f)B&9#ZWdiae8YrTA zPLow7(w=PCGSU*%Cs8BTC8&h*KZZiC9P*fkq(7LqtV|k_#AqSSdJOz|L{DruK=U@n zMh6ET8b72wGrvOx=kE&zDv;7GIH}CgInk^lb};R zBGdDbFqN#5DTH^~y}0ch+Qtmn$s}2mj|-xv>$@@0WHar}q<2D?=`7fLH2oPh3uG|e zse?D^o#1vSP2gt^RnokZu{@}oUb=LQ z2Wa`^0%l={`qM?jVY_yaq1OSo9h_x=E#$}$d;%L}?*=qI+>t0)CK!f#6L=GuQ-%EW z6N&F+UjRn?1~?%f!z{ktGJylZl_ykL9$L;_^U5BQDdlGf3wM1(-x*P@W#zD2L3Sj_ zUkQ@1Oh92azJLggGG~Qt0L4gx8`Z#cF4-?`zJ+oaEfcy6b26bWj}f@VA~zS1f$V1s z!gyR+*uUf9PTM&cYun|)&Ky@jA-1E}6bQ%4SrhboF3f8dDueKjMifDUV}qW7U@152 zOskRtFwLN+kQ1XKlIOC(8YtsRWS2;s)yJ6EfIP-uDYsY|XUOHs$B?(S@@yi(-D2gl z39pK%augFYk7-%WYZy+O9o|O$Y^3B^$%SE$@nB~e`tfUHG|Pe421fXG@L@7pm|iS; z+ZkojH*|1mgRLMh_lXL2Ia))%e;<;ETXv{C97&Ms9cJZV0)ZKlTeO9lPiZx)kq4AuoIL5pZQ}l^^E36ft*5C8Y`9kIg%!F8D z=DTFFmq5Np1F<`P<}>As>?*Dmfb)(17tS`qby)JbXi)DTXGCF6G>H*Mhg0I28HwzO za@mBWluKj`mNSOS8P;+JUCtO`MpoKmZWu>)VaAZ6kx5{hvMWR|Bh#{N$O$79jXZA6 zM~_B4W20S9mT=i#Med}Rac2(5s-5iVH~V*vW(3^waNf*}a}(r$4*d@9bu7vXE0sB2 z`r)WE%%wnfp|_U?ur4F`WU za{_zf%rlo!jcMc&nztEOHgm3Qu|m*4c4ek7g>#lA?!LQ(RRXEdg`2M66rmKk>C+dX zr?RC_UhA$tg({45#O3!t7>j3ohFHgK`2U_LzFq2kAJ z3f$}^O6BQ=JqmuM^QASh~0lQAoJ} zF$XjGIP)oDvVmD94z)H;HpxycTtIf9!@O4E9Ugn1ZO1Va9mHYq7PoO*U?7Eoft2u^ zQK47o23{W9gPgX*&=#)n1B5E_fP_q~V>+kXTE=hT{1*@)DJNtf!iPmk0aoBsnk&zu zTWGan357-qB1W1UDr%&iiw1$@lM7eE6fR}Xvzr(I^YHL;8|@=k_3LPV2kF01^rBTe zr1_#bTQ`kFH8>f*oC^@$u>&{w5+AgW*ZMYENdCwSjF>~g+ucT5;j2f6@=;9L7gBX) zl#<24Fs}s!`pwJ^@QGn4)e#%gNh&mER}*~SUpQzGui@97*v^~`jC3?}cnnDgvvGEb zA{Mk2Gy7U+?KiUGr;!!Ej4bSNBjF}+f9?77uU*mmzRlo^Q#5J5a!+^Zb>Xk zDTO$4NiH(+{KQnpab0qar|h{V1aR-KoDy|9UoA+Cf^ z*hl!FM+z59gfM3Co#S=Qz<-k?xP7n3bT9(UCW6@46yQav48M0nO;ik*w?v5~ZPX6- zt+$XSYZb&_h%Ue0vazN5SblENdaUqZ94>Gsyt|v&Gxa9a&7{qNHw$(Lj_F>ebLsOi z!8diKcM=k^lg^3lU17FZl#JFhmalX!@H}T=`ul2*e*g~>Fo>DRVygy_#%vb<<3>bC z;~EuH0##_1=i3x2r4x>sg#(G!)`deR-}p8zPrhKwdB8h&%J;E}ZEQEX?D=Cwt5&PZ zE!$E@(u?S)S)*Mb`?`kU)~X8I^tQg)Ep9yB43Te34M&l{mYVoRKkjA~9}EO#eWCD- z7YZw0ZH1fW_(@s&5as(Y^Y0RMa=Qms+Oj|u_??8og=bp(l3+WNQZNGR5DB+fvLTAD znI!BkNdki5!mzs}3|ItR@7zvz(tLm4Dj2@sZ%sbi{}<;E9WV56R+dsBF!X~=`Vis+ zzIuw{46*lQHW31z+ylx64K#W7FE_nIW$}%k$XisNi-)ySn#U)$pt=9_7Oa2tl9f-k zZ=Rp?<*W0`Wd8U&0q@@br>cflTH61o8>RC1{eR!$LIb-j0c1b*8`C^+Qj=TISv_7& zehuk5OQO5UHWe>#XNS`OIFtMz;UjUENHinIS0n=pf ztVbMQ_(i))WfCObe5k@*ianb>@NV}dRaRBP{y;_i(W~%R+U%UhKIRwrl&KeE=D0Ch zsL`7-JWPn6DuHLmR@613t$+A$5WSei?zr#ywbTlI*VK!N=gh~zlacK>;7eYBqlc2? zdzT>2hwfrV{7w+u#p7U=W2ATk z^PD%qS8^B`cUk$qM5GnOe;kbPzZi9hlZKZu(uHCvmsjN?VF?{mMnz4gqC!ZpK?L+R zAowS5y2A_42j1Xrdtf_sS283r2U=(qs0|*h8{|jkmF+;@5p}Lyr;NitA$JSQ+%4R}-NJhA z782a$??A1c*vyHYoY-oot%OVRqd8Pf%QVXBpi(VY_2Q^H8tCQ1&{Aoc7B#AahOuW3 z`_g&fO{A^Tw4?@0vLu8hl%7IiAtj3LBSn=*l_8{&kfE49UnWBu9yRr-GIWlQ_|HMS zw+WN>(~m}R@27FFw<2298Yc_~-Ypr9#ij|{X5trK8Aox;SIkftvWv69z?nfVfH*D~ zMY&wb<+Y+*tQYjMtce?7DzK**-M}afe#6+iC^w7!u7?&`B!F1ap{pvG9g$=p!u&#< ztTI?J(Qx|t{u;G^3&qP{g@+`zTlxBHV zlzBaH?9W*M#p~PdwdvT_`KKv>+PErEF6zlu0ZprHS{8ts_@imy6hGm00Zr58b=}Y*drUC%tTdk)4L&T)9BBVm1Edxw>}W7_X#$Wju8U8}EqeR^S`euY|ur zR_+&1ma7;?B7D8_wejTLLirCYP;C4dOmf;?o{GgnMaifZ2Ez(1<59zUWiU`nrll5X zv0Si>;ZS|tg$k_-ajRYeMPsQFru34UOvR;`+P?0k>YSfN<5AWuBJyy0-A}3t<#H%i zFpoTFp@P9)l&~khPyyCQR>1%jHMv;VN@dw7@Ef9)i*nTnZz_gtX#D1Z3l-Q^2_d4O zh-3%?Z;T3wtHcWxA-(ivCDiXwLVdjw>W`{~`p_H|K=TTCI_y9jX;#^?hUG%R7^$OC zrTn-`s8>s%a23LSHML5LB`uK%OG=fk%4euz(YadwrmD9FgG%X9w2r#h=hvnWf#&@* z-zZl?%`bno-iuA8TPKeNW!0DUyl{t}FE#xtJ=a0c4TGENVqGs)m!D~Q5(9k&(LXwLZU%5AOKU)|<^kZr!bV(Rd{9pum2{q&U z_P&>lBF{2%b_nBU-USl)w)?W1G2Q zQ`3bTG+o%O>B8MLT@5yQCriV^pQJ_NB#~1_na8}+iQLkgealbRda7dr2(3UJ)6lW)=)#_w2pO$Q~O_iB4 z6*k2&+*usMD~Th_J|uFq(;0#dfy)`R^B95zdanF|)BUwY6p|n@zfmNooR|J0|uDxI+@xMt*b`jjh4(Jc1yJ9Egn(i8O zR}5M)RJtp6z|~W_D|XybBz2dO@n#SCk8_Os`F~KsH}I{%=&?`WpM`i zUm}p{lD2)I_A|C%d`D=uLSViL3}J%sJVQ&xrjIpe9}xW%H*e-SLJM;I8-xPoU}sQ` z#2CCqz=5Fs=S4-kO(xzTc^1|HyW4v$iXiqIv{JHcDv{J=lEPzMF#KMWz6-N&L9SwY zi5qJweTp6BO<;Ke3JbMfE};)dsm(E6@h_u}U0mkVYI$bY_@NA{UgA^YuPuQ{mux!4 zDk=`Nq0?t`c+N9Rkt~h?;Z`CJ=6^nY{>bhCR@J~%Z*@S2Qi~fgRP7z`QxRqL`HSaIpFep8 z?GOxU7m6yj_24I<{}oaA@Wso&zQT}a)(;qDq*oFlZzYs>A|agEIO6{(Fd6 zrPz@ga+J_Tbr?}w!H7P2^#bb`5TY+6R_XJ{yc%S;`Bo6DR054kVjewy@C+(LxKtza z7scBo5S8rR8_*`NFY~7`kPC)iT;i9h4;G8;gT%f(+mirN7*VHK{#EatRxBaO>DL2 z4y}7KLHp2~z00P98MrkU;Eb`s!Q1_VQ@elCA2vVlg?cVtf>k@XTvVJeQ3L$e8p2;q z3Zd;am3eh-vYTBM=pZ#_a~0KHe*zUTkIpSuS`jSc6(wMNbR z5pry4Qht^#&*)3tfx&~j1Np(~aD@0lgFa^L54HM$4#ni7pMiq?W8`#y*lysb#ni06 zf2Y5vwQQC^R|8+_Hi|GGdi{Nako^by|DEms!`V;wzWLLggMa&O{C_9E-o9s#4&M&m z4v|EwMI!;oytc# zYx+HGqNEwbE;+G-zKBuMx2fSaWhI-k6(_AGYfF>6HQ4WWG*@H=%-f&VoM7#ScT%^i ze|~Qch<=+GD9zRHU`c;)JlmMc@f4MU!0(`SVAcAg_~rK>-ejjF2R+Qy8y-2wN^fx0 zt`+2f2%;>!W6Hp3=J%rt8>*?%QV>W0H8?K99Q+T=9HO+Ag@163U-LsBwCBr3Vbr?U z2lt8!BF!U0c`P5ERnt;1q9J*lY*dXv_1rG!=eX`*;}V}eW$)OuW)=M$@4Nc+fcfzE zduRa+?%9YRq#?8f>la>RZ|{(>xay=s1yGCSM+K4xX*g32HC%z}{1kJq=W-9DDM@4{ zk$Xf-E657uD9w<4GXqC#5g)WaW0Tc*;70$>J3CrQ%!eU1k+@qyp`_-tIyygUc> z<6?TbJi*8}V_8B=WPb-*%Qy4W)9I!jWwJZ1LL*#eML?H&fZTgGugZbLA@aJ4Am}-Q z6pgJK15xP~#eZIem35K@+MbdS|3kc;pPmso#nxOjD$V`&H#-}UP1vu%90v_SDP2QD2UgiFt=#X8#!9#+uDcp0HW9IHa_uw{otfj zJ~HXFA3PdcFf0dLgj{_%QeMSjZu+_0DqPncEK;j%vK?pDInCxzXD=7?Qv`+6V7+QR zI$zBn&?@wRFGkxLPWkrbMF|~!CM|**tZ=@xksS|3oUSp9r2ZW(a#wA8L47YtB~T__ zyHFAW#t=uS%B4-9=jfx-H+NV$+fvGdpBNh25R8f-Lt?^|A$6 zytgE@8L$OL zlacrws&UiqsHO}*c34^9A4*kt0so`PU|VPa+Lk_#!ZT3NHCz%+*nBcY5Ay}BsBjn* zV-ALN<$X4iuv)}%(|)QvCA%QJ_=~x?-LqVkxL{M-y`W_ALnT(rXBmx8NiV?!Qqr{A zpjxLDSFBKFW0Gp?@o81}rnW+ep1L&*xcI1gx1q_hde^Hf68R04-lM3ES`V_EO<(Ui zN0>#-is>=0xnZ*D#BjUKX%pFIiEKt|xoT$<<%bICG23ptG`gYJnKd%BD|-XunZ`E` z>^gUsv5>9lm6|%pEz%U>>z?*H7cjUdR5!_v&>Dr*B1XnjCb+OS)A zX?^_fVTnV{M#+pr2(BNLOIuclyKIV3pT&^SM>n7~tpg9$ZYT z6=gnhj}Nt+;6UI92L=K40>Dtu%D3iQxtsMn$Es8&jaJdh?XgzJcf_N68w^^kpv#1< zZNrB1U7MJ~1J8!aqNr~)PaHht0vu94Rr9N^9IfC!i2$u|Ak=EB+~KC&4``XBYGv!B z3jC2RwRabjZP=aVKB_xma-9(-Alh5F9$05wXXxR)TU*$jLtVXPB@63b9OA7v-k4^! z8`a_qG-jULdkwP(LDgdWQ7QLA%{dk)O=&A*Lh5q9XmmCz zsRg)Q`#Oz#Ijvo=Mk$jq^7+Z-w70GR_dZ0#5zfsSGjn%M5n2y)hviAMv$^~%fHs+wX%4h*%y4NtjyC56;NO+lQh7dVBP#<$7G=r|$u_@fqS zxrr{#S;(a1-gd!6{e|1J_x4T1&5!c!@YPLgz!r;o$U%WO)j6AAt_Gl>X{;?r81#dI zm+k1`M~2PS;x6~RIzPA7i>wy|+vemq-&nUh*C1+q&5kvqG0fC_KJJ^-p4g4RpX0Xi zDp^>s4I0z4DBNM(cN@aZy_H&*ZfA*7sI6xW-P+a^f3CpqGZ$-s61}m;g2+Of0zyC(2{{38mMfe z|Gi|FObOgzh6W<%!QBDwtu^LoUdth76L62sjS&!xDGG;}_G*12ttYj0qAgjp=TF^b zH)my1!F{wVjTMX9A_ZP9`4Y+K90SKLN>)slz{4XddUxD2wrTeIy<@2fG+tsYYIqEW zw(mGRI0~;*odMv;_sj0ZhIN!{3nRZY8*Y}BH>igM32b(G4qXNEuh1-CX1PkUpdBuY zl|{8|Zn#S72#5khDP5Y%?1s{o81+)3$Je!KQ)Djl1)gR2tALKY4 z;83u&#kNciKTOa)9r}#7)1Kc0UxJ2IhfkA@r3Gtc+5p7L>X9cGnMikI0N9#p3cjUmg)#j@8lwcAFmU zx%Z8X4UN*|uq_HT7~I@5(nr(|!>Ku>pevn&sWG5-8coE!-G@_)*JERMZ2Oq2y$}jj zMh)|&Usa#wh(cawyI^bb+315e-Vm$5< zxjhU>sy(ELgUyHhONE~KrdkHJO{0Nnv1Dz_t=ELUcje3(qJIzH@JdwG^oov3C%k_S^ zYv@!>Z;_eAwB4HTxrhHxUMJKS<*Q}P!tqslLo&~VA>wh3O8L^2NREE+2bQD zOco?{%+THF%7ESi`=lIji9AC3p~~;*-+NmtK2{#pZL?-DA29v)`1ylBzj^ieF|Y}k zBSNr(hMeYE@wa|RgxTUvsPTj|K&Zg{<7(?UP0B^ln_EdkkGE!75yTHfcJ z5P{+;k2n@3_MY*H5Tb9v-bFIRJ_OI~92HEYM&zOWz#`l=KvH})A2UKcOc%hlQm=K zW6O_u4So>#J%gDkG-$iwr>leheLUHbTXezMi;Zwo+Z9h?eD$*>+^>% zo;>;S^?!ileDH1axT|V!cBSTKU9CM|*Vu|SGO)StDeBaqt@E>Ym@Llf)K1}HJ$f*` zb%IsC2$^o`PF00v@|S0ByrOznNIS``FI%Xkxb`_L*}UfIceOoR)3km{Rt*i(mGi88 zv#3r_*+SoVCUY1x`G+-WSd1U9u&IVQdd_qU^wZy0Z2FRpK-{Xg9N@k5F|FT_9PPWcxaLPuT6D3H?DCiuCld4WCQsnT`z2&n{XScG`p!Wj1a8NgKRX{UP64Rh>4>R*$yzwN*Lopy3*R&sL@L(a>D9#XQgif4$N^RENS8XEb>gx`B?0=j5z$Jz*Hb zLS~glZK`5ZC5VpIDo50dZBYJN<={Hp{7^mQ%EvOqou@#v#HPj$3r`dZ${f5_L*=UD zfW(Jdjpp!|e=1X)WwTS(x7)`?kZY}@d1$7ZABU*twKc2k4z>8MDqQ!yj=m6trHbit zhsAmIS&k~ZW^GOU;~Y9aYv2jXHI+pV0ALy1k=ZitYD*+Q@RF zgR)wjIFZl1GMun5$z0!c(lm=FEbttsD6%*yJ`WsV3;w(7c+Kzs!yxo-zW@Ik7e9)= zeFW$+;Z9D_*gQEIU3|c}YaBb=J2{ch;gaFkRB$yFw+(^9u!JZqe{LutAZsZYhywkp zn?8|gHCnk=*M=;;b{i%vuGvNd5xuL8c9vEfpvbx#z=Tb;x6)fxzh}9i!KfG?OWNAi zHd1^4qG9m3(cq}jj<6xLhPfnUK{66Q}qW?WV@EiI+axwnLjsE}g*B=-E zUk&LE(ESE-e-y0+?kC*-DEeK8^NTzUvtM=oTHy90&q7dU{^$1&voFG?g)#h%LhWX2 zJT*NAo~MAp!z&~D=`Vo;`C(^hbD|3}t|MYVB1os3Podh2u1vLcRchT-P)j$TLhaQ- z6RmX^i8sh}yIrFLjx~95lFhQ|hkwA`wZ{P87XQnKG;{tB{OAV%?Wo5_rFd4 zoxo|t|8wEyX8!*gS5}l>5=IHjeO4Be!uN~J3q99M<4NhnH)8t-zl8i>*}^i{3%m9F zC(FMVyWvgz&#!WM1xxbSiQE9A*?6GEon%smLFD>=z&!uArtjwZvRC)~ukQ+pssAr5 z=g}KavPl8b?D(PQIWXHhG0T!XD7|Qs6vZU-!=}}D1^JKN8~Oh#SBTSnk+L9X5zEua zkDc7{y@YvL$f7v?t?9eDzU=k8@c)CT?f(Zi{{PpwF#g9CV&R=^4TE=5$yp$~_^ms6 zbFIC;#{1tQ|1nq+P5+uz;Uglm$*0vLFeHiMN5^I0=AOA3tD&n<(5uuj^b3!8^nU-$XDm7zy6a zV90PC1c#yHm!LmVAkv$-xtFH7>)~RepO=Zdjl-cU2oA$-1pC)Q@5FUOH%(X;mQmt> z=aZ*N?E7gLPeL%EqYdALnTtfHUH`rJKfKQbfKN z!tjlQyqIicaA?OsvKIrNw+Y-%!`Gl&5a8v= z?bV0d`FNgHGpSHv;3c`|l#?JY-GG4u8Zx&mz0`qWnQVN!wcn>e-?rdx|PL>Rz7^0dKvD z<0W~LW?5R4ptQWg$x~Lau=I;^ix7EUNK)h_+upwGT_4fqB%OGk?`Qr5rYe}R!aOa5 zi4%ef$lYiYr;%vi;Y9mehpg*gAJG9Q*dzdf3PLXrqpT>Sf(2mIX08_``8H02OcK#S zu$AZ?1Wl*dI5;j<7Z~JO?)v#;61xeTfWk_mBuiZf21krB!Z#3`+L0FlvA!Ke+jN)b zTpx#{!ttCqXJO&fZId+!q#19#Tld|s8+?eQDC)(LCyD6t2p~ZK z1p0^W1{#fR0E7_%D1=hEL9!5W7Dtic+DTyzii~lha2(rGX{igcP_T_GU_<~)#uAik zT%M#T>NxL&8_PR0AkH|EObd4!_3b}^ELGm$|7 zGEb19B)|t58nObPe!(EjT|%>SP4zdqWvY5jk8m33DC z@lJQ`KSCiwIN^Aj$3|P7LxdVTj|_t}70igU{ntakPSO8+um9q!=4}6Uk}Km3MHQ3* zWXv?@f*Y1wokmtlgQ8UOvFmrf?)O6cmy;kLasS8K{(p%Y$Ql2qxV-n19tzmB|D#M> z@Bb*K%D%czwr%}bD+KR#Umo7|u}co;4Ig`64@3U%vHwtK`TrExk@o*t#8M|@ma!aS z$5DugtrJG*%;uTQO8I|!y|^67m%#ZN_c}%Y591%00n@er5XPMO|0%BDuKx#5(qXUj zpq@3pcDgj1lAHeNPqRftQ|I&IP?>2S&93ei*=COt7I@R81b1?iPYFy(KbYb{dzIjh zHQY+vW1EiRr~+#nSZ-E>XA3e0pqkjjeTOt)(d*x$qGsq)GYn8O z^iwl5sJU3JImXsVgVHjQnT=BA@k;{cKIi*x?8*;kLIbX??C6m9%M397r-FYP{sm4 z@jx_UE_7wYcWaw;+FAD(SQ8Ru#VIcv094_+5Fg`>aA8EyYBtfuq8PxU=*Obi9gBCf z>GbY)c2xr}XHk-xG<7_R^GutRS!OH~aUx=^@^OJD6*YrWgfSna!7fm)6Ko`);8yHO z=^FFrmbL<09k~6$XC;DF|!Q_bC2#1W{>1Be8=;2)>W;+wrMp_&P-)6#PhF zB1ME+7xZI9APoya7ExiaD2^4Nia1|#EAcu+RTrXa0HUfNqUvynTFw!qWRmUT+;GKN zB8-c59&s`ymm@>e_ZK&1#|a&1Kdjb)`VlwV-F2-%0djO)PG|G{dOxhFE>`5uSWyRI z1x1OFS!yj2+6#${$g?FbJy`-nQm3d2H8v~Q(E66up*|J>m=}>WmcSf#m@POEH=)KT zvMP^Qf~p8wY1hf$bjjZgkiY3Ce{(qb^E{7Zrwvcz41_R-fwmc>sn(G;`N*Q7=Q`R{ z{KuJ!DXl`QrxeJM1F!IsM1IpEOb;1^JS28LyNErnu*p?=DH|z11NL- zD06$Dtbs765|O*aGOJmtBS3I5%~Qx@tyv_-mI0+H+-mxOpSMs>HAD5o&0aT~@GAA4 zBc?D~@bV3_$dbFoa`ryk7hi|Nt2iHXdWq^*;Yejapt&y4?9M=Qhe?5oBdEM~EKvs3 zA*abF6a_`WZpe!&LJLs%(jg$w1oAw2EYOS%8IcW2kVqsrq*^FQhsr_7BOeo}?4fko zOt}s>*@c@NfSc@xn>?JU$&^+=l(v>OD~UWZgusMbh!PozY+T6cmD;6OYL{i5U?ag! zYL~t@wTtGNqaAsh0evdHOSE7kyNDA5i0iz15aLk!2z^JPHlr>yQMV5U8e|A{g!q~+ zV@JY`@^ZcyiG)#wt5SRn<<>^3b)e}k(DVS%bU)Da;Xrech)imoa)>LMs&T(C;gqa_W?yl$Ya z+z2u+37oRfRkXe!!PcUxiS=cu-dP+Ha6FPOP&BPczoh<|BB%i6&gZ3q@Q_czIt@C$d=jSJq{Mvb8@Bg z>Jgo__9T0M>&@WGWfrCigE<&B%%SWPXEIXU*K3n#ZvM9?D1y#KSl4O;%>7VWNl96Ec=fS zUVi!EyXexNC;9l2&SIp~A&c~%ep0IifDg4KN zQJ<~(d79L zK2D;eXVcl@dGA2m0YHjvEiK8{W<48~UO7WYmuM7(I~A7O&|j>!B{# zC`WFt8hsQU*%Y$(CV2ZC1z|tw{ieA0ri$-c+p@AW>fe5q<(n(pOD?cCz3fLWzFKRf z(!4uJCjC^>YKG5W6yxVM-r`vbnb-ao^#!sOWyH(+=AXSCF5X4vUEEz3c6@)Klhz-n zALeEJIe+}}5351EDzw?I$h>c&dHB=P3*40uP@2@X3~XyXhN?h^qOY`z{`W=&UFgq+G(izUzyw_JPH^>{yB*e4YzaDGV=SrowxK@{++q`yDGa`Z46VBW zp+e)Ad9ewp`H=qnx}pr32{=s>a!a%Jw4~~2Ezxm&ADdhhHr7st(gs|L!m5(!*d1$1 zO-7ieFdJ16fL5U>hgux~*=_pzLr4bIt+Xd!+#ko;*oa6eZEA50p-wD1&b5Q}W4X&3 z46jX@59bPveL=1B>$mL8>A@;jM=Zj$Skm;eoEh8?uWKv)yIYMOw$cyC5hO3Rbvb)M z@bgRhLL(@!M{P(CC4@jIG$FS|&&s1w$YniHAm9N?6K#@mL;xHLLuoK%=+;hra=Ynq zeCmx0!$PyD#KHo4t6=qXC;70(;1S~Ch!{LZK5S#K(mZz3I)<&chwKl=u--NT2p$3ZG5rR}iRPo3j2PIC_ z#u$VO$59l-wJiEp`d-$8w$h?lYDghh-dIl{fCa)+d)Ro}?4xx_b@e_0#~KlFP+p@3;MmcDmpP%zJD{Cm!WT?d{y{r&uPISyMQR?s zpIt_`*Nc`Pk(J937O#?-V{HVQ#Rxg)(DWY)a;K=sEuWqH+f1kg4 zR16URgDJ@jWAb=5fBbZ7S$-+Cr!ZO*_KO3sQ(4z{w_6JHi*cQT>eWQ=U!Z6;^5))C z)VGxMNq-R~hoeQ*zuk0-s8?6}sY9>;#c$1q>zZfDZDhN@nceRw9dFH@~1fS6Y0&Uf!Ur^lfxI!^ZpNZS>23qpT3T z%d*>M7c|LcN-eeSG7oLifT;HX7u#dvT* zcOAmV&_Q4!a|R`JfRIVS>6|_CZ6p8!0U=k`Xgxu>+!-f@4BiC7gygK9P7gF8NKG5| zE_(0MJ!^%v6V&)xkvCKv9j_q-)yo;nw8LEb?gFg^8Y9&N3@Qsu(n3McJ^U)v^}#Aj z$FiZ8AyJ(OxCp^#Z6_GK7nPDd^gHsOipxyxCe#z<+2w2&LylVO?_CZ99pI6WC= zX^tanmMDmv)NvZo$SrIfvDk?$Ve1)Y^V`LTX)!6&mtz_kM$@~ABgX+bGa?nah;8h+ z!Y6J$$7%v{k^S%8426UK506rrgN~J8R_Pqa9 z^Vs1iZ)CE;MhkNv34R+e=i&=`7+ban5SzQf5-&xa2a=RcfH8 zfk{;9Z2}P)q)K5^swNlOBq~lsl3=z{ntVMc6a{{!Z9jdvAZZgZWJd2so)}4#k@lI!=e|C7kMpyse9 z<;_mqxotafH+qv3cTDMjjDFZo+zm9GxNmEiaXhipvc55^z=PguvReD*-o*u{t@e%J z*46LU(sONyuf}nEv7wWS6=?cU{Q9hSnrrRsU-K$J~xOwWc;LERHfBW^fol^JhAGV@DAKbNn+%c^+oziad z>Ga9deOk*N(^$)Fo=*KSlQ@Wxl?Ap*)5FRR93F9X^=`i} zKHOZX=vo?Pf6kf&)iF?7a}l#a{-=5Q_DOqR;+^XJ*R~e$F1i_(F}I!n2CC!#1r#%9 z|1T%GKF8kk;#5=M@V#Fj@!0J7N5R}L=k1vKi^0R;2aa)96E&gzm)xrJ5$^YS4fubm zz0pm#9xYLy^W8fXY{S1ayo-OW&gZ|K2Cv%h`scaC;%_I#0!Rvf(8P^6#D-$z%obo$ehtoDo9qLFhwW^PGM zfSU;~4~RQzcBy>|b{i_yVZ72ooY>6JVV}arG1F1XRHn#mHc8mfgp*bi4HIeAgfp?F zwqlgpiX_Sbs|aZ-M9gzebG?Z{!767t%ECh}E5t-ij1m*Qt!3pXb&cW-jNt;3jKv9y zFqhmZo?xZ345Fc_JgO^>GQPH4ZL6-@VVZHjqxUw|i_TV|dZC(M*Xu;Hj2q_v{IT~9 zed*sZUd;d|k+s4o1*tG`o@$N_k7|&5@G z_w?UsULZ2J>u_G~3hv{mqPI zV+aYP>DRq&PMg@$NE*$IMk9Ho`MJb?2?LMzB^euC3O0_yFuD$=7c59v3JEY8f>_!&3DGxA!7vq5B>;@qT$s`)5*PuO00PQnS5Rn(q*M=-Q z3Au<-UlLZu?v~G0k@60;;tL+iJ`0v*G4%e4<|&H>dbQEu(n(F{lIMrmQP~8R zCvqfM>pX!zAf_6dL_Vl2_$#Pmv$-1v$)(2pAWGTQ zyTFfNu$dXsG*wihhOaN9$#P$Uq{PPacnXaQD&$8%HVvEn1CQ!LO1dO9V7K`J>65Nv zKX;=mLEVuIR}w@>AQxr})~YPf<$%2_6wRPvATcj=D5gH+hp99G2B1S5wz%3;62Rj= zJ3o6idVM(Tv%xugIXwGyaMV9y<->D$FKg`eV03);YQz9ycz8Pcot-^nho`@@zYk82 zG}iy^<**$PHRCNvd=UCf| z{;+opuZK?uCxg-N8hbVvonocWpw>h7@^CmB^j@7D4%y3B!8K9vLK^G;3NP&Z`0(U}+Cpd7vms&FJA3*2aPa(i#E#ESj{1=Jv=68qK0WEn zwxC3efbJRaPfy&OYa1j_; z`U?rW&kEA@XkAreKQ~I_`P7rcF}k=2#jimUxIq}CH&xv5KXd=sDZMK(JT!@3Pi&w4 zm}k`S#)E1l@F_eHovTzI6cMWOL*)q;c~YsV_2e?TR!POa z`+g7YD-4trB?4$rkHrM|qEaI;yo6uL%B?|9gI_8#6DX0YPVX|7Q?0Y}MAciLO(`%G zd(T7&3|PXpfLexap#ueMmr%5eQKVEUstg+?P6l!EhiCWH=S^f~Q@TzUY=rSZ-a)`3Yo& z)ewK*kAUFbWi=~Y&7x+Z+=U>RIF=~D)(nPBwekiEWHi~$0Rtt$!Q`UyBrlPZvbnRf zfaMC7$MLi35lp*C7Fs^{9MeJmqz6?TtC{aetvoTp5 zFqtOEq?sD6LLIxr1c}Z#h?5knz-dj5XLb!!9rW{fAngvR%(E63!=K866y2xav5i>F zLJo5yUJJzN785kRrGX}2an@9nS1eiO?fHyPSNJmyrhc`YKt@@~*9v%sX}O-ue0f*`!^W!Rtt>n1M@o@3<^Ku%f9|8Olu=m9|69%n2NH?6O?D>|8rmu?h7{&2 zo}3?_y_QT_B5jeFK-&VPKMQFyTCE{&p0z?=N%RL3x1bo;N>;KWT8Sh8(v-Nd=zk{9 zdG`wfeyjIOz#mnv?x^`*v09+26fn>NpKi&|9h!Dk)efex$c1?{)3pVCh|_ai4TJMN%;F!*vT4@o@TrB`Qe5O+~Aq3r9w$ zTa7)?^jn_O*0n~aOAT@=aum-KT$f6&FptCHI$?jzCo{DFp-Z5{-##3(+h!gG18w}Q zRws$5;SvQF6<>Of=f0os{vY4={@>%i|687J>b5J|R?}Pv4%;ht&qv(lLGA z9owK?kj!n}H*|Pt3g5iXn+9#3I2a48)HtwJQ+aT}yivLf`w!Yv0^;v!v2l7kMtF*gKJD_54)(1(*EbqA-eO(yK%ac9rG=8&@jhzs&cku?%p1ZG ztl&QUnTV7#gstK2idXyPp8WJv8{xH**@qw%CY}oKqC-F;(tUZ9v9Yd_-)gT8Yha4Z zc#0bug?a}4eP>Zd8aC=s6`qLB;f|uWH;@iQa_X(s0(lhp1-v{^=!>hsQ02vSYl>I=YaDlGfmMcrB7>0y&Mf z#exaHC>BEkCBTwc%p%}i6yMYcB&lBn>E+y=CnC;1yutj}Xtp{n$J8CW(Ha|;Kkn$Y zPG{`a3`4jz$8Q?77A*9~W7G6nZSyWHiWiYCaOuGyjV7#jevY3BCh~i(ulj{tt}VN3 zpnC-iqmbXdX~$5e#T{dSWo5Rsn(ho2FvGx)%2EMTC#R(W3)fa zhGHyYG4;gaY#M$@R+d-FUD|#uvsi?9yz?d$$t7OS&+x`0rHT-skrgCB+;q-Bh_84q z>U6${5pu}&U`E`NnEV>4}QgEYMH+Lm;d;`xrp&9@AAQ3L*{H(aM=y; z!KEcnYg~#+&FAr-6R=Qgax42I)Hsg$1qwY9DPQBbbwA}29~^@Zs!HChuatn&0nZdC(1Gu%D7{j&L)D#-ep7n`KVo9s`&%)U&ik4UZ`=g9saDbws1D69;mX{)=^6WU${K3 zq4U5;uke-%-MWE>GM3%QzftpKW=y1)Q8?jKG8m*80qQgcdp2pvX_G6=maLxaiiu)@ ze6QeFux?or&0|k6n5Lfx>G9kxMtBMN^iPHOG$PNcm`$S?XVsXl2*crfJ3x-vrvG_h zmsTOBUyCBNP?!)hj$qR2G8pnvI8VhcOQTtr>ATF0VwlzGk-k0C(_f&Weet%-9A~%8 zcpUKBW#Ic_ikDQ(vtTsx__>S)q_Y#lz~C%xcxdYCp=E0DpPc}X8sbV1I{R;wUMzgD zr~<==H#I|dU|t2)@<(dL(J&}B!_f2=;AbE-1`EY=XLU0R_@w** zdQpgL9!2;3qLEqzv<-m%28JzShHlN??&dNRd1+MR@njuUjCP%fDXG!|Z1BYZT6F4o zP|w1PP@$(CN^c?Yo0tK3A`O}r;tzy?mK}WT01U7MDC0;fHIdSt4pGTQ;q@R+D%Muw*Z^Afz`EvIrxYWmJW1mIS63^O*ANtQMC*pQcDM9dxdAb2HMa70~t{q zTCt$Ip3!MSa+{b4v^O=&sCSs*0CO}8JJvIt7T{r_d|)VWTeG1lX6jI>W+R7sCP@wO z6Ow^2z*?YJ@v(=|jBU+5OfkUOcJ%WNzaH7j1U8xz-xn%7sSV=jY16> zAZ{%ZH~8J5=MD^=wE|a^Bvfe&QKG99@J@<763T=6l7{MDVkj|I&qVMYpMs%Hx&o6t zp4P7Um0)d4pCnB11Z}rkG*93E@~5~N<7xwzAqB{H`hRK|sOw!W``!Fvo%beWTI=#^ zX4@ARJMUWn&{+py=#>Bdmx=HL&Z-msR&EJ&+d7P>op)Pz3!N<9FGGJw_um6yiJqlB zKe&<~hoTvf9cL0hLZ52ofGVBi07zp&imqzPnUQ>*XlnZpIj!XN;GBW`*>njAdTB6E zgdy%+(|uETpAo#zxbLfXP{(_zoXOxJ&eV^b3A%tiY8%wqd#NwavBeP{OW7BaP)BHN`flEBHWwL@4zAkbXC~ zbWIm~14}nrEo~gB3#ab4#|!=?4AzZPk#_&~Hr=1c)2^EamtDWWx{`O%kJW6m1l`)Wf3xgYN;i1R!d2x=`hFuHGU=ai82qr1K$1xr zravUGF!+~8F`B6aoayFyP@}aE4d^U)ktD}wRvNQ#y^>j4tLfRnha`^+xCD~iOuf8e zdO66)=h9Hk9&)VFDIKiqTq)Eh(O)&(Myn+vgrQIR6HJ%P$$m}eYBG9exzIxP=gZ62 z-O}+6W#g1zjexv(;Nj69d_XeMwGOKtX0*wKZaaYkWHUx*SN&asVIEzRn;yFB(V;SO zJY>;K9`0I_!WVLEoD=U}Q&|;BP{ljNc@h`p?XTS-)E#bPtbX$f6_AMWSurFd= zVe>odWit`@*)EOZhfC*qR0ZhR!>eMQ6X)67d7huxPV_+#uJr)>j{+~988GRBrCys;}Bu(oWs({4G= zH!dWb$OE>mm_^%*$d@AbV??CM9p4{w!ymg~^^ApSm_}<1Gm6#hI8EzY7m-cmks`8{ zbbKjFKT3gk9&fg+wyT4+q5F2HX|`OQJA!+LZ;!wAS!NS?lmhWZ%7ZZ3PKSIUia%-pwO(fu*9vT0@gjmyeI zHy$?1$d{t`V`N14xQ9_=gl9DYXR8GovD3D_aZ~q%A>40VMmCYBe2~m%ctlnBQlX$1 z({{7Zm!kYbce_e=ZCCZ8X_CfsyyKLSa}_%hdBRcgbRz9dmDKju<_}M5(`%bAR1{Wk zfgf})^9#X_WyyF;HkUy_7fvr*RFBux+4}BJQ#YCIN~U79`F?M8NA_&#W4;<%E1&ow zbrwfyv~bN^-9(iBv$+S+9(l^L#jAe{))(W4J0{dK$>8bXtI_BJ9pCMc8OvGE8gQP!_AMpG7inz!B7N~nY?%QQ|vTu^Mz>py~sK`#FSPY zVeU}DD_$x0Y2A%qYcs98#b@2eXx+`#-=%feem(z}RKaU|@?9Tq#(PO0|4Znfy;+<~ zSauL!IlQ8`>ol6GLzF5~3I^+7i>u=?&_|Fac;9xG7>J}^Dv>*0e(f#f%;N-BwISX% z&oRimkWn2#p?SeLz_=`{m6nz(#i%JEdRn6sH4-_=Tyj^Dtg}I?9Lxb`PB(i)W~opa zwUNhui4s5r!{lTUT(FN(x`V!hVw%ijA+Hh7?(3$4CA=P5I)w`#dVCmPBweC>CIzet zBDB+`P!{yA0;()}dQDABJP@Nok8f1+|Fd_sy^-Ta`uqF}VHOAyz$24YeBGA`0w1us zLlP{K!`+7#vHG)RMYe-7RTt@2zFPqFPjoP1aLYELO2@tC*W5 z=hPPuANW%9!vFp;W}bR~ z_rN==yyI+8+);tg&}bCZ!$ZSj8jeRFUfuJjd3K+k$YXxB9Oe)NE`MDNW?B#bH{L{P zLI*$SPSWzFBm7R5@TJ3FzmG3%6tE{`O{cS^O|zHHB}c??fBu$rk5R_E7Ng_Boc|ER ztjp@t`6lA}yw@@3yJomsxOMNpG=_n3KfeDGN1d8Pzc;jQ6W7|tJjEco&F8()#7)$8 z*aNY?yW?=g{w8KJl_C{gwU|b+ske#y?gy~)2zCLi^g+0eZ@w-AM<88}JDEq|zN&av zl#WxzczPOW{w-m|Z?1da#d&FVn^|^l5WDSS)OFXQ@7={+caPA??_0*nn?~%sx1p3# zzsAvg{dN$z-|?Y#Yn|AplxewfBpW^+1yNg@H@fUS(NKTb^Q|vKq)@#uCfWF+HMIBo z{B3k(Z5rJta5}Yn6Yx*ozfEs?9(R2Ixyrk3-x*J9W`aGG{{ieM|FcwD=$HLpAL9s_ z1$R+E^4+U{1|F?#vwPK~Pjr)IBdECjJcY_E7KguM~|JEjnK=({U;7LH&m;ef+|K_ZUh=;@#<6Gr?>H44O4N(+S=8X-w8)?pnIJX1D!sJ2s!h$_ z11K{obd~v+^e@l;c#QEsfPVxr%Kwg%K75h?k8yPQU;5M0X7oGNeLV7PAnSs9PJQm} z{CqA_;TdRiCf)G~U1pPavnpD6?+abzh0~DPs=!=HD2iNR0ag{+M1v9hnLg9n9Zr*i ztF_lDZ=_dX330N{pvs}nNTaT@EcY2srFB8cTlASTZTy+^uspNN$Lq_>egYCFWi7I@ zHkD^1nwFwK>vL0QQtL{oiMAP(XY{}s{k$`2SIFZsZX4v%WSPm0%RJ4$GhKtPovLM_ z^2++japo;Ry*<-t&k)^#wz<`Yx-2t^MIk|!-k{>F8AVZB$PH#f*r|LjDAXB98fr&~ zvWJHHm^?G1?(|S#rHm=1mmsv0#^x1NSy4Nk``S$9nxU@bp_USk8Ebob<1|81=8B#z zjP*t3a`4n#PkLvetet9{QE{vtoez(-KfP_TuJha*D@*DxL~8{YS3y}ClNno2(Vp$o^x?GXgr)%RuIq8K{xh)(~g!9^D)+r}cwx#tSn*V8SM)`j%@v;~F z?=g;@`d=9RIQZ#i5YKxGo;fspdJ?f@xdpy^ z9kK}iUMBJnNtdJ`-oN1smC(1QI_yH+PnC9BcWpAFy}!Hpa&>pxByjlo$LkLjlg<6z zPi?M{_ZjDOc%8hzyT1KEO@2cPTtffegoY$mxqdO+Qe6(jzp+Xf$KAch2DrB@JKl#b8{`FmflsFE{zkeD01&CqSv<8A{VBY*N8(q4^q+y z2qQW|%j7Rb5(`Qs8hyXe-IC%UF`f1Y!O#gUiH`oUyazs@X;P$V~6}WmYf}6GnDkJZ&?)NHy`O!-Vt3pmogu~ zR9$GJQ_mMJb&zN!Q)KogRBClX6qXvxmp=6|z3h-`hTpyWjU6v?K1E4yGO2ZmrWXQV zksQZ__)B;ZRq=GMUo*~0`@LtzU^Ek8G`qoQ=7KSryvJZv?8aGZPzAbNp{-PBTvegXy;TSfWGTJXt}qC?RE1S}QLl|T;!cA4DinxIQm>)u zm%5vx>BMOf*ib!im(Qd7o~zqf`JDjYjy6a)yA3-=hZ}S<`0eZ#T#huk%j)wr^~-7K zcVqPXqtWl?q2KEi^w}HjQiKa_b*hPkXgcOS@c>K%k=ay`EJTvhIue>&$_%_pm0{VC zT1<@4Bzoyeq~4M|HYpH4(ke*ce$8!`fMb?`6D$FDvjjXv0uT5?y9};GMZF`9lU1&* z$_kXew2E{IhdH%kRR$m(2~}xy5(}Qd&OCcl=x&+A@R!cD(8EWGh3v)X+lU1&twRak}ic!B`d;4 zE!TXJm0YF~W$2tBr&Kjz_Qbj`w@dPy(GyQdhLyLmr^ndS6WG(cv8Rs`#|IsvzsiKE zj1T}&DKNPZBvXVIzQ|=sU=-QP7_^)lHB3%8Z)vaBd^93|_!9#Wbsk*1rhmY@1V-tGJCiKy4LeFCp zCW>DP`U0s75JH(4gh>rHWuh>nLwPA{ptpGjKe(VjwpUc{?y!nEsJG1&)R-x#38tWS zGX-_LK;|5btrHNpjI^|betgc(WA2nT{@FGCUgTSgha`~fJfS==lt6$ zD5z4AA}A9nL=;Ng(Xf!_nZE^E=DzodB+XOXM%2c{(_ThF?D(=@c?acBccPl;M72UE zdNx=^!Q=b|U4_K~p2e$#e@M782{%5LNX=+IBOZb(%6V-G`l(d0gBMTwIdOI{+i?nT zm3X9%Y`;43Jgwk+Hg$xVLDe0$w(0J*6Wwc8=w8%5b&f3-G IL0!gH5$ae?{U-w5 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

      0#`r^4r9yfIU0v8qgc$ ziX|L3dOmKjQ#aJ0L-!noSb=3jhrbuXa%`?TsXszl^?7UHp;Z}Ph$=@Pi<5EMd98Gx zOY>JOya;3W6MVrv?fJ4^^l|EoYzru~UcsQiPzRxmfj)y-whrh-CMbkp8YUw0kzuRm z`5!9DC$wolhO_pxZGZWh=E`f|itT(9PTC(TdA{Qr!AxSOzqGdZh3B8pz^`uoN{=i3 z^@ir+T;1a0ykw)haAr?0eT3;%pKFT)Ir>-}t^2}Bt#qGD^H(hVQY^;_F2_q=juTvt zBD~YH7fgLMXTgV+KDcBZ#)FNmZYDjYaJArPwczExdOCu7CWoq?D>3ibN)PX<2LHT0fD5O31xk7WS^gJ zZk|K7qMdU#*+eMo0 z;L2S}gh3rv*nE^X$XCp^w>D{bcb=32x3C#@QdKP$cQ0T$g+hErg@JPf(#VyU1--s9 zV9BMmdfct;Mwicfo14Ao;S4$6+(`Sfv9vF~ zhL@eh6Gp$`OccKyrNQO%*(hyCooe9#KlMhccra6M2)IN|nJbcV(GX5>HvgizMChZY z61R1v3P>QF3nu~VClo4ao==7j)d}U)`ivr^ylgJ+^H({c=(*s5`4oUjPAHca^GUFJ zChEc2#DtvNK)w`WaQE#`q?6>VW?^dX#CB?IQsgX&Z3)w(C*RBySjEwq{G+z-B%F0F z0n*Lt8!(3tQ^q3MArjwz9j0)Eg|E6E27r^Io8MzbhIl(-69;k@t1q)nyGG2JZRB=NvCoVwP<#K^A z(rc*oo-?#&z1hoyI!CnH;>)BKV=jc?j^nf%m*Ss&*yby;Q7yPPm6tw1rSo4BchmI^2QA?gY zX2Q4`T<}CLc;eNo6z9C*Dykq_UCc&%Wu4K2ojWP-$z0iGjZHz0N4K;#FObtKw^Bk| zz!(-i{vG=wV#hwLTlkLL`-~dWEaxi?)>Rb?poFcsYtoaNp-^$UJr;as!`@p6X^*9m zUsbOWh-LItgkKA?Q%};CGSIJhz?vr44j?yXZa}l7WwSG^4yJDL-F9FyJJmiJuJcIC zwi=us+2^R0nywv5)gHaM88JJsoLa=DXTD-M<^$F$*xM+)wS`Ag^&g`ylaC^FdzBa- zRS3ul7rE#lY;!Z)+yo+R&O}dht?11Nra8H~I7Qp=XdZt1Csvmq1L`TgWZ^N6IIgYm zjEpgtQ1u_B;LU-dMM!CO#O2A@k~1`t3O5oZ^!G9D#3gAWpu_J1GdbtvtT!$>U^cmx z2sbXZRxbc8K+?Z7o`;T@1|IElSpdnCqjg{6Rl2&l8M~P5ndW5HVQLnQDh*I``Gn&E z^tVJ#Fww(QbVd#+9Is)y`D~z7YuyyQF4n$eN9UM*By{}boInzJ)iv`-BpsiBMw{6; zXfhk#eNYL)z_CHMnE439X3w&cWlRShg{+2IuC&^~ILcD9$mCa1zhOxr_a&Vql*r-? zeSc4tyH;68NWH65i3`l3 zb+tPGBicv3Ytq~LoSCr38b5xlLsmMT#IDxlqN@goM{+7_I#+m1=S662&TFWJukQi_ z#in^Brm@rS?sGH+I2~+a)GZcgd?4JOzs+~QV6O-lP7b3UH5Q90HpHvS&y2&%)_hi! z^N#6^tyEr>*h3DRk9g#@4NW@MVe_ZWqu(yFnL50{0VGZI4-h7jcAXaRcGbY z300;N!{G7V@Hf!)j_QlVfnW=LhmKQC?83wpP@hHyPo)GzJXpmbsJzP{^rh#?OXXvH zi?M0KyYF5c{nzok7e}vx1OMpln>R0l{=tF&^3{*8PF@8&d;ZI}zy1{L^!!&py$rT@ z;pgPl&q06Ne|3EH;@zuYup%Yhc@KSVd3)fWy!b9S^fBXsxQOCn63qqvlUczH7+P<+ryI_n zp8Ut=x32fJ?RU3=;j{4h=zpHRAOG$DakpIkA7gLpqK4JQhVK;Vssm%pzsKl`0%Jyx zqvQ&r+9*Q=bRA%aClT3MLtnpJpi!GV+L-|H5$cZ|s)VsHKsx9%2~Byq$>t@QvI_z? zZYtwZTqg2aDfF#m7XXL@0)t9W_4x;ynJ_st1fi-k_BaX{ zlGvz(75SC1rk*%lf&^yIay3saLLZdmzJ~wKBD5T9CP;^mwp9|OG!;J-tbF9v-efL^*65T{j@Eq2+<0TQ-zAr zCT4itRvHse;&5YQ>#9iN*6I73?zp|h^1?K_PA(!iB@|oa#RaQi8~3Rv^uIUy!_rl& zN9dyPsO6Yg1!goXCf%TTDOs!u6Kl;t~!T zj1Y$j{h)6=>E1 znS%-Lg0v`zO%q*5lHf;JDd|9>l6Pq$o1akkUX157ZJ~lVYDty zA&IpRPjLywY`&};W!keyG=FXIQdgGhc!NC`Zsw%*u4HsjdF7F(a$53e_u$%OTK8mL}v zc|!*Rb$ocS72{%L8kb12xS^=@2pqt<)z`yDX7&9jn!^`#GB)Bm#G1o_dJ~u7hE*?} zGryiq!n+ST6-ntlY^JG`Y9l?{wo@pO+EXe{`27_k!fFy^L=%g?zfsTZ zp|64}6AZ0q0@pmd${MJ$>6#BAUPH$5{k+2K_J0#_2MpH zK%RLu8|NMs<~PKd<^Z&o{(3i>mH!prQgk#ceNyJL#t&C<88v<&b7}a(hP}x}n&t7E zq(Djauh=@wk%~RLu_n*DQ3$hRR}2Ij7sIxXlmLl6uK^~GEFh3a7jENX!b$p9o$DqL z?90R6(BXQ2gX+Y1jX*+f!C&TebB%x3#nyOBHBB4LMXbGPG|id#ieT&Wp`Bmb9T`t# z;}rp2wBn67W>UVP)_h%iAo>V7`VE^dS1-TA4U&t=lOkj5NDO3$F7|9BmRt<)%x>;G44V#c3iN1DB zWoa{%YM)Jh8^0?3WDeDx0&OUX-RJ2rMX!s>j0#PYPyrL@VSMT<7j?>JG+_fGgF;g7 zHyxfXj0^IjysB10QUyg{tgkBT`E zTt8z@D!VANAJDi7y&FlVM@ZhPo_B!63y9#IWNAzMb}sT{UR=RKb$|f5$lyA|d>n%= zN>b8N!_d8#S-}r^LLQVZNg_}L4$$mA5|5YhY#!(M2~MO`kU`rwcoq6b^p;5NnSKvn z_!B(;^EL7dg2SHA6UNzz;E|80;=mr8(#2I1KrmU^WT@kRAP>H0rszUt7cP0NLS%3m z6|99_HFE{9FMNw4WJYE73X?|M-+<8zpL?5|O4TJ9Ia)Et2^^)i;Sdy5egIC3@$=qj zqZhdN7$S`1G@stdle%)#v(Am8^kY<*zIl}0qqQv@&*1YQ9d!4>+FBbJ+*G|=+s^)? z(4i*p1?Wc*wF48}VY6G_{vs#(yo6cj{gZV00Zsd8)8T_S0VDm<-r1b$@b0j^21(lm zk|`^TXduC^qe4r8E!nUT2`5(<-jl6FVKm00H1wgP7Jdu8!DQ&fx6({U8S%8V z6_2pYp>1=g%z>=ht87Zv1hq-}278Bk2Blt2K}2dzun7PM4yk?Q&_gTFo=RKZDSh#3 zk(>!5&73OT)eZqGRlhEN<>{k%f>M?FME1P0wYZa}R=A-D{$L5AE$*9o;SUy)>f^ql zWc^SX)?;7!wfR*JdDfS8{9Yv!ADLs?TzwqYE-smKUF7vT8>zio6wi(H4(GDruk} zW7~$?1}#`U8Vw^OyZb@hdR;Usc0I{p)RypT8!7k{z|GAKHpAjItznAmDSv31jp~{n z$EqAai$Cbfa8-8vQo6)UIk|ByRORR9C*~@eDI~BVI#_#SiY)*Wgzhi)oe_rF!q zBL#f0l#ce;pD}x>20Ukiff>avas=_rebpzZ=~xZV;8OfJ6#f;16}PT3G@u>6bW~@d z9~?VuC^OVHK!;)a8ej-7R#qSD8_4)4D~4-E!s)<)(&;@)w_yqAvawQuP=E zI+>MdPjzPNp4An0IZ<1mQ6-a&87Z6VN-hMFIf~H5^$}Dv2n8e2O(R_qx0Us$rfbb; zHz<`a!U+t@(}LXKd{hxV10pv;q-K=*K3rPj(M7$t_Bn^0wN>0K(|DQQKo!e$SqNEb z;-Rxx6Icg@4bs!_ROv?fTUfD=eq~uUtHYpC!d%1EMKB_{cj(E>~T&b#CRR?yf85EL3etN9nF(zI^ zg@_`;t-&6vtt7cytX{diBx1pq@Upz|V83{N-i`1?quUU)2*}7n7hx*;J~0qK*X}K& zOI5hE4$;zn-x_W=yJCgLtmD5~RvkdoH$#|)Q$PyDa6BkrJTY^T4<>jpgW^#loNz3AMN4t)U$bo$dXy5i6(M^#A%w6HCle30 zJa$xAI!iI@yJ?`y#V6^cMfppKs<|Vb$Ho(n*EJnAqP0=Q`@!QI#4)~1&d}}US{~I_J)H-$Tp|~) zhN%kC55g$H37jnQA|n^A%EOA8?kndY!r3AgZ95%78U*PBKuaD%i)cr6kr+MCQ7FY2 zrQyx;1PeH=pLPipuy16r$>Nig?2hoXX#T<)()UM`{;1rd&NEE;QJt1n=`vAif9Ro~gJ%czaA zkm-;HS{RfZO5=*t7pwWBXmS}VcZBAYONuVmkd4N2M6-Y++%S)Rz?)^a$v@{q6USnkafvSERTow z1gW*UZ;t%J@FB7#(ax>bKp{SDQH`}h9?;I+v?_UFJ+ zl*q)@zM1#9@@PfpqUprdP)HPT>w8UcADi_oz0XpyCj{no4v<$Y3>@KN{97AW^Hxy~rh4cptmLoN z!ZTB=hLfotehjNc%$f|;6-hI-5o)(pJqo}YZrLyk@0384cb^nqx=~kt@kaU?ZK9=c zwO&Acp#m~jf2(ImV4E7@PofoVdaXpdP3;(ER6b~F)p$8$FjN=4&8hmIRtt{N#+^%CMW{@m!6{K{`(fwYON_j$r!#cP;|kHY&zD!+=d zsk&aT^~MM@wP^^)s7D%jkX+I0AbfR5TG%>9!j(Zo83g~eB6P6nQ@wzI>avV+HbV8W zUW%c;RY;sv@kvbt6Gf?qglp#7mB4uF-(pLlDdg#v182a{nauYGO*coGih!^Ih%y< zOFXt=24c0_&F5z#gCr>$H%qLKg7xyO)Ckvo?W*IdpP!csC%d;@eVC1x=c?V@CWNe; zslA3wl+;cWGSyH&lCCZVRk=Y0MvXa$#@vuO zWtZse1o|A&*1w3$cgz8PH(M0nk?HHp1kl(bsm9~cv4?wb0#4C^+NnUF*<|)4n+t1M z-%2OGaN`$dBsYFSUX}QOfj?wRf?drz40f8-Qm|8%8iJk7ng-+H&hvN}x7!|S^O^Jk z#bZK39Y3_qFRAz)6YHa7-KTeO4Cq!lG!8FIMZ zPuoXAy`hoh4~L+j$|+?iXT;r4A);kc#%t(`Au{YS~g?A{+nT4ahV>`SP2 zj3TAt=3mg*&6>v2&m39$M@E)@=Exq^*qV`v%Z6Ap6=hsQx!rV*;GZU%r%8TvnbpZ5 z3~V+iHlz8UD_>}%W31Rk(hxbbQNgv6s9bznkXPuonlR7S{#2w5-KCnkG52zPcl*_I z6f~Z$RmB*9gvExYm+uI+o8#XVRR*tg7>+f2&8nQlkd^FRboO*V`xgB_t!3Y)Hv2Y0 z;csH{Zd03go78x>d6?Ph5^2AafJ+mgom~41H)z>Tv;utHz><j*-q}M zQ}S#Rn`hflqvqKTbsb^_HK+E{2RwW>B9J=a%Wk#`Fu1dhAyRZJ76(2D^UxpI=D;t? zcwR*=3OS+c$8;mS&B#e!pOZ6?W&-s0p;_YLJh(oqp%p=rHt%UbU4#ASr$VyQM;5C#`!B1;(F@&ThfwFRk2(y!Z4J{BeSHyFDowp zjSLl`uaSj&g<7bg4veV%9QbB_sV#4~L8!{(jZYFM*FG=0h^U!XMP{sql^39A6dXGd zjOeGHeH}5a=1W&d()E#7@exttU729`)l1fah%F+{X;UP1zdmgSTHZ8eu>u)(1{N16 zO;^K@5)c+h%qi7a?S6^A^v4(wxYiGV?UmX!`=ZLc1E2; zS`w|<2~*!dPFbhGaG)K@WhYnB(y(ZaE)24g?mcvQ7^y>d3D4E(nL(Pm$S3f!PAW}K z#LYlI{?x2aq7rj78J+^n+Ru1wak7pHDoRd*);+~Fmh3!0K=ZltKV%Pu#ESt64S zYreFN0#W696BSgG7lOS!(e(;;lUearWbxtW6yUK^RhW0HeT8wrRN2Fzx%1YwCQ$z7 zap0ZG71)VZ@2y!8tl|fHk8G%V7vaRz*HwU5j7(iOrr~d>2ARh*XzDs%N|IHqcteHN zEr49OYy>$C=g+t|)%jskt}^+4WVjEuvm-@TnXjN$z2R|$U{zzKwM;bki3;~5mOvwJ z_Bt9ZiftFziM($}*Q}|^roEy22UYUUFp_8~QCFmGZjR^n{74C8W&c!jbdoPPBQTV< zRie_i5?fZQt>x(yU$DtNf4*G0)pHuv1-bRpP!${d)#C>WUq-KnL9L9z&M51*e z6eti7AZvj6ruRQap>jSD0!E7qlCMRD@Xjdsb91BCHS<-Qe3%?n2GVP><;So35Xl2w zV-+c@dTNUs>=`>)Tw?rnsz=4+Ya(=XY`!|#V%ZhdNFUP|z|*L_KYaf7lpIu#VGFX>ZsZ(2#>U^)V^9ZN^Uncu{CB{>XgBe&gL zJPni0P4tC_THPqLNtm+tR?5(T7QPDkY=3ff6FqCx51u!&v;HGT4cmc}L-mAl-TrNs zrKm3@axlaIQhJhIhs);Xby`FEzEKiMlHxkf^JIWAeyh(C-LBU zhS1gIQFb+tN^(j=-WqKmU<#~oT_{%OG1-C*E0Z3$k_f14q<*F!HS2P+b^8@V+}gaw z<|$T$pFX)wyX-SNBCiqoB#>FLNsrJfO0I$U^oXsQCsWv&YbMG6T+SpjRgEad0sz+8 zYybcg)`_^RE0@E(n zpZnMRNtQESo}UkSwBe=y0f5)M9nL)e8lKME;l%T=Fs*}W7b4vJ06%WOmXG#?nH(ywhKzf<(0NTgxJrB=26M*2)!+B@M zDs9Qbl40Dco)0CT_f+!_cHBJ=CmnTkA5*F=w?*e1@b}KlXiX1x?cnC&tRs=~N0n-e z9od;1Ct4lIl{ega`t+OD)7DWozopPVEqCIz2EE>X>qVZ#v)1>sxR}LxtJ8|k#pD0_ zfB!#Q7gtd-YyGeP^Z(PDWLK?a>#{88MX5TzdL}Gt#5`J#W?rwoJA405dKd}XXwZ;WRc5IU>ctT zd9b<3zuo9+I^sw7)L~0b^Z@S#4t5CB$qlb4e3eZXGbqfz=wCO>%VK1|hUab`|6`Hl z0M$f|o)?_EfBy?U17@H*{G`%hSy5;fHfd*O}pZZGTdb;`3DHjVEa1&Y%vEaZ$;tZt3z*i1|!tLCv}IR z)!{UpE|+I2#yUrs4bM2b`sQZ;*%@6-0!tk(pw{VDIDkr}#^|LhA1M)bIw!${XS-mi z;MHmwKjJcC!ym1Vp80pw3z$1SpHp83oDX1xMr{#GX8+;GxGXRcxsp?z`yahka_+Kg z=uk8^3sZs8|0A43}#~4nU<2v)2lbjQ7=qK(!&__fB7a?@697%OtN2ta(rPgc?$EQV<`Q{5_N*+!fsjQ zSJ=d~j$&H~Yk$CgjO{$(37&=y?ZnB*5pJkRf^ij2E2sWKg|!CE;xf!nFUDkIJtu#A z|A6|2<;XpUbTqRDm`pQ<4<=@uwz&h?(E{OI^{3Yo9QR3l7Cfq_Xj zH(SnsU~%#8cKY7PAkwGaR=?MK3Woqs8o`y#&8@!~PQbA?PxK~4v;lr$uGn{Bl2W># zdfsp&s-10$ITUgc+~NVA^^dqE7`l9q{scVQ{m3F18lOlmIi%&Xz#8v^GqDe*BQc+W zj9G%{u3Y&u@}7#ITRJ9_~Uid%*{^EFzpPkA2kP0plmA2bAe} z)wakPxSC0W8o=B625tr@h4)Lnb7v@xpo-1jz$TD0Ifw1>&DPV6Z(8qg)lQOm>$>0F z?)F>mpw~a>^maP^UGE!(V-+R3hm$Wwl1c-MsEMt)J0vl7+OjW{k&mbzk!6rfcAQW<|9QUBMJU@{g~NUj20Zs#|_4 zzX8ln-*I`CmHv5z?mTW;Rn)zB5k^tFHT;3 zc=`JH-H$JRKYIJq$eEaUzPa%c}o5a(%^ElNtym|Y}@vApb0hNCv9qx(@^cA}D z_T=@ukiAg6O;56S*&G8KP?onpzy9;+TCrLSzwY+=#>#Lus2Dwuz zAO7<%`qSV4QTcfC;^#lVI?)-}7lY%!`s=HoPCoqf;>|0HH4{2rUHi{3UJhQq`g7Pn z=xxzSe)rm^v3#IX$KfdlCIBRQdNz}fI%c4+qc>L>e3ApabB1eYnZ-9J@$KNp$Y#v`H(AVFLXH1{Q#cetfPKQMW=t*CB6;{bK(vv)z ze1tCX))QSIFZHj}cX@UJq-Y^hdGkx_Iet@CZaR{xeEyN;^E7KmGAd|zho18Uldy?|C?$9&4r)lBSa4vS zdCrDStj+SDf8k6g?5%rUHijM^EGNJtk&7cPQHsM(>dj7VZf@v$#S8XibCXJVck7zs zHoRf=y9FWbOlC+L(Vtbdc`t3{jDUMU(Mpsd~h-NSpAu$oj82}S< zpKM%g$@G&SUzc=UYmNn^$fh{X1{d?51B!lE*&rw@yDr-mc}}fnkWSBJ7#k zx+Q;L9b@{s5?Aw=HH09up&9ZEW;X(}R+%AVte-PQdSbn2y)T_0g#AtPLoS!7;~NRz z;MA1JDaKK6()k$Q(q;Ex!~YfEQcxe!G!oO~u3d(j3&X+wnjV$;g0(c8q2#a`NQHoO zO@Rc(+a?(FfG~yEw+jlG67=yMwsm$xV-$q{LOQ(*GkB_n}p8~yJqQfcLQdc4z zAjzWUA-na#HY}FAMrRvh#kCl7p{~QqRYo?PT*i}+-)H%2%7yGx zlPzjvJYqLO-;Cka2ctPj0(Q~{dy(E!AL6N7p(^DbRcB>LsR#)}TiJ`dZkZ^r0Z{K-`FrP+DiV~aHSl%4 zqz$ru+)evM=W=zu^`f+U>~%z-VXou-b2qFVs+CPCiUoMw5(+x+-u{?ip}Ozs*ndJj z-#Cw9O|@cr4O8i;P6&3H=iff2;P2IfzoRy38O@BsMi1IXrR1F5&ic$grv|m+*(YcC z*~gEjvW}othuwgsRR=gUp`&$%jdO$I6zZ!5ovb6N(`oas-36PQ)@}*c@0aD$Xm%~6 zG1Kok3szs(W_t*h*eB3jFcaCRlx;*fHa9mOL_uK0|p|M5S+XXfhnn0eDc`-s`=L`jF%xEC2bx8MBQN2geY_gbPv}RM80@WiHWvp`{ z#-nCTllF)&u)-cZ2< z#8^A!0Qn*=A%p62y|dT{aiGmYKa^Lq2TKV(4V5Y)RisY9okzq?=*9cCj<}qmtpPwE zBQK+V7|((Cp2^woSRM+MUJQk}pmyU2+f}8^e5Cko>9?z8!|oXk6kk5DS|d#ZxUuVh zpkrp%oQ3}OwEfD;e2o)ew3=3${rolflAd%1y-F{b7xBOZf5q*RKD=M3lV7pH`Vjy3 zOt!s?AKGSLbzO@uS=UFMmf{Q6?~xVPyZm)0Not@8x}2-f_t3-emoF05OOV#(6_ZS# zzY3?AO%9hhgYa$H>~Tq&V-MGZdLrh{o(MprTi+TCk^Z;xV4XJTez=~-TH59)pd}kz ze{tumYAZ0hxzf+=UHW-7RUy|GPFEEWeCb%K2k~pHo^>eLyR!7BOdgc219CrBBh2X( zYNWO|VT}bGRrtnu)-=1SWWv;W22@k1E9i2h&f~xS`5k_Nqj84pB=Y6=Db#hK#@2U` zgAG3Xwq@IPtJ6~+tHlMGm;YLY_<(j;|xoF{pd7Ux-hP-L%pn<-+R_HeJQ`j4R zdS>h`p%DM6-6p!$Dtr2A92%pAYlz7tWBi}S0+5)HMBLK1ZFx5_AtJWv+6|tj&_WBV38QKPhq=;K1o|1pG_r$+XrB4q z#!xN(sM0({;fZnrq@rDs#$8P{L2&_+`P=k}LJxRDp|oXyN#1=a$Ce96v^hv>&6(}#r2F+BXcpw<)OZ)jxXpG&n5A0!wxmt z-P~;IY!zUz0`Gb~CYkvN^GP)(tpF;t5cq{Q20fwMO6`~6&VX^1xxX`u=yiZn(ETSm zlAQI)moepPl4B_-Ye-*ttF_%Qrb?>!8GE7Q0B&CKC-SsSgP zW31rxaL0bcd|$I;a&j%e#R_QpR#WH~;J`f^B8PN=u8{6yzDnD5sM`SXamu z@H3qse;0t}dLTnu{MKzy6^q@~z_u+m)R2eecFkQR8Hnm+^XP^T-hV>C`4}Onak4Sa zb@S1-cM#;e@4HYQwANB66WWUjiNe4cBj!|1B%1rxH<~zb5ew+BPYp z3Av^XGA=?0baA-ARH-gnS|F`vt_@I9@b~*!bWs?^>{>Wu81@My8htY>C$6ic1e*q{ zX*osSnXFkk6s?1{rXgn5+bvlOp@_;#JA$9Dr%EcYJh(opbDjIvwsAM;=Bi~^tLAgM zT5}4kI2seOd6MNxd5apt{yF(vktFQUz$|Qa;^ndd2ix3y2w^mu3Ln%~K2^A?OddWjHsj^rltZwBlA8x8Ps^nb?8^l8&@kuG3w_>bd*hrGyg0OJF zl(9a_M1Gyz&STSgiL#;*-x|%0V5pt`O8Sg@-WxVCF$}dCg_Id-HO-qfLtIC3tY@vD z_W+zUji6N2cAP-Q40ljDRL`}dn_HwY${NIPuTiV2f#g}Q7vuzNQL-+}8qjSsD4Q7( zQk&K2o538ck47k&R#QnEMy5T$S6XTHBFGb(yg035gkQvOlOj>m6{$}_qhgNSl-~i& zi=$N7aCeXY`e%_-U4=l_8xG%f2G4AvrVU=LpHk6E)H(xXOllc1qp=;JxWeCxHnTum zQ{i>RY}hj5v}n}^J6=saHhg3{(zs|1FIzysxs6{e%I+kLGwo}X2 zuwJ*T%9u^#rdnScZJT71rfE~{_!GFa5OeXO;|f$2Lqq}!t~InF!L<;{9+B&ppV76K z%5CY9pv;!2u8xsFx+3D;Rw}`-OgowRQ5!+PtLk(-4=aNZF@~%8o;Bucn_aFI`n_Ix ziLsEY+3IzpzJfJA>%6a#4oJ?$N&HD`AvBq(BgcW1A@0eAmg-oS;5Dz!r%csN8(Dv% zg*l=_%6dk*sgfUvmqC3NzwAK3;9{>tbuxo?pCSj+SiAT{^^5VUr+OP^bqX~@0$epM zOOkI|!yM1-4$oJ`SXziw^=Hklx8vSg$Pro##^AyKruI|eQbEoT#J$j zOzJ{w`IX>T9i*x69K<9vDr;m-sQeTIB{XYqVwo5Ww+eB}+#4dWFy4dF?sBQ@9z+HK z5}Nwsb*vdN>oM3!#nNaUnp;_o+h_H;JtLpjn@ZtzUEnH=UQp-`b267p@r9tL1*o1| zOR%m9QiQS_xThAoIjbk@8lar38W+MK?=;s=Sl}_+gsAf&lb-4W{A`Bw)9DW>PrI!v zhu2ljUkUjc-9Xo#>>;W3%j?!jwwPSD-a!{GTfOd}yA7XhPo#rhzyH7f&;J+v?D(yh zKr*(zU*zX;o?*6^i)beOQArn7jJ_JV;88S(eHz!+t2XECLwEyS7;+Qn18W+>gy6CpZl63Ofru9~fxKy8 ztRu4)tDmuq!)~?Gt5s^$@hY9xs?gaNbE^l)Sdq~kbqmWSHlBIK`RKOR)zY z?C2u>-`mxx>gsAGT>~R1Y#k$y`%RoK3JDV5k(>2a2YvtbyFGX~j^|~JgnFyL?;|wa zN4O+h_TAjvFr)kmD}fz+v1LQgzeYteYrRa;kJ+^kZ`0&scGdbdK5PA0PP?+2YfeX& z(=>^(VZ^gm#nh)zdE|*Onm&-LCmo3i58{Q*jtcJt> z^BrRfc_TT9>|9ydU!}x@TP{nl@x$h3Nq!%7^g0wd$DZGq8&B7em|Yxr0*-gV=H^*= zr_Q()51spZ_bCv>q<<@(eh0$gDu(@fH4j{J`-FDmNcExg8n9SmcnZ4$!$h_FsS|fU zVF*tn?H1B*31N1#=e^}JdX90t2G23fC;W{zH@AB|ptHKF%}$}8VFsx4IG)7gCR6n4 zC2k5&YiUPtJ*C8cjF9sv#5lMHCvXcHj*|?2uU3*l;PnKZE#h5BQ6ohN>;%rrE7D52 z6XYJ#00Cx#qX_dJTxZF&g|R1K-utUn5yq?4FgxWVOIPQ}(V)RWcR}PQ6oGq7Jmd1n zX8@?JH^=Yz1*vxZh9JWDhAi#ST-2mEQLVx(SvQcUXA?oOwY5^@pK)J*I(9QZ_SSB+ z-pb@Gn9V7#<6D1oca~IKdEbYv#eF80yG8h@W+`w=yj;Sq=m__eNqDy!%82m=oVr%& zC8x^eam(?#e}{VAxQ);47@ZRrW63N?R_t6t>;cq%mlNO{tD{f}ULR;gpfl@^nvW0z zM)iVxTf?XC(O-Hfm{5%$;W{*yNij2&$$aVe>h0 zIa+&6CLu*VnFG7OPA9T>GBsYFkb{~Z;rcU%!imsjBTdR!RJ~6`3Z7@_q(FRO{D8Wi zq!)HQlcG@e62&&m^c=_!jM#>uUhp`uZ}H{Qxrxs{Cgr=v&s^6{R3P;h&1s5N&+sZk zXC2Cqqq!k`l8(HX&CF0N_W@U`62JVwMe<>B4KXQphM2QoZ-!-;t2^_{3JsnTpb7)wSbH! zn&AwMS~(_`@zLjqIqZTGzjpM;4u;z?y2!qlj^Cif`#PREe!q4-+-cgRMW-l9o#2T; zR#jEF(YawwC$y9#wjuwb6xoH3zU3g$M={lvY;rsp5r@66&VOj)pL;gupY6G=#8JWLu1J_SSFbGHl;Fv1FgT| zO;W{b5=xvXaz*q^lPrx{5hpQoBI(kY5y+SIV}(qWp?bcK_)*(|ES75lf&)o(7czZa z*;r7XMO0?Bdb;3V0&t&9P`{#(M^E2YXbw}%qjc*z9C@Xr;=uP#gc+Q*bs?J@FnFsv zW&+<+0E3R!!5p);?R&;J?B_^%Itu_Dwb&jp!C^A*5RPyG7I))+V7%GtZC0x>a;&V> zV*nZ-j~ENaTU$mV+;S7VGnc}XruV*k`nNy5AHCliKix_&vhAO`Pq%<95ID>%o6v%F zF9Av_NLmmS#qhZ@CBu|qbH^H@0}4O*4V5O+5Ae_}!!QDpD-2VFw285(0=q|6MQyNn zWo&LHGKSzUX_?Gi=d=z<$By5;6i)$11uuVZt`gESUvip@lXdC8^%`AG!lNu1d=*|aa?}1-cC4+ zitPy9^ZZ^I0`bSF2W}j|RG}RL7;n$<1X?H)bXf3WJMR^i+;EJB28AbieEINy4Kr@`(Hhqmh!A&&9 zX8bx#L`<>+`v_0OgF79T#9WatTnw@0?1n2-zBp@~fv6zku%>SlHioT&pvnwrw$ChS zZgo98sZAc<@Ll6hHx9wNo3EjksH?!YJwf_nDVIxw(^MlMA3;@Ch)4w-?c~Y;nkY{| zY!xYlycD=Awdxl+(N^C*paAfW;Y#Xvj7jaX7GDiC`y1%fUe9Jy2;(th7D;hXQ2&l+ z5^o}dR7x2(4(f^fEm|(OCOGLtc!@YMB3~!tjLz2cZ@p^l)ab0pW{WarC`Ud>8PLUM zL~FAzrqZ^Ew_5$IJfjF0O5f4117grWu`Zi9F)BdS##+9q;>s?U>sYihfQ49kdzXj~(AXrwU~&xP z-ol_qCoJ0|$>_#C{ar4(R@6_n%62~uL??`-{zg65`WkNQHQd%~xP=-jNu>z$uzn_+ z@{`$6h4BRtz-IVWzIzRb348(lcI<6D=X-C%h4sUOG|Z{_3fLR|_$1wBBMacYA{ zu~zcXt^w751cFz90`l~sD@T0V@C;Z3mrV4SIJx>zB4#{{6+);`tDzUGsOfGszw{DK zQIFZ(Dte+~K)4PdK@N83ixbDas1A3CTcghD(H2q>^h!l;u_18>quBqpbd zRO=HcNM;CCjn6uD<=4Vz>np%0>LZoQoQ6cnQmrJcq zgx5|`u(m9wv)W`K+<=Lh%$7?)-$M9tvoIb}V|+7;**8*{nD7%sW;+r{%~Y=;Q>BLQI@7FU>zYgh4vW&;zggr1&ZN2?#q_V^iz}= z!7-!$(Fr6`SL2?Nrxu5&4=@1RimC-sQ&r^)$VP2Qt-B^5F_Iw?0}(UPPqdayC6M8% zih>xA{X(!hPT@GEX!ss0kyJt3S4A{Td<+krSY4?equMEw8C`jbWCD|gk0{8+D%sZ` zSI7?YH=W7oAhi}YDzHwnDUOfdA_Gg5M$EZdL#0u(8P}6YV^Sb){5pLDkO=`B^~mCa z)Vt&q$QGP9;?`E1miL`J_zqWu{cNZrNdZBMoei@J>`4V8tz_V|YPk9`bj~qdbwY1^ z-2oMzSD*=;$!0aNW1SjVC%P%ykW8jZ1Az9S{M?dMm)K`}Qk&L7P%Al55x|7pXjY+SM54^0cCnNm&{$u;&CvcaXGuIZ`>OZ$3)^Osbl80?Pfc^^(6 zZz)^+cv^G@W6^xW7Z~q`QKjY;&_oDD2tucxxSzu%#F(8(En;AD7%A}r0X)~%IqRBJ z;I3yTdhDyi-DsM~!pxUroXKWNb7XoIzjWWi6y2Vo_}wusIEA%jHJi zinkfcV;ZgkBxfx34?%@i;hL*vxOucF1d=0-Np0O%GM>jZD{<(CmNkN1r|@L2Y9DAB zWBdGI$L^;j1xtdW*S^bvg1v}%s{)i!U2L8LS_x|oLRxJBANqogYZ8#i8Za3&aK2-E zQy^Y78iZj{J@&yy-;Wx(=6)J(aex-3qN4WCL}&aizKpJuEcg68+=9`6d}Qv+aO-c; zWP5k+yW+EcC)5|LEFcytznE9PF>$T+LYD0J*%4zMZJ@(2~|@<=&y6uH|k(eP@RUhOe2TD`0h36*VJVx=I3S(K~hEb2m*0-_&Z3x6vb`EM z-E1SPy{0<{hbJxVMi1r?0fA8{fH-$h>QI}Fl?3K(?#g9z`H=oz7L!X-H+=x=txI@hDlnu^^T_hnbq+vLB6dNCW6q z1(VFGF-KGrPDq6SHs?~pSH5(m@wyGn*YWbiHFWZNC0Fpp$zo+Bb*iciU(|9bV*OryJwX?)?W5N?7*~aUdihs#bRP}qNyz8E$ z>3NNm;e-0Ve^6<6{kDPaA$E=d>t*w6IOg}=!g^`%G}2VP#^Z5?h)pVlI8gm!3%{;v zu@a(J=g;GX(8z(oJH}9YsTRb2GSovG_z6+*LpKQ}>*6Q4u8l`;!{AWWDu9?NNRm&hJ5+GXt$yOyWC(JJ!!J%K&v{hqI%PcB244F?;Sjs43 zwM?~#cB{=gyQKMzX9igSKB$c@U7*uV_02k-r8ouQcd}`XV3IN&@F1&!DnK zpzYU`NmMTyE7yp&ttTOn&-$l#Suw6CWeKBtPi|uA2%(Ne`iWnJO*b2o@U~h9%zUO6 z6Ug=2B?Kh7WKXgzzC^lPCJFgFq%FciyR?{v3l{26-~k2w(@G_%^job2(&nL3S@X}s zx$S}ES|yP05&uk8V6o=m%W>_C(i6A{BfWPKd`s40=Q7Kaf1;##hUa69yKoSO=wm9f zRmiX7yo6Q4xp`yUR1JFM=(yKzM6e;L_KgS1t}W`{gxE9VCb^1|6iY#27AO1`So?}< z)F1tm2P^pfz6yRvs`+B%#^IaMw3Bykf*U_Erh#cn!z zFzq~C?5cCpxeQLsBlIzj=dV+_vb^PQ!&y7_Ux$-+f_;0lxq1Hlb`*yfqw~&fJI1Dh z4M@Fh=g-gEXCyC!Z|yVaJ${Goz}^5*di)%S#MkZ1=hyAyQPK|K2YUWGa4(;S$IIpQ z^VcLBg%6$A09h~KMdWUGcMdrNEG?v8KBpw)S5r}Pux?~yFmpirFg?R z060BwP8UqP=g+qAv;6s%0<5g5jHtQB>hQ}w6^==9+_VX>=&35f&|S=x48=HBYDAv@ z$si_32xXWNXwP!q-KPek!%TZi7GKCCVM6rgGLC1hmv7&YEQIqo7Vs=Nhy|s zPYcD^o~0QZw_PpyX7c?k%cpVPp^#%F=?6@1xdhambtAmNFk{DSr*h1Qri)lL_o%uB}{gudTCy z{bg<%z*ZKNcu!(OtReY{|I$eI)0g^=J;F_aP5~dc0SwJ(I8iG>a&Y%7QKp{=YYM=F z>X6BgYKdwm0%nu}mr~L&?|4?HAv=L zg{aEc$|v!QO>jLnUyW?Gs5B)m%~9Z)b#H0rafWZ7hbhbgzoyS2{T3GFHc*!EX$M}t z=LM#=U0Sdr=oDU%imllQhwmC$PxL&4VQf#`p5JoXSf?}pNBy`V0t11AT*kO&{IGHXC_QNQJv01fP~pwe)H}cD*vO>`nYjV zVK;EoJZsupGyweC4!Z;1RhOnH!?F=>G}bod8kdzTUy?Z0JENkQAopxVbwVl(dMrEl z?oi3j(nS;;H^@oVzKmyOv|M)L?ldl=Wad5Ztw+^xq7$Cw8vCai-AStJz`A+fDz4)j zzID-7#w)kZ*55>*+{Ju}d&d*PPZt^WxEH4^JYYKzLg#*hDM#r*DTL9Le5RHxVu_Uu zo;;2+F}AW)=q$2dSlG%I$qf$l_mN)KF{Og zl8m;>I)_%>8HJ`;P2#lE$XAy1F$E81S>6x#Z?vA6Fa{zWb}SEHQosus;cNKbUPt{x zn;Nl{wbU0x?P%*18Z*+U>|2|fnABjg7*g-jX=n`R-euSb|bgReS}-jD0$#jZwhq~f?zi6Bgl|)biaas z)lW(dpQUtV#9MNCsuK&sf2hOQ}Kh4^%BY(iO0nKTrvI{W)b zJ_O={o5aadc{8|nH$u?~=^UhC>_b-E5*eRoL!&iBA@J`8y8ihix?h{y6 zM}l(iYL`8K3g}S@Sh?sd(kZ^wajVJ{41}QBm=Q1J`?EZxVNfa5pyKy{wj7mjE^1>m zrrjs?YQ4yPqh@MWzb6c?bke9iM*gg9w%-q07Ry>%u_@Uw1+_rxm21s*t7f;t0+>n6 zHCDinx6Kvcfw0qxIzdH_=GyN<>`^ga^Sn0DLAFbSiivZ>H*MwY+Gfu84svCAU@+~R z*S0Rrs2!+M@I&s&-B^?CtGZ4q@`j_ao>wc-Cbnz#g7a{-+8AESU64>= zKwnoNL2erm-Zw&nBzag}1i{Ds>LO+iOLHSb%?+Xo*OpUC9N9W`k)pZ%;&U1;?3Mt0 zHmggJ2<;wi2~)(TV~lrpF?ZSFfX*ci=;LnN5B4v_{`Vn*lCki-Ws#zm+^Kt#J7V=hs~7N8VA*`Wzc;6*^4c zYz#yR`j>3MyfQU7{lbI-iD`vWfdyaX_^ECIHE1e{+; z;9p^`zRFaseC0XoF{g&@@SQBJ`{PpHG|}@*{WIG45@l*Se5hjElxTZG0{mKf)A)+& z)Ru0twUAz;3&q$79zm;M8){pOj7NB}&@!b&`=Cg^f)5JhTCa#^K2HTKsCfF67TpZs z$%A0oc0QO+1Y-ftn?92JNT}OXbq&`sr3|N2YpT&nx)KqJjrN)Y;66z&w2No;kysD; zMG?Xuvd=|NCWr&bXok|hgw#*9BX|G^$+-wCg5||}-|I-H?r0H~6%D|-#j){-o;_x$ z?MijSa+vec)CgAn79Fit+maDFkwB-|zc3v#vsdP~cdBHJ!IK@=Y0H$hgS)|{*1U*9S=m-h!n6PGTrX^RXG?{s5O;?!EVnt z0C}+6 z++Y+KIAUWvu;l@%{~!PNzpwqTyVc$LpFd{l1zN-Zi`wYHzrCFu`h|bh-(G)bPd!t5 zzrWYp`5&zx|3&?={w+`x(rWz=#2W6)_t5wMAN|+eN~5c|m`4+g-jkf)e)w>iWgkEE zKlCTr)fM2m1wW_f$;F2cDlLl6;=%rYe|s>AduNkg1Qnbg?)E3={b?KzqWD8HxyYmW zWw*G#_;(NT|Ngi3-~W#FzyJL2_j}uW|D(SPr@q(U-ra|M+x@+5IRCx>9TV{X=jZ>~ z=+o7#b--saM=~k4 zAm2jTfg6(mQx4Y=yY0tj#EPQrmeHv7Hz2O$kanIw+c-VKV3()gbmQqo99(k1m8iUI-L;Tm z_z`9)kEg@d%FdC^ZZBYRE16)1W-9-9jGE@yEH*#MlX+>j|M%!R;#9L6#NvQt@IN^f zG}z~&mR9Q-Ag+aeRmqbipTJV#2FjBwr#1N$I&k79xAc>T&c3ttV6j0%x$W+5V@cku zxQ*YF{E0e8 zv)JmPb90%L>Xl`hc(`{RshZu1MbI27*EHo@7x%6Mkk0>CT!yP8U9%46m#?}I|Be-y zCix3Cn0cU^pVu`U6l^QFjIQ@vZ#skSuHWf(cYoxxALaXFdn-DNP#=X1>pR=HT?U`M zUp{ZUP`7GZ#Z0|-n>6ndYZ{(yG5mb!Zuv&W|0SjqTq}pW2Sb&}>|aQQ%bQaR4l40_ z3W?uNZ&UH!>2H5K{6<4@*{V6QaC@Vp?7tT{GKB>YM&d}bEPjK}{82`c#gr0}lILH5 zlRVqvqTf7|_cE`owHHIyb!WvLaZsQ?aLjgE@Tar854#j5$9kksJ2V_bo6y!-AU@pv z6cg0g@J$bdGV88!f#?GldHyUCQ%B!Jr{&bT|EIHa{GT4c*({oT)Lq{{fD^O5y$5~e z$Gtu3cF%q^GTVB3#2(q(qdj16HoFVW9g`dHum}67&vozgTZg?tcU#rnIygM+?hg3t!G6om zOf6e8J*b|i!9C|`(0rZ-#(82;^hFdqh2Qy8)ZaZj-`+deo$O2}XS)-4jrO9Q-tKO^ zbFecxhyJl#HN=>!bLYWxTmeIsQ@ncstF*Io0Ed(x_wjLm=g@vMGT`Hbr+D{pz^7*i zLBYT46z_54)Q{cWuW*WC+CTg~$)gXIUOeg;530ww|L9XZ_@YyMu-)tK9pc`HW4n8_ zf7tKt;Q2h_7361Zu9!?{Lv#y=N+5c2N;gW|BzqthyrXl zq?TZlLrX0?Z~cV!d$lXCci)}YTXX64zUnF6+c_MZO%CGy>G@u~eQ)f??N@ugHFFK_5ZlhEB_+x7B zz0WwO`>^v5@dWGw;&-$U)3LoT-dg*+`(6FA11G01-u~bbrAF}*-$nFHK2t05%g#Z| z$klK%cWNhd=f0DKTyZfd^9rbe%8tC@Bd%pWcK&I*2yek8q?1_lsmOUx%c=(x$|Y0=gy!zK(rEW ztKI#hgI>QofR!8^4gkGu?f2pG1T1sVr#oy94$xr0OTIVwqnGDSuiM8{zKw`&>i`b@ z!2yGGye@Zkx(E1mu;1AbpW6rfd@gojb^dMV zb7!wF&*$#;!B;q+V#x@_y@}5rI;8{apl#R4)O*forRWzO(LFetxc7Gs05xQj^V?*4A~5DxGzjB>9J>kMaTcR))HbG1)zyWQSlYZnmUg8{z6S%$B0w0j4< z5q9?f;91@S6#Q_2UED*ku?H>pnX&>5d=HK=lGQs0z3w((;8x!HQQof}<^6k(@_zGC z-v830e07zS^`pFVzQ28VzB|~N01CXby&vzyJNtY4+i;o78C~`o}0zJA7 z;A5w|y(gN2y=7&tAI`(-;XJ(Oa2_@v&coW_q#DpXnoc1;eE3jP^nfoX@a2fokL(i~ z$J_g7hxY zxjgKNs|_~xmz@ThIWjN*P-WrYb1ECUuyb(ugI}?s0Knj8w`+x!*;O^@7_V_0K!~A7B z`3GG0o(2n$y1&nG0HM)7K#Bd9mA4KRY6S9q^zj<<__L^E3p5BAFxctEyW89Sy@P&y z1|5zj+x^4o{?6{f{sEB0@z;d`{R0xE;#gBbB9)s34j1wEFJden)MiI^~khp_`)=qDy+uN7;c?$@~?slJ%dBCvk z%=HtwS3Qw?_ngSR<`cR1sCyddCv{niEBe>?jPC+*GJAXRUavP84C0-^-dV4=eX!fx z?Hx|e`cpWfz36M7%pOkDUW*@a(P#nHgZebsd-xO{9EjU__e&3faXaH&@lrKwytW!Mi(f zvX4-1fFdP&0~m1FJv>xz1Aqtv@%BeS0JM65HShL-v=h(Viu|&(-7<335B_fT;P2jZ z@OPUJ{_f+iVpKkr0$m`656%X?>G{stw7(O_J7>Fbe>xo;_JCAA_{umq>Rjv}wD9L} zztu<3s2{|K{ev~<+vNT3Dxu85*SKS8Lh#Q+8+^ywrMuM)zH`q8uN3{F4c zJsceM0VNp_YSQZ-0(eB#9C*WxHfZ(tklRG^xBlRec{e~UZXdMZ62dy*GTh&3Ap%Qc zSGX|$=v~+cJo8YXN(1Nt;zB$8x^qBy6mq3^_73q*wlg;ziTh`I_nw*F{TegfV?oL&Y4I`BJyX7u0|+v^@|i;4cD zL_i-kU~moLx8DNHr@t?2ZoyybLJ!t@yJh8U;M(0k$p`mL^8QztTeH>70d-s5;m);?4BZS{PmoTv?n@5o{U{`?8pM>98yMa_#q8cINtIA5?+-!976!pc%*?Jdz7zb3`>42Gc8C zm`Q&-hRbQNH`w0kMdybHXWPB==|OxpjV61$hx=a{&x6xXQwH!#Jnk}rUU@V!^dEuo z?JJeIot>|M^NAV!JdTXniR~{%`x@5i@jMw#{|&wv=ld+)tPKSYssQBh(E#M&3lTn` zu@Nq8Gs3q^f=+sCZSU-M_xIG>wqVq5e+`6hr@K%0DI$F0nOl)xwzpeGt|q;q`!L4AUU$8*8y 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 e24S7*z$sZ*v%p-a7( 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

      pIcXd3^8{@?%73njRPm{yS-1kth?Tn#~AGM zd^c)WYn8zh+`!Z9qSDr^vJq5pPrUn8T<6=py|bYqkn*|-*>b1VnS?;RDFN`X$#eOm zgUNG;HE^Q*@a%2^?OD1}0sWhx>e!1vCYxI5eqOpdxp3Z};x#?}x{}amiPE=-@B!~H zi&-|kHer?w&L|Df_0^qtE3YorpN8&E_t4>W{sA%7zwDC%JM-+~zKo3;eV-(=plOt& z5G;b0S0^Ce4WL3f!v&ZyA@gJCn%^U$)qKmWFSDGfP+Qc@yd7>g>^9cXAPfySIu76Rn zHDcPmTt?H#J#x=JZmMp=V~$HHR5$lTl{B+G3fZEu;5Du+Y{kKQ$*Azh#AWc@L7K2G z@1ME%QH7t45fCAyY33bYym^-R9d`9g>`W!O9gGkbTB`pZJ?jq>Y^wiYcllCPN{AJk zCR1#t*DWo>68n_tBtR%7<`uYaPkCD}S6{4NRNoa-1Gy=pjIUT&lgk?l^%xFSIY`&N zHxn5TI@eedwID80z-SfUdsnC?-OstZb9Dxd3#YcyulNyQ;w>7Aoua-h#FJ7MXIXa? z($^ekRj6GPwL(;>H|`^Are`=?>-rpbDWq83(r-B6v7g@Vc#Beok7H-_s&k`D|EGfn zx_+L70a&qmI~*Jmt=266PF7uVskioNsr1KR6ziM+R5Dm5^(+-Xxgnf^u;Q?u#dFa8 zEq@G1TLqB?ZNBA>N063A3iJ)wr~~2-FM!2+`Sb31sKS4SimvEwmbBjm8eatD1qT%Y z{nCH|QNcb89Wu2b%m^$wdC@eeajR59^hlhmeHT<-(gaYU7v%xTl~>vyQ*^c1?;>_Z z%JlkfmvDhE!nqjDA7!PCcQ3@gDY~)qc)+wJ94=DgMv%@;VAF1o?H4&S1WWqQ5KaXc_U@eBTi!UU)>}+&#o}LKU-~UQ} zoEP4a?Z=w_#dcIW|H*?SdK+&Gj%H{$l>=NbuCbr%cO@Ko!q6cW_K{YfQza>R0g~8+ zW4qt*%9kj^Mb|G8KUBTeqatB^o(@4@MuAY+5dez}cni^OafB0A#X&|-`5@DsF0S$M;DB9`eS)3fk<2GZ=x?crSadKtT1kTA34)*^ zEuUNYc`1T@VleXOw<_Zn^B*|g;}uA|?nZ(?KBZcw$MS;dTkLcpV?1!@MtdH)KUnci z?=r3SzsbIA561+kklkPd9`9>Udtf~_0X~d3YyhW$6^oLa+#MEPki3|_i<}}4gMMG3 zUc-#>7Y6#<&|F>vr5p+439Vw`%kk?cUA=cw#H2ooOgit$^xZ0E)FJo0L#x+a9p@%-z z^`xPhmAuFU9$3F$NzLWAnGOG#SnkQws%D?GH1yhe+F<|2C>^IIeXBj%>L=_`=}v>U zmfh?e5bXR>Wu0JILyL}>lvajzXhMk;Ma;q| z9y;N8n~;S$)u@>r{g76+dxJ`4^MtZ#{3lN6(z6lMd^(UNbCPxoE`od)dI0yDv;6bT1WztR<+=aV_#ld$6#XE_lcdsba%Dup&N zxCV`CR4mJaM4}#hvcvd*>=~pf+olOpQcclc$K}?AQ(jdPn!9vn(s- zsHth<4&$FDb%{=iUb}2dqN)@_V#PYH^aMlpNlB#Mz3404aBH;UwqkC2L_2)<=;GVa*{UQ1ky;UT-E0z_o5R%T=M)0V@-lqF z)I&7izsxMkQ+XLoEV-0w%AfiN>C?9m)0e01ZRJEbPbw2kb~;)2qvzb;^qM}76UiSA zr>uOoP4pH*>pV#QXIQV9F2G_B+?G+wUw-VY z{h-tCd-R?XJ#5}Unr^ikD(a@LENOgprTL6Y?%Wxb1< zSx2?@;4^u;5blZ9te=Y@(7$XZ2+S>Ze zSZu#i%jdHC$2RW|I#u@$qcJmLiR52xT?*q=mi*=_4lGLBIXrq-T-@(_z#k`7T#(f= zYl*|p>&cSV5$@XMPrT+&Hk3PzgN5LCK`zI%Y=c=eEGrbzz#7hVkL@7+Ikdd0_rh>z zO)%86ZbKJufcsZ`cE}HUf=TOtz{+b9g;Dehhzy+>RDPErA>u;?yV6 zbF{L1ad2@^Zz27mv13DZaNGmr^pMNy+-N8GQ0Du zhYcAkLq$t1`1YX}tn9ls|c1ny)v~2V!?DTg<$ET7kHc_4{>HssDTiBYP-pE(IBa%|JeK!8m}RC<9$m?`|1>ju8JR^$r6|!A=TgpF zK_eyB4R*&5=SY7maYy#3|7QJ2F!~-CaE{JzKx_X#7pCU22AkcbxluI#_%(?`jaF8!Vr#apLCkK#*nvy)X; z8(uMN#%+*qf#=;ElaR3%GyCI~yAAN&*`237`)&y9f-nIYSsRO5tli7YWx265k#m25 z6N!4M-L@7{EwNaQn$zSzWZK41?w5>I@g53_0S#4X^Rh2(FX`OtNBtf1&uBqyi+`0R zknv3sg-!?M=!;7)%znJKayx$py)9>8OlLWVtC4DW{wsozsMFp0DtIn`PUjE#z)_MC z-ioet0wndrpZuKSF$gy^p z)h(*ndo)XMd>km4?OY2fC|A8<;yK;)_@oe61=&S;wre)v*EY2&Y65mQ0%)XL85s24 zejo~WiQ=krI{KxHj`7Z2S!afC^PK$^5v{32dXT37?frUXD~Xh*aq|$UB7DjW;re4N zS}j$rQytyLsPzSebNUZ6b>>X>q3W>opjf3Tpta(-CcJ)8?7|Lz(=OKCm5+P!m*4#B z@ZxJ1=NnmnPZM6IbWMEmb}FCeg$aGj?#^ZZp=v@mlXHpmIQsBjxuHhGAVfyyjaO|7 zfsvUIwAo2>{$O`Md_%q|Z19VZ@a6YHP851Hqp4?82L18wO6L{Ma`n&hC!{)qmN&U< zn#t9L?P-Py6_Dt2uLmMW;S8<=s=2kzQv73cz3Dws#E|;4w9ExLg)WOpP_w(s5kOB726X{225grB zeC>}b*MW|nf^ENK`f3jr)e;c6#hiE)V@-8*VyYTL3<&JVu*4$1`BAGV>m1e;Oe%6K z={9Y;6AK8obzO^_~5e`zudBF#^Rtlh4i`#P>f5FOSVye%~Pjjr{05%!ci=YT#? zm}~6My7aK}_K4fz-cWR*d-12*((B$#;(5Fm2JJ0m$Aa%C8pSVv zkE<#12^2X>-^MmV!`#SK&3DSGzvHMRX~}2*T1w=Em0h{bw}_Nt1#g`$bmLES{i9`BugGFxSbw7IG#_O z|Nc>Bnw}?nsuzewm&J`)h@5wd!FO=`5`I-{lf|vQl$|0=qlPFBpFzWv9|KlW{=47Jy=WzDJ3tjMryw|RFo#9F!cme-k|l~ zan&W?tdXV4KgGS}*EJH$qzYV3`V3wcR*B(OyIu!d&RT0WTi#P-^`leZZlTYom97rM zOAU(CFuaqw`@azgQ>1jGn-FC-Q>7f1N<`!P+-eu4LPz+<@`I2ZJ6g1lo{wCL=PE&! z&#N^HhA~YycEW}eCX-uZgBn)h)OD`5MXgUTEzbq_M7Wi@WJ&wghH+i#%E3AWBi%4B^gO3$lW30)pf5^eNW(o(|osk}QxDq+;zy`=Sc zAQX8VPeliDWhqd(8sJw(D;`co`v7oRp9G zt$F%ug&AOlUF2&|5f@OBhn*ft0p9~Tuw-Nkr5*ZyDY+~_wmU=Pa4ID6ObL$)zRCTTGRR4IOcP~6X(?tn7^Oei7*lE9sdV;Hq1rI8iuKsDZ*HfsX{-u%PpV`;< z`*#2OxU7bSLV6cr^M6V;E0`rm6;n=U?60o03DnN#G&J7}yGW0>mFmZae>f;LHC5J5 zQETtu(_;;5hzkDBF1Q&KhQ{D zpzk`;_DEZoawOGV5FS!sN#=i@iY16Lyc)EPzkSx`l@6CvBFraOoZ5g^W-wVr88%6p zjO(rx|8gcCR<0eFN*n>S)iidMMHrbdP+SM>x*Q4!# z!Eevsx?FaQCA8x&%pYBwUW`^pl<9ru5j{2qPEoink~$W#{k1CjisR3>OOZEFC#^7s z!&;x8<$jk3HCCTa-tyHf&2zLrP6_c=5jt>f=t}k69>5}Ee&X>ksx(@|dJEV*nxIY4%*+%sGjn2QW@d(%*@>Ak zW{jC3c5KJY%*@QpjPIPkfA@BE(n+JzNIf$x^>lYVRbBPe^Nd*yTT?LZrn(+pco=L| zQ+$Oh&OsGKS;>#8y43YcRGq;17|XqTO@krvkT&HsX0L}*p69WFE*yW(upI&3>+mb% zmTpP{l7^R7LY_6q_;`Yp)$s0H!t?eOr;8K&dAFzIVWR+pR|T#tolIs2+hqAU&@N2R#eJ!K{Uo{Gn&vAC^0vy7F+Kv=R|$J25fTJ@8Rz4i+uI1zR_ zIPFG2s+|W*HTN(hA+p`|A4pl_Qrg!)OR8|mHTT}a)$Q&)o)cZ9#GCSQ|IFDiAdAvf zE=%ih(3tTE?rqj?ai%+}^6vi8sRy1IgoLnb!=P(5M8w(68G^S44N@y`i`)h=tr@I}^V ze$to&PsA4oyfH%V)Q4|Rk7h3$rhg2)jr)0mjx1=2G^`rf>mI5FVVUeb+61D$KKk#u zUvQRr%mk0utsT={k6Gkt%nihr^g(JsBMV?%dR#wzvGjx0bY4%|Tlt~l(uYxuuEtM4 z=q?xkby{v=#l}d=W1WGpt(oiEkEtn6*@>>nRQA#i2Ow|H_C)fzgv!`HcF0 zOb_zZ6G0|!R!T=fx#<(;H_^HMiOr)v`hy_N6g^=Z0iT zlzFWI`&7Xd(|FMim2j)>4w(ze8CPjZMCw@OXyHl*FPNtS&NAOpf{sxPYaTMUhe>PYt6hGkdqN>ouS%6B_1VYoZfpKt#X(x_yqTT%*0#Klv0-`X4s1CHyLIw zk>Q>Fv6GW*Nts<(3RiG&8mkMQjY580kalFPKI6&dNl6??I_n^pReYPz^9b7f&HwV0 z#PL$@kgB?LMc%K#vt@ONN+@HT(WU=Yrv=Nx6XlS@>XJD5SNtLv0f#rkaJ?F8Rp_qT z#m*85FVaqv;rqBlcVOs=P0cE6S@-*+F5jTuN`a4ubT&`xXu3ltw^Z6VKa`jqrGX~h z@7#L9HqOM0c~wl6@2A$?Mq?y?v3_3a9fr(?DKeGxjEud-Av|r54!SAROs_P%+n}B^ zEi>)c;&DeemzNBfx~>##U96ll-eM*;>qWcH`GriQ%zvHpE6;BX7F;R>?Bap1m)8gkyL^87sg9R2{irC^`hC;)fYwUPYhGG9 zYh(FmbMkNDs~wL{fPv1PFZ-Op%_ffM2z=1j!WtId=B=J#QjIIDu+HqMXEzAli;v)H zUX$;}ArZBJ`@2C;m=^!T9>VIEwJ_8meV3t%D7vhUi$(LJO}lSPel43LrKpIDTa6{5 zFU#YIAJMRuTUELE*Ca3bAac&H@=P0dGOXB&c>qo6g1NSX03ph0G(0i4RuJ;tboRJY zxG!u|hx5Om8et^ghrswdH2nO!&_~oEv>21@Qb$Ohs-UOQrP?QDr`2Qi3D>SM)|8a0 zjjGe~wL2o-wi>*m%ky(vmJ{xIk>1C?ew$lT2$Wd}cbsBBddfuXxVl5EdB|CCSgl_2 z6|+J#o9;Spf?r%wx3YV9(@4$zV^9*7MSp`f`}9DTDckqdvcamz)hyzX|Z00bmNZW(a@%REV~`?-3ct(a?< z-FpfBr_}kYKcN&m>LvK#<|v1II-%c>oHESEbrDZgLA)#T2Qyc<_I8pILHlPez4nfe zmapy~&m73NEo%ez_hU8rA0)3*&bk#4KFs&i0WrM<&B6O-M|s4fLk!h#B(s&x;68UB zQw_d=8UMb2R~-8~;4ydU&w#t@^tASWu7y-t(3#!Qliyt>Q`Uk15r_s0^{Go=4u2m| zNCG^_P-gvqfr9TziU5tY?vI)Q_bos+@$#eQ+WHr;q}=-?lrtWhy_!WbQFFN{)wi?i z`B$-&X7BF=r~vr!a(h;K7=Ih2t>~42rADokN z&8cO7Avp|0VleU$pS9>OF7PUpZ+#6I$idh6*H6>flHYC_qq`G^d7=n zQzFo*fCV2pOR8tiOn;yL;pf7x6B{|*Rhyx`YG*Z3JpH&4e5>#ius@S{B43r=#VM$K=!!RD@FS3RI7SH=(mMSk%!p_UA}nh83x*ybNQGBs>=29@}PHul?~Pbrv?@_t&UJMp&QKg(rAzb2?eVEhnLXtUJSxOA>KG6 zy+oLKuWP21cS2c&RI(A?M~eQR^IxX=rhjs|VCRG%PzzeX7ABC+mot5r%Z7R$G|Xen zkB8<4-nFF+duyPB|5;^Z{?zLT=E-_}uxBUEt)`x%$oc8@ zt`Hif^{viZ5ZxFe7Pd~w0X?%zHHLEHp^B_ZHau~{A1|(dX(>WK@XA^bd2PR82Lu*& z*AhHgV~!HN_!Iz-^3crOw@pTW77{_QO=}x1XTbhv$Bhv+& z%(!gz`lEVBSnMU8svBTib;X+=e9mpI1_scH@4M{i#NMYAq5&JmeljF$I7outfH2lP z28NXPnkUzx{k<{3>l)Bk`d_<5Y$)$AAOb?Y_5THEY3jap-J6{QyOj8oz>gw~M_?4S zo1w%-zW?oIw>oojt1X>w56;7pME&ZttbDT4VSRqvrd@_=8yI`~iQrTZ+KK}r-~&+4 z0D{pxV2kr(%P1oFRj3U3AEBiMaqEA@7r;yjzM?!y!e~jOC1=C#brA>nXorWRCFjPwd9%mIXm&a7ZCkjDRs z?NQkd;L1np4B+Vo(x^Yb7RNpeWKjbjp}Y}*$UEw;KN_H=MgQV>$h1s!19A;;Oa@d| z`G7AwA|NBF|1}m5qC`ai=?CnIkTg)qSpDqpy6?61-F_X2=KsucM}7qUC0~QKR?Ov7 zMqG9+{24HF=e<`e%;|q-Y_-$N|4Ds(+Hnm3*>lFQ@G1oT&Bl}HadVLRgJez-#3LT| zzO|&4XlO;qctcE%y7JIFH>dKVip5pRGLu;U~C0cbdivsQ63Nl%xi`tbn@84}XPU z_CN~ydF~A6i+UdwVNLC@nFrkvy6_6 zXlRs(xi3O?t2Rn7$3I;&4EK?nF2bK0Ki#SNAc1ps?gchJ^<2+rJuJZ{)32E|L*(%Rwl zgT1~kjc{H9dpw6AN5NxYNe$)$C^`90lV$>WFR1?sBX^r&{~uhqV2-nZ^Xeu*@Qkj>!s;4H|Uz8>UPw)NJiU8V9~x}>p8 zqQ}p{9h8wG6|)~m5an~4qW7c^{T`!5CDeK$4x``1k@GEg#8kSgf}JY>^GMpkJ3z<5 z-?0h8JT@yg58()EOJ9Yt)elZ_jJ$C6o$f-2@luqQO+lLuWnH94m&Jk~Ql(^9g4+Fp z75}jVIwd#z_*AR!5^pTqSA!L?YUN&Nv-ap0pd!&F~cO6_I!9h+#we=C^9Pw5-0U#XETMV_L#4!gv#A zUWmO}f0^3~%y+ImBYL?$AjuyKK&5W}0>~VH5+6S#*8*1TYIpQR zbI*Q;Kkg2iaH9vuQ?{WemE!_2siF{q)UeP~(TFWLFYp@jt;a`@B;l!PHHHSc>%ZH` zkMg{>__e~fz1|<;Wm!$!`Q@_btHVf3hV}}|x@MNLMY}LsC`Kn^froZgZSRPwnY>uR zy@hJ3;k;UEkv!d=ypFHR_eW7eFE`^Ws7rE$iWA)>Gl5FUaYS>!LZM+uAISI4#yR!FmDoT${vw6nQ@^cRQ_4}>-sx-YB(x*=FiaK(O=UR& zMj>Huz@K8I$F10Upgoj#IUpGMe}tENaU$?I^t^xV=Fxt{%{>4lmbn6+M5s^x`f@Lx zTR-m>Nc?VK^vUSJNOCxJxsxj7$sA^}-B1NBpJ{&!hhf}qa` zr;i0AU<^dnuVX8~D~tb;(EC0r2&4qs+xmcw2X6g^ z040J-+^H__$K0;xiLMXpjay$eh$H_6g=t{q7x1L}f7L5U=rcU~Kk=zvL0z9i;u#Y5 zy!AOV-n(pW|I@$kB>Mm<0Q=(q--a8VMGBmt0nSVozW^RB5bpnN4gG9AQ26!V=kNZv zZch9EwmSBIkhl#4zW@8(&yhs>e>L~)DB!Mk3lv)O0y-H9g^@NwFa^4uT!SkQ%k=LY<)-fT{G zeF$AYBy-%nXxHF|y))Tnc#}K!W#zr`djol_PpqLir5uz8v7Bd{Pv|J`-}GnCKaP_9!fD%tk&cbc zM5P3fcjfAuwBSs%M$kDb`p&QGV3^EsCn(QQH(CCo79_Qu;shy!{Kbqtr`w46nZiS&fl_O+7iK|kU@Ad_9GpfX6yRN zt$E8eu1uU9QoNtfp7J4}jp9)W_d~ zC!=meb0*VjwsUE8Q8^;N$5QP5A7t`tnidSukJH0wB%Y4-vZJ5EkzW%>zIO)uiTW5- zW_|y%s1Da++CBbIW3@UNoI7NN2`(fP9%Y5%aqo)E_bS_Wkral28$9wz$;;461b6h) zHePnVcnEO1*LYY-LHfnA*F>t|XG~M7_Lb=BD7wj(-yfB-p9v#JFK>oL_Sa8xeN*Ls zUC@h_EuH&mjnnVMIhXMDT2r}#Z?7->@*zFq4b-6_VUY>MIG5nUU#+`|a+2$cP))Oc zM{qH#d~AvS@FZvd>jSckpLux0vK)(6k*Q%VU}97m4ntW6M&P3**ajU}5XO z{hR0ZhLlT||0b5Wgm(hlMxJbfL<^rX+^$Slf_DNHC{ch{qVC}sr5!$fVv5r1%9rsa zo zw?Xf25ju~*L>o`BYhsam5rsqN1ksEwGw4D`Ss1lXADz-^CsyK38tx~gd$nR}X=$Qf zc#!k?m}Uj-E#*MLFUlxYyhF+))_IxUMD_2HsrcH$g8V9nmNH^kQe1AZU8bcHCQJ zSf$VO3`!WDyaclCv$ z5od*Bd-DP%wmC+PYSNm8Y8qEMoniLWVx1-HUOcR-`ZH|!- zce2LI75AH|_&PMnPPwwtZ^=zSDW+$+`+M_)Q=hR@KUB1uy193zl={JI zqf#$)VtJ9a2azW#$ztKnr|(AZ7kfvpFu`+Q(ik-Ak5OYMJf*szIm##sRa#MRNoXaG zWD`k#!!Q0zHR%1@Ciaax3Z(OT-VS^2_hKJ##QKLA=JL^;Qt&||apXD9@^EHQSpU>% zQ;%?uH&TQwn%5%pWSI_qx_s;Ob4H4hVPVMVp_}3c_uyEEDVTBpD9 zai>!6hgSriakW|A1&r_@upv8o2N`Vekn^|t^qw40_4d%MqOfRZHlND65zaQSb1*O% ziqumLt?kxT)ls6qK;uFe8?E48-V{qxBULn z|1_l=mmR-YI@}?CB~ERRN{qSHz7BGEPNHIz^x3107Kza>xH6EBh8~r>k40L=eU!;g z3bI?N!oatHmM5o1OW~w~7>|vH*3dpzIy5byw*20f#gYR5JCJXejVngBmEH>xxfaId zj%q;f0%bdS&^wb7k1WGXXWv-_+frM+yVv;A9sa9Bb3qrvTfRV%A`QnEy0RP?)SQwY#e;b;=zcGQPZRO+%g z${D&@;5ap^k$ow(o1*_VP1>lU@1Ty@WO_*Z5R&79XkkXH&5@w==07>J)*a|%c>nWc zEF^}JtoHqNyYWaZ!RQA|UrJLhD+|c6q@AO7Dl|{8HWk&kLGjNppBQQ87qF*0S_`<&J^H_g@}5H=w+Z(#PuC*4{fC@x zVt)Z*p!oj*RxP(A|Kl+EAAE$J`UypUY^jhE9tg><-Q?1J*%kWq80`s-e-_)kbKX_L zSFEFDfWx3?hKehWL8SkSMkysjU=e8THz)k_m-pnB=GtX(-_mxzkz3*~Jj=Gkv6P$R z6QjX{!^dUMem_*lshhSW&P7i7zoJ6bc@KD_d7};t%j~GBA{Z)KBjK49 zPz&U{fBnUhLO4!mQ8HfmibHKLr{)tEul#B(Q_aLJHi>QT7<7r zA;Kck{Kl}1ZmMR%l%ZU@?y7?4tw4@VgBAZKdjvuzN?Z0$kc@LD;`)5I@Lq)n+xEq= zajw3S7rgG}9rpVefQNjOyQB*929&G-2ckswK+hw|f1+!3mKO-TNg)E$VFBPFAnk{N zmju~m(2|OzWT=D%x7df)8mcng9F_2wZ)S!IvTfy+==sd%DRf~KJb4I84`e^hPI*2Z z3=PIq)1C7#yu0FbwQ8#Jrh~ikmUVgfm+*!I+blv>IYo3`Y79Hkuf$6=ghYB z%de^zG~vh#OJfGT4Hw;ZqvE#wlRr+X9-{748 z-hT$`oMbo=mGpI|DC3esj&L6Gf$K0pgOuu)rQ zn`Y9Mpq0^~D@x6m8Pb1%EtuqOkHg5bLb)*D=0Zz{#0rE0ZPDlGie5rw)YBCXO*4NBJ#$ zE#i)2hbX2gt#nP(Xd!R-w#>_Y^(0|Q#)^bJBK%;*cm!c4%S-PvLWP|mz~RYdz6ws& zoHp4JSE}6dNme0z6wg;mmoLF=8cK^~ADDE13io?_^Y4jxF5;VWdD2?qw;(xTN_rl=Ox>&r2^d%}2}KyLWE9jA zvgM3Xf|m%B(Mk5G2%0B2`Vt}B5&wi?ikyWXXG2autdemOsnO#@iumN9kUTOiBTVtO zD=E~i=tyNqQm#Gx&1A}DO)ez!$XHA2+51&eU7+tW5^1qYTy-$4TnX1*xG|ZzJfbC$ zjSa72MacT`v0HY7%rZ-PQ!|t~7b|#w5k{@7{FXM`^n$mPu10IodK}nnm*-7XNlbvU zC+k|s@9oHVVaGJZIqlf#!+ zHbm=(zhs~LCu@lN65097ivLSn|2g_8S$+s2mEBfY45wlpQmWeET@VhVXh;&Hf=-TQ zi?G0|w*h;MyZMrAh_5tQ`gZv#)3la%U~P!ul#3{xm7vlruLhDudho)kg|9$?Ket^x zBO?UWZL|@V7HYuUDed{-$?1m8W6X-PprQ>cc$f~ z{cPe&*ul?;DS9HL-I<-TOQbD~+vp_<8wC28duNDRm^A8FH6pU+ePj>0+u#JyvLs_D z|0+ZGV9>xxU>xvICCO4Uz^%pOp8ub22P}{aeh>r&ogbzh4?`Mf)WeLH>_9(9&_cttk{S2}nKL&D~_? zKR(aZ9hK(pazh~%O9f8sDFcfl%Fb_R@7f3(n(D_de}C(DHjzhHOQ6$dQ;~-N&sL^u zOH?LPto=fIK%cf3Vw_m83&k48hDM_~iqg}MO*@;LvGH;-ak+6>o9=LO>EY|sY6NW7 z7${@YX@fBr9y>;~l#0K150n{H|vgF1fAq1ImkmvllzZqcyJ~#)3u_e@aOh9<5 z>0{R{;VxhRX1WSWv-Zh?}=tJO|V+pW0Mn#(cdG>gH4 zD90djWqEx1c2l{;et|G*xWw||MDr-LVZ{=LDb@gQ8mJb9Cj`EcAvAIJL@ol<{; z?Q`*CXr_R+n~SKUH`6Ht(G8>nvTNvkmD|uJB!@4GW+{r| zgaO~bkI@WpUMgtz)IQcGWBw>GH?bY61~shntjz$~uF0N^_K!npe2~z7(1(9nds)$k ze?$xjHz6t-xRr#}(E)GZ;p9}9`@^?K^q6AOg7P|V|3dUl={{}PFT4Hum8!-a{^RSU z#72_RrAXa8uT_g>G@{Z??X&c)jy67yW>{#7iHU{w|L<)&On9-h?V0~D41BgCYI7{n z2P#X1%p0nTdOE1|S8_GLMmmc4_uEcFV`26+t1(q_)K-jI%yE{%E<-|Efl4mkB^`b7 zW0&?j2v&3yC>(wl!cMAt@;~b3TzTh+B%Cp?Zs6D(a(!ndF742aP#gMx8qj-WoY)Tsg7#MWVeHrz|G zpjEa4JUwHTr@qF=_$u7;u}Y-8B5@Bw3PWC}4tWIK+BCylGtjz2z^I{E$&9_|iUAT)sIng)M*N^cT8>vEanpPM z`D1@83ii{fGND3H%quE~#W0{d^D0F56I2S(ee91;rw1G@eu>xKU2N|LSvgFdZ=T+7 zGCW<5{WEm0TquLCywolM=QMkl$GE4lh)n=qN>~gN%Ll`{zu&Fexzh4 zp#zcx0VVV7Iw=LdWeXv}55ZQXrvbYMLqX{kN=rb%dZB&C(ryOOWct}rJfBi;1cs*2`yy9~l=dfC z+j(9VZ33ncC7n(cxwH>YIeF6osJEV`2#HOt`&b}PuI5Iy2ua6GIA14o!J{GHP&A-j z14Vt)oNn)ZiTU{*m+T`MfKAx|n5ixH{3+MFQ{_Zsq5pV9blHj`uTBjo2~I71eGcwU zfb;IzSC|PPs12ynqkpy6tw4sh##0`>!BZ*kZ&z#hi*?fiMLUk{IH4ScCh#Ss+l4hd zjtLB0I*!REs_dj7amVPdC#?W;VF=o1-s0K=RFgxdax&J+wnEYolLjXA$acPi7^Zeb z(oTOJNwYxQxXhsNVlZ=MBMfOkSQVHQ+xIy(dxNF#3)ALwV@Vb${V~sOa`>QJ*h_HA zG(c8}|LelfwPyVExtpKATg^}U^Ajfg2LH=J>H*U~84#AS3)%`3ewVAf17OlY zHNX0gfwCFEn1X$GDnf_?6!VPAXL0Or((`Jh@+;|a3xlQh%_y|U{=>1)^Ng|}`6?V& z*am0h_z9+L_jT2n!uF_gN^2S~tph z#Kelc6=i5Kbh4>R{D{s{TIKV3Yp?PNz#VEKu<0*50PCe8{TqN(F?}~ew^>_sA%_ma zYuXTqDo#eu@|Z(<|BWCag|nV&K&>89>EwPDfl8>3z@F#rwfU5Ksu`M!Q1^AK?xQZ= ze6-jybdLsW#Sn?)3lk46Y2r3L@9EzSQKf^yneCx!%p)qDnb#>lu#5DV7 zZKC$b%!>vHQpmrUOHsijsj-<>#3k;GYkp%~Ce=uGmp?jsnOajd5QPnDH(o+D2slqRFwPWeJKQINAgR0dVjMq0mfYI(y#+lB zSmsu)`C_`Q(0|UCc^7&SyfLl{+K#DNjaU2)PA?JPi9GZU_Gb|Urn!XbL~Z7*oocij zm~b5oucvEg&Xqw@roLl)+jU2}>&{bp;vGlr{707?@lPF~ zIX5yxohAkL8T=JG%(XJhNyTO&x|jUEdbkZA@0mX=&T07?20ed`#twtl{9vntArT#t z+8PcG2fYW~@i6mhs-X!357r)Vj`;QosS2&T-<<**!dJ>ydf1y$(7*IUra*pi4ds|| zTq{K#K}tiv)VCib2@xZwzcJ8#q##6dFA36V=UP%xr;3 z{_oz94u?Z6+d{o7ddG2j_59(QYOJMR(OSIKGouoJcgkkV4?^~>!^adO_SV5x3I@@` zl~KWj87z73QDIs8m%g_pu|d=xFMRDa?PrzBI8H7^#ITzfOa1QiSu@<&J^k{BuZWbg z-BKo|SCC$LOU%t~GBzwDxN)d;%+Q|qFY>?g4Fkxg+Vmm&R0Qc%nQAVG2DhhP-`T^8*OIoQOTQGUSS+uyU@Z zKxc-}m=KN#0U1XhkFL(ym*oqdn;r6{4j3jC@Goh#7C)dc7SRWAu(sg8JeRO}OBV6a zVuwqLPZ#-w;~O%An-!$?%g@!l#WN8YGOZ?1^qh*UXtE~n?8^iR7FJenTWc+|!#74c z?EZXHs7cs8Adg@IN7sUqHZOwEACz#Rr6#=U{=y)}ZaU1oz`jb-7_S$joVpCxeKzT$e}Fd{e>T^)TbU`dwm9FbZh{XLo;GLqx<`d5OxVWehWU>fS7ZnY6OUZ@4LE^q$p#PV6Jh(#$@RE-&r03UWg@x4C)$ zFq)LD2d)a2HTLtr3A1Gx6wV5#fET4!}gE z>?}xbSHc6NCvEy@B*uM2(5SH(^(gV;L4|)Kgb)wJ{{Bg`=U*ug7)hUA0`bHX|GsFU zQT&3W&CQus82YO9YawZ`5K>4+>(@1#O1ZfYWTbaa-Xz`bH*xC$-Y%M9j5vt3UlI(* zFgojc(nxg_jp#nFh=Hwx+$Dt$JayZVK5vM^HeIR668%|2t0>YO=Up(D(5y=!0SZv= z=%qh)BHjlH*W1;xq`BnwI9xV(|C;YhbF2ut+Q6et<-X;dG`mtBx#-q^fT zh(=t9`jW+a0!yqB>l{w%Y<0R}GEW0E(%T=wNPoZaMo_X4N)JI~I)ICDXlV48JPOXc zZE&My)YaNp6G*QL!;X)S-hp3?P-=17Lqd!!Ld!u{ltGrshUMSFIOX;9H7r~sP`7|f zJATt!Kmz$n2IR2}pnEX-{qjRH}E>9>ALtXn-5pQ6PFz{2jE^kB+ZucEz28j^xy0M+_!8ApjzZ?X0Cm8eSO;WejP;I{P#4^HI*uR);M{Q z&R_d-gPH4n9=ulL_jJxc!~D(pY(R+axAzgC|JZ-z|4}lL+k8E2Q!*T%XhN_dWLe<&y4DPRm(2 zCX4-ZFD`I!{(wq12)fe0f9CM~ZY}>)QZ?nl^{DH*@1XQb=;%%AY7MmVv{_vR%%=eV z_7>!7T0L#|#!r&Yj{MF_uU77^4g8UMH221Yyf3HSv#dOG9>$|-CcURvK1SnPl7xPB zKA>*3z3wn@UxG%Fw<s7I~w^to?dTco-y(QilZNDv{)Q}3ygdr7Vb&(#my@J8 zT9>11Q8Z%wkFt*zhF4xnpz`4YB$zr>HN-sX^^ee_u{0$iY+sX^`d{gDAEEJhfK+Yo z`gqP4|GJM=rFJsAl;WOJ@pmB`@m-+q4hX_X0wfhch&<#;AL-{q=0enO$UL7A8uk*( zMdQ`z5cst2{s&`!E>=OXJ#akKZm)pPwfaWFig2Gh0t`?}0#dOcDIW4dAO^(oI&}|-X|K+EINaEI~khjR%k+M`%FNRYb4SVvm`ip+u zkY&4f6LF7N04aIq8U=AdsIR!#^3R{xX!F5BhYPV|`}26_qbNVa^OCK5uyu!L-NW|piaKJ~XrJgw7N_3=r8t*>nsWdA2TRHTKu68?u~l{g ze4214U>PXC{u55=bP@n;^*h5sE`Uht4x*tS2RzBjD?uz3?^&(34*c|F7O(nI#~;^A zj{*io-4UWU)%}j~x}tAgDz17k_u<>mWYXSmMyg3SLePP~0o)|^ccJzUbzLK$p|$DK z4gZJXHrZnLvs#|8!ZXFMu2Zn3JKjz2&jS-QTQ9jh2KU`f#j%93u$|7ge_1wYbM!$6 z@t_GvnopLwhP%Zsx1mz2KkX+6S-^F@zu)2W*&tP^!;hP=nvKSbN}<=u!t3cI|JQdp z!1w1tB?)jV=IOV8#3EREzvX(Az3~Lx3UzAx9#68gzxRG`+I+iOSZo~Xx_z74c>pV@6v%JwdfAv;Al5z8M}H8hPk~gD|oJ(1XeT01zu8i0eO$gj?@jC5qLXys-w%6z%dZv(xY(Q- zVe<hCLn!n59^Z7&ZE_H`l%j2`y}m-#fn_xVNa|OvbSiP zWJdW1(~!B-6Hl(bS%QGrJtpi;Y&x~rIZ~`^6b=T(TK5QYq=W!RFxFRa45cKCpjh|bn0yOq9F0M@{J6qFcEXatAepgN;VjL04W8d!%(O&a_RdJv#!ivTUA@Ef z7lD+yK3~La9?YJ>CtW^lAscZt5$mBu(??1TO>pkHy7jAD-G4MUd5mWCTerEGvTCX!AFW*De5CII z+A9GyIry103{!F02opLoT~%@~2iS)KhbmaZ7esyUIYWDBnQZ$lY*wZ0Ekgq#K6-B- z(fT2q_3V!QUh*1ztdxHDLHFT}p9OJs1~%`e&W58v2`k8%^KDrJ~6DGkFGZHc`7AuKu9Dg|zQ}&qd?e{iOtFn`j4z z{U~*gxl54To~mV?0@52$6F0)~wprUZd%|%hNwA`TaJPIC&_D2NjW#Q>boIJdWZNkI zz4C5?lVM4$tD_@e`KQ!20F$IUl2vFQuu*mS)8Z*n;JTMSRyQxeP`uPQ&uC$3Ar%Z+ ztVHW#3tpU%INDggVNeuT$65w~jTx=6j->Du0?HheCSTU*AOF$0RlnpxaUSQ4ePs>W z#VX8yI%X^cSD-_oPPzZP=|m)hkHAVek{;b^>}_9R3;8Ja)UoFQ)rp`jA!CeHkO}jP zTgBDiN@)Hk)f-$g1zd6;TyiD(ud{~a!4vrdoeBj6jK8zS=iuU=9UQB z=w!`53Ky63Lg0b3cLU780Gzty65RaV2Y*|BAPD99>}Nk^y}=_oEp^s~3l4;c)1dsc zm(IV0%yAp!F#dST2O8ufeE>(C@IHMq0Xb>W~V`gT@iGWMEk*Bh}%xR59T03sa zIjRly$D~fAaQg2&ctA4_ie^vrQXqC3UpCFKKKUG5w z1BGYyX#@38{(gb?R-yL1a*QW4^4P9?9ZsVdzWU0K_(Je)DLqf_B{ntSM?j}5TRf+= z6vW06^JBM&;ZTK3?OE|^?IS&Re*)`J+b}D#tCL1ZSVv@n;|{&`;704)_0rGhGxX;( zljk#yo!p|(+Elp&Y{m&~2uHe(L;T^u0yLQ$`0bi$D5_C%iRLYpwl>?Sz*Vqm!Mwm# zhEWQu<~d2kBEjiRZ2RF? zoTjtWf-p8iovo$=pd1o7NeW#x!!3nLJepS*{_ube-Q>(sd@a>F=A#g?fMaE~Gz)>K z2j9<#%7~2NG+*<@NB4vtJxRY24q8vR4(FQ=(l^JKmK2$KEpCmoxCYPJEQV^>+eumA z5gi%KcHsMe0D3@$zY}#T?su-~%Q`b6>&&pMGt*_=DTmRoE7Yt*1yrB_LrM$sZp${c zyNlFOp=N#MI#p~Hp%(gPTV!|Jn~RUdG@<6SUmWgsUY$sa=`4C-jt7KU7gweaNi!Le zW)>u23L@BnbzwDh?oSyzlHt-y{E*QL**|x}w%iD|O{Y@|0177xztE&%q7+0jlE&>E4H>OZ}((X6D za%2Zq{hDz3?UUi%-~9MR zj1$Y(KVQMuMl^B!Zza6Hj^J;99sRRgqmuc(N;m~H^?&*a^NV1!e>#@IV)q%8NCDcx zY!3s;BX0ik+uxISe+6mu{Mox_FJ6B^`4p)BmtTelWV6hLsb2IlNaU9uGn18F18sA6*AEF;sZ?l7$^k4exqNY zL(|gFk;lZqb23;4drt;tMK1o^`#WHYy&6r;yPKk8EIp+UtioLs!+#@>H?M(?i;}wM z{z^%8@Eu?^UBP?6s)Bz{qO^E-aT&hr8on$3a0SgH_o48~_io(X4*hXWo3EhG$ZcYI z)P!EDGxoFl9yjlNbWaA=r;fGuvfloOHVi2?#r7p747sVE8|rdYTt>#>dypHCa2P&Z zTpk#Q_MKG+;vq&Lzu3OnZm)hB8-jzn_2Ey$KML3i=Aw@_`u?Rrp9|PoZ^N~>b$RO7 zRv(K}|Mt70Jp8eP>>^I)m($pVK5LIv+E+)}WSC1j-SEw;AU}_0M?&$B5tsjkV*%5O z)&6yJ@!u&l6Rv7eryQabK>v}$wP*QnmsRoL~2a<9>O{^=W)tPo_YD(iv?~K)jNqmwyWwc&7iUVEH6sUnj zh}}R}(~fFxPGKjIs1MCf%C5*vlxOylhcRmFV~;zJbgVbp@>u#%h_n&0RdqotjBP@C z@e)y3x!^w1t|F<0`nuSW{=p*|2T}z;O$wEkUWzhJ%AzctR4GeXrW0vPtFkO#dz-Qi zI3j|eB@Js+&CMww<28q`1hP)%<@jg#&-;lh8N$dFME4|+J#?g^)3K{CCasObb_*Il zSKq*)TnS>>oc9DV=_`_2sIQA1IRLSH4u)znWR4gjgGdNkpFT&@5l>IeMKBMXc2Hw=j4)imNGZ$ii>zBuwe#_%2q6;#xzH@I@tGpH|< zj~DMkdgs>8xZNf=7O@v?<5_4mU_5`b1-r4XRfRXq-dC+#y*c)QiCu|CU@n$9;V-27N6HoqDHvXR1GK&p*?>e#k>}(1rI1 zykecf`vDO$W&EnmuD-L|RhkGy*x|9{XY8>ICHzxuz$9+#8q0Y9>Z>bjLezR@39XHj#%Sj;SgbllBa3BqfbzJlfz@5Ad<-jAF?w zDCa`NOi570&)}vMQh?PiVy>Mv=1f3+>y=c|+eq4&8Rs}Z;}#4H!;OVE4qe4-4oqx! zCPlaK7MtS+j|af-^42lq;VnZ~g^9hlR_QZg!B${Oo55@FSGiaVr=2(hN*E;s2h%VX zo*NH;1Mb*h%Im>C`A4twC?p~XjIS$M^SaynWG^2=9oa1R8}t^xieLTt?bYSGw*aJ1 z)W)&=?_eD_G+pN~ocdp)x1Z>HIzRu<gG)@>H6-!F* zQpw8P6=|MiMtj@O1oipnvHje~_>bcsrVrjb|4nl7`TV#0`T662hJl-{v|OD?{M<3S)I2^;0k>db|LG~k2-jT zQGQHH@}*r^@Z1sA4Q{8V|Ke(H{;QDzJSlg$oV(_EfK4XuA8Qs}Ii`7?x9Hku$j2HZ zGkDzj)1*|TmA=$MWzwZe+Cmk|8Y^?-WFh3b>x_covM%j43?ywpl-6{~R)tBs5e2Vv zo~*PTv9-s#Gpyr__|EV6X~B-f-3Xn+S`VEA%vj0+#=(}>8%lCr6~gfa6^Yy1>KjYf z@8DgQVq*pqT(iBeYSODqNClUuMeW+GHs!JpduGJXsfx3O6wd zj)|}XNjb4K?E-F*tqMpU4_*_jPP;!pY4&0`D(`AI3Nb$e`FXE#DCfmv53&&oeNodN%sG$hv zW6q;)<%i#%-#G*RY2r99S(2Bg@M&qe<}8!er>0Cersi8Y3z!icC8p#$s!5Pu*6BXk zs=yCHv7O?SHA;>YVvU{p7gaA^Z{f?&FD}cg)6lTDHCc>BpNJLqCQHU+D*_yx*huI; zELj%|j5U*CbF%Q2jKh3gk+PD)RB%$4KGHgLIWw`9kpb(Ga~gr=nY#>hvcvciPTQk# za0L}Dwc{|Hn6MdjYwiPv?;9wi7Rn(Lh5wGzTPiwjMbU(1s);Y$ny3~bNTw;Mo!AnH4qmepXrX8u;CFxt8Q{9BJAlx={CIpUK^{Ml zA&;+{B2Q~3bImgks1zknh4(2JIarJ`%^m*~Q*7|j1d=>A0irFkRbi47rvd3FaN^8D z={imvgy}7G}l1GH+)V7G=FM-jw> z8wX8OXWNa0l8Rcj9((lw*g zO>Qt-q^4asa2fNtI#MVFsH&F3U@}r;anIOdhm8RlM=fIpM_?2Xy_5~mkpIR|3=*~s zwb1X-t~}sQ9k=txl2ytzQjoz+E=|>oext#Tx5V`}Sk7p^bIb*11nu)CWPn00DD67* zaR3UYd6OJN0kJnQ;~JXZVyPBlq$fWc`V8QMG^6~#l4Fvx2r*}Q_zaJq(W<-O&#o`; z+=#q$!}89}mv_7@)6^Tw^Ry6BTFZoSg~)Sb5@XAieblw=A}4fRAm?-~;yQ&+wMpLU zw!B-(U%gb`Epb=>l58(8E|1y+UBJ0hGBNfZorhI&Iio9MqrDBDHaZs{j=Xg(pV>Pp-x~xL?AVi-pMZ6 zs(|G2m;)u7sDp<~9qXBILJ#gScWf6rU3NN_rL+I+OicsqT2rma*bT})@_92BdmmXm z7X}SBFa$hhL>07d#A375N9I6x;K(F~_HjDtf~kR=q@XDqo9f^_Fwwh}A3RBYe*#pX z>Pw}KbKWW`OE9wmmKk><$y6d&&Pea1s`dCll78=9k8D+#q~<#%K9Q1-!C=Y6S+Bw2 zr`Pej`LpX*s-%3K&OGgB5!%hVJ~YLn%@ z&{>|W?9mO=2ANKQB$F!4D=o5BVUlIFn_||stL9BH_h44J4rY8GZeu5p^&VX|$&h8$ zOfqEUG?Ppy)sxH$mQ^!-NWGh6npUVpKx}FaSyo3h((0Qsdbntip zP(INYgke*7K7hs057doqCWKXw@C)>Ae_aJ{E+`4@4pJbx$F_-!tCG0cc!s1adq$!HnA zQRk7Ugo~ehhV|0(-I_0Ovk$Rebi7;3Z)Imo*NLaQ@ouCt-;Z)0i>%yxdXcZ5jyc}w zDuo%IaFXEYx zg*@{EG0%M61Ca0cgg1gVBe!3Z?$wz#)!dwtM6ki%L!P(V2I0M*?$*cEUbr(KTR+=- zdZs^_lRrsd=B|zQj5K?kodF@}+@d2_H79^nXRgY{9%YP4Gt?*o5nx&6CgY0Q!PIa< zV4AZ|%^_GG(|*R*&i0<3r#i|I`GPPo8><;9Hqv3(nl*F|5hxbWg9H(B06Xquj$wC> z4n@+MJm;J#JP_JpFrEm(A9CqodUz5O=~>vh(6F;4gE@I9p~z$MMZ@>#aBS1A^6}o@ z=hrb`(B9MY4%Rc4lyS-EU_Fe`$D_I!MF3k)Ymy4o5k?DHNP+f@;ZjJ-pjm=~i3jUR zPiiMTyZm51CFzV(c$cCVv-%UEWWq;b2y)b}I26WsY?>ZhUfO$lkw9>cmY9M(z(Oq! z0$oW1=aw%o@c@4>8cEPJL4_UZhXTvgF{T`|9rvD|*Jl`^rzoaU*^S1{8+Z^JqjO`e z{y+Avwz+W|N#E!E3al#|+Z&1kKma7|@oXlZyj@MUQj^)cy-jVoD3P+6l_f7FPwY(1 zf4}YqUuDUXCB?E6vdR`nf&hp{;^ysi!Yvxb@%Vlb1(a+vKA+)Hh;yk;yCY<3S_lJOtm8#wqVzY0f^q(Ht^| zLKc%q0aFOSoJ9(u&@g2_jTC}!gKA*sib8ky`Gs2n(-5437t@u4F1yDQRE6kD_&?~#$46t3Sq?9&?!?Pz8>6y@NKuwhw@ z?t~#Ohj%>lH}!!^7&7c@ltP4hF~|$(5V-B8dCq^%nObGsd78Rp!Y}XL$e4Y4%}+Ci z1{UnsPW>>TA(YNwVlQdn&d;Q>qm}ZuuvM%qs8}Hepa>Va*fU-W*FOHYt~#IZk=uWo z9X${@a~6%F;q9+Uh8Mm`r?1ETZ<5is7$XwCR-tb|n|Kn6q!+559*9W9p6U%$AWHwA zm(kTy`)|hcX8nIEE?WCfk8!*J0a4#p9|BSOh49^mG9LMP(O=7zVb(W6Kpa~Ur zX7<>KjHYfaJ?LAaEQ#3UB0?u%Xkv4(Zs(_*kFaP6Qx)i)$KxzUlP0hZ(T>u_F?LF} zI2q{E?R4tXHMF7lP|{0!kx)q}V_(1$T|~a>^?cqFgQ&-8uXIsKwF9$R0sX4Z*X$sa zN9s%0)PJr$;q{|P${xIHKk>Ekf&q_vJV=sWpdX_Df-5RlV`(23oBgF9fv~PQW))Yb;2!m46LaUghUa?N$R74+g!y^5h`udx_Lx9BMy~ zMIr)!a9@cv^g;sG>-m&vadExf_Cmhn3n(a>@|BO>4YkLP4!4_*E?_x2J+qctwR;)s zE$6Xp{s*(YX8$idPq+TxALZcwAc2{C;QLX`RWwMXCzWpoo(cU3F7LX0?eW_lZg;I6 z#IvQwV{+5aX!iMj{g)mrB4_RYigy0@ILGhT{_j0|x(luC%-H;e)X=|G)Eg#Dh@dhA zj59X$g11+%Ik9E)z8Lk0G!v%SxkC+fh=Lf9lf875PSKwh8SN#%19dOi{mEqS<%>W4 zbo%<$yH`Jb;^J22(FOV^VYCtXA>R!=Vp$R&vyaUf`6l8_B=Txd#Q)d7UcTs3wl9}? z>8^@_PPj3j2|Ho&xPN__jHW1puZ9T*Ctu#ai_X#K%EA8m{^9W_>3|*B_@8}dA9RPw z=zMx{$Uc0+*kGKo157hL;m7HVdW7Tj^UrN0#>!NFO8@1iu{*i$!FwHWM;)G=?BkvN zA}V8L#7Q!JRk(pU*ry5kzLUp3rpO;Z!M~y^a_`}#GY9LzeAb=Ei+-B*hq;$C^h?vX zF5vps2V4fT@VVYunvcmj&v^^{x}2Bp+sG%}J)UnibDUEq^B@O0g$uho{&Qw--0M+( zu@jyAHZ^(NS??%^Uj*nQN4*dB=5EI?_O3%a5y!*|S zL;cQH1+fbWluoFY6?3PqwDQ81P7fCrc5ZW#4{k3HYc5o*J58m2_1e-1)sVheGgep zoRCfEJ6zX8#XWB&x|97fueWaVcy)k4APane+J?pBhgyl;rFHu!Kr4~l(n{zT*(9DZ zwLo!a1zL&ZyQY;=Ix zd{NlT-o$!7Ct|LTc2pVJe+UTq>Dhb`@PWiPpEY7WF&p|%fKEax&BE$EMEIrW8clkE;4<_?xv??| zGJ1rVK0(Te>IW@I29yn%WD8s)StI5$3v74lZgo3$>(!mqoZ#P<)gTr6$t+k6QhUVx zS0SV3MInz%vI&bpm@pCtf>;fnutuS_!D>Kz??~81vVw$^4Z)f%tpV+?3Cn7LlX}G6 zo0;612fhCDeEkl0E0pujN1|vI@>Y#j5+O>pl*g z+Cp_HH1J>cUT7v-mA#k3Zprpu3OjxL4HeCcAgIwgZP|BeXfI+*eV4{%blG=l9ukev z_FbAAV&zfa)rdG3G&{5DGm74)=h1YWHC*^r-ugJ>hxH8}snwhf9_x#GWB1V*#cnm* zo#y;9Ml9SPnpp?a)y7m>+sU1A24C(-WAaElgY?6>{@(uyG4V@>v!9Ok50~aeyOnb? z!);e<&3dK0#@Ev&nbCgNOh)B~9p>cOTJy}@tlnbOgZWw19HRgIY9@$7a zJ;OT6TP#cA@TVe5deQmPtlxU}0(}i4cz`@b&=4pL4Lpx(=l{t8B9~4uCg2YffHl7m9-iR%BqCm9l>lo&qUx+ zQ{c8~l~q2ICpID`pgnQUJ>Ma7_(pTVPVs68`r|7{!U`eub;zW2(a$_bY_sc0Pr`Bs z_iqE=7zfP|`XQ_;*c*l{c@qReIOzOF8DV@#ao$zD76cwFE5u|;}4Gi%=usBE*?i7@)&=1XZ(RX)}cFIKP^Y4cn}Vx^t{L$sD5AjQuo4G z4Y>Ao(1TvG1_Ivoi?+wy<1ysF1plptr|;muh1cT0ALID_;=id$yVRa%5mtAbvW?et z+<2DUq>x0532!msEhfChgtwUR78BlL!k;51+}GYZm~iiLFyY&pr)&`??yImKeDXMP zfk<#)GC{@y^Iv;4H*mWGIvn>T*FvA%Bfymay?OpBTr>X#tz<>Rbzy-g#2w!C&^L>k z<1>S#8x_i4KS=y|U=lCr^|*;*t`k_+#<05GvN=Q%7Ayt|5wpQFydJ9VuEcVX+}l0R zLHhpIi4IlUdg^#_G^>jq2++riFg{s}#SqrP?tsq%6UXcp=IU9*q|w*GHnuEug7A z(DRBH;+df0g?PSSsBjf8 z1eLMkgeV?w2tkyMNi1JL07ot>9@It70<=AS!;Du-&)OaCU$gS~0 zv@kVZh|bO37uf2s;)OIK?%o^m&UhgjrAFNs2CTm%rR$;c=1QKExZXW4#Q5Uzc_B+& z5wA{kSkDzPx}PX{A?Ojjpma0 zdJENsPE9Iah>>B97h>Qi=Y<&Gc336|3touNd5st1bGTK>mVKORH=OZXo!;LrMh60+rgJkHVb zKW1>14X3LX%LY|(2CKh&h#mHsKG_m2WCIA! zM#PX{b2#DB_W9fhBGCM!K*qc`@TKo_FV>pJf?^* z{IXfj2@yFsRjS>YEH9y{!rKZmz0szgIwi#Cu7vJWic{eSu2C3dBJf>dY%tUW1CpDY zD%WlRZ9^)uYM-Cj3@|8s%O)x#?VJv>OFP;=DiQsFPHC;H-~94&-BLntQMcB!ogIix zHS56;$z5|Vd<&5Th4TC`R~_aB79NSgkid}}>yww`AxWPU&rfXngopGkOQ4MO*MXBS=yUWVUFLgCvcsHV1g;*hlS# z2=LB9l2}fHdmG9IHL@PD1xdCb$rdEpf+Smzk}XK`X~^@B2a;S7tI~ob zTae@*2qc-~e`dF4$hYiSf0!ntDW3l~oS)jWXwXxlpO}I0`X28IX><&0%Qzlz)f>ou ze3s^@ugmC)@>qudGlI|Hf4GE8E&k^bju#*#>LTiUQP#6CiQBCtPkXP}%ck^219yqe z2HE)XES*fQ6IeBlXeix0AyADdOCmP8i15Q6_O*NUPfO*lAB%?2vF@?{c$~$!Wv+#z z9VL}x?C#IvWMCa@hm=nr*#7hVN}tEFuOp*88AWCwy&#VGV1T+1Mn3k=3rne?jFNjr z8M`2X-Sq-)xAE$-97W|B90(-B-?QNAmR@|VJeK1BjB4t?m1>>bY8Qv50&4GGvc57+nZZTAM#vVcAt>`ZG<7VtjGa3Lzrg559<#Z96Z zelC+~#4v6r`OkIw{$%eIyN}Vd^X~R4K@Fp`91B1XANMb!3?}?17RuP2m&iXle}C11 zi6Tsw(%!J1&Uas(gw->)e>=B`MBHI4y_AkHs=DWYKF{mkxsti+(BS@WglPRC83~pyQQ5>J!Zz6Nb_Ue~p zGQNa6-MNpYm(h9sF|42oh$Ks{#vr+IcH5yS6ZbrwUR?KJO_Sx3@w;HxQ-KO4OcuLp zAWS?6cqa%3y^at`uM@_e=qN7qU?62*X}PErabocmDbA_OvYdjFjxX8ik3X{MMRJ)C zx-ZV(3#HsC5QDf38NoCg=Dox5bi&31)~AQlU+t}{C z+R>4H0A=#k-(D}2NF}o=lml{_Co$VH@(8x>k0x1v7xmvP%IdAB`P}0Ru8_n0TDG4{ z?AX?Uar}sNrvRjOg z?$s^(IvpnLZ8Au*WYkZp&o#Js&1V|Zs5fyDe9N+Ah#wMR2{F0Ah4L&qw_7|&5z{`_ zsf|KS0M`wlL&sT6VTR-Lu^VU6FX@<8uH9v@TLw+-WbfzyTqoHr!j@j%#W&seUKV!H#bIr)Qt6y{v@;bnVYpU%8R;n&oenZt+{>da+vhS$FQkg;G7R%buG? zXOhNAFUmUO(eQTb3Et^KSI(fD&#Qam_%i+RWNVmyRlj^-A2)P(LdgQ@SNYe(29 zFIi)PRG?k!50p#c|AC1xn~blse!^fx|0bP&d)=$=vkoJqwot)GW1L^Xus#}RII3ol zj_qOYZdOZ8f93Y7s(oKqv`<$5%&;AG01T&0!XU!3-ay z(67)#$H~nR3&Uer#b;^Mxk%$U8Q~}6>tai|0R;d|1SYt-x;ZY}%(y=tccScaUabi2Qf1m&QBWE@ z5op8T^&w1#vf)hwx~{PDJ-mVTw%`dgYl!tIA?FZ-0mK23K+S}=dm$YsX;w5FioX@gXZFIV9@%D4|nH ztp?-?m!V=nv`}C5AjE(MK|FPov#p!$6 zTt#%|OBzYyF?8Nj=*};p7_k0JCk!GvES)k4_J`w%Wp(C5+n?;PQl^7r2JYVyE{<51 z{bV>qASqE(k>CdBS5X}2=g=L$nA(vH0$I`h*pc7}N{_t__Sr9{vEA~{#y`V4CK{&a zqiU3}33i6b07n5=CztjqRu(OP4i~_CwIwFS=|UvRqdSeU9NlSVfAS%=ORs_fibxfe zjADiZF%dAcX|;{eAip;Dm~y)5{qyneU)UGJw4cCgjlsHcluVEQdNVz_&PGSQX?k%K zdvO?rk

      H)j(Uyf#A@h8#br4ThxtEhYW6%SLe{F`Qs~Tvxvwi95>u7XnMV79g{2 zJjRmxSTJSY^nG5HH-BRQ=a!*xjf)011wLJ_9iA%@oby^TMcMp(T$MNHuGI_g2iL`v zN3rYnA*Hvg^d}Lss{fuU?%`ht8uE{le-O8 z_ed%pXY$Wc8EpD=-H3UJKr)Hjt8x z!|cSw42>SGtBG($1N^0h-;rGG^f7{&;!5yd^GD1SFaEj&j;iHCh|3y~5+4$gnUr$| z+MOa?xGg!X!(%-yDCl{Ss=DBgB8fN6IrbK?p-D9q8;aS+H)1|3mB3VdYSue+JwL1~ zji25Yhl5;W<4q%YdyhHdZfJ~Dv|@I_`bzVQJY-QGftWl7)#FNfbkO-=56^{;OhwN= zbV9+ppA@gR-d0D0XSRvqQOaXG)SIm1Gp`T#4!HlKwFy+z{_HE)zw!5p*&zf1Kagzo zC^yflB}=4ZRy>b2?Ud_!9*tGTRnJ{8P>C1w-bwwxu0DNZ-uw}Oft}Smz}@|Sul__w zC!R*iiCLl+864^NvYl+Kp$xaT!kF9CJx{9pSapV}*RjBv}rPfXoir1LSze z9?iybtN1s|=bQkNP!g2qkG8IL(?(=7B-7<@cZP=P{4Tad! z6E9Y;Hzv*gej|s$({$N=j}G}F+PJ(dQ|!hdWT9Dyp|CMRxsvydy1P^6n2CDIr#Heq zcF&LB_Q}^bmU8U&@||0?pX=>Cyv}WQ+-f$B3F*{wBPKLe2?M6SPj7lr0Tg(xh@{WA z7@V}X17>a!bL&DRfyG44_z983IzUp8NL!3*x7osP&{8>x)278TuU`t!s>+ zYOjs=CCu&Fq_!zf08v~gw4e{5C{roEq7o`tTMf8=!LCh&cbQu|nAhazRCWY7xQVlS z(NOhpTzxI7s!6r}LF!Fyua7z~Pux4Q5T!Mp4XxpAt_mYx?^f=|jF~|GlsOydVQB=4Q!I~j)5-fOboDPl`w1`ymyhTHNPRPT60NT@@8u z2JypL>^7ltkr7WfImM~EB3*?Lm_6{yTfG0vA+AV+O)M-T=8h+phlyBmg`m=xze#^< zve4SrmAKSmV>rRN{hg6xEGGR0!Q+zF*B96A?}kGDAjRUtI??D8rq2BGRPpZ|iUqI! zlxOx1T~b82k)~i6dT*d&xVu%cCizd|?} zr~xs^ib*h*Cos~Ofo0_o{L67(BQWUT^mh&F%;JbKXN6QQMO>*&2)pIHX-pu=pi847 zK1hPf2v9s$C0zXgWCI9~hABfvs4P53%DskCDTvkRz`cg(_V5WD?9Y0X?S;SK!56_p zF{^>0wIl=i3xOjzxUm1RGv(c4gMh2R-&#=?K+t6bhS%nk1da+i2MIxE4F8$WLFuQ= zmjOjX=r>Oj7oJK!Xg93Krvy`{tA-R|3@I-xIw+=kHyiiJ`VF@o%m_ixPEQpJ4u-I| z3aP7szlUxZ!xJ6-UqJ`y_YL(G)fI?qD?|IU^dP-$OUfx5iUL8felnJ$d3a?`%J38F zCs!tDk(@UqzjX4^t?vDw_-4blXetHF@h-%vkE3u#V446r)qerg3p8)6A19#eke{2? zUl*h1_t2n>Gp+6-1x=sFXV8$4o2_6u3m?e(+sA8Ukqq|9FGAmaD+o;IXLHd0nE$Ez zoTgnryb-A*X*W)2bIVC+KVpeWHKP8xA-6ecV?s#SrHF=sLoA$N2{PfP#~NT%5L^GI zPDm{!D8|9|i;wY}(3j6rD5J7SbpHLQ3ij4THdV=MGp0`mP98kmz3m4^-X6AaU>EHD zj5S3EK@UjxhvcHjl(#dZr9r{Pmwy1O5UhUKP^7gAQ(qQAc`hU;Q_iHN67|)gXT={| zb|U;%C3}wIheT6N07;!|gn?!D{F}+B5fu>kQ5ct2evj9jN7VQ3`*`G%bWB_$M$9pL zfAmDO&6u|{_dfu1K#RX;*W=~n&2=U-pZLURueIQXH^wA7_bN@DWLYwHa%{Bm{&&gk z-Lq`=Jbw?!6ffT|qwl|c75)CIa({rl7|`PAc{Bt1{<6+rUNo;TVtdG344#AnPX#M-LDVU- zc$lS4$CP=|;AaO_>qIl^yXj;J+;y`l3~$SyhNv?eF7hd$KJA~ty3|%HTRv_WjP)*B zJ=A|b{rcLyI)28r@k8?V6@d5h$x){}um)lE(c=2ChC;o(4qI9olK&xcycQNo`1%R)7M-sTjQ~|$+)tN_=(0se z!_DWXTOsmeC|`jD-q%f&Ca_t4*Kf;7c1gED@O2Q2h}bp;T0wK$ZT4bISM)8Rm)2L| zuqtc`ByWZBHKN|bnwmdcv_#C`%wW~!*^o-)(DEoGkfB@0-%jH}AN`{JqIz_!K9{z* z_5Ch%(tx|_p|vU1j7xZNo8OLe0BAZ5@8<2n!u-NOfip=^yuYhK z29Tjmt_zlGYSw{8#&!+F-iQ~(n*`3JH3%5pWSQSySEFbiehUwSF*7kr=q-+}9=xrx z#PCt^=y$&XA?R6Xexr>ayVb_!a#`Ner_?vR8ijU$OV&6X`E9-+-hblOCTQ7oujH~CZEpEl<(Gh7;mbk68&p3FD*ASaxbiJ}Jx8fAr zBoC#X)eY6;E#*VclMLDJS)OOGU0^RrK~awq)w_S-z|n+!T9L@EKQ;$%b(8)RiH+`;uLx9}Hiw;}eY%;atD=_qNmcPA%Ax>^@)~bgsvo4Ki z&aE1iG(aaZWGCGiiK~{eGq2)!SMz*vMK~JOgZ|!bYsasB_cFQ4O5 zrvLVY`{v$uVtFaCGu}7q?J$}bMsxa%!+Fuw=p7-y8;G36X(084aFLz#=k7L8aD^TM zg_IGOyq&0CaJ9ovLfc1yuDz}Z!O!3*p*=H4I6C7SZbSC@Tv@Bz&*zFF??V8zSeTJu zF~?v+N|5^@784xF5g9_LPJ0#$RcBB=jra3~GUzF3l|4BO5o*6NB8tTO^^p%An8HXS z3@Ab)l`!I{TXfUC!6$W6czZipZg@&6RAHqrv`{HfW+iQ|a%F)SXF#fRA%6i+NlMDv z9g;GVTqOB!vQ~7)-9Om+4wp#?wF6xyInlT(RQ*G+w`Pb`Mz7b#@OgSF#1k?d zu!5NpAf~La)Hpgr!=OfZ!~{8m9%b-?StOJTj+QJV7i1bw>4u7-MqBaVtVAL9pXx(H zL3d7squ<&AhFqw#O4SmK$F+6+m3)7=LJi$ z!sLEjSgtusrNx^P2}jqWXO7tCI36$#4Qy_866l%_?wi`lR)IqZo%5zf7IPL#2Ve?N zx|_quUr%O5c^t}^4Vt&lSJqnHemDc0gsgDJjqvysu|#{o9bkEEEF?M_gAGtsNMk8L z7c5@%lBIFgD%>U!xwHhX*GGoI1ZYo$(s=R^Y5-VLpwlLzum&%5ipViZPIv(Lrw6}s zOvTu-!Sh>7>i}H~8R{pvCN=Oq-bLM#o4Cd821{r6@pN_vQ)iDMk{wk-g=IpqTuTW8 zE6>LuM<%J{J_8^+>*P2)vj;)qb%iEgmy(WVTB>fcRREI*c<`+}UJ0wuL>G_n+-qdR z%bNZkgje%YQ^Vu^_I6hlIrQA;cx%0KKi9pm($P0yMG-k*tsw^2#{vx`L53a$Gt!^K4*GX&2qXt8Ox@d%4wJ>}pSbH7nB% zW)(zWlZ?3>7eM%2UH~dO;}Q=fkc}-nGwD+drw^lSMZ5$;X*hUI*E9 z{h7qA%qoEFXiim_{(+!3I8_+HO@5@PDK=PDc{tq_J(*P{zWgHWkfye_k`k8O*d9EUY)9k@cB=n)7^oPC znY@*#-*|t3q*?o{7k%UY93^LN>zVfrl+nyVjeNa?T+Vuj$>@XU-6czSzRx@IdgXq6 zGu}Z6SguFF>mq*PjR}hfU8Mg-!+(@#4f%a$w50==O{>Zh_S?z_wNl8=a%W;rS-{rQ zW7k+x++y1vab5#A4q1tA=bZZb841NX6&fqSh$lE$BBa69K$t{??p~#Z^6j^eIB1;~j z$l59cC%KW?Sf$D->+Kj28N^_lIjfjpsY%X_zAOZ3pajKjklMCW&C5d~IB@IE8o{9} z`V#IOjkYJmaR}Y_!qN?Wm2!t;X+M1x5LH*P*T#@3gM@8*&pIOwnts=4! z+5o2JF3GenQsBb1Nyn`4up1_ppBY!fsU5}12uX!WYh5?lD$qpg*c)|)*8v=5|Impi zi^#_FhRzCc20~j+SqhW>nTK`Lc-y)*bFm|>@S62d0ma0)LpB%^sX*XpUX@2YG8~8~ zp6N0aoFgNEVa53eaaucyL&7KwBtKo*Yycs>2n$L;SIE6pS!Ky4k&c>~L#o>?yhYo! z|2$pn)9Z^foTsbGG>gE^M;ObA!b!o_=scd*P-H4RDYx}Wxh9mNi`_$QDfX77vobtI zcX$Hea5uw)axP+i>UN2ZaXOQSO*?WJQHIXOC7QoDl%XI8z_udl6y0)AzG?fo*Z6Ul z^QBMcI1gp0TSu=>`-s4X}G!M`DMPfS)ST&e1^~hL{sBLTp9bF<@%=sgj3AMWw1b z#+|~Ec!Bm{fTq}!rg6|IdbjWvMBRvv$@hiFeJOEF%W-`+}^?;kA;A7$an2QW#5IN2q|0M`2MnA34Po}aH_*+x`DzVG~ey>f3sgqhmlnFJ9E zPl%`4B0|R3VirD8t4b1KG|3=iIGTMIbId|BXq4)8>?8;#hEC-fYQqiji67W7zAYYUFpEhsl&dW;f>$P=yFRBPWBxucXM+ zxKfmduHX-5fuveoM(x5|)O!2%0sG7nhdMLLzQsgQo1v;3XF)I86g`AqK>EbeJbA>-*DZ zMUe&w6$Qq^tY}&Qq&JX+&7KBAillDg%~^5lyQAB)JG$+=qwBvr@}d}zy|FwS=R!(r znJ_LFS!PUPY;k7IYQ58u>a@;~O10h)JDEC)KQZ6$PO!yvL%Yq6HGtbuW|? zHfojHB4KP88S#BaMtp~n5kJDn=+gy|=M2w|1>IN*Y01J>Zfm;fb{R@Peiq3v(lOb- z`t#gt=@n0&!<7D> z_Bz3?oNNN@<`%il1-T#?P!eS;7)t|5GhQdi|9X-JvSCbr(AD5sv2`cI@hm0qP&lj=*u0wZ2sRu%GV)**;q>(}KzCutMd1fNKm zKq8CuM1Hxa-A}Jfm5m@9+JOhTsl2ftC^W4ocWe?~BObIX9P~gm=o!JFb;3*3RAVB$ScT)&AR4;;i=@{la0^f!a=rv$mC8+=#{OGEmoU?MDEx zI&wI&W&&_*`{EW6K+MMK(2@~pcAyn|iSQ9TEa8zHR&3WO1`5rn+-OnP8WAL20VD_F zN6rWzsS`ky+WAb8E;+UHEQt{K)DPNcSoTRCh zIM1aOwVs^kM^My!g?<{LAzjF|+O5NQ59?|L?_s^E;62>h^PUSRYkQW$qTP=7><8jz zAj_g-o5FTP(k|(5Ey%z6-91BVXbOR>hu~`MSVpm9=&P0}6OO70$;iPbuTTquv#Icv zk|V|fas!!6@C@2<$j1T*yo$p!lA)G+3G6=H2Y8yn!yPYVcww|nctHu2uBdizne+x) zS9YOw0C`Bt7bE;Cvq-f-=8|A%siUUy}NkQ6`CIyTxIZj1T|`Z zQG8{Nhvs;t3h&#G>U(Q@1v@lGC%E0R<-^TGy1pq1-=~_#hD3QM_<1e?&7E zQy1>Aad%JKx8w9KoJ+}#p|LYEjwB5&h4Uf9k><)Lp8DWe)(IWYL$NbnhKK_A<{}ux zl5iL#G>33qcuqp25n>=kwR6i^&;SO@E@ZGg01cMCvB9lpK}s5cb5g5m7EPv6N>7<5 zv7FMOkYy^purkhc9x!a-l96q}tWvrxbvOy+R*>XR3UVva`Z%Dzq_X`+XVECGB9U*ou?u*?26K(-B)behP{+qgA+DsrbDBMCgtvWH%e&9 z(zS1+&11q*XV~#Y43P=RLQ%fujUOl0aA1RhM-G|E6z9e;^fR>DvC!Q9kOZO1Ss<)Q zsPb&l)X2^Q%cPGu;sVw|IXFx?@;b<3h^R8b_ULyOahN7uKon|;$Y@dPe|+kj+qN@< zO8xF$Q}1oW(mT!|5=(uo0@m69Xd*nV1hSWznD$q~?lfE`MB_-0$=52#peBaOEfTF* zM8yLJi=>GTz!byfxA5qwcvTuW3GYT_io^y+u_w6}-Ua6qzY&&=HN z4>AaLc9*~e@HVDZ*&{VrCXfX*1E^#Zi)!aK@Z*tPt~xc{`rU&V zp~ikr3Qnl$6!$w$h{m21qNRp{NI4@R4r74e3TCJsf@^prKB=u|s7<-=@mXxf8+D2k z^}7dcNXBdKp+lhE5_HJWza{990dnM0&>=<XG?Nis=xnAgjGE^IS|x>GkHnw3xL>*~b>Pc0 z>;dxUA^Gd*QsFK6Tb-C9vPN&sc(u-)$@RN?tLdx&lQd<{;76ZxHC^CygKD5dk{qvHY**1TjKE%+gu96d>0mEIb7K-HO8Dy46ED|3-5n_6|v;fW?EH?e$hx5`{VMyU;1G@$y$*4F#ScgjMFs}G~ zhiNSkrf7CejKhhQFsehw&vM@udTzLcWtUG_9&ifF-bn>p>3O1zx9L<(=F(0~YMsnX zVpTkur)Hi^E}WY;L?2061R@z(geR3QOC6*1sk4M?|AN==kLWaq^G z)=9GAH`bk^QT^_I1z}Ljen-%14A~~hlQ1Vqqm^4KWKJ?+q#FPJsB~?~o6rCTt1e)$Isgn-XJsEe z9?S3J*?g)Ew4Q9{qs&f|IMJvyp{M%NSwflVN`@1LOGX(oS1wOiv6@$BHXPsF*>+Aw9F< zOwC@h89|{y6ftsVSQJ*0?OIItioQ zTUDdD75j4x3rGm!HUSEPY*GNn>D*^J^kl@tqTH%W6J)hzKPH=iV-DM9Hx~S{PEvs<`b&?`hGIgTxLdn!gY`QRY@^0Ok zI=Kc%Fm-Z48${*qtlsRxBpT2-MjVGGC$QRqnmtX>&QKmury)@>S~drKtI!Ow2#zTX z?c@T6JjcX^x*#SuJU0kk-4gf}Ipn{AG@roKS zV%opF`)tA%+DiAf(n?1%g6PhqJ(o!d5`{2v#i+k=jKi6g=wyV23lIa?$W)#YB)A?d zeIHDvoI1p!iAj6F=L5cggQ9vDnT;}DB_r7;H#ZmX1swU zR9#3ybpT1IdLjwivU!_Xnog}JG20TyP?Ncer=)UEosYasQK0Oi1~aY_WP<<@?#LWg4ks0}vP%Ed#jHx!vda{+dYe}XzbU`Mq0~NAT2u{}zwSc8HSX?tBqtn3%fZtm zqv%kPn8T`L0Bw_93yCY>gx`l*4-rrd1GW@PC;4?TN@y8T>eWJ&jYK`FD^rg;kg7-Z zOpV8%)v0nepZj?{)04SGS=BgkCe?||vLv23HMw-cEm);@s_m}9Dz9@bjY_wZbYL9F z@h8%P(K??*FQNl4mh=;EZ#ihb@){?SX)~iwm-5!QyC0dFpsnFxHKe>DYn}@hFa;B_ z$t_?KP%)HCl|c<2j1&WJls;(KG?L{i$Aub2{LI+J<^= zpTub0i)1fjvc6vqCEBKx++_f0+&xU)v8tl(5X&vAJF(rXJFzaQJ1W$kfoaC)1>;zl z4oVUBg?G8lI$6|yKWDAka>ti{H@#W4f zr$8erUv-7$s{?WQ>Z~fw`%@sj-@a>{0?yC1i>I-lOzhky^Tb;hXEsgJsW&#hus97H z7R?tI2F+6Q1FAc=9s!uV^SxHl@B+@8(MiQ7RTaFY8tDQ| zm$RyIcRzbI@j{=M1=V9%`$CJDF_%2zdXEwNm)TV%8H2fVRiRW3yQ*w(1kv%SgQqH( zE?|d-@jx1wthj_Lju@^>IouiC3zCeV>?ZyGs(;->9bVMrZ$TwmKqavVK0@Jw1RL}2)>d) zt%`)_Y=61`o>NjE$KvM2>yrNTHIT|nKwRHHEkeybHC<=3Y`I;ew?|{}RL#TG0FRl@ zMDz8#dz$$r8^0v1(PIlm3H2%i{L-OJG>RYw0Da7id>^nnB=W$rX&Z+J!f|4bcR)rn z%i|!#0j3!zDm~k1^N3y8bQU_P-`z75Pq6`xX~B&X8{o1sq!dn23kYW%GKSe;k4J_A zP70RKJ=TDef=MpF0d>`JqAr?v*fXpj4B4TFS@tg4+(-=PLT(R1ZNex~q4>Auz^7{W z{k(_&Z64^K&;I{U>CfnzcUk=)pQM}Y<|bXHw;%tRt?|iM^vRdI_RV7Xj?R_s&CT0& zdiQQb6WcLHM1QO?{4f2f{i}&}tIuQ{(Z(ZI=BOVD=URUzq90=d?s2pW@!5K{+IICj z_WdvP&lkV>;r*?6$kv<1YDwfaB2g_{PFJ(V^6l%ZKY#zb7ak-^d?LN2^8}~L)o*Z+ zz4@>4_kaEFw}O^leD~+CzWKvgT)nuy{)--8U%&bOjri~X`C7=4yuSYJAFm#Xt9RS& z-OKCi4<9~^KIqYE{r386?3~4Pb4@+3(Ua~1g_0mW+s>}?!}9CgvO5!#kAgSb!{VR2 z_Z4)2=}{z}L{A@u0~EJ>kE8IVC^K2!&b!?_DsN@+UHUfLycDvy|DUVX`*d=f2_5C8 zVf;j#%kR_0@~S*n#O7%BmUK)te;#Rs5q?hIGxO|JP{?)s7itJha|>ui&) zALuAtEfFIB`f9OUY@cKg+ozbD&GsX`;`ZYmbp^M+o^CcIr~Sv@#&5p-{>#5T8i8xP ze7B;v70eUc2e zX3MwRcTdH?9to0S*5V1Cxp*DDT6|IN@M`hwS?DB0@sz(U{ytjFMw|Ny{jMj`bMy4| z>&N)!@vf^7MaNCH{c^iqFDCa}dL2F%A3x7~zv9mSeuV#aQ^7y>*ZEU~_+pmLH~VJs z@pQ4C(o$gqtrzc!tCIu=edr_qLy{c}B}Z;kE%)Wd6cY9BpqS2%1dB4dj za{cH0f`LhYZX*2cxV?A`O`J$~Gl#`|eT8R`EWe`X_y~Wm#3UnCGQ8Ivz1QgdiiXGT z!+|qvd~v^R`*FpX*VL!uYu@q@a$cC{(L4VwX?*6vU$sg`6&>QmhsA9B4#XYjLP)lL zkv(KAjPQMJQx5T>V;#PwbK_^Y4DT1q1M5)!=AsMnQ>?&jvHo(sUVZ3Vf`el7;a9_t zLe$YHdT`>~7hH#zBg@e;-ge>FYHXGAr=8oR zeV0_G;fw2Vejej3%u*f}*@wSiEr_kSD0)?V`1=eh1bs@(JAAsyrdwjyf0)sSk7pm3 zdHY55_|>ERA-)^5Jg>yO@6zSy9~)L9c0vHlAcbxgT7~9@SGZfPw|jN%G%2K{zjc{6 zwrkSp@6t8V!d^on!ZPATh$R*_1YCp*{x~Q>1+1(Qhtw5@bRY_;WDh!QnfZJ&$KQjt z8RdcrmMatG4aI&KgmBdxm2UE+5=P4JJ(w4A%2XHdG-Hi6dw1>tuS{*Xgn=>Rv-z2^e-@)p_#ts13N`Tj+8v9PlhO91E?s zsJwV|#Tqr{&)%%2UuVnT<7kF^;j+#HlH;s^r$~AsZBn}6kL__!!OjuaH+yB>O>k=Y zZeP^5NqRd63NBZl>0W!A=F8`kNB^EWbFS~iJrf*kQ#}pNd|#X7i=CYOzH#47sjY-} z!hoj#1R?jz=KlTrbp7$XG4%izalbroEV$Zwj&-+QO|#7=giu3=BuO1||9LNfWRksJ zfc-P#hP0~X>?Y9e@iVoG_HU-G>k9a&-r6r8gAMgmq_ZOzkCnEZ;t=y_(-QG{oCRV>Uyn$H(JFo8}P#<=mAJg z1F%(O1bjb+-S!MDuXb*!aaU(uU9j>4sPZPLyp?saNKj#1zoSofa{Q;`T@v62&ZLlE z0VA$;RJ+`Ne@Zg`q(GKj1~<-=bEY<>xXN^JefO7>TNa@go8Zaw#f0+J>GSA@s1{8r z`|KCz(uw@ye0BPZ$3s-HGdW!`s2MU_J8pnkJ9pp#X+nol>xM~&!-Tm=UlDW9xms7D*Rh<>o-1aQuFjcA+yAVXE!O?n zN&eok-@SKyf|6Hy?*V$une3!A=m16LcCp#s02j|G>*)<{X!_27g8}MIkE8vplGwFd z`yK5FnNGsd9w%dDd$D}BTg083h>rL?Y#5myWJo?KqauNNkF(wT0Kd;qZ{ioKbhZOJ z=JqFlrSp$fKeF{~e_J-U>QEMfrNLwTovhDJC-MkgnTb-}j$G(f^H|*}btl$t_f@xgFvYI`aT81|6h? z!20!mHCxOVx!wLWXGt;m0A&Q+g3f?#(<*e*$b+!DIcZ5xo{HcW4xaExSi_DfHW?vGowztLbIsp6q^GWSZiQdh@Gi^rVevNI zuGYlhfNnrt#vJHyn{Klwk%*p_u`Mb#E!dVX*4cEs>or&N7$rB+e6hMqr;9BxbJ#$; zpZd9t@VAcZL6?BC3n07vV|0ASz!JW01M~osvnYYsuBr%~0*uGXeMnfE0NKgdnc3>Y z^7YlbbV;n>f2k)xp3fgImXDtv9gBflErS7Z#+r^gX{^=#_Q+ri^{EY1V3k;|4YP(c zC@n+%30 zS3i84{_t0l6~y~2+m@H0ylrkUQ|0}!nWiMbMRB5nmLk|YulKkSR> zybN}RBnt{2rqTo_yBd(k;*z*n$odjxupax&?rSx-m}PQU#)l@7hB;YDluHW*a4z#_ z;rLGh>{z8f{!cJxv3`-ICUkL&7M zwPS2_{lx4MKfC!GJKpud)ervL&0l=vUp_z9d&A!xU;J#ZsHV;=eeJ3nkNW<7pBj%T z$DXz6p8oSszTLR-3#-LF*I)a|&F@Zpsei-0#S@#i$4RV5dn z`1bEiU%c;?C+|3>>o2Z+?Wo>+_nmUuzW?~{$8UJx)8BvjnpNNY!Q;noRqi|EI{B_! z&VKay>4D4Nc=Z$S`^-gO`*1$D+2~$3^{c1zKfLyxuif?dj;Y^2>d0Gu{QN~HJomuu zZ~N?qo6rC0%`<16z2Wko_mqG7?eCp)(G?%=J?X!{^NY1JThDra?>k0I_YdrT`8U~H zE_9wb?h5((r|x)L-yL5`9J$B-C*j5F_1eo@UccmW`+ceV&bajmd82*flWU%=6i?~u zKQ;F5SHHUB%t!a$z4;4AUUkR)tGYI?`o>>5&z^Mkjradvb@JoKblvHG^o%opw|G+N zlA>KQ-#xCU-h%WH||ruJN?YQ;a5KL zf~4KPbMFtH_=kH}Uwgseqg&o1UvWuq`tR=j(gUyPr;lBI#J~$Ltd0Njp_9J#TG!n- zo%}~>Z|s6EU+|-SPyX7l|2A{{Up{=rIYTeqdQZMsdgF5sufFEW;|fpz^{c0@y5@VM z$9{UvBS)(@+}`(~a`ub2-SvN4SDm)^U7xvW^_~AXb=#hgsbBxk6YqIo<9XJ%RzK!` z?0;_jYVVaV_N341yZh9xb;qdJY<%X=-uuT7z2~ZD9=Yug2mklSpZe2;eDo7;&+C)p zcYo!d*WKleefcMAkvGRSoHzRS=UlvJCFjR)`%jDb|IQuPI_P6z`JWObDcunNuL!C1 zTk`)v{L}*Zk(f;*`7hiwv2_apb(Tz^4Uk7STD`ym`~z%t8`<>> zV{k%JRx*kvfpL;lY%yio86lp@*hX9wsS(#KS;P};Roj*%Q&FW>P*{`)V&>6?3t<_7 zN$M2I$oB2To2Es|@&H)=xRA>6Ah!VX@dmRF?5u+0RfuB~lU2^|;;+iO3qHn zq3RYQeP^@yDH@(-v%CV*1Qw>26sgh712~|kW)$O`;TPbz&sJP>CGcMlO6S~DU+=&Z zE}%nmEJven<7OdWpAV$o^|;B>Mn-T|B;(YkE-jg~_Dv6WHwfR|@N}b+z`Pq6{DxmG z!3M2N<4#IrVvb}`krm9Fh$LQw(G(5Ovu4rBgEw4orksT3>O1oe+xlSf#|uS86X2cU zo=YyRQg;pmmUHtXn-{8B3yZESr8cK$T<0tjw{&+$(XnXUbEc*WbU(CcyZRI|N!)bG zb8)`Kvmcs8mSQtFj8E8^=6!>5(@WBLUgO=sC1!UNQRA^ajtcKhPz-`NN6NobZ zZDgpCd0WzFJeShWr)~!rcPTm@EP+%$Fetf}Uc0eoWUv*gyXJI~|JkoYu4{RT@Yh4v zdKCV==nQ_6Y+5;(REreZP1}f9@)k98H|~@QbNju)c_Osq4wAm2Y&h1OzeWa%gg5OJ zih7AD3tWW&aq5CDTS@XIQ}-dO(|CeB7tspPGxs~Z05n@tajLFK2`teY^WLVa5#6XS z=$O@t0bX)YVS;tK4 zgT!;nSt1M)!*MN8OYqXgitK6^NN9`BW{IW^_7L68>+$KlWziD)6jXz63bmXyLQEiA zL=pGcRk)A^|3Z;s@Skh}7-I-4yAa4nkbALmuGR$RYL#Q6pn>@`B8qY%6T`HW1YLB5 zSVqGWjcS)8%#SCQk+1}&-H)X+SfX}0f~BQc8j2Bg)>LBY6rOHgyBxu6v2rXUBs6%8 zVdR-KD-m9@UbGk<+eTnei4?#mVre|^5w7J#m`=v5x-Jv<1+;g3yoaBH;tt?85BL}H z8xtO)Q=T0RdB!n4C$782W>^u`1VbjriUQE!jYu#`Fb&t3lNCprVb2vrzKk#M)GVkW zrx1QT_D00RgJN0+&+t+3Fg1;1Nk&Yghc98tb7N_RmB6QJhV{yP*3lK1h^hk6U>1M4 z1mfT&mPp|_vO2oDvDLG2U^Z&YG#I=n5(_)TE#}jM!B065D`l5zvPR21r0)Kt3iiCzz-l*pmeXj-b~T5CS+>V_}={ zLSh3_(~Kwz8#CN!j6zTd1_>`D#%ij>t`VRu7$gc^U<4`Bg3(dNW25i|u$#iz4Sr|X zbq1zRQ-+Ij5{k4ME3t1i_)Ujr!pkMzcsb=rul4{YZf!zue z$TTY;3he#vbwz6Bb<$tdXZdzORuy1I4P4gou<(2I?)uV88UF5Cia#qq!@gCbyLpbS zB$flh+XHc41Tes$%U1{#ijllW;L=+DGAx?3P{4GD zEY~FFwuAe!Zdv|4h~puTuVirH2I7aW1X+L{r47pLA59 zf!eqVBve}DwMYn>Uk@$Xo`}uJ$|Ru>>m%t|2uIR$`5%9YO|qfj1uMu9MN1aJg_z}D zbiLZXKwUP=x=kZL)8xYXc=AlLu8=n=SZf6A#uD|iXU}@WRkxHiy!>?5k}XZw^pvWp zswCQ4DwWbzswt+Kkp)XPGP03UQ<~PR7t4cIX_(H!WJ-9m9@#oJLC#G23A0cagSD6p zlM<}&+k^Z5p72#qjQBS_u|8g)FV@HQgE3cP1kO0(0$N_2S_mdab%`1!R$Zi-^QNP9 zZNFVDnLPaf%R7nY$yNZgzppQbnn%pm3l$pc^Y!5Jbh$6YE6Y8(wm;Y?8A!ksvgYbq zWbIAz%KZa_WH;2=-Ifjk_hVYqI2aO$GS0*74`W!E{PnXK)l^nEkj>S6oY_8XLI-ba zkNEryYU3-kR{~9|@p;_eIjUu?tSeHPE16-(>?Rk^&$_7^T!c`U3waN;>rg1fi_We% zZlT31v;b3|$xl#S0-t~;gNt)lr=Ca;!Jn1quh!gg8S=(?`pg8N*UxIY^p8EjmB5dT z-NpmF1Ps?1vjLz1k%JV!J3%RTz>b)9;A#pt3Q-rpEj@?rCsyh?a4Vk|+Zo+H#OnIa zAiiT7u90Yvdw}4YG)sJ-6s@=&dg~u(s95#d*4qRe9;pY~0{4S!Q|(P99X80II&|wZQaes z2%zu-WzYf%9cN^4a|WzE!EP=I@NMOV31bKIEe^GUozLpO6J(uQeaL? zIcB+VyCnh+z?t`GF{_K3U@B=@&;&!$g)~i@h9V1TS(hbIG!?@KIIJ}WwYVoav$HTg zIg9(4@o$;E2n!X++>|iLJD=CUczqqi@jR!*3OJe}$VMikYbF&9O}8~gmC_pUu%KitQwD~Jo&xYA?s|&kphX*=R%~aL2ph<$N>$XA-gGz=Xra*bsZ5UKEKc}7>XwH-sir?fs z$6Y*IZV#&V)J?7^7q*-Nl4+()Nusuz$=If8%amH0VVG*#Hd0oK9`aM5{Q#q}xzTBG za7=+R*lv7Emgvq&<_a*}dui422Kn#y?6g=CFNd8{x*=<_CR(S;l; zEM(zBo}Jncurcq|!NyYU8D_CWTn@u1wqn_~VJfm@>!wU4RkJiTZCN4}Gih5qivsjERhdPERX(?TXrZpigSQ$;s2+&E&NTuwwtSAR1bvjzL+mCG7no&n^ z=&7_Rq=0ym0TpbW>Xc?+kryq~NVAit>oUh5zDm(zS+Qfb_rGEs08=K|sfm~};pR=$ zl!@-(v^Qefi~l9e(St^OE^={e%SMaE))J&=u(uL?2CEvAKA9(%Frnsg8gWW6Z_FKa z8=Kr&#^1NntS;*JItA+9eO~qtsOnniDX_ObT5ZRWL>i?TSrR?R34j3q9iIdRWd0#qsghmokiNA zhqFjW+_6%aUX}ncO)EGdSdYg9KyD{UX{t4ure_yQz6(y0>}vO*YN zmW`bjBvUYDv^N-)^fLB%u@5|wpc4qZq&MS-E zb!f{YD~0dn@Q7gQrXY&~HB&OcoKip{X4JH4%L3TE)Huv}q#b&Ca?Ovm>wsHU3iFHI z>gsN_S2g04DxO<4p((;V?#L(&AB;xBRoTW=x4*a5{)45zqaiPAQG0P7EQtW{z)3sWe6GLA!w`e`B@ubMj!_mU%OM=1 z#T@R14<+Fu*3hf(A>MYpti2tS#Wc)^x-+1GFBc1UL_b(z;NO%j{KcXpx)#E1v+C_| z(i8;)E%7qHMzn*5c!GwxW;tdL&dYLcoaT$=0!3N$W^6Nd@@=T|jmQMLPjxrCO|_7} z4L(c@iQKl|XakYk!N=U?h}`zgw-UL{&WAdrL~r8&4m%ONJo$S_$eW?E8?sf9ilHaB z4JltCIw=C>^(hL9os~CXmNGAP-GetcR`kL&C_eO=grY|!w3s8U99uV0msLYwcoRLV zd72gUY-K@bL2$#t?77-jCQO?1y;>DjjbxfnucT9Jqp=CfG9L+?xmJsBoLreo1u)KzmR$sZlc z3m;#{D!~e8%(3kni?4loSQP0jtUwi5qGH75zA`~htXQ|7KMtSOCBKRhy=0M{Zl1j| zr}felbYbY`4wUnLR2)qZGJ%)=64(vm5d+FAq(Wz)*#fC}m?R8il4?p>mWT;*0SA#* z!nXP%fI=VLa8<>XmxXhO8$bynCCE68!e5a2IIx2nOmc#3rzNY_bazmUC;W=$_zK4F zloCWqkPo4w1g|(1Mn~7x=x)RT$+NxzR2}KVF_q}Gks zh|b1lO9Ug+c}~PydNYPGyXqk&sujTPD3AH8V2`jY!aC&5p${JPu(FC&x9Mydf^hoS=9mP+|%8n7nSs3eL9mP(zez-?WR0~NRf zALZq!!0nrFr2_lsp&e41FTlJa3U8=MwAM5BvwAUJE%CWuzij&J3Qv)#*DXn~^s)KD zLjr-(&1w8%5w7*k8v?Dx1m%Qj8};qQx+9BNuv&8UgylfM$8^@Desn%eL0@ygveAY> z3&2fEgo9^TEzBjznCCB?m3igif$LPKra_%@^A4=1zA^)yB1kiN3vO(XBTOT}Jx2@k zj$t!ASiWv~uMHy6eRwXE?LmDFgy#a;AiV8(szLLr;5CSr$;t46ZklOZfn`@TL{U>kE0a-eT{T5jG$qrZLTK9+^>W+upM-Q; ztv~-mhDXX<=YJfCpCO1#=WcxiU~i8Z%LI=Cj$!v zv_~Bir{NiXJj+xG57iE{3=?0Dpko&(#~`Dmv>H=I_=ibPS>EH;?MQ(TUfYt8%h5EdNdNvpWdDg-)kJUkv<{g%Qe}{KQ)-`yeZ=jHhG=F|H3U;j+Y&k9OtF<-9BZ0k<3FwnKuryPd)T+a=n} z;Fp`H@be1p6?eiuc~U9&ie_WdLuwYc$|bU-Gpp_+QQ;>WP&GBt)_B8kp zrXN+zNxqxbgY}O9sxjBI&> z{@+-R3Jz1^tBM1|2ek#i%H`>{#IDKk@9AhB)?fA#$B{aNv8CqzI$H_Y>HXVcn1AzW zRYC^?`~a`_ub6a$uP>>?Xc~<$q}My)U3F}kxuQ&(*uJAgu)j3tVDhQ0kxRY(&SvRL6Xv+X$Kb1S_)DO3QWv|hsmQ( zYcw`=qg8AEtD0a7{`jiRv);!pg?j@&G_~fb(Jne&t~;sg>;!YJ-cf4DfOod?i#6h} z2V8)K`-9}$Dd_F)sQ2v=E;BTwkr>mDkuOg`vwm^KN4@Hd9Lt;ZMy%@&ke&^8wg$be z^t$d#2bGClU1 zV-VsEjfB~7#J*tit1o6IA*+{<7_Ig9h>M0jd8>x*de6y;|KZ_;HfrkYMvd_z0~w81 zX2{PrwjuV4KrQ<>!z0LFbeb72mq*+_0$>ZHNB+A1az4o_9AG&=JTpJ74GHt#hN&D9 zXk>ReDirwKHkm=XwHjqp4-@vC+t*D2KI#-?JnM{Jo20~56leYW@q+3XT>T@194Nqa zg6M{FqW3m}bh0Rn!ns9#q**B;d&K~BxZJ8%5%oH^frUpW-xD$`wZr!*$EhZAV&9|e z>OTN0^}~QE$njCDpQ|KS!31&P1BO%b0WjQZmFl`n>wiAcC@2SYLfjJuauylv6eD1< zj0QOQ@cxE;hEo@&Oq5Gk3s|#$N24D0Op{BV2%wzr6EoswYTzzB2aoE)K;m2PkVil} zuSt%4)QrCEWkTTp!Et3o>II{e-``Ql*IgR0Ic!inY+&p*`tLSkICxZ-+v`eJ7NZ9H zWSFN|m{n8&mtpuinkmaj$uq~dh1f2~M7%h#iuT`PgLJ1ITwFGinP=xHfEWS8r^ zpGRFj-*{gQqe?esC!Mz#C3Tj3c<|zkEN_7RMQW4tR@QpPyO;jmvJY@*fiqHJC(x8# zK9Z4x)U=mw)wZ=tKsOj6*bC;{P2ltAy^i`%&c&=zmzth)N}Ak-Bt~~gS3!k5A%?GB zWFDeOc*t=D5(lwl`3f@E+Or-t5`+aC97~Z*00|?k5FJ_>4>JX9P^ zCNv6cTduwm2|9q%5&T4Li+h0^C6+=wR0Nn$1zK;PSS~WIGj*+yR=tq6RZ#0$L<~*a$Kjs?$8GEMtk)d z)T{`HQpHV|GUA|%A#36QrZnypJodY;i(-YIV1zp5V^LQ$6*|pk<7#oeinjj9 zB7tTzFsL*kW+c9YnE=-0klR2KT}xYNru^Gu26tqm4aO}ys>jJLWFc}81s@LGBdTDa zCJ_O)HW`kivD9I%v7-8Qp(U7yxSBjKm-b(!W3JH0!&pm&>|iBxE*K(573? zARG00g7J}3psUy(nY1cHW?G7)ZWE!PD(h6@mQL3l%AYNLhOdr?L6lpir~hrhCcZ3N z@^ca)YCy}R(XKHdh?r{h^OC-`xosV~E0}25^a&HSbGRdi!8FwuRZO`l)>a#L)WGWj z(IdvgZw@#DNvaJ@gPUYNiEcpZbQq2WxAwDkP-ArnoueU&*E~oVhI&}n9;w$3s@wkx z2_b8EE5oLqnoY5l-qG3SETv%e0^24tD4}H=|FxH^af&EA3JVXcOVX^+v!;h`L}{rh z6zw1PYM8VpfR)A@PjpV~oak|P<;=dS;7s0+mZw8j#ZklW(xVe|Q>Itp2-_+l(Xd(F5afHsZ%C}Py5xJwffOs-M7DFZ;h0a*nIiWdx8+N< z8)5m%XYs2$6V6;V)C(7boqeQIi6WH?qYJfmJ+n%5NjEP&FZ_TLW;^{8EPT5@PQ;5wJwX}a>b@e zj4k2OD$3qJqHGeF^8cbx;sU85C~Tm?Q57Drh!{RLC9KUnFYuK zBi1T9Y@S!i^}62n@!2n^rM~_`m#D!znGc--eM5j$lD>i3NFKwZ8Z3foc#9x|ff`&} zhaFZ_ydJ{6@oRFk760%hkDi!XVyBl<;~YqmE*pSsT&wCL*uS&&+1<UD;=duNU?{ z?;nCEE?4Oq}WedX%0Jt|TiZzk68*p<*WpG~HJVdxYg0+$7J=@p&?aSYO+D+6D*x9Mr zzkU6+>%e`p3jot8Qhut)Gi6U7^OYq8zA7Ga81Os%^?lq%1rzB)Blr>c$truzG4j8KFEkOSzLP1E^asJ%_}sLI%*+cp#UUfM(mXuv(1(OjvWavrQozWC+E~2fx5jf} zE#cvT;=n&tgLenU%s5`9Ls&!{u-nK-#UA`;k<$~%b~FqcGUH9MGZrO}-hgnckLKw(st0zLPa~#ZsbrAC~joOhlLl%o-aB`RF!_VygE22(FBu8!Xq?_lTzmWy%ba%4y z_lM(NfI}3(iKnysxyme^N=i+OQOv7WT7q;g1y#4QyI%fOY_ju#Up>Hm7?3C$lX?d@ zX#08k{4HmeZ~>s4glSSr@MSSmdy5-jPkwKrpX;hG8-)#gl<5CqK)Aw11e^ zN9l4VV=Sh1D1r+zkd&6jmS))(YaqjG$Bja;VsBy7fVVNJKl3x1t`H#qYeSa%Cc+(f z!!n_6Mb$&J&b}@bz&z||v80biQ`MEnrmH>-hOP;8o?#wQ5q@qxXIM1c#w^fU&}8Zi zF?T}ipcJdg_JgoY%w(We{|YHWk3B5n}%Tv(sPAHKYOuhrD7YCcF!cO-** za6GXg$!lsn&a#{o&4M|Kog&Qu6Ezdxs9_4Ij-(>tKSx~Y3LV5tI9)s)9-I~}aph_g z1For(#menuW{_(QF&77!v9(Yo^5M;LNlzMdKER{WGOrkyG^btDO;^h!dU@2M)k-E!| zJzBD4gXCtT^rOiRs>*0oqAYbfX9e?|DR;?53X%4YfQALKWZ#4%em3cjQg`q zx<#lfgzY|i2@lMKaN_NUeKPTnI#3b~V&kuwvkw|L_KtR_!fW|YoR6`62Lm`kr`?hm zC3gF^ryC7ScQ1u||EjqLk)ngj-6!($M!DfjcsZ~Pv+sIcjrJ}j{hFN-A5`Fp}?%6i)3 zYL}{B?cB}{2!VaT56vU*|lyI1V#u#uFFB^mC zIPszS-L#m~U?

      l-iNpEJCj;;ORtwE}pq@ex6YwZhPHx1y{#UggAcM=Ke6|(fbPL zZSV2^>zVXdJln{m$hK_HjnnbV&n;8}I-8vxgdb0?>ka7rLn4z$7l;5?wlmZ~gsm3F z_-gT_^+P<`Co}o8xYTp^%~E?R0-%h*XPWB2wpa)m>;%nxI{$#WVc8dbE~eR;mUC{~ z_6}hnp|-L6WBvpd!XVDVG1?RBFlzq;W8hmYZoymQ@Qg0Og`i)4=oJ?;lphjaJtIiy z*p*S*7bm=JM;L0YV_A(f@(BRAU70&DTCX&{+^cWd>yD0Q5juP9KM}zfu~05<)U6q= zB48|4RWtw? zW`Y`87>>8q@UbIR7w_D;o+SUtCKSk97#__k45@0D#h+^myVVc9!q5CSxX1J~=IhNf zg@0=C&%62kl-;IJmaq(Ka~+jGvxpe{>CKdTNXzXMbm+~2-*6G2V;*C3laBUd)*e7| z1y4S`iUxdKcC;17lYp_5-4vN4LEMwXFncd<@DHEW^*}#gY&B0HdU1mizZ(ZVEPEfL zf9qclfZ35MO6oaS*%y(%uwP0Ii8ef70k(iiT-z^56d-yrlATYN-CqaE)hiCtW*un| zn7O_wDv>gnxxUX)SaX*ktebT1~ZNk((z;o2cnxa;p#20y;h40$=(g)evZr%V4>e?_+2nc27jv{84k zBLycJNztfIFTdUKX*An%A?~hQTy$zwfea&6FvSo^w9!FQ?$Oc$^Ce= z#_(c>cwr+rFr%d5T~1>tVL~Wik@&5XXrp*i<^pOEKhFp5x}q~^jWL%8$asP8TG1D5k6QmcH5=OhqFJe4T??lgry!)`|rS)H#g$` zdu936U}ss`f3{!D5fCRLDRVk%;!Ahrg0!ze>gXFX;XK4tepD92m~2$ksQn$9xer$^ zVRxhgNB1+co60d}NAd|cQ>jm(li5wRMA@g>nDp+M9hEw6x9w?rp-xQ_0!hJ|E5w-{ zU$sB!>azzrPQ;saM3{Kh%u%H!AgUEF4zOhH>}a&ZN?R{X2v6cfu!S&Co^5%4G|o@!_=eGC&@Kv}$!Dr`F=##K(4?Aji5 z;`udU5ZCv%q}gvh6X!4gVD)0hM@%S|@^+i1Lev`P<#5$ArYJn~nno`~9RqIR zi~+&%s>KXXSl|B_ikKgz&@X#>yfn<|<7WT$67`xDs|jb?@BmkgjeGa_8PapOvRhc_ z@QU!J7W_TrSHUM9@loncU}PXTdo>`eX)Mbjn(}^;HI?IYx7vqye6WC^dJn9dmm?&G z`1*#3?1e{OogX#i7Z*}jSNj&@p9&21W4NWedt9xzWH+QsouS5 z9z2zF@Lb9CGDqJo5tNYWfp}VEVRwU7?f2 zB(qnYs_@U*R6^ZI@lhWqyM9x)%lU4|cPdAa;n%=;GU%1vF6hU+ww-2b5!$JcK0nA8 zfnSP}s0^`%QU%8%lR1sajjU5Yk5pm6ltYWv-&QOMt4NtUXx9_lUFHD%Gyz}8QheT8 zKhE4{|2LA@lSPj}*pwjeDGPy^El})6!BOi8(Co?mC~hppv;elSWieWT2%2%kw3Y?UCYO_}Ak6vU8016#Am&43vfL$LoK}MXAN^+uiTyQ_IXp z*z|PgZ`(%ae2aXQScge_o0!wK0+65X1lK;O)U-Tmzwc^Au9+6yRNeeJ%NO7VKS4P95 zt)4~a$F9P0!9)BBG!SS1Li%HbhvGXRro0r?vs)gbgR4XBzcmjp(dHC1RV#>IkCl*tO*FGS(u-RPnt>h=pCuc??&;oMIm-o*E$uPKsAN_nqD%>>fNwk|Ce zESa(C>isNVX_fQS=G!8DSC92daJ~!W_kX**&|)fUrXVZ*$qSyfF1sfVuhgzI9-))6 zBK@BPNG!ACkRnkU$AXkBvR9gxt|?6mKvd41O+t&BZC;yuG-?{x4Sx?l+1`v*{I)tS zUG5buT;1=)Eu@f!Qy|=JA@lGH1?bHwQhZqDBacLH|HIHJ&Ip5Ql0x%HvwOQ|$!DEh z7g%KKY7hJa+8y#HFz^lQHkPBvxaBUq2ah5UBnB0PE3YRYd=?dIO)$Uk~}{!|F*1(qp=BPTl%+ypA%QMP6?V+~6_NNnP-_AbSKdgGKhH8*J| zTr&O55d;9jTq;>nuh=%CzF{Gya4ZyvPEci|PK^_@?am;KU8EVgYV8*R$1iM=7m7>F zhS*ElGxukaCkb(lfk{JJapo@UDK7afn+Z7MeX)Acu&lxzi3TM@rl#FO#n~o9^f3MP z6e!&rUdvY3A-Y_R8n?0;NEkTn$XK5W$GZO|lO#?T$y*T{O)ma<+Fr{=poCnp^I z9MJN9@*s_Ero-4?b zdh4E^`vCsjDo_k-&eN4a(xS8!EP2=+`XD4xyS1DlbfK^EPm#>B??o}@{4`na%9Z0|E2FO?#-lRZ?Fct<7-CD9$C!2 zKFs*%Ei*=kW@hlt6@%hkPkFfj6wCPkL;@*)xw|yS=$b-n+D&ptiBSM?Vo+LMgPVXg=9efv&B>>95=6Nhw(Bk?x=@p!Hg-Q zK4-=pQJ=4i*%=`@o9~2SbPaYvy{^G_6$-Bj4(nUKF#XrXMq+-fl+r8AJYJv>=Stbv zp(5-H4TIJowORQgMpAt~iP2Dxq2B7$p4c)r(Zew4bl24CMK2uzR!6Y=3UxVYC z^W#+W;!pw}iN5xz5FH^PU5%h1Z?jJ_yIV0+3lc5|9+)k@owXGU{LVLLrQ{dC@6%P!++em}#5wpO2 zY*5K4GHDj-BA8s&N10r;M=-NV7v7+cXZ_Sm*$;p95aSG!nA6A6 zQHS(@y(Ox(&2*Ouo}5LO=ZK@|vJ9-oSXf5a#v{c0ax_e7;0>2LiRw}y>fSmKw0Dc*P(s3cFf7t$N5>!@wz7G5=tYHVV;eHV z-6RQCwkUAGl)$LOO9dL%T4*1@Zn@3$r!iSYA*PT%=AIb}YO-EF`eGxo7wAApk95;2 zi1Sheu|g~nYZ|?SCH65C?{p5AljbA{%Upd)rr(p;ol1C1d__i2CvpbiYX_lzIQ2(i zhSrXK^+VG}>@W#H5Rs-#;OKXFib-kqX7!9zp|>+(Qm&?-i8p@4D*gxe+{3CdQawLw?Lx%L23Rs3c`8Sq`iB`u* zD|}JuX;stjyR5MgpKv`hGVeZprbrk2-L>D%3d+lYH)t$+|B^9V!IIm=yu^jef|+x#I$?$kVb95t5M2&s2^p`8SM!cnd~q zdaBLr4}Vx87#Ae71tA2+G$e+!)RIT6^dJOrM|Z$Q(od>Iv0fQhEIQfgdBF;F% zXnpuRoWx#-xn-5RAR+45bK7m#d`YF^mWp45$Fi%gRxGHWgl+P=IGGt{bPw#vZkX|% zaDzwTx<_(>9_1@Nnh$35_f^4}eYkNSgHI7Xr4MGxcMzBvAhr+uHQ<_?uIcKDqpn%| zFv0elS^KaL^?l_UK%2jw`@MJeet__dz8AQRmhAZw3N*_zI z*Pw;e5bBss9&`kA$b6}U1s4SQfl&6{`|xR`U*z6P{y2001+@^4exE$-@x_S5?;(lA z6-+wZD4Y@Ji~L8kS{JwlcJmIAy++EGX%>%gi1m}$EtxT@T*25L+MvC)K#mP~13J?m z36~>(%l?K@%AY+%*ds1;~7T|3#>1Z$$tTkWUCp1p5o6?Bqnl1 zXK2K{>S@G(@wudh@nWYoiNLig;Gm2hf(d0nC=uzHS&Ziawkjy?u}+BOMMUIGGMm!G4Nk2--q z-yWw3i9a^Th@s{1{r#ZQTk6N5{n7Iuq5q!DevVF_+8FliH7e))gbs&^8?GY9r2@w~ zkP64D6`=$gqm_O7@_jF`AB?^+#sR5C9!JjsWTTY8DIvxZMh$xKxCc| z0GGcJ(kGLnF`8Feq!$`^!&S_1f)tw1HhiD!cjw;s&ol)r;t%nlkx1Uehab%SX_4pP z7g1p^ZWnND_AqQR3a~Z& zpw~wZz~5@({sG|i%>sPR06kBD-H!mk>vx|FvW4`=-w_@9ooTNHb4d=aT$#7oQlGQM z9+!*V4%a)~P7nGWp7h)Q>-DF7hwGkmQ<=-xE|>qWZ2WF5PzM48qXMtdk0s8K65C>t zuJs{=V0uP>pM!8wV)DlQFW>A>k~!)!Pm}-NyhE!aSzl?Vmk7sG>DZUMrmH~z1wW`X zjT*P$j7&kMvuw9KTf!5LS`5{LONX{GWzQqV5F>#I9ceRe{3&EUUTO9c%HG>&2eI~s z7z1&0317d8ghHJ{zIfSLq(Sk+If*3jMGbaA4VrQCpJVZ7LvLHzQ7jN3h|Tk*!iPg^ zUYtmgBYc^4PCnKGfPW8!ASCL4%UMoO7s*f>lw~fue*hf@b$4b2i?X^#G+xg}#11Xo zK^CH5trFFNqD*JCXGxSr{=+0&QK)03wj>&-jAc7k?SV6;TOKs5issSk^PAez77Y9Y z$3f=fys5WyaiIO^6NOAzBZMg}%+`I+-+_LCC%c?WZS4gs>E)g(@pXi4T#5$SSUT^G z7AekSZ?wcK^@7=SwJXm zeuv`39w<{UJ4B6q0cTdbyZynZ-#-O|7g{tu4>T`gJZft<7k1@1PT8aw&_zVQFpv(r zF4EQ_#o@sd)>9sZl~)LMWj9B@jvkew+O35xq?HFNEY6%w1WDjE6Q(!g1I^YMAZo~k zThx}GAURRF2u&{k2MKnZ*@ai{90Upv!85l{e_ZaN<~xbPJ4F@81Y?pI2u4%AP1 zGzuPtvsVZVSM{HcTRVCEwyHK_n`zKIL8ii^bw;7kAjAOL$?kr4+L#C)h1FMxNm&+m zlF6@Zxg$-}C)Z!i#N#V?K0@tX;OW((5pLFJ3i8~6l&CH61RZrX5~2xto*}Z)!|YOb zPf#4Ig63v^{78@7+SThPJF7g%EwZ&v4)U!}5K-%$j#Q$ids6$dhezJ%4Sdc*JFmeW zxXBSrW$yM>l3|xv;}tnS5im|vB-7rja0G;ZPCv{JS<0_@a0^#c^6Zzsj-^j}w6HG> z=b%mI;>ATvem_DjbMWHrgFETX)L9Z4dbN<@d=Nf;)GFaCP_Mh??jF!+?_h{(riT0` zwC%>@TQ!nwHZpx;gz~iRF0$wT3r@t0yFkTK-kn8l>j`2zM35-|lZEi%m*~E8t1rNK z41(_^cVPF`y|ds)?qdT z{?R}CUL7wmPSz@@28vF*Z!ll%H(1-6HHo{3*ug^P>Hjw37Hm0sdjkq(&CL-~N}Q&r zJCwtcsOcO>y|d*{lUjf2c_%0eh&Tio-?3$qj`_XJ!D%IGss7XuW#bSE`TZkCHL7+f z%bVcL0?(_?o2plz6|Si^9!>vPJQ=R`QY3V6ajL#Njd)J`C@~cgg>=lY_@hfHo}C8B zKQ2;xRPeS(kE7*cHyzniJ_O0z07na&-VL7@D_dvb-U2H;ZG?5h^<|4Ggd{=mBgp1; zZ`Q`9Af6`Pc8pvcRdKtgb&gFe__7OI#eW7Rm@&75Z-MWOD2G_3#Qsv#(Xl*Upx($b zgE|S8E;6fpskTY3s{3}P`A=tO4Xb1l;_hXQy3D>{FZ|T7(!|z@ehH=0vnbaL{O8Ci zQzaq^i#-)$k`b(Tq}A&bePeVa!!=}5#!F~mK9&@y_G@69T{pwY9~c@N8-214=ov%1 zi($`hy0b8G_JU|~ZL&oOina0$YhmDq7%!lcM4N~XS`%zk3LTA}|Jzm>qt>LK5PrCx zn7zqqGz&E%A#7(aV)V@lap0o!n|#XEEgh0s@&qr57>I^|Cn3_-?|deJW-v8bHjGr0 z6OY29&$<@ToXPA*WV}>}6BCCLfZ2~yO>kmuR4k)VGZ=X49?jOmPRT1|xt=rkn5Qn0 zIdH_}ymGzXZ^9v4wncI7%Dq&957TaAa;9t^^dDnaEa&@Fr&Qg$-OwXab&!G#(Wc%R zD5yh%fF?oFxF!#ShAokD)0HVvLB3@a8gJOmPLCvlnVSMBK?uk)L_Eaq36K1n3{nFp z@p0gm5~V4n7Gq03Ymu50td=rZeDKRI&y&x&->r}}w4h$U8Et55wrrHva3tJ}Z zb;TiR&zw4k)(89TutOE{eYznDZyerd_d}mRxLFpKF0$aJ?Nob1y7rP6sEpfY6qR0n zyOZTkXy)RBCN3;Z+k8FWuB~+xnfkj}g5N+zOF}I57P?#;#s78E-$ksvF)trllm-gP zi56o9uMW1*BnvsmiGJ`5&HHSO)k|xOTfX9Inc!volc~luqJ^zg{stdu3S7ihb(HBg zKdr@*mbvv#Wzyq?f@UJ6bZr!z&)(3zwO{sfu8-ia&Uw@Z|86zci~dE+57E)}ZsC;8 z4YjO%;Q%agEWzf{^lF*Zmd%!rANoyxuY&+W-6R!KJE;oI3I)_0GMTaP-m1ZL-hm_c zsViNJg+zeUCV3_+cA2CsHNbH(0@A5=udi=z?kn0{@FJjnv*aMChI@xkw+eJ3+u|Od znHjK|)9_5yZvNNd9#@LZtUuK2c?pX7SY=pO?6irv<5gYb!R#RYV!)<(b6=dNyqMtI zT1f9|;|p)O#xXJgS8*-xJF7sxi}PLmKF3}j^5l0y3Ux5(eIiWyi7D3BdQ=T|anJn1Q%fbp{zxUV< zskX`uQuIXUHj78VaT|i*k*LMvm>V;xC4M;N9CCDUscUt3YA`xC?7aMCeDs5sU^nlE zj`dC8eDuSX>|K+5{9eUMA`WJK_Shue7a2>i8#ixzFuBSc!xN}=*N@z3EQ z>Fio}s-?oWx2W=;CKn)nYPXq(wlo; zMRyPL+)5b9WnJR&GiS6C&V=+oq3;>mE`97oAn&B;V(NG))Xa;Y?DRT=@B0AExxMaA zPQc4qdfi+0lTvoNnxqOAKe1`2(RT&+0((~Qd#0>nE-4!g3AA6q$Ch=f;(59%^#>CV zcwVDhszA&3F-Kenn@D!+7tTQ;0em$;(Mcg&bk}Zs=@PbrG1$Q)t2q_f*XEVxFmKRh zxfV3Ph#3FTs=_tGm;3nlQ^R^vAoyI|l><3hiL?u(F3_`5$O_6kWB#@|Stp+QIb_z7 zM@UF_G%Gfd7{xv}J`w0Wb!$i$mm;L1aVk%wy78@cjs4pgFDJa$Q57NQtAeS;gFv%~ z&~!L8EdZip?g7z%3{iWQ=}GdR&@|{%W%|Rw3twGq&aG2qn$@;v9cXNE!~NHMPMS;` zoj=t&K1KeX(xMhCv{$u^wP^!6KG=zSOsb~bq^&`(>g)h-t7gB*6W8{4(kt7xje9)V zgLI44Tqx?xlzMzynjFaaa#R6o_OBd(i&xJQCxzsgrvFk_Q!s0-?%y|-mEn02IEUp< zZ8OKh5(!`qajxK|ga4(w{xo{b-!5uJoK%My{x~Fa&256nhAccgqB2&ut#7^;-nDvc z%j8KYM{_O@vhe?59x^;bsl=d=qOlix0iNgK-POAPOiEyiqgvX2_?X9-r#3iKd@&O4 zV^?h4O4F@j5_djt6J|`ZD=_eRy_t95XPrVI>H8RU?XN3c>_Yf*$K&Dy%g3k=t;*Uq zJIOePT%AkNapodOHJOP9g|46xZL%`7H{(b2nw$>!IJpLF_^h6`#*sd0^??}KqxvKO zoy7&&av^Sb>2h&t6!mO%)zGZ~VM)eH2~R~3NPYAfyuk?uqlqb_(eYr$PaOhb!Fm5< z+F8PKWymo47^Z?k-QV88kGq$uZLJ2t!r92ZIL3|0jiJ zpofs7&U&su`z>RLY3S=Dv4)~!H=#3ESko(4&ap6;?dTR6TSdRlU9mNjrhtt+vGP8M z4q8tKZNc6`edcM>W7P&-?}A}K63>%`2SsgY4ROPY#uKi1VSJxb%`riDiznJzh24+s zQqV{5eIC&q({;=a-{K9siViGEeJwBKRxp=g=cSt@;KrNe_IH_Z%TO=-y`Ei@V?6O4 zDa6h1?TuLz@LoH)6|#X_Z4>xYj9cxaaI(9*+tcTq$=11utmT8bhJCg~`CsbL5*&iP zR`IO;3-E!tLFcPQYfM|d#139;TTwsiEf36{jNVHnUT%tE$y^-xwLrEUwGE_znx3Q( zD`KV&FwtCV$m!r<8wmP|z(P-i&*Rl;f9tEt?ycEn_4aV0Ubol3TSAv_TVp+T9?QSv z+Kq67e*@I39CLdfAzNVPB62a?$!D^$Q7nd?v0P;8STyV4c1{y72u?td^z~P^>=5%6 zyyuPTK8sjx4P0jpC5HSBIn7@j#exn?dJgYYId4vj8TTLC0HOLz3#+4;jzL z&tyV_p^PbS{PgrSj=NkgHo1W_p}`P#5e&ogj5SLC%Bt@8qtI zBS;&khx2j9=GR7>y1&j(6<3JM;PE3Dar$iw={FlZNijwLKtZ{ic7<~fY*~NLtn_y1 zWNDyW?kwyXy3x_v7^XQ*fD`h(YcTiZGWmO;|Hh<0J-i#cu2;0P3qy>0l?SvscICTX zu4-s#C>_N|pZJ_;bud~)j;07PJ<+OC>)W_(7txdl*)y|#m6-X5^l|QDLgv$^m7}`# zdg~#~>JJ%TudeK%frvpL_!rXtpir+g-_EMkcOFv=T)lzK>1Gz#LJUxd6wFn+U)2JH zWR{)2w8U7r_!y?zC>dv)IoUv$x;|zQ9;VwIPp>YqME8AcEj80BVwrR#Yhq|=IH#4Q zvdo$3l~ZYSsQQe03>;IfROaQvQ&;vCg z9e!SCt_b5p)YmV*I0SB8_4B$#ZP059K^AK&f;s9paq%IR-=avW(Hd00jCoZ?w1*aiew{)bCv4SJ{|SS*1CRWUxBj_07W(`2a4*w|G zfXUE(hC)1BG15B0BJ58Xj3p{7h!%{fT+eb@8rUY(o#F2d4Lrp(dbpfwg!dG$u5i)z z{qYGu(b>m)GiCI5BE!^8X!k#a|XGWd?@+bRIp2=$Y zhx5~kyuV1^FHneWdPY{wzY`2pj=;MNV~+$6w;AjtfE5vT;o;+W>$BC>d}MFFNg}BG z4%^F6lNH<9r^O2Ur%N3P!4U{i4@R&r`;703NU|Itj#bTb%js?;UdSyqndU z7h0krbWKsRg$=DtW7I5IbBy=-X)e_F^<(3GgHFBiL(3$szc@_G_-A!gG~DNzmkF}q z)x0@W3BmDE!3UKSHsKvvl;0TVIA64Z`!941nxaf&B+vy^LU}L=ffG7ow1E9z#qB@N zd3L9t`ai=|s6qy4zl-ciya*V-syMe(g48`zfvVfQ?Rg$o1WyB{r*YVR)JZT!D<-d% zF}@^uE79#(4&CW;b7HL^s5#=UUonPX^BP%NYiodYb60UB$s@cg^8(9sqw4pZfL zW)ZJS7+F%;Bn-V;8il%fhfx$fwPs~~Cg%ADmx(*R6o`+wZ;vC2GK)k3aAx2PUC+!DnMLFU0rS zxBwZG);%CebG!%e#x&`IBxj*^Z69OYqvIOEcc{Kn$To1ktt&X!epJ5V3Mvn;1~5m9 zEpEg+HB=jCuZHcnbr{<SWYe>@gb>Ti@fsYbX~8mgF!dWkghP>dSXFAwZ)H1*73Q*BDBGc*AACxg1J z(@%QN?HOQ&I{td8Sl??Ef4S*%^oEexgM!hc>SgJG@9fsgy!KRb$Y^mE zE>0{7R=kCcb zHFFpQNwQ|7&RBC&zAFyeFzzeFTRr9uut2&!1t3XTdAu9v=X1^ne)Xm=hS%5PLa**{ z`_u}WVn=7Bg4+4Zy?ZmAn7&aH6$Jd0l>$OeXxn@w{=JLS>Ue)6^uIt=NnWvpDX3R!qamfQ(oq1whUd z_-8)V;OkGm1l81+faHhmEW?q&?jWp%yCXOD@@2Obxb5Bms5(>%xxIFw^_WfQn-TQ< zunvfg(M~^#CS=uk+(e2zOGW!WEnUWR^K=td8p?9LnzcMkMlBVVrj$<2(tyl$2wk_i zGD@CI7MZBF`g{tRl(g2Y?DUfEQfgM%m>v9T0a$mVn>1GkVe?Z=9?Ys6O@3-5nH@E7 z6G{fLR#^$v25@th^ne{TY;gyz^Q5OPqfrn;wehfBy_T6J&s+rIk9SRb+U}MYlI@|tY`yl=O@b}Er z+woBWSfO)OSO##UuY=BRlP}sGU?l0TZ}{gMV3Gp=9nhu^RhKJoPSCIGe=c-8m3zW; z-Y5SPrRfV$D2;x*>Kmg>L(WwyFtdjL6K+M0rUEWwoHbAx6kz%Odh(r?APl&B1NhZH z)_)sNRa3$ax>ll^B+-@$PR5o*&Ct^RY4Ys@+?g;W2m#n070`=g{ux~Vw(fHt6Tbtn z1S%V}5T7J>cnzQS7HTM6PPpZwn7RI_kJ4glwNB!P z>HyGObO4lEXPDh(E}n0B?As`mxu`BR#daLG2auk%Na`6H-BW6{pdO$Ur}20iS&EPv zNu(<6{E=JKm-~4jn2c9z3qIbX+Mfvw!+-)-_0P9}1Z8@odp1Zg2}ppWQr!=7^Sy4> zO+eYfGW)vQA_7FRKEwOjfIzHwUc*_tOjQDAKsap zbypvDftz@7)L(ADV2Vcs(4i=+2#}Ps1{9Iy`G3HF61c$<6+J?MIyolYQNSfB`*AaW z{I8V)BN3lTD8qjaTv{#{$%9BMkpyWsCdzK)25a7HzgLe4kwy*?e%7z6ykG9`(PMny zfsNsJRAN?*uo+*ajA_p$Eg>;=*Nc?sJI;Utn-{i~L&>6#Wb zRj;WD611{`6+F>vVMv5|Q*^pWjn+un$QO8}XUFWjo?i`mF`U@D_$ON@LL= zC<+l{hXe7gl){*bE4l9x`>Ep|e2W+OafS%nY})~AGa6g`CZ*pA>V4Xp02a;`z|Zff zOeadfFti*4Zi91%CW$zOwrZ|aX1Is^GxY)e5 zaW}P-hZG2DV}Q28Uk#FPPn53KAx#k#7*8bdJMnww)=UDPny$CuBnpJSmH#$XC-+4J zd~);Be=_2FEa^Ap6YArWHTiT~bisHVAmHBU%MbNZ{L$_| zDbcExs=Y3ioKw0nY zZ7gm?)ZmtJxOz1jS!%CAP`V9%@i1!VD70aY_C*6sj3ZQyzAtD*z|x_JC$*EnR6YtP zD_;EvPt{_Tahww#tf+++YbM;-RWN=-iR;dgsDx9G7m}Fvz5kwWz&IwjHygGoK^^f_ z0i#RbuFpkaG}t-4v;93|V12yP1sgt5zvlURKl>oh;u&zaChj?d|xkMH1$t7iPkX)uP1Bp!r^Z$8qO>Q&#qg^s3X zx_Mk+tEIzQ1-UGDG&7t7Q!`(4q=UD+t3BN~8#!JjIlk?Dg@Y@67k1GwhZCCU=lPz| zZj}LhyCdLZUf0cUIiP!oq-o=!?sW0JNev;$0KnED^1Nx1L>ge$g!_~|Fy7gWTx@sy zx(pj<5y{9g)aF-jJ>=x&zS_id-Y{!~W_~gv_sh>aa;^`t{}Ytc9WI%T@47zn%mRVr z6%{h)K3{Co@ab{HM3_a;&%#JRkkabocJidBdZ;h;*@jLQAB42$$z71<{pc#SmEI32 z0797K$==?ylbr?EesF$kE-;0YYP!DujTDRr}~!DnEr}vY~Q#H zH{?9uwc!=f_IEyxaK2*tka`T(dU(?oD?gp@e;7NbSYdc3Kp)$-ZQHhO+qP}nwr$%! z@3C!rzyE$W*^4HVNz+U(+D_Y@=asBxvvGJ-}%)#ub2f#_Q#0yfvPY_x!7fJ!0FPIS32l*j%24>JQWOqKsvy?F{syfB8ewfPP7@v(w?ar-^gk;wg4;l zB>C4E<qW1~h6%Uh zvNyac8~S#!7198*?FRU_Fg@xj5ZTq?$99s*gq>c9`I>GRIyFJKY%B`E;voQt&NT$f z1%)fcpmZ|_Ey6br4M2VvKpldQ04OilP*n(<0K$;$LE|{WLZ%IYfE&PbptY}AxuYB! zww!ciNeO@@*~kq!GDy{?0CG=(WK#%0Zrg#4fTk>vL;!H@SS$zl))LG3Rao^v3Dw12 zhGlFkEiN*^YfX)H0U(S@ZW{{BU53HXTARR6p+I6ceqRxQc;13b92%E-gjGNuhOH*? zA0Dw8iZ;OTA0!WyolAw{0xt1AK#dW;Liu|u8V{0i0`Q~cHG$)`B%&Qa8WCZDaUgn1 z_rP|5$#n$LcE$mLBTA4MgT%MaY-5&5T^vB*e`#UG+;=M%;zRviG>WH{Y}`Zt$Y zBIcCCtelYLEtu4t=|$5sCmD~TEbPL#dFkm4t0Jt>zjk1{`CShP@}_1udWJ+El@k6a z8q7jlv^3;L?)ts0>~xHHG#ps8{^b6a#(8~v&v_N(gYa z_yhNue+7!z%XQr(0VfmvDYYtF3lYVVcH6|<$rFI4MBZp!HwO^N^R*1E4a(G_3RJX?8pKdkRn z>$5dAYC#+9a5f$e($|lQCmkFz;=0emIp>j+F-VaqF=>%XQxe$_HOn|BWve`^N~DtJ zW&aK}`8b-^31k-Ey>PzYhb8aV=Kybi9@;R@5BDiB0{s3;`TUl$^oD!|ehXHAhuGhX zenOog{U4q+k>?N`0eSc4X+lWHOr)b9|2De+-L~19?96|nYP7bey+t8ax=%K?S0=Y{ zVwZD9c6Yz|MN%R)Z7P(|Np7k+J?`Dj01ya9F_m)27U7)btf4@{1Y`o94jKR$tl^e( z`g3agTU1zMVuxSzQXtF8&lMEK1_zT7#h=c+8t?KXaCkVja!7nYeVbf|hdD*#v=u;i zR^x~ky@{FF;ovpGC!7hF;-tJ93#0=gM|%CzDJW^2e}Cx3Fr*??H+o)Rvb+_-)%Kay zi~OzBw~l;732BYKU2@HGbld65Bh>?u(`NYPl>9KStF8)bU4`C}2GlJJ4rYYk!MJ2# zGQJgFEx$u9i0XFgEO7|uXeh2rDfsvG_}Q+-y;We-Utc*J*dG~umEtN0DDW=Ts7HZH zwYM!(-*~B@b~^*VbN3WZTR#YCbm6TDlY>G}Dq@_a-pIHFu9Fn`EAMtCC}7M8Bj9HV z=Xfuhj$E9teDW?Z_k}HCg@?vWmoV+w7tCn!0e~s^DP-Q{`>gJ-Q$%}J5f;5%!Wq@R z1VLo1cwCS(T3d*v%-eXlYfL4o6ZM)v`ly#o!e(6V9&tUC)xVqn8XK(XKgs^#iV zGfWEM-i6n3^OAMdK8`~KY={s;=zBoC2I`k+$GVJjJ{z-*f}Xz#B@dQ8j@CR6)>wjG z&idDT8R~vcqF4_%O^WF3!bon|(oLgRUGtKIc2ToO;hqfdJ=bA8$Mv&Vvwjs*yXyeK z+_oFz4z{f4pMR{kljho)+#*Htw;9q~4RA|*z3akt4NsH&CgZ;C?44U_3_G?g*Kh8I zYt6DjZm8Z~DzYIIrmwW!9ktJQcsl2>&ym}=eDN9|8t({)zGiu*kqLtI#^sXoTQp1e%O1qx(4|gjw5bR+yA^uZ&Jo6>& z)**jHa|g|_7i6LhMICtTx{eUx_z{ z+&<}^7Jg|@Q#`f)@r-LK{j=Jt@Qy0t3!?W?V2c;Y%T=3d{@^>wXipX8?ea>sT=_0> zqk2n;$c=R9o8`jUbkue4WOsm@M1GR2Tj2C4RZZB=P2HTf-3t9|QiICBeI z8`pZLyt$4w_py>WVDgzyvbKx%DgYgrU=$~GkIP4qbsTXw)(Y`%?cW$yX|Hgo|GK=&H%POlU$#Jw zNX2SLCP4aXLA|aw-8d>ndNap88gyQRDU796f7k)(GY>|m37Hm>-Ktf6{Sbwr;Q;0{ z!d%M_G;$cZ3S(=dwSYzM?>rLP6N%Y0=mgM_QZ%1{eO;t zB$$fn3tBevrrt~?Q&rhJ+v};czJ#}#H{X5tX-J?nV?M20T=aOQNCl(g3~`0>6sn46 zA_XCcy_aLi*A^OUpqYI|IgflcSrghF{dY&_wJv{k! zqlG=ks05L!>*`tzdu>b-U&*xq^|&G#+yu~C2N(XbUHYRkb$W-BxF=$GAG)xvYGjIF zV;AK2Qx3JxsNN@Cwv&?MZJB6NU5Qudw!NS@coKOhsjfR}iS$_iLxf03C?Tt3P5AZf zy;&huQmsUbxpWC!zpdo;Y^^qLPCtqk9=)q@H2Tb|iR*FQ|c z^FECno~%3t^?b1d*b2HP0N`r~%z|J2P<9WisSwh|sGmc?0!aJp>t`ycvz|%4EoSb= z|J?p(ZWtkeZi7o$8e3i~c}BTM6Wc*P-S+wLdWiwGPODOYEwpLvH$a=!<92YH&eDP2 zA?wa8{()B9D}9a2t!1%u>g2D@5Y~;J@%?0mg6m=ntY{3B(NUFn(0zxxY`VoKRE|;V z8AoAj&{nN~f1ox?H7+u1jKiq1WGZ^WU?PNHkp(j2aGWsVFHjt6(_qTMCnK_vx(CWP zLiky9O=5|)@#xzRW_Sb%HsW;@br2I)uRws#$AlHZA?k(L%z?X)w#~$#)B#}o@u0cm zO}rS~%lk1|$SFn*LmY~-r30q9DZAS31R?*Fgv^+!Xo{1N&)dP8s{#i6hH9oP5J8*U zAgDXxXR65hfoG<`53bP{rq+J|t#}1$du@i;!CRAZg2`okbwmq5fSYTto51>6T$;J< zmVDGiw^vZ+%203`Zw3@)x$8h;U=W_vTU_mCtx0uVOaUs(upEc+5te|3s#*@dA`_^L zPf&&a5mo&1K~!dazd}fEMK`FQOH{v^i;Edy`ta9209SosVLb#~_Hn7SgBA(zqtGRz z%mnfd3L{VbSaFR-OBcu_PZE=E$YS)4f*Py~d!UL{!}2xW?B{AAkETwx7j^LK@sfL? z2&-%4Ju^jw-K2qYd);~1);3x3)|=GASBg&q2o@V9;?`JUZ>RtS88OffN>4N~*hSvO z3d36LMB*}LBRgL7!0@5*5Mkmnj_LIP8C_Cmfn02GsAjWe zN0?}iX)1B|c2Vd?japv{qJA_1D()Go4%|i@y?wCMA#O_OrLTUh6tC z$sYSlvs5M?Mm!Po#S1FkWGI%icyj@~>IT#249-O2=HR7{=v<3sQS=9nuy1aaOouu- z4cZmO=*LH8rlK3om}1Fkp%BU8cvqqPCW#7I-n~JJcE2dXV$Hw%qpVP}uFK~OJ|q%2 zTj@OJ`ijNriSt+n$AdEmHdy2v2Q<062PH_6qwh>c>65IB3k7}D? zQ=6v-@2Fb4Q?gZ4k9LjOFMMh3S>L&7?LO0Y>vp!&)<2|cL@TG8KP(NHW}EY9DDq?* z<7_pp2JwS(SVe?nDWJ^dK-!2s64;m-OXM76Lql1yHlk zmfR`htprf2xV>Z(Zd{cbW3nK0oqNi&L^UOOjExW?qSM4pDPF645*CWj48&1WwXP(k z8N}>c>uioYlJI~5XxuqRypp9=Qd`bXVV?*-p4F&cfs_#*TWM z*WnB90H1jS`j{5d?XuF~GJ!Y$`|0s45NwToz;g2EfUoPNfPnyk$d63F^+4mR#_B(r zOL|m8Q;Pz%Mz?nASTG>)EP3wG=I$aT_- zE1RMRu^q~!D(`Dc&332DOMM{*#b{Qy*KL@G&x~3h7z%J z#M|^0Fk$_`6)52fvF!&asd@qS*zP*@ynm;~@I@^sxOONV7psW5t)VOm+&)FOFEckf z%!75r9uv(gMW6k*gF2v!hP6bmMB9~MEe|sz(iAh=$#76(W@}u8-~7BDW~@mkf~lz> zDrFmdvm0cxwp&lCapa8AT6N&oAFFlJ*)~;S>j-e`8>97~5iweLe>drt)CTL|!0ooP z_&vn%yNTd;5||27pu%`iz6Vl7<=YS?o3GdV{Nr&Sx_w9_ZMPQ`C_drI!nRn6d~w@= zL9Dj8GB8oyUo0j%RsZ6XxrOYoZBnLlOQ}d3Ckq?JN{?ekXmc?@l|oBMN7~3*0~gri zAFJ-i{fc|0vZa=qpR4LwI@dM5QjhOMJW1VKeQx&aN~Z9`FG>oPz>J$YKdNgaG^M5D z3PJ-_bA+zyn|6X5H#8`CH|b5y791^|j$N}4Gh$xOAvLw!G-{eeKCVqdj|rPu*RvN< zqa)4kj847n*KuAmt_bX_;QBfhCaUt(yC4gff3(;MP1J#^xfw@COE$f4y4J6UuJ-2U z^MYfBNL2Y<&st5}W>_#OginW1A1&#U{d?sA010>yG#Xk2@B$FEiFg?LFbt^ zo*mOl!w#q>(Hu&4)84Y!cYb%pPVx2An4o9XD(!7=x3u6q3c2w2z(B8QKyTk@d1wm< zwf`oCT-h?|$f$lQVr%AGC3o@QW_v4r-5%_%Kh>{}Vo(l)w!tdy*=+0_w#=I zJb(M^@tIP%zCOn1=ks%$x)$&Jy1%vT_&NQC{DgCyE-@#kwIU(dVLQY4?w!C(aoC8-b(jkGsPq7 zgAjBwY+<61+ztXfvf|VQ;!)hPAGB-j?p3tkW*i@Ovp0j?-ke|&E8bjbpy6X3vs-8K zDqGE;<-#ooH!v5bZHY!~>B-sClW_0jYUR-}mpM+On4C z+dD(gNfPEvuf!!sn&IeUH@q?Fvw+_1B`oU;`s0nusU|N3_J|Tg!eG^lqQOE5+I~#j zX0!dNNL&Ll?8xtS)I-tr4q0}NoH202XwTuOYmWFDckK!$={v+319>i+0)$3xQ5BOq z=bVsB3@O`4AKc7mS7Zc`u|ZY^$qS~w9y($o9=MpjTkw$8|=Q5$o~Br&{)oG5x!)Mr;< z%MUQ{+L>Zy+x-ARksNg+C+4sR$T(9pi2gK?--%4gD4!@4ibLs_kjx1p@I!MFfL`aI zk^BOA-iLYK*QppBbD>Yg$SX!+BlAvUe8chRX58UylJQ&3s(R7RI6Sy^`l{;&9Vf=~ zzT*>HH#K#L`Fh_T&CxP8wi~wCK=bFbOmqE!TRKper>T z!J96BGXVkY|1t?#2V1C(zL1unH8;DMMKzJA6Z*Ri2cZTL3^{BGQo(KqeN=@5$7w_2 z3)2asz=Sn?^x40_PYfRjX#889{@s={q|V(1Vx#BJ{BpBjTjPO1)B+TZ7lNp@8o?8E z3<-!ljv)7kvx~PbYt|%}|2y4=p8YQh@bf+aa@;jY!KD@5^p+=z-VZOn2g8o zS%O`DX_*_NP}h&!@aRD?cQer(TRrc}sVAOEi;Di0_#f0Q-unDZ*<_x!T0i99pzwMM ze6Jkxukn0goNNs>Z^pI1qBrA{q}b49jMh$>X`Eq^tCi-?S_LOwd)Q3VzN|Bg9qjYC za`p1y8C=hWHQ-<1)KS{z znZd(Xiq*^oNulAmQ&XMBPg z*$3kpBp{ImiT8!VRcm((%xVx`5uu_k;393(PShD}AKKK8%r$m(=^q{*^wEX}AY{PLKv3dBN5fi>WgKLGOSQzUMZ$oanAJ}0>;*kv| z9W@nU_=b>V3f?%j6O6eXDj+iNj9|%i&~r5*1Qzc;VQK}dXU>VyrK-svBUXlN{3R?y zTeB;l#X9&Q{8K-<+QcYi=|@Rev|g6bgztoB2lJij{~^nGc7M6QCf{)2npwe~#sbKb z{kO@+rztXIkngMx-F6yz+rWPu`}Z2njs^`3-ab0cIEw2o{w*uIbDhJF9pT@698SQ- zebBm;sX1jgG@GAY-`)IcjWxF*LIc*GiPHpl{b~K&sVL9ClqK_D$p$AH6nqNMnE?+M z_u_>;236RFMH@mf{z!~KYQE)|{g~eT6c(m6VujoERv^pyAEpEw99&ieZ#MI0yvLKk z@&3@tG2s#QeR2aH_C$%(=3vt6|MEONZ+rgDkXVslLysbKHveW6QkkL=J1ae3&*M+JuLk!{kzH?N{cK=&Oz@)#fdab%({hn| zRi{*Z>ms4eK_}gK2iD-`J`AmWxw(wTMWQ4ToO6^5`SLewE%^LJ7m)-Tql-n#m>C66{3v1JXK z$bj#tG=HR~5L1S)`C!M8Qd}?cIf?XMH<2t|zsfxMYQY&Wwnm(%q>*;0J)2yco-*p6 z5(MQ$s7?tWE)Du6BK?^&x7KQF=kXh0{NOfbN)Ygg@`J$D6u%$5!-Ir;P1-u)LG*Jc z4{ZjO@!XkmM*o`pZ>Te;f>vT11Hds=?ND6{{G)0raK_lkApm7WnUOLfjvgrCNLBmQ?I{{{sBq9Y;Y{H`$^2@>YTSmdBtZlz@|Pn% z90-}=js{v?ohA2$Xcb{x9gl;nIO)L=@WVqyxPK>V?wG4ODvsdTd{e&9+}6}#2p zp_KZ4v(7C25F(Kjtf^6G1cE`hSn0$LkKS$$y|{b;Tmmt5B`O2J)nb}>x>ZPp-n!Am z-V%!(?RQo(Chn{XfK~)j1{&ThOuEXjQX3Cm+008O@lf6skf{l%z2K_yG! z>PUHE*UgF#TUUn&dY>Jp2;s)?+HeWUF`bkU9l((fkYy5t6OYg<_-O)JViH1hfRpJA|B$}*gZ`xN{aug#ir|<70mu*rK!7p?0FWUJfBieWiXZ&t$7VBoFJUd@$*jGdlhGYpch^z!vsUrw3gyp1D7Uy3O@Yx^m(4co&* zB!Q;wERwG6N=c>gN0Mmw7~vPFkCS7_)SgK4lB=GIN|$;cEmHWCBV{?x8y?bzNMqFJ zz6~sCQ!p3O;b3DF@mjC>glZ;#jf2R)^Kl{5@_ZK?x@Fh!z=^tX{C0DdkIwqt!Th_aebIAR`~Ck8=<~h&K0V8E zdQR8%dxtz;pOw#gpKI;=e7~yt^z(YQws-J(osN2}&2gFT7Qg!6WBS%L*?D@>+22gO zUr)6Cn(pB7-^-ijy>EZg`@JzVANEn%cfFVI+AQ)PR;w@)}kz#&F6J_?w+CJzn{~}*=+Ls7Uypn?6rnYOYb&4AAY0%{N`rF<+@JU zF9K2HBRQ@A3@4}B*W`ZN%t%KKX}V$I{rq9 z?R-pbr^atho_@V|?EM^dtu9;7;i=;_y@$BD_uNlav1$9}udLDM`PFq=j>hYA?^DhB zgy2i#`4)I2ay;BG?d3XM|2dcIzpRw0=Kp*Q&2r}^ZkjHI(O(!!wd1oE|EBR&ns3XI zQ2%kUmCoxi_qgZRaK0M8WKPrna4Cv!_x5|dn%@8PDxbIGJlh73|2)R_=QugfZtMRr zv}gN$9OtRYx}dp${xEk`{(@@ zx4!K+WSy?(J+`ZE*I_^9dIwwYjGo^y8?3>;97UCd*( z;lByEucNag?(`W?X8AN;!2@bY-TvpLzieGYxmAKDjy5XPMwheX1pm< zvh-mLKlT+)R%mlB^0mI;ALX$4olgLqZ1TMx>F}Ni+|5AC%TpRZ*t%C zKL?p8CHC7_(}a=@fHR4^3ACnmE2QbQ+Hq9E-b1{3CHz0EsXk9%eMLnu_gLHR)4fK^NNs1T7%^NN!4orOHW|D%XI zxXoLyZvkT(2%BqJC4>kw8H@&Rnl}aUg&5$ta4=u{C zK)SCMG_!C~Gq9J0m*Nih44&>ye7SCio5^d5E_|n$*2U))$G&N&&6voVdm3EI= zK-jIQWw{7z87UepNNP)dinw}gD$-61&z32;Y`zB14M?1iy@45=LDfXgD(|ZqqaY#P z8zuo1)9o4Go5Bm@9KqAax&vDPHQAB7ni!$yHc*PNfO^@XipT^TOl4RN3V2Y-)cKNg zJ%D~XSd22MsL^x@X}$3v+wr|9UP;H7(t@?){@T=#u3)|J2)V{i*UEG&$NmEy9zW?5 z+LQ17z=Q|>67Tp(zu_T&|A`gZe}G&wADhLj zLv0Ahbf`h+I6i3}wJdSkKl)&-(0BS749RbPE+n6sW1L|#A%<~sutKsXAMi=eva9z# z;jwNXNsO(6w^Y1@HKa}HOaF<7SM54bvMSl|)5EU4r0R$Bh z1Co521o_X^pWkcUE$A8mV<8(Pg>_RP=KrA41`LBT;Est<;h~i?_X3B&yQzi9H~PAN zh>RT+uYY0`oPYo20Uv()Qzx#a@}Mhsq((Wtlw>7aXu0Ds1e<_vAAhT1wJsfR9uv>qS>bMMxKbF?-b zW%bUzX#7%+ST*Bdkl09yZH+k< zRFT)ze;z|ZC!$hpTC>QqCQNrLv~_I<;uutivGBrN)ab{}xI_&@!$Ov6vv?aSqCmi9$+xl9Je}3LX9fOv?)AjYj|noj}ez zgNiu`V26-d)FUN9ONTPIx!)ZIbWMRQ{+yR3z6ZDy~v510l1IUi%Q9R-V2w zxjxj_id%*C0ClKgq3BzBHvzNgounQ>5=#f zAIQ`0l4Lb<+DVuPD6ng-xEwLzN*1E5uydqLUnAxHaTG7UJx+ z4m>D7v170Eu|0PMXKpKp38<0pe^saxD79#0OX_M(WGj!|R*)hCmn2#d!(e2@JyO69 z?IGeam!bz@;at-;bpQ+nuEGGyDoa6Jk(WYXQ)L6OFp|kNuHBzyn$qaKwMgwMwyofn z%Cu8Zb(;I4|WD}hXsoQO*zr17u&v@>zZ zs@Dzcz!INqp-7`7=3P>mGp$RDTOn4~8_}n!)lsv#&_In~OQdQX&W&X5M0 zW`#}0#%phk=M5%?2ZuWglMQ;!Vgaiyn?V;zAw*6YHSP?5$zZW-Xv=D8FbeZ^-@KRb z>eSDdJOXN+(d~To}9}2egw?L_rPgwssNR_4C6O(vtn}HD-U>JHFB9`HZ=%6DbHE0-n&<`>q z-u$}|x#x6+faPd}7>$dr4ba|35;R~6CsqNQO%I7gxg7RKnrCaclB{J$?yKqX5LGXj^1Ijdnw~(Z~G3`w$ z(xX}lC~;!qfad$FZsNtJ!A2>X8UVL(bJ3NUkp{j54Lni`0^TC!GfOjPJn)YyWSjJnTOdPF6@EmRuA6UNn_f zKIknSfaB4@JQC%g<9GsA5Av8qU(Lj?s7BONK>_H&sw{rZc?Nub2+3^JP#5k%h*zsu z6{*!sw$P-HI>B3O_KFqpRc?JAb-xlsShmGKuGzk@#+!t zu@5xGF1tvkqvCLL=j4NIlPJCcHP~fty801-6W6>IdPPywenlq`53L2H>ZYh_n%Eux zu*m!Y)#>fK9QS0=)CXIVZS~#GkIo9XVxZLxCq>3}eaoevDGGWko z8v|7kQ;#rRaO z%WH%AG#y(=JtfxVJy!QE8!8b1u}D722zX42-llei{g$*-30Ke#`>#l!TDdT2e3Su( zEP9~^*N{zNm}%>mDLDPf<$9EANz^(XhPkvoo4&u+6DS&sz5%Lz!6c_$*GRaqbwDXtnJ_!-J+jPMk_FU&j}p^f-LVEBG>#BOSbx7$KZOZ63OUz(Wfy2y&Kt0`3m{GdU?I{ml-uY>ruC` zfhiQ3YHUaMkrvctNONh{JW|VDy)aF-6l|+ekt+Q2k775khCV&Q?CQlRL!4LeRYuV% zCN`aZ2M3`i&n@X?M6|j>9zeZ4mptO>w4uU4#kXvr)AK~LRro+^Ta#gx7QGi>@xeAY z-Akusfmj+oG~d?BQI^8BUx4d>^+ig5l?y5<11QWfQ-l2krfU;brFp@-My&n;JVha% z7_EnI#`LaMmNIwKbSEJ)v=%TPT2?iG1|Rhqf6OSn5!>dOpm@cJ|Fu^j`P52a zmvzSL&+FuP_`)k=X3L2=NELKy2_7`wDjv-U*wx`dA?xOjcNao_vqfiAg-UEWH~qGM z3HN`tJ3s!`-}WI4Xb|xPhwpK=&?B@`G6!HAj+kT|2Y*+u3z4t&b$=26!K&}~hz9-L zNMyDj{F9Gei=8sqQ=r0_r2|Zh{2uw~tP=kKNu|-}(GYBuTjhS$HT-W3e}j`mXZ$-Y z)b9v^SKzBP0|kYq`gKTp<{f*b9ni4!Z~2=wZwJ{N{~pXb!KbB-*$q{$3h<3)2=IjK zOd0UOCkE3_2sp6B5XPAi@qiEcH6CFre`pd*zoy3@-3kbEt*EFF{ICpCn zU6bGahoxPz!Vyi;C1FRUWL0%e6j+dTX(n=NQAI}9VLBvHsDp1x7j()&Y$}MM_yN#g zl!N%k@4bgaESW^QLR_11qazlCj5Iw+F2$?5nR{^XC$DBcZ+24N?N;rbRh5&ugBzw3 z?+`C@7X=aT_%<}ZO-(FeEVOzM<%cL{B^JS{ETEJ(D9hK_-k&9XS%pJkZedXv9C4{7gNLe zV&eO3TpUcz<+(&bgM$mnaZhtGF<|XZC-2QKt8 zwBf3Webu8p4pU6-yi<7?-k3c@1ex8bb|B`c5mRH3e#hGA1<`xFmyh!Hy>))IT>V$@ zyw~hI+%j|Q=i|R|nZ5M6IpsA%#PO`b>GcAB60KvXSu*4V&HepbT3P1~t8p3L$C^#V zqnD#`Z6WuVZ>nqE7Y#O7abTPr($a~iwe+m!n;q56R_Z7h>O6a1Ue?x-YRWB>$fF?% zG%p>QMrnyKrWz5kDqie!Pd2S8eUn5ms)~4}>5?=Bsl4niNp5hG3|5RHA_ZHk0rPvs z70yL~l~A!OqHT=}<@FLF5_D~0+%S2vgGF=b07d{<7J!sCI#+9!IHnJ*AWBmvP_z3_EzyW>YVraJNtm5Y4XLJtDuA#CIJ=Rc1+;l(-mVvisXT7 z)L$ahhX~~*eW2I!5ihrIiOoSxZ!ONyzBljB2J)f(@q~nb#^{%wB#d|@^zW3kJ2~PH zuT#O)919Q3$|%B@!k@0ETLq(C{|iO}Tn{#So~7KBO?PLy-=Xmib=gN}>vwn$ou=n; z3Isud`nL-6E*SIgm`V$w#Zhxn$Bb1%d-nOmO08^wDr7~1r$cWReYhFIJKu%(F3>Fs zNKJroQjG%B4LdYp$xEmt=iR`Ja*Crf#<(VbB14B|;M;(~6lNHDH_#~mcvZJ4LVBjQ zQ9k;s1VoOAA#}7VrS=h4jgQhG4Qf&chXkS$FloRcLJ8DR6`@42B0SG=^~jhsH@cM0<+HI?UG>QFnlZ zAjVJ!?vl`E&+icDa|nVsGAbmeWPll^?ts%8#{%e%b($DCUV-Y;B><}{vPqFfrAD!a zJl3t*WGdfR*Zk`ka}ZZn@6ez;~rRw@#ttAZ0E z@;llEkvv_$l3Oni2}}261sM@pDx2q^b(j4Rm72G>6ar?V(gz18d>ou)-hMWjBNlJA zP+-@-4Aj)lc+HLZ#7$HC&Tl7hL=QW1HUYv4>y~a&FQvosBPPZ=aboke@CqC}_ftl{ zUJz`5Nr;v)?yU0*4Hb9_Gb;)*Ac2FW-I1yB{WvoqXPyo9WHLNbi|GoDS;jX{<^lm< zkdm=t;5oZ^+`9(+@76L|%^0u*2T_O3u~EgX6Hn~N$4%-}<4Y=-kEUP`$q04-Q?4)- z)0IVOJTQ%pWu^o*+ND!QN@b|E9#lp&v!2Y9oGPscuWmJHMgzCP;?gT)B8EGbOp?3} z%ZN8-8b=1KDAJXn24HQNJ#y-pX1czMI}o@goW3)ML?-iGKts4@vsuzF@l_$Aygm|k zEKF1Bb)`N`BROaj2zy0VAgvFtZ7O*s@_#C00|Ic`;%q~WPp^###+_IjJlRJZS(W8g zqorv|)B&$|x+0#^Pi^o%C<9&}4=k}5V@q(ZyuLC68nvfri?+);JRu7d6Wyc;faPc-bkNe{J zb^Mfc15H=>BGiE_TyMZCLHG2e6<6?i{h9^%HD)iS0M^Mgq{tXAG8n)T_;QngpnsCB zSdx*rS;?GF0tmSfuGJSXvPdcn0tu3b!9=migd6x;_`Yt>K7YsO&&MB&i}HDRKPuj!UYf5^SK+1m4{Pj{r99&Q^h(TCz#3aHIs}1N zpb4}D&jnS6Eb($@CC7oi7Da@t3c!iv9!Nz*vU5^Dj0=&5r*&zyQZd&KIC^Ccb!&&j z=F*81nk^~;SyVutk4(}GoB%_iJ?h+ApIG9MFHyBlBXy`h3&$EwV(>Y@$Hnb#$P_i< z<>TPv;H?v;o*e;T8Pz?Z-t3HkJ|%H)kBf9N)b@V^mX6#%H5ux2}_o7Ne>sCh%EdqdUZJ3(WYX& zq!_?Igi(9Zq_IdbocWSr0Dq8scEB1vhGuqAlfc_9;Tqm7n95T(32=)SjwXhq_*QUc#KX<`g5cdtR|UoZm{Q2iL+~TCbmTnWZlxzmslg;nBU=qm|cf#j6 z;Kb`I+(nQf;6gmi&h8=}M_hAnEgd|y>~zI+37wM`*5O*r8wJuVp*mO{RrZ+o7V0=e zpK@89lW2K>CAO>EoDr;TjI4AR6td}{ioiJUV%Bw(nP#N&YqFJ~y3&no{iqw+P4Mjr zaL^q{aRGOOVrfVl9j#$WRzeSkazPq4(<_gi*H^Yxg#gTLi!IGl=AqB*l}Y6M1_0(t zHB(3#eR5nDFNc?ti_f*|giAb^IwkDHDh(HaHbD)`zET_^-0KoT&qTzjGU<>(RO1md z-=lDFDH%h)m_P9+RZWFPGh)ktPCmKw@qXP>T->a2er?F1CrY)Ziv|s~y^nV(V{Sex z0JeNSof$XQt}>W-1R1Xdg5NBWiW>KnjZFOumLsv?5->KARy`*4i6HKk=`GbBABHk?YYEWbc8#;wr1x*{DHvK(L z0rmmFVu`+zGgdCRi4KsYkf;vLI0F#IeoXP#ZE)?YXYK0;Dd(LUgCp~$m6l) zz}PaNqD(y+{C&3&4cP`GUe3tpEpSVlV#kMy+lr`H z%IlzNBS))=)`p5(_nFAN2F32|FI?c`w#VCKQLtWSB8XEHq*((fgq4;?om8PPM>F8m zb+pIxU}EN6l||Lb1e0VYqbS;-$fB5Zbtg%8%Uu0`0#7oq&0@R?5mi0_8A3HGEuGbhPWyG~&c3(5zt4~egJw0D3EfS{ zvQLxw7+?;QVv?t1J&Xnxk`NS}=^!;uCbL2rj?z%k8Fncf#y08GG?~RTs-?`;fpYg= zgl~rzq0zZ4#82+w8@LFhFhG4C13x~4aSt$)>*vV7JEZWZWisbU^iD`5bG-~vJ)&Us zvsxuk%>&`_J_eaI1y68%imXrEsPGe1BA{%6G`<*u?=;|HH>7aabt_uGNS08~GRwtz zt23bX@aV`nHo9EOD(`l`Zr3KbL}8&$O6^_1(4>C#3~ADg!&UTAQ*G-lx24myrnuJl zM_%#36ES)xDQIvwNl9Xj^1T*klNBmmwc>}Btpcno3I^ir(Hy7ugD1gZSf?{vts6iQ zci4b{A}Cbl#&8-nAf+@?8}szg>~KJk(7;7>aXRe@4b+6#K$T%+9RcBq z2ASw_jcAvyIw4QM=mm3qx_G&z43PE2^^y*kK$kTsnhn^S$a+zkG?axv3igxjhpxbM z+Owe`PPlltxt&^tnJR-81w*xE?6W{r(Y~$fvLq21YWV}Pn#~ z#EFh!v_G)bBNY?=C9Pk=&-Q!+s%JP_} z$>Yu%4#CCCa&0oPDyc=4@2bap1CK4&-O=iQh8}MBE;%0_AGyb74FVHPM%Mg_Wim;p zV6;N_yoAY!EUmWt9=o0YDZIxmqIFCKLh;iS`Y^lftH4@*YoTV3n>huSI@UukJf7V9-7~1kocNJ zd?{zMN*wrxw=Ve=%qTih7|rRYg-S<*ZqC+R6pru;g!_m)O)CP$bO6DVj4zpb+?h?t zMHM`8y^5=^5*P`a6Ibt~JuyL@f$^H!Pg?8Xz? zHBIL}!dWy?z^oK8)dRd{7uVc39a@w_s%%xSrsV9q4B2w?- zd+$ciI#{QpkVq&dTa_dPt=`q9%s|(XWm1V-;iOFHT@_m*_Cd1+f&tvWeN_lS>QK3v zNj zhx6onyFKsi<*2W#;r8wpQ@wrNNu1w?Ds&D1{1pXgj3{KDSf{m^gUzxhT|J-(?r$wvkC98Og2o?4r(5WIzv&Ma1~ z%P_8{A#2}0^h}X{*(KHSgkwzD%$NgZ>g;)RHVn%73} zi%N~)fl@A9@kG^nn|eJ$Hf?#LDu}$#pVjAIROjC~h`e2LJ4)TUem!A>Ol0q%5CzhV z`#D#+*P5IqV_laz0s%qm&k*}V6Hmh4p5PI-0cc*Dy zl*7q+I%`{-V!R$p5FAjQC~+fU7slp^QF8QO#E2+)FE;j34aG2iFf&-6f;2_Pz zrTFu%HAv;Cr(_bz=`JY8d{?eezH$Xvy(+ifxP-~Wdmzn+ahO2va%Z6_rp*61JWWFSOFE0@Xs0;7bn}+!gXZb)WE)u|{p94fw%#&YHyV(vC#V->48$j=oS7D!{O z9W>1xO&2GX0j3zZt-}xb`Xlc-u{6rIT}vxeBd<5zfw=2et00ES#gCGMOgOVV(+%qav2W=Ss61v#8)LGR)O0Px_k znB10GOyl41)xP9nyrNi>%V@sDfML+H;kHO7+yT&DP z(lx8AWP{g5spDg#U9>-;n&A$2gZ?9(pycKMs<_owTYl@*o~6jYQo6Xg-QB#(dEDh1lELt z-fFVQwdG2R^00TlLtyK{GS9vM$UJ)`n5~-20eJc>JIl7d>e!vq8MxKjTU*f0Zp5vp zNysq_Vhi_n3;X{o4`2;SN)UADu81S0VaSh+5!!`rTdw`@YL;QVr=3LS**x0O6xOqR zQkE1v#WXZxS8?RyJWZxG_V7l?jYdx_R=7>A#_HYabiM}YyqK&Dx}1T6u$s@-g^$x{T~N00R~e4VlVrZkviX*J z4K6hH-Gd`8s}ryq*@+_!Q<%}$6%2q1SPE$7J_g$feQ^(r;6QUvA-syq z`pHUr0Xev{QXH!qT-aU}kq2|Nn@@TlOE<|_vlY%eJmZvxB+F!M%p@JDeECs4I|s`< zw;NH~bf_TVSA<4%=swPqgpfxX!@IUdH^yM2an@G*U@5Fg??GJ{ze&Px8;(#WBlseP z)m(j~S1XXeCN+&5G<)|3eBI7qb!DjDQq;_0cjd6V%5b`JIJ^uJDW1%;FGNAX-8|5V z8g<2ENMNjiWZ)sZ_)3CZ?Yu0P#qMadTBPJm<19ZL5hNo#5~nOi)75M?Bu|Fe3FMW1 z6?*OcMkN1dS((ujiL@ikgD(TzUoK}!^Wlr+EK9T>Kdqjer1PZM(Oz85f!|O?NY1X7 zg>&5H!MrJKD3TD4!<vjK*U zGN1un2@ji5t#5T~SF_zxbU|w)vBkH#2{{G$HV>CMacbkS*5``BNjP4xkJIMJW06w=)$&^MERt-UBqGMov^>h@<}j!u@N;VmcLPZaT%tV19P$C4=(w3 zQ+h^2h6_A+)QzEsqFG}mm-y~C_Wm~&)#~MX%XEAvusz3b5RJ%TDF^0M!jW7(?mPjq ziGsugMg7v(m2J~ZaWYBU^?hI%o^1y09GmSq5v#JxbQZ5OX0$43cbrT!^e5L(_|e4g z@^gu`!Jw71n^##SVqiNzZR+<1;DBubO+$#m#D+OGlfJ+o`iwaPBrl_C-uux)r zrNF4FVxa&mIG`91%Ffpn)pwy&w1E%}W7O8a(a~Agb`S50Yp9;I!IVu`z$sf^ABO#| z>@8EqJ8ZWa!a4X_22uca^kYjXI#@#mS@A|kgG?*f(dvJS2CXMJYcp^!UsjP;)qXie zO|B{QRjUIr9IO>@%+e|!Rnvc^4Y^6yZg>aofE;?+#%(Han{C|frU=FHx97E}aveFj zhU&D(#J(=8%T(lCca&Uvuv%jb;!)Zy3KZQ!+(6gl3wDUWEm&hq(SBuH`^VO1O>V$Q z*AQe4PP(=ax;d%0pL;n;kx`M4b$TnCKtU1{x?WFGHxbbaMLk?0?~1WgDyP4nI?HKy znS%5x%D3py=4l%Cde?+du&i9rEh#}?xT!63uo;Oj{Xt3If+g$v8m^YqZ&gw!L&}f@ z3M!N7k?Zw)da73>VPe-?yvc_0A$_R|p*QF;7g-w9Tva@rvcUS>G!YBkvM!-{0OrGx zsZ(%EwQbRqZ(8z|pBUZ5tu)#J%A~6C%z~v)<(IeOv#nfEOH~Rx)l!voK$e5lX`f|_uEXkI*Pf~F zX2o*K6A&79wr4A>u?rI?g924`#%F7tp$l0>I0d$Yo^$PqpQf<@ziv<=&-d))c`IMn zd(SFHYM$H8hQn$>r{$Jx$U1{;;^TF>24C~B`05PeTmJ3nA_9~L{1l(M9aS@+@8~;v zUyecAifF#vlH9b-{oFDNjPVvXg08Cm>3;L@JKw-ZACU;a z^XT++GQ*dg;QepI{Q7|y#D6D^UkU$qg>P8$+N8NgS#&MTl)F%hnMpihJ+Nrkb47DHwId=0LF*W za&PeCljC79(11jXIGVu#y*F57gCBmh_2Ksqe{^v2d!HX^zyaFlKYsG;>47#Fjz&MV z4@RTIlSA#rPd>&snU6+CpAELO0WR+Bjz+Iuz0zOVWNGJPWT13Xi~w?kkdSKx*i2K8 z%Xolg42K%7dFI61JHFBg&t0Tn^7?9)?%2AaJukfMytmBa(_FIMdR2Z$R1&*ommJ+X3}M;X4NQ2E`NbzHMZPJbMYu zAh^N?biD(rH*|I!4gL+GP@s=pUy#SnV8l8K2Xsbz+Rg<&sG5m)b)5-tT`ig+I;B}Y z`Y_T6&2~xp-as3)s{UX+#h<$J{nOqecm2Cw#F8dT;w0Anr5&4EK zHvKzo@rI=v-YrT$OL)oj

      )V9=f+E8*JNC_S&n>N~P1p4NF}uW6&*FqXBif+OW<3 zZH9Q%d!mvw8$^1Z6b0yVo0RU|e7HY-m6qqHWE{lcgUwp)-ev?tF5@rXpp@UFXy@hw z*(veMU2e!<)@?>GY%A+tR`_Of+${$%LfuU{`ZmMY;vDcM4UQJdA4T}@O#TNJ#YeaD z8|Wi_^jpue#o05^p6|-2Y<#Y<{|(c%s%!GxG(E$7M|<{~>LY!A#qEFQ|H1uB1v+~0 z;*>KX`3BRUq?|y?0eODFpGK1;GUCv7lEj!=vZcM9}e={RZWoPC@fp zJXON*4o>z~&u$2@!Oc#HH>HmU&Vn`2`r?*#h6&vNu4B z_fc|D67L@kn8gEP_6Dd`j3z}f_~^s$|Lov!|78DXTY3_oCG-p$jjbS4BOcGwB&)O% z1aq%7fY1d{!TdvEU{raa`JnpOc8Nx5H^c{*N|P#rRsKHOo@bZPf%wvbFo zK^pr}wdVU_oJ@=Qwt75C^9jZ_Ll5TZe4tIx=?q_2UpTfBD7IwotU3Bz=m~y8b@lEtVoaXy@ka}Mi zkZNvLHEa~H6--(ezV_+R(p|Em@Qglt#_!jyEvqb!`sHCV?XIknU964yWixgm)oQVd z__UWz)LbHw;lmLfKd+lx$drPscR$6xfN3SL%*WNkPslPKJcY@dK4k|1JdNSu!}w~! z?uYin$6NIv&I=Xk3X?bP?fRl1E^V#^uoXLL{jOTX!YW{RQoYvo8daA&S=ci}Lkmp5 zzIfXg_WXb@-kCP8;z2h{mpm1}*ItRZg@dW5dpC1f-`wBS!A2XotZ(ivzm{9qTjdOW z=ElCc^IQ-MrI(F!v(@BgtB0E{H8)!VH`BoacP$aky%~NZ+TBfCoNRl25P6pCITI%d zqSy_m6UU2PZ!$Kfp=nu>Z$>aAM>#0XdxO(5TMn+3qQ(HwkRi(k`3ORg6LMvmc}Lm;yQUnAxg6Kn8-FgzE*x)juy%$tbH9*nLl{oxQ~BuRz7aA7#a}u zfQfgF0aMN@jOtxF2{d_u)7*HrN~j(JW1miX&~SA30N1}gi`{7!SmCyC7wRFqA>Aso zj*MDeV8uv?%0yg&W?B5YDumpb!gWB(lgMT_Wzp`DMO!V4_WH88N>5K$Wjd<_Z)!x7 z*pK7TjKy1Rs_DtRK*3Ec>gTDBe>I4}{BX~}d5TUrLNI^Mdv2V}JZJs_0zbnmtT0JxB)p#&p@ z4h!fEWcs=Xw=h)^iA7PhH3_!O{(h7F{T}xB)$H%zoc+z|bUY3{-;BqJW!t`QSYD7= zaqM}K=TGlgH6*i+=kxg|^!cPzU)8C2wf^LE3&sA<<|hBa>Z93gR5Rfk|LU4J^t!SPqCh%wskfd!Sv4kZo~un&Rg4h?}DpH|OS)niFH7f$If9=sUJO zjeL~Ai5XbY#EI&c#Pd2h<@vL&%`ni6OC zNL(Z9jU*1V51n)rSTpW{hulprHP3Q%tGdB?&0}}B6gR{bl42ZS41Uc^A$Op+3Q%o9 z^O}O@^$41$7BuhXf)-j6J8?WOHbc;F-2mzfYGe{krhz*Sr`{b48aJLiZaf91EnZYf z>ljZpXWy;y#G;MYv7TIsZM`PPyFDD=$a*7=2a6MwGc-*+(S_q1S9m!J9jpQ39`;P^u#E#t*d`L}4ZM>%3tPt-?Fdc~RkXsIB682dLNv zU}{2r4KVKl7!qJSazf2Tw*;YlYR3XD2N1(R z#VZJRHm#DO2fii()|3?@?;CL#i|8Uf!vkHV&AIhHTthRq#h44rbrdldAL2Oz9BOJ! zUF;;h9kL@FasRPfH}ZjJ;7>E&1VL!@7Y+Vmj}egXYxWFfpb5r`@F*kOrDmrtt|2LXz>V_UAL7X zI=74k+bpPuHLVraBR}s7?CFgBdJBT7q|PHpw5-#AY`=XdZMX;Rb?DgLeQE9(Z%bE_ zhN^p0O#0S$=pl5$2K{LUQisCy06iM?N#|Q5oY+!zhYBg*`u@b@m^SE7%Ww3jr|7CdNjY@fq^u>@V|Ii9Ap zH@N&Xy8J!R6|{Mhlwuc%Y;%f~Y9F0q=(Yxba+f#k$v3c3?ljBKbh7`WvN*?4k;wc+ z^+RkCuuz%7sFs7S0tCx1$rs#s)Gidr7F6_v%U18)TG_;XLvpWE{;KHSC=)qJL+1o; z0P}ZjQ+I5zZcOa}pN1erzOzGCSA93sEK4^W+cexA5|(6JmS$VJ=?1>%?N|WshmP%N z&otWyyCMiobH@a8!ST@7cA$KU&w{`PW5l-Pn`c-YZa}qdtXJp`CquEavCk7+0~axjt@Rg%foE)akBUXA)?TCVqg~2Hr*ul zA~W>d$e+f3Voj3Rn8c^4u=BHj{~tM1zPbO;Fz@&Oy^+r^@BTm0qlN6uxmlN38TXZ) z&Y`)}G>K2~44a~7cV7_PZ|=L_+;_jZ@0!p3=Dz#Qed~6_{pP-|+TL&OyW!?O7f-rw zZSD(#{=I$fo7vlUW3}W?cJ2iZP^bQWtM~2MKAs?nTSLf|i&w5EUDc_Uv&KTH?emkc zZXWm2*?;RTlR6#?zO!$B4%ix;@(pZeyMZ0a*WX>+v?ozyS!2_;CyDQRb}%*Ku@NN6 zIB@TF{oV9K#yI4PFq3UN;#Hlx7F(Ht|4p-%cg z!6P#dFw7FS)8LI}W1o2Z#&&eerZ=}-L&g#VT(h<{+oPAX2=?6ev>N11?O{`jAapWVxn=uDk>Ivr0O+nPobJF(m_4qZQv%>9{a}FoJM0Ky5mr1lWrd{*?t1kvBWEuw9dYQ@J@FX++Y%{ zCGh5>fZQJ&i{3^N&ek17I1|wWwzmS^bPi0Ma`4V0Lf{&DfM?k2zK^|0c6)>KdxO7g5wcRV6%4%M7c-bKj!5UTqSs{0VC`w*)85UOuyhu()!-G@-!hfuv8 z{rN2pp?Y1hCilTp_rX(dHhAin;G>VmG0bSo#cMpE|GM`-Se7lvf0?H3*!S^YZ{qWJ zKL70F?`{2M{}@+eTYvU<7g&|2N1q-3$&)|$qi>KJzj_~i1S;R@GzccP9heg{@XWD2^(T=z zwPVkoOfAP5yTmbh<1(&!|AXOrjrTvmRAG7d^8Y42bs#5pu`-hLcRxA#^qB@qigtoJ zUy9KZ(ToIks^U6No{ugO7Y*p7m%~!X$-_HIft}HkGzb!52y7C?@HJ1$NJH3R@{3h^ zu{SuNuZtg^TrEN0W-pItF(M@MoHgTb&zLs>^EB)>cS@&522n}gDoj%OmCr$>8X zoo7KzjWZgNiXO@e?l8N&g6BY_knI!|GE^}jH9S@P;^ZQoFfDLL!(h%dnhl9Iy=PWI z8BdNre)^e~f!0j4Tn#bD5nv~tW>U^FhvXd9&FqY>11RdY|0*f6Ii!q~+0uD*CT2qd z70@Mlvdp08vixdDKnnECpRdOFvP%YxXP%C1CvZXwRL+qzHNAKm7{ef#j)$h1jE7-t zn?uJi-Rab_CXQ=$)gn%4+)av_c~zGK5YlX}9lUsafaZLfN~!XrI8d-Cddi`vhjH&K{}ztb}^t zo7ojTMmd84P}=Vn`Q)3Rzg(5|xkt|T<~xq}gPO`>u+?xfOLw(VIbV(_?M?|%pTocX zd~!~0%>(+5xzXn|3&`fE&OH)VrnE!yqIc*J?Rhdy@?Jn!n)Vk&QKBo5+G?i&Q0A(lj&X4xw~m+ z`sW5DKwAwZY9z|BbK`gK?t-L9S+*pP?aNd`;uDC^#qI)FEU>`rDY-4Vd&+W9Ppj!K zqe7crSzKP`<{3)Nrs@)TsFxO#+n!z5KSQy|an!+kNSkLUkPfaYK;$(xK7ED~iN&@r z#$vvwa)4*7EIimfw<^l6imUOV8XkVAC~*OV_=}|j*(e;ZNc&gdgZID(pDY_ZnC_o7 z8SsU|hm-xZK<+2N?Stt)A(-3>54HMqIdAWUnlvHydh`sA;bl=eN&Z;JqPq z;|d0q9Gw*Uwwgj~IitKP@{t;oEMaF!7*3}k>dppsMpYGL9f7Dm_1w+?HQS>o{{q3+ znHBSCY8;rs|28atoF{GVY_8D6i2xrLC{MvOJ}#y>t4^UDJHp&oZgW9@jZ!vf?Z*eC zT_qJC$xSe6ojB0ti+o<1Q>QE@CysaOB*j#N)PmkAW+dNlFhXl{bK=DD>4BrBL)E() zYHh~2#XPSS$qNGp&-I*ljGFJ?Yp6oC(I`!4fh zSY2JvjmK^r_d^FS3isS7?#s6Kf}t|kjX0*@USGIjgeex@3rx-35RyT#-w)hS_Wic^ z0xuo+-N@_55G){L6jF-DOSQyqj5o02D=8A-W0=|xpb+Ny{l>N+olmDU+~>F)s_@?I z4D<@X?GW(KaLd7Ao}ApAHat^+4AoQ9(JHJk(I;eDtONiJelQ1LT?t*h?O70BA_@-> z`94MfoQMNoBK&{|2Om)fZv<)Z01QVjr9eza5n(Ar~z&paS$_8Q^DtJ`PoKybjpKH#razVo!!}1F#GU0UT@3^*{ut28ob}5>T7r zBPI$#B4{K;aAGyQ%?bPn5cCj+Rrr#M^@)yn>!^bfz-|Gt8~huQKZ35alHuB%ghSeb zl}JI4ihOGpdEW1gP?e2izh=QNY7BxljTIP_sv5sYXWdZ<-e~YsFhlZGW`WN>dKb8ER@2oslDJ+tlPa+P;!0G8#I<_e5!3eZz2kR@#{i zJkxsku`|I5K#!vhj@f6WrYc~S|6f?gsC;-iUd$4>)0olSYphdC{be8Etfejj@CCv*?dgv>mzG~jLVbv0O---p^K7- zo2h(e+`~!^o?J~18@!Ss@|&Ytk8<3HE~IZeB~p3SZP`c1r_LSZxm!zzn)}hly$1^k zM49Db`XPpe&fo3DD5g^4dTgE#d$jhU4qeACf^7e+b7K^)S87RXIlNaXmKG+=og}l{ zaoSW&ALmW~>~z)I(?C7Rhb2hY&7ja56~FaR!`7Rb9J)S@pCG!_8^J3Y*Rv;I4q7$T zKVP4}9_EfO$Q%Dq*Pj5rM~55l1p)s7=MiIls4-Bp)@E!4Al2lo?|S$Z#P0%D3|9sC zE>UBMvp(wf3Q{c2y1e$@_JEH>p?_1}YOlXKk%Y4$F1<@YxU#)bXsoe3NXT(_V( zsVnW4)MDs%%?5Q-(7>7w>9ojml48ciee7FJ-v&MLGeBt%JXH%}9=A>{!3qYdoSdH} z=bum(OQyxIFruL>hGH5G$YnwNhL^RRI3=|E2f#p9+_=ug)wCEH*ZHV2SO~igH2>!b z2q)0xXC>gPe>O-^+CINW_xh)j;VcS9W|SCcVVV>EL0W5Z0AK)~Xs{8kS~sQq|oA{se*c zXe3FBc-saYWWKIGN#fNFt90oz%C^l6YOevld#(Fe#~gIf-EM^~tdd+`n2u;^ z*HF=ZSQ?@w+>22UD|$AdILc zD>iHw5wc|Zzrae@zI_)lL+^#H#*K~IW$au&F#cZd_~1*g)Zdq6?Bn%2E6U{gXa!O* zbcb_slUw+}&s{`A^9EH57mIglcMu=TxOfdjbT{Wn3tMXmtzvZ% z-cnaD_Uq_id{z{wqHdpTWqrI&q)A3sq}1saJAUo03*5C{Tsot!>D$&k)TFXAMjK7F z;7$mhhjD5xzTHVhyV|_k>d1$!vP^CsQ8^`k!nx)u31cY}DKeRGKQun~SrV|sRPR*!}D!w*=SRtqwj61S#FWVcuczdqSAh zkG0k&l1UJS%4BI4CDpSw{gIk{?S}5%O7|M{U(^427=+93zXT!M&;PIC&Y)}B^Owj0 zeIkEF{hIjw`;=cwr_E=y-22>8gw*SNQ{g83LHnxm<`zsVo8t55+(D>w?kWmzef$wK3L{L)}ag_$jH;=#;`5~|w z!>fGO@|oNovY4m738d5vdZQ;ICPN^rQ7~tTB+lexka325#yqhBqea_;w!vfck0A{i zjnGze+5iUlNAwN${trkTDG%meFH*`xIsr692D)D8L*3k`lV(pA;?~LkQrx@$gN6I| z-(JNv^Z!=n@pN(VLQ_VcXeO_Vv^mW6d8OutH=$)^JTyy{k7rSyO(u){oii)|A+KH zol}M_{SSsO^gjmX)&zxn4q`C~)1in`>2sljGz^k7YxIB5zNfTz&*NT${#(!gAc64x z{hzPmWR_%p7;3F~V0hxGOvOUNUnYc+>Au_U-QMlp-tFDq?cLt}pSk}5BnW6<06

      nQVc?4Or(=g_4|RxJh-$vMX_Gv>I36r&QcCaoW<%dlRVTp0Q=8O^_ zec&?ZH?P)D4+hsGT3;Vn@+mG)zK4Py?C(1`^Kb^yaFRIt`8@dQ;%dLFS0bQ(dQj}E z9J-)F@oghTN-qcg9vmLCkMPXLrE(}*KXRKpu#mtivu&7usKJ8rH?ba`^Eq_y?!P_gYzSx&sE>&2wC;tPyjCMEXjVO>_5J@ZAcBuT zYq%Ui=x5wT#FZcS`$n|cIO)>chrk7AG)h0xyVc2kWo3jbBC6k0=+4>P6`fqSUp#}_ zc3;iCcr(5Cy>~#*t@l7S2u4l!y!N-^*Il}{O84~xk%X@wkZjTU`cMe0s*{`Hbi#I9 z>uB(u@M>X?oQC{Wmq2=5H0=a7r_=fEmOrS++BXNEbMLj=dAlc@i+x|UOS_^k&2KgTgehzGdut(>NyBsu zU5-XL`M1xJc!YPEnrw7ItIju*r`v)7>V&hKZOLbfhnfdDDks-Pk;9~lwV<4VyG^WK zBZHoTR;a^DkQfeHWx^o^b7vq zV?1}^zmaj?0-I|5eP&awWG2c|+SqcTl0><}6{&Wd$0l{g^EsR9r~cTN=hpKWm+i=ETvF1pkbt_BZY16AaV2L*E z#qGGL_Slv2Eb!a`iJU^vAucrI#xD=?mtqGCL|zH{~tYSEzTq)%gL_==!K zzIK>v#QJPUv-oqzDv~M^wwfv3At*PIM1~R;7>hi^qN`{$b>T3Kn@TC@!+!W;qC?YZ@(2tc&fjnK4leAEkf(Bqie5kpd`RV z6qO1-IXT^QhXLb}r;2Q3APP$raV#{7OV-JIoBZuO`P(JrZx@rlU7!4US*EEsmgi|9 zq_j2`#uXyZjY*6xw=5UZs$*=u{&-t2O0&=`6+^2pPPo85_1a|B`b*Q7WPH7fX3^mq zJI`>-oafHHx)H;99f?E4&qFWez-LYqolA_N00=xGBMZFfdBitfZV>7Xic*9@CnSOA zfgX=_7+^GqCampDx4F#EbD3YlWqvW2`QHUdrKli_DL}5gwQ=oGleh|^u@ajj3U3Zr z+3?pRI`!^yi=SsSw=$#o^%zYkU@B6L707@-;y~OmzepLD8yyf91qfe062NFAbZyFL zXq1lVrXWEAk!Tk=5l9E?LHrYl0hfbx+0J>J-PAn0sU_^D7PFgLe^FDQa7hK!?z{!T zw@fT@V8)$DGL^_;yDVpBYL}U*UDnP8TNzeTyUbTpyKql8S#fPM-anS!)kQB=>jR&v zwKxu>k0>U{W1#m#?cyrPw8u*oRm9-BW~$hR?1p6pP*??oQHSeVChDh5Q4%1a$HsKfXwwkg#^SxC+@ zhQSKKrVffoHp_CG;@v#OyCoFw7E`=ipW@@hl(_(&%uHFtTBfE@QkyLIh0gLse1)Zj zG$PaJOSGEILbKGB^dq&4SWYff4K3EXx8dX}Qenm-Ln2g3OBoC+<<=by0JOf-M4xD;RH3?+i={Fdr$; zKpmjJ8r44=fO>g>*LC0m#W1%bs)%Zx)4TP8pO^PFDSv%uG%<-o- z+SuarJnaAYZTr9Y#s2Rxp6K;j9&s)bqr6BnS6JL{mo80XljN~3v=zC^viQaH?|1P$ z#`rJif6im6=I#F^WPh>$dxYnYYyY>zaaGry)NpuJfk@wN<)^jlSov{xmzAGJyoi|L z0g`^sR(>FH>6V?}8ojk0Yd&lTbXq6)+%5VDr~>{P!X3eLi&>~nlV$}KuG*2;>+4P% zyJsU+g<7H3-jZlRAqnI)xwwM^u>lqoMcn*3x|2vx>q>Fl(H4WnnaP+ zlV_65E9yX;-G=YBbgsLmlg}CRZDAD|j*^@v0O(J=&i)W?e2|qN--4ANEc?V{u;SamjVK1_ zNQl6Vc(#hx4a66?JBW@mHfBan_8L%)=ERK1ez;i{;KHQb+ZQe}f^~8}I~RolO&V3b zPbd)R%hvmZLd)QA&@&=03dvZ|CM*U)UX-rhDU@ijCAPCuCe=TGF!vBx)WT_}h<7L97iJ|jVoLQTSvdnae zU`|inzL)3gK5L)<-nVCVF>?ZWAOCB43;)H$FXz9H@+|cKc;^9NcVBLi$H!G)eY38Q zN4+Qfo)CJ^uI}P-TRSFq`kk~ATcs?oTlKU~9Ut(t_fk)l*FPM=DyaykHH{O?OBUuq5TQ~={bW`!Zqi zkP$B_IvQdVhB(}nk3}d%fvo8u>gcjOS1OX5GOvnlRkj5VWs2K~(AOZUux1~yXV5ts z9*?#&Ke?^J3RYEG$1>ME^RX^O$y4Ed$`SnD$~1R;%l9j#7dUJ_3?YSaY>|KMtw=kU zcPp`S+^{lVA1rWVJF6Kt$LmihT|3Lw1hw@q^owoSC1_2=4`U_Np~Q=r9%3Fb$|MLz zXk*23h!m4f&=r4N4L3DTaFyi&^tB*zkpzw?sS;;HdkpL3dvd^7(uRy8*%jnVaWq8fYgheVGZH7IYl>V5n)tp z%#9kBMJUTrJsxTmWMfPmsL03>{oHca$$6U}d3wPSRdb9Z^n^b0wb1O zUDj=r+XIDN)be04RFZ^U$!mTyyyn4KXqJkh)wz*0;iqRtxxPfd?rlD`9OY{nTC3Uy$`^w3dzw6zI@BN> z(^Lv8A&eueONitO>!VXaQKHip?KoYIfj`{C5~pirR6Aybi6man)lt0ZhLjPOu=|XQ zBr_nYBM3Uu8dNHDBq?GAYv+4R>FL zrhDly#B$ReC+kd9Av9X31}g9Y6kSWI2bE`#SgF=l&IKH|yzf>AE?lqg9Ac3KvNz_? zfvBi#aK959=1}A(pjF9$vZ?@1YrG2k0N%$zJ2#Gbc#RIuVzv2YHIM$Ed?-u_C|lBP zHEJltV)C{CX%1uUtP5n3<$c`R;=A3+Zi@s8e~fAf)CdIjt|-(<-1Dd@6cz-&IfZJn zB!Jpr4X7y;gvXjD1uY4n;dOG}*L$}X-DPl*ZVQX9QHrjCV_VH3u51Kx$&o+}Xo}de zE@mW{gpfA@i!){x2m=pxtwHj%oD(_2yBkxd<(kf!5IqA1k;ilmoZ1MrI=luBNkE&O zjK8m|l+o+T1NDCLrI?JaihcCvP6mbhxcElDOg66L9{Yb~_?-PO2cb#7*#ADp^ZL(! z?)BaV5?}{`1bVe+bC3=$Z&FkuUjH(hUKXFmqg&*XO(wnGhof`$evlQ{lcLu<9DVwA zjNHU_vsY-lCfGjyk*qGH*ZWwEuLcvc;T=raWic*-dGGbK$oE(|E($g(S$2ui;2xWf zSaSU<`&5i4@WLpaCIiF^W(munt{&u^UP3XGQ91pRj0?z|GnlPL*?=sE^HFwlRa{S# z=^)Gl#f0rbOW4j?^~TOCsw6LxVQ+BFFs)8vU!W64H&Zq)V73@!SjHY3TxY`@w2^L- zhl8s@RRg|G9Wd!Zp*Iuw0&M3VyBg&n`oZ6VKI_v>Ivh+c_gFr_qSKox{5ZiMsVDdF zJ6?~*Y*Gw|Jt$!S?WS*?wT|*&(?4N{POC1O;4fb;M_1i18BBWR&G;IsEa;tl1YJfo z{!(O9`~|avI5-@A!A}F7F(2R;O}^>%&LJsDN1qG&mN358BM>!1chdlTnvH6eG`UQM zLzWg*he5s2y-DkH##lYtmrn=D5N6&n)i?i{5!C;#&(2Q1JOA!SVS|?BqLkaQqYd+tKmcJ=XuvkEi{!Gj?*?JNoeP z{ZSu&J32mm|NYyeZlcM7%iKlG2!Bd8UA zWBnf>!p`0uynl~X^$xy=)}Lbg*x|{?pH7ed`tF>)J9+=M4?lj}hn5|D`@SElf{!|U ze{l3+kG(zkaPZeYy>$Ymoc1tVXdV0UT_1nK`VQc~!}Ft)WBiQ6ljHMKi0;8xo}M?a z{&;lO-(v@-M`zd}-<_U(*y~|;!W$=42)uXP52avNv(AV>7L0#?)^7@AZ~F)Dp{z4} z89%Yk45Rty*S#J|6s($is;TE=z4#y;G5cqa!SnhxJIau8$3W2a)PyR{B>H(Y`gvH; z1T}yxlRAGj7v=2c8dMu1r327S;g5)7R`J(2b?&-MG`deH8yVhL*(R^wA076O&-(lD zF6puK-UOLFV^}Tw3;R1=7Ffa9zrH~r;!pp()4D&vVkQ(r_XX9B1Iq9w2vH~^L5@qI zJ`43O{vrNtr!82$Ze`<^*~@*%cd0Ut8}2caj7L(#A350%p?wI~nM7m_WYX|;&;Y%! zCluP(`0ux?eb5lz*=#?QwJ)gz_#-DFfQ4PEA1vkxMeS=A3SfE?%EW({>hr#U;^e-% zbf3jL_Zv2wgrmQ=`;&x6=+GTpA(CsDwHcDaPN&bW2h-hG6?NeAFT3ThT z`@aG`JIQ~&J1ahQ=IDQJit(>!#SkXO(fD9E+}*(~v?(M_SP})T{J#eIfA6u`@6pfW z(aonzs0C>54NEY6=M}=~_kpN(cX8w775mGZ1@+=HET${~dq9N06pVrw^g+{@3|c-d z`ojWayF1CwtAz#3UXCXJ$KJDcw{0W)y}yE2z1t*vC7A&6Ae<&!*GZe)b&?*(?e4u_ zydVJDN+nU3lAX9c{_l4Ne27vc>tQub_Q*N0K@yL_%wRA8W(IC@G%4qlhb`Qp0Rj21 zumAIRgaJ3l8((|2_2~9r8&>J*1a;mqe7io+%6h#RIDr|ktF493)nAtM()VCtq19;V z4Tmm&arWv2uzMHeII5R7UO2OqiM{S8tZF!4$75ve)&0G?*A*fYWn|rZ{UUQ zzmU;KfhV7}_b<9HtqT5rH>!5x{Oet+q&EStQlGW!FIQzGOP}!8vXYZ#s{Xi+-7HtT zy^(c>bn71V*M2R#u$*1MC7-MR@9d0Lo=?j-jU+cbP7;v{m8w`s?u1s_#7yv=J0Ob6 z(puEU*Q}YUKdu!uwK|;s^Vn&pX4w7gqW8Ib{Bo(heTWa3idK|S6)=?x+AS`NEr^NM z89NA=>Khb3U@DKxq;H{mPp8QR=X{^o;n$O}9%bbqb1X?!MAJm4E=}WzC7})t*O5#m zGiJxW4g~L&3w>+`S;trpo2mNaI)jYV4tTp6WCez51bJuoH6886E<&!aHOT&KN8Xrs z<2op@^v(=Llwc88ACQzg8e-U-Qhtap$Anevi%={>X$yY_ zZle8hZO8rJRqy&q>$o_3>zv(;9L8hxPfuDn0~CcHqYcRz=DcDn>tInO|LpvH)H%)u zAe?$hzgf@A=TFqMOcCv}jDV8mjeL~>4e6@#%HT!;+$BQ8hDQEkSIN5To^c)j(DtXA zux9S~&6_8r-U9jl`HwGO2N}$DexoPAnyrS~y*&2qjB@y#PhjTEE{gel0c_<#S1UMJ zSgbeD7tLbTp?K~_8Bi|EZ#q89xLa5SU5#B{X7=ar5sR6kp^^tICBmk0*oosb=@8N<$>ix1CuNAGFB{ z`q{+Wkr-dN_gnD^t=phkkaOK-FkI#RM%#ynXd?~p4iAe0NR#KUpDm@xlx7ov16o={ zv4S(o3H?$Z;lqQhb=H#asrrr$dZURU#6@T!>Trdo+VZ!h%h ziB85{Gak2s-1Twcchh&{OXpzpPHr&9tQReq;h-w$GvbMHmBrHur}_T^=~e}yg@snu zwYh%Z%kV(V7cWrOtoWV2*2P;;MRN0`_0Ah2bl;6zXf5HttXI(949CtJI*hj|J!j=- zb^hxBRJqP1yFiPZ``4J}`T_~xL36TBay6M`!yQ!nk@f0*D+I+4#62ML8ar=xP@`wD z&8sOe-_d=5XQ&H!a7=Af)l+Y2Fl+koLrDp=+x)(uLt$aFAn!BagIB-@X9XK9%{OOG zu`JumDRR#Mw@dS#Ab3iD2=u+JzuiX*}{3} zp!l=XF3;4wCH%9{E$>A+F4luTI9OP?8dMvK?1go7#y#s2op-Wf|7PbEek4NIZs4F) zev{1Jl=EJt984~={y-1C0#K+0AWn18PsazvG^k6+X0({<+^|`oj&A-7Xsf|EyUJmr zglYH3-sHtq(%3ml`g-_l3HUHWB?#u;VFsv@SR}=R*m}H~FAbcDoS#Ckqz@)c7_Nm`MLR3OzkM!VQ@kSZ^M5`L}8g=vFYf!ehAHu0pB{HI zz-3{=zOpUE9eB%_P?=544}aW0=S5~vhBkQc)Y~^JwxP2 z_yOQV9AMNJ#3S{4VUUa=4~AW&nDjXi({b#vgpNQMU=?!UTfB5V!0j}6%_Drx89>7c zR>y%jn8X}@mzXKcA@JHjDfx~bA>ZI=i+K!RWCaK5-vlFm)#%CILES{q^9hYmFX6sEff|96SkzFu%X8o*%aA zPpx)PKD62oiVP3h5Bx^(gGY~>aCQ(EQ1fPLAuKVjw$v!G=!VOjKOC(e`5fT#+v}=RI5Y{^{C&QfOcIAh0Y-Rt%KWQow4`Z@bVK>m&(q5LFYQffqSdbLiOj* z=db15@jLRyYkhqN=zaKL`2h|v9I%?_q|>U)6)&yFM*u@bzse%>J?PsRED*V+@n-BeI@-wc}t-$H8-AI%lK znyf7M0+_c^4io`sf4H*P-`&kaca6Aj)f`duzULK*ncf$bpnvF9e=-gpHYUv?G~AmmujaMG>#S!%BLQU!KNo8tKeN{UBgIbaY_+WgP5HhQtu%UtV3k9o zF;c(z8dT-S@cA-AQv|Hcud~i|b?aC4=ry)Zpo0#qR3YP9yh`^;%ilE0hNSkcSFw z*|L0npvJ%`qbl5^#(Pqwq?VCbha!$RWy&O=6ofVwfC`^`QG@3WByxYdW_c3EVZ`8{ z)--V<1PG{(lZfy%5|l4%7S`nOVSD`7_kWgfB%oTF6gnHJSR3NP#4?$809PsnY22RTyUMHsRL0G z3X>=nFTY)*u4xwdXK&7)zy9U?=$E6HC+Lv98_<_TvxD`wU=)=FlL|^yB0>g87O;fZ zi5BwCSZ|9uu#B7CEH}G~o83G&!|agXoEPRW+p&z*GUTyNjf!I>(@;h>N~0uB6yfki zEo7PJr>AdD&yU}nygA*SJYzaxP7s^wL@F7X7=;;EMmVCROx;R(Rs;6-e_nn6<{pE4 z9x}}ZbHouF!YGH4Eo~@aY*QzhaVD7$BDTJyy_}`<%Uc%Y@@v!Qiu+ zFc~KxN(6L(u!P(ZwS0;6@Q|N9fA!PJ(b*pfxzLPjZ6z_W#aNhxXo1&080X@|xn+W5 z8RW~@sW;0`y^5WB^X&BU^$%}$%}FY?CLwVMaziMQa!ZK}BdP_3`JKzPIH`*Bo}(oY zs7u>w722|tiiAgD%taalH-{FcVrf#!<9L0o;@vDl-&F{GH;>T&etCMdi%IBRFW105 z{T`Z;RM+;v)U6{%co@Ufu8DKN|Be}=Eoj?x7O%d7qWl{D>(BPDU-hp)-@kr#ap5*l z)93qzL4MB9^-%Y3esg)XfM7&vrUa-*Qdu4w4Js6;F|igHiOwklzKW^_1hXA%1Ogto z%|l>7eiIe}=V}=%En%_|F$ac~7NlRKXCc5E?g2n^u!JTAjopd_rnWGOflZBKT7@7G zY?_4gy8Fi?rJoHiwo}=fBZV1I5p9wt3eYZjB!vzoQ>hDMSmvN{{DR4UzUlLFnRr6(yiu$%VMY)2TmH&u0k@X(*|V zG-$${z~D5nY!Q??W#ahmn9fU7jh{~696x`Hv7C0Uo<;y}?5O0S2Bx$jEd8XGu+-A2 z1%?po%)FzU$t4Ws`%S!Bf*b|DgRz^y>d>P|f(pP>2TPGyQp(Yh z&n407b<#4VU(F)@szUnJJkqc7Ew|26Ln1;MET~LK@IED2R#{L0T$HjTOq2B)k8KEd05NP1lz$&fu$);BB50Tx?~&^;D^wGqL3&Fomd~<_p|W6ui$+@5AQ#YPG6&t z*fB#Bi32lXphn6VRAHr*0~N$jn6+S?m#)Lm6==I=XqfszrHxafW0N={G=cdHcZg_e zLQPi7FOT%biCP^2%UKs z>RYI<{d3WB&*Jg@5VSjIeJgkphxS-Ob&6D+w* zfuyc=*9XvQZ*VbJyg12d2G?tpC{N_QRkV+TQJRGjbYidU!XnZNbbnGC*7=Ze`e{&* z0gvpagn&QQ={-{U^YO6yynng}_2@W{M>jk5`>KBK_Wxp%M04?fNCZmS-v8@U{OtX| z_Woac|F6CO*T292*TG~kDvjjNJyK8M*HLaRpJfIV9WO~hYW!3bY3L|W`k!DmLx|SX zI!2d2Z4bWr8Z^bnjl9UPozl&*_4J35eV1g0X==0J`JsGu z*T%1xh4X^3sIVs4$6j`ohEseffVIx_i*I=oFyIjY3RD=Ap*94Zhk@@e>GT$e`tGq- zWeUC(R^qOK_Q&8G-_;x?4=XADcl1(Prz;|yw>yK`6e%RQ(FRVBgb#m-*r+1R&hx0vp zTYYKGAioLuMi`s1N%@@7_p$NJU8XUA5K>Fk`41i{Gm@noEVI(a50{3>Svgv?q9$@o z2ul>KetArUOdNIEq%luaDz+j$%mkm9=3lSTkwsjA7aziU^1L@pGcR=?LUUt%;U2Bx zm5niXj}fYQM2$_DbzZta98~bWHg|2(`K+cMd}y zJlxqYNL4?sCf241ybrNrLefy%R5+ESl5i55NUB7nnsDyemqV=89a%`MQQjMFrS)x! zxcd-^CPZj05)o_VtkXQDDveo63`?9;`imjb>WuW0I*~L@5+x+DumFf6 zDMKn^N39h?3z>d7bXwh!JLt5X&bKMI>0H>V&jm9LhM15`+8F=@&z% z)g8HmPTQz_n_})>Dqm_6Xd_Y~RXTy?wY5>?BuHDX9U=USq0;J(+(D&Lo}twHfA+3* zIc_66=eM5%p(~bDOSbxc(PcMUTCulEc3fU>T#n1d!j+zw;wZzREIYMNke~Une^Ql) z$Q$KJa!xmZ0Wg@s3^1a|T|y;JH_!kYefpd}r~90*YlhlGkJz^Xrw}XFxwbN;GzYs4 zL%k^zCblNeT*4d%1Kts04S&eCA!->fugeiCq>rPWd28P$oHSB_3BZ+r!BHZO2XxQ8DAVn7$NZdlYhUSFQ0x@GhoOc zN7t9LWqA=>Go*GH;r49vDfAUtOnI6y2Av3$9GB*r7MiD46=_=JcV~nf{*Z0-1s*)_ zqq0ALwUx}n^xU_NC(ZlDMo5~`BGrhWM+;^YlbNPTAyvV$J44Um59y`n^_#4wXCUDl zAm(ut2#jyvVfuH^HoRqvKFt;4Dp;?%XzZ7K8Y{=cOFqLGnIk&YjrXW=NS~y}9NlF- zaPOv?!t29WVRwNn;}Flt3VhA8`Sa+XfJ)@_yBA*$ufy%xZj)wY1|d-H0*%H2xsVpD zOp{EXef{#~FrD^oyGeTPAhO3@pwl>f64F9TY0~Mtm#<#^^S8qa>z<7_X&G)1-}EjJ zY8*-{X&}Zn$@KNhPlwmw_H4H)G#Z9Oy$duN2kJ^XAhS(6{r=UTUJh#zdp6z_LJb4o z-33C8gYP3PFu^97zWw|U-we}f-?p1%r4NFYjiA%ja)CzdjT`EtfY(SH2d*Snu)zQC zzyB*FhAr_u+i}v`!5|*j-J#hyY%$V?I&0JHFaNnC&Gv1_Nt4rq5aoA=X5--2NfZ0M z!)1Tjkz)I{;v~s9h}wB~C^im(l&oQ*w#oKC|GTSj+_Ne7o%Z@`#ukKUu1~KT^sRtJD5G1Gz~5 zE_(Hz>eD*@#_=D?V=p%PK+Bu^7vQ;5e=eY31jYe3u zKGf(x{>x`*c6ylTkNR+;Kf?|(ORpY7$;Vg{;iBPbj8y>9YgjnGPraS}TGcn=L<&Nq zhxE}$DVfHAhL8G1@ zc>w8$EMkwM8ht8Uzrc))xUfWdJc=et?#?astVX$gGr#!d9LNwrxqkj}w#>1!EapE| z_-}7w#OXSU!j6&8k51&VjNs3SuLCrgY9{?9StDP6InVNv9O2V1@x*FYVvZX|RUhFC zuc{Vqh|j_;XrKFLd{SZ(Mn`Ma|2Qe|-|7RBi#YvhRdr77@rlE#`V<17VXav!xw?)i z|0Rg@65*ed_%i)*zCd)w7}3C?>u{!zqF0UjrqCGh*4`Sto@EG9ebX%j%b5bgctLOYehsUGIRu5byonz!V-q6fYtwD{`SB%m&KJ$y~@}EhvEDIR_4}Mr#ov8mh*6An+@2WvlQy8_F&l z$}Mat``J)VV?!ggwMiV?)Fmp31?4HX#>CE8mr-?aHuSoTsMMRldaGo0btgTi=D`VS z&H;IFik{Qv!D<8Hut2mAAIdHt%ANU8j^aba4c16b;74`JEbyHxa~_OX**XVi46AYz znGoM^z63+t(V)>D&MuW$)vIgEJL!RVdFsnbT9BBqw5 zQu6fRtS4PyF5@b8TcxUN_`5UXX>$wsPK{^&4%=PMp`m{oHZR(Iqq;1oc4j#>Y3M_s zZC;OjjuOqQfe)-N!|QPmsmvx1dtqR6j!0RLdWd~)>QT-?5f!ycuJfJl@}1tocejZvoGZ z=lc%JU0;qL>vWg#^v;Z@N7{&*aO3;AKob#6Jjmh32MC(ai2^wainx}6w$f8s3j(J> zEj4J6E5d+n1Te4w_SBwjus86@wxI+~7pkV9hF}^3Lk4Y1qG@P-MRAu0xYjJW&Ypa` z8P2yfF+YGAj(bTkXgkj3=_>7rg*JsAWc(Z-*gBEbRZ3Am$cGHHxyCYFp`8xREv=sm zAzV*YIpC3KQFG3K(2>_UdG&0+ONQ_-)`ZEZU3k^X;SX*f@Yn6ivSs~e<-atDB+_2* z=^g|7e`-H~ zV9_U@4{@i7{3>6(1(`O#yqL#+Q}5aGVg5Fth}mApc8OBZb_$`~t;_%L!*5qxer(6FUsVIQiNN<OSrI)9Zg1^`+>|da&?`+cRi%X^3n6>5Ae!^s%R9|1+Vhui{)}LORkqt9Y1hB zI4(;+^@acZ5&o~5qC~f^aMPb|pYX{{fB7kLv@s z@t*ri!+h<|&{?q?e|2%a+8<&4cy@i2xAgLleFe*mfP#cK*L3G)pB13*kpJH zXy$Wxj-~kTC`$74*=4BL8>knl;rdb7WNR0$mwg{szwbtwKk7st(;w{@ptZ}l z_NZ5{X;}m(l@~1P%wC(w7bhOP|Ej#NugOtU*g}UdKyKVZGQ6H$ZlFW+%0UV7At;c| z7B3bHzbnG_YVKFHu6Fx36XqT~?b&On*|0Erzlr_!v5y;CKUXw86>(R*2Tzj?#E78 z`IL3Kw4!uw;ahabh+1xJ5cJ_tlyDg-Cy3->x(0Ge6R84a%NgwP(?$k2N5vIjrim4i;g;ak6$&K7Bf~6l z{wl+X^mgI($vH;XWG&q$Z0QDROV=2**InNuShk$?aety0Wxn*+uMld|RHvNhg|Ze= z)kKbHh)JqUk?2h42j)_#Q5o{Gyi5lXuW>24lWCUPN#;vcJFgu`>id?g8j|eItP|vZ zAH_~q2GY2&)CBa!4P9lGK{qHKG81_g z--t}=G$;yX(!ZiSZ(X!1(!-@|&Q)xicNN>mF>DNHVNkN`$x+KQZu z1N$bUI}R>_;wosB@eAL=>h(;k7~N$(+^?+#wvZDR#V0G(0-h3TK_@JWcOBh3HP~dW zZFj=leYJKRiz?7l4Qk537)qT=$NZ|N0CEUaxfDS=TWE>Ckiy|57l@8K-9tvAv!<}Y zgGHb#nTv!0ZnmKpO!n4P%!OrI^i6S*0tH*CV9LQLuFx28n6-qes9pG`Tvz-PI&Ldn z4#q3rz?CqNoVNK|ij)_HFw`(E<5=3<=83Y5QJq-r*rEB_Gpvv_s*;ug4MjKEC?M$$ z++6G20@{AEgG+6hmQA(OnBS~~vLh?eL#N#xY-(X5q?sa0N~1h%9T9wPcA5Mc?_a|Y z;9n!1Cfd)r7(&gdM88C65U|%lTZ920J*Sw#xQZZ4$^pdsAzBE5BepQkJ7Nf-iIb3} z#9wqUa!-^c65VNdkapBYih?R4f-C`b7A!?SM+CJnQM>56Br#n{Vzx*U(=SQP;U!7o zQtBuZRH-}_F3Ymq>O@)-=S5oB=rR$`^AJkyqHMynBs<# zc}@$SI3^RCSO|F0L1Y^O|iLW4q$X?kt|{Xz`@{LXrf_ z1H_X?H3e53D98-Pd`t~j6g#(f<;7k~r#kW1(nlGLYOQ4x`pLRl7%B9jjoM|`Ws~d5 zCbva4xqjK?-h*sPWx{gFtTT?sh``5K#$zK@Aq}WE??r`SppsTeFe^*FrI~CLkaiyx zhMBRW_W@NHru7F^VVF9cXu7y~JxYUdT@m4S77=dT@B)2{eLu;?t4XLdiKU?6=F_RP^ce(UXZ>Xv;MhlE#IziJ(Ph^CXK?t(-Y{Xq+$< zQ)1ZP_{|JLivM{pC zFsczY)lOj;MTZYl0s|PUSiA7-h;as$#H*n1V60uUaF092x`XOg57kXBs_gJiQ?ig* zQ6wo0Peq)HoGX_(WwMOr%$nlRD>uO%Du9WVeo_Hr%&@ggv(#>&V?x*F!hvAN#&}Jw zY=#MN9DNj9To3z9(6-+LTXUM&>gCwId)&l=D81ppmglFE$pA+KvPs|)EF%sL0B9TG z0;yf_mgAG>7U0DmYy+gS^X_)iznCH{4qimd!Y~x?3xcU+vbGKHh3YkbvNW* zhCS~(Pkq+oIVF-jiNQQ@JTuHdJH|#PiJ=KA;)KSBp7I2(QI(h+W!fWk;A&PU-7K>c zb_ZX16HS2cXtF6b;8-r50N&9i(+Kul_d(v~FR^y_X!gYEJWGl8+$n;0ku#n-5!S;f zFj+i#z4sF*_5hrTar9s*(G_Q+(}nY_=z1>;w&Ndk8Y~50y>e#5E zxne2`+=87Ml^43OEO&y%AnNki9ePDV2jmW)2&>T8h^th6aVJM6Y{iMt9(y@C_A%lF z*QL#Fj=L~r+ah3ViZI)XVAZ{Q98>ZzwZ=e?1g0!eCvg2RlIU9KGu%bqUkRtuh@Co@ z;HL?2>RqB+5>8LpPy?+a3930o&`3i})GF8uB+&`?yNut?&cm)i4fNg>P%oI(kD8%< zT*;o$zGsU(T~?(EUMQUI#O%rZO`Oh_7&44Kruxc{HN}73utqErf{a6qad{dGR=~%a z_Qo?}NMaT2iZQ%L?Eu9(7TLp58UK8Tf$ctYFq{8;`TQu@wEqevF~pf5BpzH3R{d&{nMMyE9%hI z{@x)FXZlg^8^4M#A5!R*k9s3PCx#sF7du*h+FJBz`~0T((TxGdw;*P>MZ9v4vtjy` zfZVQy$PN1bi4>b@$&Tr5A*KJ&erh%^-Fbq33MANrp3Jrg3i<_5)NbR>Tf?0ArTqkL zT)Fe~3>z8lOiyk)^wbeEo5^`{i#Qa&w4a`hD|d>X?F@$EueM%@Xv7f9yRm~E{fEXD zcJ$3VP~}QEoflxZq|2`{s^4E(bw;@e6mBYUuc%|V zD7fG}0`;6JYqUNF4c!?hg^XT-iB71tma${d)Vb758+c;hSv+U0u=ZH+cIFknj%mt- zz%uSdBRzdVbt>dCXl!JxC#1?*#D91`~BZ; zNCCD>p|c`O zbjtEf=T2udtpR~w$8QG5e{TMty=MWEqqy!c3C7}EDF??Eknu`bcQCs*J^#6r1mbj{ zvyrTlPMDv3?wRSiTd}*d%ohAiUXLKKx_g*xD;?)u5wY3 z7)V^C5{z*r*uh0&^9kg=?%Cbh)$ZNi-QFVGH!9uEr@PK8vnH? z*G6CvH^dbF{GrX7O8TR#t@Me|^C`&- z!^p?;;j-$;#L;9+?0*;p#8(ZKWnUe}f2Ec3R5Ac8)f~h0D6w?M*HvOON_@{`hHJuu ztLhV-$A49HFom1rzZ!7Q+fEl40SB`w<%f*3cFT|2jXRy5hFf&?F5HQ^dbVw8PTo*f8k)pnliW*f4F` z)!`;|rMjuC8$NJa2*#1*v{X276+4d{!_xwcZf~24Z&H=1zG4zz4P4VysMhWCLwLkQ z5n;}%`;BxXc~|?`(as~q=&Ild!hrTwfsS;VbtXEhMV2i&B}OA}Y64Y7F~@L(dn1MR zogsK+&%mI0rh|Ko@Scav<45%PgKdi4yTmMyktUR1mTH@Q)dc#r)x<0TM`N=w*L=1idG1+ldX=T;rrUrr+uZ4 zU@V~jYhVC0#sASvVy^1{y|~a#{?a8t+O+0UzJz$Gl;Zhd{H(c@!2E0`3&o~nsm+PU zj>Jri-;8ON>sY#`+A8s3>a|`REjDEJ;#z1i75O>$K81a0jQRZ8Q!CcqT z?Rk*mAyFrSD6BHGD+rmMqAHfl3{&$opBWA{eIT1<*@{7cRGlHj3e#O8k6{EBNE1Kj zLoHCrbj`NB0GMc~nz|r1g%CB*O2O}ra4U*O4c`eo-y?=&5uMq7VCasj1b~>?1|4oT zCHu)z#X~p4UBM}^eN)wl;#1YPa6b{TEG4i5g#>}2S;l-gB|3uGJx^CqvNWoix*xbI zVZ?+XpDB*vT25dx>Z-Jz3^k+FO)7alFbYNzN7o5-+Kz3(kD^i2CcsqRsiCxH@9?`l zNUz|P85Cw%2t8V+SZEQwarxH*`X3=`ll})UjMey$J-M#mx#Rp3)_e#pn-j*iZQTXG ze*phaIrbR%`~2Kx*Y)+i=hU&STgGROdS&m~;nO=$e#gmvSmv+kfrZ@Y?!Q{^ZQ7#~<8#&G=Wgp1$+>L+1V; z%w2!l@K;8LCHmOYx4m%3n?L&b&u)KY- z|K-ugZ<_et6E|Fa@3nUyb+E$D>>K{Z#iK8lE`IT)bML(4v9}N1d{^nY-#_Zn4?X(a zjn^LkkAL-nTmSOl#ZO+*Cw=(*Cm%a?`ul(U?Wdl-@5{&Cf8#aJocHa%xhqb;+dXmb zFW+;L^~&G&DFe^@xBmS*|DAsM;kli`i+BC=#Rv3Tp8C!?b8o!#+Nc zk9XWScFp5Ye%kxV;}4&4*FAe~xPR<{{95m?U;EuJ{rHh*p1AF;?{5C-w`SfhJ5Q{C z@RC%3-uS3BQ{w)Ii^!6(<={l0JB z>R)nS^zs+}o<4(FX1Z)#aT#mra_e3ulJG0^*#{Ib_;$)Ecg*I!F|N8_z}fSEctano31SJ0aW2I zt$OoovdD){InXDW(Qv!?Wj=f9q1)QCsKZc%YHgiw=}SgQX%H}xqCjTWay{U1dRjH& z@wul1aSLpgo@YGVwHxz;smICXQkQMLioZv>n5wmaW^0PUoYh z3J7YJtg8mF-d^1sytr$g{l9p`xPAzLb82ZY=I{TBg_FIF_P?TAWVQeA#Z@=tk-sf1 z`HQxVZ@&O+c|{sWV=s$wB4~~q_O0yt@m+&6Se7v8#cjHr$XPY-Il#8|vM_@&4NuFc z4?lTUrV^%2vnwju=}oB-96mtH8=oyQ>=XDCSfwzeh|I&@6pcXL+a#tk23r+!QF_mo z^hlU5(sI_#CCeEb-Q?8si1BSw%t)ZyrdqnK;mj<&2O>Ecy*UF;8WclRVQcBdEQ8Oc zvtE2wUY78HM3&~#+?3x$YBut@qvwz9kZ^s5t5p(~>{BS6o6Q_f5tnZwJd__!3j4PO zZd>-VQkaJ?gDtaV^K>$q4GB~NmPD)=0_VbLHqDci@R-L`#jSuU9VfLYSL&e2t)=Un2-q)zb~N9Tq+-c~Q2Af|9^x1R80WmqvE)mdaBs z57t~5Nq$@}xdiN? zA>6A7?}mm%2IR@;j;(DuQs-G2@Bm1yI3^?`P9SJMREoTJgZ_=EbS^!O`FhW|Dj!-? zIk~kx4Vp*ec>q4NRYx{yM|A|0cCmm(tl+WwG!xD##mY^Yx}}U)0!=q!IkZb>bF4Il z?n9*VEGk93+rb2b)r>r0)n1#$jYYFzAGv$n$7G3jTx*}{-v{w{%oNn;{BACl3VaEO@&CLeHvY!2PH6F4kssb ztP3Ru5uHS#NPA&%HZ9zlbfH)jA>Lxs$eS({h*6p&3WS`-%6nZXk&D>kixHGhgKEs8 z0u}gRds|dd!Wl^1;N$jwUd)LRV8pqC4>(Ts541?T735$$$icV}gSP2*R@s0qC)y_) zs}pw|Xxld3IFc;>ny6}`-4^I{Iby8yrrQC5FAcWLTy0c~?6O;ykuGI@=F%t~7IL#)FYvG~v||8+v106o z{%kxZRuzZxRG7=t0#^=%$^hMI1iEW!Pz;eY#;ifZsje_3Gt{i_3qg~WN?|2}p%RAV z^Rwk`m1L+fEUm_iV%! zAsDoVBxv$su2N>hQaLORNy@O~hLI0y2;N4Rk>6bjJ+#keh9t)sPDwP%()3i;_gMkg zttwUjS>k+y@K&Zs7Z8H}qzt&xl=wzhW%w^$065BsE5A{sOHg_-^X7UH=$c=XiQ<5{ zG(w1$v1P}}SP~)dMz)=dnYoLm}vKUah*M^D0rqyZap4H!x}6TXqyH46LhSGYl_90;hM~ZUO7zDDBp@I#K>@B3aVge3Va|y3p;}oOeU_opu1lF zUPt0<_yO=l8ldlMq@xOu@kj{+Wg*zrqfd3l9Gg7T3wX*Y7DN^Y~(_@In&TX4Nal5Ln%`g!2`4aiZ<^n@Rdi) z>HTz?NrtK9OA-U^A9{v#SSin)b2*z0(6RuNBa!lea)ykq1P|0?f2g*uKBvM*v(>k> zYWQq&U`~ewcB=$L;os-Z$umDorT#pf5$6App+JioIM8vma3yoDG4)caKL>>6^jx#i z&rb9CTs-`^nU5rX2%UEsy7N4s0R~*QBtars%9bU#^>SfJY|Ds;whxP8rB)7(88~Ik zSMaHuW0J>mIW)BR-V)r-0MAA0`|&e$#~aIHB!io%+Wm-;UZjb&e~Sw!JJ zuw!U0J6WiY5~9F#js-XhWDJ%UxuhCuaXz$QQwbZ9rx}Dq9L8YTM?410k@$&+*g;+u zyx|Esp;*C}a3BUAfQ?bE&jU2wcdJL>J3GBuKD-WGLQ{GgG z3PWx=J2m8MzC#^q8jfM8ByddAqy}?z&$Bhfr>?EJreQkHM`*q{>=!n%8E8zI@=RIU zJ~l3$Ik*N-{|H?S#$sucRDkh)clEhHRr`cHuEj%2-XIcekT>ut;SB@BNj%d?3n+PU zY9W{yl_hGFn01k6&We+DeSc6XaQnJ{Kso@zgyzY1K(v3u1{pOEIiR@`lQ+bAaB-@* zp+;ArrzEZKuTG2%WS|N8vkfKk^5Ubk{R6|&9ORi>kPlVq$IyXkFeH#GS>*RF|s%%NCVO3;({U1cd6(yDwku zrQ-m~#tu3?4&?3Mu$aXi5J3<=E?c{*M5szvXOab2RXJMSzqcPW@DPlKsSxfaaTX8< zew?oh`D9_KQQWqRMzEVR=@UF}?Bz6ey^I4QTHj@$X1(jme7um%xErAL4>V=0lo!mm z4a7N-4^#u;>3M-{A7iuqY#Oz6`eU_^h4Ye1Az@S>H2 zzS>SJ`86Wk63aC%#2VT!FoSC+HU4Z5kAQtMkb!%DGAF(3@@;u@(E zbEcVAd~;HbU{mU5u9*nEB!L8Amo2mWP>evET;1czrH`xw z6KGfze^?p28nd}!xg6$sRjLjJYSY;*_W(3@IQZsVc(Wzh0i`x4UvXu>WmQWIXL8G7 zbXa9~SHGkh_>ioaD6CP7<88IdchUUn?-QL`U9sa!qCps9N0waEAQ{|gR!hdWu2s|3 zRm0>MhvrRv!z-QU&jNDRM?Jg1m=7HULct*uCr+elcP~_KbTgle$HZJVQ5N)0ZCKQD zT!@*FXj*~?x$Nd;mD^^#No{UuxHVYK6%pi1ZEjGeYkf;~x=R4e_-uL*P|M~go3e|Z zvYHwfniDx<8-TBjo%3@hJhaER-rBZpyWMtc+qUiYsm-nJt!>-3ZQFS6zV{EfbAQU2 zWHQNQGLw_!obPAgmVcey{@$x!lP7{RcW_b;{=S)7HDQ}8T&MJjMb#Um!t2mZOtTrd z5@BN)`TKOE#&SjfOKTKZD4g*nsFBik4y^jm5eG28SXVWXpJ-pbT+kh`JinA>P*gxB zun%Z#L-xpp7J71IYqIPHB2e2Ntay)LUjz50rF{Noxt!0NDz1E95yk~^UI9rm3aWE} zS7RZpLcGm7T;0|#E;b{}b5Y@qmQw-jWuf?)ZjKz=C6-vR!=-=0T5S6Hq_7HO$6ewS zauv$|hB7pnLVWLSHpo1WTPt}K<+tUTuq04rO=4IQ1&T-lhELoVU2>lXO^*+9B3rvn8N4G=1unaA8r5mm*?Ma)UbX>xb@0J4o=9aC|cO zo&(Z3Odu0F!Y^$}BvF42MY}XBI1}AV#JUrh`IiNg8HwCclT&8y}J{ zrDW!&r;@>m*V~!`iRk90um0EWDk!jyaJ#M~`#Cp07O5t}=3M^=eio%FtJ377L6nqI z7hCXimUaozgnW|>B)XcZklx=U8A-!kw3XBWCalEG9Q^ucL8;-*ZW*W^qGkCIQpbEd zPhhEYxUM1`PoTMjhc5Q>zY@lS|1ck2urdRWBb&(Zeow+y1aW(?PEwN}bU$o(SehLR4foN^i(c{Lh zFq1H6eDA5+4=1dp9!|P{0iu&YX)&DmIrgs^x)Gwa<&wekzYR09o&3zOxuf*)4UM^hxE2b_MX|QNA?2-`UkRS6jxfa(;Nu`<;xcb1Tfvd`1nvoH*8|>NAkOKB9Gks&lmk{*NU3U4wh; z&xtqCcaYZMj?+CXE3Mu>taXpH2UEI_J(UAPzrEmMSPAXke5`T}SdZa&@cxYnP4j4> zjYV(Hk;u+hPyTT|zV-cVMIG-uji?t`sfr4`f>7Mh^d}LD6S~xwz%m>gB93!N8!E93 z3_BvVb@WZ4hXoUOu1PpoEjc zUx)S(USr={#OX!{^Gd|$K6XD-EVYc`lB}krO(=172N95Z_Fbk>yH^|sEM-n3c&_L= z+%`x&32{|eu6Xb#7&|I_cI(~%vsJIO0Jg~R@c zWqO-p!njYAUA*^HU^(OKPyfwUmHFR9BIjRI9*U*Tg1o&sWmj&@A9C+qp8dKSow|1$ za0^<#6&8V6lJm&%^#OPoDouGOtRbXAuCQJLL0q7Vi+MrQ3mox5QjLCg-<@Sc$a#$r z_(}y&4-fm5aftXJ_Y8*tZM;m^nWFIH1T)>G{8TGjZUEKHQ+0nK)Eb*?C40%KkI z`JC5Hs!ijEy_1utmZ|6yot7a;ReZI5V;)uLMygc$6zOfyqB9OH;AkXk9QH3pDmXPp z?p$1T^j;pY!g3_e(v@XskVRP-q%wmPkQZ*rv^4@27G3M)cIQYf#F**f#cd??G6&00 z6T+}cBk7c}y(~to|21ivOxdQ$fZKKM@D1U{2L0+NBRl6N;(5{TBHHqox%rX-42743* z(u$CbPxw!;p`OyPkdaHUHG0Eo{u*VWrx@1Uq~l0e0uv!_8d_wX$v->>ybITxiJFw8 zM-rO`32O8bt2MtVvR>eag@wNCqVil)?Icv9%Op*o7qJLt03CZ2N$~gKVB%a+<8-Zr z&$7$~i=yOs5H{aEnkJ#F0Q%G$IMTSL#30nZ5V^Jk#(Fx6b6MEm+{n;f<0RNg^K!mP zxdk%1&F&dFlZy{2%bds*MH_{vTgp9?2W92fp(n zEHikd3iR@AGn%A!=C-Yh!`~0J9!-cn$;x3EECrxv1Ai7Q{VpyPxmV7 zr7-fb`o3PsBDj6%KI^Fln&rY^g(E}fCQ%j?G)+-t;v==yN+cIQC`Tt!ygL>|9Xb(x zA9yht@AwvvM#}bF8>?QMtzn9wDMrN#uR~gE6)>6f*Q9u5vVmav&S)nh8E!(6XpuXL zjGTw2@ov`k2)?j?fneFNEfw6(9oi`z$S=Nl<0T1yLBETsSA+fyd)uox8^CI}r_S1o_-+{f9suGq zb(b4brE}R57p>kC@*^&TwwroyG636kM`V?7@muFfxTkPicU4J%>F+cye9JQVv$ZTR zBuHBqQAps@YmpaGeGqZV0`rYjFQ}EG2e5zi6{fwgb>qE)AM2&LA9)y{xG7&@ zj50-jqbiK0ubb{XrBnNMDF#exTIyy&EIV}`mx7Mu@AhPC>?c28FQIkiqpW-K5;^1$ zVKWZg0Px?hMYe#&l7!<~RVE?n{nm&CgI$~>i(kPJYSK%%Pkt3XLhYqGb)fL6~XQR3U(04k#E{X0c5nHk9=W29&VTq$;SIV6VPJTJh`X|;P6ya z!l5Fxs+{d-T>zIpLOfygMtxE z@h7NGE%hIs%}o#`%=dq3{;gkp%SwtJL`t&V469d_mFIt^gxyGjFV54&P^lEJqE*~0 z5WA%zT}YICjP?Nx?)>4UW(kY+F;?V93u%NmA{YJ~K}u2Z3@P*`Uw zhc-ue?vGjI7nhaCZA_FRi+mN!vmEvAv(RWWfJWwokpH(hu#B^arlLe-#9o?FlNnA| z(Q6h2;3%^s4c?~8R2mSX>F-=>y?&qkCvU!u?lEE=FI}*QH%`qxWGjd z_heMA@E6_b1qt>=V48+`srI38eayd^O|!m@r#d>ZooJ z1b$^cBwaTXO{l+XQ?;N@iD>AJC}yVN34Ji;&?e{&l=!wNVQDMy7}ROiNF|3Ocm!p*5NKG;zhP4)+8%^Dq%}GFg6jkWxoe zVctf%Vk)E$S3h!ATa%b3EF(r+abRRL^x4xs`<7IKHyPf!Gq`pr+$vWZRjSPD?w*+h z+r_zA$MfkQB#BYm$2D!V1uds4ynt*{drmn!HQ7@&xSK!m1PQUQpCTcr3FwAGlYMNZ zqF&v44Vw(L?POVE$Z&C>kRGBiTv1c@-8?u8k=3i)!+*hXw#63nL?CLQ;shG3^A zSO2+Tux{iZEK?^y>T<<0hAaN{f6>wkA^Mx2Y$ktV@`E_%#ifpA#^Rh5U(LPE+HM4;9&h)GJ(Hl{DTpe#{@Y_kq#>INF33 zntu5Ze!40K$5;DDv1=qoe=5AJ=i0{}5EsU-Nk7acmNi*fR0UbbkiKh)wuSdOD+y8vZ?i$wo?r!7xcJr--BKPZ$T`BC~W=2>XzV=i0{` zHjbz|S`w+NeG~uQ%sZiM9)Z%~eWe{IZgObK_{o`GtQ9DDi$duAa63WTmNQyw>m~?7 zpTa77KV)`EDiEgQRRZ|AHoVvUA>T+L-yoH4)=sG;o#5|~e90{=buSr8u8I*`k#7l4 zYd{QaxCE7#S+^*TO`x!HVZe=Tf0GT&)=!;+CMV2t z!ATwndLNWTHbkZ<&SjXY7F)8>5$tfx601UsM0p!CUL~)5`??~ADD3g1IE>oaq|@h9 zXhE~*sV>a2ZHx6=i3K=Ma8?=EBkyuJ4JFw}eY`Aq>p%?VVw()@O~c`9Kfn<9(xFeY zF{r6j)R`fX5wd1Uax)-+8KF0)SnG$pH@cJBp+$0*I>B+mU$M{Oj8{}%9py)t1^+K%E6{7hrj9V^xP>X!61H{j_#MN04bS% zt@we?-G3^B8#t*+SG~7l`SEDmBt=f|_z>w+2uB)77roD}c6l z1q*gqo~b>HwX-&@?J^KTT_($A;d4q1sf|Mtzb;v6_2lNl$C;0@j#SJi!j*x6?r#q$ z0CGk{D&|laN49=2r(L(u59^frYB%J!kJB0eULW=VqTFYr^vOnz-nwkA5j7*DT?TsD zTIa&`#9CNfD*{CywXHirWF&bK4kFCsG#k}3dh*XYs z1eYfWaDU50G39Qe|2~U8LXUQNZuWXQh+Dds^~yw2JyEqeQ7z(&Y;XW#*y^5Xc8&b3 zIJ0RhHEV-$JsF#sQg^pQ$fui-MkT-<`0`or^ZV{3J8XUa^jydvJ*>Ft@lhecO{Zr@ zAiDaaQHX6D6#6oQ`EXma3jk1!Sj+e9+y-io8FHp}z-AXRWk0S2aRyWlHZ5sBebJz) z0VKJn7HlOl>B>yHRTEtqv-P6~j2soG78(zW2}>;RD9F=ZQDRG<1dIEY%8j=iP+;6M zD4Lk0mF@{00x;?K&MwV3Vx3?7SZG_6&adJ1JA#3G+ik}*C?%dAo_BG8?UJ{VJ3)+6 z#Oe(D*b6MdZ3ZQ(PhB6W8?kuOmD6FW_BVO^1g+SVhRjS$9l>6zTyMfm!GjS%4OFA!YWq=krVHa+Z+76iMnK*i1yVP`sUeAarcz5 zJ%a5c=5y;qjt4c>Zf<(mOA!p-l<3f?avwCSEF8K)8~4|EnxAP$+mz@8P#44A=Wm7=||X6_4F38 zkpq_>U?>DLw;30rthhV8^%5|XbEin}6P&mh@h=K<_wtS3Z#(Os|8XdeQ8~R>Bbc{R zw9{TJ*>k*zi|Cx=rImce%Q^=EcnaD)(k?yDBr+Ke)wp-B~M5kzu0z59GFld ztmRdA@#o`X;K_C8FgLExJz;&EMsS|#_p_a$yLkhzclUu8bYyvCZakZ6VUhxr6!Z`c zv_^iO$}9y9f@;WOQI$|W(Ht3QQi__Tid2Ev6+g-ew&V;jgv{W6o zibpzmZ;?Vm9;e3u7#*9MY@#zgC}zx|^iLmTLLot9$b!HxC?TN<9tw6UFe;GIQ#2`( zUs?-4lT^TSM5PR>D-+bn;pcygCYC4ofX_ZcMi#0Qf`#!UiU%2^5snlchU4VvLqZD_?gtBq&!CHEbNk5^ zJVGHFqC$(p7fFM{evSP1u10PiN7A~NM;4kvN|I{+yh!x<&cWR!5Xm$&MzXX{(;Yz+ z9yflsKoRtJ<|xc$J)HevIP(cpeLs3dw6Th!JFcVk_WYAO4=lHiQSUmbl2gJ4DAGYQ zU1*~qhL#2$^sR#BvyEuHt+|4R><9^ORLQM2$GV@DNmXi}`6aREiD4i$?6 zBf0C<`3q7Sh|}0&L(HRYjfNO_!%i>|Iu^*Jq--_;AN7VC-~8bR&~eiy@ulGVVbkEo zv)=zH8B+3PvVmN@@EYJ7qusL>ztaiR;!$&PXF+JJQO~!e)mndhwfuOf~oXsFhy2)=%kZtyCQH?)HAuX=~q z1041^muV`M?8m$ss8sWbAYvVm960AIg<27oNl@4|*g70ZU(NUX*;}p#@Ef|OArYZ3 zEVF-+t|&iQqy`Sdkm#5ISy76z_vW`80{=t~^DNnq<6gDJ zRC|O(63%~(!QfJGrpF5!SK^TM>!reaA~s$qP(`C{b%;6K*c6?k`9DQ`f-eo(H?8f8 znZ^9Uhogci^~z) z0RtV8nXbgt?lKV#NNdE&AN)b9tjA}?P%cp$T$-AJv7Jy>ppE+fvSkU(4M)>OCX0S~E@|~u zu!tm3FO6Zxb8e!MKv{YclHKx^X4t@lCUJ3`9NW&S3oZ4JxP*uvZ~32pO>KHKl~Kqh z)Xl1q6!zP_MT?mC@H{~AX@g~y(-o0aOif9Yllq8KIdqPqrut zpvW7@Th(AVmk_eFK;@=gtO9IlasOcb@iPGptT=9x%Oiqc7<{zjl$o8nW zoMWZ$Cdc~NZ56eLHDjq(ZMPUZ92R&}6B_Hu4vH(vD7Hd{!$IR+A`KT7V8n%ghW?Ks zq#694-WzqaMCzFFZtX9SLa#(C=xlg&g#gIgVnesi1!{OsD1)WGE7O^(O1$8(Ky_v2 zLvi9|6kS`9_bP3dCPK}sM!x=aW2@rX3oPYtnmx1!fC>*}$+TjCWUC+v`-U@MLn3l3 zUU{ja_f$^scN5{}H5k;hiGA97hcz(Px8o)0W5)MT@rItn2g3Qo?OG z)UzDnr(R;(AAQJ;vN!AQ3)}b$;I_624NCr1Nq10Mj&@9#th|MkyTR;GKGk-DfY;9L zF;S6A=nLO~eDHQ;1d>q(-sA$|?6~uGb*Lr#tx8%N&h91?wTT0?Ta7D8)U#P8d_x)e z`!ddC%Sn25otdhdpSY$}Tg}j}tI+kr1B>=oiR1k~%K`X5HdZeT5UI4>%}OQBeu}ZF z^{N_1v!qZXdN=6KWV*Su zn%>C!k**63Z0mrj_5~(kF{uC2f|-OK=>~%kXx&nulqtJWh3`|fNl&{Am7wsSqL^rFbg%Q= zV65<1Gw7lx57U0D^nJ?9=E+W@ur0mH z`co*4x41*c(OppB4Z_l#w1;n$;)2Z-7@KQEbCp3Jor@98E!co-ZN06ek-jt@b;>rv zjnpM%C_q(kA!JB|dSS6wgFsfJe=gko5>QH2c2KLo5fkYbLmViDV>o23DCaCMezOH{ z>9WsTDoJNyzQb$Y_{knwp+aF+h$?3kfL_JuWMgiJ*0j1WGjO3|3NKYis(lE*(-_|B zKKLY8R_zwacir!mAL3w@B-1T3dlsQ6>M1c4fQ^FCcd>(585_r1}& zC<1e*`&T8NYE@6wmvo6Tmy;ZE`oW*yqcZs6eFkZHq(wyEsI$#QbD~Pl<C+kii3G$fJKrhS!fn$gCChf=PY1-3Ou#qK=^ORd6eJ7@< zAN|xMOikm4PY=U){$m2Jk6kZ>dMKJk&b^JnwZzP(Tn|AWwzJPH+P30TGT&-MMtp}g znv7Xkc56s!IO4Hn&Mkby^N9(9ExjAETQF;ctTMr*pU6;2@~nwZS%m9)*7fUI|2G^P zp4U>DKS3%vVVS1sD(e|q7{7>_vg4mr4c#oX-?2xkS?8MQMJ>Ikc9_E0OYx-|Ag3_L z>V{1Tg3wXMyg0OX#2-;GwBt#8rt`6fut9l;S|Q(;V<+0)`1%Tp7HGnZ$=ahx7~8<63j_WBKtnb(0SQz1P;f5sS`EWXRUWV z5Pjx={ZpR2)p`AxFJ|0=5#*G=+GOSjOm~RCz->-_Js;+Mtj_wrY?hXL2pC285_iOS1j}ui!ohren8vE`C zaq(yVmzEpf+Q&BSZ_1Ab{1d4bpD#-3)u=Mv4|l%{)E2-u8|Xe=*Qz3m;B^KRdn^`Q zHC>~%_{#lf9Bw}R2k@3O3L025lspKK-S45e(@%V@G57miafmdga2%HY)k#6Dmxxp& z8NNa`XpOSZ4t>>MqRj;UruTVg7OFk}>d08VCv@}N*w@)rxrS2(d2h*kpnvmaM zE3lVRwl=7cX^$I1wMQw{2d0rZQcRdVG>WfXjtTz;XQ*#P2e*|qj%4HEZ}~xWx(@+1 zEb+4X0ak?3IR}^1t_D@&=9SN_jU5u2O_A^;{8&b85RbV$p%lU}J_ipjZX6*RgGubO zl@jJ{vQ(Y!Ba>6p>C_qN`|`(eG2u@N%50{OO;Od=aCK&jhC*cCfjKjQMRrF0QnRM} zz#DAY>$Uq|Thu(~x<1d`Bb@2Hq(=0P`0~}Pk6OdPmXsN@vP~wZ0zGf- zw``BM0(X;{P9I!{#j@0!a$ldq##wp2uDwGvzlA=QsVvg-tUTPmMi0&Ok+D|CDr*iN z-79_}TBmgtA$py^M9RM#Q2~0g7iEI>5{ySME^Q(s0_m{tvt8!)ZTnhsO)v}MJsl5H zi>9fC48A-S6@!`Tpcvv%f`geqXMXaahqOLKR=AykAxVR}qN!ma%ai4+K03@Z`}}x1 zRn?R(^AKam}mSC27la*bnlvGua|AJ)iXJm z%Kp9 z8cLJ?cRbx^nu)t`gqfX-Wx&Z~_=vpwTiTg7&AEwSy5(n{oCbft#re7U1{VfRQ@1;P zD0AToPdmoIV8v~B2jfV&pVE1LSB< zw7I}B!!*79Zy*kN1$R0tH~B@FCgZvjFHl}?A7{VE5hnK)P&IaBQIPM*QFGR5CT%s% zgcqR>PH(=}ZcsLScCGJ}y*}{*v>E=0QT`?ytC->JJ2_f!k8ZvLqWx|P0778Q} z(cS@NJ_S*MGlRf~$rs?JxEZaPeU7M>G@k%!+|1ws>wiCR|1a}t?`~~sPIezJgDb2$ z+1cWtC9)utCB_ANr|4?h-Nm3F3%Z+BM!@<8V*+BtISo`L@?-qFj(jc3?hJOBUA@ZY z-_34+E>5*HUuys>1oWUI2{Zv5s`5073kjIilwI?KygeC0-?TjV;730=-=d%iyg{E* z7vY&1DO3fswz7(_JGgM2>KF%p;(}@70ow)|$lEDVRPr8Im=M>=yhY2vZa!okjXW!_ zT}B4o;avJG)ky<}WGv)DGaIyO#|Sc>|)nY4ehwuSU-t&4JH|=i|WG@ zAwxt#+$}s}>#<)MMYNp^(B**yZlSwrzovIR#+c!hIYrr%(;bDdE77CGO!EVxW_8Xb~WnF9Gb1pxaC+O^iIIxxr!MIQgFxK z!S1z`dTen!Ei^lOH`+<00*h!;l9eHpk>O*Nok!~iWBH^H1#?EHW;Gz-D}`L(Gos@K zrl{1+Q3y^Uc_T}mASsVkMwUHQ-JGQ44)Apk;d2u4MdVGx{}DpN!Az}oooR)>IKVp? zlks?O-dLrYe~z-5WwEO1LGVhLI}nACo%Uh7G}QvH&&-8VT7YQW>B_j>K;nUZk~*MH z6m1<)=28&#V`lLCVX_4ned;y&Z7?m}4f&tJ|@y`!qC9+(ZuAP?dQWUui(RSE5|u?=G}7 zI4A~z(Da=)HvHlTZ_uWNA_A3AfW`>y6Bj{aBBRho<7xOc>6EuE;6iu9Jye&H-!`i< z&nXaz9n>48e7mow5PWNcmqbQnw^*z+nFWwe>Z&y|yD-xLkKtTre|^G>?y+jmIca|N z|3#_$6vJ@tmgAZjDfUwZf3y8*b6n%#6#+tCiFs0Vq|V48Bad+9>i0W-!QJ+|5P7<= zUQaK3IL68i68!tw088r?C6gF@#xfXJ;a7}5yOF_?;A~6?$0cBQxE;4YfLNkFdKL|CAQ1 z?BB|CfvlQv@=qSc??T@vVI0T9bIkAp$`KwAi=qkvzRb4#EHj68*0=fgxsv^^e=3kH zA2ON!x|@Ds6wh;E#1tP8E_*A1@A!UqGdRU8eda#zkntCw;fgg^atQlwe0CfuEy-oC*YVV#12aYRCD`@jasl`hV!9>;@T zbctTv61N+^pFNqkz>t%H9nLr#Z@@t4Lv_}Ao3Yn-mix{sE3dD|f;-^5PyVf}YCmYb zd!(fMd6!T|m#Dk>EWr45`IksV|%{d z0bge=);HbHZ54Ke9mlWm@_P5Zg}JY1z8msBK=(T?;?B&L?<4iq z`Hi0^-^U!t@%KPa%h7^5-+h@Z;N`Jczl-Z(nx7F(N{Ge_XU#mKCH^F)z_6$!vp@+l_|0YomxL^lZ!u&- z`_Cs#LfVp5po%Bcl7i8Z`7zUWQ>YJ+lXt(dVdS;9YPs>gdG>C(;Xm1QzUDu1?|v%w z)_c2^ei_ds=)4RLqQp-Wc6Q@39}oU2{FI z7tU^1S2Mofv^(CGR~4zi!SCI%6Z=lfPvah^K77X4dwqeXi@=#quM2$r)~j;$wcH#} zz-Q0`5l1Gjjk^(eybYcYq{BcJ)JI|vCizg zHQ~m3?;j;Di~Tz|`LA{u#m&4{hEi?6`+whbyg9Huq9773rIuxf$-UNSseGgUwMhId z`IU(N)`KUG`v!pfmcUpoBrk?+F&F6>vqX^)wOW4!xRS359)a#!R0jxgh-KQe^W<0Qy~+U5s|7Ys$*t> zHxVU|(Lkdp8imR|3e*noJD= zP1A3?ZKg{;w`#6ZP>ATdJRaQZXS$atadTHC%bRBWmx7TYu*ukX6mv3bI&A!~ocoB6Y4jdH-hL>2 zNw3E)-Ec}9PqI&say#tLMuv+(>mIh8hH#^SQ_nK!HwSyr8deaZ3QU8XjWX)D&{kyrP)UDgL*s?cIqe-n?_`V>tRUdQA?=;|6xP2 zwLQC?aYu`|gfw8lq}DN@odw7^vRC8!k5khxjNGT14O$({i%s!t!VPV(9nN-?VNr`2 zD3mrxmd{2srfQK?th{8Kmuw9F-*DHTGwFv;robB}{F<$=o^daIx#^=n`n1%XOHqks zMQWK*E?t(r584Aa&t#8v8{(0(W@JlckB{RH?6^EWj%FVL& zFD1qRJL2G-rqJjpXAV1^7x!R_c4_FJq5H* zNXei%#v)lo&QA;XPHehS2Bq=-Rtp`&ofh_xX|7ctrM7qrtq3inD;k+McQ&qFN151l zB-lM486iA)@)vc6h76Xgc3cbWOgjwd;J|jDE+06TEKD?h_w=BVUh`bfmp0vgbh&WH`UM;E15~3pZ0nBRjoLY8 zMUVIcHGgd_Su0coQZojiUI)X-(*namE&74Cm_3%8?2HRm*m-t7!r&fOfJb{Xw8=MA zJG}775^!2}LP3nuAY;9-s|ppa#Vvxd#bl)!?WC)j!=6s+>upMMy{*o6EQCH?FGY-@ zT9dv=scSu1W?flQgwsYNb8O}}aht+tq5CxBzD93jL6wHSUgx6cU9YN^&eYu84*I~* zl5685bi0=?u1SYgPyb;TuYQWr0@&=LaIUH3K`_ABMghd0=Ia?Hw`uFt`S1L;^zi zmQG20{x~bmxG`HKAJ~afq9n}1bhbFq=+fvRWKBtRLJJ11u_)2I6t%9g#tQvi8fT7G zIFU~u8s~j=(HLk;JrlpQXX;7#E##+7tE;dL%ZOW3RV{25@spFD%L0(e`co5CNcr5| z_7(r>o?%C!c?IuQR+HgrAwFQFxD(!D2_DEPz2O3pV#mM=3*+p=l-|KTV91*e*%_E(wgYpGgVQbWbb^ z=VV0%cc`nrmcx72~a^w{b70Vy+a=}Y_89Bp(OpRX%~vD1Y(N4#i%_pR$GO4^zO( z4$2!#beY-HbU(p@a zZ=nQi3BE0`!HZO|#S8>HR0)g=Vk~XEt+}N(c!d;ak6Her|&%q!I>A&`0qqB8vX?pV4a`i9${7a5kT4M{I|)) zfl^+Wd1eBffSLAQ0X`GlndoT0)YEg4zf)+Ah! zObrC=m?UzT4nCO#gs>eUjkl~L&{-~ZTt)h5N)K-d0(VojE1*kfWbuzhJ_lzPr6vsk ze!o1{U{CpHKx!W>L(H5FYhij0_SEx;h0G6S?gb5h1Pfo7LHPTS2b=Z;2C5(yh3?8I zEJvx8yy(z~;8`$yHi^d_j&4Kjvt94#8K!NJR=maut0^@%)Tv8~_S#H~8M^|Yq^y76 z5QIWU9S+(K+w5onGCN(kXm8?PeO7sSC<(5jN%IVmpQrP5Wf8KcBNSmx?hmISj zy#a1r(roMpR|ICTs38%HbQO#=6fn)eLBjORG9XT z=6Nk@R!uA!R%UEVA#*C;V#;5v8K%hc!Ai_cc{@^IR}kzh&;^U5vwy8dqt&qF%b9W- z6_t>=)^p2${WrMy9o9q;+DuZRheEc7AEap9u(adf z+0eSTwLBHXnO{!F;E=SmDK`$3n-%Jo#U2YXcYk4rGM~}x-%C7DO4-bM6BDFRNjytY z`idisGDoQpR*BQJvVIpyd5=v|JSlzI$v^+$QF&InebISAaYNz(dOd?L~!FToX;X2O`sMzb>rqMK*J(;gRCMqM?rg zAIzG}9`P#Xy%cF{443IcU>3-~z{?^!4Kx26e=*R5fl=vfr?<%BV5b&DrtGaiZCoiL zD7XZ*A+5xL;OlSvP$Z$}Uy|3A%Z&h47Ws`tHb}!2$ z1kG2EwB)-tx5`nch<^5j^9$ks3vf_*t$PPMISe7WH@6e z&E~H8vQS9}^IxSm;>?exk=b)%{=pPA#Hk;`#hJI=~XI>&N!LYW%N*4AU;fE|ro z%(i-@{HE{3-y}r&Z<_H|?6azQ16JN!P+6suWEC!%)E}sk^o6Xo^%08PF@-sE>T5T$ zH=SvB}zJ1ALiH*4O%+Ni=VI_B6gET9b3n+%_k2gOXe+#hp`t| z)ExF~?^+={`h{9zm1~E3yA^P9Ri5tw?VZyNFk@u80#T_VQ?#re;v z!fMgNb!Ct{YxJ~u+K+zRc4Uj&N#=`xebBj*#cy-8x?uaV`A;Z;QO7E^Dn8^`jECe| z{xq{5j3LX1_ACuf3XnY@f(yO;C5vpJF?cC> z+uxtNrbV z-uSAzs@7U)pMIRN@Qea-m8vC9td}j@jCW9Dzgu9dgPge{%JkKwj)uCi+NQR?K?S1y z*)ZLmxIv>2hrw4GDjn6Qyfl5qWJWl(qh{Zi)*NhyTa5R~oxIOJaMcc~c&ZQs8FVs8 z%XnZwhJ-3TlFcjHB_(l@lSm5^{$&2JvX;U~V%Sk%Z!P3n-}l$Cqd8=TChX9{6X!Bo z7}2=k&Ie=XxSs29(hmpJ4TtC!cNjwPjt`K+l}pe@u{zh31fUy~OG?ZWk_yh1XSn!*5Vt}!85}e3aV#-B4yhK zK84j|TmO4vUgCmVG`|mNUgG}q3w+*-cJoVo_>j}G=w2Ux+FAEHB~@kFt79(*-MgSv z`&reySlzp$Im*QMd_`7Rb1wwK9eF@LvR{JX4ki;^$6Zs98u1g3I^+&r+Z#=`-a92J z(tx&z6<(vRuYimYF?|bk|5nAqD0xZ8%imo}6sA>-IwQOt8hklIB3LbRc+9`%Ul{yt zFsy5$hh`sRT$gCePau<64QWl0!Z2*KL(x3-E3eoQ2nX}!px?4ac)xs!_rjhTZyw=T2DYgTMrdq+WpRPDf^CBm zMMH`h+4A?nUz8)DZhe_Q0g9L+vNS&*jEZiimC8)l^4U0^AHgRbTQUR}Wz^*CD!spg zzLRBJkmU>oV23&u*#NWko}>U*M2HBYKGnvRK4d-@3S~mWPWv~^EF21m2$wTqRuoJR z@^ysr14IUMS5qVy@ixFgSL$}8U{G1iMoF*_hC9zhOThBCKKI%*zDa#+ck`_Vr(p&V zl?{kc<2zuI;gn7ZoZ!P*Q1rMHS$$C`yf{08C(V`n%TOnDkY^aB^6kdy0g~3@;0g-dQmlj z`vnOxV7NwWCIBm7kGMLiqvM2B60Sb_=Cmm`EruYPGkB5AGbEAR8-hHl=PgL^HRQ_b zSrtjMB4G^J9BIE7naXT4_-9l!`(k31La9n$;)MZtT~%EBNu3-CY0o1c9q~vlX_0h$IG@)=&doMkxK!vCUDEcad^+PX|PXNY&CIsP>AZ$SP2lUfb$@!Zd$3cQk4B`HX3vUj@ z!o^r5!;Hv+v-yrlWJfYW%*KZ+kh8>QkV!c)8w&`qpxUE}ao4-3FRk#S4z(N>Ye~C? zCROZRV8FUn`cbBxQTv}$eAxX{%%mc|*(pq)OFA)^(82b&yc;SSJsqlU-5j4NpQZPFp%Ru=exhTgehD=P^!Y*FF5`Zi$e3|>*#NM z@Ow?KZL}sFxP3-)nzE-p3BX|TK*SsW!ChN@S&~y~eX>2TtyKZlCnN%fh5$05q5pn9 z|55H$ARau{dP-F_aRQoX(wk?V=dB@&j$@}_igjJW$LseOFx*(`3fyS3U-#y_55&4P zi0J(KjMA1;xtbYN*%-!Y3T3Gv5xK?0KFA(yF^1I<3q!g&e{q%xkkk&s>_dcw)iA4|jE4=pje$|agTTvj17iL}`Cq;e!cGR53Gf1?zU z+W)fucU20jjPVpA5^7;267t%e$CKK}r9*)`{VYuNNeQ*7utpx&&JYY2Oz^L?%dNHv zh~Q-(GIP~5;w=cLdeSBJSKO3Kz3(dGa)}Y9e(G$cE%Q_t#==fP*U~lWX2d-$K^gO; zhqF`LqGRsiyrkuTNBbTMx4ip^PP;HLcI;(qw%IF)n^ycXrEi=a;zcIP`b6G`)&{Ev z1GLb*5@X*h@WfO?G>AM0aYCt`XzakVx1p5cq0AoRa5ZPG>;eI;(~r==`WoUz!eh0~ z>Nmo9%>ARx%0^h-kk3h{x*MYUzGJNm$1ksZnSo5I8L+s7Lmqud?JQ)dtoES(4=A{2 zQv?v1A0fv_m^-!YwOE5j>zdYncImdFYr*LCJsEG%%DH&P`FEU zI$0C??KHOB&Ng(K+V-JqtdF2>s<#bUuSvsHnn5wZEPOYO(Xu-cBeBJUyxh)za{tvj ze(>hmW{MFkDUuIG%(h$kK5E;wpebF7(6zD(t`U5DYG)BnHeEY+e{OhOPaVYyPEylv zUCo)=0-J$n+JF)W< z_xzK{0&ZZ@J;z;ffB&t;$H~<*Q`=^0lxLBM(POHqJr0vc?|PI9nOzmOv(K_Q`LXEt z(e(Dt^YPvN{^fV2{@p8otN#9N=i=%|mC`60jug~BU9$ocd@i0lxw#S%j3PFAs7?Tw z{#_dtaQf80)OQTVh?Kr`dhkc15yteoZy4A zUxLDjuFNj5!+|w6W1V)k^xH9d1<&wMj5F5B`K`7EyF0T|O#*}7@Fsp1$?I}3v#lm+ zxz^Rh<$bC(YB0xoOys=W-0rWEj#OM;UESWt#`?wYb^}AN9vn^w)J`NGDS0k(v5lu3 z%GG;%(94rGmI1zr;Z6s~ob zQ4iiV-AO?2qr)ohdd2PJVGJ!jx1tikljpK7O7ndO>;5ox!o0Qce5JgtMMPg5p7^+> zTlmmmJMRS|Z9Yc9b;?6vK-|&@{^~c3)y~D)k@@^Bfv64wPpGc4`w?NY8FMoU$XO88 ziq4dHTyQtU{J28jKZ8{sB~#1{WJ^hqF25g7=r#F-5VwI)!wrofGGroPL7 zV`M#j6=}GhMrLM9Zn3P`g9NOEPsWiV`N2*GrVo& z&nyv~?K$9xAs26HL4gv9v_J%Qrhc-_trweM>8PZ*C0$~jLTT}QP<6-hRqTcANFw@4 zef?9Yw40g9mlF({iI4(U61bbItRAzW+=IyBQnNuGXx{1Mr(9m@jr<;j9AwfF5xmxB zxfX(DB#YeBE7f8P04jARx`}7e5{gA`y(_wTNusE;PXxO$xd(bx3h;K$<+XzSlYJP- z1m8c$)TjcF*#rI=#0j*POL*QL=eqeW$ILp;Ef80PGvj#>-WyHF*-0|QAS<8y-AlmX z>YBE)G(#Muaa?gp8YF*is&4KK$hh#fVGe3(1<7mT1#)Q>*(SbmngGF~nkzI*y`4!K z<0(ESUDwfXU*6_V^-pcb@3!pXdo^iRmo6~_p@gU&--TfU`e!*Mn4B`MRzh5Uf#=H+Dh0wvE@ce z!Gu|H&EY8OSMl%b>9+xIutHw=CR<(xJsx;dlLy}876+bCBD;Iu>Fw=)FCZm_;osM& zfc<>Q*iPvzy*z@!GxC@-!Z--&VIYEx$J6+uip5-W@9(`j20ueidrG_$#%j(~1@1}H zg{flyX>hTmiMr;*)_l9^t%~0SeQEn4gL4VpXXwH}DgKE4>y0J^2BP zibyWzTIe{NVR5@p0bK5g!@&rg*Kqjl9+SnEAD~4E4EplE5bg6mPi8D3!w@xIliQ4N>Y?iBU9hMM$EUDg<_Ji< zQbi#y?fF3S2$xM>cD^UXwVa$Y@W0Whyj+IC5jZon2T(1oU?y2C7YO+Gq{eW3(69SH znt7f_<367MSlujB&^D>_Ls_f4tk^Y zxFRO2Mj>PNvW{65ci1F*jc4d}LlmPySg~1w$xJc7=(%7EkW|b4Aa|EHa`Fz(A7wP@%FH*4S4-HDyG@<8e>h`_3>Qq7zY1=Am71cAa zsy-NLez1Y?cIX|dt7ohU$4C;@#nZnj@^xIED|CC6qgRBdx5l-v3WwyY4p;;EclY&) zdzB|hSl?T+9K8Py`id^OLTua+Q#}=EWu0E8{T7aiAR^rJih<0oM2JH_@Ii3C!9Lj$ zO6r^Q?qx9-s2Vt2)t&P90$=(5=v(xecP~Vy2*B zqxWVzI;H>E+TZZCdLDmlxz+f6|5uwYGLvEHoS$1)qurnqUi7J->&*naN&)@TJA3o$ zZ@(9@^Cd*A)h5Tp{<^1@wR6}R*R+_U%v-<`wm>#|eoyMKXKJ#`^igv5kaxLueoXJ3 zUj9Vm?>zJbLq?i!)*9dJ&>yH%2JW|-n|F3mEST~=2ZOyDT|PdY!IgN)G5x32emVEi zMD19C{|RbJmNQX$vm9oo{Uq0}J?K}1`iwZ}yA*WNC!!JqI$xfu zfrFnuPAV24(jq)mss{-S)OjR~J(K{h+tx9h{3HG-J%~OLiSH<#EG#_>2c(gy+i!vi zY>R725@9xOi*3d)be9gOb{BSRmb@Yb00pKN)5Qy+D-Y3O14-Q=;|1_~v{hoEgF$}A zqIa-tZxb{A#MRFN`6x&o^)k)aI{37ZX7*4y^wEq)7aVki1e1YB>n4ULpbc#!hZfco z3?_Lz{Tl>my9KqC5`^A(7w2#^=LC>;2y);OqL@>zLRoB6P(p*@|H0qg(Oxc78$}`T zc^mB-Wzn$`c+!}Owo*ix2IJrYJ`&i529*K@+;}et3{#9SNoxanjRUNtPx@iZ2ZPQ+ zPkhY{qA;}-1@Ll1V!uy3SN$Zddz-CZUNoU*@@ZJcy)BkbVFaH7z7f3#cLF{A&dI}v_81#l6)L0M>7Pdk8 z?6453|5C!mX66A4CK@@|`vHqnlya6d2m^@F*#y-Dg+-8dX3-@U+~ZOLz9EyJs4hXz zX-V7Z$qFR05|A&s_NHF2kPct<<%Du{j@bzg5X95C#beDO}Vo3y?-Vf+L=T7Wu>f!`=BRdRZ z`WX+O`)(v?Wr=vP2VQ?c?e{VPisA%I_~<{Fuk7i+lQ;Yz`p~(MW)7ahS^Mq>PIAnW z*+Dn80@-o-IQ5~@(hwPNscLYEim7R9zuR)xzGUTTYO?LJ&5<)eIXpY)lM_ukVQ#+A7t!7{)$@!{eG{GbXn;n{zhA3`q91~YSI)^Uzt`3 zYytpON&ZB({HYq>C2n2TBv;Bc8WFLN5c=N-hKS6~#xf>!uJ{bYv&L)H(K zn`#3)K}aDnGVpD0%A4AlR z*Zg1;YaW0s0GtUS3yN95IiFN#ULmIU{AvUFp0p>3lQ^y%tD*=*xNKA_f=UKV)yc z1G}Q<4e0jfB-tnUH-Y+IL4j{KeJvs^G+0Kd!5dK^_)*@mp^7q<6G>K?McxwMznRJ9 zRhr2>S&NV0^Axf9&i5WYJMK&X@yT-#5K)+t)U;wmX{>IB#jvK@d>ReJCL4|1?Y!^(niFUy1WivaSS` z_bnMUx?}cSO5c*MOjEUSV9L0%1}+X==pbfFF9@uMU3K17Upk0_-2*$Q6hsQ$cgcz* z(*eh`j@|ya>XObpa;Q-IG#aK$wJAFH+0=U5{@j@*anPo&Y3joiq;gE6uahOz(k~-a zK70rT!<~2Ik0I9uwLM$0^v)|SnG-K|yKG<5~FA^8T+G^01pplWl29WM@n)&}C1o-7uY@K-(1QjQ^Gt zM`YHHh6M5RY@B zHo~GWKh3ikvt6|_>7Bt?SLrPxY%AluR+KnN(QLPbIe$oIp_2CRFf5;#6k=WdJk>@l z;`p7qb(71hbf<_yv7Tuun&x63!ug_bo51DydS<4)R2H@DF+k zbV*`dq!+1w2+zXex4~JaJC1tg@#1IFB6nv@tQf>>%dpFpvKUS60r+K-g_>w(k%m&g zpHJI*qu8eJj*&Xz;11(hs7Qc*5j@pI_zjkMGA-}B$2in z-PPRW1|&ZA0+oMz$z0UoV|C)B%tNo;lxHqGY^qPq^kS=L_1jShT90XP^}~G%fVF0U zNt(mr50)astbP6lza3+u+ntqers|kzR7}%kEs9mq9HY?(FitZsrCz5uPBfiEzyLQd z<4snn*KrpGEQ;RC_ZtwPvd;h*z&{2#JgtCRFrs{I(dP3Msym%4My4M`t21)AU& zSS!DuvH&PYr)~T7+1ZxH`Yo4RBfAOss~e?yvfXa2AiI~vBURq6l}>JrbK-TEwhvf% zjg6~D-V6*U&@|69kg|GN^Xs-T$6>I#tpdWJMhoZ1=KBHNoyumG&ar2JRVLDC?wTd> zVVW?B#{kz^ZoP$bKe@7XtkZ<|nDIlKH(k9IIQa`I?x;IVyyu~_i}XajweU_aFKNh@ z@;OydZI0NYlAtcV!gT=Nd>A(z!LcG@$iRo`3$lf$nb{i=aHnHl5mLUDb@&CbfVz6G zj6c0*mM`?3v*dDb67tX?kRFnnmKI5{4Eb7A@$!HDe6F#FcRv>DUUh61Gfh>M&hNh^TT(StYdT$19*7)_!#6MUn}Wvrv5Yg&Kk^ zMWMw*mPi#%^7-hA-z^bR9{ElwNw~7{j5DsFvC65!mF{V&mD>J9HE=87Ylkd137Q!M z<~ZezZ1V|NSstW~nJG|g->-L*%xcO+(iK@iv;Z^M^q?TKK~)c-hnaA3S13Xrt^!wW zh3UAAJ2!z%RF5TM!z&ssR%fCo9qsvKsCQlY<)swRi(eTCXI{Ge%QbpP)|mxU%fj`A znVsFsOCtFa#!vEX$RbOuUNbhIfO7#z-8ILbYyU) z#^u)sZC-{c1=28FrNop8umn*{)6Sm<6{+GJ2m*8?~5f`hudDNs+4I9%v#gY zE0Ip8GSolj&xFpL!LY}{(7ZT3b*Yms>n?+M8}?)=(~yf+)7q5AF2Trk`o{IIH_wN?V!2 ze?nF+N0+!mR%+_>$PO>v8D1kXvLi!6StKo-y9XU_4%wMs-_t99WBx*yN7^i zWbJ5{Vzr$90a-5oXPqD#GvwdN5KWTid=QRKA5J9KXl(H5wQC|x;t=^VG+VZ>j+sQV zqlaIK;73h)zK$%j@%Ek%PVO!WIYjKzZD0uo;>wiWU@|{NIs8)VEbu>*3CIoxhKpV+ zgv42Oap|;$YU`pZqNWFl9b&97^6rTsg!0p{WbaY5$3TJZ?un1Km*sZT^Td*C}zrWfG1U9bO2+YlBS#M^26iuq;8lv4Lrfg+pLEwT!Zpq+J_eZ zH*}f??Sh}6%#82X_R!+8-|2bp!=v8Y8-ri%8$*W$4ek1ltOfA<9)r(qTF;BL-bV?; z*Bpl5X;kmSpx)d6XMR`xFv*(C>A8^BdpZmq>mj|Rg{|iCo~wRn^b$>hS99V{Rqj{? zb;Z%48Y&sBpbfLH+QTDCSY zjJ)ZkQ6pX6lWYGuc^FbFvbrgh-AvS<-@)s8z0|_(e6)I)q}2tZi08pug^7|Q!4bV5NJjZ6eWI}=ufaqc+>fAHJjZTa@6I_EHdwEoXQrPLc8C>wlU7Nu zQx>MI!3q!2&6vbCSK9aI2nXpHg}^?=g^d!tv5Vb zcfijz@xic#IZ(o|CU94`94x&_OHzt8ErBHJAGT%2zX+{@TZn}@*>W2Njb9R&Fxg79 zs0iq$2@a@M3|Q()isu8^Akc%5!MKdoh+sAa@+uD|vC}5$e@v~Vd*Q;C7r;Iac|Q&{ zpFW$wQ>hv9Ee_ysmC6O`lPN31?W41$dQwY1fS5f9lX(csV@!KekL3H*f-w%h^y)bW z!Am5-fITDQ0payfii1evYnm4Uqa)S(bdnYpkkJZ+=`Fv;)*$(9w$el)Lkh=`4@jEu zn|`Gq0(;4`ASYI~hf@0r=$}zK14MJhV6^hZ^}n&|SfBV!z!4`qu>8JwWf1+cTx^Rb zzs;f<_V|&`ZhvlZ30(aoss7Dnke{*OJwF7ZUNrr^k-Tny4i%^MX$N}D@H|G$@ZCxG zdJ`gKFMe{f0EZ7q0(-Z)up~W<6f*{6(JVJf3Y!u)5h_Kj6hlQmgs!_UD?XyH&&~O= z8?OYrdrii7MwJ@>Yq1p$-HRRVEb9k*Deu?2S}p$f=6bA-##{gAiq&`758W7ANLzg z%=|v5u_x-S-Gn2zi1qy<8?+`2fA5cIt9|oLpu7eDLNjU~S%i~SX=p{G*n+mqUY1?O zSaUyZ_4~tAGVK>O9b<@j&u}O6^{BA-C!wF6r`g4VfgSc7g%D?9jn+Ku+o{%qF}VaJ zk%J>hm@yOVsQz{ZbIxJ|Luz^(Zs;RZ^35`6>f>|qc7AtWFSp0@^Py{bnwj9w)cIT-fjh^jU*O5r{pYc0o7>lDt*v_osHif|3DUs?S8r-}`IgO7G zS4DbqXTSKNp?3%P>pWkpY3iF#j$p-KA!V@ABXV3#C-ZnvM`kEbUP*S)8tZ$WYUPfU ze10^{aTv;4Q40oBM@CHluE*yk9Iqbu!yW9h%qHcPVRgBB%*`ta!2imay)Y|K;@~gu zbk~%1Y{_Mt%(KC(vp)9plJ3xRZ48jbI;aQNpNbb zd8ReC&BCqH*z)NdhMxWsWNDL=^F)eCt-6@w+hyKiIMKQE2VQ7~@@&Atz>_g`p~1Pe zoQ1xLrOLvKpXXwg>4wo%c$$gPX0onwz2?d^4iF{?ly5b;7r9*XmYNJtVgid@^!!#s z)$gDI$54*{Fu;PJXtgGYz+1DcV!iCs8Wq^J^vRebSGvw3-+A6{&^inr`<2?{iP4hk!oj~# zaq{%>tCH@(TOB5{2;2$T(#EXHM4V!hfa>)i4kngv?|X82H*Cn9s9`2lvx3Y~h^siG zd5wd<(Acou{YD(;OF4h=Men!V+sijwZOJh|i<-nSHzNfwPk}wO)bE#FbG9xi6iOPe z-V5CDOTD||bB|vi{sj6Jh+tbUwBht!@_JaoJdtZ)@tTnpMCsCk;I|_FH;`pZ_+W&H zjJ*0#c=k_+{#RBn(}wF76y?WrR-YfoGBY9fdW@jcEqUK<4v#O>_}{Dh{9Yf&1O(rl z(=V?~?9RMnP2wI;l+*Z!t3^Cs$!2kP7mB(6w{eRm*~|yD4AS|@f64|Z$A!lTPZT=P zZW!fxcQ>gqHW@2gylK2yAgdBwt)HE;xK3jrB;P%inwE@y^4g;IsdR8hf5YPTWIwW2 zS&R6fam7|6MU{r%RCkYr@DNF4*xu=uqDD7Y}2 z@sgHoh<1=iN${o8lw$rN^Xj7)8$L`u zt;k{25B91$YDTj%#eswHJfoRNORhT>nf(<}-VAYhWK4lsT4an>bS#DV5M7kI$Ol!N zaBWk=A_!fKyAszGgjP^wRy#P{C{m;%wW%=``6;dUig@a=A6-^PUJxIyR6iEnglBn{ zX}7~3T@>D-FkyvO%3XD%D8aW!!beS(NV@C=_2SEOriNv>5}#!(iS|-(4CL=Cg8rb7 zb8kO*sQ7!B+U0YX=np~ciT zSCuMXeZAe|_jQ!UY5HQy3Q7@}fJ(>lOA8Jgm`T4;qH`6SsBH#7rg{4 zyY2MYAU5oj{P&hbvUBLXlm%8oajuwU%3}I}-h)zthp+d?ll#lX<$2ri`#k)F20GZ& zY_W{mnaUk)yDPCioe5kPWkYto+xPdro1I(wMpQCZ{U|Wx1=56L`sy4Bv{M$?s1DHi zhNjiv5y!A&_WmA+cso&0-T_BXj*4T>VLmnGVJHzXE))|cuO+}(9GE#tym6-C{6mhW z=IFP4(so&n{+88PyTtEN${4Y^@|=N4Oh^`6Qdn@CU&ukc%xPus#SBVA_RR}OX_fMQ z&IM|WQ!%mlD!}W3J@d1pryO)`S4n(`Ybrv?q_n~tL2f(V2Ypf~+51$x=1y;7#}1A1 zb1e0=j6^&TdFU#L=#10QV7ZD8RYfa-&8sP(CT!~zE;}Neb{U9s(9l;AjbMQx`Aieu z;qR>lS4kPUX6CV0$2jKLSZVs?vx%I6^B}i%$r`vk6+OLs27NF;84!P&S_AseJ6Awq9? z70H03gAg>#6T*=i&fKpV?m@R>FVS@WHLjbhDU;pw)H++57v1di5A2$CDIF;+=5h>I zGEicq28ES@x%mnyWDNbYltKOGmWP}pRY@PZ(&C^cWsd){Rg6Xg)f_XpFhtn^g9N22 zgcXw@tVZ10f<{A0ATKAzjgzmL<$`Db=XPE2>(=(H6o z#4CHi3KSy9E=cLu{s}gUZ?9Y@x3A<55`Kdn#%8eD)xW#Y70YeudJe zuvGL22vpHxh+{k)x;vU1NCSg z`NkrP^OihQt|$}>r)VTB)E=sg+)y^ybv%uW&!>3`&&N`7*tV3%i;W_FW*M04u}2v* zy}G_7`^k3uYOlj;@2%nY5Xyd&1{vL-i-UBV9f&@lKND~l6J5|&?$y=ANyCtpk$N^6Sp0;ATpBX~i$ft}d%8wKNXh;M+93|I3uI7@#ED8# ztDvCg00J0Gzi${Wg04ojprjz!M2@K#iNXkLrFTOCO42BS4j+^a0oN0IV9`MEqv<0op*NG~>~!32IiyB^4605^PRw6%wjb z>olhA(pDcM=lLKU=Y#Img!@L4<0w2yHy0MU1&JUqRlXSRQXwu|JQsveeOH#El^_x$3Va_1iltzg2r)6R}?t`gA|`G?HyA2M?7KGraKl% z0G4ez0I9idM^5Uzg-JpghcrprBV%dPZo!)=UMi53X+fci17h+7$}BKGKSwDiRqRf< z^{J9gwB9HJp%ValA@+pokWuRaSd8r^UN&qBKhKaG6?8qN6=Zx_n-I*H17G%vJMAA46Gns znDSRZk{U28Nlap&72|SNi7smMr5}5c2CctP))H#yg%;dNFIDhq5p3FmKpex5lQ2@(r^ za?hDfoJ+7j-aS0v&jxK!;}SRQeIow7`b1LTu*in>;V>nCL6%LOmJQaLQRnBBWH9Ik zS=xUH@*kK`v94Q^5T9G*;FL*hP6L@~;xR%20FnUS2sNmkmqNCU8T6@4-s}|KY`Q0V z(|jjen4~=(y!(bWN~;PdxBxDUUovCKNuu>2;xpVx?PxcBiK^rNR@wW}AM5MjAlNC4 zu`A&rCXCz;{u0slIPg(xwPye=nk<*yrPhFz-c_%;tJWCOXD459wbh7Ac&JAoiB$I3 z>`~*qq_krW?xrO6X+&}1BREk@j}h0qkL|Wf93WsA9+6pB1Z7AZ0fLa)qN=xYB~*6_ z5d3UX+BT&zVhYg&WJYL#n$2_gw~wR0^O{~o0{B>R6^?DC-p>w{;x#NI-X z8K#JnE;_*^@;sl#%)`}b_;m^E1IRC(reYKiuN*Jt=C(AdGkMCG6&)xVQEukQkjDWrehC zwK?-4Qu^3->#!K{bFoqnH{;A@l6h|z<2wYV^>x}nvbj5i&iD1&e+eff_GwlrL8Hmc zvFCnj05{!Y(bTe9Qjg{FSI@>C=$5CWG4x3PJLl3!_HJppvgFgY*0#rr+{5w(-Sm=s@ z?tfkMCo25ZVZ*$FqK^|nV%nDhsnHr$S6xztf5sq0FRxw63WMQd2Qp~;&Hh^1dSC%>_BLE9r4a{W*D&IT>1$OA?{A*k> z9x?K?H!=VoxfX5GR$PI#U`=FFOUc_ZCX^5=iI}y@)PfvDZOOzt1wh5OJW<9GfCd;P z%Y$@TQzbLXI9H}YtW697#Tc~P1UrK-cu!6)v}ANpCgjKZFieBYRGOMQV!vH+>aWXz zu6}nW%UI1kN~AWjK)U$1BTv|79C}bW7q|tu=3v*KR02n7!E01k0!w>$ryZIImjGcQ zj@9fo(o*hs8uw?=x->E7daqPp#@9WK$`ij z@J450lvAr5%U18Pn}u=U$4cm1esY1>)}^Gy^^b4m(ah#v#89+?Z**QC@f&A8Kl|_P^F4moW0tgAg4-_- zANEQ84SHzij0OwK+w>Y^&e7`eoPQqu;0tT{3;WF!CE-740@eZMZp?Dl*RDpz`(dX#Al1a@AgUJ<)|86cFS4B%30GdvrLPg z{%;Z3$As_g;p1nVZ@09=#kbBUl_q2eOv`tV-yILOH|2)oD}a`$zeTRov!KHtgVhwd z%(Gc!8mseGZm6g-H_d?+q3%OpUz(gxA(*RK8fvn{i?ZQe+Rbo zDxu0KW*5-PX4h?FsfDhj$eoYY4!(!^@#!`rZJ$!wz(D^f8ge(CR6Br&0vGgPbIMHh zc;EB<1#rMWU;oLE`)7c)iTKL@PKzodX6w!5hs8r*sOnB|j+>h>zdPU>I=_3I7bc^) zuy8kjLoiw|VHyRubUz_!y1_x&CKq{lP4dxYKXAoPIjuRbIA9YvF#h^ z=c2B1b#FOrjR>ngm6|qr>CG_-tSTWeze~2#Qx}xB!2V_B=~_H{{G4i7U51N@6mFLc z_b<};{=J|7>G zdgqvOY-7+Kcc&AiJ#mPDFfwm%C}^cR?BnuZ zBmM##?-0&|ocxCK&R@`}N=KhRv5KJVJGP`=<+C ze>UKbE(Ks~4|4s#GSZujsBKVWOwul zL#KiK>eHP5t;<=T5x%nx#M>=>g1ajBCSC~5@`NX*3CA@h%6(zT%gfz2K=YXOG9f)9 z6!0KQ8Hn;)aGhx%&JOryp}93PvUi88L)iW;qLX&1@(I`L76YJvLR9GncEH(NYAsr7 z;bZ!?!3s=@KxZ5gJVY?|#4*+oAP5K13TLqA3}$_ol6j3__?cP-)?+SyqW zKbrA37)3sBIY*m2UE0{zm6gy)+hKBTQ{XEMYt^M?Lb#j>hP*RSq%eZopTFX28H=|B z6|VFRRe>}aso}0goQ^L(;*hhX*D1{mJ7C*z4_i41I~e*j=|`rk;=ZyQjD2^4z$MYmgwV_OsjJ5tQ$}ct)6Wpd@cnScF3W^Pu zkhE~(!3rHR+g74oQU%VcHS_dC9&#OB7PZ^n=p^(abNj-O9RPP+Qfr z*7uv8{@TmG=v|Z?+FjMl7d`yhvfS&mibLgwsKG_X{5O9#^(g2=qUhS%tmJiv5{*Nt z9%l8(&vqp$etb}nV4mY}NxwcYd$Q+!CLJVn2TW`SfgwuQhgg{i7c5LuL5v*%x`nu5 zg@)t;teG&`ev5^v<$>5NFFETIP6z*76ijLb_dWG99ViwYf!v5-e^Ox8yh4GXW#%4f zA~L2Ie0a%tZd_eB5`OGyo+~d|8Pz@+6f92DFJ7IaS|E_dfNtx?GA*w{(iFGIO|7ppm459G) zWfnOuqS8p9D@DnW&l2Nb+uxP~eFs6xswgOBg=&hOOo0uN%ni#7Z>Y4!$iY;OCBv#J z2vze_Vnl*!k{imkNS^#-#pYbYC9wR)gia?%DD6eh0c7!a&_X~c2+J~%S4JftqnUrV zW+mqoIT&rJ1bK?*&)&@>Cmc_}SBqT=B(;qry%)pBfPU5ZV``MA{L>9_j#2s&d96iD zGvi%=A_+lEwWhYA(nB>JFIWOwol{D6@>Hl$5Htit&VDBASnV4tzbcrY+VUc!w8kMq z)W)LCA`CA4X%9H74oa1}wgb{@d6&=B7z@vun4tRwT zR>A#LR}7``Md(y2p@v!?+l!fATk_|6&H35Z<9zR-d_XAM!TBmq37vr^ptuZWd{sUd!R+va@6>6@yT84FaV{}Ck=VUBd2Bm9{|5g<)ah)yB_^0+>8%6fDN1#{LS)h&95&6 z#?-cISY|#YzB?eD`#hulxFhODKub2Qt~o*kHGqi}nn-6jn>>(4(%d=LjqWB6y@4IN zxfy9{2udy@dY8y7y8$X1h&o1%+B9BIyHE6iWlz76+K4iyLM~lF#iG37ntqEpG{^$t z&F^@RiY+Yc_$T>R%_gE*UUE&Z9MPf$i^a@X3v9{g_`;RwU_P03#Uhm48 z`=SSloPQ(~Fzn!3ovvZL?)oKSvU#5$IZ z0V~RFU>)CI_HAObnuzpGq^ZQI(L-vsz-p|3|6%N$qBCovtsNU38y(x}*tYe>wr$(? z8{4++q=Sxa+sS+KkN^IRb62(ZsLR@`cC9&|`J9JzHQ35a5cM+G^$Q-*)OeU>aWg86 zZLULMC`d}fI%!7&Vz*EAJrT9L z4o)dH7DV|!lbjUDTdl-n>Hm79B1Xc7V=^=Dt^Z~m}zo$q;28+%3HFZ}#H@A|aUijBiQ zNtmJO65kOMa<&fP%H9`Ys3SD&Br6+Xlq(ojU1)As(TIG$YfGRLPLnF)CF(j2K^1J! zw*5A!-#NcCz-+$YruF-nKTZa_Cyr-7=l9fLqsrdfe|;KwT+ z@;&KaZ-sl{%*RI|Y$V{I`rsGxbP1_{ecz1^@WFhnuA$Z;Uw{nyL4D%gqtD*qD)P4!?r=#$ka8Xx=6v^%-mUYFE| z=;y-=l6p>)i`=Bt1+eesZkl2dI#j!sT_CZ$=dm0T;tfr9r?a3|J(7wk`qjLGh`pkibl73$tLjO(NOW=9eJCb5L;zj2H!Z) zu=~>yLOIqm5|-ZoRb$lhj}>7JJ|kOp2f-%|XB5Y~V;qx}qlV?+dfJ!);S_ZE+*nCj zEhP*ghPnx~gaL0gXfcpjHLc`jWM)NZAu4b==mE7fTcRR3xhZEp!Htc%s8n^8jJ8P*`64eb{9~5V*x}QP zP9&c_27!L>y%^BUkD(Dc{YYM81OEEjfi!hLKTGolMpWI+?@V1iw1Q(_D-<5Q9W6Va z@(_i4JtKVc0gf5-Wbf;?R%K8VaCgE<=#l*u-?961YGP6*Oi{jY7>dkmT~s(`x15ks z7&=w0#(8JVU^@>YO6@|rV0U6RFUc8htKTm;YvJExhVZ>vOztAaq;BSfbXMMD-FY=- z7d3`<{pX2fwp}#2Jy<_afb^S>hyY_hmxum`(x9ouzfHc<(8b7q1to$>a=$N7ms$pV zoE({*pvxO_O0guRf_JkWYDomLF^%hy;LU`9a-%;3A%u zIr+BQr{#X&zq{G?o~)WKFRoOzzPjb;6^$)yX}O0J=5cR^bwO9s7$|mM>3g-9T$m2| z?H=5^&TCvRbyI%op04zXjbL>R5D~m!)@Gikk#x1i4cKV5)8!&j94ur9Yj}u+TyOR} zmdI&rn>iBKw8XwmO`Nh2c*l~&q!P=Q<=@W64YmK*HGfqu*76bU7C0*ZP4u|NlTBCJ z5p94E^x_0gkyzWKVwap=PJ;6T^3@@O-#l1Glw70ueFV;SOa_X9*3VE8E4_+)SZ`m_ zP5%G}^W2dEN0db)o4Mi-6U$Pf@&yR`kFcdaR@(#jAaGNnJ)PxBYOn5aljT3p;;BumaG^aMu9l+ za3?D)ROA~+arP4-{ABLNC57I9qOj<^X{P|IfXm4GX2kup?-wGjw0tvzlsW+M?gsOv z;CLY;8uTf8dW2BKrQS@+NY%W4#nlW7&iT{Jt9F%YYQzICZ_PzW?_3plvYy2Be^|2r9#QvLRNvgcU+m1pxXUlmRsf7!{_4&>QqOHezS0P%#W}*1?c3j2NxE zc+{0Q&x}771T9@EHxic+qytvL?sn(38Fb~0y#3FQZ%R8UX@_#Z2LP?$ zDkUMTwtbzH1>r9>mT%#$71(y~!tar)*Ck2g#1*Z>EwW|Hq&2Z`t3Mi3YBu=&MxG6^Jh&5 z{V;1RK3-~7JOs>k4{HUg_Xrq|?brq}cy1Cb|)^< zGtdElu57Q$?etpzNa^5|fM+r`8U}hl&iNCMfsuz*CKY^g=Ep4MFRmXG)&Xu!57y;) zc}xj>^73oVh*M~MyFHQ`fX`l6m7*mtDp8Xz`Ky(90-W1!;TW^Ee)-N-7*Mh!tVte6Bj(nrU*m=luXNfIA^N9=N#iNBTapG?ak%WX^~VJ{f>Ge#x7B zT$6IWFhNI;OkSv%bKvH7&7QIlZcv|tw}JO~aI^VM$9(N}NOiYBpU(BNUHt=dBf!h? zbWUmK^+d$rS}a`~5v7z`y-auc?OK2pPKA}PGamrlT^A7!>!!3%cb9)-#MTXQ z-u-~Go}q--XlzW^1NJicKiH$Wp~Zhz=daLzN0Apk@(MiXfWi0OD|91!hxA`39-DL7oioE56sA4TkKf4`@qJz9@SuyrNQ5W+ zIu>&UdzeM4uSCi3!2&{-<|j4KH^+E+A4pVf&-f0YdY67f#z25CuQLU0ZjGJ-()Yz! zT(pHxk3Z~mUYq;BhmGCpKgM3x#3#A*_eFF1Y_OY*`d81NG{PV6UoJTSE^_|vD=a~~ z|7t>PzIyE*S||y`I_&RCmU`i;)OH6I?BH!U7(RTDv7YcoN{lZTI}57#;@+avVzrkl z|E&6qemm{z3Rd3a=mC?o3o#A`CZbEi^gOVwdi-z49wdi~Zh@prjX)yiS0I=8=@qbm zJg!~I!K+8Q{}-VYr#R5QUqD5)?F%?B^nJovpz>X3W;^Bj;lw@DNe1H0*VcuwtNxA| zu7u2$)H?!dIuKuK?B9EM_9F)gl64_LwRdVl?U$jape^ zEarbWNXnQBOxDFOzPjz={kcwo_|({`_JAFso^BbxM zzKo3mXTSA1xTrMu!NPB`hnU~}FW&N0;$Df4fgi~0qB&qZSZg|FT&9DSY>5p4VuVva zoHX6O-<$TD4c`*T&>9*GWS!ry+JA;gfe7Vcdj_FnuRa3j%KYQ_+nx((m|Kq7S?JSumq=jbcUq$q+`8_;thz zD%l_?hM-DFmV9AG@=7}2&Ewgwk zRwlaEa#%ZsI7inruVfCf;Yq4p|F$~Nsn4(XwU>O6%}Er%a)KPc`FL)Quxypi3AaT6 z`JFyVTie_MlG^Fr;nCuBIEaXtM?>f>u4i4|WMZMwyE#%85R2a03t<8ed8XkDa*+m}3uB(sT6g?wUl zzl&{nd*?v*w}5Qnef*(+eMgbeFSdFm8|V51#q3mYE7z{x0`<6`-KvyluI+LfmaNN0 z{abj8o~X5__$K4*Mn@d))JnRtrhm`VWzT)x5_`U>(sC5l;0MTI3t(OcAE z1S{iWW|i?&Xp?&`foL^q+TSAchQJr9g7`0givq6qmW@-8{PFgt5Dqk>;VVf8ZWa>( zp1K|+Ch5d8onlWy%Ag;6h{tHLT+NcDG^>?M?>0jXzEYLA@Jm|6RW$?dqUF+a-9g7c z_v+>3F)e(hM6EQd%8rsmOvh>|*#|0$1@0f<*h&(oJUh(vq9{z=I*%YtT|3C=tokbN*H^<-M)&9Ef= z-yRDb55T=oe@-CLEKmUW0POjUS_%O~!!~6w4rRv&W1R|h8~kF#9)^dy z3;I6{chS%pH60n)#&HoEp`a7k+k3zpvwV3g=qdWD=}`K${mb{SyWguA19g4Wr=nH8 z?-;zXh6*1KNBS_>E?L_Yw^TX}4_dF|gpnYD`}VK6Wm-;GH#6rg!L#96putJ9iT^;8 zghdkU*9KQ_9vRC-Mr@!j`5lmB~DY`Ej~esL{hk0?}E zo4xscLc5!&*b4GWN$hLVBp>u5_V+GuIlKM=-Sc=#*K00*M&jVihhKLuytBzJl=gfb zs>fY;>nX7f=lWo_tf_88|53&BqlqD}ev_k528CQ&kwE&!#mVmd`yO zX&G}6`l@9d4H92Vfhnm+A(aYmtQg5pD|k$i7^^`(7BeJKRE!4&H0JfE%<4bCW~Dx& zY!8}vI3Lw*?ZSReBhHxf`}Ib;wc1Vaf#92x%+i~C;vZ=N@Tek0$r4fibwJJjs7m-X z>ukTXmV1uh)OT!q`wG{xH)eWTY~k&A(0yhLgKimiku_X=xdFN(yk>N!O4Wf|(9irD z%m>^DF^ih>oYpbR?KpeTCl`0ow$c-^Qk)!Y1>y_XzC(q1bEc^$E^GbRA+sbbl}VH$cDLKI@0-{>tpH z{sPjkK3{#DPDljwq|_R5TU)6{g~50M+f@^fR{UQ(Hh=HIz!^VmxqVOC6|H6l*=0L0 z+?4G(y$sSBGoGxWWj9@C1FXIBav>Hcp4fu+bC-mlx9us~b1R>57^mg>bo@Tx1ifkb5G&W}u@aSM}0Z*p}klQ=ZGwn#2^Y*Fldqjj#*EEs+rrpOH#d?L)>-?F+ zi|4O0cWd)`7&(Uyv8?Tf1H_FBWbKLG>ze%`;0gHqMY+pQRSPMaLVQ0R`S9b7xjUD~ zWednlh+UgAJlyE-_BB#R$<;c29O4-O?XV`!omc?m^FM97raPWpO8(cynD}e+=g;A_ z#LZjm3y(PO>{S^BFC#IQ?~SJ|qdFHZA7}S$b{%=2Ga5~g2^0w63a?%d6fQ%=WZK6- zUF9wT<$w>|4KoB#K8Q0IXXoDq)H#NFmmBAMu?)xcu`ZED>Kpofb%$;)xqbwSr?p=4 zLa2wmJhyE!2fl$$inG9f9`0_FO>3bWLtXTM3oEB)$=*^Ty`lCyn6AAokH$ixb9bb5 z6yyc){`20Pna$(VcPl#$c1AEK(BuVgg6>{}P|9+R?{!-B2ZZIaRxwk@r9A)aqbk}B zDFz#BueCTGot8Ao52UPrT$C4-aOZW`+YLmIj=p8OQg4)5u zuWHVEm#Kyum3EKLU#2}wWpmtd1Q%Cu$sE+J$Zk_Vfg_KwRW`u zmdWlx2rIlg5bdgeM}JZ8hN_{f5T10DQcSh%iD!;0Cnabe(0n8?RAC!JHneAy5i^*Q zcDC?xix(=?3Dm3rOmkQ}-^DZbnHU~tTVNVnjF=eOkJmoPdCs>V&X={2m6S?H zi?zvEg%KB0JBp(#MO?!4iQI6H6K~3 zX5=#eEx`~Rm5>=gOQ@{Q9T((RQld?1mwID_-J?ki^T3FLFpnUGh8in{a_>7p8^N$$ z16mN6&&@VS37KZ|W6S=Vu$rIgi8EPNl5!&KzUy1R$`gEigp*(l7s;n*@Zef$?f}rrSo%1 zCv|a%oW<$1I}AnA4qNCGVX)oPlPrC6(BM&4*<@`QEeU|NKhznmu^CdY6{@*}s^O&ypGu}OXI7$< zo+b{`W1?BH4gEA@z-qpk^vd5BP=b;1!mVTog+F8vAjH+E)9#eUzW%R*@_cDFsP^V7;5R&qFLLEL2e)hEo^He;yd( zK`Qyc%GpT+&Iv)6gd{*9n@mkKrT2AMYa9n?rQl>x0QYpJhlJuFZEjDTjQGmQ;x3MT z|0dl62g7y#trU3Fr`jr2sq=a5skGctdmpG=g(+-i^z)bSrlc!ZD5g*gQp!)NRqnd# zTIoBG_{Y`#6=W7`rW+z3Cs}VeFOWgArBuKu;vtYojZ;p;@BGh}i-VF!_!Vq{lr1!MRNrVfrclvPhU-hZ;935UiR<0upLHH8|RQS5vp5C5IqFd&kX7?nfrwoGS!R z0k}-w4i)#^DEAlmP|peg4Eo@&HjAJVr`<+9n{eZn|n(%&^1I^ zPI8Mre@1*%?BE?ZKRhSwbt_lV!tQsFI!$BE9a_BE!a9b=iTEn5oFujIoB9n=7XN`o zW7aA1D`X;?I;%)1yWx7N@pF<9W1z1!h05%XWkb)TtG(Llc#?RVoG=O%P;$u>C7Q=} z#7Dbe=fhV`bo=#O+-$x}kLGa)0EXq1voLWJD9F!oq#X_W@xY0^nYQ6gd!@4XWZP3s z!^XA3Rg&p%t+d&**K$X{qcj0rv6LKCsBS;2>UYp4cH;Bq96hZZGCnvy{tuGs8)tYEkM0)>iX}dDdR@hsWUcPN8o5QyX}@seYmtfpZG{ z-EsV%ShsKkJZys6Rl>P8we=pIf)6-w{>erRjtBEg{?m9xjlF1+wjrN3$`m{ z1aojkM?JcC$p%n1u+1}{Jl zrHB9GIhhu9q=bWIx~)JN>xa!CIBgN53D}rvImsSiA_@f4Fmxd5 zz-kRK3=v95D@7>K)o{00T`}r#h722~v{>)pqKl#wXB+g?@xZJrr)H~ULszWm4z0`3#E;HI)sl7AnFYObwO^tIsD)x(^y8AcBrX*E4< zjn2|!bcjjcJ^@xo{w!dt}%4~l%Z2y7b>9kD{si%c*#1qb6 z9w)h9wGG4GqYGnVLoKvM@!yK*O%tX%`oM#;bT?-7{AvUXxzY^882*Ly;;eYF4Pa&Wl2mN)st%M{S%~x=>J)>Oib=QJt7y3gSv5Dlcb% zqPxlA%f^LMN#m8pT~AYH-w42z(b46zBoNMR5;u+C){8`{xMNYXs2AlH^OS{H(jvK4 zn(AiaM)8KvIp|`8OG61(w~g}9ic(nkZbm|XQ&9CmVWOScft11~EUolc z-ByWZ9g9IU2V5P0GdU_lj#CL9^$dCXy7sf6k~20}EF3ijS3XMTf|Lf_zasP!UHEJw zFm6pQW@nnc|CjSan4T1xb6r(3p>=wh0s3V@2s1F0l+zwo7?NyXGWec!kx8VZ(uAla zLLI<1qh@xXqap>n&K03XC=|--Xuzu1+gHxO9akmTsnrmr+6IS_1;{tp-)-;4Rk%NM z(_E8QN+b|eLV1NL^SbPg(JM6SOP9x-1q2)ko@b;K2!|S;s}d`^+UgrB_+UM!@fd_5 z70s4|KH^Bv6}qu8J~mJx<9ZV54HSxfv&|i>(tH6g`K*&SIGx@u^#`UYIG(jc4iFu> zd%1UPo*C4(Czp?vD~4Ox#qO9_0CaLvSq(iJZ#QRl3Fs9I+4!;DwC_RzAt1j_?bzlS z0neH(<9l~DgOMq$zUv28(VeyinQsVno)UZGox+OI@&+%yvtm+vTdZ#G4qY0 zEE=#VIx1M*X%u$JZ`ULFNlpgs zqo>7gF;pDEGag-m=j+hUEn_uS4)P4gPr2pij;SiEOyBUhP#knUuQ6uCE9LSdm=CcG z-pO%I3(akxL5Zq{HtebhfQ}Ka9ruq-@#_fG$SUfH0Ar8=DMVRZ##~^6YbK{8!VD1Y znukT^UX3Fa;76^;Z=dp-pnPF$YcHo>b&!Ibzb1i?u_x3X?hoNXp`=M8zONXGqjBep@4ZR-=!#7yXpdbyr9$f9oSHA+{>dae9ZyQ; zoW$1oC!1((T`={fJZjiwCYs5hU4VaE)1s_!eQ1QTK$18vi<5j0^QwK7-`6j0=9t8@ z74NjjT$q|osbUAHW_=QUvdW%W#Bc1{;`O{-w|XglaVIV4`k~xS<4Z(fg%Rr|E)X4o zoR+xX3v;;)8x@lL!#rPDBbmhwp17Z=M4TKq&^w&ilB5&njg|wz^-l~R;w(1Wvyit) z{iRxz!gaqyUQqoYSGh{Bwks>U&V9ne;^r(G*3Cbp3(Vj99?=C zRbW^rY>t8Y^%t_9Airz$D(^|EAP_mUSiDKkMW3AQtFc9^F3pb!-j&*df~1dUNoX8r zha8g|ZwVey?WLgJLs_+*tadX|`Erpn|NjRj%ij18Z?6A65%yzWnVfsGJblS!y)*P! z-Sue@?&;Vsjdc>TIaaNWdVL7|PDzQr>#N}$0rHPOU9Wufz>71C0!KT`Q;P-9Cn=&N4YRB^jE{UZ9y0K0QwWWQK??*IkER!vYkuJXEwxukl zv8fe~ENG3!-Z(DBJ6*q+>`ebk{e9AtT!BM(Zd)-CzeR-&+4}dZlAT6cy_yv4C1^|Z zRo4Q@$^NE>;)W3X!R=T=_Y!qm&Py#NM>vE7yE^ZPKm#WUuMLxN4ueKfY-t|SFU+b+ zo_0Enw_}AOUIQK_{wIZMvCRRQO+;Z?^iBjSSELA6Rc(;i@{dIdUkc{rw>eb_ZicKV zKxQf+R?)Fq=eV&qtcQ=)*L6+FJ)Q*6KJMG78RB=ClQ7(#}<(`yIA+l^=6XrAcNbXfj{fo+`(tn8oc&Q`R-O42Q zhDq}W?4!m9dJl?wmZ{IJFy*OR+??4^(iomzqu{0{*ccGtxXX}LhVweq7U+B_3nJD* z4QGc>jxb@>Dqz}WD6z6d8Jmd)4$kNh;IRvU41@7Fn9*5^y^nC$(?JIjSRq3K2kn3Y zGYlxl-#w2pMyXUg*uBx9U%lReE5-Sj!p%4G2JSTV#jbd+vY?|y zi7$~mjoigZ9iRLqjhdrew zVrOmPL+<>%DJ`M9IC?ukdK zt6$Hi@s$F8Q~1t(U`az_R_#KdT~L^ZEtGYVW22BL=zzhV^zbrRvpqxSdala3XX%?G zbr1|B=&;0f@Gv=`u7~yIA;sE6clLvReCP1`Hgw(Ww|5|ONKR=F}1>A9> zBIAsB%WC;#uLfPOF@ z^Rilx;R#M{3j!Jp2fWajMj8{afl4a6Ny#%?s-W9p=rs#1C5YWZoENfy|B~8~IHnl1 zkp3kvUkz>ENT_$@qsdO_SOioWDeA;QU84&pIm>5bP;2gLY0HB8qr9c09LkAb_qI5_Sslr_XG&nL^oasz!OS04xRiCuCPPbv+{Ucs?>t+Pz2ui{h4TF z%9JOnh(){;KyRw707COr%7&0lxvd?;DV=lsL#^$y2-8ymQPl(btb6IdKBIQ1gEM(f-NVexEr{ zU_h*hh3L>)ME-5w(~rS_!uq4hY}qLtA3p+>r&|(2Bs=l+K>b6k^VkaYbB!$W16Zra zc!nw1|H}K;IHxHb?6s8Ixe|uj^AI`Qv2ns>h`X4;PHwJ~gm9t#0U##{xi5-i5B%3N zIB{*sLcEVQW9VyfM{@5s)Y&N3r5<1DACV6aE7b-V;x-`yAlvagUxnY~5cEfEb3(Nt zbvHYMc{lpdBN?cyZWC(EN+7UrzXTb2vtxbn&Nu^i;>@sz_KA?AA%wUywvi4P)4%pO z-#)|@+h0?jfczP{Da$&t$rBzCgFCw{8L>A>$aTRQeaKM2yS$&2y3cQnCs3&YNFSR6 z9xa1g5pZ?u;?L`FUt9%fHfy2Hytr_8)~rs$w7JTigy(BhVm9kI$j1xtU6DV9cQ7|l z0X<9>=$%E0UAH-Ou1*Eu(E{D$X^V(tc;>fL1Jy(d2~Iim%18pbF<%$|Mcte3+45$O zOhCtkIO4p5QjYgz%YsrgD)bt&k?C1?SQ!d);To-mzJ(A`setT_{-(M!L9(SggcM9~ zQqD`!XMhS=$z$|H8MXAR$vIM#jyJL zZ`~Mr9vQ(VW8VA7pz~6;i3oA-iz;aI>r(gBnU%k*39#wU>;}}gKJEb4rGK+21rrQuH-l?5o2zUUDhxA87PwD~GAG+%%2w^S++x-s|nj8Y?3_09?}(Pj)u z;HBZ+k`aziyeO~iNqJ&n1bqOU0*0m7qWI_dDhTU-?zn4$C151{FeEss627fiUH@-j z9BXlb+LXDpwo6m`UE~Eh8$Jvug{Bqshx*f2MdR^!Y`1=!khu_9H`E!i-76|eo z;5rBt(b*Y{S@7yMGgkCK;DZ-Gl(vjcs?QqOCPpeHGK!grn01*wul5^>fxP?m%4PsQ zdLRXNVLn_4aOxb>GV%J)W8m_a zm~C8sf_@ZR=kA(Z~1@;WNwsX1ujsAq83#noKS*@tM&$=NktEgt@qy^YU~12pui zc1{~RzUHFIpm$E#{=DhpXP(hmeaU)>9(uq>@2YSv7l7}&dNPxBb1{k|qOi|tyqo{z ztDc=`&jGoyymh{(59QHndF>j0(5`jkNRD#BwSqSI)V?X{>gg^MI;jSSpaZ6oJ_f7E zKv0s{YB|YzZPOb^BRT6Oy#W{{Cw0o^reAS?H*?H=eMk}$es1zZ2>2DbM$qWMs+wDS6(M0W15|zh7vbZZj-%s1i_CL6b9Uc?;1{^0 z1vDw0qap1qL;y9S;MOqi@DaZ}WstNL=We%fZ4b7uy;;KC)7Kzz=V|#T8hYrAA-3}C zNSBdzq{!OH+nqqCqc7va^w$m&rmaw0!`Yg^=+~5im%BF)pg-$G!2S8?Pxf`JyHcpz z0+QxGv*Fr0Xwt*%ygp5G!p|BUE&Mx-UO4@)yDblw2PE|w39FxdfUFrrBR9w8p!%K{ zx|pw9{#lN_bsS*&1zwEK$Un3M?*ltf-NQ17$>ywQkE_L%4blRnT$)RBnPs59#*FCLX zj6-Vizu3&3(skvmDFu*0%%((QCMi9$C7)@99x_sNvyIM_8T5!${)CDu){BFX;# zR|YGym?35TSI4y)h+Y{%;!ob-9fgEf-?6S~1 zo$y`f7;L{s6UGSE`S>Tfw7$gtVop*$EmsoZb**iKKX zJn`?<6-3;0avJY;Z!k!-(&O3jBLT! zT8thD(jNqRV~*dHgaF{(;@i&eTDKDcEeczrn)(nl-lN2224>|`RdV&GWJI@tvWv4i zk!hgUCstM!?rNi3q^Lt=obpeP>Q*N06S-DgGkH(Y{t8t|-407N8Y#^_CF5QH`^)Q-;sI5xgu@X{|mOifYd|Q>wOFj%C9{7+AVWP2wUvp_xb0% zqQbb{%{9hxV!A+F4kzEVw!u>S`rurcbJA1zXiXCXP@Ct9B7%Eg{ZD6?ZK_OW-;FX@ z3QQ#wL^N;~jh82E1FLhuZi)f%W$QCj^PZ=JM6n%O9pa!5>8A8TxS}n3SWm47nP2R`q|@O{=@URCYk&8Je=&72fg!p?NB^9x&lbp$k!ad30V}7nXs8 z+xx~l0ZYTEI=c8N3zC}93Wj&j3T6CI6Mbd3x4d60H1}AapHEF(D2#YD@w9Z?ZFf|k zp3-Gt^k}InQVfJb z&0%9jq1cEjdbR2$$Mz*_!pb@mYt84P2i-NrauaS!TIE-eyYJE_w%8i^Nv)QsA6WN) z@~Fw|(Eal9GP40Po0SwyMLJB3_lNhb^!17qjtuY95p1cAbIx%9Xf)c8Ni9HE9I1?l zQ1$~D$84b>o}NsK{WRv?hKv?IZXn^Wm$b+JD?Gs;InUbZH!f%KMOIlEVxgdhrPXEZ zYyaVh`;alRGCk;=lrp@FRx-LGaYB9q+))5NtQR`B*xed-cT=}7nO4eUfyuNHF&-nb zOG0wN;lUC7_V0eTwW z4wTk8mE|d0wq}~{i}9)ry$d^nH*QV0JJCcK5ZnTr1|0sUR>M?PX zOsZ~F!=lg}gxK`dWKsc?*7Oa?h@rfe%lfo3F%t8R3 z$N+^>rXVw%LQPJ3n*?ZJx`NoBVa>IKrRmVWi5B>n(ld|~4|{D&)@QsN!xBQe(txqfz_Crx(1m`%Yz!FUAGlmh(YmP}YODxk(vs5_a&eu)z z%w@D0){40-CpJ*i=Qz5X%!QWCXX$64ArD+P}4r> zS_>OJUG**~IN#hJt0_q<)>>bR*L-}tr-%xL9l-#)cFl{Dk7*(iBtZ)IXs++;A1pYt zVfi(v(#