Compare commits

82 Commits
min ... main

Author SHA1 Message Date
7b30cc6706 fix card.admin 2026-01-30 19:16:42 +09:00
13e745bf6d add content 2026-01-29 18:27:46 +09:00
c053143db3 add card.admin, rse.admin 2026-01-29 17:06:20 +09:00
cfa36633e1 sync 2026-01-26 03:04:16 +09:00
cbc52f554a add content 2026-01-26 02:25:57 +09:00
2f6bab165b sync 2026-01-26 01:59:03 +09:00
7713fa1729 add content 2026-01-26 00:41:53 +09:00
2500c4e14a fix env 2026-01-26 00:33:01 +09:00
0d61b725a8 fix mcp lang 2026-01-26 00:32:35 +09:00
2d182ff412 add content 2026-01-26 00:24:20 +09:00
6850c11f06 fix footer 2026-01-25 20:04:01 +09:00
415ae30d3b rm old record key 2026-01-25 18:10:12 +09:00
af22446c47 fix service header 2026-01-25 18:02:58 +09:00
570dce37e1 fix card id 2026-01-25 18:00:32 +09:00
7c8fa2e5c4 fix lexicon 2026-01-25 17:34:35 +09:00
ddbd0c761f fix user 2026-01-25 16:25:48 +09:00
6e8dea6252 fix old card 2026-01-25 15:58:23 +09:00
dc5218b1ad test lexicon 2026-01-25 15:49:15 +09:00
ba15759595 add content 2026-01-25 15:31:28 +09:00
99a9833df8 fix typo 2026-01-25 02:02:32 +09:00
f75c0373ed add content 2026-01-24 19:32:47 +09:00
53404e187a fix css 2026-01-24 19:32:37 +09:00
387ed4cbc4 add cmd ver 2026-01-23 01:50:57 +09:00
e823628090 sync 2026-01-23 01:37:22 +09:00
058965f58e fix mobile layout tab pds select 2026-01-23 01:11:42 +09:00
22f34377ec fix mobile layout link edit 2026-01-23 00:56:15 +09:00
12422d275c fix mobile layout tab 2026-01-23 00:52:20 +09:00
fa0b68d622 update lexicon 2026-01-23 00:52:20 +09:00
5870541b96 add login link button 2026-01-23 00:52:04 +09:00
e5cccaca39 fix loading 2026-01-23 00:52:04 +09:00
c124492561 test card-old merge slim 2026-01-23 00:51:53 +09:00
279f952c99 fix at.link edit save 2026-01-22 22:47:41 +09:00
b1fdd211b4 fix at.link layout 2026-01-22 22:46:10 +09:00
f60369d2c8 fix at.link profile 2026-01-22 22:23:14 +09:00
c2044c5bd8 fix at.link edit 2026-01-22 22:10:10 +09:00
ca6bb5319c add at.link 2026-01-22 21:57:22 +09:00
cefe7981ee fix favicon 2026-01-22 21:35:17 +09:00
6dd9d2466e fix content en 2026-01-22 21:03:38 +09:00
cba0228e70 test chat edit 2026-01-22 21:01:21 +09:00
7021036a5c fix post edit 2026-01-22 20:52:07 +09:00
6d9f61620d add content en 2026-01-22 20:00:55 +09:00
3af7894995 add content 2026-01-22 19:55:39 +09:00
84161e1cad fix content en 2026-01-22 19:27:52 +09:00
bd26f817d9 sync 2026-01-22 19:24:38 +09:00
e0fc85fa1c add content 2026-01-22 18:28:23 +09:00
57aeaed91f add content 2026-01-22 18:22:55 +09:00
2f19984f0c fix chat layout 2026-01-22 18:02:54 +09:00
a873e5cbf1 add content en 2026-01-22 17:54:46 +09:00
d1fba083b4 add content 2026-01-22 17:45:33 +09:00
b5dd740541 add content en 2026-01-22 16:49:11 +09:00
5824c42e8b add content 2026-01-22 16:40:55 +09:00
63b24c7e1e fix mcp env 2026-01-22 16:22:43 +09:00
9519c8c477 add content en 2026-01-21 20:36:47 +09:00
da45b31029 add content 2026-01-21 20:35:07 +09:00
653814ee70 fix card.old migrate 2026-01-21 15:15:22 +09:00
09483cfb7e fix service icon resize 2026-01-21 14:02:47 +09:00
586e16cc54 fix content 2026-01-21 14:02:37 +09:00
80cd0888f3 fix syui.ai service icon 2026-01-21 13:10:43 +09:00
6b3be20a5f fix profile card.old icon 2026-01-21 13:02:34 +09:00
48e5d3bc82 add ai.syui.rse 2026-01-21 12:56:43 +09:00
06ccae58a2 add content 2026-01-21 12:13:08 +09:00
ff09594801 fix card.old layout 2026-01-21 02:40:44 +09:00
06ca713dc8 add ai.syui.card.old 2026-01-21 02:30:44 +09:00
a2dda25ab6 fix card link 2026-01-21 00:59:32 +09:00
d91c37d73a fix login card link 2026-01-21 00:55:31 +09:00
a5ef15e4ee fix card effect 2026-01-21 00:52:01 +09:00
968ea019a6 test card 2026-01-21 00:48:10 +09:00
b2f36073ec add icon 2026-01-21 00:08:19 +09:00
12797dde7f gitignore 2026-01-20 23:44:24 +09:00
1ec04deb9c add content chat 2026-01-20 21:32:46 +09:00
cc11fb8d3f fix config 2026-01-20 20:11:25 +09:00
49f4b71866 fix loading chat 2026-01-20 19:54:47 +09:00
e4cae37e4b fix mcp cid 2026-01-20 19:23:19 +09:00
59b79d5098 fix record cid 2026-01-20 19:23:10 +09:00
39308cdc85 add chat lang 2026-01-20 19:14:16 +09:00
a77dde0366 test ai chat mcp 2026-01-20 18:26:10 +09:00
1d3aa51fb6 test ai chat 2026-01-20 17:32:27 +09:00
6f5290753d test scheme check 2026-01-19 00:00:54 +09:00
e8cf46465f fix date format 2026-01-18 22:08:50 +09:00
676c8942de fix bsky.chat icon 2026-01-18 22:06:16 +09:00
623fe61468 fix loading 2026-01-18 22:00:48 +09:00
ce00222537 fix oauth config 2026-01-18 20:43:18 +09:00
374 changed files with 11479 additions and 183 deletions

