ksaa 2025.8.23.1.post1__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.
- {kotonebot/kaa → kaa}/application/core/idle_mode.py +1 -1
- {kotonebot/kaa → kaa}/application/core/misc_core.py +1 -1
- {kotonebot/kaa → kaa}/common.py +2 -2
- {kotonebot/kaa → kaa}/config/const.py +1 -1
- {kotonebot/kaa → kaa}/config/produce.py +1 -1
- {kotonebot/kaa → kaa}/config/schema.py +10 -1
- kaa/db/drink.py +84 -0
- kaa/db/sqlite.py +42 -0
- {kotonebot → kaa}/debug_entry.py +3 -3
- {kotonebot/kaa → kaa}/errors.py +14 -0
- {kotonebot/kaa → kaa}/game_ui/dialog.py +1 -1
- kaa/game_ui/drinks_overview.py +174 -0
- {kotonebot/kaa → kaa}/game_ui/idols_overview.py +13 -7
- {kotonebot/kaa → kaa}/game_ui/schedule.py +2 -2
- {kotonebot/kaa → kaa}/game_ui/scrollable.py +4 -3
- {kotonebot/kaa → kaa}/image_db/db.py +24 -4
- {kotonebot/kaa → kaa}/main/gr.py +489 -110
- {kotonebot/kaa → kaa}/main/kaa.py +11 -2
- {kotonebot/kaa → kaa}/metadata.py +135 -0
- kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
- kaa/resources/drinks/img_general_pdrink_1-001.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-002.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-003.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-004.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-006.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-008.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-009.png +0 -0
- kaa/resources/drinks/img_general_pdrink_1-010.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-001.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-003.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-004.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-005.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-006.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-007.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-008.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-009.png +0 -0
- kaa/resources/drinks/img_general_pdrink_2-010.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-001.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-002.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-004.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-005.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-006.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-007.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-008.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-009.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-010.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-011.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-012.png +0 -0
- kaa/resources/drinks/img_general_pdrink_3-013.png +0 -0
- {kotonebot/kaa → kaa}/resources/game.db +0 -0
- kaa/resources/game_ver.txt +0 -0
- kaa/resources/idol_cards/i_card-skin-amao-3-014_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-amao-3-014_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-fktn-3-016_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-fktn-3-016_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hmsz-3-013_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hmsz-3-013_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hrnm-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hrnm-3-015_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hski-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hski-3-015_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hume-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-hume-3-015_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-jsna-3-014_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-jsna-3-014_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-kcna-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-kcna-3-015_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-kllj-3-014_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-kllj-3-014_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-shro-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-shro-3-015_1.png +0 -0
- kaa/resources/idol_cards/i_card-skin-ssmk-3-015_0.png +0 -0
- kaa/resources/idol_cards/i_card-skin-ssmk-3-015_1.png +0 -0
- kaa/sprites/16db02f4-5297-427d-8c84-587ea5193b53.png +0 -0
- kaa/sprites/207594fa-6a0b-45ec-aeff-b3e45348c508.png +0 -0
- kaa/sprites/7b5c8883-a1f9-4ce9-bd84-26668577dfc6.png +0 -0
- kaa/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
- kaa/sprites/a3736105-b3e6-467b-888a-f93b8f4d37be.png +0 -0
- kaa/sprites/ad2f8633-f5a6-4ae8-853d-88b0254b6216.png +0 -0
- kaa/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
- kaa/sprites/f0abbf38-ba4b-474a-bdce-f22db7379de2.png +0 -0
- {kotonebot/kaa → kaa}/tasks/R.py +153 -131
- {kotonebot/kaa → kaa}/tasks/actions/commu.py +3 -3
- {kotonebot/kaa → kaa}/tasks/actions/loading.py +1 -1
- {kotonebot/kaa → kaa}/tasks/actions/scenes.py +5 -3
- {kotonebot/kaa → kaa}/tasks/actions/stats.py +1 -1
- {kotonebot/kaa → kaa}/tasks/daily/acquire_activity_funds.py +2 -2
- {kotonebot/kaa → kaa}/tasks/daily/acquire_presents.py +2 -2
- {kotonebot/kaa → kaa}/tasks/daily/assignment.py +2 -2
- {kotonebot/kaa → kaa}/tasks/daily/capsule_toys.py +4 -3
- {kotonebot/kaa → kaa}/tasks/daily/club_reward.py +3 -3
- {kotonebot/kaa → kaa}/tasks/daily/contest.py +4 -4
- {kotonebot/kaa → kaa}/tasks/daily/mission_reward.py +2 -2
- {kotonebot/kaa → kaa}/tasks/daily/purchase.py +2 -4
- {kotonebot/kaa → kaa}/tasks/daily/upgrade_support_card.py +3 -3
- {kotonebot/kaa → kaa}/tasks/end_game.py +1 -1
- {kotonebot/kaa → kaa}/tasks/produce/cards.py +76 -8
- {kotonebot/kaa → kaa}/tasks/produce/common.py +94 -6
- {kotonebot/kaa → kaa}/tasks/produce/in_purodyuusu.py +96 -73
- {kotonebot/kaa → kaa}/tasks/produce/non_lesson_actions.py +17 -11
- {kotonebot/kaa → kaa}/tasks/produce/p_drink.py +1 -1
- {kotonebot/kaa → kaa}/tasks/produce/produce.py +45 -61
- {kotonebot/kaa → kaa}/tasks/start_game.py +18 -10
- {kotonebot/kaa → kaa}/util/paths.py +1 -1
- {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/METADATA +11 -5
- ksaa-2025.9.dist-info/RECORD +753 -0
- ksaa-2025.9.dist-info/entry_points.txt +2 -0
- ksaa-2025.9.dist-info/top_level.txt +1 -0
- kotonebot/__init__.py +0 -40
- kotonebot/backend/bot.py +0 -302
- kotonebot/backend/color.py +0 -525
- kotonebot/backend/context/__init__.py +0 -3
- kotonebot/backend/context/context.py +0 -1001
- kotonebot/backend/context/task_action.py +0 -176
- kotonebot/backend/core.py +0 -126
- kotonebot/backend/debug/__init__.py +0 -1
- kotonebot/backend/debug/entry.py +0 -89
- kotonebot/backend/debug/mock.py +0 -79
- kotonebot/backend/debug/server.py +0 -223
- kotonebot/backend/debug/vars.py +0 -346
- kotonebot/backend/dispatch.py +0 -228
- kotonebot/backend/flow_controller.py +0 -197
- kotonebot/backend/image.py +0 -748
- kotonebot/backend/loop.py +0 -277
- kotonebot/backend/ocr.py +0 -511
- kotonebot/backend/preprocessor.py +0 -103
- kotonebot/client/__init__.py +0 -10
- kotonebot/client/device.py +0 -500
- kotonebot/client/fast_screenshot.py +0 -378
- kotonebot/client/host/__init__.py +0 -12
- kotonebot/client/host/adb_common.py +0 -94
- kotonebot/client/host/custom.py +0 -114
- kotonebot/client/host/leidian_host.py +0 -202
- kotonebot/client/host/mumu12_host.py +0 -245
- kotonebot/client/host/protocol.py +0 -213
- kotonebot/client/host/windows_common.py +0 -55
- kotonebot/client/implements/__init__.py +0 -7
- kotonebot/client/implements/adb.py +0 -85
- kotonebot/client/implements/adb_raw.py +0 -159
- kotonebot/client/implements/nemu_ipc/__init__.py +0 -8
- kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +0 -280
- kotonebot/client/implements/nemu_ipc/nemu_ipc.py +0 -327
- kotonebot/client/implements/remote_windows.py +0 -193
- kotonebot/client/implements/uiautomator2.py +0 -82
- kotonebot/client/implements/windows.py +0 -168
- kotonebot/client/protocol.py +0 -69
- kotonebot/client/registration.py +0 -24
- kotonebot/config/__init__.py +0 -1
- kotonebot/config/base_config.py +0 -96
- kotonebot/config/manager.py +0 -36
- kotonebot/errors.py +0 -72
- kotonebot/interop/win/message_box.py +0 -314
- kotonebot/interop/win/reg.py +0 -37
- kotonebot/interop/win/shortcut.py +0 -43
- kotonebot/interop/win/task_dialog.py +0 -469
- kotonebot/kaa/db/sqlite.py +0 -25
- kotonebot/kaa/resources/game_ver.txt +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
- kotonebot/kaa/sprites/dc0b9a0a-edbb-4eea-80cd-683e6b27be98.png +0 -0
- kotonebot/kaa/tasks/actions/__init__.py +0 -0
- kotonebot/kaa/tasks/daily/__init__.py +0 -0
- kotonebot/kaa/tasks/produce/__init__.py +0 -0
- kotonebot/logging/__init__.py +0 -2
- kotonebot/logging/log.py +0 -18
- kotonebot/primitives/__init__.py +0 -17
- kotonebot/primitives/geometry.py +0 -290
- kotonebot/primitives/visual.py +0 -63
- kotonebot/tools/__init__.py +0 -0
- kotonebot/tools/mirror.py +0 -354
- kotonebot/ui/__init__.py +0 -0
- kotonebot/ui/file_host/sensio.py +0 -36
- kotonebot/ui/file_host/tmp_send.py +0 -54
- kotonebot/ui/pushkit/__init__.py +0 -3
- kotonebot/ui/pushkit/image_host.py +0 -87
- kotonebot/ui/pushkit/protocol.py +0 -13
- kotonebot/ui/pushkit/wxpusher.py +0 -53
- kotonebot/ui/user.py +0 -144
- kotonebot/util.py +0 -409
- ksaa-2025.8.23.1.post1.dist-info/RECORD +0 -758
- ksaa-2025.8.23.1.post1.dist-info/entry_points.txt +0 -2
- ksaa-2025.8.23.1.post1.dist-info/top_level.txt +0 -1
- {kotonebot/kaa → kaa}/application/adapter/misc_adapter.py +0 -0
- {kotonebot/kaa → kaa}/config/__init__.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/__init__.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_idol.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_v1_to_v2.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_v2_to_v3.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_v3_to_v4.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_v4_to_v5.py +0 -0
- {kotonebot/kaa → kaa}/config/migrations/_v5_to_v6.py +0 -0
- {kotonebot/kaa → kaa}/config/upgrade.py +0 -0
- {kotonebot/kaa → kaa}/db/__init__.py +0 -0
- {kotonebot/kaa → kaa}/db/constants.py +0 -0
- {kotonebot/kaa → kaa}/db/idol_card.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/__init__.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/badge.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/common.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/commu_event_buttons.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/primary_button.py +0 -0
- {kotonebot/kaa → kaa}/game_ui/toolbar.py +0 -0
- {kotonebot/kaa → kaa}/image_db/__init__.py +0 -0
- {kotonebot/kaa → kaa}/image_db/descriptors/__init__.py +0 -0
- {kotonebot/kaa → kaa}/image_db/descriptors/hist.py +0 -0
- {kotonebot/kaa → kaa}/kaa_context.py +0 -0
- {kotonebot/kaa → kaa}/main/__init__.py +0 -0
- {kotonebot/kaa → kaa}/main/cli.py +0 -0
- {kotonebot/kaa → kaa}/main/dmm_host.py +0 -0
- {kotonebot/backend → kaa/resources}/__init__.py +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-shro-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
- {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
- {kotonebot/kaa → kaa}/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
- /kotonebot/kaa/sprites/b46e004e-7b2d-48ba-913d-afad70d839fd.png → /kaa/sprites/03f4353c-4160-46d1-97cc-474d7f797f1f.png +0 -0
- /kotonebot/kaa/sprites/48491f5d-9c1f-4705-8958-5e9698d71d84.png → /kaa/sprites/055e54c9-753e-4f8b-b6ea-17dc8e0afb61.png +0 -0
- {kotonebot/kaa → kaa}/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
- /kotonebot/kaa/sprites/0a9f84bd-74ca-4e08-855d-05f49e786b6d.png → /kaa/sprites/06349609-2e10-483b-91b6-bc590d27d2c5.png +0 -0
- /kotonebot/kaa/sprites/06463280-d775-4261-8fc8-3fe1377cb1d2.png → /kaa/sprites/06842e56-3de1-4076-81c4-bd5466d2eff5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
- /kotonebot/kaa/sprites/f3940227-b533-436d-b8b0-b26afc53de12.png → /kaa/sprites/0a41bec8-19c0-483f-848b-1c79f47debbe.png +0 -0
- /kotonebot/kaa/sprites/74446b0d-4252-4954-9166-efe6739a1cba.png → /kaa/sprites/0b279fb0-0c30-4767-bf71-4d34cc1ee9cf.png +0 -0
- {kotonebot/kaa → kaa}/sprites/0bf5e34e-afc6-4447-bbac-67026ce2ad26.png +0 -0
- {kotonebot/kaa → kaa}/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
- /kotonebot/kaa/sprites/296c476e-f1ef-49d3-bf05-029938163b2e.png → /kaa/sprites/0c54e162-a97e-402c-a0e6-7ec47e28b788.png +0 -0
- /kotonebot/kaa/sprites/0e65c99e-31c6-4ee8-b116-731adf836e63.png → /kaa/sprites/0c78b400-5b9c-4c3c-8973-372d6a10ecd6.png +0 -0
- {kotonebot/kaa → kaa}/sprites/0d9ac648-eefa-4869-ac99-1b0c83649681.png +0 -0
- {kotonebot/kaa → kaa}/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
- /kotonebot/kaa/sprites/239cdf33-ea11-48bf-8586-0b843af9654f.png → /kaa/sprites/10ef2258-ffc2-4d94-b059-01d2d7f02e2c.png +0 -0
- /kotonebot/kaa/sprites/2e27e0b3-5b06-4ac5-915a-d7e1f58d184a.png → /kaa/sprites/10f6e608-9ebb-4198-aaf6-cb2a932891ee.png +0 -0
- /kotonebot/kaa/sprites/8d2bedbc-a5b3-4da3-b988-412eae0f8df7.png → /kaa/sprites/124ffbb0-eed0-4bd9-9f2d-145746eb27a0.png +0 -0
- /kotonebot/kaa/sprites/51a3aaab-9992-4585-a0e0-3558414aa179.png → /kaa/sprites/134c72e0-4c66-412e-921d-f21d975bfc07.png +0 -0
- /kotonebot/kaa/sprites/99b225de-b83c-44a3-ab1a-090800021dc0.png → /kaa/sprites/1522d76b-a91f-4f4e-b3df-02276e7249c8.png +0 -0
- {kotonebot/kaa → kaa}/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
- /kotonebot/kaa/sprites/ca8d401f-2b4c-4ae8-bbc1-3a7c1d664079.png → /kaa/sprites/16532eae-670d-4708-9396-0dc4070c3027.png +0 -0
- /kotonebot/kaa/sprites/77fedc1c-a49c-4487-affd-fcf220148581.png → /kaa/sprites/166d2598-e912-4891-9377-945048ac094a.png +0 -0
- {kotonebot/kaa → kaa}/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/185f7838-92a7-460b-9340-f60858948ce9.png +0 -0
- /kotonebot/kaa/sprites/bd4e379e-ac4f-4d88-a0c9-5066aa1561f4.png → /kaa/sprites/18ec006e-1a82-45de-9e53-10c54ef1de59.png +0 -0
- {kotonebot/kaa → kaa}/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
- /kotonebot/kaa/sprites/4a75182a-fc2f-4386-84d6-f8307c7f81cb.png → /kaa/sprites/1b9c5c23-d6b0-4d6c-9cdf-9f5bcc718412.png +0 -0
- /kotonebot/kaa/sprites/27b9f0e1-78be-40b4-8b71-241610f5f5bb.png → /kaa/sprites/1b9f7964-d562-437c-a055-7f5381a740d5.png +0 -0
- /kotonebot/kaa/sprites/2dde5965-3b96-4d9b-bc1d-cbd8076f3fdc.png → /kaa/sprites/1c04c78a-ad02-4b0a-a4b6-a2ef16134100.png +0 -0
- /kotonebot/kaa/sprites/e766edc0-ebd2-44aa-9ddc-f1915d27d43a.png → /kaa/sprites/1dce8db2-8183-45f5-aaa6-00b4625883d4.png +0 -0
- {kotonebot/kaa → kaa}/sprites/213016c2-c3a2-43d8-86a3-ab4d27666ced.png +0 -0
- {kotonebot/kaa → kaa}/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
- /kotonebot/kaa/sprites/a12e5285-3339-4268-9c73-3f6f8ec653b2.png → /kaa/sprites/2404d43a-95b5-4bba-9de3-f8a854612701.png +0 -0
- /kotonebot/kaa/sprites/ec9bee13-28ec-4439-bf2d-07b9724fb9e2.png → /kaa/sprites/24cb2b15-d55b-4fcd-b02a-81ec7b56cdb6.png +0 -0
- {kotonebot/kaa → kaa}/sprites/24dc7158-036c-4a66-9280-e934f470be53.png +0 -0
- {kotonebot/kaa → kaa}/sprites/24e99232-9434-457f-a9a0-69dd7ecf675f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
- /kotonebot/kaa/sprites/3ba7d5d3-1e87-46c7-b40b-2acb941df147.png → /kaa/sprites/2a82a975-d4a4-44a5-9755-867f06e6969e.png +0 -0
- /kotonebot/kaa/sprites/0d15f610-49e3-4709-bd0c-deeb74e67bf1.png → /kaa/sprites/2ace1e32-3a6c-4a7e-951c-3c5e216e190e.png +0 -0
- /kotonebot/kaa/sprites/e7fdba1a-b8b5-4fa3-a401-a36611b05f8e.png → /kaa/sprites/2b406314-82d8-407b-a2e6-85b6c67f19f1.png +0 -0
- {kotonebot/kaa → kaa}/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
- /kotonebot/kaa/sprites/4a0a4f83-d0bb-444e-b06c-cc6b513e2710.png → /kaa/sprites/2c7e603e-4524-48f6-afb6-3b226292b5d5.png +0 -0
- /kotonebot/kaa/sprites/2f03c1ad-c86d-4f54-9fa7-b455a4795400.png → /kaa/sprites/2c9318f4-4aa3-4803-a93f-f39b0177c49f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/2ededcf5-1d80-4e2a-9c83-2a31998331ce.png +0 -0
- /kotonebot/kaa/sprites/e84ec669-51a0-4ec0-a2de-31f3c9c34c3e.png → /kaa/sprites/2fa93a4b-b104-4b35-9ddb-c3098cc6ac8d.png +0 -0
- /kotonebot/kaa/sprites/69c2c61a-6a20-47d0-8c98-989da3a20d9a.png → /kaa/sprites/3024ea29-3c2a-494f-99c6-f48c90b9e157.png +0 -0
- {kotonebot/kaa → kaa}/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
- {kotonebot/kaa → kaa}/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
- /kotonebot/kaa/sprites/d582f1dc-c4ad-4db2-9596-143a7b52c769.png → /kaa/sprites/30e3c754-4231-481c-9bf2-ba532503cbd8.png +0 -0
- /kotonebot/kaa/sprites/319af0d0-81fa-4a28-a8bb-d026bc3f58f4.png → /kaa/sprites/30ea28ac-a7c3-4f60-aaf6-2e641a760ba6.png +0 -0
- /kotonebot/kaa/sprites/55e94211-7dc4-4aed-a366-7ee166d9477a.png → /kaa/sprites/321ee0f9-c89f-4abd-bc7b-020429326361.png +0 -0
- /kotonebot/kaa/sprites/dc9e169e-c77d-4cff-9126-4e7165a97723.png → /kaa/sprites/35935996-53ad-47e5-b821-879945df3167.png +0 -0
- {kotonebot/kaa → kaa}/sprites/3942ae40-7f22-412c-aebe-4b064f68db9b.png +0 -0
- /kotonebot/kaa/sprites/4623e9f7-301f-457e-afcb-4f51da973e5f.png → /kaa/sprites/3b2ccce1-2507-4cfe-afd7-6c584c73fc52.png +0 -0
- {kotonebot/kaa → kaa}/sprites/3b473fe6-e147-477f-b088-9b8fb042a4f6.png +0 -0
- {kotonebot/kaa → kaa}/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
- /kotonebot/kaa/sprites/872f2721-832d-4687-89ff-91d60dab5e95.png → /kaa/sprites/3f53fe69-f49e-4a34-86bd-608c74e4f33b.png +0 -0
- {kotonebot/kaa → kaa}/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
- /kotonebot/kaa/sprites/4e18315b-30d0-44c9-9f47-733b6dcf045e.png → /kaa/sprites/3f955b28-d82b-4bff-bc90-0b579d7b8304.png +0 -0
- /kotonebot/kaa/sprites/e46db326-e080-43ad-8e4c-0c127190f9fb.png → /kaa/sprites/3ff71180-76ef-4325-bc67-606bca5bbd8e.png +0 -0
- {kotonebot/kaa → kaa}/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
- /kotonebot/kaa/sprites/af2fe104-cb93-4dd1-b3f1-c756a1dda704.png → /kaa/sprites/41ebad4c-2047-42b4-a008-29db3e918045.png +0 -0
- /kotonebot/kaa/sprites/1c48f547-83bd-4422-963b-5e4bd354e78c.png → /kaa/sprites/43c3ca7f-4d38-4d03-bb68-fa7e0465612a.png +0 -0
- /kotonebot/kaa/sprites/d30cf21a-b6f4-4b6f-93a4-aab23119f1ed.png → /kaa/sprites/4454792c-6ebf-4b96-af13-ef1d12531314.png +0 -0
- {kotonebot/kaa → kaa}/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
- {kotonebot/kaa → kaa}/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
- {kotonebot/kaa → kaa}/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
- /kotonebot/kaa/sprites/0a524c79-43f4-4ed5-b292-2af9392d6399.png → /kaa/sprites/45a97ef7-99ef-4ea9-8329-1b0577647bc0.png +0 -0
- {kotonebot/kaa → kaa}/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
- {kotonebot/kaa → kaa}/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
- {kotonebot/kaa → kaa}/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
- /kotonebot/kaa/sprites/e113807f-d73f-484f-a74a-63194b9e340b.png → /kaa/sprites/4f3c19db-154c-438d-b93c-3cc6ad1bc603.png +0 -0
- /kotonebot/kaa/sprites/2c965b6e-cde2-4073-9ab3-752766033714.png → /kaa/sprites/4f43aab0-06ef-47e2-9aea-82153cf73d89.png +0 -0
- /kotonebot/kaa/sprites/3ae39c9f-670a-4696-9879-16b6ff17dd4c.png → /kaa/sprites/4f4b72d5-61c5-4d76-a265-84d5c376de80.png +0 -0
- {kotonebot/kaa → kaa}/sprites/5031808b-5525-4118-92b4-317ec8bda985.png +0 -0
- {kotonebot/kaa → kaa}/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/55f7db71-0a18-4b3d-b847-57959b8d2e32.png +0 -0
- /kotonebot/kaa/sprites/36a5c003-eddd-4183-8233-0e59984bf96b.png → /kaa/sprites/57cdefa6-4168-43f6-b584-a15b46114277.png +0 -0
- {kotonebot/kaa → kaa}/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
- /kotonebot/kaa/sprites/1fce7123-6940-44ff-87e9-816888c123e6.png → /kaa/sprites/589bfdd8-9d3a-4c19-a2e6-116824350b6e.png +0 -0
- /kotonebot/kaa/sprites/a73da379-305f-4597-a212-13599d43d008.png → /kaa/sprites/5c99c6b4-8a09-4e34-a5a9-496e1188b3b5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/5d36b880-7b3f-49b1-a018-7de59867d376.png +0 -0
- {kotonebot/kaa → kaa}/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
- /kotonebot/kaa/sprites/1844b18c-7889-48d1-aa21-6e4021c8acca.png → /kaa/sprites/5fc9e5c2-a8cb-43e3-b0c2-9bca4877b44b.png +0 -0
- /kotonebot/kaa/sprites/8516b064-77a4-48bc-a83a-2b9e6cf2ce92.png → /kaa/sprites/686bfe8b-787c-4ad8-852e-0e2c58f6dc42.png +0 -0
- /kotonebot/kaa/sprites/31ecdbd3-31a2-43f4-9992-98d8e9e78e77.png → /kaa/sprites/69ac12a4-5ab2-4e64-9508-688b1e7dfdd5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
- {kotonebot/kaa → kaa}/sprites/6cd80be8-c9b3-4ba5-bf17-3ffc9b000743.png +0 -0
- /kotonebot/kaa/sprites/40492316-8c69-456e-bf24-0dc183bf9c67.png → /kaa/sprites/6e5a4c13-1e63-4b23-a19f-6d8f4f899b38.png +0 -0
- {kotonebot/kaa → kaa}/sprites/70898bf8-56c5-4f84-becb-629c9ab6a7da.png +0 -0
- /kotonebot/kaa/sprites/30835199-31a9-4506-90a6-0e79244d3354.png → /kaa/sprites/715591f4-19db-4dba-a313-d728ec8aa9f3.png +0 -0
- /kotonebot/kaa/sprites/1947ef8e-27bc-4f12-ab61-c6fa6d7b08a3.png → /kaa/sprites/71da60b3-a0c2-4211-ba8b-a60a87d046d6.png +0 -0
- /kotonebot/kaa/sprites/d393a411-5ca5-4632-80a9-232683a28f9b.png → /kaa/sprites/7303cb87-5d31-4725-b40f-4a71b054a473.png +0 -0
- {kotonebot/kaa → kaa}/sprites/74ec3510-583d-4a76-ac69-38480fbf1387.png +0 -0
- /kotonebot/kaa/sprites/1230edb1-7c06-4770-a428-f29c7b63b3bb.png → /kaa/sprites/75636434-d148-4855-9a28-7624e066fc43.png +0 -0
- /kotonebot/kaa/sprites/79f791f0-9a08-4a59-92e0-3a8b782f2894.png → /kaa/sprites/7626a19a-53ce-44f9-8038-5d5f6cb400ec.png +0 -0
- /kotonebot/kaa/sprites/5c447f0f-ce99-4e66-b316-23b40d037614.png → /kaa/sprites/7644328c-160c-49b0-8040-5de2191acade.png +0 -0
- /kotonebot/kaa/sprites/0a6f764f-f967-4172-afcf-dc437e08a0c7.png → /kaa/sprites/781b0414-4530-47a3-a2b2-dcaa22043bfa.png +0 -0
- /kotonebot/kaa/sprites/791f5210-957d-41ca-9d38-0de9b1cefee4.png → /kaa/sprites/785e477b-0917-40f3-ad98-0458b816bfa2.png +0 -0
- /kotonebot/kaa/sprites/48850095-5e21-4a56-8e82-2c4686752be2.png → /kaa/sprites/78ce3025-c313-4dee-9097-96bb0b428584.png +0 -0
- {kotonebot/kaa → kaa}/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
- /kotonebot/kaa/sprites/17ac77d9-4649-419d-9f5e-8a98fab36967.png → /kaa/sprites/7b0c2c89-8a01-40ee-bfec-f6bd36e3ebd0.png +0 -0
- /kotonebot/kaa/sprites/63c47481-99f1-4171-8990-fb0f1d17f933.png → /kaa/sprites/7eace29d-0d92-47b2-a6b2-8616fe1f1628.png +0 -0
- /kotonebot/kaa/sprites/ae2af935-63d8-45ee-a393-e9fb7c3996d2.png → /kaa/sprites/7fba4fb5-fe30-44c5-90ca-23c40b3e78fb.png +0 -0
- {kotonebot/kaa → kaa}/sprites/81c97cd3-df53-44d3-bf3d-1eb4dc67b62a.png +0 -0
- {kotonebot/kaa → kaa}/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
- {kotonebot/kaa → kaa}/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
- {kotonebot/kaa → kaa}/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
- /kotonebot/kaa/sprites/ae359ca3-7463-4d4b-acd0-be946da03cee.png → /kaa/sprites/8831d905-96e9-454c-9b18-12717a868244.png +0 -0
- /kotonebot/kaa/sprites/7b0d3cac-46a0-40db-a6c9-81de66a3488d.png → /kaa/sprites/88563ae3-26a5-43b6-92f0-8200639d9dfc.png +0 -0
- /kotonebot/kaa/sprites/202167a5-e786-473e-a5e3-3899e1b552f9.png → /kaa/sprites/8b0d963b-5430-4686-97e5-0c7ccdf4a0c9.png +0 -0
- /kotonebot/kaa/sprites/0bfb5cdf-47aa-4732-bdd5-6708a3a5a8b9.png → /kaa/sprites/8b248585-c463-4a01-b189-7bda5f30c508.png +0 -0
- {kotonebot/kaa → kaa}/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
- {kotonebot/kaa → kaa}/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
- /kotonebot/kaa/sprites/97661998-4233-4f75-9975-0ebf342a9b4b.png → /kaa/sprites/8f76e6f2-4069-421e-9867-7212e17f7fb3.png +0 -0
- {kotonebot/kaa → kaa}/sprites/8f8b7b46-53bb-42ab-907a-4ea87eb09ab4.png +0 -0
- /kotonebot/kaa/sprites/52dd4b67-653b-4948-9640-39fcfd1eed8d.png → /kaa/sprites/8fbd928c-1eff-4dd6-8009-fd1a52c7eee5.png +0 -0
- /kotonebot/kaa/sprites/05a955be-befc-45df-875e-fb56e87ae36a.png → /kaa/sprites/9066e428-a248-46f5-9309-13a7f1ec608e.png +0 -0
- /kotonebot/kaa/sprites/5d2d0fce-6057-4bf0-a6c8-4d1c52bfdc0e.png → /kaa/sprites/90eb7800-7ec7-494d-91ee-8cec501b67a9.png +0 -0
- {kotonebot/kaa → kaa}/sprites/921eefeb-730e-46fc-9924-d338fb286592.png +0 -0
- {kotonebot/kaa → kaa}/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
- /kotonebot/kaa/sprites/87959194-67a2-4dc9-858e-1c6870471c72.png → /kaa/sprites/9469635b-8fef-470b-907e-f7491d144243.png +0 -0
- /kotonebot/kaa/sprites/b320f660-4c72-41ab-83b4-52f745b94f0a.png → /kaa/sprites/94a098bc-8a4e-41be-ac14-0d5528517241.png +0 -0
- /kotonebot/kaa/sprites/ca3032db-87af-4b3e-9b04-f035bfed128e.png → /kaa/sprites/95c0e57a-6983-4951-b7bc-863a3638a186.png +0 -0
- /kotonebot/kaa/sprites/3a187efe-0088-458b-9d6c-0421ea830663.png → /kaa/sprites/97adcebd-bf26-4155-bc64-ac7d3f59d419.png +0 -0
- /kotonebot/kaa/sprites/77a5aacd-ce76-4d2a-a0e9-f2f71ec10a61.png → /kaa/sprites/98699927-81c8-4ddc-a5fc-5d0fe03b4c72.png +0 -0
- /kotonebot/kaa/sprites/9e6d7026-b868-438a-a1ee-6c8877ede4bb.png → /kaa/sprites/9ab2e90a-6f3a-442a-a0eb-10a935514656.png +0 -0
- /kotonebot/kaa/sprites/93af71c3-2ed1-4332-be42-b508566a44df.png → /kaa/sprites/9ab3a1a5-40d6-45ca-873d-22c270f264ea.png +0 -0
- /kotonebot/kaa/sprites/dc179828-b29f-450f-b533-fc5a7dc6ce81.png → /kaa/sprites/9b70d18f-52b6-4616-9e05-c1c52cb4df7a.png +0 -0
- /kotonebot/kaa/sprites/b0013c51-4ff3-47c7-8075-4b4a6bd449d4.png → /kaa/sprites/9e893645-1ed3-4cc9-8dea-dad90617f61a.png +0 -0
- {kotonebot/kaa → kaa}/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
- {kotonebot/interop/win → kaa/sprites}/__init__.py +0 -0
- {kotonebot/kaa → kaa}/sprites/a0bd6a5f-784d-4f0a-9d66-10f4b80c8d3e.png +0 -0
- {kotonebot/kaa → kaa}/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
- /kotonebot/kaa/sprites/b892fb61-fbab-4ebf-a5d3-bd053981aeff.png → /kaa/sprites/a227e737-e250-483e-ab27-920a050949d5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
- /kotonebot/kaa/sprites/bede98dc-85ad-4e28-a51b-dce6a0352f0a.png → /kaa/sprites/a552aef0-ddff-4f6f-a4a2-01961cd4456a.png +0 -0
- /kotonebot/kaa/sprites/34dc25b7-26b5-436d-958a-e7cd16f19300.png → /kaa/sprites/a6075d44-059b-41b1-b85b-c788465dfd28.png +0 -0
- /kotonebot/kaa/sprites/3ef36a70-6be8-459f-b7a8-e46f1f58508f.png → /kaa/sprites/a6aa055f-298c-4695-8efd-492159f832f5.png +0 -0
- /kotonebot/kaa/sprites/29f38481-3b5f-464c-9c24-fe80615253d9.png → /kaa/sprites/a8c555f5-d7d5-4ffd-85c7-1fc8bd1014df.png +0 -0
- {kotonebot/kaa → kaa}/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
- /kotonebot/kaa/sprites/23053a1e-08a5-4d99-85a5-e04148119d76.png → /kaa/sprites/ab075e3f-963f-4a55-9fed-6e4eb9f2c553.png +0 -0
- /kotonebot/kaa/sprites/d0b26ad1-5c22-46ac-b39b-20692ba0fbb7.png → /kaa/sprites/ab984712-9e57-4c42-ac5e-f90079f2902a.png +0 -0
- {kotonebot/kaa → kaa}/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ae9fe233-9acc-4e96-ba8e-1fb1d9bc2ea5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
- /kotonebot/kaa/sprites/ff1c7645-59e9-4f9d-b130-93c2c8b00cef.png → /kaa/sprites/b14d0a2e-9ba8-4196-aafb-beeee7f51767.png +0 -0
- /kotonebot/kaa/sprites/102bf857-2bd4-4e84-9a01-45f782cba6d6.png → /kaa/sprites/b21fa3a4-1aab-46a2-be7a-01d548f2ea9d.png +0 -0
- {kotonebot/kaa → kaa}/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
- /kotonebot/kaa/sprites/2f35947b-f873-4f31-869e-7d7a1b7cef74.png → /kaa/sprites/b2c45f1d-e548-4eba-b306-b5eb356ff29b.png +0 -0
- {kotonebot/kaa → kaa}/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
- /kotonebot/kaa/sprites/cb061e0c-3715-47f3-8b45-b5981731676b.png → /kaa/sprites/b341f18a-dfcc-4387-b146-061b308f5bea.png +0 -0
- {kotonebot/kaa → kaa}/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
- {kotonebot/kaa → kaa}/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
- /kotonebot/kaa/sprites/82a136e5-9d9c-4905-8cfe-ca64f774faff.png → /kaa/sprites/ba1b392d-ad28-4668-8b91-94d161d1a16d.png +0 -0
- /kotonebot/kaa/sprites/2eb3f479-b995-4502-b456-bd37281f3bae.png → /kaa/sprites/ba45b90d-0e6f-4188-a0df-069e2a6914bd.png +0 -0
- {kotonebot/kaa → kaa}/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
- {kotonebot/kaa → kaa}/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
- /kotonebot/kaa/sprites/5b3df718-9933-4462-8145-58ed8f0a3c2f.png → /kaa/sprites/be5c90c5-da5f-40d5-bc5a-3d677abc5795.png +0 -0
- /kotonebot/kaa/sprites/71d8c88f-e91e-4f78-bcef-84bb34d65f38.png → /kaa/sprites/bfb3a923-7b5e-439d-a19a-fd5150ec8443.png +0 -0
- /kotonebot/kaa/sprites/149cbb67-77b2-4f46-ba54-acd91e81bfd5.png → /kaa/sprites/c0c1a392-bc82-48c2-a304-0587e7038279.png +0 -0
- {kotonebot/kaa → kaa}/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
- {kotonebot/kaa → kaa}/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
- /kotonebot/kaa/sprites/f35b5318-e598-4415-bea5-2c170e9a9c23.png → /kaa/sprites/c7daf7d5-42b0-4c38-be47-d3b957211e2a.png +0 -0
- /kotonebot/kaa/sprites/5dde9efd-2ba7-4776-9685-11846d021a42.png → /kaa/sprites/c916030c-dc67-4c88-9b86-390c8f66f0c8.png +0 -0
- {kotonebot/kaa → kaa}/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
- {kotonebot/kaa → kaa}/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
- /kotonebot/kaa/sprites/a0c49e6f-2c82-43f6-91ae-907f22845e88.png → /kaa/sprites/ca80e346-d3d9-4228-9b92-373467dadadd.png +0 -0
- {kotonebot/kaa → kaa}/sprites/cb3d0ca7-8d14-408a-a2f5-2e25f7b86d6c.png +0 -0
- {kotonebot/kaa → kaa}/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
- {kotonebot/kaa → kaa}/sprites/cc60b509-2ed5-493d-bb9f-333c6d2a6006.png +0 -0
- {kotonebot/kaa → kaa}/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ce20a856-5629-4f8e-a8e1-d1bd14e18e4f.png +0 -0
- /kotonebot/kaa/sprites/7d6d6c45-93f3-4332-aac6-6de9a34289ee.png → /kaa/sprites/cfa95767-6869-42c2-94ec-a2ffeca8179f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
- /kotonebot/kaa/sprites/2caa71d9-d1e4-48e0-92f7-89a5884a7db0.png → /kaa/sprites/d224df78-a15a-4edc-91c0-c6243c3c43b4.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
- /kotonebot/kaa/sprites/50d2efc0-cccd-4198-a7e9-2c2f6e598274.png → /kaa/sprites/d2d4752f-7c62-42d3-8d3a-f5d186bc0e0d.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d3424d31-0502-4623-996e-f0194e5085ce.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
- /kotonebot/kaa/sprites/5e904d2f-6fed-4085-82e8-3134d1f942f6.png → /kaa/sprites/d4db176f-8597-4c3e-99e8-a7acc4012df8.png +0 -0
- /kotonebot/kaa/sprites/b8264207-a1f1-475a-9f92-492e6376ed9b.png → /kaa/sprites/d53b56af-153c-476c-bab5-1478a66eecb2.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
- /kotonebot/kaa/sprites/80d783a0-0de5-4c02-93b0-a5bed13ecb4f.png → /kaa/sprites/d727e802-443b-4f14-a448-caf53426c488.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
- {kotonebot/kaa → kaa}/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
- {kotonebot/kaa → kaa}/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
- {kotonebot/kaa → kaa}/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
- {kotonebot/kaa → kaa}/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
- /kotonebot/kaa/sprites/07fbcfc2-2c7e-4e57-a9ee-8c4ccea390a2.png → /kaa/sprites/dd4987ea-d1a0-4a84-a7b6-6023eb5c4ec8.png +0 -0
- {kotonebot/kaa → kaa}/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
- /kotonebot/kaa/sprites/24d5f7f4-7d36-4b53-8774-843be5f22baa.png → /kaa/sprites/de9bbc4c-6d29-422f-8f29-82870270efb3.png +0 -0
- /kotonebot/kaa/sprites/2e9ab3a1-135a-44a7-a99c-9a6894447303.png → /kaa/sprites/dedc30bf-4a69-4bec-b3f7-c3b1fcf61283.png +0 -0
- {kotonebot/kaa → kaa}/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
- /kotonebot/kaa/sprites/274f63ce-7ac0-47a1-b927-a17168232784.png → /kaa/sprites/e149613e-d126-42f8-94c9-180cf2244041.png +0 -0
- {kotonebot/kaa → kaa}/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
- /kotonebot/kaa/sprites/0ce6ecd8-a980-4696-90d2-be60f23be362.png → /kaa/sprites/e56f125e-1b4b-48ea-be9c-256496f91f6f.png +0 -0
- {kotonebot/kaa → kaa}/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
- /kotonebot/kaa/sprites/68989732-4759-456c-9f10-9f055106b3bb.png → /kaa/sprites/e5f0644a-26a7-4d00-a5c8-2e6263b0e547.png +0 -0
- /kotonebot/kaa/sprites/4e41543c-6294-40c4-bf67-fdc363d3abfb.png → /kaa/sprites/e62398fa-f25e-4a1b-86d6-f89ec096cc27.png +0 -0
- /kotonebot/kaa/sprites/2a92cb8d-304a-41d5-8a8d-c84cc4c7f84d.png → /kaa/sprites/e65f87fe-3a59-4465-90cd-5167fb3aa4ae.png +0 -0
- {kotonebot/kaa → kaa}/sprites/e6b45405-cd9f-4c6e-a9f1-6ec953747c65.png +0 -0
- /kotonebot/kaa/sprites/ed490a4e-e9ef-4240-8496-fa11403631d0.png → /kaa/sprites/e772ae1e-3c75-417c-bd36-52b5fa046cf9.png +0 -0
- /kotonebot/kaa/sprites/87c70e5f-56be-4e21-859c-e8641f9d9b2d.png → /kaa/sprites/e80f5d59-6c4a-4d40-8fd2-7ccfc8f20d08.png +0 -0
- {kotonebot/kaa → kaa}/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
- /kotonebot/kaa/sprites/c5108fd1-0c73-4271-8376-878ebd4d32c2.png → /kaa/sprites/e8ef0ab6-9132-410d-ad44-c6bbdda8298a.png +0 -0
- {kotonebot/kaa → kaa}/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
- {kotonebot/kaa → kaa}/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
- /kotonebot/kaa/sprites/9f74fc6e-9052-4323-8108-48990b4e4705.png → /kaa/sprites/ecd053a6-3791-4535-8e7f-65c740619fc5.png +0 -0
- /kotonebot/kaa/sprites/606b5dc6-45e8-426d-9d99-be0222e424e5.png → /kaa/sprites/edecb8c9-60b8-4576-8c56-03a33f0a2496.png +0 -0
- {kotonebot/kaa → kaa}/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
- /kotonebot/kaa/sprites/31a33973-5d6b-4e3f-85c9-29c3056c05ac.png → /kaa/sprites/ee775922-936a-4445-85fc-0a2607fea917.png +0 -0
- {kotonebot/kaa → kaa}/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
- /kotonebot/kaa/sprites/fe07afa6-75db-4b1d-b028-ffcdc7c5f4da.png → /kaa/sprites/ef0226e3-6bad-4b40-9056-7dc2952b4de9.png +0 -0
- /kotonebot/kaa/sprites/67000df5-e696-4292-91de-1875f3cfd4d7.png → /kaa/sprites/ef84cc0f-4699-4514-8d1f-cf1ca30ce790.png +0 -0
- {kotonebot/kaa → kaa}/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
- {kotonebot/kaa → kaa}/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
- {kotonebot/kaa → kaa}/sprites/f5c16d2f-ebc5-4617-9b96-971696af7c52.png +0 -0
- {kotonebot/kaa → kaa}/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
- /kotonebot/kaa/sprites/f153a10b-5294-4d5f-8585-cfe1278c6ec0.png → /kaa/sprites/f6f8e8b4-6426-43b0-b3e6-020401a1da3f.png +0 -0
- /kotonebot/kaa/sprites/d6b35f90-a6f6-4e94-8fa3-6be58c52cc56.png → /kaa/sprites/f7f6a9d8-13cb-4c19-b43f-ca0e4b9176d5.png +0 -0
- /kotonebot/kaa/sprites/f98018bc-533a-4a46-8e4e-2d514fbe626a.png → /kaa/sprites/f8b12dfa-bef8-41eb-a325-e7dd73c14124.png +0 -0
- /kotonebot/kaa/sprites/fcf32106-d3c4-4ffd-862b-bd0927d8a9ee.png → /kaa/sprites/f9a04314-15b1-41bb-9e7f-670d952973ce.png +0 -0
- {kotonebot/kaa → kaa}/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
- {kotonebot/kaa → kaa/tasks}/__init__.py +0 -0
- {kotonebot/kaa/resources → kaa/tasks/actions}/__init__.py +0 -0
- {kotonebot/kaa → kaa}/tasks/clear_logs.py +0 -0
- {kotonebot/kaa/sprites → kaa/tasks/daily}/__init__.py +0 -0
- {kotonebot/kaa/tasks → kaa/tasks/produce}/__init__.py +0 -0
- {kotonebot/kaa → kaa}/util/trace.py +0 -0
- {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/WHEEL +0 -0
- {ksaa-2025.8.23.1.post1.dist-info → ksaa-2025.9.dist-info}/licenses/LICENSE +0 -0
|
@@ -16,7 +16,7 @@ with suppress(ImportError):
|
|
|
16
16
|
import win32con # type: ignore
|
|
17
17
|
|
|
18
18
|
from kotonebot.backend.context.context import vars
|
|
19
|
-
from
|
|
19
|
+
from kaa.config.schema import IdleModeConfig
|
|
20
20
|
|
|
21
21
|
logger = logging.getLogger(__name__)
|
|
22
22
|
|
{kotonebot/kaa → kaa}/common.py
RENAMED
|
@@ -11,7 +11,7 @@ from pydantic import BaseModel, ConfigDict
|
|
|
11
11
|
# TODO: from kotonebot import config (context) 会和 kotonebot.config 冲突
|
|
12
12
|
from kotonebot import logging
|
|
13
13
|
from kotonebot.backend.context import config
|
|
14
|
-
from
|
|
14
|
+
from kaa.config.schema import BaseConfig
|
|
15
15
|
|
|
16
16
|
logger = logging.getLogger(__name__)
|
|
17
17
|
|
|
@@ -19,4 +19,4 @@ def sprite_path(path: str) -> str:
|
|
|
19
19
|
standalone = os.path.join('kotonebot/kaa/sprites', path)
|
|
20
20
|
if os.path.exists(standalone):
|
|
21
21
|
return standalone
|
|
22
|
-
return str(resources.files('
|
|
22
|
+
return str(resources.files('kaa.sprites') / path)
|
|
@@ -156,7 +156,7 @@ class DailyMoneyShopItems(IntEnum):
|
|
|
156
156
|
return [(cls.to_ui_text(item), item) for item in cls if cls._is_note(item)]
|
|
157
157
|
|
|
158
158
|
def to_resource(self):
|
|
159
|
-
from
|
|
159
|
+
from kaa.tasks import R
|
|
160
160
|
match self:
|
|
161
161
|
case DailyMoneyShopItems.Recommendations:
|
|
162
162
|
return R.Daily.TextShopRecommended
|
|
@@ -6,7 +6,7 @@ import logging
|
|
|
6
6
|
from typing import Literal
|
|
7
7
|
from pydantic import BaseModel, ConfigDict, ValidationError, field_serializer, field_validator
|
|
8
8
|
|
|
9
|
-
from
|
|
9
|
+
from kaa.errors import ProduceSolutionInvalidError, ProduceSolutionNotFoundError
|
|
10
10
|
|
|
11
11
|
from .const import ProduceAction, RecommendCardDetectionMode
|
|
12
12
|
|
|
@@ -2,7 +2,7 @@ from typing import TypeVar, Literal, Sequence
|
|
|
2
2
|
from pydantic import BaseModel, ConfigDict
|
|
3
3
|
|
|
4
4
|
from kotonebot import config
|
|
5
|
-
from
|
|
5
|
+
from kaa.config.produce import ProduceSolution, ProduceSolutionManager
|
|
6
6
|
from .const import (
|
|
7
7
|
ConfigEnum,
|
|
8
8
|
Priority,
|
|
@@ -75,6 +75,8 @@ class ProduceConfig(ConfigBaseModel):
|
|
|
75
75
|
"""选中的培育方案ID"""
|
|
76
76
|
produce_count: int = 1
|
|
77
77
|
"""培育的次数。"""
|
|
78
|
+
produce_timeout_cd: int = 60
|
|
79
|
+
"""推荐卡检测用时上限;若超时,则随机选择卡片打出。单位为秒,最少为20sec,DMM用户可以设置为30sec"""
|
|
78
80
|
|
|
79
81
|
class MissionRewardConfig(ConfigBaseModel):
|
|
80
82
|
enabled: bool = False
|
|
@@ -179,6 +181,13 @@ class MiscConfig(ConfigBaseModel):
|
|
|
179
181
|
|
|
180
182
|
启用后,局域网内的其他设备可以通过本机 IP 地址访问 Web 界面。
|
|
181
183
|
"""
|
|
184
|
+
update_channel: Literal['release', 'beta'] = 'release'
|
|
185
|
+
"""
|
|
186
|
+
更新通道。
|
|
187
|
+
|
|
188
|
+
* release: 只使用稳定版。
|
|
189
|
+
* beta: 包含预发布版本(如 alpha/beta/rc)。
|
|
190
|
+
"""
|
|
182
191
|
|
|
183
192
|
class IdleModeConfig(ConfigBaseModel):
|
|
184
193
|
enabled: bool = False
|
kaa/db/drink.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
from .sqlite import select, select_many
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class Drink:
|
|
7
|
+
"""饮品"""
|
|
8
|
+
id: str
|
|
9
|
+
asset_id: str
|
|
10
|
+
name: str
|
|
11
|
+
|
|
12
|
+
@classmethod
|
|
13
|
+
def from_asset_id(cls, asset_id: str) -> 'Drink | None':
|
|
14
|
+
"""
|
|
15
|
+
根据 asset_id 查询 Drink。
|
|
16
|
+
"""
|
|
17
|
+
row = select("""
|
|
18
|
+
SELECT
|
|
19
|
+
id,
|
|
20
|
+
assetId,
|
|
21
|
+
name
|
|
22
|
+
FROM ProduceDrink
|
|
23
|
+
WHERE assetId = ?;
|
|
24
|
+
""", asset_id)
|
|
25
|
+
if row is None:
|
|
26
|
+
return None
|
|
27
|
+
id, asset_id, name = row
|
|
28
|
+
return cls(id, asset_id, name)
|
|
29
|
+
|
|
30
|
+
@classmethod
|
|
31
|
+
def all(cls) -> list['Drink']:
|
|
32
|
+
"""获取所有饮品"""
|
|
33
|
+
rows = select_many("""
|
|
34
|
+
SELECT
|
|
35
|
+
id,
|
|
36
|
+
assetId,
|
|
37
|
+
name
|
|
38
|
+
FROM ProduceDrink;
|
|
39
|
+
""")
|
|
40
|
+
results = []
|
|
41
|
+
for row in rows:
|
|
42
|
+
id, asset_id, name = row
|
|
43
|
+
results.append(cls(id, asset_id, name))
|
|
44
|
+
return results
|
|
45
|
+
|
|
46
|
+
@classmethod
|
|
47
|
+
def ordinary_drinks_name(cls) -> list[str]:
|
|
48
|
+
"""获取所有平凡的(不需要额外操作)的饮料"""
|
|
49
|
+
return [
|
|
50
|
+
'初星水', # [kaa/resources/drinks/img_general_pdrink_1-001.png]
|
|
51
|
+
'烏龍茶', # [kaa/resources/drinks/img_general_pdrink_1-004.png]
|
|
52
|
+
'ミックススムージー', # [kaa/resources/drinks/img_general_pdrink_2-001.png]
|
|
53
|
+
'リカバリドリンク', # [kaa/resources/drinks/img_general_pdrink_2-003.png]
|
|
54
|
+
'フレッシュビネガー', # [kaa/resources/drinks/img_general_pdrink_2-004.png]
|
|
55
|
+
'ブーストエキス', # [kaa/resources/drinks/img_general_pdrink_2-008.png]
|
|
56
|
+
'パワフル漢方ドリンク', # [kaa/resources/drinks/img_general_pdrink_2-009.png]
|
|
57
|
+
'センブリソーダ', # [kaa/resources/drinks/img_general_pdrink_2-010.png]
|
|
58
|
+
'初星ホエイプロテイン', # [kaa/resources/drinks/img_general_pdrink_3-001.png]
|
|
59
|
+
'初星スペシャル青汁', # [kaa/resources/drinks/img_general_pdrink_3-005.png]
|
|
60
|
+
'初星スペシャル青汁X', # [kaa/resources/drinks/img_general_pdrink_3-013.png]
|
|
61
|
+
'ビタミンドリンク', # [kaa/resources/drinks/img_general_pdrink_1-002.png]
|
|
62
|
+
'アイスコーヒー', # [kaa/resources/drinks/img_general_pdrink_1-003.png]
|
|
63
|
+
'スタミナ爆発ドリンク', # [kaa/resources/drinks/img_general_pdrink_2-005.png]
|
|
64
|
+
'厳選初星マキアート', # [kaa/resources/drinks/img_general_pdrink_3-002.png]
|
|
65
|
+
'初星ブーストエナジー', # [kaa/resources/drinks/img_general_pdrink_3-004.png]
|
|
66
|
+
# '初星黒酢', # [kaa/resources/drinks/img_general_pdrink_3-012.png]
|
|
67
|
+
'ルイボスティー', # [kaa/resources/drinks/img_general_pdrink_1-006.png]
|
|
68
|
+
'ホットコーヒー', # [kaa/resources/drinks/img_general_pdrink_1-008.png]
|
|
69
|
+
'おしゃれハーブティー', # [kaa/resources/drinks/img_general_pdrink_2-006.png]
|
|
70
|
+
'厳選初星ティー', # [kaa/resources/drinks/img_general_pdrink_3-006.png]
|
|
71
|
+
'厳選初星ブレンド', # [kaa/resources/drinks/img_general_pdrink_3-007.png]
|
|
72
|
+
'特製ハツボシエキス', # [kaa/resources/drinks/img_general_pdrink_3-010.png]
|
|
73
|
+
'ジンジャーエール', # [kaa/resources/drinks/img_general_pdrink_1-009.png]
|
|
74
|
+
'ほうじ茶', # [kaa/resources/drinks/img_general_pdrink_1-010.png]
|
|
75
|
+
# 'ほっと緑茶', # [kaa/resources/drinks/img_general_pdrink_2-007.png]
|
|
76
|
+
'厳選初星チャイ', # [kaa/resources/drinks/img_general_pdrink_3-008.png]
|
|
77
|
+
'初星スーパーソーダ', # [kaa/resources/drinks/img_general_pdrink_3-009.png]
|
|
78
|
+
'初星湯', # [kaa/resources/drinks/img_general_pdrink_3-011.png
|
|
79
|
+
]
|
|
80
|
+
|
|
81
|
+
if __name__ == '__main__':
|
|
82
|
+
from pprint import pprint as print
|
|
83
|
+
print(Drink.from_asset_id('img_general_pdrink_1-001'))
|
|
84
|
+
print([(str(drink.name) + '\', # [kaa/resources/drink/' + str(drink.asset_id) + '.png]') for drink in Drink.all()])
|
kaa/db/sqlite.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import sqlite3
|
|
2
|
+
import threading
|
|
3
|
+
from logging import getLogger
|
|
4
|
+
from typing import Any, cast, Dict, List, Optional
|
|
5
|
+
|
|
6
|
+
from kaa import resources as res
|
|
7
|
+
|
|
8
|
+
_db_path = cast(str, res.__path__)[0] + '/game.db'
|
|
9
|
+
|
|
10
|
+
_db_dict = {}
|
|
11
|
+
|
|
12
|
+
logger = getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
def _ensure_db() -> sqlite3.Connection:
|
|
15
|
+
"""
|
|
16
|
+
确保数据库连接已建立
|
|
17
|
+
培育过程是新开线程,不同线程的connection不能使用
|
|
18
|
+
# TODO 培育结束需要关闭connection
|
|
19
|
+
"""
|
|
20
|
+
global _db_dict
|
|
21
|
+
thread_id = threading.current_thread().ident
|
|
22
|
+
if thread_id not in _db_dict:
|
|
23
|
+
_db_dict[thread_id] = sqlite3.connect(_db_path)
|
|
24
|
+
_db_dict[thread_id].row_factory = sqlite3.Row
|
|
25
|
+
logger.info("Database connection established for thread: %s", thread_id)
|
|
26
|
+
return _db_dict[thread_id]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def select_many(query: str, *args) -> List[Dict[str, Any]]:
|
|
30
|
+
"""执行查询并返回多行结果,每行为字典格式"""
|
|
31
|
+
db = _ensure_db()
|
|
32
|
+
c = db.cursor()
|
|
33
|
+
c.execute(query, args)
|
|
34
|
+
return c.fetchall()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def select(query: str, *args) -> Optional[Dict[str, Any]]:
|
|
38
|
+
"""执行查询并返回单行结果,为字典格式"""
|
|
39
|
+
db = _ensure_db()
|
|
40
|
+
c = db.cursor()
|
|
41
|
+
c.execute(query, args)
|
|
42
|
+
return c.fetchone()
|
{kotonebot → kaa}/debug_entry.py
RENAMED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import sys
|
|
2
|
-
sys.path.append('./projects')
|
|
3
2
|
import runpy
|
|
4
3
|
import logging
|
|
5
4
|
import argparse
|
|
6
5
|
|
|
7
|
-
from
|
|
6
|
+
from kaa.common import BaseConfig
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
def run_script(script_path: str) -> None:
|
|
@@ -21,8 +20,9 @@ def run_script(script_path: str) -> None:
|
|
|
21
20
|
print(f"正在运行脚本: {script_path}")
|
|
22
21
|
# 运行脚本
|
|
23
22
|
from kotonebot.backend.context import init_context, manual_context
|
|
24
|
-
from
|
|
23
|
+
from kaa.main.kaa import Kaa
|
|
25
24
|
logging.getLogger('kotonebot').setLevel(logging.DEBUG)
|
|
25
|
+
logging.getLogger('kaa').setLevel(logging.DEBUG)
|
|
26
26
|
config_path = './config.json'
|
|
27
27
|
kaa_instance = Kaa(config_path)
|
|
28
28
|
init_context(config_type=BaseConfig, target_device=kaa_instance._on_create_device())
|
{kotonebot/kaa → kaa}/errors.py
RENAMED
|
@@ -50,3 +50,17 @@ class LauncherNotFoundError(KaaUserFriendlyError):
|
|
|
50
50
|
'未找到启动器「kaa.exe」,请确认是否正确放置在根目录。',
|
|
51
51
|
'https://kdocs.cn/l/cetCY8mGKHLj?linkname=jpzb09rLTS'
|
|
52
52
|
)
|
|
53
|
+
|
|
54
|
+
class ElevationRequiredError(KaaUserFriendlyError):
|
|
55
|
+
def __init__(self):
|
|
56
|
+
super().__init__(
|
|
57
|
+
'请以管理员身份运行 kaa。',
|
|
58
|
+
'https://www.kdocs.cn/l/cetCY8mGKHLj?linkname=qOqulS4KeX'
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
class GameUpdateNeededError(KaaUserFriendlyError):
|
|
62
|
+
def __init__(self):
|
|
63
|
+
super().__init__(
|
|
64
|
+
'游戏本体需要更新。kaa 暂不支持自动更新,请前往 Play Store 手动更新游戏。',
|
|
65
|
+
'https://www.baidu.com/s?wd=%E5%BF%AB%E5%8E%BB%E6%9B%B4%E6%96%B0%E6%B8%B8%E6%88%8F%E5%95%8A%EF%BC%8C%E8%BF%98%E7%82%B9%E4%BB%80%E4%B9%88%E6%89%93%E5%BC%80%E5%B8%AE%E5%8A%A9'
|
|
66
|
+
)
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import logging
|
|
2
|
+
from collections import deque
|
|
3
|
+
|
|
4
|
+
import cv2
|
|
5
|
+
import numpy as np
|
|
6
|
+
from kotonebot import action
|
|
7
|
+
from cv2.typing import MatLike
|
|
8
|
+
from kotonebot.primitives import RectTuple
|
|
9
|
+
|
|
10
|
+
from kaa.tasks import R
|
|
11
|
+
from kaa.util import paths
|
|
12
|
+
from kaa.db.drink import Drink
|
|
13
|
+
from kaa.image_db import ImageDatabase, HistDescriptor, FileDataSource
|
|
14
|
+
|
|
15
|
+
logger = logging.getLogger(__name__)
|
|
16
|
+
_db: ImageDatabase | None = None
|
|
17
|
+
|
|
18
|
+
def preprocess_drink_slot_img(img: MatLike) -> MatLike:
|
|
19
|
+
"""预处理饮品图像,使得图像识别结果更正确
|
|
20
|
+
|
|
21
|
+
:param img: 输入的饮品槽图像,大小 68x68 (BGR)
|
|
22
|
+
:return: 处理后的图像,大小 68x68,其中会出现更大量的纯白色,便于识别
|
|
23
|
+
"""
|
|
24
|
+
BLUE_THRESHOLD = 255
|
|
25
|
+
FLOOD_BLUE_THRESHOLD = 240
|
|
26
|
+
FLOOD_COLOR_THRESHOLD = 230
|
|
27
|
+
|
|
28
|
+
assert img.shape[2] == 3
|
|
29
|
+
h, w, _ = img.shape
|
|
30
|
+
|
|
31
|
+
# 分通道
|
|
32
|
+
b, g, r = cv2.split(img)
|
|
33
|
+
|
|
34
|
+
# 把 b==255 的像素修正为纯白
|
|
35
|
+
mask = (b >= BLUE_THRESHOLD)
|
|
36
|
+
g[mask] = 255
|
|
37
|
+
b[mask] = 255
|
|
38
|
+
r[mask] = 255
|
|
39
|
+
img = cv2.merge([b, g, r])
|
|
40
|
+
|
|
41
|
+
# BFS 把边缘连通区域染成纯白
|
|
42
|
+
visited = np.zeros((h, w), dtype=bool)
|
|
43
|
+
q = deque()
|
|
44
|
+
|
|
45
|
+
# 从边缘像素开始
|
|
46
|
+
for x in range(w):
|
|
47
|
+
q.append((0, x))
|
|
48
|
+
q.append((h - 1, x))
|
|
49
|
+
for y in range(h):
|
|
50
|
+
q.append((y, 0))
|
|
51
|
+
q.append((y, w - 1))
|
|
52
|
+
|
|
53
|
+
# 右上角禁止传播,因为一些饮料的管子会插到圈圈外面,导致白色泄露
|
|
54
|
+
right_top_x = w / 2
|
|
55
|
+
right_top_y = h / 4
|
|
56
|
+
|
|
57
|
+
while q:
|
|
58
|
+
y, x = q.popleft()
|
|
59
|
+
if not (0 <= x < w and 0 <= y < h):
|
|
60
|
+
continue
|
|
61
|
+
if visited[y, x]:
|
|
62
|
+
continue
|
|
63
|
+
visited[y, x] = True
|
|
64
|
+
|
|
65
|
+
# 设置为白色
|
|
66
|
+
img[y, x] = [255, 255, 255]
|
|
67
|
+
|
|
68
|
+
# 四邻域扩展
|
|
69
|
+
for dy, dx in [(-1,0), (1,0), (0,-1), (0,1)]:
|
|
70
|
+
ny, nx = y + dy, x + dx
|
|
71
|
+
if 0 <= nx < w and 0 <= ny < h and not (nx > right_top_x and ny < right_top_y) and not visited[ny, nx] and not np.all(img[ny, nx] >= FLOOD_COLOR_THRESHOLD) and not (img[ny, nx][0] >= FLOOD_BLUE_THRESHOLD):
|
|
72
|
+
q.append((ny, nx))
|
|
73
|
+
|
|
74
|
+
return img
|
|
75
|
+
|
|
76
|
+
def drinks_db() -> ImageDatabase:
|
|
77
|
+
global _db
|
|
78
|
+
if _db is None:
|
|
79
|
+
logger.info('Loading drinks database...')
|
|
80
|
+
path = paths.resource('drinks')
|
|
81
|
+
db_path = paths.cache('drinks.pkl')
|
|
82
|
+
_db = ImageDatabase(FileDataSource(str(path)), db_path, HistDescriptor(8), name='drinks')
|
|
83
|
+
return _db
|
|
84
|
+
|
|
85
|
+
def match_first_drinks(img: MatLike, delta_threshold: float = 0.7) -> Drink | None:
|
|
86
|
+
"""
|
|
87
|
+
将给定图像与所有饮品 进行匹配,并返回最接近的一个饮品
|
|
88
|
+
|
|
89
|
+
:img: 输入图像,格式为 BGR 68x68 左右。
|
|
90
|
+
:delta_threshold: 距离差值阈值,如果第1个匹配结果和第2个匹配结果的 距离的差值 超过delta_threshold,那么才视为匹配成功。
|
|
91
|
+
:return: 若匹配成功,则返回 饮品的信息 和 前1~3个匹配饮品的数据库查询结果(用于更详细的日志输出);否则返回 None。
|
|
92
|
+
"""
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
# cv2.imshow("img", img)
|
|
96
|
+
img = preprocess_drink_slot_img(img)
|
|
97
|
+
# cv2.imshow("img1", img)
|
|
98
|
+
# cv2.waitKey(0)
|
|
99
|
+
# cv2.destroyAllWindows()
|
|
100
|
+
|
|
101
|
+
db = drinks_db()
|
|
102
|
+
matches = db.match_all(img, threshold=114514)
|
|
103
|
+
if len(matches) == 0:
|
|
104
|
+
return None
|
|
105
|
+
|
|
106
|
+
asset_id = matches[0].key.strip().split('.')[0]
|
|
107
|
+
drink = Drink.from_asset_id(asset_id)
|
|
108
|
+
if drink is None:
|
|
109
|
+
return None
|
|
110
|
+
|
|
111
|
+
if len(matches) == 1:
|
|
112
|
+
logger.info("Only 1 drink match result: %s", str(drink.name))
|
|
113
|
+
return drink
|
|
114
|
+
|
|
115
|
+
matches = matches[:3]
|
|
116
|
+
matches_distance = [round(m.distance, 2) for m in matches]
|
|
117
|
+
|
|
118
|
+
if matches[1].distance - matches[0].distance <= delta_threshold:
|
|
119
|
+
logger.info(
|
|
120
|
+
"Mismatched drink: %s. First 3 matches distance: %s. Delta: %s",
|
|
121
|
+
str(drink.name),
|
|
122
|
+
str(matches_distance),
|
|
123
|
+
str(round(matches[1].distance - matches[0].distance, 2))
|
|
124
|
+
)
|
|
125
|
+
return None
|
|
126
|
+
|
|
127
|
+
logger.info(
|
|
128
|
+
"Matched drink: %s. First 3 matches distance: %s. Delta: %s",
|
|
129
|
+
str(drink.name),
|
|
130
|
+
str(matches_distance),
|
|
131
|
+
str(round(matches[1].distance - matches[0].distance, 2))
|
|
132
|
+
)
|
|
133
|
+
return drink
|
|
134
|
+
|
|
135
|
+
@action('定位考试中出现的所有饮品', screenshot_mode='manual')
|
|
136
|
+
def locate_all_drinks_in_3_drink_slots(img: MatLike) -> list[tuple[Drink, RectTuple]]:
|
|
137
|
+
"""
|
|
138
|
+
将当前图像的左下角的3个饮品槽与所有饮品 进行匹配,并返回匹配上的所有饮品和他们的位置
|
|
139
|
+
|
|
140
|
+
:img: 输入图像,格式为 BGR 720x1280。
|
|
141
|
+
:return: 若匹配成功,则返回饮品的信息,否则返回 None。
|
|
142
|
+
"""
|
|
143
|
+
|
|
144
|
+
potential_rects: list[RectTuple] = [
|
|
145
|
+
R.InPurodyuusu.BoxDrink1.rect,
|
|
146
|
+
R.InPurodyuusu.BoxDrink2.rect,
|
|
147
|
+
R.InPurodyuusu.BoxDrink3.rect
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
results = list[tuple[Drink, RectTuple]]()
|
|
151
|
+
|
|
152
|
+
for rect in potential_rects:
|
|
153
|
+
x, y, w, h = rect
|
|
154
|
+
img_slot = img[y:y+h, x:x+w]
|
|
155
|
+
|
|
156
|
+
drink = match_first_drinks(img_slot)
|
|
157
|
+
|
|
158
|
+
if drink is not None:
|
|
159
|
+
results.append((drink, rect))
|
|
160
|
+
|
|
161
|
+
return results
|
|
162
|
+
|
|
163
|
+
if __name__ == '__main__':
|
|
164
|
+
from logging import getLogger
|
|
165
|
+
logging.basicConfig(level=logging.INFO, format='[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s')
|
|
166
|
+
|
|
167
|
+
# img = R.InPurodyuusu.Screenshot5Cards.data # len = 2
|
|
168
|
+
# img = R.InPurodyuusu.ScreenshotSenseiTipConsult.data # len = 3
|
|
169
|
+
# img = R.InPurodyuusu.Screenshot1Cards.data # len = 2
|
|
170
|
+
# img = R.InPurodyuusu.ScreenshotDrinkTest.data # len = 2
|
|
171
|
+
# img = R.InPurodyuusu.Screenshot4Cards.data # len = 0
|
|
172
|
+
img = R.InPurodyuusu.ScreenshotDrinkTest3.data # len = 1
|
|
173
|
+
results = locate_all_drinks_in_3_drink_slots(img)
|
|
174
|
+
print(len(results), ":", results)
|
|
@@ -5,13 +5,13 @@ import cv2
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
from cv2.typing import MatLike
|
|
7
7
|
|
|
8
|
-
from
|
|
9
|
-
from
|
|
8
|
+
from kaa.tasks import R
|
|
9
|
+
from kaa.util import paths
|
|
10
10
|
from kotonebot.primitives import RectTuple, Rect
|
|
11
|
-
from
|
|
11
|
+
from kaa.game_ui import Scrollable
|
|
12
12
|
from kotonebot import device, action
|
|
13
13
|
from kotonebot.util import cv2_imread
|
|
14
|
-
from
|
|
14
|
+
from kaa.image_db import ImageDatabase, HistDescriptor, FileDataSource, DatabaseQueryResult
|
|
15
15
|
from kotonebot.backend.preprocessor import HsvColorsRemover
|
|
16
16
|
|
|
17
17
|
logger = logging.getLogger(__name__)
|
|
@@ -141,11 +141,17 @@ def locate_idol(skin_id: str) -> Rect | None:
|
|
|
141
141
|
|
|
142
142
|
sc.update()
|
|
143
143
|
logger.debug('Idol preview pages count: %s', repr(sc.page_count))
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
|
|
145
|
+
if sc.page_count is not None:
|
|
146
|
+
iterator = sc(4 / (sc.page_count * 12) * 0.8)
|
|
147
|
+
else:
|
|
148
|
+
# 没找到ScrollBar的情况,只执行一次for循环
|
|
149
|
+
logger.warning('Not found ScrollBar in Idol overview page.')
|
|
150
|
+
iterator = range(1)
|
|
151
|
+
|
|
146
152
|
# 1280x720 分辨率下,一行 4 个,一页共 12 个。
|
|
147
153
|
# 一次只翻 0.8 行。
|
|
148
|
-
for _ in
|
|
154
|
+
for _ in iterator:
|
|
149
155
|
img = device.screenshot()
|
|
150
156
|
# 只保留 BoxIdolOverviewIdols 区域
|
|
151
157
|
mask = np.zeros_like(img)
|
|
@@ -6,8 +6,8 @@ from cv2.typing import MatLike
|
|
|
6
6
|
from kotonebot.primitives import Rect
|
|
7
7
|
from kotonebot import ocr, device, image, action
|
|
8
8
|
from kotonebot.backend.core import HintBox
|
|
9
|
-
from
|
|
10
|
-
from
|
|
9
|
+
from kaa.config import ProduceAction
|
|
10
|
+
from kaa.tasks import R
|
|
11
11
|
|
|
12
12
|
logger = logging.getLogger(__name__)
|
|
13
13
|
|
|
@@ -189,9 +189,10 @@ class Scrollable:
|
|
|
189
189
|
if self.scrollbar_rect is None:
|
|
190
190
|
logger.warning('Unable to find scrollbar. (1)')
|
|
191
191
|
return False
|
|
192
|
-
logger.debug('Scrollbar rect found.')
|
|
193
192
|
|
|
194
193
|
x, y, w, h = self.scrollbar_rect.xywh
|
|
194
|
+
logger.debug(f'Scrollbar rect found. x/y/w/h: {x}/{y}/{w}/{h}')
|
|
195
|
+
|
|
195
196
|
scroll_img = img[y:y+h, x:x+w]
|
|
196
197
|
# 灰度、二值化
|
|
197
198
|
gray = cv2.cvtColor(scroll_img, cv2.COLOR_BGR2GRAY)
|
|
@@ -201,10 +202,10 @@ class Scrollable:
|
|
|
201
202
|
# 计算滚动位置
|
|
202
203
|
positions = np.where(binary == 0)[0]
|
|
203
204
|
if len(positions) > 0:
|
|
204
|
-
self.track_position = (int(x), int(y))
|
|
205
|
+
self.track_position = (int(x + w / 2), int(y))
|
|
205
206
|
self.track_height = int(h)
|
|
206
207
|
self.thumb_height = int(positions[-1] - positions[0])
|
|
207
|
-
self.thumb_position = (int(x), int(y + positions[0]))
|
|
208
|
+
self.thumb_position = (int(x + w / 2), int(y + positions[0]))
|
|
208
209
|
self.position = float(positions[-1] / h)
|
|
209
210
|
self.page_count = int(h / self.thumb_height)
|
|
210
211
|
logger.debug(f'Scrollbar height: {self.thumb_height}, position: {self.position}')
|
|
@@ -95,7 +95,19 @@ class ImageDatabase:
|
|
|
95
95
|
# 载入数据源
|
|
96
96
|
logger.debug('Loading data source...')
|
|
97
97
|
for key, value in self.source:
|
|
98
|
-
|
|
98
|
+
try:
|
|
99
|
+
self.insert(key, value)
|
|
100
|
+
except Exception as e:
|
|
101
|
+
logger.error(
|
|
102
|
+
"\n"
|
|
103
|
+
"Error inserting key: %s\n"
|
|
104
|
+
"Error message: %s\n"
|
|
105
|
+
"资源可能损坏,请检查并删除 `kaa/resources/idol_cards` 下的损坏文件,"
|
|
106
|
+
"然后重新执行 `tools/db/extract_resources.py`",
|
|
107
|
+
key,
|
|
108
|
+
str(e).strip()
|
|
109
|
+
)
|
|
110
|
+
raise # 继续抛异常,让程序崩溃
|
|
99
111
|
self.save()
|
|
100
112
|
|
|
101
113
|
@property
|
|
@@ -134,7 +146,7 @@ class ImageDatabase:
|
|
|
134
146
|
for name, image in images.items():
|
|
135
147
|
self.insert(name, image, overwrite=overwrite)
|
|
136
148
|
|
|
137
|
-
def
|
|
149
|
+
def match_all(self, query: MatLike, threshold: float = 10) -> list[DatabaseQueryResult]:
|
|
138
150
|
"""
|
|
139
151
|
搜索图片,返回所有符合阈值要求的图片,并按相似度降序排序。
|
|
140
152
|
|
|
@@ -149,6 +161,14 @@ class ImageDatabase:
|
|
|
149
161
|
if dist < threshold:
|
|
150
162
|
results.append(DatabaseQueryResult(key, feature, float(dist)))
|
|
151
163
|
results.sort(key=lambda x: x.distance)
|
|
164
|
+
|
|
165
|
+
# 可视化
|
|
166
|
+
# print("MinDist = ", results[0].distance, results[1].distance, results[2].distance)
|
|
167
|
+
# cv2.imshow("query", query)
|
|
168
|
+
# # cv2.imshow("query_feature", query_feature)
|
|
169
|
+
# cv2.waitKey(0)
|
|
170
|
+
# cv2.destroyAllWindows()
|
|
171
|
+
|
|
152
172
|
return results
|
|
153
173
|
|
|
154
174
|
def match(self, query: MatLike, threshold: float = 10) -> DatabaseQueryResult | None:
|
|
@@ -159,7 +179,7 @@ class ImageDatabase:
|
|
|
159
179
|
:param threshold: 距离阈值。阈值越大,对相似度的要求越低。
|
|
160
180
|
:return: 匹配结果。
|
|
161
181
|
"""
|
|
162
|
-
results = self.
|
|
182
|
+
results = self.match_all(query, threshold)
|
|
163
183
|
if len(results) > 0:
|
|
164
184
|
return results[0]
|
|
165
185
|
else:
|
|
@@ -167,7 +187,7 @@ class ImageDatabase:
|
|
|
167
187
|
|
|
168
188
|
|
|
169
189
|
if __name__ == '__main__':
|
|
170
|
-
from
|
|
190
|
+
from kaa.image_db.db import Db
|
|
171
191
|
logging.basicConfig(level=logging.DEBUG, format='[%(asctime)s] [%(levelname)s] [%(name)s] [%(funcName)s] [%(lineno)d] %(message)s')
|
|
172
192
|
imgs_path = r'E:\GithubRepos\KotonesAutoAssistant.worktrees\dev\kotonebot\tasks\resources\idol_cards'
|
|
173
193
|
needle_path = r'D:\05.png'
|