ksaa 2025.8.23.1__py3-none-any.whl → 2025.9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (827) hide show
  1. {kotonebot/kaa → kaa}/application/core/idle_mode.py +1 -1
  2. {kotonebot/kaa → kaa}/application/core/misc_core.py +1 -1
  3. {kotonebot/kaa → kaa}/common.py +2 -2
  4. {kotonebot/kaa → kaa}/config/const.py +1 -1
  5. {kotonebot/kaa → kaa}/config/produce.py +1 -1
  6. {kotonebot/kaa → kaa}/config/schema.py +10 -1
  7. kaa/db/drink.py +84 -0
  8. kaa/db/sqlite.py +42 -0
  9. {kotonebot → kaa}/debug_entry.py +3 -3
  10. {kotonebot/kaa → kaa}/errors.py +14 -0
  11. {kotonebot/kaa → kaa}/game_ui/dialog.py +1 -1
  12. kaa/game_ui/drinks_overview.py +174 -0
  13. {kotonebot/kaa → kaa}/game_ui/idols_overview.py +13 -7
  14. {kotonebot/kaa → kaa}/game_ui/schedule.py +2 -2
  15. {kotonebot/kaa → kaa}/game_ui/scrollable.py +4 -3
  16. {kotonebot/kaa → kaa}/image_db/db.py +24 -4
  17. {kotonebot/kaa → kaa}/main/gr.py +489 -110
  18. {kotonebot/kaa → kaa}/main/kaa.py +11 -2
  19. {kotonebot/kaa → kaa}/metadata.py +135 -0
  20. kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  21. kaa/resources/drinks/img_general_pdrink_1-001.png +0 -0
  22. kaa/resources/drinks/img_general_pdrink_1-002.png +0 -0
  23. kaa/resources/drinks/img_general_pdrink_1-003.png +0 -0
  24. kaa/resources/drinks/img_general_pdrink_1-004.png +0 -0
  25. kaa/resources/drinks/img_general_pdrink_1-006.png +0 -0
  26. kaa/resources/drinks/img_general_pdrink_1-008.png +0 -0
  27. kaa/resources/drinks/img_general_pdrink_1-009.png +0 -0
  28. kaa/resources/drinks/img_general_pdrink_1-010.png +0 -0
  29. kaa/resources/drinks/img_general_pdrink_2-001.png +0 -0
  30. kaa/resources/drinks/img_general_pdrink_2-003.png +0 -0
  31. kaa/resources/drinks/img_general_pdrink_2-004.png +0 -0
  32. kaa/resources/drinks/img_general_pdrink_2-005.png +0 -0
  33. kaa/resources/drinks/img_general_pdrink_2-006.png +0 -0
  34. kaa/resources/drinks/img_general_pdrink_2-007.png +0 -0
  35. kaa/resources/drinks/img_general_pdrink_2-008.png +0 -0
  36. kaa/resources/drinks/img_general_pdrink_2-009.png +0 -0
  37. kaa/resources/drinks/img_general_pdrink_2-010.png +0 -0
  38. kaa/resources/drinks/img_general_pdrink_3-001.png +0 -0
  39. kaa/resources/drinks/img_general_pdrink_3-002.png +0 -0
  40. kaa/resources/drinks/img_general_pdrink_3-004.png +0 -0
  41. kaa/resources/drinks/img_general_pdrink_3-005.png +0 -0
  42. kaa/resources/drinks/img_general_pdrink_3-006.png +0 -0
  43. kaa/resources/drinks/img_general_pdrink_3-007.png +0 -0
  44. kaa/resources/drinks/img_general_pdrink_3-008.png +0 -0
  45. kaa/resources/drinks/img_general_pdrink_3-009.png +0 -0
  46. kaa/resources/drinks/img_general_pdrink_3-010.png +0 -0
  47. kaa/resources/drinks/img_general_pdrink_3-011.png +0 -0
  48. kaa/resources/drinks/img_general_pdrink_3-012.png +0 -0
  49. kaa/resources/drinks/img_general_pdrink_3-013.png +0 -0
  50. {kotonebot/kaa → kaa}/resources/game.db +0 -0
  51. kaa/resources/game_ver.txt +0 -0
  52. kaa/resources/idol_cards/i_card-skin-amao-3-014_0.png +0 -0
  53. kaa/resources/idol_cards/i_card-skin-amao-3-014_1.png +0 -0
  54. kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  55. kaa/resources/idol_cards/i_card-skin-fktn-3-016_0.png +0 -0
  56. kaa/resources/idol_cards/i_card-skin-fktn-3-016_1.png +0 -0
  57. kaa/resources/idol_cards/i_card-skin-hmsz-3-013_0.png +0 -0
  58. kaa/resources/idol_cards/i_card-skin-hmsz-3-013_1.png +0 -0
  59. kaa/resources/idol_cards/i_card-skin-hrnm-3-013_0.png +0 -0
  60. kaa/resources/idol_cards/i_card-skin-hrnm-3-013_1.png +0 -0
  61. kaa/resources/idol_cards/i_card-skin-hrnm-3-015_0.png +0 -0
  62. kaa/resources/idol_cards/i_card-skin-hrnm-3-015_1.png +0 -0
  63. kaa/resources/idol_cards/i_card-skin-hski-3-015_0.png +0 -0
  64. kaa/resources/idol_cards/i_card-skin-hski-3-015_1.png +0 -0
  65. kaa/resources/idol_cards/i_card-skin-hume-3-015_0.png +0 -0
  66. kaa/resources/idol_cards/i_card-skin-hume-3-015_1.png +0 -0
  67. kaa/resources/idol_cards/i_card-skin-jsna-3-014_0.png +0 -0
  68. kaa/resources/idol_cards/i_card-skin-jsna-3-014_1.png +0 -0
  69. kaa/resources/idol_cards/i_card-skin-kcna-3-015_0.png +0 -0
  70. kaa/resources/idol_cards/i_card-skin-kcna-3-015_1.png +0 -0
  71. kaa/resources/idol_cards/i_card-skin-kllj-3-014_0.png +0 -0
  72. kaa/resources/idol_cards/i_card-skin-kllj-3-014_1.png +0 -0
  73. kaa/resources/idol_cards/i_card-skin-shro-3-014_0.png +0 -0
  74. kaa/resources/idol_cards/i_card-skin-shro-3-014_1.png +0 -0
  75. kaa/resources/idol_cards/i_card-skin-shro-3-015_0.png +0 -0
  76. kaa/resources/idol_cards/i_card-skin-shro-3-015_1.png +0 -0
  77. kaa/resources/idol_cards/i_card-skin-ssmk-3-015_0.png +0 -0
  78. kaa/resources/idol_cards/i_card-skin-ssmk-3-015_1.png +0 -0
  79. kaa/sprites/16db02f4-5297-427d-8c84-587ea5193b53.png +0 -0
  80. kaa/sprites/207594fa-6a0b-45ec-aeff-b3e45348c508.png +0 -0
  81. kaa/sprites/7b5c8883-a1f9-4ce9-bd84-26668577dfc6.png +0 -0
  82. kaa/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
  83. kaa/sprites/a3736105-b3e6-467b-888a-f93b8f4d37be.png +0 -0
  84. kaa/sprites/ad2f8633-f5a6-4ae8-853d-88b0254b6216.png +0 -0
  85. kaa/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
  86. kaa/sprites/f0abbf38-ba4b-474a-bdce-f22db7379de2.png +0 -0
  87. {kotonebot/kaa → kaa}/tasks/R.py +153 -131
  88. {kotonebot/kaa → kaa}/tasks/actions/commu.py +3 -3
  89. {kotonebot/kaa → kaa}/tasks/actions/loading.py +1 -1
  90. {kotonebot/kaa → kaa}/tasks/actions/scenes.py +5 -3
  91. {kotonebot/kaa → kaa}/tasks/actions/stats.py +1 -1
  92. {kotonebot/kaa → kaa}/tasks/daily/acquire_activity_funds.py +2 -2
  93. {kotonebot/kaa → kaa}/tasks/daily/acquire_presents.py +2 -2
  94. {kotonebot/kaa → kaa}/tasks/daily/assignment.py +2 -2
  95. {kotonebot/kaa → kaa}/tasks/daily/capsule_toys.py +4 -3
  96. {kotonebot/kaa → kaa}/tasks/daily/club_reward.py +3 -3
  97. {kotonebot/kaa → kaa}/tasks/daily/contest.py +4 -4
  98. {kotonebot/kaa → kaa}/tasks/daily/mission_reward.py +2 -2
  99. {kotonebot/kaa → kaa}/tasks/daily/purchase.py +2 -4
  100. {kotonebot/kaa → kaa}/tasks/daily/upgrade_support_card.py +3 -3
  101. {kotonebot/kaa → kaa}/tasks/end_game.py +1 -1
  102. {kotonebot/kaa → kaa}/tasks/produce/cards.py +76 -8
  103. {kotonebot/kaa → kaa}/tasks/produce/common.py +94 -6
  104. {kotonebot/kaa → kaa}/tasks/produce/in_purodyuusu.py +96 -73
  105. {kotonebot/kaa → kaa}/tasks/produce/non_lesson_actions.py +17 -11
  106. {kotonebot/kaa → kaa}/tasks/produce/p_drink.py +1 -1
  107. {kotonebot/kaa → kaa}/tasks/produce/produce.py +45 -61
  108. {kotonebot/kaa → kaa}/tasks/start_game.py +18 -10
  109. {kotonebot/kaa → kaa}/util/paths.py +1 -1
  110. {ksaa-2025.8.23.1.dist-info → ksaa-2025.9.dist-info}/METADATA +11 -5
  111. ksaa-2025.9.dist-info/RECORD +753 -0
  112. ksaa-2025.9.dist-info/entry_points.txt +2 -0
  113. ksaa-2025.9.dist-info/top_level.txt +1 -0
  114. kotonebot/__init__.py +0 -40
  115. kotonebot/backend/bot.py +0 -302
  116. kotonebot/backend/color.py +0 -525
  117. kotonebot/backend/context/__init__.py +0 -3
  118. kotonebot/backend/context/context.py +0 -1001
  119. kotonebot/backend/context/task_action.py +0 -176
  120. kotonebot/backend/core.py +0 -126
  121. kotonebot/backend/debug/__init__.py +0 -1
  122. kotonebot/backend/debug/entry.py +0 -89
  123. kotonebot/backend/debug/mock.py +0 -79
  124. kotonebot/backend/debug/server.py +0 -223
  125. kotonebot/backend/debug/vars.py +0 -346
  126. kotonebot/backend/dispatch.py +0 -228
  127. kotonebot/backend/flow_controller.py +0 -197
  128. kotonebot/backend/image.py +0 -748
  129. kotonebot/backend/loop.py +0 -277
  130. kotonebot/backend/ocr.py +0 -511
  131. kotonebot/backend/preprocessor.py +0 -103
  132. kotonebot/client/__init__.py +0 -10
  133. kotonebot/client/device.py +0 -500
  134. kotonebot/client/fast_screenshot.py +0 -378
  135. kotonebot/client/host/__init__.py +0 -12
  136. kotonebot/client/host/adb_common.py +0 -94
  137. kotonebot/client/host/custom.py +0 -114
  138. kotonebot/client/host/leidian_host.py +0 -202
  139. kotonebot/client/host/mumu12_host.py +0 -245
  140. kotonebot/client/host/protocol.py +0 -213
  141. kotonebot/client/host/windows_common.py +0 -55
  142. kotonebot/client/implements/__init__.py +0 -7
  143. kotonebot/client/implements/adb.py +0 -85
  144. kotonebot/client/implements/adb_raw.py +0 -159
  145. kotonebot/client/implements/nemu_ipc/__init__.py +0 -8
  146. kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +0 -280
  147. kotonebot/client/implements/nemu_ipc/nemu_ipc.py +0 -327
  148. kotonebot/client/implements/remote_windows.py +0 -193
  149. kotonebot/client/implements/uiautomator2.py +0 -82
  150. kotonebot/client/implements/windows.py +0 -168
  151. kotonebot/client/protocol.py +0 -69
  152. kotonebot/client/registration.py +0 -24
  153. kotonebot/config/__init__.py +0 -1
  154. kotonebot/config/base_config.py +0 -96
  155. kotonebot/config/manager.py +0 -36
  156. kotonebot/errors.py +0 -72
  157. kotonebot/interop/win/message_box.py +0 -314
  158. kotonebot/interop/win/reg.py +0 -37
  159. kotonebot/interop/win/shortcut.py +0 -43
  160. kotonebot/interop/win/task_dialog.py +0 -469
  161. kotonebot/kaa/db/sqlite.py +0 -25
  162. kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  163. kotonebot/kaa/resources/game_ver.txt +0 -0
  164. kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  165. kotonebot/kaa/sprites/87f96abd-8290-4a06-bfc4-c7275cd01d9a.png +0 -0
  166. kotonebot/kaa/tasks/actions/__init__.py +0 -0
  167. kotonebot/kaa/tasks/daily/__init__.py +0 -0
  168. kotonebot/kaa/tasks/produce/__init__.py +0 -0
  169. kotonebot/logging/__init__.py +0 -2
  170. kotonebot/logging/log.py +0 -18
  171. kotonebot/primitives/__init__.py +0 -17
  172. kotonebot/primitives/geometry.py +0 -290
  173. kotonebot/primitives/visual.py +0 -63
  174. kotonebot/tools/__init__.py +0 -0
  175. kotonebot/tools/mirror.py +0 -354
  176. kotonebot/ui/__init__.py +0 -0
  177. kotonebot/ui/file_host/sensio.py +0 -36
  178. kotonebot/ui/file_host/tmp_send.py +0 -54
  179. kotonebot/ui/pushkit/__init__.py +0 -3
  180. kotonebot/ui/pushkit/image_host.py +0 -87
  181. kotonebot/ui/pushkit/protocol.py +0 -13
  182. kotonebot/ui/pushkit/wxpusher.py +0 -53
  183. kotonebot/ui/user.py +0 -144
  184. kotonebot/util.py +0 -409
  185. ksaa-2025.8.23.1.dist-info/RECORD +0 -755
  186. ksaa-2025.8.23.1.dist-info/entry_points.txt +0 -2
  187. ksaa-2025.8.23.1.dist-info/top_level.txt +0 -1
  188. {kotonebot/kaa → kaa}/application/adapter/misc_adapter.py +0 -0
  189. {kotonebot/kaa → kaa}/config/__init__.py +0 -0
  190. {kotonebot/kaa → kaa}/config/migrations/__init__.py +0 -0
  191. {kotonebot/kaa → kaa}/config/migrations/_idol.py +0 -0
  192. {kotonebot/kaa → kaa}/config/migrations/_v1_to_v2.py +0 -0
  193. {kotonebot/kaa → kaa}/config/migrations/_v2_to_v3.py +0 -0
  194. {kotonebot/kaa → kaa}/config/migrations/_v3_to_v4.py +0 -0
  195. {kotonebot/kaa → kaa}/config/migrations/_v4_to_v5.py +0 -0
  196. {kotonebot/kaa → kaa}/config/migrations/_v5_to_v6.py +0 -0
  197. {kotonebot/kaa → kaa}/config/upgrade.py +0 -0
  198. {kotonebot/kaa → kaa}/db/__init__.py +0 -0
  199. {kotonebot/kaa → kaa}/db/constants.py +0 -0
  200. {kotonebot/kaa → kaa}/db/idol_card.py +0 -0
  201. {kotonebot/kaa → kaa}/game_ui/__init__.py +0 -0
  202. {kotonebot/kaa → kaa}/game_ui/badge.py +0 -0
  203. {kotonebot/kaa → kaa}/game_ui/common.py +0 -0
  204. {kotonebot/kaa → kaa}/game_ui/commu_event_buttons.py +0 -0
  205. {kotonebot/kaa → kaa}/game_ui/primary_button.py +0 -0
  206. {kotonebot/kaa → kaa}/game_ui/toolbar.py +0 -0
  207. {kotonebot/kaa → kaa}/image_db/__init__.py +0 -0
  208. {kotonebot/kaa → kaa}/image_db/descriptors/__init__.py +0 -0
  209. {kotonebot/kaa → kaa}/image_db/descriptors/hist.py +0 -0
  210. {kotonebot/kaa → kaa}/kaa_context.py +0 -0
  211. {kotonebot/kaa → kaa}/main/__init__.py +0 -0
  212. {kotonebot/kaa → kaa}/main/cli.py +0 -0
  213. {kotonebot/kaa → kaa}/main/dmm_host.py +0 -0
  214. {kotonebot/backend → kaa/resources}/__init__.py +0 -0
  215. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
  216. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
  217. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
  218. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
  219. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
  220. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
  221. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
  222. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
  223. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
  224. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
  225. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
  226. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
  227. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
  228. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
  229. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
  230. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
  231. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
  232. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
  233. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
  234. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
  235. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
  236. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
  237. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
  238. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
  239. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
  240. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
  241. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
  242. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
  243. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
  244. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
  245. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
  246. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
  247. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
  248. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
  249. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
  250. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
  251. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
  252. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
  253. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
  254. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
  255. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
  256. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
  257. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
  258. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
  259. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
  260. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
  261. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
  262. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
  263. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
  264. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
  265. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
  266. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
  267. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
  268. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
  269. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
  270. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
  271. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
  272. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
  273. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
  274. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
  275. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
  276. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
  277. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_0.png +0 -0
  278. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_1.png +0 -0
  279. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
  280. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
  281. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
  282. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
  283. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
  284. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_0.png +0 -0
  285. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_1.png +0 -0
  286. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
  287. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
  288. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
  289. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
  290. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_0.png +0 -0
  291. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_1.png +0 -0
  292. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_0.png +0 -0
  293. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_1.png +0 -0
  294. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_0.png +0 -0
  295. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_1.png +0 -0
  296. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_0.png +0 -0
  297. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_1.png +0 -0
  298. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
  299. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
  300. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
  301. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
  302. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
  303. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
  304. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
  305. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
  306. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
  307. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
  308. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
  309. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
  310. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
  311. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
  312. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
  313. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
  314. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
  315. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
  316. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
  317. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
  318. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
  319. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
  320. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
  321. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
  322. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
  323. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
  324. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
  325. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
  326. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
  327. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
  328. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
  329. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
  330. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
  331. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
  332. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
  333. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
  334. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
  335. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
  336. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
  337. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
  338. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
  339. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
  340. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
  341. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
  342. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
  343. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
  344. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
  345. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
  346. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
  347. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
  348. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
  349. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
  350. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
  351. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
  352. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
  353. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
  354. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
  355. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
  356. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
  357. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
  358. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
  359. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
  360. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
  361. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
  362. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
  363. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
  364. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
  365. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
  366. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
  367. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
  368. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
  369. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
  370. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_0.png +0 -0
  371. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_1.png +0 -0
  372. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
  373. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
  374. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
  375. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
  376. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
  377. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
  378. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
  379. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
  380. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
  381. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
  382. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
  383. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
  384. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
  385. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
  386. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
  387. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
  388. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_0.png +0 -0
  389. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_1.png +0 -0
  390. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
  391. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
  392. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
  393. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
  394. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
  395. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  396. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_0.png +0 -0
  397. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_1.png +0 -0
  398. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
  399. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
  400. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
  401. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
  402. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
  403. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
  404. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
  405. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
  406. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
  407. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
  408. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
  409. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
  410. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
  411. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
  412. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_0.png +0 -0
  413. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_1.png +0 -0
  414. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_0.png +0 -0
  415. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
  416. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
  417. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
  418. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_0.png +0 -0
  419. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_1.png +0 -0
  420. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
  421. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
  422. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
  423. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
  424. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
  425. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
  426. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
  427. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
  428. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
  429. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
  430. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
  431. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
  432. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
  433. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
  434. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
  435. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
  436. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
  437. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
  438. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
  439. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
  440. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
  441. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
  442. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
  443. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
  444. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
  445. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
  446. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
  447. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
  448. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
  449. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
  450. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
  451. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
  452. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
  453. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
  454. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
  455. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
  456. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
  457. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
  458. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
  459. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
  460. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
  461. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
  462. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
  463. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
  464. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
  465. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
  466. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
  467. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
  468. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
  469. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
  470. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
  471. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
  472. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
  473. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
  474. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
  475. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
  476. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
  477. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
  478. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  479. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
  480. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
  481. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
  482. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
  483. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
  484. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
  485. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
  486. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_0.png +0 -0
  487. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_1.png +0 -0
  488. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
  489. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
  490. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
  491. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
  492. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
  493. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
  494. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
  495. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
  496. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
  497. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
  498. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
  499. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
  500. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
  501. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
  502. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
  503. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
  504. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
  505. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
  506. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
  507. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
  508. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
  509. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
  510. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
  511. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
  512. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
  513. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
  514. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
  515. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
  516. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
  517. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
  518. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_0.png +0 -0
  519. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_1.png +0 -0
  520. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
  521. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
  522. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
  523. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
  524. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
  525. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
  526. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
  527. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
  528. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
  529. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
  530. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
  531. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
  532. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
  533. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
  534. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
  535. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
  536. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
  537. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
  538. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
  539. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
  540. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
  541. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
  542. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
  543. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
  544. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
  545. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
  546. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
  547. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
  548. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
  549. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
  550. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_0.png +0 -0
  551. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_1.png +0 -0
  552. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
  553. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
  554. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
  555. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
  556. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
  557. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
  558. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
  559. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
  560. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
  561. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
  562. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
  563. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
  564. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
  565. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
  566. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
  567. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
  568. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
  569. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
  570. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
  571. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
  572. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
  573. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
  574. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
  575. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
  576. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
  577. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
  578. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
  579. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
  580. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
  581. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
  582. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
  583. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
  584. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
  585. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
  586. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
  587. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
  588. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
  589. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
  590. {kotonebot/kaa → kaa}/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
  591. /kotonebot/kaa/sprites/81b9a59e-5714-459b-b6ce-03e1f4c4e503.png → /kaa/sprites/03f4353c-4160-46d1-97cc-474d7f797f1f.png +0 -0
  592. /kotonebot/kaa/sprites/2f707d1b-98d5-47b1-a14c-5c7b95a1cc8c.png → /kaa/sprites/055e54c9-753e-4f8b-b6ea-17dc8e0afb61.png +0 -0
  593. {kotonebot/kaa → kaa}/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
  594. /kotonebot/kaa/sprites/e707f860-027c-44ee-a7a3-b18573b539e3.png → /kaa/sprites/06349609-2e10-483b-91b6-bc590d27d2c5.png +0 -0
  595. /kotonebot/kaa/sprites/724e9b7b-0bf6-4d78-b887-9b108474e732.png → /kaa/sprites/06842e56-3de1-4076-81c4-bd5466d2eff5.png +0 -0
  596. {kotonebot/kaa → kaa}/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
  597. /kotonebot/kaa/sprites/cc65d34b-b220-451e-a18e-66b05b911e97.png → /kaa/sprites/0a41bec8-19c0-483f-848b-1c79f47debbe.png +0 -0
  598. /kotonebot/kaa/sprites/be8a47df-79fe-48c1-b41e-77fe1a26a90b.png → /kaa/sprites/0b279fb0-0c30-4767-bf71-4d34cc1ee9cf.png +0 -0
  599. {kotonebot/kaa → kaa}/sprites/0bf5e34e-afc6-4447-bbac-67026ce2ad26.png +0 -0
  600. {kotonebot/kaa → kaa}/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
  601. /kotonebot/kaa/sprites/5df708a6-1383-47a4-aec7-69f492f4f783.png → /kaa/sprites/0c54e162-a97e-402c-a0e6-7ec47e28b788.png +0 -0
  602. /kotonebot/kaa/sprites/444bc913-a075-4f71-baf8-a94cbb8a8ab0.png → /kaa/sprites/0c78b400-5b9c-4c3c-8973-372d6a10ecd6.png +0 -0
  603. {kotonebot/kaa → kaa}/sprites/0d9ac648-eefa-4869-ac99-1b0c83649681.png +0 -0
  604. {kotonebot/kaa → kaa}/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
  605. /kotonebot/kaa/sprites/19962647-b587-488b-9ed3-1f4f7ce36406.png → /kaa/sprites/10ef2258-ffc2-4d94-b059-01d2d7f02e2c.png +0 -0
  606. /kotonebot/kaa/sprites/3d8ab1bb-f8a8-4b19-a565-3b06e1cfe11c.png → /kaa/sprites/10f6e608-9ebb-4198-aaf6-cb2a932891ee.png +0 -0
  607. /kotonebot/kaa/sprites/f4212619-497f-4dcd-a197-e7c4c1c1a8ad.png → /kaa/sprites/124ffbb0-eed0-4bd9-9f2d-145746eb27a0.png +0 -0
  608. /kotonebot/kaa/sprites/f162875f-08d7-4a64-a7b2-2fff14497f74.png → /kaa/sprites/134c72e0-4c66-412e-921d-f21d975bfc07.png +0 -0
  609. /kotonebot/kaa/sprites/f8237a04-9f49-4796-9238-8dfab4cabcbe.png → /kaa/sprites/1522d76b-a91f-4f4e-b3df-02276e7249c8.png +0 -0
  610. {kotonebot/kaa → kaa}/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
  611. /kotonebot/kaa/sprites/80bfcb8e-fb27-4240-85c5-61650419a304.png → /kaa/sprites/16532eae-670d-4708-9396-0dc4070c3027.png +0 -0
  612. /kotonebot/kaa/sprites/51d0f732-2fe9-40c5-b888-8143270d35bb.png → /kaa/sprites/166d2598-e912-4891-9377-945048ac094a.png +0 -0
  613. {kotonebot/kaa → kaa}/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
  614. {kotonebot/kaa → kaa}/sprites/185f7838-92a7-460b-9340-f60858948ce9.png +0 -0
  615. /kotonebot/kaa/sprites/640826ef-c7cf-494c-888a-b151ef418531.png → /kaa/sprites/18ec006e-1a82-45de-9e53-10c54ef1de59.png +0 -0
  616. {kotonebot/kaa → kaa}/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
  617. /kotonebot/kaa/sprites/b241eff8-039e-4734-bea2-e10da89426d8.png → /kaa/sprites/1b9c5c23-d6b0-4d6c-9cdf-9f5bcc718412.png +0 -0
  618. /kotonebot/kaa/sprites/c48df972-98fd-4303-99df-9374f542beda.png → /kaa/sprites/1b9f7964-d562-437c-a055-7f5381a740d5.png +0 -0
  619. /kotonebot/kaa/sprites/97f4f186-da9e-404c-bf1e-918f1b962fee.png → /kaa/sprites/1c04c78a-ad02-4b0a-a4b6-a2ef16134100.png +0 -0
  620. /kotonebot/kaa/sprites/f79fb63f-1737-4e67-b017-0b34bc93295a.png → /kaa/sprites/1dce8db2-8183-45f5-aaa6-00b4625883d4.png +0 -0
  621. {kotonebot/kaa → kaa}/sprites/213016c2-c3a2-43d8-86a3-ab4d27666ced.png +0 -0
  622. {kotonebot/kaa → kaa}/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
  623. /kotonebot/kaa/sprites/fba7b4b2-46d3-4a5a-a161-6891014e6daf.png → /kaa/sprites/2404d43a-95b5-4bba-9de3-f8a854612701.png +0 -0
  624. /kotonebot/kaa/sprites/184e517f-f37f-4cc8-ac49-6858025903ee.png → /kaa/sprites/24cb2b15-d55b-4fcd-b02a-81ec7b56cdb6.png +0 -0
  625. {kotonebot/kaa → kaa}/sprites/24dc7158-036c-4a66-9280-e934f470be53.png +0 -0
  626. {kotonebot/kaa → kaa}/sprites/24e99232-9434-457f-a9a0-69dd7ecf675f.png +0 -0
  627. {kotonebot/kaa → kaa}/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
  628. /kotonebot/kaa/sprites/5661e7a0-9513-4bb6-9549-87b7ad871a0d.png → /kaa/sprites/2a82a975-d4a4-44a5-9755-867f06e6969e.png +0 -0
  629. /kotonebot/kaa/sprites/53eca690-1c14-4424-9456-3a8397ae9ff3.png → /kaa/sprites/2ace1e32-3a6c-4a7e-951c-3c5e216e190e.png +0 -0
  630. /kotonebot/kaa/sprites/e2287baf-c165-467b-8b6c-640d1f2ee376.png → /kaa/sprites/2b406314-82d8-407b-a2e6-85b6c67f19f1.png +0 -0
  631. {kotonebot/kaa → kaa}/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
  632. /kotonebot/kaa/sprites/d3832642-3108-4947-8274-68ad8a78b690.png → /kaa/sprites/2c7e603e-4524-48f6-afb6-3b226292b5d5.png +0 -0
  633. /kotonebot/kaa/sprites/a7f4d9cb-d0ee-4abd-b9fa-148c059c7a0f.png → /kaa/sprites/2c9318f4-4aa3-4803-a93f-f39b0177c49f.png +0 -0
  634. {kotonebot/kaa → kaa}/sprites/2ededcf5-1d80-4e2a-9c83-2a31998331ce.png +0 -0
  635. /kotonebot/kaa/sprites/c84958c3-37a8-4f1e-9874-45d2c3723b80.png → /kaa/sprites/2fa93a4b-b104-4b35-9ddb-c3098cc6ac8d.png +0 -0
  636. /kotonebot/kaa/sprites/59f54f2a-1efb-4d5a-b76b-b740ddf561ec.png → /kaa/sprites/3024ea29-3c2a-494f-99c6-f48c90b9e157.png +0 -0
  637. {kotonebot/kaa → kaa}/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
  638. {kotonebot/kaa → kaa}/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
  639. /kotonebot/kaa/sprites/d61df6da-4b09-4b8c-bc97-46632a80fcd9.png → /kaa/sprites/30e3c754-4231-481c-9bf2-ba532503cbd8.png +0 -0
  640. /kotonebot/kaa/sprites/034203b6-cadb-4b7c-af70-3e9551083457.png → /kaa/sprites/30ea28ac-a7c3-4f60-aaf6-2e641a760ba6.png +0 -0
  641. /kotonebot/kaa/sprites/649f1c6d-03f8-4e84-87a7-b3418bdb9f61.png → /kaa/sprites/321ee0f9-c89f-4abd-bc7b-020429326361.png +0 -0
  642. /kotonebot/kaa/sprites/2e76fba4-b9db-47ce-b6a4-d0a857b3fd4b.png → /kaa/sprites/35935996-53ad-47e5-b821-879945df3167.png +0 -0
  643. {kotonebot/kaa → kaa}/sprites/3942ae40-7f22-412c-aebe-4b064f68db9b.png +0 -0
  644. /kotonebot/kaa/sprites/5efaf4bf-b3cb-456f-88a1-ff1d28be80c1.png → /kaa/sprites/3b2ccce1-2507-4cfe-afd7-6c584c73fc52.png +0 -0
  645. {kotonebot/kaa → kaa}/sprites/3b473fe6-e147-477f-b088-9b8fb042a4f6.png +0 -0
  646. {kotonebot/kaa → kaa}/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
  647. /kotonebot/kaa/sprites/0b3b7c7d-ad01-44dd-bd25-c819eb002a31.png → /kaa/sprites/3f53fe69-f49e-4a34-86bd-608c74e4f33b.png +0 -0
  648. {kotonebot/kaa → kaa}/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
  649. /kotonebot/kaa/sprites/bbc8ae86-9ad5-4fc7-8662-05a096ec1b84.png → /kaa/sprites/3f955b28-d82b-4bff-bc90-0b579d7b8304.png +0 -0
  650. /kotonebot/kaa/sprites/d289f4e1-e92e-4263-93a4-33da4767d7a9.png → /kaa/sprites/3ff71180-76ef-4325-bc67-606bca5bbd8e.png +0 -0
  651. {kotonebot/kaa → kaa}/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
  652. /kotonebot/kaa/sprites/9a9c9044-53c6-40f7-8eb5-2dc71383e58c.png → /kaa/sprites/41ebad4c-2047-42b4-a008-29db3e918045.png +0 -0
  653. /kotonebot/kaa/sprites/e38ced13-5ab3-47ee-b10b-63b5ed4224fb.png → /kaa/sprites/43c3ca7f-4d38-4d03-bb68-fa7e0465612a.png +0 -0
  654. /kotonebot/kaa/sprites/9d87795b-c322-49c6-a9c9-6064828a55a2.png → /kaa/sprites/4454792c-6ebf-4b96-af13-ef1d12531314.png +0 -0
  655. {kotonebot/kaa → kaa}/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
  656. {kotonebot/kaa → kaa}/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
  657. {kotonebot/kaa → kaa}/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
  658. /kotonebot/kaa/sprites/a8a3d531-9024-4603-a864-64bfe439a9ab.png → /kaa/sprites/45a97ef7-99ef-4ea9-8329-1b0577647bc0.png +0 -0
  659. {kotonebot/kaa → kaa}/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
  660. {kotonebot/kaa → kaa}/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
  661. {kotonebot/kaa → kaa}/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
  662. /kotonebot/kaa/sprites/46abcf20-513c-4759-9976-eaab68be7f8f.png → /kaa/sprites/4f3c19db-154c-438d-b93c-3cc6ad1bc603.png +0 -0
  663. /kotonebot/kaa/sprites/e734df59-a24f-42e2-9f53-3ca720ddc612.png → /kaa/sprites/4f43aab0-06ef-47e2-9aea-82153cf73d89.png +0 -0
  664. /kotonebot/kaa/sprites/1cc8c106-1830-433e-956f-7d31a01da99e.png → /kaa/sprites/4f4b72d5-61c5-4d76-a265-84d5c376de80.png +0 -0
  665. {kotonebot/kaa → kaa}/sprites/5031808b-5525-4118-92b4-317ec8bda985.png +0 -0
  666. {kotonebot/kaa → kaa}/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
  667. {kotonebot/kaa → kaa}/sprites/55f7db71-0a18-4b3d-b847-57959b8d2e32.png +0 -0
  668. /kotonebot/kaa/sprites/37686733-d013-4580-b255-6db73142c0f6.png → /kaa/sprites/57cdefa6-4168-43f6-b584-a15b46114277.png +0 -0
  669. {kotonebot/kaa → kaa}/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
  670. /kotonebot/kaa/sprites/f53ff71d-54b5-44d2-9e48-ad2dee918fd1.png → /kaa/sprites/589bfdd8-9d3a-4c19-a2e6-116824350b6e.png +0 -0
  671. /kotonebot/kaa/sprites/e072322f-eff1-4cbd-80c2-4e2103a1aa2f.png → /kaa/sprites/5c99c6b4-8a09-4e34-a5a9-496e1188b3b5.png +0 -0
  672. {kotonebot/kaa → kaa}/sprites/5d36b880-7b3f-49b1-a018-7de59867d376.png +0 -0
  673. {kotonebot/kaa → kaa}/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
  674. /kotonebot/kaa/sprites/5e473a8c-bf57-44d8-a711-db1f4ccc182c.png → /kaa/sprites/5fc9e5c2-a8cb-43e3-b0c2-9bca4877b44b.png +0 -0
  675. /kotonebot/kaa/sprites/97f26adc-071b-4289-8243-dc20e024c7e4.png → /kaa/sprites/686bfe8b-787c-4ad8-852e-0e2c58f6dc42.png +0 -0
  676. /kotonebot/kaa/sprites/8836e28c-e310-4870-94d2-b58e5dffad49.png → /kaa/sprites/69ac12a4-5ab2-4e64-9508-688b1e7dfdd5.png +0 -0
  677. {kotonebot/kaa → kaa}/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
  678. {kotonebot/kaa → kaa}/sprites/6cd80be8-c9b3-4ba5-bf17-3ffc9b000743.png +0 -0
  679. /kotonebot/kaa/sprites/64969b0b-a6ef-4342-a967-20428d5baa65.png → /kaa/sprites/6e5a4c13-1e63-4b23-a19f-6d8f4f899b38.png +0 -0
  680. {kotonebot/kaa → kaa}/sprites/70898bf8-56c5-4f84-becb-629c9ab6a7da.png +0 -0
  681. /kotonebot/kaa/sprites/15552124-cc5c-4abe-b08d-123624248d77.png → /kaa/sprites/715591f4-19db-4dba-a313-d728ec8aa9f3.png +0 -0
  682. /kotonebot/kaa/sprites/6e3515d4-68ce-4760-948b-5fb20576fc12.png → /kaa/sprites/71da60b3-a0c2-4211-ba8b-a60a87d046d6.png +0 -0
  683. /kotonebot/kaa/sprites/814da106-1756-4bce-9140-d2730b635e7e.png → /kaa/sprites/7303cb87-5d31-4725-b40f-4a71b054a473.png +0 -0
  684. {kotonebot/kaa → kaa}/sprites/74ec3510-583d-4a76-ac69-38480fbf1387.png +0 -0
  685. /kotonebot/kaa/sprites/725e767e-79bb-4ce6-a448-8ebee80193b7.png → /kaa/sprites/75636434-d148-4855-9a28-7624e066fc43.png +0 -0
  686. /kotonebot/kaa/sprites/c1c710cd-885b-4b2c-9752-8a2754d0f72d.png → /kaa/sprites/7626a19a-53ce-44f9-8038-5d5f6cb400ec.png +0 -0
  687. /kotonebot/kaa/sprites/8d595a36-a900-42ea-871f-f17f99d5d73a.png → /kaa/sprites/7644328c-160c-49b0-8040-5de2191acade.png +0 -0
  688. /kotonebot/kaa/sprites/288ca9e3-237f-4de6-ba06-e586a9f87d03.png → /kaa/sprites/781b0414-4530-47a3-a2b2-dcaa22043bfa.png +0 -0
  689. /kotonebot/kaa/sprites/b34a76e2-e318-47a0-b194-6e1b01eb269c.png → /kaa/sprites/785e477b-0917-40f3-ad98-0458b816bfa2.png +0 -0
  690. /kotonebot/kaa/sprites/cac8bff8-569e-450f-8ac7-dad3eebf18d9.png → /kaa/sprites/78ce3025-c313-4dee-9097-96bb0b428584.png +0 -0
  691. {kotonebot/kaa → kaa}/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
  692. /kotonebot/kaa/sprites/ceaa1281-57d5-4c32-b5e2-86781518709b.png → /kaa/sprites/7b0c2c89-8a01-40ee-bfec-f6bd36e3ebd0.png +0 -0
  693. /kotonebot/kaa/sprites/4fa138a2-4f39-4023-afd4-af5be7df662b.png → /kaa/sprites/7eace29d-0d92-47b2-a6b2-8616fe1f1628.png +0 -0
  694. /kotonebot/kaa/sprites/8f8f1144-5c30-41f0-8a6b-b39fe78e3e99.png → /kaa/sprites/7fba4fb5-fe30-44c5-90ca-23c40b3e78fb.png +0 -0
  695. {kotonebot/kaa → kaa}/sprites/81c97cd3-df53-44d3-bf3d-1eb4dc67b62a.png +0 -0
  696. {kotonebot/kaa → kaa}/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
  697. {kotonebot/kaa → kaa}/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
  698. {kotonebot/kaa → kaa}/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
  699. /kotonebot/kaa/sprites/974015ca-854d-43e3-a8ed-faa247d304bc.png → /kaa/sprites/8831d905-96e9-454c-9b18-12717a868244.png +0 -0
  700. /kotonebot/kaa/sprites/32395105-71b0-4f98-a439-c181e82a648e.png → /kaa/sprites/88563ae3-26a5-43b6-92f0-8200639d9dfc.png +0 -0
  701. /kotonebot/kaa/sprites/6fe17986-a29d-4198-b366-1c40637069b5.png → /kaa/sprites/8b0d963b-5430-4686-97e5-0c7ccdf4a0c9.png +0 -0
  702. /kotonebot/kaa/sprites/4999097e-2f8b-4965-9e7e-cb9801f8ed0e.png → /kaa/sprites/8b248585-c463-4a01-b189-7bda5f30c508.png +0 -0
  703. {kotonebot/kaa → kaa}/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
  704. {kotonebot/kaa → kaa}/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
  705. /kotonebot/kaa/sprites/2af71658-11c3-4c34-b604-003fb8a6a542.png → /kaa/sprites/8f76e6f2-4069-421e-9867-7212e17f7fb3.png +0 -0
  706. {kotonebot/kaa → kaa}/sprites/8f8b7b46-53bb-42ab-907a-4ea87eb09ab4.png +0 -0
  707. /kotonebot/kaa/sprites/d67de935-b5f2-4176-ab52-d0482290cb59.png → /kaa/sprites/8fbd928c-1eff-4dd6-8009-fd1a52c7eee5.png +0 -0
  708. /kotonebot/kaa/sprites/56c4d716-65b3-4fb8-badb-970853544c7a.png → /kaa/sprites/9066e428-a248-46f5-9309-13a7f1ec608e.png +0 -0
  709. /kotonebot/kaa/sprites/34fd0d97-1018-4986-b990-29e48abc2a56.png → /kaa/sprites/90eb7800-7ec7-494d-91ee-8cec501b67a9.png +0 -0
  710. {kotonebot/kaa → kaa}/sprites/921eefeb-730e-46fc-9924-d338fb286592.png +0 -0
  711. {kotonebot/kaa → kaa}/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
  712. /kotonebot/kaa/sprites/6dacc5c6-85e2-4e26-b7a4-6bda6cc3ed0e.png → /kaa/sprites/9469635b-8fef-470b-907e-f7491d144243.png +0 -0
  713. /kotonebot/kaa/sprites/fc64316e-8394-4019-a16f-d6e7bb83d9bf.png → /kaa/sprites/94a098bc-8a4e-41be-ac14-0d5528517241.png +0 -0
  714. /kotonebot/kaa/sprites/647e6110-8c89-4c34-9352-b8b321c61500.png → /kaa/sprites/95c0e57a-6983-4951-b7bc-863a3638a186.png +0 -0
  715. /kotonebot/kaa/sprites/8af8652d-06fe-4d2c-b123-641c7fbc651d.png → /kaa/sprites/97adcebd-bf26-4155-bc64-ac7d3f59d419.png +0 -0
  716. /kotonebot/kaa/sprites/d55c4fd9-f8be-467a-923f-03cef8bd0525.png → /kaa/sprites/98699927-81c8-4ddc-a5fc-5d0fe03b4c72.png +0 -0
  717. /kotonebot/kaa/sprites/44b34d58-8178-416f-88bc-a3c4a5a26bac.png → /kaa/sprites/9ab2e90a-6f3a-442a-a0eb-10a935514656.png +0 -0
  718. /kotonebot/kaa/sprites/b80cec57-1d9c-4e40-a4d2-df1e1b1546d3.png → /kaa/sprites/9ab3a1a5-40d6-45ca-873d-22c270f264ea.png +0 -0
  719. /kotonebot/kaa/sprites/62b425ac-3e19-4924-8a58-c085f4d38f56.png → /kaa/sprites/9b70d18f-52b6-4616-9e05-c1c52cb4df7a.png +0 -0
  720. /kotonebot/kaa/sprites/ccb670dd-7c8e-4bc9-8e73-934ce26d23a8.png → /kaa/sprites/9e893645-1ed3-4cc9-8dea-dad90617f61a.png +0 -0
  721. {kotonebot/kaa → kaa}/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  722. {kotonebot/interop/win → kaa/sprites}/__init__.py +0 -0
  723. {kotonebot/kaa → kaa}/sprites/a0bd6a5f-784d-4f0a-9d66-10f4b80c8d3e.png +0 -0
  724. {kotonebot/kaa → kaa}/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
  725. /kotonebot/kaa/sprites/b6f57baa-1d05-464f-81c9-0014063d6656.png → /kaa/sprites/a227e737-e250-483e-ab27-920a050949d5.png +0 -0
  726. {kotonebot/kaa → kaa}/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  727. /kotonebot/kaa/sprites/c32068c9-6e52-4176-98de-fd4d252969dd.png → /kaa/sprites/a552aef0-ddff-4f6f-a4a2-01961cd4456a.png +0 -0
  728. /kotonebot/kaa/sprites/d88c35b8-f101-4557-b2a5-0f7846fecd4c.png → /kaa/sprites/a6075d44-059b-41b1-b85b-c788465dfd28.png +0 -0
  729. /kotonebot/kaa/sprites/cf89988c-c930-4890-8a55-018de7a4ae5a.png → /kaa/sprites/a6aa055f-298c-4695-8efd-492159f832f5.png +0 -0
  730. /kotonebot/kaa/sprites/6e314b73-5ff5-4aa9-9dc3-1ebf28a578a7.png → /kaa/sprites/a8c555f5-d7d5-4ffd-85c7-1fc8bd1014df.png +0 -0
  731. {kotonebot/kaa → kaa}/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
  732. /kotonebot/kaa/sprites/ef601e20-dc47-4c70-a251-4238fde74d49.png → /kaa/sprites/ab075e3f-963f-4a55-9fed-6e4eb9f2c553.png +0 -0
  733. /kotonebot/kaa/sprites/0bab5a6b-631c-4661-8035-50a03299bd08.png → /kaa/sprites/ab984712-9e57-4c42-ac5e-f90079f2902a.png +0 -0
  734. {kotonebot/kaa → kaa}/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
  735. {kotonebot/kaa → kaa}/sprites/ae9fe233-9acc-4e96-ba8e-1fb1d9bc2ea5.png +0 -0
  736. {kotonebot/kaa → kaa}/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
  737. /kotonebot/kaa/sprites/9ac47ce9-2594-4740-ba70-c61f97c0f992.png → /kaa/sprites/b14d0a2e-9ba8-4196-aafb-beeee7f51767.png +0 -0
  738. /kotonebot/kaa/sprites/50718df3-1b0e-425f-802c-ca4abd08a4b5.png → /kaa/sprites/b21fa3a4-1aab-46a2-be7a-01d548f2ea9d.png +0 -0
  739. {kotonebot/kaa → kaa}/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
  740. /kotonebot/kaa/sprites/998be65c-b835-4004-bbe0-411a4d74985c.png → /kaa/sprites/b2c45f1d-e548-4eba-b306-b5eb356ff29b.png +0 -0
  741. {kotonebot/kaa → kaa}/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
  742. /kotonebot/kaa/sprites/180168f7-9ead-4ce3-9cd9-b1960d649e5c.png → /kaa/sprites/b341f18a-dfcc-4387-b146-061b308f5bea.png +0 -0
  743. {kotonebot/kaa → kaa}/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
  744. {kotonebot/kaa → kaa}/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
  745. /kotonebot/kaa/sprites/71841087-2d73-4726-943a-c784df0b0d2d.png → /kaa/sprites/ba1b392d-ad28-4668-8b91-94d161d1a16d.png +0 -0
  746. /kotonebot/kaa/sprites/441934e4-3659-4522-985c-0e683eb03f1c.png → /kaa/sprites/ba45b90d-0e6f-4188-a0df-069e2a6914bd.png +0 -0
  747. {kotonebot/kaa → kaa}/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
  748. {kotonebot/kaa → kaa}/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
  749. /kotonebot/kaa/sprites/4c4339dc-c9b2-4a3c-a80a-02512d281289.png → /kaa/sprites/be5c90c5-da5f-40d5-bc5a-3d677abc5795.png +0 -0
  750. /kotonebot/kaa/sprites/c35208a6-261e-4a2e-aeae-aae19d8c83d6.png → /kaa/sprites/bfb3a923-7b5e-439d-a19a-fd5150ec8443.png +0 -0
  751. /kotonebot/kaa/sprites/a5e675c9-8fc8-46f2-ae73-bc871d65daaf.png → /kaa/sprites/c0c1a392-bc82-48c2-a304-0587e7038279.png +0 -0
  752. {kotonebot/kaa → kaa}/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
  753. {kotonebot/kaa → kaa}/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
  754. {kotonebot/kaa → kaa}/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
  755. /kotonebot/kaa/sprites/87ee5cea-6fb4-4768-8767-3c422df08371.png → /kaa/sprites/c7daf7d5-42b0-4c38-be47-d3b957211e2a.png +0 -0
  756. /kotonebot/kaa/sprites/8fad2402-594e-4466-927a-1f83139d7edf.png → /kaa/sprites/c916030c-dc67-4c88-9b86-390c8f66f0c8.png +0 -0
  757. {kotonebot/kaa → kaa}/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
  758. {kotonebot/kaa → kaa}/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
  759. /kotonebot/kaa/sprites/e129c096-35c3-4fd8-b30c-ce92c3c9b85f.png → /kaa/sprites/ca80e346-d3d9-4228-9b92-373467dadadd.png +0 -0
  760. {kotonebot/kaa → kaa}/sprites/cb3d0ca7-8d14-408a-a2f5-2e25f7b86d6c.png +0 -0
  761. {kotonebot/kaa → kaa}/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
  762. {kotonebot/kaa → kaa}/sprites/cc60b509-2ed5-493d-bb9f-333c6d2a6006.png +0 -0
  763. {kotonebot/kaa → kaa}/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
  764. {kotonebot/kaa → kaa}/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
  765. {kotonebot/kaa → kaa}/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
  766. {kotonebot/kaa → kaa}/sprites/ce20a856-5629-4f8e-a8e1-d1bd14e18e4f.png +0 -0
  767. /kotonebot/kaa/sprites/28282c09-6ce2-4d65-8475-1fc6fbf54e15.png → /kaa/sprites/cfa95767-6869-42c2-94ec-a2ffeca8179f.png +0 -0
  768. {kotonebot/kaa → kaa}/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
  769. /kotonebot/kaa/sprites/9dcb4207-f546-4382-a87d-5d3377a31f4f.png → /kaa/sprites/d224df78-a15a-4edc-91c0-c6243c3c43b4.png +0 -0
  770. {kotonebot/kaa → kaa}/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
  771. /kotonebot/kaa/sprites/d61a93e8-0e24-40d8-814a-402765d057ea.png → /kaa/sprites/d2d4752f-7c62-42d3-8d3a-f5d186bc0e0d.png +0 -0
  772. {kotonebot/kaa → kaa}/sprites/d3424d31-0502-4623-996e-f0194e5085ce.png +0 -0
  773. {kotonebot/kaa → kaa}/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
  774. /kotonebot/kaa/sprites/2ebe4066-c47c-4284-a52d-b3f5bed523f3.png → /kaa/sprites/d4db176f-8597-4c3e-99e8-a7acc4012df8.png +0 -0
  775. /kotonebot/kaa/sprites/7f459ed4-063c-48ab-a9ed-48f73bd3a865.png → /kaa/sprites/d53b56af-153c-476c-bab5-1478a66eecb2.png +0 -0
  776. {kotonebot/kaa → kaa}/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
  777. /kotonebot/kaa/sprites/c38d6852-316f-4a77-9987-e15789ee8612.png → /kaa/sprites/d727e802-443b-4f14-a448-caf53426c488.png +0 -0
  778. {kotonebot/kaa → kaa}/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
  779. {kotonebot/kaa → kaa}/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
  780. {kotonebot/kaa → kaa}/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
  781. {kotonebot/kaa → kaa}/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
  782. {kotonebot/kaa → kaa}/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
  783. {kotonebot/kaa → kaa}/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
  784. /kotonebot/kaa/sprites/a938bf45-e622-424f-829a-76152586f413.png → /kaa/sprites/dd4987ea-d1a0-4a84-a7b6-6023eb5c4ec8.png +0 -0
  785. {kotonebot/kaa → kaa}/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
  786. /kotonebot/kaa/sprites/cdd7bbc5-8ebd-4a5c-84ca-0e7ca7702d8f.png → /kaa/sprites/de9bbc4c-6d29-422f-8f29-82870270efb3.png +0 -0
  787. /kotonebot/kaa/sprites/6a77517b-99b1-42a1-ba61-a3109151339e.png → /kaa/sprites/dedc30bf-4a69-4bec-b3f7-c3b1fcf61283.png +0 -0
  788. {kotonebot/kaa → kaa}/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
  789. /kotonebot/kaa/sprites/87b36188-2bf9-4b56-98cf-9e8df3879dbf.png → /kaa/sprites/e149613e-d126-42f8-94c9-180cf2244041.png +0 -0
  790. {kotonebot/kaa → kaa}/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
  791. /kotonebot/kaa/sprites/f68eb4f1-b30b-43fc-8a24-11394cc759d2.png → /kaa/sprites/e56f125e-1b4b-48ea-be9c-256496f91f6f.png +0 -0
  792. {kotonebot/kaa → kaa}/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
  793. /kotonebot/kaa/sprites/8dfc96b9-678a-4126-914a-8b5ba920e280.png → /kaa/sprites/e5f0644a-26a7-4d00-a5c8-2e6263b0e547.png +0 -0
  794. /kotonebot/kaa/sprites/5af6d58e-52c5-47fd-8ea5-c2fa8bb67e99.png → /kaa/sprites/e62398fa-f25e-4a1b-86d6-f89ec096cc27.png +0 -0
  795. /kotonebot/kaa/sprites/7465297a-497d-41fa-948d-7f04ad5fdc94.png → /kaa/sprites/e65f87fe-3a59-4465-90cd-5167fb3aa4ae.png +0 -0
  796. {kotonebot/kaa → kaa}/sprites/e6b45405-cd9f-4c6e-a9f1-6ec953747c65.png +0 -0
  797. /kotonebot/kaa/sprites/cca278bb-88cb-4898-8bbe-f52a49a0f740.png → /kaa/sprites/e772ae1e-3c75-417c-bd36-52b5fa046cf9.png +0 -0
  798. /kotonebot/kaa/sprites/38526b38-7f62-466b-8702-0c657891c7fa.png → /kaa/sprites/e80f5d59-6c4a-4d40-8fd2-7ccfc8f20d08.png +0 -0
  799. {kotonebot/kaa → kaa}/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
  800. /kotonebot/kaa/sprites/32966af9-8bfe-4b67-b9b5-2fd5e2678468.png → /kaa/sprites/e8ef0ab6-9132-410d-ad44-c6bbdda8298a.png +0 -0
  801. {kotonebot/kaa → kaa}/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
  802. {kotonebot/kaa → kaa}/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
  803. {kotonebot/kaa → kaa}/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
  804. /kotonebot/kaa/sprites/1989466d-c486-4e0c-acc9-ed3116e3c0b8.png → /kaa/sprites/ecd053a6-3791-4535-8e7f-65c740619fc5.png +0 -0
  805. /kotonebot/kaa/sprites/0411b7d9-8f30-44c8-ad51-fde15025ab5f.png → /kaa/sprites/edecb8c9-60b8-4576-8c56-03a33f0a2496.png +0 -0
  806. {kotonebot/kaa → kaa}/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
  807. /kotonebot/kaa/sprites/24b645e9-66a6-4c4b-8273-c895ba6b8324.png → /kaa/sprites/ee775922-936a-4445-85fc-0a2607fea917.png +0 -0
  808. {kotonebot/kaa → kaa}/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
  809. /kotonebot/kaa/sprites/cdbf1f7f-63f6-40d7-a3b6-3d64bd6f9083.png → /kaa/sprites/ef0226e3-6bad-4b40-9056-7dc2952b4de9.png +0 -0
  810. /kotonebot/kaa/sprites/a43abe98-376b-4da7-ab17-b6c9e1a875fb.png → /kaa/sprites/ef84cc0f-4699-4514-8d1f-cf1ca30ce790.png +0 -0
  811. {kotonebot/kaa → kaa}/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
  812. {kotonebot/kaa → kaa}/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
  813. {kotonebot/kaa → kaa}/sprites/f5c16d2f-ebc5-4617-9b96-971696af7c52.png +0 -0
  814. {kotonebot/kaa → kaa}/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
  815. /kotonebot/kaa/sprites/c107e00b-f94f-4526-88f5-2eae03a7d7f6.png → /kaa/sprites/f6f8e8b4-6426-43b0-b3e6-020401a1da3f.png +0 -0
  816. /kotonebot/kaa/sprites/395a07be-38b7-4c8c-948e-9efcb93a2e49.png → /kaa/sprites/f7f6a9d8-13cb-4c19-b43f-ca0e4b9176d5.png +0 -0
  817. /kotonebot/kaa/sprites/88456f07-23f0-48f7-ac81-206312717095.png → /kaa/sprites/f8b12dfa-bef8-41eb-a325-e7dd73c14124.png +0 -0
  818. /kotonebot/kaa/sprites/faeb1498-1c11-4bc7-8e85-864fd876751c.png → /kaa/sprites/f9a04314-15b1-41bb-9e7f-670d952973ce.png +0 -0
  819. {kotonebot/kaa → kaa}/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
  820. {kotonebot/kaa → kaa/tasks}/__init__.py +0 -0
  821. {kotonebot/kaa/resources → kaa/tasks/actions}/__init__.py +0 -0
  822. {kotonebot/kaa → kaa}/tasks/clear_logs.py +0 -0
  823. {kotonebot/kaa/sprites → kaa/tasks/daily}/__init__.py +0 -0
  824. {kotonebot/kaa/tasks → kaa/tasks/produce}/__init__.py +0 -0
  825. {kotonebot/kaa → kaa}/util/trace.py +0 -0
  826. {ksaa-2025.8.23.1.dist-info → ksaa-2025.9.dist-info}/WHEEL +0 -0
  827. {ksaa-2025.8.23.1.dist-info → ksaa-2025.9.dist-info}/licenses/LICENSE +0 -0