13
.env.example Normal file
View File

@@ -0,0 +1,13 @@
# LMS Translation API
TRANSLATE_URL=http://127.0.0.1:1234/v1
TRANSLATE_MODEL=plamo-2-translate
# Chat API
CHAT_URL=http://127.0.0.1:1234/v1
CHAT_MODEL=gpt-oss-20b
CHAT_LANG=en
# CHAT_MAX_TOKENS=2048
# Character/system prompt (choose one)
# CHAT_SYSTEM="You are ai, a friendly AI assistant."
# CHAT_SYSTEM_FILE=./character.txt

36
.github/workflows/cf-pages.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Deploy to Cloudflare Pages
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
permissions:
contents: read
deployments: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
- name: Install dependencies
run: npm install
- name: Build content from ATProto
run: npm run build
- name: Deploy to Cloudflare Pages
uses: cloudflare/pages-action@v1
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
directory: dist
gitHubToken: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ node_modules
package-lock.json package-lock.json
Cargo.lock Cargo.lock
.env .env
.mcp.json

25
Cargo.toml Normal file
View File

@@ -0,0 +1,25 @@
[package]
name = "ailog"
version = "0.0.1"
edition = "2021"
description = "ATProto blog CLI"
authors = ["syui"]
homepage = "https://syui.ai"
repository = "https://git.syui.ai/ai/log"
[[bin]]
name = "ailog"
path = "src/main.rs"
[dependencies]
clap = { version = "4.5", features = ["derive"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
reqwest = { version = "0.12", features = ["json", "rustls-tls"], default-features = false }
tokio = { version = "1", features = ["rt-multi-thread", "macros"] }
anyhow = "1.0"
dirs = "5.0"
chrono = { version = "0.4", features = ["serde"] }
rand = "0.8"
dotenvy = "0.15"
rustyline = "15"

View File

@@ -0,0 +1,48 @@
{
"lexicon": 1,
"id": "ai.syui.at.link",
"defs": {
"main": {
"type": "record",
"description": "Record containing links to external service profiles.",
"key": "literal:self",
"record": {
"type": "object",
"required": ["links", "createdAt"],
"properties": {
"links": {
"type": "array",
"items": { "type": "ref", "ref": "#linkItem" },
"description": "Array of external service links."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this record was created."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this record was last updated."
}
}
}
},
"linkItem": {
"type": "object",
"required": ["service", "username"],
"properties": {
"service": {
"type": "string",
"knownValues": ["github", "youtube", "x"],
"description": "Service identifier."
},
"username": {
"type": "string",
"maxLength": 300,
"description": "Username or ID on the service."
}
}
}
}
}

View File

@@ -0,0 +1,71 @@
{
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"id": "ai.syui.card.admin",
"defs": {
"main": {
"type": "record",
"key": "literal:self",
"description": "Card game configuration and master data (admin only)",
"record": {
"type": "object",
"required": ["gacha", "card", "createdAt", "updatedAt"],
"properties": {
"gacha": {
"type": "object",
"required": ["pickup", "rate", "pool"],
"properties": {
"pickup": { "type": "integer", "description": "Pickup card ID" },
"rate": {
"type": "object",
"required": ["pickup", "rare"],
"properties": {
"pickup": { "type": "integer", "description": "1/n for pickup rate (100 = 1%)" },
"rare": { "type": "integer", "description": "1/n for rare:1 rate (10 = 10%), rare:2 = 1/(n*10), rare:3 = 1/(n*100)" }
}
},
"pool": {
"type": "array",
"description": "Card IDs available in gacha pool",
"items": { "type": "integer" }
}
}
},
"card": {
"type": "array",
"description": "Card master data",
"items": {
"type": "object",
"required": ["id", "character", "name", "text", "cp", "effect"],
"properties": {
"id": { "type": "integer", "description": "Card ID" },
"character": { "type": "integer", "description": "Associated character ID" },
"name": {
"type": "object",
"required": ["ja", "en"],
"properties": {
"ja": { "type": "string" },
"en": { "type": "string" }
}
},
"text": {
"type": "object",
"required": ["ja", "en"],
"properties": {
"ja": { "type": "string" },
"en": { "type": "string" }
}
},
"cp": { "type": "string", "description": "CP type (status, time, damage)" },
"effect": { "type": "string", "description": "Effect type (status, fly, mode, damage)" },
"key": { "type": "string", "description": "Key binding (R1, L1, Y, X, etc.)" }
}
}
},
"createdAt": { "type": "string", "format": "datetime" },
"updatedAt": { "type": "string", "format": "datetime" }
}
}
}
}
}

View File

@@ -0,0 +1,52 @@
{
"lexicon": 1,
"id": "ai.syui.card.old",
"defs": {
"main": {
"type": "record",
"key": "literal:self",
"description": "Migrated card data from api.syui.ai",
"record": {
"type": "object",
"required": ["user", "card", "migratedAt"],
"properties": {
"user": {
"type": "object",
"required": ["username"],
"properties": {
"username": { "type": "string" },
"did": { "type": "string" },
"aiten": { "type": "integer" },
"fav": { "type": "integer" },
"coin": { "type": "integer" },
"planet": { "type": "integer" },
"createdAt": { "type": "string", "format": "datetime" },
"updatedAt": { "type": "string", "format": "datetime" }
}
},
"card": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "cp", "rare", "cid", "unique"],
"properties": {
"id": { "type": "integer", "description": "Card type ID" },
"cp": { "type": "integer", "description": "Card power" },
"rare": { "type": "integer", "description": "Rarity level" },
"cid": { "type": "string", "description": "Unique card instance ID" },
"unique": { "type": "boolean", "description": "Unique card flag" }
}
}
},
"checksum": {
"type": "string"
},
"migratedAt": {
"type": "string",
"format": "datetime"
}
}
}
}
}
}