@@ -1,525 +0,0 @@
1
- import colorsys
2
- from typing import Literal
3
- from dataclasses import dataclass
4
-
5
- import numpy as np
6
- import cv2
7
- from cv2.typing import MatLike
8
-
9
- from .core import unify_image
10
- from ..primitives import RectTuple, Rect
11
- from .debug import result as debug_result, debug, color as debug_color
12
-
13
- RgbColorTuple = tuple[int, int, int]
14
- RgbColorStr = str
15
- RgbColor = RgbColorTuple | RgbColorStr
16
- """颜色。三元组 `(r, g, b)` 或十六进制颜色字符串 `#RRGGBB`"""
17
-
18
- HsvColor = tuple[int, int, int]
19
- """
20
- HSV颜色。三元组 `(h, s, v)`。
21
- """
22
-
23
- @dataclass
24
- class FindColorPointResult:
25
- position: tuple[int, int]
26
- confidence: float
27
- target_color: RgbColor
28
-
29
- def hsv_web2cv(h: int, s: int, v: int) -> 'HsvColor':
30
- """
31
- 将 HSV 颜色从 Web 格式转换为 OpenCV 格式。
32
-
33
- :param h: 色相,范围 [0, 360]
34
- :param s: 饱和度,范围 [0, 100]
35
- :param v: 亮度,范围 [0, 100]
36
- :return: OpenCV 格式 HSV 颜色。三元组 `(h, s, v)`,范围分别为 (0-180, 0-255, 0-255)。
37
- """
38
- h = round(h / 2) # web 的色相范围是 0-360,转为 0-180
39
- s = round(s / 100 * 255) # web 的饱和度范围是 0-100,转为 0-255
40
- v = round(v / 100 * 255) # web 的亮度范围是 0-100,转为 0-255
41
- return (h, s, v)
42
-
43
- def hsv_cv2web(h: int, s: int, v: int) -> 'HsvColor':
44
- """
45
- 将 HSV 颜色从 OpenCV 格式转换为 Web 格式。
46
-
47
- :param h: 色相,范围 [0, 180]
48
- :param s: 饱和度,范围 [0, 255]
49
- :param v: 亮度,范围 [0, 255]
50
- :return: Web 格式 HSV 颜色。三元组 `(h, s, v)`,范围分别为 (0-360, 0-100, 0-100)。
51
- """
52
- h = round(h * 2) # opencv 的色相范围是 0-180,转为 0-360
53
- s = round(s / 255 * 100) # opencv 的饱和度范围是 0-255,转为 0-100
54
- v = round(v / 255 * 100) # opencv 的亮度范围是 0-255,转为 0-100
55
- return (h, s, v)
56
-
57
- def rgb_to_hsv(c: RgbColor) -> 'HsvColor':
58
- """
59
- 将 RGB 颜色转换为 HSV 颜色。
60
-
61
- :param c: RGB 颜色。十六进制颜色字符串 `#RRGGBB` 或整数三元组 `(r, g, b)`。
62
- :return: Web 格式 HSV 颜色。三元组 `(h, s, v)`,范围分别为 (0-360, 0-100, 0-100)。
63
- """
64
- c = _unify_color(c)
65
- ret = colorsys.rgb_to_hsv(c[0] / 255, c[1] / 255, c[2] / 255)
66
- return (round(ret[0] * 360), round(ret[1] * 100), round(ret[2] * 100))
67
-
68
- def hsv_to_rgb(c: HsvColor) -> 'RgbColor':
69
- """
70
- 将 HSV 颜色转换为 RGB 颜色。
71
-
72
- :param c: Web 格式 HSV 颜色。三元组 `(h, s, v)`,范围分别为 (0-360, 0-100, 0-100)。
73
- :return: RGB 颜色。整数三元组 `(r, g, b)`。
74
- """
75
- ret = colorsys.hsv_to_rgb(c[0] / 360, c[1] / 100, c[2] / 100)
76
- return (round(ret[0] * 255), round(ret[1] * 255), round(ret[2] * 255))
77
-
78
- def _unify_color(color: RgbColor) -> RgbColorTuple:
79
- if isinstance(color, str):
80
- if not color.startswith('#'):
81
- raise ValueError('Hex color string must start with #')
82
- color = color[1:] # 去掉#
83
- if len(color) != 6:
84
- raise ValueError('Hex color string must be 6 digits')
85
- r = int(color[0:2], 16)
86
- g = int(color[2:4], 16)
87
- b = int(color[4:6], 16)
88
- return (r, g, b)
89
- elif (
90
- isinstance(color, tuple)
91
- and len(color) == 3
92
- and all(isinstance(c, int) for c in color)
93
- and all(0 <= c <= 255 for c in color)
94
- ):
95
- return color
96
- else:
97
- raise ValueError('Invalid color format')
98
-
99
- def in_range(color: RgbColor, range: tuple[HsvColor, HsvColor]) -> bool:
100
- """
101
- 判断颜色是否在范围内。
102
-
103
- :param color: RGB 颜色。
104
- :param range: Web HSV 颜色范围。
105
- """
106
- h, s, v = rgb_to_hsv(color)
107
- h1, s1, v1 = range[0]
108
- h2, s2, v2 = range[1]
109
- return h1 <= h <= h2 and s1 <= s <= s2 and v1 <= v <= v2
110
-
111
- def find(
112
- image: MatLike | str,
113
- color: RgbColor,
114
- *,
115
- rect: Rect | None = None,
116
- threshold: float = 0.95,
117
- method: Literal['rgb_dist'] = 'rgb_dist',
118
- ) -> tuple[int, int] | None:
119
- """
120
- 在图像中查找指定颜色的点。
121
-
122
- :param image:
123
- 图像。可以是 MatLike 或图像文件路径。
124
- 注意如果参数为 MatLike,则颜色格式必须为 BGR,而不是 RGB。
125
- :param color: 颜色。可以是整数三元组 `(r, g, b)` 或十六进制颜色字符串 `#RRGGBB`。
126
- :param rect: 查找范围。如果为 None,则在整个图像中查找。
127
- :param threshold: 阈值,越大表示越相似,1 表示完全相似。默认为 0.95。
128
- :param method: 比较算法。默认为 'rgb_dist',且目前也只有这个方法。
129
-
130
- ## 比较算法
131
- * rgb_dist:
132
- 计算图片中每个点的颜色到目标颜色的欧氏距离,并以 442 为最大值归一化到 0-1 之间。
133
- """
134
- _rect = rect.xywh if rect else None
135
- ret = None
136
- ret_similarity = 0
137
- found_color = None
138
- color = _unify_color(color)
139
- image = unify_image(image)
140
- image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
141
-
142
- # 将目标颜色转换为HSL
143
- r, g, b = color
144
- target_rgb = np.array([[[r, g, b]]], dtype=np.uint8)
145
- target_hls = cv2.cvtColor(target_rgb, cv2.COLOR_RGB2HLS)[0,0]
146
- target_h, target_l, target_s = target_hls
147
-
148
- # 将图像转换为HSL
149
- image_hls = cv2.cvtColor(image, cv2.COLOR_BGR2HLS).astype(np.float32)
150
-
151
- # 计算HSL空间中的距离
152
- # H通道需要特殊处理,因为它是环形的(0和180是相邻的)
153
- h_diff = np.minimum(
154
- np.abs(image_hls[:,:,0] - target_h),
155
- 180 - np.abs(image_hls[:,:,0] - target_h)
156
- )
157
- l_diff = np.abs(image_hls[:,:,1] - target_l)
158
- s_diff = np.abs(image_hls[:,:,2] - target_s)
159
-
160
- # 归一化距离(H:0-180, L:0-255, S:0-255)
161
- h_diff = h_diff / 90 # 最大差值180/2
162
- l_diff = l_diff / 255
163
- s_diff = s_diff / 255
164
-
165
- # 计算加权距离
166
- dist = np.sqrt((h_diff * 2)**2 + l_diff**2 + s_diff**2) / np.sqrt(6)
167
-
168
- # 寻找结果
169
- matches: np.ndarray = dist <= (1 - threshold)
170
- # 只在rect范围内搜索
171
- if _rect is not None:
172
- x, y, w, h = _rect
173
- search_area = matches[y:y+h, x:x+w]
174
- if search_area.any():
175
- # 在裁剪区域中找到最小距离的点
176
- local_dist = dist[y:y+h, x:x+w]
177
- local_dist[~search_area] = float('inf')
178
- min_y, min_x = np.unravel_index(np.argmin(local_dist), local_dist.shape)
179
- # 转换回原图坐标
180
- ret = (int(x + min_x), int(y + min_y))
181
- ret_similarity = 1 - local_dist[min_y, min_x]
182
- found_color = tuple(image_rgb[y+min_y, x+min_x])
183
- # 在全图中找到最小距离的点
184
- else:
185
- if matches.any():
186
- dist[~matches] = float('inf')
187
- min_y, min_x = np.unravel_index(np.argmin(dist), dist.shape)
188
- ret = (int(min_x), int(min_y))
189
- ret_similarity = 1 - dist[min_y, min_x]
190
- found_color = tuple(image_rgb[min_y, min_x])
191
- # 调试输出
192
- if debug.enabled:
193
- result_image = image.copy()
194
- # 绘制结果点
195
- if ret is not None:
196
- x, y = ret
197
- # 蓝色圈出结果点
198
- cv2.rectangle(result_image,
199
- (max(0, x-20), max(0, y-20)),
200
- (min(result_image.shape[1], x+20), min(result_image.shape[0], y+20)),
201
- (255, 0, 0), 2)
202
- # 绘制搜索范围
203
- if _rect is not None:
204
- x, y, w, h = _rect
205
- # 红色圈出rect
206
- cv2.rectangle(result_image, (x, y), (x+w, y+h), (0, 0, 255), 2)
207
- debug_result(
208
- 'find_rgb',
209
- [result_image, image],
210
- f'target={debug_color(color)}\n'
211
- f'rect={rect}\n'
212
- f'result={ret}\n'
213
- f'similarity={ret_similarity}\n'
214
- f'found_color={debug_color(found_color)}\n'
215
- '(Red rect for search area, blue rect for result area)'
216
- )
217
- return ret
218
-
219
- def color_distance_map(
220
- image: MatLike | str,
221
- color: RgbColor,
222
- *,
223
- rect: RectTuple | None = None,
224
- ) -> np.ndarray:
225
- """
226
- 计算图像中每个像素点到目标颜色的HSL距离,并返回归一化后的距离矩阵。
227
-
228
- :param image: 图像。可以是 MatLike 或图像文件路径。
229
- :param color: 目标颜色。可以是整数三元组 `(r, g, b)` 或十六进制颜色字符串 `#RRGGBB`。
230
- :param rect: 计算范围。如果为 None,则在整个图像中计算。
231
- :return: 归一化后的距离矩阵,范围 [0, 1],0 表示完全匹配,1 表示完全不匹配。
232
- """
233
- # 统一颜色格式
234
- color = _unify_color(color)
235
- # 统一图像格式
236
- image = unify_image(image)
237
-
238
- # # 如果指定了rect,裁剪图像
239
- if rect is not None:
240
- x, y, w, h = rect
241
- image = image[y:y+h, x:x+w]
242
-
243
- # 将图像转换为HLS格式
244
- image_hls = cv2.cvtColor(image, cv2.COLOR_BGR2HLS).astype(np.float32)
245
-
246
- # 将目标颜色转换为HSL
247
- r, g, b = color
248
- target_rgb = np.array([[[r, g, b]]], dtype=np.uint8)
249
- target_hls = cv2.cvtColor(target_rgb, cv2.COLOR_RGB2HLS)[0,0]
250
- target_h, target_l, target_s = target_hls
251
-
252
- # 计算HSL空间中的距离
253
- # H通道需要特殊处理,因为它是环形的(0和180是相邻的)
254
- h_diff = np.minimum(
255
- np.abs(image_hls[:,:,0] - target_h),
256
- 180 - np.abs(image_hls[:,:,0] - target_h)
257
- )
258
- l_diff = np.abs(image_hls[:,:,1] - target_l)
259
- s_diff = np.abs(image_hls[:,:,2] - target_s)
260
-
261
- # 归一化距离(H:0-180, L:0-255, S:0-255)
262
- h_diff = h_diff / 90 # 最大差值180/2
263
- l_diff = l_diff / 255
264
- s_diff = s_diff / 255
265
-
266
- # 计算加权距离
267
- dist = np.sqrt((h_diff * 2)**2 + l_diff**2 + s_diff**2) / np.sqrt(6)
268
- return dist
269
-
270
- def _rect_intersection(rect1: RectTuple, rect2: RectTuple) -> RectTuple | None:
271
- """
272
- 计算两个矩形的交集区域。
273
-
274
- :param rect1: 第一个矩形 (x, y, w, h)
275
- :param rect2: 第二个矩形 (x, y, w, h)
276
- :return: 交集矩形 (x, y, w, h),如果没有交集则返回 None
277
- """
278
- x1 = max(rect1[0], rect2[0])
279
- y1 = max(rect1[1], rect2[1])
280
- x2 = min(rect1[0] + rect1[2], rect2[0] + rect2[2])
281
- y2 = min(rect1[1] + rect1[3], rect2[1] + rect2[3])
282
-
283
- if x1 >= x2 or y1 >= y2:
284
- return None
285
-
286
- return (x1, y1, x2 - x1, y2 - y1)
287
-
288
- def find_all(
289
- image: MatLike | str,
290
- color: RgbColor,
291
- *,
292
- rect: Rect | None = None,
293
- threshold: float = 0.95,
294
- method: Literal['rgb_dist'] = 'rgb_dist',
295
- filter_method: Literal['point', 'contour'] = 'contour',
296
- max_results: int | None = None,
297
- ) -> list[FindColorPointResult]:
298
- """
299
- 在图像中查找所有符合指定颜色的点。
300
-
301
- :param image:
302
- 图像。可以是 MatLike 或图像文件路径。
303
- 注意如果参数为 MatLike,则颜色格式必须为 BGR,而不是 RGB。
304
- :param color: 颜色。可以是整数三元组 `(r, g, b)` 或十六进制颜色字符串 `#RRGGBB`。
305
- :param rect: 查找范围。如果为 None,则在整个图像中查找。
306
- :param threshold: 阈值,越大表示越相似,1 表示完全相似。默认为 0.95。
307
- :param method: 比较算法。默认为 'rgb_dist',且目前也只有这个方法。
308
- :param filter_method: 查找方法。
309
-
310
- * point:按点查找结果
311
- * contour:按轮廓查找结果。也就是如果很多个符合要求的点连在一起,会被当做一个整体返回。
312
- :param max_results: 最大返回结果数量。如果为 None,则返回所有结果。
313
- :return: 结果列表。
314
- """
315
- _rect: RectTuple | None = rect.xywh if rect is not None else None
316
- # 计算距离矩阵
317
- dist = color_distance_map(image, color)
318
- # 筛选满足要求的点,二值化
319
- binary = np.where(dist <= (1 - threshold), 255, 0).astype(np.uint8)
320
-
321
- def filter_by_point(binary: np.ndarray, target_color: RgbColor, dist: np.ndarray, rect: Rect | None = None, max_results: int | None = None) -> list[FindColorPointResult]:
322
- results = []
323
-
324
- if _rect is not None:
325
- x, y, w, h = _rect
326
- search_area = binary[y:y+h, x:x+w]
327
- local_dist = dist[y:y+h, x:x+w]
328
-
329
- # 获取所有匹配点的坐标
330
- match_coords = np.where(search_area)
331
- for local_y, local_x in zip(*match_coords):
332
- confidence = 1 - local_dist[local_y, local_x]
333
- global_x = x + local_x
334
- global_y = y + local_y
335
- results.append(FindColorPointResult(
336
- position=(int(global_x), int(global_y)),
337
- confidence=float(confidence),
338
- target_color=target_color
339
- ))
340
- else:
341
- # 获取所有匹配点的坐标
342
- match_coords = np.where(binary)
343
- for y, x in zip(*match_coords):
344
- confidence = 1 - dist[y, x]
345
- results.append(FindColorPointResult(
346
- position=(int(x), int(y)),
347
- confidence=float(confidence),
348
- target_color=target_color
349
- ))
350
-
351
- # 按置信度排序
352
- results.sort(key=lambda x: x.confidence, reverse=True)
353
-
354
- # 限制结果数量
355
- if max_results is not None:
356
- results = results[:max_results]
357
-
358
- return results
359
-
360
- def filter_by_contour(binary: np.ndarray, target_color: RgbColor, dist: np.ndarray, rect: Rect | None = None, max_results: int | None = None) -> list[FindColorPointResult]:
361
- # 查找轮廓
362
- contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
363
-
364
- if not contours:
365
- return []
366
-
367
- results = []
368
- for contour in contours:
369
- # 获取轮廓的外界矩形
370
- contour_rect = cv2.boundingRect(contour)
371
- contour_rect = tuple(contour_rect)
372
- assert len(contour_rect) == 4
373
-
374
- # 如果指定了rect,计算轮廓外接矩形与rect的交集
375
- if _rect is not None:
376
- intersection = _rect_intersection(contour_rect, _rect)
377
- if intersection is None:
378
- continue
379
-
380
- x1, y1, w, h = intersection
381
- # 计算交集区域的中心点
382
- cx = x1 + w // 2
383
- cy = y1 + h // 2
384
-
385
- # 创建掩码,只保留当前轮廓内的区域
386
- mask = np.zeros_like(binary)
387
- cv2.drawContours(mask, [contour], 0, (255,), -1)
388
-
389
- # 只计算交集区域内的平均距离
390
- mask[y1:y1+h, x1:x1+w] = mask[y1:y1+h, x1:x1+w] & binary[y1:y1+h, x1:x1+w]
391
- avg_dist = np.mean(dist[y1:y1+h, x1:x1+w][mask[y1:y1+h, x1:x1+w] == 255])
392
- else:
393
- # 计算轮廓中心点
394
- cx = contour_rect[0] + contour_rect[2] // 2
395
- cy = contour_rect[1] + contour_rect[3] // 2
396
-
397
- # 创建掩码,只保留当前轮廓内的区域
398
- mask = np.zeros_like(binary)
399
- cv2.drawContours(mask, [contour], 0, (255,), -1)
400
-
401
- # 计算整个轮廓区域内的平均距离
402
- avg_dist = np.mean(dist[mask == 255])
403
-
404
- confidence = float(1 - avg_dist)
405
-
406
- results.append(FindColorPointResult(
407
- position=(cx, cy),
408
- confidence=confidence,
409
- target_color=target_color
410
- ))
411
-
412
- # 按置信度排序
413
- results.sort(key=lambda x: x.confidence, reverse=True)
414
-
415
- # 限制结果数量
416
- if max_results is not None:
417
- results = results[:max_results]
418
-
419
- return results
420
-
421
- # 根据filter_method选择过滤方法
422
- if filter_method == 'point':
423
- results = filter_by_point(binary, color, dist, rect, max_results)
424
- else: # filter_method == 'contour'
425
- results = filter_by_contour(binary, color, dist, rect, max_results)
426
-
427
- # 调试输出
428
- if debug.enabled:
429
- result_image = unify_image(image).copy()
430
- # 绘制所有结果点
431
- for result in results:
432
- x, y = result.position
433
- cv2.rectangle(result_image,
434
- (max(0, x-10), max(0, y-10)),
435
- (min(result_image.shape[1], x+10), min(result_image.shape[0], y+10)),
436
- (255, 0, 0), 1)
437
- # 绘制搜索范围
438
- if _rect is not None:
439
- x, y, w, h = _rect
440
- cv2.rectangle(result_image, (x, y), (x+w, y+h), (0, 0, 255), 2)
441
-
442
- debug_result(
443
- 'find_rgb_many',
444
- [result_image, unify_image(image)],
445
- f'target={debug_color(color)}\n'
446
- f'rect={rect}\n'
447
- f'found {len(results)} points\n'
448
- f'threshold={threshold}\n'
449
- f'filter_method={filter_method}\n'
450
- '(Red rect for search area, blue rects for result areas)'
451
- )
452
-
453
- return results
454
-
455
- # https://stackoverflow.com/questions/43111029/how-to-find-the-average-colour-of-an-image-in-python-with-opencv
456
- def dominant_color(
457
- image: MatLike | str,
458
- count: int = 1,
459
- *,
460
- rect: Rect | None = None,
461
- ) -> list[RgbColorStr]:
462
- """
463
- 提取图像的主色调。
464
-
465
- :param image:
466
- 图像。可以是 MatLike 或图像文件路径。
467
- 如果是 MatLike,则颜色格式必须为 BGR。
468
- :param count: 提取的颜色数量。默认为 1。
469
- :param rect: 提取范围。如果为 None,则在整个图像中提取。
470
- """
471
- _rect: RectTuple | None = rect.xywh if rect is not None else None
472
- # 载入/裁剪图像
473
- img = unify_image(image)
474
- if _rect is not None:
475
- x, y, w, h = _rect
476
- img = img[y:y+h, x:x+w]
477
-
478
- pixels = np.float32(img.reshape(-1, 3))
479
-
480
- n_colors = count
481
- criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 200, .1)
482
- flags = cv2.KMEANS_RANDOM_CENTERS
483
-
484
- _, labels, palette = cv2.kmeans(pixels, n_colors, None, criteria, 10, flags) # type: ignore
485
- _, counts = np.unique(labels, return_counts=True)
486
-
487
- # 将颜色按出现次数排序
488
- indices = (-counts).argsort()
489
- dominant = palette[indices]
490
-
491
- # 转换为 RGB 格式并转为 16 进制颜色代码
492
- result: list[RgbColorStr] = []
493
- for i in range(min(n_colors, len(dominant))):
494
- color = dominant[i]
495
- # BGR -> RGB
496
- rgb = tuple(map(int, color[::-1]))
497
- hex_color = f'#{rgb[0]:02x}{rgb[1]:02x}{rgb[2]:02x}'
498
- result.append(hex_color)
499
-
500
- if debug.enabled:
501
- origin_image = unify_image(image)
502
- result_image = origin_image.copy()
503
- if _rect is not None:
504
- x, y, w, h = _rect
505
- cv2.rectangle(result_image, (x, y), (x + w, y + h), (0, 0, 255), 2)
506
- debug_result(
507
- 'color.dominant_color',
508
- [result_image, origin_image],
509
- f'arguments:\n \tcount={count}\n \trect={rect}\n'
510
- f'result={", ".join(map(debug_color, result))}'
511
- )
512
-
513
- return result
514
-
515
- if __name__ == '__main__':
516
- img = cv2.imread('tests/images/ui/commu_fast_forward_enabled.png')
517
- colors = dominant_color(img, 3)
518
- print("主调颜色:")
519
- for i, color in enumerate(colors, 1):
520
- print(f"{i}. {color}")
521
- # 创建一个纯色图像来展示颜色
522
- color_block = np.full((100, 100, 3), _unify_color(color)[::-1], dtype=np.uint8)
523
- cv2.imshow(f"Color {i}", color_block)
524
- cv2.waitKey(0)
525
- cv2.destroyAllWindows()
@@ -1,3 +0,0 @@
1
- from .context import *
2
- from .context import _c
3
- from .task_action import task, action, task_registry, action_registry, current_callstack, Task, Action, tasks_from_id