View File

@@ -0,0 +1,34 @@
{
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"id": "ai.syui.card.user",
"defs": {
"main": {
"type": "record",
"key": "literal:self",
"description": "User card collection",
"record": {
"type": "object",
"required": ["card", "createdAt", "updatedAt"],
"properties": {
"card": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "cp", "rare", "cid", "unique"],
"properties": {
"id": { "type": "integer", "description": "Card type ID" },
"cp": { "type": "integer", "description": "Card power" },
"rare": { "type": "integer", "description": "Rarity level" },
"cid": { "type": "string", "description": "Unique card instance ID" },
"unique": { "type": "boolean", "description": "Unique card flag" }
}
}
},
"createdAt": { "type": "string", "format": "datetime" },
"updatedAt": { "type": "string", "format": "datetime" }
}
}
}
}
}

View File

@@ -0,0 +1,72 @@
{
"lexicon": 1,
"id": "ai.syui.log.chat",
"defs": {
"main": {
"type": "record",
"description": "Record containing a chat message in a conversation.",
"key": "tid",
"record": {
"type": "object",
"required": ["content", "author", "createdAt"],
"properties": {
"content": {
"type": "string",
"maxLength": 100000,
"maxGraphemes": 10000,
"description": "The content of the message."
},
"author": {
"type": "string",
"format": "did",
"description": "DID of the message author."
},
"root": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the root message in the thread."
},
"parent": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the parent message being replied to."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this message was created."
},
"lang": {
"type": "string",
"maxLength": 10,
"description": "Language code of the original content (e.g., 'ja', 'en')."
},
"translations": {
"type": "ref",
"ref": "#translationMap",
"description": "Translations of the message in other languages."
}
}
}
},
"translationMap": {
"type": "object",
"description": "Map of language codes to translations.",
"properties": {
"en": { "type": "ref", "ref": "#translation" },
"ja": { "type": "ref", "ref": "#translation" }
}
},
"translation": {
"type": "object",
"description": "A translation of a chat message.",
"properties": {
"content": {
"type": "string",
"maxLength": 100000,
"maxGraphemes": 10000
}
}
}
}
}

View File

@@ -0,0 +1,68 @@
{
"lexicon": 1,
"id": "ai.syui.log.post",
"defs": {
"main": {
"type": "record",
"description": "Record containing a blog post.",
"key": "tid",
"record": {
"type": "object",
"required": ["title", "content", "createdAt"],
"properties": {
"title": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300,
"description": "The title of the post."
},
"content": {
"type": "string",
"maxLength": 1000000,
"maxGraphemes": 100000,
"description": "The content of the post (markdown)."
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared timestamp when this post was originally created."
},
"lang": {
"type": "string",
"maxLength": 10,
"description": "Language code of the original content (e.g., 'ja', 'en')."
},
"translations": {
"type": "ref",
"ref": "#translationMap",
"description": "Translations of the post in other languages."
}
}
}
},
"translationMap": {
"type": "object",
"description": "Map of language codes to translations.",
"properties": {
"en": { "type": "ref", "ref": "#translation" },
"ja": { "type": "ref", "ref": "#translation" }
}
},
"translation": {
"type": "object",
"description": "A translation of a post.",
"properties": {
"title": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300
},
"content": {
"type": "string",
"maxLength": 1000000,
"maxGraphemes": 100000
}
}
}
}
}

View File

@@ -0,0 +1,99 @@
{
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"id": "ai.syui.rse.admin",
"defs": {
"main": {
"type": "record",
"key": "literal:self",
"description": "RSE admin configuration - abilities, characters, systems and collections",
"record": {
"type": "object",
"required": ["ability", "createdAt", "updatedAt"],
"properties": {
"ability": {
"type": "array",
"description": "Ability/attribute definitions",
"items": {
"type": "object",
"required": ["id", "name", "kind"],
"properties": {
"id": { "type": "integer", "description": "Ability ID" },
"name": { "type": "string", "description": "Ability name (ai, quark, neutron, atom, sun)" },
"kind": { "type": "string", "description": "Attribute type (consciousness, matter)" },
"color": { "type": "string", "description": "Color code (e.g., #ffd700)" },
"level": { "type": "integer", "description": "Hierarchy level (0=fundamental)" },
"relation": { "type": "array", "items": { "type": "integer" }, "description": "Advantage IDs" },
"weakness": { "type": "array", "items": { "type": "integer" }, "description": "Weakness IDs" },
"multiplier": { "type": "integer", "description": "Damage multiplier percent (e.g., 150 = 1.5x)" },
"phantom": { "type": "boolean", "description": "Whether this ability is phantom/lost" }
}
}
},
"character": {
"type": "array",
"description": "Character definitions",
"items": {
"type": "object",
"required": ["id", "name", "ability", "mode"],
"properties": {
"id": { "type": "integer", "description": "Character ID" },
"name": { "type": "string", "description": "Character name" },
"ability": { "type": "integer", "description": "Ability ID reference" },
"mode": { "type": "integer", "description": "Character mode" }
}
}
},
"system": {
"type": "array",
"description": "System definitions",
"items": {
"type": "object",
"required": ["id", "name", "domain"],
"properties": {
"id": { "type": "integer", "description": "System ID" },
"name": { "type": "string", "description": "System name" },
"domain": { "type": "string", "description": "System domain (ability, unique, account, planet, origin)" }
}
}
},
"item": {
"type": "array",
"description": "Item definitions",
"items": {
"type": "object",
"required": ["id", "name", "text"],
"properties": {
"id": { "type": "integer", "description": "Item ID" },
"name": { "type": "string", "description": "Item name" },
"text": {
"type": "object",
"description": "Item description (localized)",
"properties": {
"en": { "type": "string", "description": "English text" },
"ja": { "type": "string", "description": "Japanese text" }
}
}
}
}
},
"collection": {
"type": "array",
"description": "ATProto collection definitions",
"items": {
"type": "object",
"required": ["id", "nsid", "name"],
"properties": {
"id": { "type": "integer", "description": "Collection ID" },
"nsid": { "type": "string", "description": "Namespaced identifier (e.g., ai.syui.card)" },
"name": { "type": "string", "description": "Collection short name" }
}
}
},
"createdAt": { "type": "string", "format": "datetime" },
"updatedAt": { "type": "string", "format": "datetime" }
}
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"id": "ai.syui.rse.user",
"defs": {
"main": {
"type": "record",
"key": "literal:self",
"description": "User character and item collection",
"record": {
"type": "object",
"required": ["character", "item", "createdAt", "updatedAt"],
"properties": {
"character": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "cp", "rare", "cid", "unique"],
"properties": {
"id": { "type": "integer", "description": "Character type ID" },
"cp": { "type": "integer", "description": "Character power" },
"rare": { "type": "integer", "description": "Rarity level" },
"cid": { "type": "string", "description": "Unique character instance ID" },
"unique": { "type": "boolean", "description": "Unique character flag" }
}
}
},
"item": {
"type": "array",
"items": {
"type": "object",
"required": ["id", "cp", "rare", "cid", "unique"],
"properties": {
"id": { "type": "integer", "description": "Item type ID" },
"cp": { "type": "integer", "description": "Item power" },
"rare": { "type": "integer", "description": "Rarity level" },
"cid": { "type": "string", "description": "Unique item instance ID" },
"unique": { "type": "boolean", "description": "Unique item flag" }
}
}
},
"createdAt": { "type": "string", "format": "datetime" },
"updatedAt": { "type": "string", "format": "datetime" }
}
}
}
}
}

View File

@@ -4,14 +4,16 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"prebuild": "ailog index 2>/dev/null || true",
"build": "tsc && vite build", "build": "tsc && vite build",
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@atproto/api": "^0.15.12", "@atproto/api": "^0.15.12",
"@atproto/lexicon": "^0.6.0",
"@atproto/oauth-client-browser": "^0.3.19", "@atproto/oauth-client-browser": "^0.3.19",
"marked": "^15.0.6", "highlight.js": "^11.11.1",
"highlight.js": "^11.11.1" "marked": "^15.0.6"
}, },
"devDependencies": { "devDependencies": {
"typescript": "^5.7.3", "typescript": "^5.7.3",

BIN
public/card/0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
public/card/1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
public/card/10.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

BIN
public/card/100.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/101.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/card/102.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
public/card/103.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
public/card/104.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/card/105.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
public/card/106.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
public/card/107.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
public/card/108.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
public/card/109.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
public/card/11.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
public/card/110.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
public/card/111.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
public/card/112.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
public/card/113.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/card/114.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
public/card/115.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
public/card/116.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
public/card/117.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
public/card/118.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
public/card/119.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
public/card/12.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
public/card/120.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/121.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
public/card/122.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

BIN
public/card/123.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
public/card/124.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

BIN
public/card/125.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
public/card/126.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
public/card/127.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB

BIN
public/card/128.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

BIN
public/card/129.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

BIN
public/card/13.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
public/card/130.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

BIN
public/card/131.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
public/card/132.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
public/card/133.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
public/card/134.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/card/14.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
public/card/15.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
public/card/16.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
public/card/17.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
public/card/18.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
public/card/19.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
public/card/2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
public/card/20.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
public/card/200.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/201.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
public/card/21.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
public/card/22.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
public/card/23.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
public/card/24.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
public/card/25.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
public/card/26.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
public/card/27.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 137 KiB

BIN
public/card/28.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
public/card/29.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
public/card/3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
public/card/30.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/300.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/301.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
public/card/31.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/card/32.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
public/card/33.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/card/34.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
public/card/35.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
public/card/36.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
public/card/37.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/38.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

BIN
public/card/39.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
public/card/4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
public/card/40.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
public/card/41.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
public/card/42.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
public/card/43.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

BIN
public/card/44.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
public/card/45.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
public/card/46.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

BIN
public/card/47.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
public/card/48.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
public/card/49.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
public/card/5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
public/card/50.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
public/card/51.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Some files were not shown because too many files have changed in this diff Show More