diff --git a/.githooks/pre-commit b/.githooks/pre-commit new file mode 100755 index 00000000..752a5442 --- /dev/null +++ b/.githooks/pre-commit @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -uo pipefail + +if [ "${SKIP_HOOKS:-}" = "1" ]; then + echo "[pre-commit] skipped (SKIP_HOOKS=1)" + exit 0 +fi + +GIT_DIR="$(git rev-parse --git-dir)" +if [ -f "$GIT_DIR/MERGE_MSG" ] || [ -f "$GIT_DIR/MERGE_HEAD" ] || [ -f "$GIT_DIR/REVERT_HEAD" ]; then + echo "[pre-commit] skipped (merge/revert in progress)" + exit 0 +fi + +if git diff --cached --quiet; then + echo "[pre-commit] nothing staged — skipping checks" + exit 0 +fi + +ROOT="$(git rev-parse --show-toplevel)" +exec "$ROOT/scripts/ci_checks.sh" diff --git a/lib/data/ducet_order.dart b/lib/data/ducet_order.dart index 07d48861..755720f6 100644 --- a/lib/data/ducet_order.dart +++ b/lib/data/ducet_order.dart @@ -3,7 +3,8 @@ /// Generated by scripts/generate_ducet_ranks.dart — do not edit. library; -const String _ducetOrder = '\u0332\u0313\u0343\u0486\u2cf1\u0314\u0485\u2cf0\u0301\u0341\u0954\u0300\u0340\u0953\u0306\u0302\u030c\u030a\u0342\u0308\u030b\u0303\u0307\u0338\u0327\u0328\u0304\u030d\u030e\u0312\u0315\u031a\u033d\u033e\u033f\u0346\u034a\u034b\u034c\u0350\u0351\u0352\u0357\u035b\u035d\u035e\u0484\u0487\u0741\u0745\u0b55\u17cb\u17cc\u17cd\u17ce\u17cf\u17d0\u17d1\u17dd\u1ab0\u1ab1\u1ab2\u1ab3\u1ab4\u1abb\u1abc\u1dc0\u1dc1\u1dc3\u1dc4\u1dc5\u1dc6\u1dc7\u1dc8\u1dc9\u1dcb\u1dcc\u1dcd\u1dce\u1dd1\u1df5\u1df6\u1df7\u1df8\u1dfb\u1dfe\u20f0\u2cef\ua67c\ua67d\u0316\u0317\u0318\u0319\u031c\u031d\u031e\u031f\u0320\u0329\u032a\u032b\u032c\u032f\u0333\u033a\u033b\u033c\u0347\u0348\u0349\u034d\u034e\u0353\u0354\u0355\u0356\u0359\u035a\u035c\u035f\u0362\u0742\u0746\u07fd\u0859\u085a\u085b\u1ab5\u1ab6\u1ab7\u1ab8\u1ab9\u1aba\u1abd\u1dc2\u1dcf\u1dd0\u1df9\u1dfc\u1dfd\u1dff\u20ec\u20ed\u20ee\u20ef\ufe27\u0336\u0337\u20d8\u20d9\u20da\u20e5\u20ea\u20eb\u1abe\u20dd\u20de\u20df\u20e0\u20e2\u20e3\u20e4\u3099\uff9e\u309a\uff9f\u0335\u0305\u0309\u030f\u0310\u0311\u031b\u0321\u0322\u0323\u0324\u0325\u0326\u032d\u032e\u0330\u0331\u0334\u0339\u0345\u0358\u0360\ufe22\ufe29\u0361\ufe20\u0483\ufe2e\ua66f\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05c7\u05b9\u05ba\u05bb\u05c2\u05c1\u05bc\u05bf\ufb1e\u081c\u081d\u081e\u081f\u0820\u0821\u0822\u0823\u0824\u0825\u0826\u0827\u0828\u0829\u082a\u082b\u082c\u0818\u0819\u082d\u064b\ufe71\ufe70\u08f0\u08e7\u064c\ufe72\u08f1\u08e8\u064d\ufe74\u08f2\u08e9\u064e\ufe77\ufe76\u08e4\u08f4\u08f5\u064f\ufe79\ufe78\u08e5\u08fe\u0650\ufe7b\ufe7a\u08e6\u08f6\u0651\u0afb\ufe7d\ufe7c\u0652\u0afa\ufe7f\ufe7e\u0653\u0afc\u0654\u0655\u065f\u0656\u0657\u0658\u08ff\u0659\u065a\u065b\u065c\u065d\u065e\u08e3\u08f7\u08f8\u08fd\u08fb\u08fc\u08f9\u08fa\u0670\u0711\u0730\u0731\u0732\u0733\u0734\u0735\u0736\u0737\u0738\u0739\u073a\u073b\u073c\u073d\u073e\u073f\u07eb\u07ec\u07ed\u07ee\u07ef\u07f0\u07f1\u07f2\u07f3\u135f\u135e\u135d\ua6f0\ua6f1\u093c\u09bc\u0a3c\u0abc\u0afd\u0afe\u0aff\u0b3c\u0cbc\u1b34\u1be6\u1c37\ua9b3\u0900\u0901\u0981\u0a01\u0a81\u0b01\u0c00\u0c01\u0c81\u0d01\u0d81\u1b00\u1b01\ua8c5\ua980\u0902\u0982\u0a02\u0a82\u0b02\u0b82\u0c02\u0c04\u0c82\u0d00\u0d02\u0d82\u0f7e\u1036\u17c6\u1a74\u1b02\u1b80\u1ced\ua80b\ua880\ua981\u0903\u0983\u0a03\u0a83\u0b03\u0c03\u0c83\u0d03\u0d83\u0f7f\u1038\u17c7\u1b04\u1b82\u1cf2\u1cf3\ua881\ua983\u09fe\u0a70\u0a71\u1b03\ua982\u1b81\uabec\u0e4e\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0ec8\u0ec9\u0eca\u0ecb\u0ecc\u0ecd\uaabf\uaac1\u0f39\ua92b\ua92c\ua92d\u1037\u17c8\u17c9\u17ca\u1a75\u1a76\u1a77\u1a78\u1a79\u1a7a\u1a7b\u1a7c\u1939\u193a\u193b\u302a\u302b\u302c\u302d\u302e\u302f\u20d0\u20d1\u20d2\u20d3\u20d4\u20d5\u20d6\u20d7\u20db\u20dc\u20e1\u20e6\u20e7\u20e8\u20e9\u0344\ufc5e\ufc5f\ufcf2\ufc60\ufcf3\ufc61\ufcf4\ufc62\ufc63\u0009\u000a\u000b\u000c\u000d\u0085\u2028\u2029\u0020\u3000\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u00a0\u2007\u202f\u203e\ufe49\ufe4a\ufe4b\ufe4c\u005f\uff3f\ufe4d\ufe4e\ufe4f\ufe33\ufe34\u2017\u002d\uff0d\ufe63\u058a\u1400\u1b60\u1806\u1807\u2010\u2011\u2012\u2013\ufe32\u2014\ufe58\ufe31\u2015\u2e3a\u2e3b\u2053\u2e43\u2e17\u2e40\u301c\u3030\u30a0\u30fb\uff65\u002c\uff0c\ufe50\ufe10\u2e34\u2e32\u2e41\u2e4c\u2e4e\u2e4f\u055d\u060c\u060d\u066b\u066c\u07f8\u1802\u1808\ua4fe\ua60d\ua6f5\u3001\ufe51\uff64\ufe11\ufe45\ufe46\u003b\u037e\uff1b\ufe54\ufe14\u061b\u204f\u2e35\ua6f6\u2e49\u003a\uff1a\ufe55\ufe13\u2a74\u0589\u061e\u0703\u0704\u0705\u0706\u0707\u0708\u0830\u0831\u0832\u0833\u0834\u0835\u0836\u0837\u0838\u0839\u083a\u083b\u083c\u083d\u083e\u1361\u1363\u1364\u1365\u1366\u1804\u1805\u0f14\u17d6\u1b5d\ua9c7\u16eb\u16ec\u16ed\ua6f4\u0021\uff01\ufe57\ufe15\u203c\u2049\u00a1\u055c\u07f9\u1944\u003f\uff1f\ufe56\ufe16\u2048\u2047\u00bf\u2e2e\u055e\u061f\u0709\u1367\u1945\u2cfa\u2cfb\ua60f\ua6f7\uaaf1\u203d\u2e18\u002e\uff0e\u2024\ufe52\u2025\ufe30\u2026\ufe19\u1801\u06d4\u0701\u0702\u1362\u1803\u1809\u166e\u1b5c\u2cf9\u2cfe\u2e30\u2e3c\ua4ff\ua60e\ua6f3\u3002\uff61\ufe12\u00b7\u0387\u2e31\u2e33\u0964\u0965\ua8ce\ua8cf\u1c3b\u1c3c\ua876\ua877\u1735\u1736\ua92f\u104a\u104b\u17d4\u17d5\u1aa8\u1aa9\u1aaa\u1aab\u1b5e\u1b5f\ua9c8\ua9c9\uaa5d\uaa5e\uaa5f\uaaf0\uabeb\u1c7e\u1c7f\u0700\u07f7\u10fb\u1360\u1368\u1a1e\u1a1f\u1b5a\u1b5b\ua9c1\ua9c2\ua9c3\ua9c4\ua9c5\ua9c6\ua9ca\ua9cb\ua9cc\ua9cd\ua6f2\ua95f\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\u2e2a\u2e2b\u2e2c\u2e2d\u2e3d\u2cfc\u2cff\u2e19\'\uff07\u2018\u2019\u201a\u201b\u2039\u203a\u0022\uff02\u201c\u201d\u201e\u201f\u2e42\u301d\u301e\u301f\u00ab\u00bb\u0028\uff08\ufe59\u207d\u208d\ufe35\u2474\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2475\u2487\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u249c\u249d\u249e\u249f\u24a0\u24a1\u24a2\u24a3\u24a4\u24a5\u24a6\u24a7\u24a8\u24a9\u24aa\u24ab\u24ac\u24ad\u24ae\u24af\u24b0\u24b1\u24b2\u24b3\u24b4\u24b5\u3200\u320e\u3201\u320f\u3202\u3210\u3203\u3211\u3204\u3212\u3205\u3213\u3206\u3214\u3207\u3215\u321d\u321e\u3208\u3216\u321c\u3209\u3217\u320a\u3218\u320b\u3219\u320c\u321a\u320d\u321b\u3220\u3226\u3222\u3228\u3221\u3224\u3239\u323d\u3241\u3227\u3225\u3238\u3229\u323f\u3234\u323a\u3223\u322f\u323b\u3230\u322a\u3232\u322d\u3231\u322c\u322b\u3235\u323c\u3233\u3237\u3240\u3242\u3243\u3236\u323e\u322e\u0029\uff09\ufe5a\u207e\u208e\ufe36\u005b\uff3b\ufe47\u005d\uff3d\ufe48\u007b\uff5b\ufe5b\ufe37\u007d\uff5d\ufe5c\ufe38\u0f3a\u0f3b\u0f3c\u0f3d\u169b\u169c\u2045\u2046\u2308\u2309\u230a\u230b\u29fc\u29fd\u2983\u2984\u2985\uff5f\u2986\uff60\u2987\u2988\u2989\u298a\u298b\u298c\u298d\u298e\u298f\u2990\u2991\u2992\u2993\u2994\u2995\u2996\u2997\u2998\u27c5\u27c6\u27e6\u27e7\u27e8\u27e9\u27ea\u27eb\u27ec\u27ed\u27ee\u27ef\u2768\u2769\u276a\u276b\u276c\u276d\u276e\u276f\u2770\u2771\u2772\u2773\u2774\u2775\u2e02\u2e03\u2e04\u2e05\u2e09\u2e0a\u2e0c\u2e0d\u2e1c\u2e1d\u2e20\u2e21\u2e22\u2e23\u2e24\u2e25\u2e26\u2e27\u2e28\u2e29\u2329\u3008\ufe3f\u232a\u3009\ufe40\u300a\ufe3d\u300b\ufe3e\u300c\uff62\ufe41\u300d\uff63\ufe42\u300e\ufe43\u300f\ufe44\u3010\ufe3b\u3011\ufe3c\u3014\ufe5d\ufe39\u3015\ufe5e\ufe3a\u3016\ufe17\u3017\ufe18\u3018\u3019\u301a\u301b\ufd3e\ufd3f\u2016\u2e3e\u29d8\u29d9\u29da\u29db\u00a7\u2e39\u00b6\u204b\u2e4d\u2e3f\u0040\uff20\ufe6b\u002a\uff0a\ufe61\u204e\u2051\u066d\ua673\u002f\uff0f\\\uff3c\ufe68\u2e4a\u0026\uff06\ufe60\u204a\u2e52\u0023\uff03\ufe5f\u0025\uff05\ufe6a\u066a\u2030\u0609\u2031\u060a\u2020\u2021\u2e36\u2e37\u2e38\u2e4b\u2022\u2023\u2027\u2043\u204c\u204d\u2032\u2033\u2034\u2057\u2035\u2036\u2037\u3003\u303d\u2038\u203b\u203f\u2054\u2040\u2050\u2041\u2042\u2e00\u2e01\u2e06\u2e07\u2e08\u2e0b\u2e0e\u2e0f\u2e10\u2e11\u2e12\u2e13\u2e14\u2e15\u2e16\u2e1a\u2e1b\u2e1e\u2e1f\u2e44\u2e45\u2e46\u2e47\u2e48\ua67e\u055a\u055b\u055f\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u070a\u070b\u070c\u070d\u085e\u1800\u0970\ua8f8\ua8f9\ua8fa\ua8fc\u09fd\u0a76\u0af0\u0c77\u0c84\u0df4\u0e4f\u0e5a\u0e5b\uaade\uaadf\u0f04\u0f05\u0f06\u0f07\u0f08\u0f09\u0f0a\u0fd0\u0fd1\u0f0b\u0f0c\u0f0d\u0f0e\u0f0f\u0f10\u0f11\u0f12\u0f85\u0fd2\u0fd3\u0fd4\u0fd9\u0fda\u1c3d\u1c3e\u1c3f\u104c\u104d\u104e\u104f\u17d8\u17d9\u17da\u1aa0\u1aa1\u1aa2\u1aa3\u1aa4\u1aa5\u1aa6\u1aac\u1aad\u1cc0\u1cc1\u1cc2\u1cc3\u1cc4\u1cc5\u1cc6\u1cc7\u2d70\ua874\ua875\u1bfc\u1bfd\u1bfe\u1bff\ua92e\ua9de\ua9df\uaa5c\u0060\u1fef\uff40\u00b4\u0384\u1ffd\u02dc\u005e\uff3e\u00af\uffe3\u02d8\u02d9\u00a8\u0385\u1fee\u1fed\u1fc1\u02da\u02dd\u00b8\u02db\u1fbd\u1fbf\u1fce\u1fcd\u1fcf\u1ffe\u1fde\u1fdd\u1fdf\u1fc0\u309b\u309c\u02b9\u0374\u0375\u02ba\u02c2\u02c3\u02c4\u02c5\u02c6\u02c7\u02c8\u02c9\u02ca\u02cb\u02cc\u02cd\u02ce\u02cf\u02d2\u02d3\u02d4\u02d5\uab6a\uab6b\u02d6\u02d7\u02de\u02df\u02e5\u02e6\u02e7\u02e8\u02e9\u02ea\u02eb\u02ec\u02ed\u02ef\u02f0\u02f1\u02f2\u02f3\u02f4\u02f5\u02f6\u02f7\u02f8\u02f9\u02fa\u02fb\u02fc\u02fd\u02fe\u02ff\u1390\u1391\u1392\u1393\u1394\u1395\u1396\u1397\u1398\u1399\ua700\ua701\ua702\ua703\ua704\ua705\ua706\ua707\ua708\ua709\ua70a\ua70b\ua70c\ua70d\ua70e\ua70f\ua710\ua711\ua712\ua713\ua714\ua715\ua716\ua717\ua718\ua719\ua71a\ua71b\ua71c\ua71d\ua71e\ua71f\ua720\ua721\ua788\ua789\ua78a\uab5b\u00b0\u2103\u2109\u0482\u058d\u058e\u0608\u060e\u060f\u06de\u06e9\ufdfd\ufbb2\ufbb3\ufbb4\ufbb5\ufbb6\ufbb7\ufbb8\ufbb9\ufbba\ufbbb\ufbbc\ufbbd\ufbbe\ufbbf\ufbc0\ufbc1\u07f6\u09fa\u0b70\u0bf3\u0bf4\u0bf5\u0bf6\u0bf7\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\ua828\ua829\ua82a\ua82b\ua836\ua837\ua839\u0f01\u0f02\u0f03\u0f13\u0f15\u0f16\u0f17\u0f1a\u0f1b\u0f1c\u0f1d\u0f1e\u0f1f\u0f34\u0f36\u0f38\u0fbe\u0fbf\u0fc0\u0fc1\u0fc2\u0fc3\u0fc4\u0fc5\u0fc7\u0fc8\u0fc9\u0fca\u0fcb\u0fcc\u0fce\u0fcf\u0fd5\u0fd6\u0fd7\u0fd8\u166d\u1940\u109e\u109f\uaa77\uaa78\uaa79\u19e0\u19e1\u19e2\u19e3\u19e4\u19e5\u19e6\u19e7\u19e8\u19e9\u19ea\u19eb\u19ec\u19ed\u19ee\u19ef\u19f0\u19f1\u19f2\u19f3\u19f4\u19f5\u19f6\u19f7\u19f8\u19f9\u19fa\u19fb\u19fc\u19fd\u19fe\u19ff\u1b61\u1b62\u1b63\u1b64\u1b65\u1b66\u1b67\u1b68\u1b69\u1b6a\u1b74\u1b75\u1b76\u1b77\u1b78\u1b79\u1b7a\u1b7b\u1b7c\u00a9\u00ae\u2104\u2108\u2114\u2117\u2118\u211e\u211f\u2123\u2125\u2127\u2129\u212e\u213a\u2141\u2142\u2143\u2144\u214a\u214c\u214f\u218a\u218b\u2190\uffe9\u219a\u2192\uffeb\u219b\u2191\uffea\u2193\uffec\u2194\u21ae\u2195\u2196\u2197\u2198\u2199\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cb\u21cc\u21d0\u21cd\u21d1\u21d2\u21cf\u21d3\u21d4\u21ce\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2200\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220a\u220b\u220c\u220d\u03f6\u220e\u220f\u2210\u2211\u2140\u002b\uff0b\ufb29\ufe62\u207a\u208a\u00b1\u00f7\u00d7\u003c\uff1c\ufe64\u226e\u003d\uff1d\ufe66\u207c\u208c\u2260\u2a75\u2a76\u003e\uff1e\ufe65\u226f\u00ac\uffe2\u007c\uff5c\u00a6\uffe4\u007e\uff5e\u2212\u207b\u208b\u2052\u2213\u2214\u2215\u2044\u2216\u2217\u2218\u2219\u221a\u221b\u0606\u221c\u0607\u221d\u221e\u221f\u2220\u2221\u2222\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222a\u222b\u222c\u222d\u2a0c\u222e\u222f\u2230\u2231\u2232\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223a\u223b\u223c\u2241\u223d\u223e\u223f\u2240\u2242\u2243\u2244\u2245\u2247\u2246\u2248\u2249\u224a\u224b\u224c\u224d\u226d\u224e\u224f\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2262\u2263\u2264\u2270\u2265\u2271\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u2272\u2274\u2273\u2275\u2276\u2278\u2277\u2279\u227a\u2280\u227b\u2281\u227c\u22e0\u227d\u22e1\u227e\u227f\u2282\u2284\u2283\u2285\u2286\u2288\u2287\u2289\u228a\u228b\u228c\u228d\u228e\u228f\u2290\u2291\u22e2\u2292\u22e3\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229a\u229b\u229c\u229d\u229e\u229f\u22a0\u22a1\u22a2\u22ac\u22a3\u22a4\u22a5\u22a6\u22a7\u22a8\u22ad\u22a9\u22ae\u22aa\u22ab\u22af\u22b0\u22b1\u22b2\u22ea\u22b3\u22eb\u22b4\u22ec\u22b5\u22ed\u22b6\u22b7\u22b8\u22b9\u22ba\u22bb\u22bc\u214b\u22bd\u22be\u22bf\u22c0\u22c1\u22c2\u22c3\u22c4\u22c5\u22c6\u22c7\u22c8\u22c9\u22ca\u22cb\u22cc\u22cd\u22ce\u22cf\u22d0\u22d1\u22d2\u22d3\u22d4\u22d5\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u22ee\u22ef\u22f0\u22f1\u22f2\u22f3\u22f4\u22f5\u22f6\u22f7\u22f8\u22f9\u22fa\u22fb\u22fc\u22fd\u22fe\u22ff\u2300\u2301\u2302\u2303\u2304\u2305\u2306\u2307\u230c\u230d\u230e\u230f\u2310\u2311\u2312\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231a\u231b\u231c\u231d\u231e\u231f\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327\u2328\u232b\u232c\u232d\u232e\u232f\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233a\u233b\u233c\u233d\u233e\u233f\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234a\u234b\u234c\u234d\u234e\u234f\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235a\u235b\u235c\u235d\u235e\u235f\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236a\u236b\u236c\u236d\u236e\u236f\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237a\u237b\u237c\u237d\u237e\u237f\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238a\u238b\u238c\u238d\u238e\u238f\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239a\u239b\u239c\u239d\u239e\u239f\u23a0\u23a1\u23a2\u23a3\u23a4\u23a5\u23a6\u23a7\u23a8\u23a9\u23aa\u23ab\u23ac\u23ad\u23ae\u23af\u23b0\u23b1\u23b2\u23b3\u23b4\u23b5\u23b6\u23b7\u23b8\u23b9\u23ba\u23bb\u23bc\u23bd\u23be\u23bf\u23c0\u23c1\u23c2\u23c3\u23c4\u23c5\u23c6\u23c7\u23c8\u23c9\u23ca\u23cb\u23cc\u23cd\u23ce\u23cf\u23d0\u23d1\u23d2\u23d3\u23d4\u23d5\u23d6\u23d7\u23d8\u23d9\u23da\u23db\u23dc\u23dd\u23de\u23df\u23e0\u23e1\u23e2\u23e3\u23e4\u23e5\u23e6\u23e7\u23e8\u23e9\u23ea\u23eb\u23ec\u23ed\u23ee\u23ef\u23f0\u23f1\u23f2\u23f3\u23f4\u23f5\u23f6\u23f7\u23f8\u23f9\u23fa\u23fb\u23fc\u23fd\u23fe\u23ff\u2400\u2401\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409\u240a\u240b\u240c\u240d\u240e\u240f\u2410\u2411\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419\u241a\u241b\u241c\u241d\u241e\u241f\u2420\u2421\u2422\u2423\u2424\u2425\u2426\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447\u2448\u2449\u244a\u2500\u2501\u2502\uffe8\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250a\u250b\u250c\u250d\u250e\u250f\u2510\u2511\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251a\u251b\u251c\u251d\u251e\u251f\u2520\u2521\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529\u252a\u252b\u252c\u252d\u252e\u252f\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539\u253a\u253b\u253c\u253d\u253e\u253f\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\u254b\u254c\u254d\u254e\u254f\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255a\u255b\u255c\u255d\u255e\u255f\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256a\u256b\u256c\u256d\u256e\u256f\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u2577\u2578\u2579\u257a\u257b\u257c\u257d\u257e\u257f\u2580\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u2589\u258a\u258b\u258c\u258d\u258e\u258f\u2590\u2591\u2592\u2593\u2594\u2595\u2596\u2597\u2598\u2599\u259a\u259b\u259c\u259d\u259e\u259f\u25a0\uffed\u25a1\u25a2\u25a3\u25a4\u25a5\u25a6\u25a7\u25a8\u25a9\u25aa\u25ab\u25ac\u25ad\u25ae\u25af\u25b0\u25b1\u25b2\u25b3\u25b4\u25b5\u25b6\u25b7\u25b8\u25b9\u25ba\u25bb\u25bc\u25bd\u25be\u25bf\u25c0\u25c1\u25c2\u25c3\u25c4\u25c5\u25c6\u25c7\u25c8\u25c9\u25ca\u25cb\uffee\u25cc\u25cd\u25ce\u25cf\u25d0\u25d1\u25d2\u25d3\u25d4\u25d5\u25d6\u25d7\u25d8\u25d9\u25da\u25db\u25dc\u25dd\u25de\u25df\u25e0\u25e1\u25e2\u25e3\u25e4\u25e5\u25e6\u25e7\u25e8\u25e9\u25ea\u25eb\u25ec\u25ed\u25ee\u25ef\u25f0\u25f1\u25f2\u25f3\u25f4\u25f5\u25f6\u25f7\u25f8\u25f9\u25fa\u25fb\u25fc\u25fd\u25fe\u25ff\u2600\u2601\u2602\u2603\u2604\u2605\u2606\u2607\u2608\u2609\u260a\u260b\u260c\u260d\u260e\u260f\u2610\u2611\u2612\u2613\u2614\u2615\u2616\u2617\u2618\u2619\u261a\u261b\u261c\u261d\u261e\u261f\u2620\u2621\u2622\u2623\u2624\u2625\u2626\u2627\u2628\u2629\u262a\u262b\u262c\u262d\u262e\u262f\u2638\u2639\u263a\u263b\u263c\u263d\u263e\u263f\u2640\u2641\u2642\u2643\u2644\u2645\u2646\u2647\u2648\u2649\u264a\u264b\u264c\u264d\u264e\u264f\u2650\u2651\u2652\u2653\u2654\u2655\u2656\u2657\u2658\u2659\u265a\u265b\u265c\u265d\u265e\u265f\u2660\u2661\u2662\u2663\u2664\u2665\u2666\u2667\u2668\u2669\u266a\u266b\u266c\u2670\u2671\u2672\u2673\u2674\u2675\u2676\u2677\u2678\u2679\u267a\u267b\u267c\u267d\u267e\u267f\u2680\u2681\u2682\u2683\u2684\u2685\u2686\u2687\u2688\u2689\u2690\u2691\u2692\u2693\u2694\u2695\u2696\u2697\u2698\u2699\u269a\u269b\u269c\u269d\u269e\u269f\u26a0\u26a1\u26a2\u26a3\u26a4\u26a5\u26a6\u26a7\u26a8\u26a9\u26aa\u26ab\u26ac\u26ad\u26ae\u26af\u26b0\u26b1\u26b2\u26b3\u26b4\u26b5\u26b6\u26b7\u26b8\u26b9\u26ba\u26bb\u26bc\u26bd\u26be\u26bf\u26c0\u26c1\u26c2\u26c3\u26c4\u26c5\u26c6\u26c7\u26c8\u26c9\u26ca\u26cb\u26cc\u26cd\u26ce\u26cf\u26d0\u26d1\u26d2\u26d3\u26d4\u26d5\u26d6\u26d7\u26d8\u26d9\u26da\u26db\u26dc\u26dd\u26de\u26df\u26e0\u26e1\u26e2\u26e3\u26e4\u26e5\u26e6\u26e7\u26e8\u26e9\u26ea\u26eb\u26ec\u26ed\u26ee\u26ef\u26f0\u26f1\u26f2\u26f3\u26f4\u26f5\u26f6\u26f7\u26f8\u26f9\u26fa\u26fb\u26fc\u26fd\u26fe\u26ff\u2700\u2701\u2702\u2703\u2704\u2705\u2706\u2707\u2708\u2709\u270a\u270b\u270c\u270d\u270e\u270f\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717\u2718\u2719\u271a\u271b\u271c\u271d\u271e\u271f\u2720\u2e50\u2e51\u2721\u2722\u2723\u2724\u2725\u2726\u2727\u2728\u2729\u272a\u272b\u272c\u272d\u272e\u272f\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739\u273a\u273b\u273c\u273d\u273e\u273f\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747\u2748\u2749\u274a\u274b\u274c\u274d\u274e\u274f\u2750\u2751\u2752\u2753\u2754\u2755\u2756\u2757\u2758\u2759\u275a\u275b\u275c\u275d\u275e\u275f\u2760\u2761\u2762\u2763\u2764\u2765\u2766\u2767\u2794\u2795\u2796\u2797\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b0\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27bf\u27c0\u27c1\u27c2\u27c3\u27c4\u27c7\u27c8\u27c9\u27ca\u27cb\u27cc\u27cd\u27ce\u27cf\u27d0\u27d1\u27d2\u27d3\u27d4\u27d5\u27d6\u27d7\u27d8\u27d9\u27da\u27db\u27dc\u27dd\u27de\u27df\u27e0\u27e1\u27e2\u27e3\u27e4\u27e5\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292b\u292c\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u297c\u297d\u297e\u297f\u2980\u2981\u2982\u2999\u299a\u299b\u299c\u299d\u299e\u299f\u29a0\u29a1\u29a2\u29a3\u29a4\u29a5\u29a6\u29a7\u29a8\u29a9\u29aa\u29ab\u29ac\u29ad\u29ae\u29af\u29b0\u29b1\u29b2\u29b3\u29b4\u29b5\u29b6\u29b7\u29b8\u29b9\u29ba\u29bb\u29bc\u29bd\u29be\u29bf\u29c0\u29c1\u29c2\u29c3\u29c4\u29c5\u29c6\u29c7\u29c8\u29c9\u29ca\u29cb\u29cc\u29cd\u29ce\u29cf\u29d0\u29d1\u29d2\u29d3\u29d4\u29d5\u29d6\u29d7\u29dc\u29dd\u29de\u29df\u29e0\u29e1\u29e2\u29e3\u29e4\u29e5\u29e6\u29e7\u29e8\u29e9\u29ea\u29eb\u29ec\u29ed\u29ee\u29ef\u29f0\u29f1\u29f2\u29f3\u29f4\u29f5\u29f6\u29f7\u29f8\u29f9\u29fa\u29fb\u29fe\u29ff\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c\u2a1d\u2a1e\u2a1f\u2a20\u2a21\u2a22\u2a23\u2a24\u2a25\u2a26\u2a27\u2a28\u2a29\u2a2a\u2a2b\u2a2c\u2a2d\u2a2e\u2a2f\u2a30\u2a31\u2a32\u2a33\u2a34\u2a35\u2a36\u2a37\u2a38\u2a39\u2a3a\u2a3b\u2a3c\u2a3d\u2a3e\u2a3f\u2a40\u2a41\u2a42\u2a43\u2a44\u2a45\u2a46\u2a47\u2a48\u2a49\u2a4a\u2a4b\u2a4c\u2a4d\u2a4e\u2a4f\u2a50\u2a51\u2a52\u2a53\u2a54\u2a55\u2a56\u2a57\u2a58\u2a59\u2a5a\u2a5b\u2a5c\u2a5d\u2a5e\u2a5f\u2a60\u2a61\u2a62\u2a63\u2a64\u2a65\u2a66\u2a67\u2a68\u2a69\u2a6a\u2a6b\u2a6c\u2a6d\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a77\u2a78\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2abd\u2abe\u2abf\u2ac0\u2ac1\u2ac2\u2ac3\u2ac4\u2ac5\u2ac6\u2ac7\u2ac8\u2ac9\u2aca\u2acb\u2acc\u2acd\u2ace\u2acf\u2ad0\u2ad1\u2ad2\u2ad3\u2ad4\u2ad5\u2ad6\u2ad7\u2ad8\u2ad9\u2ada\u2adb\u2add\u2adc\u2ade\u2adf\u2ae0\u2ae1\u2ae2\u2ae3\u2ae4\u2ae5\u2ae6\u2ae7\u2ae8\u2ae9\u2aea\u2aeb\u2aec\u2aed\u2aee\u2aef\u2af0\u2af1\u2af2\u2af3\u2af4\u2af5\u2af6\u2af7\u2af8\u2af9\u2afa\u2afb\u2afc\u2afd\u2afe\u2aff\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b12\u2b13\u2b14\u2b15\u2b16\u2b17\u2b18\u2b19\u2b1a\u2b1b\u2b1c\u2b1d\u2b1e\u2b1f\u2b20\u2b21\u2b22\u2b23\u2b24\u2b25\u2b26\u2b27\u2b28\u2b29\u2b2a\u2b2b\u2b2c\u2b2d\u2b2e\u2b2f\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\u2b4d\u2b4e\u2b4f\u2b50\u2b51\u2b52\u2b53\u2b54\u2b55\u2b56\u2b57\u2b58\u2b59\u2b5a\u2b5b\u2b5c\u2b5d\u2b5e\u2b5f\u2b60\u2b61\u2b62\u2b63\u2b64\u2b65\u2b66\u2b67\u2b68\u2b69\u2b6a\u2b6b\u2b6c\u2b6d\u2b6e\u2b6f\u2b70\u2b71\u2b72\u2b73\u2b76\u2b77\u2b78\u2b79\u2b7a\u2b7b\u2b7c\u2b7d\u2b7e\u2b7f\u2b80\u2b81\u2b82\u2b83\u2b84\u2b85\u2b86\u2b87\u2b88\u2b89\u2b8a\u2b8b\u2b8c\u2b8d\u2b8e\u2b8f\u2b90\u2b91\u2b92\u2b93\u2b94\u2b95\u2b97\u2b98\u2b99\u2b9a\u2b9b\u2b9c\u2b9d\u2b9e\u2b9f\u2ba0\u2ba1\u2ba2\u2ba3\u2ba4\u2ba5\u2ba6\u2ba7\u2ba8\u2ba9\u2baa\u2bab\u2bac\u2bad\u2bae\u2baf\u2bb0\u2bb1\u2bb2\u2bb3\u2bb4\u2bb5\u2bb6\u2bb7\u2bb8\u2bb9\u2bba\u2bbb\u2bbc\u2bbd\u2bbe\u2bbf\u2bc0\u2bc1\u2bc2\u2bc3\u2bc4\u2bc5\u2bc6\u2bc7\u2bc8\u2bc9\u2bca\u2bcb\u2bcc\u2bcd\u2bce\u2bcf\u2bd0\u2bd1\u2bd2\u2bd3\u2bd4\u2bd5\u2bd6\u2bd7\u2bd8\u2bd9\u2bda\u2bdb\u2bdc\u2bdd\u2bde\u2bdf\u2be0\u2be1\u2be2\u2be3\u2be4\u2be5\u2be6\u2be7\u2be8\u2be9\u2bea\u2beb\u2bec\u2bed\u2bee\u2bef\u2bf0\u2bf1\u2bf2\u2bf3\u2bf4\u2bf5\u2bf6\u2bf7\u2bf8\u2bf9\u2bfa\u2bfb\u2bfc\u2bfd\u2bfe\u2bff\u2ce5\u2ce6\u2ce7\u2ce8\u2ce9\u2cea\u2800\u2801\u2802\u2803\u2804\u2805\u2806\u2807\u2808\u2809\u280a\u280b\u280c\u280d\u280e\u280f\u2810\u2811\u2812\u2813\u2814\u2815\u2816\u2817\u2818\u2819\u281a\u281b\u281c\u281d\u281e\u281f\u2820\u2821\u2822\u2823\u2824\u2825\u2826\u2827\u2828\u2829\u282a\u282b\u282c\u282d\u282e\u282f\u2830\u2831\u2832\u2833\u2834\u2835\u2836\u2837\u2838\u2839\u283a\u283b\u283c\u283d\u283e\u283f\u2840\u2841\u2842\u2843\u2844\u2845\u2846\u2847\u2848\u2849\u284a\u284b\u284c\u284d\u284e\u284f\u2850\u2851\u2852\u2853\u2854\u2855\u2856\u2857\u2858\u2859\u285a\u285b\u285c\u285d\u285e\u285f\u2860\u2861\u2862\u2863\u2864\u2865\u2866\u2867\u2868\u2869\u286a\u286b\u286c\u286d\u286e\u286f\u2870\u2871\u2872\u2873\u2874\u2875\u2876\u2877\u2878\u2879\u287a\u287b\u287c\u287d\u287e\u287f\u2880\u2881\u2882\u2883\u2884\u2885\u2886\u2887\u2888\u2889\u288a\u288b\u288c\u288d\u288e\u288f\u2890\u2891\u2892\u2893\u2894\u2895\u2896\u2897\u2898\u2899\u289a\u289b\u289c\u289d\u289e\u289f\u28a0\u28a1\u28a2\u28a3\u28a4\u28a5\u28a6\u28a7\u28a8\u28a9\u28aa\u28ab\u28ac\u28ad\u28ae\u28af\u28b0\u28b1\u28b2\u28b3\u28b4\u28b5\u28b6\u28b7\u28b8\u28b9\u28ba\u28bb\u28bc\u28bd\u28be\u28bf\u28c0\u28c1\u28c2\u28c3\u28c4\u28c5\u28c6\u28c7\u28c8\u28c9\u28ca\u28cb\u28cc\u28cd\u28ce\u28cf\u28d0\u28d1\u28d2\u28d3\u28d4\u28d5\u28d6\u28d7\u28d8\u28d9\u28da\u28db\u28dc\u28dd\u28de\u28df\u28e0\u28e1\u28e2\u28e3\u28e4\u28e5\u28e6\u28e7\u28e8\u28e9\u28ea\u28eb\u28ec\u28ed\u28ee\u28ef\u28f0\u28f1\u28f2\u28f3\u28f4\u28f5\u28f6\u28f7\u28f8\u28f9\u28fa\u28fb\u28fc\u28fd\u28fe\u28ff\u268a\u268b\u268c\u268d\u268e\u268f\u2630\u2631\u2632\u2633\u2634\u2635\u2636\u2637\u4dc0\u4dc1\u4dc2\u4dc3\u4dc4\u4dc5\u4dc6\u4dc7\u4dc8\u4dc9\u4dca\u4dcb\u4dcc\u4dcd\u4dce\u4dcf\u4dd0\u4dd1\u4dd2\u4dd3\u4dd4\u4dd5\u4dd6\u4dd7\u4dd8\u4dd9\u4dda\u4ddb\u4ddc\u4ddd\u4dde\u4ddf\u4de0\u4de1\u4de2\u4de3\u4de4\u4de5\u4de6\u4de7\u4de8\u4de9\u4dea\u4deb\u4dec\u4ded\u4dee\u4def\u4df0\u4df1\u4df2\u4df3\u4df4\u4df5\u4df6\u4df7\u4df8\u4df9\u4dfa\u4dfb\u4dfc\u4dfd\u4dfe\u4dff\ua490\ua491\ua492\ua493\ua494\ua495\ua496\ua497\ua498\ua499\ua49a\ua49b\ua49c\ua49d\ua49e\ua49f\ua4a0\ua4a1\ua4a2\ua4a3\ua4a4\ua4a5\ua4a6\ua4a7\ua4a8\ua4a9\ua4aa\ua4ab\ua4ac\ua4ad\ua4ae\ua4af\ua4b0\ua4b1\ua4b2\ua4b3\ua4b4\ua4b5\ua4b6\ua4b7\ua4b8\ua4b9\ua4ba\ua4bb\ua4bc\ua4bd\ua4be\ua4bf\ua4c0\ua4c1\ua4c2\ua4c3\ua4c4\ua4c5\ua4c6\u266d\u266e\u266f\u2ff0\u2ff1\u2ff2\u2ff3\u2ff4\u2ff5\u2ff6\u2ff7\u2ff8\u2ff9\u2ffa\u2ffb\u31c0\u31c1\u31c2\u31c3\u31c4\u31c5\u31c6\u31c7\u31c8\u31c9\u31ca\u31cb\u31cc\u31cd\u31ce\u31cf\u31d0\u31d1\u31d2\u31d3\u31d4\u31d5\u31d6\u31d7\u31d8\u31d9\u31da\u31db\u31dc\u31dd\u31de\u31df\u31e0\u31e1\u31e2\u31e3\u3004\u3012\u3036\u3013\u3020\u3037\u303e\u303f\u3190\u3191\u327f\ufffc\u09f4\u09f5\u09f6\u09f7\u09f8\u09f9\u0b72\u0b73\u0b74\u0b75\u0b76\u0b77\ua830\ua831\ua832\ua833\ua834\ua835\u0bf0\u0bf1\u0bf2\u0d58\u0d59\u0d5a\u0d5b\u0d5c\u0d5d\u0d5e\u0d70\u0d71\u0d72\u0d73\u0d74\u0d75\u0d76\u0d77\u0d78\u1372\u1373\u1374\u1375\u1376\u1377\u1378\u1379\u137a\u137b\u137c\u2180\u2181\u2182\u2186\u2187\u2188\u2cfd\u02d0\u02d1\u0971\u0e46\u0ec6\u17d7\u1aa7\ua9cf\ua9e6\uaa70\uaadd\uaaf3\uaaf4\u3005\u303b\u3031\u3032\u3033\u3034\u3035\u309d\u309e\u30fc\uff70\u30fd\u30fe\u00a4\u00a2\uffe0\$\uff04\ufe69\u00a3\uffe1\u00a5\uffe5\u058f\u060b\u07fe\u07ff\u09f2\u09f3\u09fb\u0af1\ua838\u0bf9\u0e3f\u17db\u20a0\u20a1\u20a2\u20a3\u20a4\u20a5\u20a6\u20a7\u20a9\uffe6\u20aa\u20ab\u20ac\u20ad\u20ae\u20af\u20b0\u20b1\u20b2\u20b3\u20b4\u20b5\u20b6\u20b7\u20b8\u20b9\u20ba\u20bb\u20bc\u20bd\u20be\u20bf\u0030\u0660\u06f0\u07c0\u0966\u09e6\u0a66\u0ae6\u0b66\u0be6\u0c66\u0c78\u0ce6\u0d66\u0de6\u0e50\u0ed0\u0f20\u1040\u1090\u17e0\u17f0\u1810\u1946\u19d0\u1a80\u1a90\u1b50\u1bb0\u1c40\u1c50\u3007\ua620\ua8d0\ua900\ua9d0\ua9f0\uaa50\uabf0\uff10\u0f33\u24ea\u24ff\u2070\u2080\u2189\u3358\u0031\u0661\u06f1\u07c1\u0967\u09e7\u0a67\u0ae7\u0b67\u0be7\u0c67\u0c79\u0c7c\u0ce7\u0d67\u0de7\u0e51\u0ed1\u0f21\u1041\u1091\u1369\u17e1\u17f1\u1811\u1947\u19d1\u19da\u1a81\u1a91\u1b51\u1bb1\u1c41\u1c51\u3021\ua621\ua8d1\ua901\ua9d1\ua9f1\uaa51\uabf1\uff11\u0f2a\u2460\u24f5\u2776\u2780\u278a\u00b9\u2081\u2488\u215f\u2152\u00bd\u2153\u00bc\u2155\u2159\u2150\u215b\u2151\u2469\u24fe\u277f\u2789\u2793\u3248\u2491\u33e9\u32c9\u3362\u246a\u24eb\u2492\u33ea\u32ca\u3363\u246b\u24ec\u2493\u33eb\u32cb\u3364\u246c\u24ed\u2494\u33ec\u3365\u246d\u24ee\u2495\u33ed\u3366\u246e\u24ef\u2496\u33ee\u3367\u246f\u24f0\u2497\u33ef\u3368\u2470\u24f1\u2498\u33f0\u3369\u2471\u24f2\u2499\u33f1\u336a\u2472\u24f3\u249a\u33f2\u336b\u33e0\u32c0\u3359\u0032\u0662\u06f2\u07c2\u0968\u09e8\u0a68\u0ae8\u0b68\u0be8\u0c68\u0c7a\u0c7d\u0ce8\u0d68\u0de8\u0e52\u0ed2\u0f22\u1042\u1092\u136a\u17e2\u17f2\u1812\u1948\u19d2\u1a82\u1a92\u1b52\u1bb2\u1c42\u1c52\u3022\ua622\ua8d2\ua902\ua9d2\ua9f2\uaa52\uabf2\uff12\u0f2b\u2461\u24f6\u2777\u2781\u278b\u00b2\u2082\u2489\u2154\u2156\u2473\u24f4\u3249\u249b\u33f3\u336c\u3251\u33f4\u336d\u3252\u33f5\u336e\u3253\u33f6\u336f\u3254\u33f7\u3370\u3255\u33f8\u3256\u33f9\u3257\u33fa\u3258\u33fb\u3259\u33fc\u33e1\u32c1\u335a\u0033\u0663\u06f3\u07c3\u0969\u09e9\u0a69\u0ae9\u0b69\u0be9\u0c69\u0c7b\u0c7e\u0ce9\u0d69\u0de9\u0e53\u0ed3\u0f23\u1043\u1093\u136b\u17e3\u17f3\u1813\u1949\u19d3\u1a83\u1a93\u1b53\u1bb3\u1c43\u1c53\u3023\ua623\ua8d3\ua903\ua9d3\ua9f3\uaa53\uabf3\uff13\u0f2c\u2462\u24f7\u2778\u2782\u278c\u00b3\u2083\u248a\u00be\u2157\u215c\u324a\u325a\u33fd\u325b\u33fe\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u33e2\u32c2\u335b\u0034\u0664\u06f4\u07c4\u096a\u09ea\u0a6a\u0aea\u0b6a\u0bea\u0c6a\u0cea\u0d6a\u0dea\u0e54\u0ed4\u0f24\u1044\u1094\u136c\u17e4\u17f4\u1814\u194a\u19d4\u1a84\u1a94\u1b54\u1bb4\u1c44\u1c54\u3024\ua624\ua8d4\ua904\ua9d4\ua9f4\uaa54\uabf4\uff14\u0f2d\u2463\u24f8\u2779\u2783\u278d\u2074\u2084\u248b\u2158\u324b\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u33e3\u32c3\u335c\u0035\u0665\u06f5\u07c5\u096b\u09eb\u0a6b\u0aeb\u0b6b\u0beb\u0c6b\u0ceb\u0d6b\u0deb\u0e55\u0ed5\u0f25\u1045\u1095\u136d\u17e5\u17f5\u1815\u194b\u19d5\u1a85\u1a95\u1b55\u1bb5\u1c45\u1c55\u3025\ua625\ua8d5\ua905\ua9d5\ua9f5\uaa55\uabf5\uff15\u0f2e\u2464\u24f9\u277a\u2784\u278e\u2075\u2085\u248c\u215a\u215d\u324c\u32bf\u33e4\u32c4\u335d\u0036\u0666\u06f6\u07c6\u096c\u09ec\u0a6c\u0aec\u0b6c\u0bec\u0c6c\u0cec\u0d6c\u0dec\u0e56\u0ed6\u0f26\u1046\u1096\u136e\u17e6\u17f6\u1816\u194c\u19d6\u1a86\u1a96\u1b56\u1bb6\u1c46\u1c56\u2185\u3026\ua626\ua8d6\ua906\ua9d6\ua9f6\uaa56\uabf6\uff16\u0f2f\u2465\u24fa\u277b\u2785\u278f\u2076\u2086\u248d\u324d\u33e5\u32c5\u335e\u0037\u0667\u06f7\u07c7\u096d\u09ed\u0a6d\u0aed\u0b6d\u0bed\u0c6d\u0ced\u0d6d\u0ded\u0e57\u0ed7\u0f27\u1047\u1097\u136f\u17e7\u17f7\u1817\u194d\u19d7\u1a87\u1a97\u1b57\u1bb7\u1c47\u1c57\u3027\ua627\ua8d7\ua907\ua9d7\ua9f7\uaa57\uabf7\uff17\u0f30\u2466\u24fb\u277c\u2786\u2790\u2077\u2087\u248e\u215e\u324e\u33e6\u32c6\u335f\u0038\u0668\u06f8\u07c8\u096e\u09ee\u0a6e\u0aee\u0b6e\u0bee\u0c6e\u0cee\u0d6e\u0dee\u0e58\u0ed8\u0f28\u1048\u1098\u1370\u17e8\u17f8\u1818\u194e\u19d8\u1a88\u1a98\u1b58\u1bb8\u1c48\u1c58\u3028\ua628\ua8d8\ua908\ua9d8\ua9f8\uaa58\uabf8\uff18\u0f31\u2467\u24fc\u277d\u2787\u2791\u2078\u2088\u248f\u324f\u33e7\u32c7\u3360\u0039\u0669\u06f9\u07c9\u096f\u09ef\u0a6f\u0aef\u0b6f\u0bef\u0c6f\u0cef\u0d6f\u0def\u0e59\u0ed9\u0f29\u1049\u1099\u1371\u17e9\u17f9\u1819\u194f\u19d9\u1a89\u1a99\u1b59\u1bb9\u1c49\u1c59\u3029\ua629\ua8d9\ua909\ua9d9\ua9f9\uaa59\uabf9\uff19\u0f32\u2468\u24fd\u277e\u2788\u2792\u2079\u2089\u2490\u33e8\u32c8\u3361\u0061\uff41\u0363\u24d0\u0041\uff21\u24b6\u00aa\u1d43\u2090\u1d2c\u00e1\u00c1\u00e0\u00c0\u0103\u0102\u00e2\u00c2\u01ce\u01cd\u00e5\u00c5\u212b\u00e4\u1df2\ua79b\u00c4\ua79a\u00e3\u00c3\u0227\u0226\u0105\u0104\u0101\u0100\u1ea3\u1ea2\u0201\u0200\u0203\u0202\u1ea1\u1ea0\u1e01\u1e00\u1dd3\u1eaf\u1eae\u1eb1\u1eb0\u1eb5\u1eb4\u1eb3\u1eb2\u1ea5\u1ea4\u1ea7\u1ea6\u1eab\u1eaa\u1ea9\u1ea8\u01fb\u01fa\u01df\u01de\u01e1\u01e0\u1eb7\u1eb6\u1ead\u1eac\u00e6\u1dd4\u00c6\u1d2d\u01fd\u01fc\u01e3\u01e2\ua73b\ua73a\u33c2\u2100\u2101\u214d\u33df\ua733\ua732\u1dd5\ua735\ua734\ua737\ua736\u3373\u1dd6\ua739\ua738\ua73d\ua73c\u1e9a\u1d00\u2c65\u023a\u1d8f\ua7bb\ua7ba\u1d01\u1d02\u1d46\uab31\u0250\u2c6f\u1d44\u0251\u1de7\u2c6d\u1d45\uab30\u1d90\u0252\u2c70\u1d9b\uab64\u0062\uff42\u1de8\u24d1\u0042\uff22\u212c\u24b7\u1d47\u1d2e\u1e03\u1e02\u1e05\u1e04\u1e07\u1e06\u3374\u33c3\u0299\u0180\u0243\u1d2f\u1d03\u1d6c\ua797\ua796\u1d80\u0253\u0181\u0183\u0182\ua7b5\u1de9\ua7b4\u0063\uff43\u0368\u217d\u24d2\u0043\uff23\u216d\u2102\u212d\u24b8\u1d9c\u0107\u0106\u0109\u0108\u010d\u010c\u010b\u010a\u00e7\u1dd7\u00c7\u1e09\u1e08\u2105\u2106\u33c6\u3388\u33c4\u33c5\u339d\u33a0\u33a4\u33c7\u1d04\u023c\u023b\ua793\ua792\ua794\ua7c4\u0188\u0187\u0255\u1d9d\u2184\u2183\ua73f\ua73e\u0064\uff44\u0369\u217e\u2146\u24d3\u0044\uff24\u216e\u2145\u24b9\u1d48\u1d30\u010f\u010e\u1e0b\u1e0a\u1e11\u1e10\u0111\u0110\u1e0d\u1e0c\u1e13\u1e12\u1e0f\u1e0e\u00f0\u1dd9\u00d0\u1d9e\u1dd8\ua77a\ua779\u3372\u0238\u33c8\u3397\u3377\u3378\u3379\u01f3\u02a3\u01f2\u01f1\u01c6\u01c5\u01c4\uab66\u02a5\u02a4\u1d05\u1d06\ua7c8\ua7c7\u1d6d\u1d81\u0256\u0189\u0257\u018a\u1d91\u018c\u018b\u0221\ua771\u1e9f\u0065\uff45\u0364\u212f\u2147\u24d4\u0045\uff25\u2130\u24ba\u1d49\u2091\u1d31\u00e9\u00c9\u00e8\u00c8\u0115\u0114\u00ea\u00ca\u011b\u011a\u00eb\u00cb\u1ebd\u1ebc\u0117\u0116\u0229\u0228\u0119\u0118\u0113\u0112\u1ebb\u1eba\u0205\u0204\u0207\u0206\u1eb9\u1eb8\u1e19\u1e18\u1e1b\u1e1a\u1ebf\u1ebe\u1ec1\u1ec0\u1ec5\u1ec4\u1ec3\u1ec2\u1e1d\u1e1c\u1e17\u1e16\u1e15\u1e14\u1ec7\u1ec6\u32cd\u32ce\u1d07\uab32\uab33\u0247\u0246\u1d92\uab34\u2c78\u01dd\u018e\u1d32\u2c7b\u0259\u1dea\u018f\u1d4a\u2094\u1d95\u025b\u0190\u2107\u1d4b\u1d93\u0258\u025a\u025c\ua7ab\u1d9f\u1d94\u1d08\u1d4c\u025d\u025e\u029a\u0264\u0066\uff46\u1deb\u24d5\u0046\uff26\u2131\u24bb\u1da0\u1e1f\u1e1e\ua77c\ua77b\u213b\ufb00\ufb03\ufb04\ufb01\ufb02\u3399\u02a9\ua730\uab35\ua799\ua798\u1d6e\u1d82\u0192\u0191\u214e\u2132\ua7fb\u0067\uff47\u1dda\u210a\u24d6\u0047\uff27\u24bc\u1d4d\u1d33\u01f5\u01f4\u011f\u011e\u011d\u011c\u01e7\u01e6\u0121\u0120\u0123\u0122\u1e21\u1e20\ua7a1\ua7a0\u1d79\ua77d\u33ff\u3387\u3393\u33ac\u33c9\u0261\ua7ac\u1da2\uab36\u0262\u1ddb\u01e5\u01e4\u1d83\u0260\u0193\u029b\u1d77\ua77f\ua77e\u0263\u0194\u02e0\u01a3\u01a2\u0068\uff48\u036a\u210e\u24d7\u0048\uff28\u210b\u210c\u210d\u24bd\u02b0\u2095\u1d34\u0125\u0124\u021f\u021e\u1e27\u1e26\u1e23\u1e22\u1e29\u1e28\u0127\u210f\u0126\ua7f8\u1e25\u1e24\u1e2b\u1e2a\u1e96\u33ca\u32cc\u33cb\u3371\u3390\u029c\u0195\u01f6\ua795\u0266\ua7aa\u02b1\u2c68\u2c67\u2c76\u2c75\ua7f6\ua7f5\ua727\ua726\uab5c\u0267\u02bb\u02bd\u0069\uff49\u0365\u2170\u2139\u2148\u24d8\u0049\uff29\u2160\u2110\u2111\u24be\u2071\u1d62\u1d35\u00ed\u00cd\u00ec\u00cc\u012d\u012c\u00ee\u00ce\u01d0\u01cf\u00ef\u00cf\u0129\u0128\u0130\u012f\u012e\u012b\u012a\u1ec9\u1ec8\u0209\u0208\u020b\u020a\u1ecb\u1eca\u1e2d\u1e2c\u1e2f\u1e2e\u2171\u2161\u2172\u2162\u0133\u0132\u33cc\u337a\u2173\u2163\u2178\u2168\u0131\u026a\ua7ae\u1da6\ua7fe\ua7f7\u1d09\u1d4e\u0268\u0197\u1da4\u1d7b\u1da7\u1d96\ua7bd\ua7bc\u0269\u0196\u1da5\u1d7c\u006a\uff4a\u2149\u24d9\u004a\uff2a\u24bf\u02b2\u2c7c\u1d36\u0135\u0134\u01f0\u0237\u1d0a\u0249\u0248\u029d\ua7b2\u1da8\u025f\u1da1\u0284\u006b\uff4b\u1ddc\u24da\u004b\u212a\uff2b\u24c0\u1d4f\u2096\u1d37\u1e31\u1e30\u01e9\u01e8\u0137\u0136\ua7a3\ua7a2\u1e33\u1e32\u1e35\u1e34\u3384\u3385\u3389\u338f\u3391\u33cd\u3398\u339e\u33ce\u33a2\u33a6\u33aa\u33cf\u33b8\u33be\u33c0\u1d0b\u1d84\u0199\u0198\u2c6a\u2c69\ua741\ua740\ua743\ua742\ua745\ua744\u029e\ua7b0\u006c\uff4c\u1ddd\u217c\u2113\u24db\u004c\uff2c\u216c\u2112\u24c1\u02e1\u2097\u1d38\u013a\u0139\u013e\u013d\u013c\u013b\u0142\u0141\u1e37\u1e36\u1e3d\u1e3c\u1e3b\u1e3a\u0140\u013f\u1e39\u1e38\u01c9\u01c8\u01c7\u1efb\u1efa\u33d0\u33d1\u33d2\u02aa\u32cf\u33d3\u02ab\u029f\u1dde\u1dab\ua747\ua746\u1d0c\ua749\ua748\u019a\u023d\u2c61\u2c60\u026b\u2c62\uab5e\uab38\u1dec\uab39\u026c\ua7ad\uab37\uab5d\u1d85\u1daa\u026d\u1da9\ua78e\u0234\ua772\u026e\ua781\ua780\u019b\u028e\u006d\uff4d\u036b\u217f\u24dc\u004d\uff2d\u216f\u2133\u24c2\u1d50\u2098\u1d39\u1e3f\u1e3e\u1e41\u1e40\u1e43\u1e42\u33a7\u33a8\u33a1\u33a5\u3383\u33d4\u3386\u338e\u3392\u33d5\u3396\u339c\u339f\u33a3\u33d6\u33ab\u33b3\u33b7\u33b9\u33bd\u33bf\u33c1\u1d0d\u1ddf\u1d6f\u1d86\u0271\u2c6e\u1dac\uab3a\ua7fd\ua7ff\ua773\u006e\uff4e\u1de0\u24dd\u004e\uff2e\u2115\u24c3\u207f\u2099\u1d3a\u0144\u0143\u01f9\u01f8\u0148\u0147\u00f1\u00d1\u1e45\u1e44\u0146\u0145\ua7a5\ua7a4\u1e47\u1e46\u1e4b\u1e4a\u1e49\u1e48\u3381\u338b\u01cc\u01cb\u01ca\u339a\u2116\u33b1\u33b5\u33bb\u0274\u1de1\u1db0\u1d3b\u1d0e\u1d70\u0272\u019d\u1dae\u019e\u0220\ua791\ua790\u1d87\u0273\u1daf\u0235\uab3b\ua774\u014b\u014a\u1d51\uab3c\u006f\uff4f\u0366\u2134\u24de\u004f\uff2f\u24c4\u00ba\u1d52\u2092\u1d3c\u00f3\u00d3\u00f2\u00d2\u014f\u014e\u00f4\u00d4\u01d2\u01d1\u00f6\u1df3\ua79d\u00d6\ua79c\u0151\u0150\u00f5\u00d5\u022f\u022e\u00f8\u00d8\u01eb\u01ea\u014d\u014c\u1ded\u1ecf\u1ece\u020d\u020c\u020f\u020e\u01a1\u01a0\u1ecd\u1ecc\u1ed1\u1ed0\u1ed3\u1ed2\u1ed7\u1ed6\u1ed5\u1ed4\u022b\u022a\u1e4d\u1e4c\u1e4f\u1e4e\u022d\u022c\u0231\u0230\u01ff\u01fe\u01ed\u01ec\u1e53\u1e52\u1e51\u1e50\u1edb\u1eda\u1edd\u1edc\u1ee1\u1ee0\u1edf\u1ede\u1ee3\u1ee2\u1ed9\u1ed8\u0153\u0152\ua7f9\ua74f\ua74e\u3375\u1d0f\u1d11\uab3d\u0276\u1d14\uab41\uab42\uab40\uab43\uab44\u1d13\uab3e\u0254\u0186\u1d53\u1d10\u1d12\uab3f\u1d97\uab62\ua74d\ua74c\u1d16\u1d54\u1d17\u1d55\u2c7a\u0275\u019f\u1db1\ua74b\ua74a\u0277\ua7b7\ua7b6\u0223\u0222\u1d3d\u1d15\u0070\uff50\u1dee\u24df\u0050\uff30\u2119\u24c5\u1d56\u209a\u1d3e\u1e55\u1e54\u1e57\u1e56\u33d8\u3380\u33a9\u3376\u338a\u33d7\u33d9\u33da\u33b0\u3250\u33b4\u33ba\u1d18\u1d7d\u2c63\ua751\ua750\u1d71\u1d88\u01a5\u01a4\ua753\ua752\ua755\ua754\ua7fc\u0278\u1db2\u2c77\u0071\uff51\u24e0\u0051\uff31\u211a\u24c6\u0239\ua7af\ua757\ua756\ua759\ua758\u02a0\u024b\u024a\u0138\u0072\uff52\u036c\u1dca\u24e1\u0052\uff32\u211b\u211c\u211d\u24c7\u02b3\u1d63\u1d3f\u0155\u0154\u0159\u0158\u1e59\u1e58\u0157\u0156\ua7a7\ua7a6\u0211\u0210\u0213\u0212\u1e5b\u1e5a\u1e5f\u1e5e\ua783\ua782\u1e5d\u1e5c\u33ad\u33ae\u33af\u20a8\uab45\u0280\u1de2\u01a6\uab46\ua75b\u1de3\ua75a\u1d19\u024d\u024c\u1d72\u0279\u02b4\u1d1a\u027a\u1d89\u027b\u02b5\u2c79\u027c\u027d\u2c64\uab49\u027e\u1d73\u027f\uab47\uab48\uab4a\uab4b\uab4c\u0281\u02b6\uab68\ua775\ua776\ua75d\ua75c\u0073\uff53\u1de4\u24e2\u0053\uff33\u24c8\u02e2\u209b\u015b\u015a\u015d\u015c\u0161\u0160\u1e61\u1e60\u015f\u015e\ua7a9\ua7a8\u1e63\u1e62\u0219\u0218\u017f\u1de5\ua785\ua784\u1e65\u1e64\u1e67\u1e66\u1e69\u1e68\u1e9b\u00df\u1e9e\ufb05\u2120\u33db\ufb06\u33dc\ua731\ua7ca\ua7c9\u1d74\u1d8a\u0282\ua7c5\u1db3\u023f\u2c7e\u1e9c\u1e9d\u0283\u1def\u01a9\u1db4\uab4d\u1d8b\u01aa\u0285\u1d98\u0286\u0074\uff54\u036d\u24e3\u0054\uff34\u24c9\u1d57\u209c\u1d40\u0165\u0164\u1e97\u1e6b\u1e6a\u0163\u0162\u1e6d\u1e6c\u021b\u021a\u1e71\u1e70\u1e6f\u1e6e\ua787\ua786\u1d7a\u02a8\u2121\u3394\u2122\u01be\u02a6\uab67\u02a7\ua729\ua728\u1d1b\u0167\u0166\u2c66\u023e\u1d75\u01ab\u1db5\u01ad\u01ac\u0288\u01ae\u0236\ua777\u0287\ua7b1\u0075\uff55\u0367\u24e4\u0055\uff35\u24ca\u1d58\u1d64\u1d41\u00fa\u00da\u00f9\u00d9\u016d\u016c\u00fb\u00db\u01d4\u01d3\u016f\u016e\u00fc\u1df4\ua79f\u00dc\ua79e\u0171\u0170\u0169\u0168\u0173\u0172\u016b\u016a\u1df0\u1ee7\u1ee6\u0215\u0214\u0217\u0216\u01b0\u01af\u1ee5\u1ee4\u1e73\u1e72\u1e77\u1e76\u1e75\u1e74\u01d8\u01d7\u01dc\u01db\u01da\u01d9\u01d6\u01d5\u1e79\u1e78\u1e7b\u1e7a\u1ee9\u1ee8\u1eeb\u1eea\u1eef\u1eee\u1eed\u1eec\u1ef1\u1ef0\u1d1c\u1db8\uab4e\u1d1d\u1d59\u1d1e\u1d6b\uab50\uab51\u0289\u0244\u1db6\uab4f\ua7b9\ua7b8\u1d7e\u1d99\uab52\uab5f\ua7bf\ua7be\u0265\ua78d\u1da3\u02ae\u02af\u026f\u019c\u1d5a\ua7fa\u1d1f\u0270\u1dad\u028a\u01b1\u1db7\u1d7f\u0076\uff56\u036e\u2174\u24e5\u0056\uff36\u2164\u24cb\u1d5b\u1d65\u2c7d\u1e7d\u1e7c\u1e7f\u1e7e\u33de\u2175\u2165\u2176\u2166\u2177\u2167\ua761\ua760\u1d20\ua75f\ua75e\u1d8c\u028b\u01b2\u1db9\u2c71\u2c74\u1efd\u1efc\u028c\u0245\u1dba\u0077\uff57\u1abf\u1df1\u24e6\u0057\uff37\u24cc\u02b7\u1d42\u1e83\u1e82\u1e81\u1e80\u0175\u0174\u1e98\u1e85\u1e84\u1e87\u1e86\u1e89\u1e88\u33dd\u1d21\ua7c3\ua7c2\u2c73\u2c72\u028d\u1ac0\uab69\u0078\uff58\u036f\u2179\u24e7\u0058\uff38\u2169\u24cd\u02e3\u2093\u1e8d\u1e8c\u1e8b\u1e8a\u217a\u216a\u217b\u216b\u1d8d\uab56\uab57\uab58\uab59\uab53\ua7b3\uab54\uab55\u0079\uff59\u24e8\u0059\uff39\u24ce\u02b8\u00fd\u00dd\u1ef3\u1ef2\u0177\u0176\u1e99\u00ff\u0178\u1ef9\u1ef8\u1e8f\u1e8e\u0233\u0232\u1ef7\u1ef6\u1ef5\u1ef4\u028f\u024f\u024e\u01b4\u01b3\u1eff\u1efe\uab5a\u021d\u021c\u007a\uff5a\u1de6\u24e9\u005a\uff3a\u2124\u2128\u24cf\u1dbb\u017a\u0179\u1e91\u1e90\u017e\u017d\u017c\u017b\u1e93\u1e92\u1e95\u1e94\u018d\u1d22\u01b6\u01b5\u1d76\u1d8e\ua7c6\u0225\u0224\u0290\u1dbc\u0291\u1dbd\u0240\u2c7f\u2c6c\u2c6b\ua763\ua762\u0292\u01b7\u1dbe\u01ef\u01ee\u1d23\u01b9\u01b8\u1d9a\u01ba\u0293\u00fe\u00de\ua765\ua764\ua767\ua766\u01bf\u01f7\ua769\ua768\uab60\uab61\uab63\ua76b\ua76a\ua76d\ua76c\ua76f\u1dd2\ua76e\ua770\ua778\u01bb\ua72b\ua72a\ua72d\ua72c\ua72f\ua72e\u01a8\u01a7\u01bd\u01bc\u0185\u0184\u0294\u0242\u0241\u02c0\u02bc\u0149\u02ee\u02be\ua723\ua722\ua78c\ua78b\ua78f\u0295\u02e4\u02bf\u02c1\u1d24\u1d25\u1d5c\ua725\ua724\u02a1\u02a2\u0296\u01c0\u01c1\u01c2\u01c3\u0297\u0298\u02ac\u02ad\u03b1\u0391\u1f00\u1f08\u1f01\u1f09\u03ac\u1f71\u0386\u1fbb\u1f70\u1fba\u1fb0\u1fb8\u1fb6\u1fb1\u1fb9\u1fb3\u1fbc\u1f04\u1f0c\u1f02\u1f0a\u1f06\u1f0e\u1f80\u1f88\u1f05\u1f0d\u1f03\u1f0b\u1f07\u1f0f\u1f81\u1f89\u1fb4\u1fb2\u1fb7\u1f84\u1f8c\u1f82\u1f8a\u1f86\u1f8e\u1f85\u1f8d\u1f83\u1f8b\u1f87\u1f8f\u03b2\u03d0\u0392\u1d5d\u1d66\u03b3\u213d\u0393\u213e\u1d5e\u1d67\u1d26\u03b4\u0394\u1d5f\u03b5\u03f5\u0395\u1f10\u1f18\u1f11\u1f19\u03ad\u1f73\u0388\u1fc9\u1f72\u1fc8\u1f14\u1f1c\u1f12\u1f1a\u1f15\u1f1d\u1f13\u1f1b\u03dd\u03dc\u0377\u0376\u03db\u03da\u03b6\u0396\u0371\u0370\u03b7\u0397\u1f20\u1f28\u1f21\u1f29\u03ae\u1f75\u0389\u1fcb\u1f74\u1fca\u1fc6\u1fc3\u1fcc\u1f24\u1f2c\u1f22\u1f2a\u1f26\u1f2e\u1f90\u1f98\u1f25\u1f2d\u1f23\u1f2b\u1f27\u1f2f\u1f91\u1f99\u1fc4\u1fc2\u1fc7\u1f94\u1f9c\u1f92\u1f9a\u1f96\u1f9e\u1f95\u1f9d\u1f93\u1f9b\u1f97\u1f9f\u03b8\u03d1\u0398\u03f4\u1dbf\u03b9\u1fbe\u037a\u0399\u1f30\u1f38\u1f31\u1f39\u03af\u1f77\u038a\u1fdb\u1f76\u1fda\u1fd0\u1fd8\u1fd6\u03ca\u03aa\u1fd1\u1fd9\u1f34\u1f3c\u1f32\u1f3a\u1f36\u1f3e\u1f35\u1f3d\u1f33\u1f3b\u1f37\u1f3f\u0390\u1fd3\u1fd2\u1fd7\u03f3\u037f\u03ba\u03f0\u039a\u03d7\u03cf\u03bb\u039b\u1d27\u03bc\u00b5\u039c\u3382\u338c\u338d\u3395\u339b\u33b2\u33b6\u33bc\u03bd\u039d\u03be\u039e\u03bf\u039f\u1f40\u1f48\u1f41\u1f49\u03cc\u1f79\u038c\u1ff9\u1f78\u1ff8\u1f44\u1f4c\u1f42\u1f4a\u1f45\u1f4d\u1f43\u1f4b\u03c0\u03d6\u213c\u03a0\u213f\u1d28\u03fb\u03fa\u03df\u03de\u03d9\u03d8\u03c1\u03f1\u03a1\u1d68\u1fe4\u1fe5\u1fec\u1d29\u03fc\u03c3\u03f2\u03a3\u03f9\u03c2\u037c\u03fe\u037b\u03fd\u037d\u03ff\u03c4\u03a4\u03c5\u03a5\u03d2\u1f50\u1f51\u1f59\u03cd\u1f7b\u038e\u1feb\u03d3\u1f7a\u1fea\u1fe0\u1fe8\u1fe6\u03cb\u03ab\u03d4\u1fe1\u1fe9\u1f54\u1f52\u1f56\u1f55\u1f5d\u1f53\u1f5b\u1f57\u1f5f\u03b0\u1fe3\u1fe2\u1fe7\u03c6\u03d5\u03a6\u1d60\u1d69\u03c7\u03a7\u1d61\u1d6a\u03c8\u03a8\u1d2a\u03c9\u03a9\u2126\u1f60\u1f68\u1f61\u1f69\u03ce\u1f7d\u038f\u1ffb\u1f7c\u1ffa\u1ff6\u1ff3\u1ffc\u1f64\u1f6c\u1f62\u1f6a\u1f66\u1f6e\u1fa0\u1fa8\u1f65\u1f6d\u1f63\u1f6b\u1f67\u1f6f\u1fa1\u1fa9\u1ff4\u1ff2\u1ff7\u1fa4\u1fac\u1fa2\u1faa\u1fa6\u1fae\u1fa5\u1fad\u1fa3\u1fab\u1fa7\u1faf\uab65\u03e1\u03e0\u0373\u0372\u03f8\u03f7\u2c81\u2c80\u2c83\u2c82\u2c85\u2c84\u2c87\u2c86\u2c89\u2c88\u2cb7\u2cb6\u2c8b\u2c8a\u2c8d\u2c8c\u2c8f\u2c8e\u2c91\u2c90\u2c93\u2c92\u2c95\u2c94\u2ce4\u2cb9\u2cb8\u2c97\u2c96\u2c99\u2c98\u2c9b\u2c9a\u2cbb\u2cba\u2cbd\u2cbc\u2c9d\u2c9c\u2c9f\u2c9e\u2ca1\u2ca0\u2ca3\u2ca2\u2ca5\u2ca4\u2ca7\u2ca6\u2ca9\u2ca8\u2cab\u2caa\u2cad\u2cac\u2caf\u2cae\u2cb1\u2cb0\u2cbf\u2cbe\u2cc1\u2cc0\u03e3\u03e2\u2cec\u2ceb\u2cc3\u2cc2\u2cc5\u2cc4\u2cc7\u2cc6\u03e5\u03e4\u03e7\u03e6\u2cf3\u2cf2\u2cc9\u2cc8\u03e9\u03e8\u2ccb\u2cca\u2ccd\u2ccc\u2ccf\u2cce\u2cd1\u2cd0\u2cd3\u2cd2\u2cd5\u2cd4\u03eb\u03ea\u2cee\u2ced\u2cd7\u2cd6\u03ed\u03ec\u2cd9\u2cd8\u2cdb\u2cda\u2cdd\u2cdc\u03ef\u03ee\u2cb3\u2cb2\u2cb5\u2cb4\u2cdf\u2cde\u2ce1\u2ce0\u2ce3\u2ce2\u0430\u2df6\u0410\u04d1\u04d0\u04d3\u04d2\u04d9\u04d8\u04db\u04da\u04d5\u04d4\u0431\u2de0\u0411\u0432\u1c80\u2de1\u0412\u0433\u2de2\u0413\u0453\u0403\u0491\u0490\u0493\u0492\u04fb\u04fa\u0495\u0494\u04f7\u04f6\u0434\u1c81\u2de3\u0414\u0501\u0500\ua681\ua680\u0452\u0402\ua663\ua662\u0503\u0502\u0499\u0498\u0435\u2df7\u0415\u0450\u0400\u04d7\u04d6\u0451\u0401\u0454\ua674\u0404\u0436\u2de4\u0416\u04c2\u04c1\u04dd\u04dc\u052b\u052a\ua685\ua684\u0497\u0496\u0437\u2de5\u0417\u04df\u04de\ua641\ua640\u0505\u0504\u0511\u0510\ua643\ua642\u0455\u0405\ua645\ua644\u04e1\u04e0\ua689\ua688\u0507\u0506\ua683\ua682\u0438\ua675\u0418\u045d\u040d\u04e5\u04e4\u04e3\u04e2\u048b\u048a\u0456\u0406\u0457\ua676\u0407\ua647\ua646\u0439\u0419\u0458\u0408\ua649\u2df8\ua648\u043a\u2de6\u041a\u045c\u040c\u049b\u049a\u04c4\u04c3\u04a1\u04a0\u049f\u049e\u049d\u049c\u051f\u051e\u051b\u051a\u043b\u2de7\u041b\u1d2b\u04c6\u04c5\u052f\u052e\u0513\u0512\u0521\u0520\u0459\u0409\ua665\ua664\u0509\u0508\u0515\u0514\u043c\u2de8\u041c\u04ce\u04cd\ua667\ua666\u043d\u2de9\u041d\u1d78\u0529\u0528\u04ca\u04c9\u04a3\u04a2\u04c8\u04c7\u0523\u0522\u04a5\u04a4\u045a\u040a\u050b\u050a\u043e\u1c82\u2dea\ua669\ua66b\ua66d\ua66e\ua699\ua69b\u041e\ua668\ua66a\ua66c\ua698\ua69a\u04e7\u04e6\u04e9\u04e8\u04eb\u04ea\u043f\u2deb\u041f\u0525\u0524\u04a7\u04a6\u0481\u0480\u0440\u2dec\u0420\u048f\u048e\u0517\u0516\u0441\u1c83\u2ded\u0421\u2df5\u050d\u050c\u04ab\u04aa\u0442\u1c84\u1c85\u2dee\u0422\ua68d\ua68c\u050f\u050e\u04ad\u04ac\ua68b\ua68a\u045b\u040b\u0443\ua677\u0423\u045e\u040e\u04f1\u04f0\u04f3\u04f2\u04ef\u04ee\u04af\u04ae\u04b1\u04b0\ua64b\u1c88\u2df9\ua64a\u0479\u0478\u0444\ua69e\u0424\u0445\u2def\u0425\u04fd\u04fc\u04ff\u04fe\u04b3\u04b2\u04bb\u04ba\u0527\u0526\ua695\ua694\u0461\ua67b\u0460\u047f\u047e\ua64d\ua64c\u047d\u047c\u047b\u047a\u0446\u2df0\u0426\ua661\ua660\ua68f\ua68e\u04b5\u04b4\ua691\ua690\u0447\u2df1\u0427\u04f5\u04f4\u052d\u052c\ua693\ua692\u04b7\u04b6\u04cc\u04cb\u04b9\u04b8\ua687\ua686\u04bd\u04bc\u04bf\u04be\u045f\u040f\u0448\u2df2\u0428\ua697\ua696\u0449\u2df3\u0429\ua64f\ua64e\u2e2f\ua67f\u044a\u1c86\ua678\u042a\ua69c\ua651\ua650\u044b\ua679\u042b\u04f9\u04f8\u044c\ua67a\u042c\ua69d\u048d\u048c\u0463\u1c87\u2dfa\u0462\ua653\ua652\u044d\u042d\u04ed\u04ec\u044e\u2dfb\u042e\ua655\ua654\ua657\u2dfc\ua656\u044f\u042f\u0519\u0518\u0465\ua69f\u0464\u0467\u2dfd\u0466\ua659\ua658\u046b\u2dfe\u046a\ua65b\ua65a\u0469\u0468\ua65d\ua65c\u046d\u2dff\u046c\u046f\u046e\u0471\u0470\u0473\u2df4\u0472\u0475\u0474\u0477\u0476\ua65f\ua65e\u04a9\u04a8\u051d\u051c\u04cf\u04c0\u2c30\u2c00\u2c31\u2c01\u2c32\u2c02\u2c33\u2c03\u2c34\u2c04\u2c35\u2c05\u2c36\u2c06\u2c37\u2c07\u2c38\u2c08\u2c39\u2c09\u2c3a\u2c0a\u2c3b\u2c0b\u2c3c\u2c0c\u2c3d\u2c0d\u2c3e\u2c0e\u2c3f\u2c0f\u2c40\u2c10\u2c41\u2c11\u2c42\u2c12\u2c43\u2c13\u2c44\u2c14\u2c45\u2c15\u2c46\u2c16\u2c47\u2c17\u2c48\u2c18\u2c49\u2c19\u2c4a\u2c1a\u2c4b\u2c1b\u2c4c\u2c1c\u2c4d\u2c1d\u2c4e\u2c1e\u2c4f\u2c1f\u2c50\u2c20\u2c51\u2c21\u2c52\u2c22\u2c53\u2c23\u2c54\u2c24\u2c55\u2c25\u2c56\u2c26\u2c57\u2c27\u2c58\u2c28\u2c59\u2c29\u2c5a\u2c2a\u2c5b\u2c2b\u2c5c\u2c2c\u2c5d\u2c2d\u2c5e\u2c2e\u10d0\u1c90\u2d00\u10a0\u10d1\u1c91\u2d01\u10a1\u10d2\u1c92\u2d02\u10a2\u10d3\u1c93\u2d03\u10a3\u10d4\u1c94\u2d04\u10a4\u10d5\u1c95\u2d05\u10a5\u10d6\u1c96\u2d06\u10a6\u10f1\u1cb1\u2d21\u10c1\u10d7\u1c97\u2d07\u10a7\u10d8\u1c98\u2d08\u10a8\u10d9\u1c99\u2d09\u10a9\u10da\u1c9a\u2d0a\u10aa\u10db\u1c9b\u2d0b\u10ab\u10dc\u1c9c\u10fc\u2d0c\u10ac\u10f2\u1cb2\u2d22\u10c2\u10dd\u1c9d\u2d0d\u10ad\u10de\u1c9e\u2d0e\u10ae\u10df\u1c9f\u2d0f\u10af\u10e0\u1ca0\u2d10\u10b0\u10e1\u1ca1\u2d11\u10b1\u10e2\u1ca2\u2d12\u10b2\u10f3\u1cb3\u2d23\u10c3\u10e3\u1ca3\u2d13\u10b3\u10e4\u1ca4\u2d14\u10b4\u10e5\u1ca5\u2d15\u10b5\u10e6\u1ca6\u2d16\u10b6\u10e7\u1ca7\u2d17\u10b7\u10e8\u1ca8\u2d18\u10b8\u10e9\u1ca9\u2d19\u10b9\u10ea\u1caa\u2d1a\u10ba\u10eb\u1cab\u2d1b\u10bb\u10ec\u1cac\u2d1c\u10bc\u10ed\u1cad\u2d1d\u10bd\u10ee\u1cae\u2d1e\u10be\u10f4\u1cb4\u2d24\u10c4\u10ef\u1caf\u2d1f\u10bf\u10f0\u1cb0\u2d20\u10c0\u10f5\u1cb5\u2d25\u10c5\u10f6\u1cb6\u10f7\u1cb7\u2d27\u10c7\u10f8\u1cb8\u10f9\u1cb9\u10fa\u1cba\u10fd\u1cbd\u2d2d\u10cd\u10fe\u1cbe\u10ff\u1cbf\u0561\u0531\u0560\u0562\u0532\u0563\u0533\u0564\u0534\u0565\u0535\u0587\u0566\u0536\u0567\u0537\u0568\u0538\u0569\u0539\u056a\u053a\u056b\u053b\u056c\u053c\u056d\u053d\u056e\u053e\u056f\u053f\u0570\u0540\u0571\u0541\u0572\u0542\u0573\u0543\u0574\u0544\ufb14\ufb15\ufb17\ufb13\u0575\u0545\u0588\u0576\u0546\u0577\u0547\u0578\u0548\u0579\u0549\u057a\u054a\u057b\u054b\u057c\u054c\u057d\u054d\u057e\u054e\ufb16\u057f\u054f\u0580\u0550\u0581\u0551\u0582\u0552\u0583\u0553\u0584\u0554\u0585\u0555\u0586\u0556\u0559\u05d0\u2135\ufb21\ufb2e\ufb2f\ufb30\ufb4f\u05d1\u2136\ufb31\ufb4c\u05d2\u2137\ufb32\u05d3\u2138\ufb22\ufb33\u05d4\ufb23\ufb34\u05d5\ufb4b\ufb35\u05f0\u05f1\u05d6\ufb36\u05d7\u05d8\ufb38\u05d9\ufb1d\ufb39\u05ef\u05f2\ufb1f\u05db\ufb24\u05da\ufb3b\ufb3a\ufb4d\u05dc\ufb25\ufb3c\u05de\ufb26\u05dd\ufb3e\u05e0\u05df\ufb40\u05e1\ufb41\u05e2\ufb20\u05e4\u05e3\ufb44\ufb43\ufb4e\u05e6\u05e5\ufb46\u05e7\ufb47\u05e8\ufb27\ufb48\u05e9\ufb2b\ufb2a\ufb49\ufb2d\ufb2c\u05ea\ufb28\ufb4a\u0800\u0801\u0802\u0803\u0804\u0805\u0806\u0807\u0808\u0809\u080a\u080b\u080c\u080d\u080e\u080f\u0810\u0811\u0812\u0813\u0814\u0815\u0816\u0817\u081a\u081b\u0621\u0674\ufe80\u06fd\u0622\ufe82\ufe81\u0623\ufe84\ufe83\u0672\u0671\ufb51\ufb50\u0624\ufe86\ufe85\u0625\ufe88\ufe87\u0673\u0773\u0774\u0626\ufe8b\ufe8c\ufe8a\ufe89\ufbeb\ufbea\ufc97\ufc00\ufc98\ufc01\ufc99\ufc64\ufc65\ufc9a\ufcdf\ufc66\ufc02\ufc67\ufc9b\ufce0\ufbed\ufbec\ufbef\ufbee\ufbf3\ufbf2\ufbf1\ufbf0\ufbf5\ufbf4\ufbfb\ufbfa\ufc68\ufbf9\ufc03\ufc69\ufc04\ufbf8\ufbf7\ufbf6\u08a8\u08a9\u08ac\u0627\u08ad\ufe8e\ufe8d\ufd3c\ufd3d\u0675\ufdf3\ufdf2\u066e\u0628\ufe91\ufe92\ufe90\ufe8f\ufc9c\ufc05\ufc9d\ufc06\ufdc2\ufc9e\ufc07\ufd9e\ufc6a\ufc6b\ufc9f\ufce1\ufc6c\ufc08\ufc6d\ufca0\ufce2\ufc6e\ufc09\ufc6f\ufc0a\u067b\ufb54\ufb55\ufb53\ufb52\u067e\ufb58\ufb59\ufb57\ufb56\u0680\ufb5c\ufb5d\ufb5b\ufb5a\u0750\u0751\u0752\u0753\u0754\u0755\u08a0\u0756\u08be\u08a1\u08b6\u08b7\u0629\ufe94\ufe93\u062a\ufe97\ufe98\ufe96\ufe95\ufca1\ufc0b\ufd50\ufda0\ufd9f\ufca2\ufc0c\ufd52\ufd51\ufd53\ufca3\ufc0d\ufd54\ufda2\ufda1\ufc70\ufc71\ufca4\ufce3\ufc72\ufc0e\ufd55\ufd56\ufd57\ufda4\ufda3\ufc73\ufca5\ufce4\ufc74\ufc0f\ufc75\ufc10\u062b\ufe9b\ufe9c\ufe9a\ufe99\ufc11\ufc76\ufc77\ufca6\ufce5\ufc78\ufc12\ufc79\ufce6\ufc7a\ufc13\ufc7b\ufc14\u0679\ufb68\ufb69\ufb67\ufb66\u067a\ufb60\ufb61\ufb5f\ufb5e\u067c\u067d\u067f\ufb64\ufb65\ufb63\ufb62\u08b8\u08bf\u08c0\u062c\ufe9f\ufea0\ufe9e\ufe9d\ufca7\ufc15\ufda6\ufdbe\ufdfb\ufca8\ufc16\ufd59\ufd58\ufda7\ufda5\ufd1d\ufd01\ufd1e\ufd02\u0683\ufb78\ufb79\ufb77\ufb76\u0684\ufb74\ufb75\ufb73\ufb72\u0686\ufb7c\ufb7d\ufb7b\ufb7a\u06bf\u0687\ufb80\ufb81\ufb7f\ufb7e\u08a2\u08c1\u08c5\u08c6\u062d\ufea3\ufea4\ufea2\ufea1\ufca9\ufc17\ufdbf\ufcaa\ufc18\ufd5b\ufd5a\ufd1b\ufcff\ufd1c\ufd00\u062e\ufea7\ufea8\ufea6\ufea5\ufcab\ufc19\ufc1a\ufcac\ufc1b\ufd1f\ufd03\ufd20\ufd04\u0681\u0682\u0685\u0757\u0758\u076e\u076f\u0772\u077c\u062f\ufeaa\ufea9\u0630\ufeac\ufeab\ufc5b\u0688\ufb89\ufb88\u0689\u068a\u068b\u068c\ufb85\ufb84\u068d\ufb83\ufb82\u08ae\u068e\ufb87\ufb86\u068f\u0690\u06ee\u0759\u075a\u0631\ufeae\ufead\ufc5c\ufdf6\ufdfc\u0632\ufeb0\ufeaf\u0691\ufb8d\ufb8c\u0692\u0693\u0694\u0695\u0696\u0697\u0698\ufb8b\ufb8a\u0699\u06ef\u075b\u076b\u076c\u0771\u08aa\u08b2\u08b9\u0633\ufeb3\ufeb4\ufeb2\ufeb1\ufcad\ufd34\ufc1c\ufd5d\ufd5e\ufcae\ufd35\ufc1d\ufd5c\ufcaf\ufd36\ufc1e\ufda8\ufdc6\ufd2a\ufd0e\ufcb0\ufce7\ufc1f\ufd61\ufd60\ufd5f\ufd63\ufd62\ufd31\ufce8\ufd17\ufcfb\ufd18\ufcfc\u0634\ufeb7\ufeb8\ufeb6\ufeb5\ufd2d\ufd37\ufd25\ufd09\ufd69\ufd2e\ufd38\ufd26\ufd0a\ufd68\ufd67\ufdaa\ufd2f\ufd39\ufd27\ufd0b\ufd29\ufd0d\ufd30\ufce9\ufd28\ufd0c\ufd6b\ufd6a\ufd6d\ufd6c\ufd32\ufcea\ufd19\ufcfd\ufd1a\ufcfe\u069a\u069b\u069c\u06fa\u075c\u076d\u0770\u077d\u077e\u0635\ufebb\ufebc\ufeba\ufeb9\ufcb1\ufc20\ufd65\ufd64\ufda9\ufcb2\ufd2b\ufd0f\ufdf5\ufdf9\ufdfa\ufdf0\ufcb3\ufc21\ufdc5\ufd66\ufd21\ufd05\ufd22\ufd06\u0636\ufebf\ufec0\ufebe\ufebd\ufcb4\ufc22\ufcb5\ufc23\ufd6e\ufdab\ufcb6\ufc24\ufd70\ufd6f\ufd2c\ufd10\ufcb7\ufc25\ufd23\ufd07\ufd24\ufd08\u069d\u08af\u069e\u06fb\u0637\ufec3\ufec4\ufec2\ufec1\ufcb8\ufc26\ufd33\ufd3a\ufc27\ufd72\ufd71\ufd73\ufd74\ufd11\ufcf5\ufd12\ufcf6\u0638\ufec7\ufec8\ufec6\ufec5\ufcb9\ufd3b\ufc28\u069f\u08a3\u0639\ufecb\ufecc\ufeca\ufec9\ufcba\ufc29\ufdc4\ufd75\ufdf7\ufcbb\ufc2a\ufd77\ufd76\ufd78\ufdb6\ufd13\ufcf7\ufd14\ufcf8\u063a\ufecf\ufed0\ufece\ufecd\ufcbc\ufc2b\ufcbd\ufc2c\ufd79\ufd7b\ufd7a\ufd15\ufcf9\ufd16\ufcfa\u06a0\u08c3\u06fc\u075d\u075e\u075f\u08b3\u0641\ufed3\ufed4\ufed2\ufed1\ufcbe\ufc2d\ufcbf\ufc2e\ufcc0\ufc2f\ufd7d\ufd7c\ufcc1\ufc30\ufdc1\ufc7c\ufc31\ufc7d\ufc32\u06a1\u06a2\u08bb\u06a3\u06a4\ufb6c\ufb6d\ufb6b\ufb6a\u08a4\u06a5\u06a6\ufb70\ufb71\ufb6f\ufb6e\u0760\u0761\u066f\u0642\ufed7\ufed8\ufed6\ufed5\ufcc2\ufc33\ufdf1\ufcc3\ufc34\ufdb4\ufd7e\ufd7f\ufdb2\ufc7e\ufc35\ufc7f\ufc36\u06a7\u08bc\u06a8\u08c4\u08a5\u0643\ufedb\ufedc\ufeda\ufed9\ufc80\ufc37\ufcc4\ufc38\ufcc5\ufc39\ufcc6\ufc3a\ufcc7\ufceb\ufc81\ufc3b\ufcc8\ufcec\ufc82\ufc3c\ufdc3\ufdbb\ufdb7\ufc83\ufc3d\ufc84\ufc3e\u06a9\ufb90\ufb91\ufb8f\ufb8e\u06aa\u06ab\u06ac\u077f\u06ad\ufbd5\ufbd6\ufbd4\ufbd3\u06ae\u08b4\u06af\ufb94\ufb95\ufb93\ufb92\u08b0\u06b0\u06b1\ufb9c\ufb9d\ufb9b\ufb9a\u06b2\u06b3\ufb98\ufb99\ufb97\ufb96\u06b4\u0762\u063b\u063c\u0763\u0764\u08c2\u0644\ufedf\ufee0\ufede\ufedd\ufef6\ufef5\ufef8\ufef7\ufefa\ufef9\ufefc\ufefb\ufcc9\ufc3f\ufd83\ufd84\ufdba\ufdbc\ufdac\ufcca\ufc40\ufdb5\ufd80\ufd82\ufd81\ufccb\ufc41\ufd86\ufd85\ufccc\ufced\ufc85\ufc42\ufd88\ufd87\ufdad\ufccd\ufc86\ufc43\ufc87\ufc44\u06b5\u06b6\u06b7\u06b8\u076a\u08a6\u08c7\u0645\ufee3\ufee4\ufee2\ufee1\u06fe\ufc88\ufcce\ufc45\ufd8c\ufd92\ufd8d\ufdc0\ufccf\ufc46\ufd89\ufd8a\ufdf4\ufd8b\ufcd0\ufc47\ufd8e\ufd8f\ufdb9\ufcd1\ufc89\ufc48\ufdb1\ufc49\ufc4a\u0765\u0766\u08a7\u0646\ufee7\ufee8\ufee6\ufee5\ufcd2\ufc4b\ufdb8\ufdbd\ufd98\ufd97\ufd99\ufdc7\ufcd3\ufc4c\ufd95\ufd96\ufdb3\ufcd4\ufc4d\ufc8a\ufc8b\ufcd5\ufcee\ufc8c\ufc4e\ufd9b\ufd9a\ufc8d\ufcd6\ufcef\ufc8e\ufc4f\ufc8f\ufc50\u06ba\ufb9f\ufb9e\u08bd\u06bb\ufba2\ufba3\ufba1\ufba0\u06bc\u06bd\u06b9\u0767\u0768\u0769\u0647\ufeeb\ufeec\ufeea\ufee9\ufcd9\ufcd7\ufc51\ufcd8\ufc52\ufd93\ufd94\ufc53\ufc54\u06be\ufbac\ufbad\ufbab\ufbaa\u06c1\ufba8\ufba9\ufba7\ufba6\u06c2\u06c3\u06ff\u06d5\u06c0\ufba5\ufba4\u0648\u06e5\ufeee\ufeed\u0676\ufdf8\u06c4\u06c5\ufbe1\ufbe0\u06c6\ufbda\ufbd9\u06c7\ufbd8\ufbd7\u0677\ufbdd\u06c8\ufbdc\ufbdb\u06c9\ufbe3\ufbe2\u06ca\u06cb\ufbdf\ufbde\u08b1\u06cf\u0778\u0779\u08ab\u0649\ufbe8\ufbe9\ufef0\ufeef\ufc90\ufc5d\u064a\u06e6\ufef3\ufef4\ufef2\ufef1\u0678\ufcda\ufc55\ufdaf\ufcdb\ufc56\ufdae\ufcdc\ufc57\ufc91\ufc92\ufcdd\ufcf0\ufc93\ufc58\ufd9d\ufd9c\ufdb0\ufc94\ufcde\ufcf1\ufc95\ufc59\ufc96\ufc5a\u06cc\ufbfe\ufbff\ufbfd\ufbfc\u06cd\u06ce\u06d0\ufbe6\ufbe7\ufbe5\ufbe4\u06d1\u063d\u063e\u063f\u0620\u0775\u0776\u0777\u08ba\u06d2\ufbaf\ufbae\u06d3\ufbb1\ufbb0\u077a\u077b\u0710\u0712\u072d\u0713\u0714\u072e\u0716\u0715\u072f\u0717\u0718\u0719\u074d\u071a\u071b\u071c\u071d\u071e\u071f\u074e\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u074f\u0728\u0729\u072a\u072b\u072c\u0860\u0861\u0862\u0863\u0864\u0865\u0866\u0867\u0868\u0869\u086a\u0840\u0841\u0842\u0843\u0844\u0845\u0846\u0847\u0848\u0849\u084a\u084b\u084c\u084d\u084e\u084f\u0850\u0851\u0852\u0853\u0854\u0855\u0856\u0857\u0858\u0780\u0799\u079a\u0781\u0782\u0783\u079c\u0784\u0785\u0786\u0787\u07a2\u07a3\u0788\u07a5\u0789\u078a\u078b\u079b\u078c\u0798\u07a0\u07a1\u078d\u078e\u07a4\u078f\u0790\u079d\u079e\u079f\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u07b1\u07a6\u07a7\u07a8\u07a9\u07aa\u07ab\u07ac\u07ad\u07ae\u07af\u07b0\u07ca\u07cb\u07cc\u07cd\u07ce\u07cf\u07d0\u07d1\u07d2\u07d3\u07d4\u07d5\u07d6\u07e8\u07d7\u07e9\u07d8\u07d9\u07ea\u07da\u07db\u07dc\u07dd\u07de\u07df\u07e0\u07e1\u07e2\u07e3\u07e4\u07e5\u07e6\u07e7\u07f4\u07f5\u2d30\u2d31\u2d32\u2d33\u2d34\u2d35\u2d36\u2d37\u2d38\u2d39\u2d3a\u2d3b\u2d66\u2d3c\u2d3d\u2d3e\u2d3f\u2d40\u2d41\u2d42\u2d43\u2d44\u2d45\u2d46\u2d47\u2d48\u2d49\u2d4a\u2d4b\u2d4c\u2d4d\u2d4e\u2d4f\u2d50\u2d51\u2d52\u2d53\u2d67\u2d54\u2d55\u2d56\u2d57\u2d58\u2d59\u2d5a\u2d5b\u2d5c\u2d5d\u2d5e\u2d5f\u2d60\u2d61\u2d62\u2d63\u2d64\u2d65\u2d6f\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120a\u120b\u120c\u120d\u120e\u120f\u2d80\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121a\u121b\u121c\u121d\u121e\u121f\u1380\u1381\u1382\u1383\u2d81\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122a\u122b\u122c\u122d\u122e\u122f\u2d82\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u2d83\uab01\uab02\uab03\uab04\uab05\uab06\u1238\u1239\u123a\u123b\u123c\u123d\u123e\u123f\u2d84\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124a\u124b\u124c\u124d\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125a\u125b\u125c\u125d\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1384\u1385\u1386\u1387\u2d85\u1268\u1269\u126a\u126b\u126c\u126d\u126e\u126f\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u2d86\u1278\u1279\u127a\u127b\u127c\u127d\u127e\u127f\u2d87\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128a\u128b\u128c\u128d\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u2d88\u1298\u1299\u129a\u129b\u129c\u129d\u129e\u129f\u2d89\u12a0\u12a1\u12a2\u12a3\u12a4\u12a5\u12a6\u12a7\u2d8a\u12a8\u12a9\u12aa\u12ab\u12ac\u12ad\u12ae\u12af\u12b0\u12b2\u12b3\u12b4\u12b5\u12b8\u12b9\u12ba\u12bb\u12bc\u12bd\u12be\u12c0\u12c2\u12c3\u12c4\u12c5\u12c8\u12c9\u12ca\u12cb\u12cc\u12cd\u12ce\u12cf\u12d0\u12d1\u12d2\u12d3\u12d4\u12d5\u12d6\u12d8\u12d9\u12da\u12db\u12dc\u12dd\u12de\u12df\u2d8b\uab11\uab12\uab13\uab14\uab15\uab16\u12e0\u12e1\u12e2\u12e3\u12e4\u12e5\u12e6\u12e7\u12e8\u12e9\u12ea\u12eb\u12ec\u12ed\u12ee\u12ef\u12f0\u12f1\u12f2\u12f3\u12f4\u12f5\u12f6\u12f7\u2d8c\uab09\uab0a\uab0b\uab0c\uab0d\uab0e\u12f8\u12f9\u12fa\u12fb\u12fc\u12fd\u12fe\u12ff\u2d8d\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u2d8e\u1308\u1309\u130a\u130b\u130c\u130d\u130e\u130f\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131a\u131b\u131c\u131d\u131e\u131f\u2d93\u2d94\u2d95\u2d96\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u2d8f\u1328\u1329\u132a\u132b\u132c\u132d\u132e\u132f\u2d90\uab20\uab21\uab22\uab23\uab24\uab25\uab26\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u2d91\u1338\u1339\u133a\u133b\u133c\u133d\u133e\u133f\uab28\uab29\uab2a\uab2b\uab2c\uab2d\uab2e\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134a\u134b\u134c\u134d\u134e\u134f\u1388\u1389\u138a\u138b\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u138c\u138d\u138e\u138f\u2d92\u1358\u1359\u135a\u2da0\u2da1\u2da2\u2da3\u2da4\u2da5\u2da6\u2da8\u2da9\u2daa\u2dab\u2dac\u2dad\u2dae\u2db0\u2db1\u2db2\u2db3\u2db4\u2db5\u2db6\u2db8\u2db9\u2dba\u2dbb\u2dbc\u2dbd\u2dbe\u2dc0\u2dc1\u2dc2\u2dc3\u2dc4\u2dc5\u2dc6\u2dc8\u2dc9\u2dca\u2dcb\u2dcc\u2dcd\u2dce\u2dd0\u2dd1\u2dd2\u2dd3\u2dd4\u2dd5\u2dd6\u2dd8\u2dd9\u2dda\u2ddb\u2ddc\u2ddd\u2dde\u0950\ua8fd\u0972\u0904\u0905\u0906\u0973\u0974\u0975\u0976\u0977\u0907\u0908\u0909\u090a\u090b\u0960\u090c\u0961\u090d\u090e\u090f\u0910\ua8fe\u0911\u0912\u0913\u0914\u0915\u0958\u0916\u0959\u0917\u095a\u097b\u0918\u0919\u091a\u091b\u091c\u095b\u0979\u097c\u091d\u091e\u091f\u0920\u0978\u0921\u095c\u097e\u0922\u095d\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u095e\u092c\u097f\u092d\u092e\u092f\u095f\u097a\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093d\u097d\u1ce9\u1cea\u1ceb\u1cec\u1cee\u1cef\u1cf0\u1cf1\u1cfa\u1cf5\u1cf6\ua8f2\ua8f3\ua8f4\ua8f5\ua8f6\ua8f7\ua8fb\u093e\u093a\u093b\u094f\u0956\u0957\u093f\u0940\u0941\u0942\u0943\u0944\u0962\u0963\u0945\u0955\u0946\u0947\u094e\u0948\ua8ff\u0949\u094a\u094b\u094c\u094d\u0980\u0985\u0986\u0987\u0988\u0989\u098a\u098b\u09e0\u098c\u09e1\u098f\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\u099b\u099c\u099d\u099e\u099f\u09a0\u09a1\u09dc\u09a2\u09dd\u09a3\u09a4\u09ce\u09a5\u09a6\u09a7\u09a8\u09aa\u09ab\u09ac\u09ad\u09ae\u09af\u09df\u09b0\u09f0\u09b2\u09f1\u09b6\u09b7\u09b8\u09b9\u09bd\u09be\u09bf\u09c0\u09c1\u09c2\u09c3\u09c4\u09e2\u09e3\u09c7\u09c8\u09cb\u09cc\u09cd\u09d7\u09fc\u0a74\u0a73\u0a09\u0a0a\u0a13\u0a05\u0a06\u0a10\u0a14\u0a72\u0a07\u0a08\u0a0f\u0a38\u0a36\u0a39\u0a51\u0a15\u0a16\u0a59\u0a17\u0a5a\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a5b\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a5e\u0a2c\u0a2d\u0a2e\u0a2f\u0a75\u0a30\u0a32\u0a33\u0a35\u0a5c\u0a3e\u0a3f\u0a40\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a4d\u0ad0\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0ae0\u0a8c\u0ae1\u0a8d\u0a8f\u0a90\u0a91\u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0af9\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0ab3\u0abd\u0abe\u0abf\u0ac0\u0ac1\u0ac2\u0ac3\u0ac4\u0ae2\u0ae3\u0ac5\u0ac7\u0ac8\u0ac9\u0acb\u0acc\u0acd\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\u0b60\u0b0c\u0b61\u0b0f\u0b10\u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\u0b1b\u0b1c\u0b1d\u0b1e\u0b1f\u0b20\u0b21\u0b5c\u0b22\u0b5d\u0b23\u0b24\u0b25\u0b26\u0b27\u0b28\u0b2a\u0b2b\u0b2c\u0b2d\u0b2e\u0b2f\u0b5f\u0b30\u0b32\u0b33\u0b35\u0b71\u0b36\u0b37\u0b38\u0b39\u0b3d\u0b3e\u0b3f\u0b40\u0b41\u0b42\u0b43\u0b44\u0b62\u0b63\u0b47\u0b48\u0b4b\u0b4c\u0b4d\u0b56\u0b57\u0bd0\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a\u0b8e\u0b8f\u0b90\u0b92\u0b93\u0b94\u0b83\u0b95\u0b99\u0b9a\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0baf\u0bb0\u0bb2\u0bb5\u0bb4\u0bb3\u0bb1\u0ba9\u0b9c\u0bb6\u0bb7\u0bb8\u0bb9\u0bbe\u0bbf\u0bc0\u0bc1\u0bc2\u0bc6\u0bc7\u0bc8\u0bca\u0bcb\u0bcc\u0bcd\u0bd7\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\u0c60\u0c0c\u0c61\u0c0e\u0c0f\u0c10\u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\u0c58\u0c1b\u0c1c\u0c59\u0c1d\u0c1e\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24\u0c25\u0c26\u0c27\u0c28\u0c2a\u0c2b\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c35\u0c36\u0c37\u0c38\u0c39\u0c33\u0c34\u0c5a\u0c3d\u0c3e\u0c3f\u0c40\u0c41\u0c42\u0c43\u0c44\u0c62\u0c63\u0c46\u0c47\u0c48\u0c4a\u0c4b\u0c4c\u0c4d\u0c55\u0c56\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\u0ce0\u0c8c\u0ce1\u0c8e\u0c8f\u0c90\u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\u0c9b\u0c9c\u0c9d\u0c9e\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4\u0ca5\u0ca6\u0ca7\u0ca8\u0caa\u0cab\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cb3\u0cde\u0cbd\u0cf1\u0cf2\u0c80\u0cbe\u0cbf\u0cc0\u0cc1\u0cc2\u0cc3\u0cc4\u0ce2\u0ce3\u0cc6\u0cc7\u0cc8\u0cca\u0ccb\u0ccc\u0ccd\u0cd5\u0cd6\u0d05\u0d06\u0d07\u0d08\u0d5f\u0d09\u0d0a\u0d0b\u0d60\u0d0c\u0d61\u0d0e\u0d0f\u0d10\u0d12\u0d13\u0d14\u0d15\u0d7f\u0d16\u0d17\u0d18\u0d19\u0d1a\u0d1b\u0d1c\u0d1d\u0d1e\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d7a\u0d24\u0d25\u0d26\u0d27\u0d28\u0d7b\u0d29\u0d2a\u0d2b\u0d2c\u0d2d\u0d2e\u0d54\u0d2f\u0d55\u0d30\u0d4e\u0d7c\u0d32\u0d7d\u0d35\u0d36\u0d37\u0d38\u0d39\u0d33\u0d7e\u0d34\u0d56\u0d31\u0d3a\u0d3d\u0d04\u0d3e\u0d3f\u0d40\u0d41\u0d42\u0d43\u0d44\u0d62\u0d63\u0d46\u0d47\u0d48\u0d4a\u0d4b\u0d4c\u0d57\u0d4d\u0d3b\u0d3c\u0d85\u0d86\u0d87\u0d88\u0d89\u0d8a\u0d8b\u0d8c\u0d8d\u0d8e\u0d8f\u0d90\u0d91\u0d92\u0d93\u0d94\u0d95\u0d96\u0d9a\u0d9b\u0d9c\u0d9d\u0d9e\u0d9f\u0da0\u0da1\u0da2\u0da3\u0da4\u0da5\u0da6\u0da7\u0da8\u0da9\u0daa\u0dab\u0dac\u0dad\u0dae\u0daf\u0db0\u0db1\u0db3\u0db4\u0db5\u0db6\u0db7\u0db8\u0db9\u0dba\u0dbb\u0dbd\u0dc0\u0dc1\u0dc2\u0dc3\u0dc4\u0dc5\u0dc6\u0dcf\u0dd0\u0dd1\u0dd2\u0dd3\u0dd4\u0dd6\u0dd8\u0df2\u0ddf\u0df3\u0dd9\u0dda\u0ddb\u0ddc\u0ddd\u0dde\u0dca\uaaf2\uabc0\uabc1\uabc2\uabc3\uabc4\uabc5\uabc6\uabc7\uabc8\uabc9\uabca\uabcb\uabcc\uabcd\uabce\uabcf\uabd0\uabd1\uabd2\uabd3\uabd4\uabd5\uabd6\uabd7\uabd8\uabd9\uabda\uaae0\uaae1\uaae2\uaae3\uaae4\uaae5\uaae6\uaae7\uaae8\uaae9\uaaea\uabe3\uabe4\uabe5\uabe6\uabe7\uabe8\uabe9\uabea\uaaeb\uaaec\uaaed\uaaee\uaaef\uaaf5\uabdb\uabdc\uabdd\uabde\uabdf\uabe0\uabe1\uabe2\uabed\uaaf6\ua800\ua801\ua802\ua803\ua804\ua805\ua806\ua82c\ua807\ua808\ua809\ua80a\ua80c\ua80d\ua80e\ua80f\ua810\ua811\ua812\ua813\ua814\ua815\ua816\ua817\ua818\ua819\ua81a\ua81b\ua81c\ua81d\ua81e\ua81f\ua820\ua821\ua822\ua823\ua824\ua825\ua826\ua827\ua882\ua883\ua884\ua885\ua886\ua887\ua888\ua889\ua88a\ua88b\ua88c\ua88d\ua88e\ua88f\ua890\ua891\ua892\ua893\ua894\ua895\ua896\ua897\ua898\ua899\ua89a\ua89b\ua89c\ua89d\ua89e\ua89f\ua8a0\ua8a1\ua8a2\ua8a3\ua8a4\ua8a5\ua8a6\ua8a7\ua8a8\ua8a9\ua8aa\ua8ab\ua8ac\ua8ad\ua8ae\ua8af\ua8b0\ua8b1\ua8b2\ua8b3\ua8b4\ua8b5\ua8b6\ua8b7\ua8b8\ua8b9\ua8ba\ua8bb\ua8bc\ua8bd\ua8be\ua8bf\ua8c0\ua8c1\ua8c2\ua8c3\ua8c4\u1b83\u1bba\u1b84\u1b85\u1b86\u1b87\u1b88\u1b89\u1b8a\u1bbe\u1bae\u1b8b\u1b8c\u1b8d\u1b8e\u1b8f\u1b90\u1b91\u1b92\u1b93\u1b94\u1b95\u1b96\u1b97\u1b98\u1bbd\u1b99\u1bbf\u1bac\u1b9a\u1ba1\u1b9b\u1ba2\u1bbb\u1b9c\u1ba3\u1bbc\u1b9d\u1bad\u1b9e\u1b9f\u1baf\u1ba0\u1ba4\u1ba5\u1ba6\u1ba7\u1ba8\u1ba9\u1baa\u1bab\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0ede\u0e81\u0e82\u0e84\u0e86\u0e87\u0e88\u0e89\u0eaa\u0e8a\u0e8c\u0e8e\u0edf\u0e8d\u0e8f\u0e90\u0e91\u0e92\u0e93\u0e94\u0e95\u0e96\u0e97\u0e98\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea0\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0ea8\u0ea9\u0eab\u0edc\u0edd\u0eac\u0ead\u0eae\u0eaf\u0eb0\u0eb1\u0eb2\u0eb3\u0eb4\u0eb5\u0eb6\u0eb7\u0eb8\u0eb9\u0eba\u0ebb\u0ebc\u0ebd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\uaa80\uaa81\uaa82\uaa83\uaa84\uaa85\uaa86\uaa87\uaa88\uaa89\uaa8a\uaa8b\uaa8c\uaa8d\uaa8e\uaa8f\uaa90\uaa91\uaa92\uaa93\uaa94\uaa95\uaa96\uaa97\uaa98\uaa99\uaa9a\uaa9b\uaa9c\uaa9d\uaa9e\uaa9f\uaaa0\uaaa1\uaaa2\uaaa3\uaaa4\uaaa5\uaaa6\uaaa7\uaaa8\uaaa9\uaaaa\uaaab\uaaac\uaaad\uaaae\uaaaf\uaab0\uaab1\uaab2\uaab3\uaab4\uaab5\uaab6\uaab7\uaab8\uaab9\uaaba\uaabb\uaabc\uaabd\uaabe\uaac0\uaac2\uaadb\uaadc\u0f40\u0f69\u0f90\u0fb9\u0f6b\u0f41\u0f91\u0f42\u0f43\u0f92\u0f93\u0f44\u0f94\u0f45\u0f95\u0f46\u0f96\u0f47\u0f97\u0f49\u0f99\u0f4a\u0f9a\u0f4b\u0f9b\u0f4c\u0f4d\u0f9c\u0f9d\u0f4e\u0f9e\u0f4f\u0f9f\u0f50\u0fa0\u0f51\u0f52\u0fa1\u0fa2\u0f53\u0fa3\u0f54\u0fa4\u0f55\u0fa5\u0f56\u0f57\u0fa6\u0fa7\u0f58\u0fa8\u0f59\u0fa9\u0f5a\u0faa\u0f5b\u0f5c\u0fab\u0fac\u0f5d\u0fad\u0fba\u0f5e\u0fae\u0f5f\u0faf\u0f60\u0fb0\u0f61\u0fb1\u0fbb\u0f62\u0f6a\u0fb2\u0fbc\u0f6c\u0f63\u0fb3\u0f64\u0fb4\u0f65\u0fb5\u0f66\u0fb6\u0f67\u0fb7\u0f68\u0f00\u0fb8\u0f88\u0f8d\u0f89\u0f8e\u0f8c\u0f8f\u0f8a\u0f8b\u0f71\u0f72\u0f73\u0f80\u0f81\u0f74\u0f75\u0f76\u0f77\u0f78\u0f79\u0f7a\u0f7b\u0f7c\u0f7d\u0f84\u1c00\u1c01\u1c02\u1c03\u1c04\u1c05\u1c06\u1c07\u1c08\u1c09\u1c4d\u1c4e\u1c4f\u1c0a\u1c0b\u1c0c\u1c0d\u1c0e\u1c0f\u1c10\u1c11\u1c12\u1c13\u1c14\u1c15\u1c16\u1c17\u1c18\u1c19\u1c1a\u1c24\u1c1b\u1c25\u1c1c\u1c1d\u1c1e\u1c1f\u1c20\u1c21\u1c22\u1c23\u1c36\u1c26\u1c27\u1c28\u1c29\u1c2a\u1c2b\u1c2c\u1c2d\u1c2e\u1c2f\u1c30\u1c31\u1c32\u1c33\u1c34\u1c35\ua840\ua841\ua842\ua843\ua844\ua845\ua846\ua847\ua869\ua86a\ua86b\ua86c\ua848\ua849\ua84a\ua84b\ua84c\ua84d\ua84e\ua84f\ua850\ua851\ua852\ua853\ua867\ua854\ua855\ua856\ua857\ua868\ua86d\ua858\ua871\ua872\ua859\ua85a\ua86e\ua85b\ua85c\ua86f\ua870\ua85d\ua862\ua863\ua864\ua865\ua85e\ua85f\ua860\ua861\ua866\ua873\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u191d\u1909\u190a\u190b\u191e\u190c\u190d\u190e\u190f\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191a\u191b\u191c\u1920\u1921\u1922\u1923\u1924\u1925\u1926\u1927\u1928\u1929\u192a\u192b\u1930\u1931\u1932\u1933\u1934\u1935\u1936\u1937\u1938\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170a\u170b\u170c\u170e\u170f\u1710\u1711\u1712\u1713\u1714\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172a\u172b\u172c\u172d\u172e\u172f\u1730\u1731\u1732\u1733\u1734\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174a\u174b\u174c\u174d\u174e\u174f\u1750\u1751\u1752\u1753\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176a\u176b\u176c\u176e\u176f\u1770\u1772\u1773\u1a00\u1a01\u1a02\u1a03\u1a04\u1a05\u1a06\u1a07\u1a08\u1a09\u1a0a\u1a0b\u1a0c\u1a0d\u1a0e\u1a0f\u1a10\u1a11\u1a12\u1a13\u1a14\u1a15\u1a16\u1a17\u1a18\u1a19\u1a1a\u1a1b\u1bc0\u1bc1\u1bc2\u1bc3\u1bc4\u1bc5\u1bc6\u1bc7\u1bc8\u1bc9\u1bca\u1bcb\u1bcc\u1bcd\u1bce\u1bcf\u1bd0\u1bd1\u1bd2\u1bd3\u1bd4\u1bd5\u1bd6\u1bd7\u1bd8\u1bd9\u1bda\u1bdb\u1bdc\u1bdd\u1bde\u1bdf\u1be0\u1be1\u1be2\u1be3\u1be4\u1be5\u1be7\u1be8\u1be9\u1bea\u1beb\u1bec\u1bed\u1bee\u1bef\u1bf0\u1bf1\u1bf2\u1bf3\ua930\ua931\ua932\ua933\ua934\ua935\ua936\ua937\ua938\ua939\ua93a\ua93b\ua93c\ua93d\ua93e\ua93f\ua940\ua941\ua942\ua943\ua944\ua945\ua946\ua947\ua948\ua949\ua94a\ua94b\ua94c\ua94d\ua94e\ua94f\ua950\ua951\ua952\ua953\ua90a\ua90b\ua90c\ua90d\ua90e\ua90f\ua910\ua911\ua912\ua913\ua914\ua915\ua916\ua917\ua918\ua919\ua91a\ua91b\ua91c\ua91d\ua91e\ua91f\ua920\ua921\ua922\ua923\ua924\ua925\ua926\ua927\ua928\ua929\ua92a\u1000\u1075\u1001\u1076\u1002\u1077\uaa60\ua9e9\u1003\ua9e0\ua9ea\u1004\u105a\u1005\u1078\uaa61\u1006\ua9e1\uaa62\uaa7e\u1007\uaa63\ua9eb\u1079\uaa72\u1008\u105b\ua9e2\uaa64\ua9ec\u1061\uaa7f\u1009\u107a\uaa65\ua9e7\u100a\u100b\uaa66\u100c\uaa67\u100d\uaa68\ua9ed\u100e\uaa69\ua9ee\u100f\u106e\ua9e3\ua9ef\u1010\u1011\u1012\u107b\ua9fb\u1013\uaa6a\ua9fc\u1014\u107c\uaa6b\u105e\u1015\u1016\u107d\u107e\uaa6f\u108e\ua9e8\u1017\u107f\ua9fd\u1018\ua9e4\ua9fe\u1019\u105f\u101a\u103b\u101b\uaa73\uaa7a\u103c\u101c\u1060\u101d\u103d\u1082\u1080\u1050\u1051\u1065\u101e\u103f\uaa6c\u101f\u1081\uaa6d\u103e\uaa6e\uaa71\u1020\ua9fa\u105c\u105d\u106f\u1070\u1066\u1021\u1022\u1023\u1024\u1025\u1026\u1052\u1053\u1054\u1055\u1027\u1028\u1029\u102a\u102c\u102b\u1083\u1072\u109c\u102d\u1071\u102e\u1033\u102f\u1073\u1074\u1030\u1056\u1057\u1058\u1059\u1031\u1084\u1035\u1085\u1032\u109d\u1034\u1062\u1067\u1068\ua9e5\u1086\u1039\u103a\u1063\u1064\u1069\u106a\u106b\u106c\u106d\u1087\u108b\u1088\u108c\u108d\u1089\u108a\u108f\u109a\u109b\uaa7b\uaa7c\uaa7d\uaa74\uaa75\uaa76\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178a\u178b\u178c\u178d\u178e\u178f\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179a\u179b\u179c\u179d\u179e\u179f\u17a0\u17a1\u17a2\u17dc\u17a3\u17a4\u17a5\u17a6\u17a7\u17a8\u17a9\u17aa\u17ab\u17ac\u17ad\u17ae\u17af\u17b0\u17b1\u17b2\u17b3\u17b6\u17b7\u17b8\u17b9\u17ba\u17bb\u17bc\u17bd\u17be\u17bf\u17c0\u17c1\u17c2\u17c3\u17c4\u17c5\u17d2\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195a\u195b\u195c\u195d\u195e\u195f\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196a\u196b\u196c\u196d\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198a\u198b\u198c\u198d\u198e\u198f\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199a\u199b\u199c\u19de\u19df\u199d\u199e\u199f\u19a0\u19a1\u19a2\u19a3\u19a4\u19a5\u19a6\u19a7\u19a8\u19a9\u19aa\u19ab\u19b0\u19b1\u19b2\u19b3\u19b4\u19b5\u19b6\u19b7\u19b8\u19b9\u19ba\u19bb\u19bc\u19bd\u19be\u19bf\u19c0\u19c1\u19c2\u19c3\u19c4\u19c5\u19c6\u19c7\u19c8\u19c9\u1a20\u1a21\u1a22\u1a23\u1a24\u1a25\u1a26\u1a58\u1a59\u1a27\u1a28\u1a29\u1a2a\u1a2b\u1a2c\u1a2d\u1a2e\u1a2f\u1a30\u1a31\u1a32\u1a33\u1a34\u1a35\u1a36\u1a37\u1a38\u1a39\u1a3a\u1a3b\u1a5a\u1a5b\u1a3c\u1a3d\u1a3e\u1a3f\u1a40\u1a41\u1a42\u1a43\u1a44\u1a45\u1a46\u1a54\u1a47\u1a48\u1a49\u1a4a\u1a4b\u1a4c\u1a53\u1a6b\u1a55\u1a56\u1a57\u1a5c\u1a5d\u1a5e\u1a4d\u1a4e\u1a4f\u1a50\u1a51\u1a52\u1a61\u1a6c\u1a62\u1a63\u1a64\u1a65\u1a66\u1a67\u1a68\u1a69\u1a6a\u1a6e\u1a6f\u1a73\u1a70\u1a71\u1a72\u1a6d\u1a60\uaa00\uaa01\uaa02\uaa03\uaa04\uaa05\uaa06\uaa07\uaa08\uaa09\uaa0a\uaa0b\uaa0c\uaa0d\uaa0e\uaa0f\uaa10\uaa11\uaa12\uaa13\uaa14\uaa15\uaa16\uaa17\uaa18\uaa19\uaa1a\uaa1b\uaa1c\uaa1d\uaa1e\uaa1f\uaa20\uaa21\uaa22\uaa23\uaa24\uaa25\uaa26\uaa27\uaa28\uaa33\uaa34\uaa35\uaa36\uaa29\uaa2a\uaa2b\uaa2c\uaa2d\uaa2e\uaa2f\uaa30\uaa31\uaa32\uaa40\uaa41\uaa42\uaa43\uaa44\uaa45\uaa46\uaa47\uaa48\uaa49\uaa4a\uaa4b\uaa4c\uaa4d\u1b05\u1b06\u1b07\u1b08\u1b09\u1b0a\u1b0b\u1b0c\u1b0d\u1b0e\u1b0f\u1b10\u1b11\u1b12\u1b13\u1b45\u1b46\u1b14\u1b15\u1b16\u1b17\u1b18\u1b19\u1b1a\u1b1b\u1b1c\u1b1d\u1b1e\u1b1f\u1b20\u1b21\u1b22\u1b47\u1b23\u1b24\u1b25\u1b26\u1b27\u1b48\u1b28\u1b29\u1b2a\u1b2b\u1b2c\u1b2d\u1b2e\u1b2f\u1b49\u1b30\u1b31\u1b32\u1b4a\u1b4b\u1b33\u1b35\u1b36\u1b37\u1b38\u1b39\u1b3a\u1b3b\u1b3c\u1b3d\u1b3e\u1b3f\u1b40\u1b41\u1b42\u1b43\u1b44\ua984\ua985\ua986\ua987\ua988\ua989\ua98a\ua98b\ua98c\ua98d\ua98e\ua98f\ua990\ua991\ua992\ua993\ua994\ua995\ua996\ua997\ua998\ua999\ua99a\ua99b\ua99c\ua99d\ua99e\ua99f\ua9a0\ua9a1\ua9a2\ua9a3\ua9a4\ua9a5\ua9a6\ua9a7\ua9a8\ua9a9\ua9aa\ua9be\ua9ab\ua9ac\ua9bf\ua9ad\ua9ae\ua9af\ua9b0\ua9b1\ua9b2\ua9b4\ua9b5\ua9bc\ua9b6\ua9b7\ua9b8\ua9b9\ua9bd\ua9ba\ua9bb\ua9c0\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1843\u1820\u1887\u1821\u1844\u185d\u1822\u1845\u185e\u1873\u1888\u185f\u1823\u1846\u1824\u1847\u1861\u1825\u1848\u1826\u1849\u1860\u1827\u1828\u1829\u184a\u1862\u188a\u189b\u182a\u184b\u182b\u184c\u1866\u182c\u184d\u182d\u184e\u1864\u189a\u1865\u182e\u184f\u182f\u1830\u1831\u1867\u189c\u189d\u18a2\u18a4\u18a5\u1832\u1850\u1868\u1833\u1851\u1869\u1834\u1852\u1871\u1878\u185c\u188b\u1835\u1853\u186a\u1877\u1836\u1855\u1872\u1837\u1875\u1838\u1856\u1839\u186b\u1876\u183a\u1857\u1863\u1874\u1889\u183b\u183c\u1854\u186e\u183d\u186f\u1858\u186c\u183e\u1859\u186d\u183f\u1840\u1841\u1842\u185a\u185b\u1870\u188c\u189e\u188d\u188e\u189f\u188f\u1890\u1898\u18a0\u1891\u18a1\u1892\u1893\u18a8\u1894\u18a3\u1895\u1899\u1896\u1897\u18a6\u18a7\u18aa\u18a9\u1c5a\u1c5b\u1c5c\u1c5d\u1c5e\u1c5f\u1c60\u1c61\u1c62\u1c63\u1c64\u1c65\u1c66\u1c67\u1c68\u1c69\u1c6a\u1c6b\u1c6c\u1c6d\u1c6e\u1c6f\u1c70\u1c71\u1c72\u1c73\u1c74\u1c75\u1c76\u1c77\u1c78\u1c79\u1c7a\u1c7b\u1c7c\u1c7d\uab70\u13a0\uab71\u13a1\uab72\u13a2\uab73\u13a3\uab74\u13a4\uab75\u13a5\uab76\u13a6\uab77\u13a7\uab78\u13a8\uab79\u13a9\uab7a\u13aa\uab7b\u13ab\uab7c\u13ac\uab7d\u13ad\uab7e\u13ae\uab7f\u13af\uab80\u13b0\uab81\u13b1\uab82\u13b2\uab83\u13b3\uab84\u13b4\uab85\u13b5\uab86\u13b6\uab87\u13b7\uab88\u13b8\uab89\u13b9\uab8a\u13ba\uab8b\u13bb\uab8c\u13bc\uab8d\u13bd\uab8e\u13be\uab8f\u13bf\uab90\u13c0\uab91\u13c1\uab92\u13c2\uab93\u13c3\uab94\u13c4\uab95\u13c5\uab96\u13c6\uab97\u13c7\uab98\u13c8\uab99\u13c9\uab9a\u13ca\uab9b\u13cb\uab9c\u13cc\uab9d\u13cd\uab9e\u13ce\uab9f\u13cf\uaba0\u13d0\uaba1\u13d1\uaba2\u13d2\uaba3\u13d3\uaba4\u13d4\uaba5\u13d5\uaba6\u13d6\uaba7\u13d7\uaba8\u13d8\uaba9\u13d9\uabaa\u13da\uabab\u13db\uabac\u13dc\uabad\u13dd\uabae\u13de\uabaf\u13df\uabb0\u13e0\uabb1\u13e1\uabb2\u13e2\uabb3\u13e3\uabb4\u13e4\uabb5\u13e5\uabb6\u13e6\uabb7\u13e7\uabb8\u13e8\uabb9\u13e9\uabba\u13ea\uabbb\u13eb\uabbc\u13ec\uabbd\u13ed\uabbe\u13ee\uabbf\u13ef\u13f8\u13f0\u13f9\u13f1\u13fa\u13f2\u13fb\u13f3\u13fc\u13f4\u13fd\u13f5\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140a\u140b\u140c\u140d\u140e\u140f\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141a\u141b\u141c\u141d\u141e\u141f\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142a\u142b\u142c\u142d\u142e\u142f\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143a\u143b\u143c\u143d\u143e\u143f\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144a\u144b\u144c\u144d\u144e\u144f\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145a\u145b\u145c\u145d\u145e\u145f\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146a\u146b\u146c\u146d\u146e\u146f\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147a\u147b\u147c\u147d\u147e\u147f\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148a\u148b\u148c\u148d\u148e\u148f\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149a\u149b\u149c\u149d\u149e\u149f\u14a0\u14a1\u14a2\u14a3\u14a4\u14a5\u14a6\u14a7\u14a8\u14a9\u14aa\u14ab\u14ac\u14ad\u14ae\u14af\u14b0\u14b1\u14b2\u14b3\u14b4\u14b5\u14b6\u14b7\u14b8\u14b9\u14ba\u14bb\u14bc\u14bd\u14be\u14bf\u14c0\u14c1\u14c2\u14c3\u14c4\u14c5\u14c6\u14c7\u14c8\u14c9\u14ca\u14cb\u14cc\u14cd\u14ce\u14cf\u14d0\u14d1\u14d2\u14d3\u14d4\u14d5\u14d6\u14d7\u14d8\u14d9\u14da\u14db\u14dc\u14dd\u14de\u14df\u14e0\u14e1\u14e2\u14e3\u14e4\u14e5\u14e6\u14e7\u14e8\u14e9\u14ea\u14eb\u14ec\u14ed\u14ee\u14ef\u14f0\u14f1\u14f2\u14f3\u14f4\u14f5\u14f6\u14f7\u14f8\u14f9\u14fa\u14fb\u14fc\u14fd\u14fe\u14ff\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150a\u150b\u150c\u150d\u150e\u150f\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151a\u151b\u151c\u151d\u151e\u151f\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152a\u152b\u152c\u152d\u152e\u152f\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153a\u153b\u153c\u153d\u153e\u153f\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154a\u154b\u154c\u154d\u154e\u154f\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155a\u155b\u155c\u155d\u155e\u155f\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156a\u156b\u156c\u156d\u156e\u156f\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157a\u157b\u157d\u166f\u157e\u157f\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158a\u158b\u158c\u158d\u1670\u158e\u158f\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u1597\u1598\u1599\u159a\u159b\u159c\u159d\u159e\u159f\u15a0\u15a1\u15a2\u15a3\u15a4\u15a5\u15a6\u157c\u15a7\u15a8\u15a9\u15aa\u15ab\u15ac\u15ad\u15ae\u15af\u15b0\u15b1\u15b2\u15b3\u15b4\u15b5\u15b6\u15b7\u15b8\u15b9\u15ba\u15bb\u15bc\u15bd\u15be\u15bf\u15c0\u15c1\u15c2\u15c3\u15c4\u15c5\u15c6\u15c7\u15c8\u15c9\u15ca\u15cb\u15cc\u15cd\u15ce\u15cf\u15d0\u15d1\u15d2\u15d3\u15d4\u15d5\u15d6\u15d7\u15d8\u15d9\u15da\u15db\u15dc\u15dd\u15de\u15df\u15e0\u15e1\u15e2\u15e3\u15e4\u15e5\u15e6\u15e7\u15e8\u15e9\u15ea\u15eb\u15ec\u15ed\u15ee\u15ef\u15f0\u15f1\u15f2\u15f3\u15f4\u15f5\u15f6\u15f7\u15f8\u15f9\u15fa\u15fb\u15fc\u15fd\u15fe\u15ff\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160a\u160b\u160c\u160d\u160e\u160f\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161a\u161b\u161c\u161d\u161e\u161f\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162a\u162b\u162c\u162d\u162e\u162f\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163a\u163b\u163c\u163d\u163e\u163f\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164a\u164b\u164c\u164d\u164e\u164f\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165a\u165b\u165c\u165d\u165e\u165f\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166a\u166b\u166c\u1677\u1678\u1679\u167a\u167b\u167c\u167d\u167e\u167f\u18b0\u18b1\u18b2\u18b3\u18b4\u18b5\u18b6\u18b7\u18b8\u18b9\u18ba\u18bb\u18bc\u18bd\u18be\u18bf\u18c0\u18c1\u18c2\u18c3\u18c4\u18c5\u18c6\u18c7\u18c8\u18c9\u18ca\u18cb\u18cc\u18cd\u18ce\u18cf\u18d0\u18d1\u18d2\u18d3\u18d4\u18d5\u18d6\u18d7\u18d8\u18d9\u18da\u18db\u18dc\u18dd\u18de\u18df\u18e0\u18e1\u18e2\u18e3\u18e4\u18e5\u18e6\u18e7\u18e8\u18e9\u18ea\u18eb\u18ec\u18ed\u18ee\u18ef\u18f0\u18f1\u18f2\u18f3\u18f4\u18f5\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168a\u168b\u168c\u168d\u168e\u168f\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169a\u16a0\u16a1\u16a2\u16a4\u16a5\u16a6\u16a7\u16f0\u16a8\u16a9\u16ac\u16ad\u16ae\u16f4\u16af\u16b0\u16b1\u16b2\u16b3\u16b4\u16b5\u16b6\u16f1\u16b7\u16b9\u16e9\u16ba\u16bb\u16bc\u16bd\u16be\u16bf\u16c0\u16c1\u16c2\u16f5\u16c3\u16c4\u16c5\u16c6\u16ee\u16c7\u16c8\u16d5\u16c9\u16ca\u16cb\u16ea\u16cc\u16cd\u16ce\u16f2\u16cf\u16d0\u16d1\u16d2\u16d3\u16d4\u16d6\u16f6\u16d7\u16d8\u16d9\u16ef\u16da\u16db\u16dc\u16dd\u16de\u16df\u16f3\u16aa\u16f7\u16ab\u16f8\u16a3\u16e0\u16e3\u16b8\u16e4\u16e1\u16e2\u16e5\u16e6\u16e7\u16e8\ua500\ua501\ua502\ua503\ua504\ua505\ua506\ua507\ua508\ua509\ua50a\ua50b\ua50c\ua613\ua50d\ua50e\ua50f\ua510\ua511\ua512\ua513\ua514\ua515\ua516\ua517\ua518\ua519\ua51a\ua51b\ua51c\ua51d\ua51e\ua614\ua51f\ua520\ua521\ua522\ua523\ua524\ua525\ua526\ua527\ua528\ua529\ua52a\ua52b\ua52c\ua52d\ua52e\ua52f\ua530\ua531\ua532\ua533\ua615\ua534\ua535\ua536\ua537\ua538\ua539\ua53a\ua53b\ua53c\ua53d\ua53e\ua53f\ua540\ua541\ua542\ua543\ua544\ua545\ua546\ua547\ua616\ua548\ua549\ua54a\ua54b\ua54c\ua54d\ua54e\ua54f\ua550\ua551\ua552\ua617\ua553\ua554\ua555\ua556\ua557\ua558\ua610\ua618\ua559\ua55a\ua619\ua55b\ua55c\ua55d\ua55e\ua55f\ua560\ua61a\ua561\ua562\ua563\ua564\ua565\ua566\ua567\ua568\ua569\ua56a\ua611\ua56b\ua56c\ua56d\ua56e\ua62a\ua56f\ua570\ua571\ua572\ua573\ua574\ua575\ua576\ua577\ua578\ua579\ua57a\ua57b\ua57c\ua57d\ua57e\ua57f\ua580\ua581\ua582\ua583\ua584\ua585\ua61b\ua586\ua587\ua612\ua588\ua589\ua58a\ua58b\ua58c\ua58d\ua58e\ua58f\ua590\ua591\ua592\ua593\ua594\ua595\ua596\ua597\ua598\ua599\ua59a\ua59b\ua59c\ua59d\ua59e\ua59f\ua5a0\ua5a1\ua5a2\ua5a3\ua5a4\ua5a5\ua5a6\ua5a7\ua5a8\ua5a9\ua5aa\ua5ab\ua5ac\ua5ad\ua5ae\ua5af\ua5b0\ua5b1\ua5b2\ua5b3\ua5b4\ua61c\ua5b5\ua5b6\ua5b7\ua5b8\ua5b9\ua5ba\ua5bb\ua5bc\ua5bd\ua5be\ua5bf\ua5c0\ua5c1\ua5c2\ua5c3\ua5c4\ua5c5\ua5c6\ua5c7\ua5c8\ua5c9\ua5ca\ua5cb\ua61d\ua5cc\ua5cd\ua5ce\ua5cf\ua5d0\ua5d1\ua62b\ua61e\ua5d2\ua5d3\ua5d4\ua5d5\ua5d6\ua5d7\ua5d8\ua61f\ua5d9\ua5da\ua5db\ua5dc\ua5dd\ua5de\ua5df\ua5e0\ua5e1\ua5e2\ua5e3\ua5e4\ua5e5\ua5e6\ua5e7\ua5e8\ua5e9\ua5ea\ua5eb\ua5ec\ua5ed\ua5ee\ua5ef\ua5f0\ua5f1\ua5f2\ua5f3\ua5f4\ua5f5\ua5f6\ua5f7\ua5f8\ua5f9\ua5fa\ua5fb\ua5fc\ua5fd\ua5fe\ua5ff\ua600\ua601\ua602\ua603\ua604\ua605\ua606\ua607\ua608\ua609\ua60a\ua60b\ua60c\ua6a0\ua6a1\ua6a2\ua6a3\ua6a4\ua6a5\ua6a6\ua6a7\ua6a8\ua6a9\ua6aa\ua6ab\ua6ac\ua6ad\ua6ae\ua6af\ua6b0\ua6b1\ua6b2\ua6b3\ua6b4\ua6b5\ua6b6\ua6b7\ua6b8\ua6b9\ua6ba\ua6bb\ua6bc\ua6bd\ua6be\ua6bf\ua6c0\ua6c1\ua6c2\ua6c3\ua6c4\ua6c5\ua6c6\ua6c7\ua6c8\ua6c9\ua6ca\ua6cb\ua6cc\ua6cd\ua6ce\ua6cf\ua6d0\ua6d1\ua6d2\ua6d3\ua6d4\ua6d5\ua6d6\ua6d7\ua6d8\ua6d9\ua6da\ua6db\ua6dc\ua6dd\ua6de\ua6df\ua6e0\ua6e1\ua6e2\ua6e3\ua6e4\ua6e5\ua6e6\ua6e7\ua6e8\ua6e9\ua6ea\ua6eb\ua6ec\ua6ed\ua6ee\ua6ef\u1100\u3131\u3260\uffa1\u326e\u1101\u3132\uffa2\u1102\u3134\u3261\uffa4\u326f\u1103\u3137\u3262\uffa7\u3270\u1104\u3138\uffa8\u1105\u3139\u3263\uffa9\u3271\u1106\u3141\u3264\uffb1\u3272\u1107\u3142\u3265\uffb2\u3273\u1108\u3143\uffb3\u1109\u3145\u3266\uffb5\u3274\u110a\u3146\uffb6\u110b\u3147\u3267\uffb7\u3275\u327e\u110c\u3148\u3268\uffb8\u3276\u327d\u110d\u3149\uffb9\u110e\u314a\u3269\uffba\u3277\u327c\u110f\u314b\u326a\uffbb\u3278\u1110\u314c\u326b\uffbc\u3279\u1111\u314d\u326c\uffbd\u327a\u1112\u314e\u326d\uffbe\u327b\u1113\u1114\u3165\u1115\u3166\u1116\u1117\u1118\u1119\u111a\u3140\uffb0\u111b\u111c\u316e\u111d\u3171\u111e\u3172\u111f\u1120\u3173\u1121\u3144\uffb4\u1122\u3174\u1123\u3175\u1124\u1125\u1126\u1127\u3176\u1128\u1129\u3177\u112a\u112b\u3178\u112c\u3179\u112d\u317a\u112e\u317b\u112f\u317c\u1130\u1131\u1132\u317d\u1133\u1134\u1135\u1136\u317e\u1137\u1138\u1139\u113a\u113b\u113c\u113d\u113e\u113f\u1140\u317f\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u3180\u1148\u1149\u114a\u114b\u114c\u3181\u114d\u114e\u114f\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u3184\u1158\u3185\u1159\u3186\u115a\u115b\u115c\u115d\u115e\ua960\ua961\ua962\ua963\ua964\ua965\ua966\ua967\ua968\ua969\ua96a\ua96b\ua96c\ua96d\ua96e\ua96f\ua970\ua971\ua972\ua973\ua974\ua975\ua976\ua977\ua978\ua979\ua97a\ua97b\ua97c\u115f\u1160\u3164\uffa0\u1161\u314f\uffc2\u1162\u3150\uffc3\u1163\u3151\uffc4\u1164\u3152\uffc5\u1165\u3153\uffc6\u1166\u3154\uffc7\u1167\u3155\uffca\u1168\u3156\uffcb\u1169\u3157\uffcc\u116a\u3158\uffcd\u116b\u3159\uffce\u116c\u315a\uffcf\u116d\u315b\uffd2\u116e\u315c\uffd3\u116f\u315d\uffd4\u1170\u315e\uffd5\u1171\u315f\uffd6\u1172\u3160\uffd7\u1173\u3161\uffda\u1174\u3162\uffdb\u1175\u3163\uffdc\u1176\u1177\u1178\u1179\u117a\u117b\u117c\u117d\u117e\u117f\u1180\u1181\u1182\u1183\u1184\u3187\u1185\u3188\u1186\u1187\u1188\u3189\u1189\u118a\u118b\u118c\u118d\u118e\u118f\u1190\u1191\u318a\u1192\u318b\u1193\u1194\u318c\u1195\u1196\u1197\u1198\u1199\u119a\u119b\u119c\u119d\u119e\u318d\u119f\u11a0\u11a1\u318e\u11a2\u11a3\u11a4\u11a5\u11a6\u11a7\ud7b0\ud7b1\ud7b2\ud7b3\ud7b4\ud7b5\ud7b6\ud7b7\ud7b8\ud7b9\ud7ba\ud7bb\ud7bc\ud7bd\ud7be\ud7bf\ud7c0\ud7c1\ud7c2\ud7c3\ud7c4\ud7c5\ud7c6\u11a8\u11a9\u11aa\u3133\uffa3\u11ab\u11ac\u3135\uffa5\u11ad\u3136\uffa6\u11ae\u11af\u11b0\u313a\uffaa\u11b1\u313b\uffab\u11b2\u313c\uffac\u11b3\u313d\uffad\u11b4\u313e\uffae\u11b5\u313f\uffaf\u11b6\u11b7\u11b8\u11b9\u11ba\u11bb\u11bc\u11bd\u11be\u11bf\u11c0\u11c1\u11c2\u11c3\u11c4\u11c5\u11c6\u11c7\u3167\u11c8\u3168\u11c9\u11ca\u11cb\u11cc\u3169\u11cd\u11ce\u316a\u11cf\u11d0\u11d1\u11d2\u11d3\u316b\u11d4\u11d5\u11d6\u11d7\u316c\u11d8\u11d9\u316d\u11da\u11db\u11dc\u11dd\u316f\u11de\u11df\u3170\u11e0\u11e1\u11e2\u11e3\u11e4\u11e5\u11e6\u11e7\u11e8\u11e9\u11ea\u11eb\u11ec\u11ed\u11ee\u11ef\u11f0\u11f1\u3182\u11f2\u3183\u11f3\u11f4\u11f5\u11f6\u11f7\u11f8\u11f9\u11fa\u11fb\u11fc\u11fd\u11fe\u11ff\ud7cb\ud7cc\ud7cd\ud7ce\ud7cf\ud7d0\ud7d1\ud7d2\ud7d3\ud7d4\ud7d5\ud7d6\ud7d7\ud7d8\ud7d9\ud7da\ud7db\ud7dc\ud7dd\ud7de\ud7df\ud7e0\ud7e1\ud7e2\ud7e3\ud7e4\ud7e5\ud7e6\ud7e7\ud7e8\ud7e9\ud7ea\ud7eb\ud7ec\ud7ed\ud7ee\ud7ef\ud7f0\ud7f1\ud7f2\ud7f3\ud7f4\ud7f5\ud7f6\ud7f7\ud7f8\ud7f9\ud7fa\ud7fb\u30a1\uff67\u30a2\uff71\u3041\u3042\u32d0\u3303\u3300\u3301\u3302\u30a3\uff68\u30a4\uff72\u3043\u3044\u32d1\u3304\u3305\u30a5\uff69\u30a6\uff73\u3045\u3046\u32d2\u30f4\u3094\u3306\u30a7\uff6a\u30a8\uff74\u3047\u3048\u32d3\u3308\u3307\u30a9\uff6b\u30aa\uff75\u3049\u304a\u32d4\u330a\u3309\u30f5\u30ab\uff76\u3095\u304b\u32d5\u30ac\u304c\u330e\u330f\u330b\u330c\u330d\u30ad\uff77\u304d\u32d6\u30ae\u304e\u3310\u3311\u3313\u3312\u3314\u3315\u3316\u3317\u31f0\u30af\uff78\u304f\u32d7\u30b0\u3050\u3318\u3319\u331a\u331b\u30f6\u30b1\uff79\u3096\u3051\u32d8\u30b2\u3052\u331c\u30b3\uff7a\u3053\u32d9\u30b4\u3054\u331e\u30ff\u331d\u30b5\uff7b\u3055\u32da\u30b6\u3056\u331f\u3320\u31f1\u30b7\uff7c\u3057\u32db\u30b8\u3058\u3006\u3321\u31f2\u30b9\uff7d\u3059\u32dc\u30ba\u305a\u30bb\uff7e\u305b\u32dd\u30bc\u305c\u3322\u3323\u30bd\uff7f\u305d\u32de\u30be\u305e\u30bf\uff80\u305f\u32df\u30c0\u3060\u3324\u30c1\uff81\u3061\u32e0\u30c2\u3062\u30c3\uff6f\u30c4\uff82\u3063\u3064\u32e1\u30c5\u3065\u30c6\uff83\u3066\u32e2\u30c7\u3067\u3325\u31f3\u30c8\uff84\u3068\u32e3\u30c9\u3069\u3326\u3327\u30ca\uff85\u306a\u32e4\u3328\u30cb\uff86\u306b\u32e5\u31f4\u30cc\uff87\u306c\u32e6\u30cd\uff88\u306d\u32e7\u30ce\uff89\u306e\u32e8\u3329\u31f5\u30cf\uff8a\u306f\u32e9\u30d0\u3070\u30d1\u3071\u332b\u332c\u332d\u332a\u31f6\u30d2\uff8b\u3072\u32ea\u30d3\u3073\u30d4\u3074\u332e\u332f\u3330\u3331\u31f7\u30d5\uff8c\u3075\u32eb\u30d6\u3076\u30d7\u3077\u3334\u3332\u3333\u3335\u31f8\u30d8\uff8d\u3078\u32ec\u30d9\u3079\u30da\u307a\u333b\u333c\u3337\u3338\u333a\u3336\u3339\u31f9\u30db\uff8e\u307b\u32ed\u30dc\u307c\u30dd\u307d\u333d\u333e\u3340\u3341\u3342\u333f\u30de\uff8f\u307e\u32ee\u3343\u3344\u303c\u3345\u3346\u3347\u30df\uff90\u307f\u32ef\u3348\u3349\u334a\u31fa\u30e0\uff91\u3080\u32f0\u30e1\uff92\u3081\u32f1\u334d\u334b\u334c\u30e2\uff93\u3082\u32f2\u30e3\uff6c\u30e4\uff94\u3083\u3084\u32f3\u334e\u334f\u30e5\uff6d\u30e6\uff95\u3085\u3086\u32f4\u3350\u30e7\uff6e\u30e8\uff96\u3087\u3088\u32f5\u309f\u31fb\u30e9\uff97\u3089\u32f6\u31fc\u30ea\uff98\u308a\u32f7\u3351\u3352\u31fd\u30eb\uff99\u308b\u32f8\u3354\u3353\u31fe\u30ec\uff9a\u308c\u32f9\u3355\u3356\u31ff\u30ed\uff9b\u308d\u32fa\u30ee\u30ef\uff9c\u308e\u308f\u32fb\u30f7\u3357\u30f0\u3090\u32fc\u30f8\u30f1\u3091\u32fd\u30f9\u30f2\uff66\u3092\u32fe\u30fa\u30f3\uff9d\u3093\u3105\u31a0\u3106\u31b4\u3107\u31ac\u3108\u312a\u3109\u310a\u31b5\u310b\u312f\u310c\u310d\u31bb\u31a3\u310e\u31b6\u312b\u31ad\u310f\u31b7\u3110\u31a2\u3111\u3112\u312c\u31bc\u31bd\u3113\u3114\u3115\u3116\u3117\u31a1\u3118\u3119\u31b8\u31b9\u31ba\u311a\u31a9\u311b\u31a7\u31a6\u311c\u312e\u311d\u31a4\u31a5\u311e\u31ae\u311f\u3120\u31af\u3121\u3122\u3123\u3124\u31b2\u3125\u31b0\u31b1\u3126\u3127\u31aa\u31b3\u3128\u31ab\u31a8\u3129\u312d\u31be\u31bf\ua000\ua001\ua002\ua003\ua004\ua005\ua006\ua007\ua008\ua009\ua00a\ua00b\ua00c\ua00d\ua00e\ua00f\ua010\ua011\ua012\ua013\ua014\ua015\ua016\ua017\ua018\ua019\ua01a\ua01b\ua01c\ua01d\ua01e\ua01f\ua020\ua021\ua022\ua023\ua024\ua025\ua026\ua027\ua028\ua029\ua02a\ua02b\ua02c\ua02d\ua02e\ua02f\ua030\ua031\ua032\ua033\ua034\ua035\ua036\ua037\ua038\ua039\ua03a\ua03b\ua03c\ua03d\ua03e\ua03f\ua040\ua041\ua042\ua043\ua044\ua045\ua046\ua047\ua048\ua049\ua04a\ua04b\ua04c\ua04d\ua04e\ua04f\ua050\ua051\ua052\ua053\ua054\ua055\ua056\ua057\ua058\ua059\ua05a\ua05b\ua05c\ua05d\ua05e\ua05f\ua060\ua061\ua062\ua063\ua064\ua065\ua066\ua067\ua068\ua069\ua06a\ua06b\ua06c\ua06d\ua06e\ua06f\ua070\ua071\ua072\ua073\ua074\ua075\ua076\ua077\ua078\ua079\ua07a\ua07b\ua07c\ua07d\ua07e\ua07f\ua080\ua081\ua082\ua083\ua084\ua085\ua086\ua087\ua088\ua089\ua08a\ua08b\ua08c\ua08d\ua08e\ua08f\ua090\ua091\ua092\ua093\ua094\ua095\ua096\ua097\ua098\ua099\ua09a\ua09b\ua09c\ua09d\ua09e\ua09f\ua0a0\ua0a1\ua0a2\ua0a3\ua0a4\ua0a5\ua0a6\ua0a7\ua0a8\ua0a9\ua0aa\ua0ab\ua0ac\ua0ad\ua0ae\ua0af\ua0b0\ua0b1\ua0b2\ua0b3\ua0b4\ua0b5\ua0b6\ua0b7\ua0b8\ua0b9\ua0ba\ua0bb\ua0bc\ua0bd\ua0be\ua0bf\ua0c0\ua0c1\ua0c2\ua0c3\ua0c4\ua0c5\ua0c6\ua0c7\ua0c8\ua0c9\ua0ca\ua0cb\ua0cc\ua0cd\ua0ce\ua0cf\ua0d0\ua0d1\ua0d2\ua0d3\ua0d4\ua0d5\ua0d6\ua0d7\ua0d8\ua0d9\ua0da\ua0db\ua0dc\ua0dd\ua0de\ua0df\ua0e0\ua0e1\ua0e2\ua0e3\ua0e4\ua0e5\ua0e6\ua0e7\ua0e8\ua0e9\ua0ea\ua0eb\ua0ec\ua0ed\ua0ee\ua0ef\ua0f0\ua0f1\ua0f2\ua0f3\ua0f4\ua0f5\ua0f6\ua0f7\ua0f8\ua0f9\ua0fa\ua0fb\ua0fc\ua0fd\ua0fe\ua0ff\ua100\ua101\ua102\ua103\ua104\ua105\ua106\ua107\ua108\ua109\ua10a\ua10b\ua10c\ua10d\ua10e\ua10f\ua110\ua111\ua112\ua113\ua114\ua115\ua116\ua117\ua118\ua119\ua11a\ua11b\ua11c\ua11d\ua11e\ua11f\ua120\ua121\ua122\ua123\ua124\ua125\ua126\ua127\ua128\ua129\ua12a\ua12b\ua12c\ua12d\ua12e\ua12f\ua130\ua131\ua132\ua133\ua134\ua135\ua136\ua137\ua138\ua139\ua13a\ua13b\ua13c\ua13d\ua13e\ua13f\ua140\ua141\ua142\ua143\ua144\ua145\ua146\ua147\ua148\ua149\ua14a\ua14b\ua14c\ua14d\ua14e\ua14f\ua150\ua151\ua152\ua153\ua154\ua155\ua156\ua157\ua158\ua159\ua15a\ua15b\ua15c\ua15d\ua15e\ua15f\ua160\ua161\ua162\ua163\ua164\ua165\ua166\ua167\ua168\ua169\ua16a\ua16b\ua16c\ua16d\ua16e\ua16f\ua170\ua171\ua172\ua173\ua174\ua175\ua176\ua177\ua178\ua179\ua17a\ua17b\ua17c\ua17d\ua17e\ua17f\ua180\ua181\ua182\ua183\ua184\ua185\ua186\ua187\ua188\ua189\ua18a\ua18b\ua18c\ua18d\ua18e\ua18f\ua190\ua191\ua192\ua193\ua194\ua195\ua196\ua197\ua198\ua199\ua19a\ua19b\ua19c\ua19d\ua19e\ua19f\ua1a0\ua1a1\ua1a2\ua1a3\ua1a4\ua1a5\ua1a6\ua1a7\ua1a8\ua1a9\ua1aa\ua1ab\ua1ac\ua1ad\ua1ae\ua1af\ua1b0\ua1b1\ua1b2\ua1b3\ua1b4\ua1b5\ua1b6\ua1b7\ua1b8\ua1b9\ua1ba\ua1bb\ua1bc\ua1bd\ua1be\ua1bf\ua1c0\ua1c1\ua1c2\ua1c3\ua1c4\ua1c5\ua1c6\ua1c7\ua1c8\ua1c9\ua1ca\ua1cb\ua1cc\ua1cd\ua1ce\ua1cf\ua1d0\ua1d1\ua1d2\ua1d3\ua1d4\ua1d5\ua1d6\ua1d7\ua1d8\ua1d9\ua1da\ua1db\ua1dc\ua1dd\ua1de\ua1df\ua1e0\ua1e1\ua1e2\ua1e3\ua1e4\ua1e5\ua1e6\ua1e7\ua1e8\ua1e9\ua1ea\ua1eb\ua1ec\ua1ed\ua1ee\ua1ef\ua1f0\ua1f1\ua1f2\ua1f3\ua1f4\ua1f5\ua1f6\ua1f7\ua1f8\ua1f9\ua1fa\ua1fb\ua1fc\ua1fd\ua1fe\ua1ff\ua200\ua201\ua202\ua203\ua204\ua205\ua206\ua207\ua208\ua209\ua20a\ua20b\ua20c\ua20d\ua20e\ua20f\ua210\ua211\ua212\ua213\ua214\ua215\ua216\ua217\ua218\ua219\ua21a\ua21b\ua21c\ua21d\ua21e\ua21f\ua220\ua221\ua222\ua223\ua224\ua225\ua226\ua227\ua228\ua229\ua22a\ua22b\ua22c\ua22d\ua22e\ua22f\ua230\ua231\ua232\ua233\ua234\ua235\ua236\ua237\ua238\ua239\ua23a\ua23b\ua23c\ua23d\ua23e\ua23f\ua240\ua241\ua242\ua243\ua244\ua245\ua246\ua247\ua248\ua249\ua24a\ua24b\ua24c\ua24d\ua24e\ua24f\ua250\ua251\ua252\ua253\ua254\ua255\ua256\ua257\ua258\ua259\ua25a\ua25b\ua25c\ua25d\ua25e\ua25f\ua260\ua261\ua262\ua263\ua264\ua265\ua266\ua267\ua268\ua269\ua26a\ua26b\ua26c\ua26d\ua26e\ua26f\ua270\ua271\ua272\ua273\ua274\ua275\ua276\ua277\ua278\ua279\ua27a\ua27b\ua27c\ua27d\ua27e\ua27f\ua280\ua281\ua282\ua283\ua284\ua285\ua286\ua287\ua288\ua289\ua28a\ua28b\ua28c\ua28d\ua28e\ua28f\ua290\ua291\ua292\ua293\ua294\ua295\ua296\ua297\ua298\ua299\ua29a\ua29b\ua29c\ua29d\ua29e\ua29f\ua2a0\ua2a1\ua2a2\ua2a3\ua2a4\ua2a5\ua2a6\ua2a7\ua2a8\ua2a9\ua2aa\ua2ab\ua2ac\ua2ad\ua2ae\ua2af\ua2b0\ua2b1\ua2b2\ua2b3\ua2b4\ua2b5\ua2b6\ua2b7\ua2b8\ua2b9\ua2ba\ua2bb\ua2bc\ua2bd\ua2be\ua2bf\ua2c0\ua2c1\ua2c2\ua2c3\ua2c4\ua2c5\ua2c6\ua2c7\ua2c8\ua2c9\ua2ca\ua2cb\ua2cc\ua2cd\ua2ce\ua2cf\ua2d0\ua2d1\ua2d2\ua2d3\ua2d4\ua2d5\ua2d6\ua2d7\ua2d8\ua2d9\ua2da\ua2db\ua2dc\ua2dd\ua2de\ua2df\ua2e0\ua2e1\ua2e2\ua2e3\ua2e4\ua2e5\ua2e6\ua2e7\ua2e8\ua2e9\ua2ea\ua2eb\ua2ec\ua2ed\ua2ee\ua2ef\ua2f0\ua2f1\ua2f2\ua2f3\ua2f4\ua2f5\ua2f6\ua2f7\ua2f8\ua2f9\ua2fa\ua2fb\ua2fc\ua2fd\ua2fe\ua2ff\ua300\ua301\ua302\ua303\ua304\ua305\ua306\ua307\ua308\ua309\ua30a\ua30b\ua30c\ua30d\ua30e\ua30f\ua310\ua311\ua312\ua313\ua314\ua315\ua316\ua317\ua318\ua319\ua31a\ua31b\ua31c\ua31d\ua31e\ua31f\ua320\ua321\ua322\ua323\ua324\ua325\ua326\ua327\ua328\ua329\ua32a\ua32b\ua32c\ua32d\ua32e\ua32f\ua330\ua331\ua332\ua333\ua334\ua335\ua336\ua337\ua338\ua339\ua33a\ua33b\ua33c\ua33d\ua33e\ua33f\ua340\ua341\ua342\ua343\ua344\ua345\ua346\ua347\ua348\ua349\ua34a\ua34b\ua34c\ua34d\ua34e\ua34f\ua350\ua351\ua352\ua353\ua354\ua355\ua356\ua357\ua358\ua359\ua35a\ua35b\ua35c\ua35d\ua35e\ua35f\ua360\ua361\ua362\ua363\ua364\ua365\ua366\ua367\ua368\ua369\ua36a\ua36b\ua36c\ua36d\ua36e\ua36f\ua370\ua371\ua372\ua373\ua374\ua375\ua376\ua377\ua378\ua379\ua37a\ua37b\ua37c\ua37d\ua37e\ua37f\ua380\ua381\ua382\ua383\ua384\ua385\ua386\ua387\ua388\ua389\ua38a\ua38b\ua38c\ua38d\ua38e\ua38f\ua390\ua391\ua392\ua393\ua394\ua395\ua396\ua397\ua398\ua399\ua39a\ua39b\ua39c\ua39d\ua39e\ua39f\ua3a0\ua3a1\ua3a2\ua3a3\ua3a4\ua3a5\ua3a6\ua3a7\ua3a8\ua3a9\ua3aa\ua3ab\ua3ac\ua3ad\ua3ae\ua3af\ua3b0\ua3b1\ua3b2\ua3b3\ua3b4\ua3b5\ua3b6\ua3b7\ua3b8\ua3b9\ua3ba\ua3bb\ua3bc\ua3bd\ua3be\ua3bf\ua3c0\ua3c1\ua3c2\ua3c3\ua3c4\ua3c5\ua3c6\ua3c7\ua3c8\ua3c9\ua3ca\ua3cb\ua3cc\ua3cd\ua3ce\ua3cf\ua3d0\ua3d1\ua3d2\ua3d3\ua3d4\ua3d5\ua3d6\ua3d7\ua3d8\ua3d9\ua3da\ua3db\ua3dc\ua3dd\ua3de\ua3df\ua3e0\ua3e1\ua3e2\ua3e3\ua3e4\ua3e5\ua3e6\ua3e7\ua3e8\ua3e9\ua3ea\ua3eb\ua3ec\ua3ed\ua3ee\ua3ef\ua3f0\ua3f1\ua3f2\ua3f3\ua3f4\ua3f5\ua3f6\ua3f7\ua3f8\ua3f9\ua3fa\ua3fb\ua3fc\ua3fd\ua3fe\ua3ff\ua400\ua401\ua402\ua403\ua404\ua405\ua406\ua407\ua408\ua409\ua40a\ua40b\ua40c\ua40d\ua40e\ua40f\ua410\ua411\ua412\ua413\ua414\ua415\ua416\ua417\ua418\ua419\ua41a\ua41b\ua41c\ua41d\ua41e\ua41f\ua420\ua421\ua422\ua423\ua424\ua425\ua426\ua427\ua428\ua429\ua42a\ua42b\ua42c\ua42d\ua42e\ua42f\ua430\ua431\ua432\ua433\ua434\ua435\ua436\ua437\ua438\ua439\ua43a\ua43b\ua43c\ua43d\ua43e\ua43f\ua440\ua441\ua442\ua443\ua444\ua445\ua446\ua447\ua448\ua449\ua44a\ua44b\ua44c\ua44d\ua44e\ua44f\ua450\ua451\ua452\ua453\ua454\ua455\ua456\ua457\ua458\ua459\ua45a\ua45b\ua45c\ua45d\ua45e\ua45f\ua460\ua461\ua462\ua463\ua464\ua465\ua466\ua467\ua468\ua469\ua46a\ua46b\ua46c\ua46d\ua46e\ua46f\ua470\ua471\ua472\ua473\ua474\ua475\ua476\ua477\ua478\ua479\ua47a\ua47b\ua47c\ua47d\ua47e\ua47f\ua480\ua481\ua482\ua483\ua484\ua485\ua486\ua487\ua488\ua489\ua48a\ua48b\ua48c\ua4f8\ua4f9\ua4fa\ua4fb\ua4fd\ua4fc\ua4d0\ua4d1\ua4d2\ua4d3\ua4d4\ua4d5\ua4d6\ua4d7\ua4d8\ua4d9\ua4da\ua4db\ua4dc\ua4dd\ua4de\ua4df\ua4e0\ua4e1\ua4e2\ua4e3\ua4e4\ua4e5\ua4e6\ua4e7\ua4e8\ua4e9\ua4eb\ua4ed\ua4ea\ua4ec\ua4ee\ua4ef\ua4f0\ua4f1\ua4f2\ua4f3\ua4f4\ua4f5\ua4f6\ua4f7\u4e00\u4e01\u4e02\u4e03\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e90\u5344\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e12\u4e13\u4e17\u4e14\u4e15\u4e16\u4e18\u4e19\u4e1a\u4e1b\u4e1c\u4e1d\u3400\u4e1e\u4e1f\u4e20\u4e21\u4e22\u3401\u3402\u4e23\u4e24\u4e25\u4e3d\u9fd6\u4e26\u4e27\u9fd7\u4db6\u4e28\u4e29\u4e2a\u4e2b\u3403\u3404\u4e2d\u4e2e\u4e2f\u4e30\u4e31\u4e32\u4e33\u4e34\u4e35\u4e36\u4e37\u4e38\u4e49\u4e39\u4e3a\u4e3b\u4e3c\u4e3e\u4e3f\u4e40\u4e41\u4e42\u4e43\u4e44\u3405\u4e45\u4e46\u4e47\u4e48\u4e4a\u4e4b\u4e4c\u5c39\u4e4d\u4e4e\u4e4f\u4e50\u4e51\u4e52\u4e53\u4e54\u3406\u4e55\u4e56\u4e57\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u9fb4\u4e5e\u4e5f\u4e60\u3407\u3408\u3409\u4e63\u4e64\u4e65\u4e66\u340a\u340b\u4e67\u340c\u340d\u340e\u340f\u4e68\u4e69\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e70\u3410\u3411\u3412\u3413\u3414\u3415\u4e71\u4e72\u3416\u3417\u3418\u4e73\u4e74\u4e75\u4e76\u4e77\u4e78\u3419\u341a\u341b\u4e79\u4e7a\u4e7b\u4e7c\u341c\u341d\u341e\u341f\u3420\u4e7d\u4e7e\u4e7f\u4e80\u3421\u3422\u3423\u4e81\u3424\u4e82\u4e83\u4e84\u3425\u3426\u4e85\u4e86\u4e87\u4e88\u3427\u4e89\u4e8a\u4e8b\u3428\u4e8c\u4e8d\u4e8e\u4e8f\u4e91\u4e92\u4e93\u4e94\u4e95\u4e96\u4e97\u4e98\u4e99\u4e9a\u4e9b\u4e9c\u4e9d\u4e9e\u4e9f\u3429\u4ea0\u4ea1\u4ea2\u4ea3\u4ea4\u4ea5\u4ea6\u4ea7\u342a\u342b\u4ea8\u4ea9\u4eaa\u342c\u4eab\u4eac\u342d\u4ead\u4eae\u4eaf\u4eb0\u4eb1\u4eb2\u4eb3\u4eb4\u4eb5\u4eb6\u4eb7\u342e\u4eb8\u342f\u4eb9\u4eba\u4ebb\u4ebc\u4ebd\u4ebe\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec5\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecc\u4ecd\u4ece\u4ecf\u4ed0\u4ed1\u4ed2\u4ed3\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edb\u4edc\u4edd\u4ede\u4edf\u4ee0\u4ee1\u4ee2\u4ee3\u4ee4\u4ee5\u4ee6\u4ee7\u4ee8\u4ee9\u4eea\u4eeb\u4eec\u4eed\u3430\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u4eee\u4eef\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4ef9\u4efa\u4efb\u4efc\u4efd\u4efe\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f09\u4f0a\u4f0b\u4f0c\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f16\u4f17\u4f18\u4f19\u4f1a\u4f1b\u4f1c\u4f1d\u4f1e\u4f1f\u4f20\u4f21\u4f22\u4f23\u4f24\u4f25\u4f26\u4f27\u4f28\u4f29\u4f2a\u4f2b\u4f2c\u4f64\u3438\u3439\u343a\u343b\u343c\u343d\u343e\u343f\u3440\u4f2d\u4f2e\u4f2f\u4f30\u4f31\u4f32\u4f33\u4f34\u4f35\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f43\u4f44\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f65\u4f66\u4f67\u4f68\u3441\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u4f69\u4f6a\u4f6b\u4f6c\u4f6d\u4f6e\u4f6f\u4f70\u4f71\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8c\u4f8d\u4f8e\u4f8f\u4f90\u4f91\u4f92\u4f93\u4f94\u4f95\u4f96\u4f97\u4f98\u4f99\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4f9f\u4fa0\u4fa1\u4fa2\u4fa3\u4fa4\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9\u4faa\u4fab\u4fac\u4fad\u9fc7\u3449\u344a\u344b\u344c\u344d\u344e\u344f\u3450\u3451\u3452\u3453\u3454\u3455\u3456\u4fae\u4faf\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb5\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc6\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe2\u4fe3\u4fe4\u4fe5\u4fe6\u4fe7\u4fe8\u4fe9\u4fea\u4feb\u4fec\u4fed\u3457\u3458\u3459\u345a\u345b\u345c\u345d\u345e\u345f\u3460\u3461\u3462\u4fee\u4fef\u4ff0\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffb\u4ffc\u4ffd\u4ffe\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\u500b\u500c\u500d\u500e\u500f\u5010\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501d\u501e\u501f\u5020\u5021\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503a\u503b\u503c\u503d\u503e\u503f\u3463\u3465\u3466\u3467\u3468\u3469\u346a\u346b\u346c\u346d\u5040\u5041\u5042\u5043\u5044\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5050\u5051\u5052\u5053\u5054\u5055\u5056\u5057\u5058\u5059\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5067\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5076\u5077\u5078\u5079\u507a\u507b\u507c\u507d\u507e\u507f\u3464\u346e\u346f\u3470\u3471\u3472\u5080\u5081\u5082\u5083\u5084\u5085\u5086\u5087\u5088\u5089\u508a\u508b\u508c\u508d\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a3\u50a4\u50a5\u50a6\u50a7\u50a8\u50a9\u9fd8\u3473\u3474\u3475\u3476\u3477\u3478\u3479\u347a\u50aa\u50ab\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50ba\u50bb\u50bc\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u9fd9\u347b\u347c\u347d\u347e\u347f\u3480\u3481\u50ce\u50cf\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d6\u50d7\u50d8\u50d9\u50da\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50eb\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f3\u50f4\u50f7\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348a\u348b\u348c\u348d\u348e\u348f\u3490\u50f2\u50f5\u50f6\u50f8\u50f9\u50fa\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u510f\u3491\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u5110\u5111\u5112\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u512b\u9fda\u3499\u349a\u349b\u349c\u511f\u5120\u5121\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512c\u349d\u349e\u512d\u512e\u512f\u5130\u5131\u5132\u349f\u34a0\u5133\u5134\u5135\u34a1\u34a2\u34a3\u5136\u34a4\u34a5\u34a6\u5137\u5138\u5139\u513a\u34a7\u34a8\u513b\u513c\u513d\u34a9\u513e\u34aa\u513f\u5140\u5141\u5142\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514a\u34ab\u514b\u514c\u514d\u514e\u514f\u5150\u5151\u5152\u5153\u5154\u5155\u5156\u34ac\u5157\u5158\u5159\u515a\u515b\u34ad\u515c\u515d\u515e\u34ae\u515f\u5160\u5161\u5162\u5163\u34af\u5164\u5165\u5166\u5167\u34b0\u34b1\u5168\u6c3d\u34b2\u34b3\u34b4\u5169\u516a\u516b\u516c\u516d\u516e\u516f\u5170\u5171\u5172\u5173\u5174\u9fb9\u5175\u34b5\u34b6\u34b7\u5176\u5177\u5178\u5179\u517b\u34b8\u517a\u517c\u517d\u517e\u517f\u5180\u5181\u34b9\u5182\u5183\u5184\u5185\u5186\u5187\u5188\u5189\u518a\u518b\u518c\u518d\u518e\u518f\u5190\u34ba\u5191\u5192\u5193\u5194\u5195\u34bb\u34bc\u6700\u34bd\u34be\u34bf\u5196\u5197\u5198\u34c0\u34c1\u5199\u519a\u519b\u519c\u519d\u519e\u519f\u51a0\u34c2\u51a1\u51a2\u51a3\u51a4\u51a5\u51a6\u51a7\u51a8\u34c3\u51a9\u34c4\u51aa\u51ab\u34c5\u51ac\u51ad\u51ae\u51af\u51b0\u51b1\u51b2\u51b3\u51b4\u34c6\u34c7\u51b5\u51b6\u51b7\u51b8\u51b9\u51ba\u51bb\u9fd1\u34c8\u51bc\u51bd\u51be\u51bf\u51c0\u34c9\u34ca\u34cb\u34cc\u34cd\u51c1\u51c2\u51c3\u34ce\u34cf\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u34d0\u34d1\u34d2\u51cf\u51d0\u51d1\u34d3\u51d2\u51d3\u51d4\u51d5\u51d6\u34d4\u34d5\u51d7\u34d6\u51d8\u34d7\u51d9\u51da\u51db\u51dc\u51dd\u51de\u51df\u9fdb\u51e0\u51e1\u51e2\u51e3\u51e4\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51eb\u51ec\u51ed\u51ee\u51ef\u51f0\u34d8\u51f1\u51f2\u51f3\u51f4\u51f5\u51f6\u51f7\u51f8\u51f9\u51fa\u51fb\u51fc\u34d9\u51fd\u51fe\u51ff\u5200\u5201\u5202\u5203\u5204\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520d\u34da\u34db\u34dc\u520e\u520f\u5210\u5211\u5212\u5213\u5214\u5215\u5216\u5217\u5218\u5219\u521a\u521b\u34dd\u34de\u521c\u521d\u521e\u521f\u5220\u5221\u5222\u5223\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522b\u522c\u522d\u34df\u34e0\u522e\u522f\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238\u5239\u523a\u523b\u523c\u523d\u523e\u523f\u5240\u5241\u5242\u34e1\u34e2\u34e3\u34e4\u34e5\u34e6\u5243\u5244\u5245\u5246\u5247\u5248\u5249\u524a\u524b\u524c\u524d\u524e\u524f\u5250\u5251\u34e7\u34e8\u34e9\u34ea\u34eb\u5252\u5253\u5254\u5255\u5256\u5257\u5258\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5263\u5264\u5265\u5266\u5267\u34ec\u34ed\u34ee\u34ef\u34f0\u5268\u526a\u526b\u526c\u526d\u526e\u526f\u5270\u5271\u5276\u34f1\u34f2\u34f3\u34f4\u34f5\u34f6\u5269\u5272\u5273\u5274\u5275\u34f7\u34f8\u34f9\u34fa\u34fb\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527e\u527f\u34fc\u34fd\u5280\u5281\u5282\u5283\u5284\u34fe\u34ff\u3500\u3501\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u5285\u5286\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u350a\u5290\u5291\u5292\u5293\u5294\u350b\u350c\u350d\u5295\u350e\u350f\u3510\u5296\u3511\u3512\u5297\u5298\u5299\u529a\u529b\u529c\u529d\u529e\u529f\u52a0\u52a1\u52a2\u3513\u361e\u52a3\u52a4\u52a5\u52a6\u52a7\u52a8\u3514\u3515\u3516\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52af\u52b0\u52b1\u52b2\u52b3\u52b4\u3517\u3518\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52be\u52bf\u3519\u351a\u351b\u52c0\u52c1\u52c2\u52c3\u52c4\u52c5\u52c6\u52c7\u52c8\u52c9\u52ca\u52cb\u351c\u52cc\u52cd\u52ce\u52cf\u52d0\u52d1\u351d\u351e\u351f\u52d2\u52d3\u52d4\u52d5\u52d6\u52d8\u52d9\u52da\u3520\u52db\u52dc\u52dd\u52de\u3521\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u3522\u52ee\u52ef\u52f0\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u3523\u3524\u3525\u3526\u3527\u52f7\u52f8\u52f9\u52fa\u52fb\u52fc\u52fd\u52fe\u52ff\u5300\u5301\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309\u530a\u530b\u530c\u530d\u530e\u530f\u5310\u3528\u5311\u5312\u3529\u5313\u352a\u5314\u5315\u5316\u352b\u5317\u352c\u5318\u5319\u352d\u531a\u531b\u531c\u531d\u531e\u531f\u5320\u5321\u5322\u5323\u5324\u5325\u352f\u3530\u5326\u5327\u5328\u5329\u532a\u532b\u9fa8\u532c\u532d\u532e\u3531\u532f\u3532\u3533\u3534\u5330\u5331\u5332\u3535\u5333\u5334\u5335\u5336\u5337\u3536\u5338\u5339\u533a\u533b\u3537\u533c\u533d\u533e\u533f\u5340\u3538\u5341\u5342\u5343\u5345\u5346\u5347\u5348\u3539\u5349\u534a\u534c\u534b\u534d\u534e\u534f\u5350\u353a\u353b\u5351\u5352\u5353\u5354\u5355\u5356\u9fba\u5357\u5358\u5359\u535a\u353c\u535b\u535c\u535d\u535e\u535f\u5360\u5361\u5362\u5363\u5364\u5365\u5366\u5367\u353d\u5368\u5369\u536a\u536b\u353e\u353f\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u3540\u5376\u5377\u5378\u5379\u537a\u3541\u537b\u537c\u537d\u537e\u537f\u5380\u5381\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389\u538a\u538b\u538c\u538d\u3542\u3543\u3544\u538e\u538f\u5390\u5391\u3545\u3546\u3547\u5392\u5393\u5394\u5395\u3548\u3549\u5396\u5397\u5398\u5399\u539a\u539b\u354a\u539c\u539d\u539e\u539f\u8652\u354b\u354c\u354d\u53a0\u53a1\u53a2\u53a3\u53a9\u53a4\u53a5\u53a6\u53a7\u53a8\u354e\u53aa\u53ab\u354f\u53ac\u53ad\u53ae\u53af\u53b0\u3550\u3551\u53b1\u53b2\u3552\u53b3\u3553\u53b4\u3554\u53b5\u53b6\u53b7\u53b8\u53b9\u3555\u53ba\u53bb\u53bc\u53bd\u53be\u53bf\u53c0\u53c1\u53c2\u3556\u53c3\u53c4\u3557\u3558\u53c5\u53c6\u53c7\u3559\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53ce\u355a\u355b\u53cf\u53d0\u53d1\u53d2\u355c\u53d3\u355d\u53d4\u53d5\u53d6\u53d7\u53d8\u355e\u53d9\u53da\u53db\u53dc\u53dd\u355f\u53de\u53df\u3560\u53e0\ufa0e\u3561\u53e1\u53e2\u58e1\u53e3\u53e4\u53e5\u53e6\u53e7\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f4\u53f5\u53f6\u53f7\u53f8\u53f9\u53fa\u53fb\u53fc\u53fd\u53fe\u3563\u3564\u3565\u4db7\u53ff\u5400\u5401\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5415\u5416\u5417\u3566\u3567\u3568\u4db8\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439\u543a\u543b\u543c\u543d\u543e\u543f\u5440\u5441\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449\u544a\u544b\u544c\u544d\u544e\u544f\u5450\u5451\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459\u545a\u545b\u545c\u3569\u356a\u356b\u356c\u356d\u356e\u356f\u3570\u3571\u3572\u3573\u3574\u3575\u3576\u545d\u545e\u545f\u5460\u5461\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489\u548a\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499\u549a\u549b\u549c\u549d\u3577\u3578\u3579\u357a\u357b\u357c\u357d\u357e\u357f\u549e\u549f\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b5\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54ca\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d1\u54d2\u54d3\u54d4\u54d5\u54d6\u54d7\u54d8\u54d9\u54da\u54db\u54dc\u54dd\u54de\u54df\u3580\u3581\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358a\u358b\u358c\u358d\u358e\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ec\u54ed\u54ee\u54ef\u54f0\u54f1\u54f2\u54f3\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fa\u54fb\u54fc\u54fd\u54fe\u54ff\u5500\u5501\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519\u551a\u551b\u551c\u551d\u551e\u551f\u5520\u5521\u5522\u5523\u5524\u5525\u5526\u5527\u358f\u3590\u3591\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359a\u359b\u359c\u359d\u359e\u5528\u5529\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553a\u553b\u553c\u553d\u553e\u553f\u5540\u5541\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554c\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u555a\u555b\u555c\u555d\u555e\u5560\u5561\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569\u556a\u556c\u556d\u556e\u556f\u5570\u5571\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579\u359f\u35a0\u35a1\u35a2\u35a3\u35a4\u35a5\u35a6\u35a7\u35a8\u35a9\u35aa\u35ab\u35ac\u35ad\u35ae\u35af\u35b0\u35b1\u35b2\u35b3\u35b4\u35b5\u5559\u556b\u557a\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599\u559a\u559b\u559c\u559d\u559e\u559f\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b6\u55b7\u55b8\u55b9\u55ba\u55bb\u55bc\u55bd\u55be\u5645\u35b6\u35b7\u35b8\u35b9\u35ba\u35bb\u35bc\u35bd\u35be\u35bf\u35c0\u35c1\u35c2\u35c3\u35c4\u35c5\u35c6\u35c7\u35c8\u35c9\u35ca\u35cb\u35cc\u35cd\u35ce\u35cf\u35d0\u35d1\u558d\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e0\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55eb\u55ec\u55ed\u55ee\u55ef\u55f0\u55f1\u55f2\u55f3\u55f4\u55f5\u35d2\u35d3\u35d4\u35d5\u35d6\u35d7\u35d8\u35d9\u35da\u35db\u35dc\u35dd\u35de\u35df\u35e0\u35e1\u55f6\u55f7\u55f8\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607\u5608\u5609\u560a\u560b\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5618\u5619\u561a\u561b\u561c\u561d\u561e\u5621\u5622\u5623\u5624\u5625\u5626\u5627\u5651\u5653\u35e2\u35e3\u35e4\u35e5\u35e6\u35e7\u35e8\u35e9\u35ea\u35eb\u35ec\u35ed\u35ee\u35ef\u35f0\u561f\u5620\u5628\u5629\u562a\u562b\u562c\u562d\u562e\u562f\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563c\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5644\u5646\u5647\u5648\u5649\u564a\u564b\u564c\u564d\u564e\u564f\u5650\u5652\u5654\u5656\u5657\u5658\u5659\u565a\u565b\u565c\u565d\u5674\u35f1\u35f2\u35f3\u35f4\u35f5\u35f6\u35f7\u35f8\u35f9\u35fa\u565e\u565f\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5667\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5675\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u35fb\u35fc\u35fd\u35fe\u35ff\u3600\u3601\u3602\u3603\u3604\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5691\u5692\u5693\u56ba\u3605\u3606\u3607\u3608\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a3\u56a4\u3609\u360a\u360b\u360c\u360d\u360e\u360f\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b0\u3610\u3611\u3612\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b8\u56b9\u3613\u3614\u56bb\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56cd\u3615\u3616\u3617\u56c5\u56c6\u56c7\u56c8\u56c9\u56ca\u56cb\u56ce\u3618\u56cc\u56cf\u56d0\u3619\u361a\u56d1\u56d2\u56d3\u56d4\u56d5\u361b\u361c\u56d6\u56d7\u56d8\u56d9\u56da\u56db\u56dc\u9fb1\u361d\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e3\u361f\u56e4\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56eb\u56ec\u56ed\u56ee\u56ef\u56f0\u56f1\u56f2\u56f3\u56f4\u56f5\u56f6\u56f7\u56f8\u56f9\u56fa\u56fb\u56fc\u56fd\u56fe\u3620\u3621\u56ff\u5700\u3622\u5701\u5702\u5703\u5704\u5705\u5706\u3623\u5707\u5708\u5709\u570a\u570b\u570f\u570c\u570d\u570e\u5710\u5711\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u3624\u571a\u571b\u571c\u3625\u571d\u571e\u571f\u5720\u5721\u9fb6\u5722\u5723\u5724\u5725\u5726\u5727\u3626\u5728\u5729\u572a\u572b\u572c\u572d\u572e\u572f\u5730\u5731\u5732\u5733\u5734\u5735\u5736\u5737\u5738\u5739\u573a\u573b\u573c\u573d\u573e\u573f\u5740\u5741\u5742\u5743\u5744\u5745\u5746\u5747\u5748\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5753\u5754\u5755\u5756\u5757\u5758\u5759\u575a\u575b\u575c\u575d\u575e\u575f\u5760\u3627\u3628\u3629\u362a\u362b\u362c\u362d\u362e\u362f\u3630\u5761\u5762\u5763\u5764\u5765\u5766\u5767\u5768\u5769\u576a\u576b\u576c\u576d\u576e\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u5778\u5779\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5781\u5782\u5783\u5784\u5785\u5786\u5787\u5788\u5789\u578a\u3631\u3632\u3633\u3634\u3635\u578b\u578c\u578d\u578e\u578f\u5790\u5791\u5792\u5793\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a6\u57a7\u57a8\u57a9\u57aa\u57ab\u57ac\u57ad\u57ae\u57af\u57b0\u57b1\u57b2\u57b3\u57b4\u57b5\u57ce\u9fcd\u3636\u3637\u3638\u3639\u363a\u363b\u363c\u363d\u363e\u57b6\u57b7\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c2\u57c3\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cb\u57cc\u57cd\u57cf\u57d0\u57d1\u57d2\u57d3\u57d4\u57d5\u57d6\u57d7\u57d8\u57d9\u57da\u57db\ufa0f\u363f\u3640\u3641\u3642\u3643\u3644\u3645\u3646\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e8\u57e9\u57eb\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u57ff\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u580f\u5810\u5811\u5812\u5813\u5814\u5815\u3647\u3648\u3649\u364a\u364b\u364c\u364d\u57ea\u5816\u5817\u5818\u5819\u581a\u581b\u581c\u581d\u581e\u581f\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582b\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583e\u583f\u5840\u5841\u5842\u5844\u5845\u5846\u5847\u5848\u364e\u364f\u3650\u3651\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u583d\u5843\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5850\u5851\u5852\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5860\u5861\u5862\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586a\u586b\u586c\u586d\u586e\u586f\u5870\u5871\u3659\u365a\u365b\u365c\u365d\u365e\u365f\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588c\u588d\u588e\u588f\u5890\u5891\u5892\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589a\u589b\u3660\u3661\u3662\u3663\u3664\u3665\u3666\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58a9\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u3667\u3668\u3669\u366a\u366b\u366c\u366d\u366e\u366f\u58ba\u58bb\u58bc\u58bd\u58be\u58bf\u58c0\u58c1\u58c2\u58c3\u58c4\u58c5\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u9fb3\u3670\u3671\u3672\u3673\u3674\u3675\u3676\u58cd\u58ce\u58cf\u58d0\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d7\u9fbc\u3677\u3678\u3679\u367a\u58d8\u58d9\u367b\u367c\u367d\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e2\u367e\u367f\u58e3\u58e4\u58e5\u3680\u58e6\u58e7\u58e8\u58e9\u3681\u58ea\u3682\u58eb\u58ec\u58ed\u58ee\u58ef\u58f0\u58f1\u58f2\u58f3\u58f4\u58f5\u58f6\u58f7\u58f8\u58f9\u58fa\u58fb\u3683\u58fc\u58fd\u58fe\u58ff\u5900\u3684\u5901\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u3685\u590a\u590b\u590c\u5909\u590d\u3686\u3687\u590e\u590f\u5910\u5911\u5913\u5912\u5914\u5915\u5916\u5917\u5918\u3688\u5919\u591a\u591b\u591c\u591d\u3689\u591e\u591f\u5920\u5921\u368a\u5922\u5923\u5924\u5925\u368b\u368c\u5926\u368d\u5927\u5928\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5930\u5931\u5932\u5933\u5934\u368e\u5935\u5936\u5937\u5938\u5939\u593a\u593b\u593c\u368f\u3690\u3691\u593d\u593e\u593f\u5940\u5941\u5942\u3692\u3693\u5943\u5944\u5945\u5946\u5947\u5948\u5949\u594b\u594c\u594d\u3694\u3695\u3696\u3697\u3698\u3699\u594e\u594f\u5950\u5951\u5952\u5953\u5954\u5955\u5956\u369a\u369b\u594a\u5957\u5958\u5959\u595a\u595b\u595c\u595d\u595e\u369c\u369d\u369e\u595f\u5960\u5961\u5962\u5963\u5964\u5965\u369f\u5966\u5967\u5968\u36a0\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u36a1\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u36a2\u5977\u5978\u5979\u597a\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988\u36a3\u36a4\u36a5\u36a6\u36a7\u36a8\u5989\u598a\u598b\u598c\u598e\u598f\u5990\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998\u5999\u599a\u599b\u599c\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59a9\u59aa\u59ab\u36a9\u36aa\u36ab\u36ac\u36ad\u36ae\u36af\u36e0\u59ac\u59ad\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d5\u59d6\u59d7\u36b0\u36b1\u36b2\u36b3\u36b4\u36b5\u36b6\u36b7\u36b8\u36b9\u36ba\u36bb\u36bc\u36bd\u36be\u36bf\u36c0\u36c1\u598d\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59df\u59e0\u59e1\u59e2\u59e3\u59e4\u59e5\u59e6\u59e7\u59e8\u59e9\u59ea\u59eb\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a05\u5a06\u5a07\u5a08\u36c2\u36c3\u36c4\u36c5\u36c6\u36c7\u36c8\u36c9\u36ca\u36cb\u36cc\u59ec\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0e\u5a0f\u5a10\u5a11\u5a12\u5a13\u5a14\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1a\u5a1b\u5a1c\u5a1d\u5a1e\u5a1f\u5a20\u5a21\u5a22\u5a23\u5a24\u5a25\u5a26\u5a27\u5a28\u5a29\u5a2a\u5a2b\u5a2d\u5a2e\u5a2f\u5a30\u5a31\u5a32\u5a33\u5a34\u5a3d\u36cd\u36ce\u36cf\u36d0\u36d1\u36d2\u36d3\u36d4\u36d5\u36d6\u36d7\u36d8\u36d9\u36da\u36db\u36dc\u36dd\u36de\u36df\u36e1\u36e2\u36e3\u36e4\u5a2c\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3c\u5a3e\u5a3f\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a74\u5a75\u5a76\u36e5\u36e6\u36e7\u36e8\u36e9\u36ea\u36eb\u36ec\u36ed\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aaa\u5aab\u5aac\u5aad\u5aae\u5aaf\u5acf\u36ee\u36ef\u36f0\u36f1\u36f2\u36f3\u36f4\u36f5\u36f6\u36f7\u36f8\u36f9\u36fa\u36fb\u36fc\u36fd\u36fe\u36ff\u3700\u3701\u3702\u3703\u3704\u5a90\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5ad0\u5ad1\u5ad2\u5ad3\u5ad4\u3705\u3706\u3707\u3708\u3709\u370a\u370b\u370c\u370d\u370e\u370f\u3710\u3711\u3712\u3713\u3714\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae7\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5aef\u5af0\u5af1\u5af2\u3715\u3716\u3717\u3718\u3719\u371a\u371b\u371c\u371d\u371e\u371f\u3720\u3721\u3722\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b09\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u3723\u3724\u3725\u3726\u3727\u3728\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b16\u5b17\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b34\u3729\u372a\u372b\u372c\u372d\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b32\u5b33\u5b35\u5b36\u5b37\u372e\u372f\u5b38\u5b3a\u5b3b\u5b3c\u5b3d\u3730\u3731\u5b39\u5b3e\u5b3f\u3732\u3733\u3734\u3735\u5b40\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u3736\u3737\u3738\u5b47\u5b48\u5b49\u3739\u5b4a\u5b4b\u5b4c\u373a\u5b4d\u5b4e\u5b4f\u373b\u373c\u5b50\u5b51\u5b52\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b59\u373d\u5b5a\u5b5b\u5b5c\u5b5d\u5b5e\u373e\u373f\u5b5f\u5b60\u5b61\u5b62\u5b63\u5b64\u5b65\u5b66\u5b67\u3740\u5b68\u5b69\u5b6a\u3741\u5b6b\u5b6c\u5b6d\u3742\u3743\u5b6e\u5b6f\u5b70\u5b72\u5b71\u3744\u5b73\u5b74\u3745\u5b75\u5b76\u5b77\u3746\u5b78\u5b79\u3747\u5b7a\u5b7b\u5b7c\u5b7d\u5b7e\u5b7f\u3748\u5b80\u3749\u5b81\u5b82\u5b83\u5b84\u374a\u374b\u5b85\u5b86\u5b87\u5b88\u5b89\u374c\u374d\u5b8a\u5b8b\u5b8c\u5b8d\u5b8e\u5b8f\u5b90\u5b91\u5b92\u374e\u374f\u3750\u3751\u5b93\u5b94\u5b95\u5b96\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e\u5b9f\u5ba0\u5ba1\u3752\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba8\u5ba9\u5baa\u5bab\u3753\u3754\u3755\u3756\u5ba7\u5bac\u5bad\u5bae\u5baf\u5bb0\u5bb1\u5bb2\u5bb3\u5bb4\u5bb5\u5bb6\u5bb7\u5bb8\u5bb9\u5bba\u5bbb\u5bbc\u5bbd\u5bbe\u3757\u3758\u3759\u375a\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bc8\u5bc9\u375b\u375c\u375d\u375e\u375f\u3760\u3761\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bcf\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bea\u3762\u3763\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5bdd\u3764\u3765\u3766\u3767\u3768\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u3769\u376a\u376b\u376c\u5be9\u5beb\u5bec\u5bed\u5bee\u376d\u376e\u376f\u5bef\u5bf0\u5bf1\u5bf2\u3770\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u3771\u3772\u5bf8\u5bf9\u3773\u5bfa\u5bfb\u5bfc\u5bfd\u5bfe\u5bff\u3774\u5c00\u3775\u5c01\u5c02\u5c06\u5c03\u5c04\u5c05\u3776\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u3777\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u9fb8\u5c16\u5c17\u5c18\u5c19\u5c1a\u5c1b\u5c1c\u5c1d\u3778\u5c1e\u3779\u5c1f\u5c20\u5c21\u377a\u377b\u5c22\u5c23\u5c24\u5c25\u5c26\u5c27\u377c\u5c28\u5c29\u5c2a\u5c2b\u5c2c\u377d\u5c2d\u377e\u377f\u5c2e\u5c2f\u3780\u3781\u3782\u3783\u3784\u3785\u3786\u5c30\u5c31\u3787\u3788\u5c32\u5c33\u5c34\u3789\u378a\u5c35\u5c36\u5c37\u5c38\u5c3a\u5c3b\u5c3c\u378b\u5c3d\u378c\u378d\u5c3e\u5c3f\u5c40\u5c41\u5c42\u5c43\u378e\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u378f\u3790\u3791\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u3792\u3793\u3794\u3795\u3796\u5c50\u5c51\u5c52\u5c53\u5c54\u5c55\u5c56\u5c57\u5c58\u3797\u5c59\u5c5a\u5c5b\u5c5c\u5c5d\u3798\u3799\u5c5e\u5c5f\u5c60\u5c61\u379a\u379b\u5c62\u5c63\u379c\u379d\u379e\u5c64\u5c65\u5c66\u5c67\u379f\u37a0\u5c68\u5c69\u5c6a\u5c6b\u37a1\u5c6c\u5c6d\u5c6e\u4db9\u5c6f\u37a2\u5c70\u37a3\u37b7\u5c71\u4e62\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u37a4\u37a5\u37a6\u37a7\u5c78\u5c79\u5c7a\u5c7b\u5c7c\u5c7d\u5c7e\u5c7f\u5c80\u5c81\u5c82\u5c83\u37a8\u37a9\u37aa\u37ab\u37ac\u37ad\u37ae\u37af\u5c84\u5c85\u5c86\u5c87\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8e\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b\u5c9c\u37b0\u37b1\u37b2\u37b3\u37b4\u37b5\u37b6\u37b8\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb2\u5cb3\u5cb4\u5cb5\u5cb6\u5cb7\u5cb8\u5cb9\u5cba\u5cbb\u5cbc\u5cbd\u5cbe\u5cbf\u5cc0\u5cc1\u5cc2\u5cc3\u5cc4\u5cc5\u37b9\u37ba\u37bb\u37bc\u37bd\u37be\u37bf\u37c0\u37c1\u37c2\u37c3\u5c8d\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce1\u5ce2\u5ce3\u5ce4\u5ce5\u5ce6\u5ce7\u37c4\u37c5\u37c6\u5ce8\u5ce9\u5cea\u5ceb\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfb\u5cfc\u5cfd\u5cfe\u5cff\u5d00\u5d01\u5d02\u5d03\u5d04\u5d05\u37c7\u37c8\u37c9\u37ca\u37cb\u37cc\u37cd\u37ce\u37cf\u37d0\u37d1\u37d2\u37d3\u37d4\u37d5\u37d6\u5d06\u5d07\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1c\u5d1d\u5d1e\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2a\u5d2b\u5d2c\u5d2d\u5d2e\u5d2f\u5d30\u37d7\u37d8\u37d9\u37da\u37db\u37dc\u37dd\u37de\u37df\u37e0\u37e1\u37e2\u37e3\u37e4\u37e5\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4b\u5d4c\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d58\u5d59\u5d5a\u5d5b\u5d5c\u5d5d\ufa11\u37e6\u37e7\u37e8\u37e9\u37ea\u37eb\u37ec\u37ed\u37ee\u37ef\u5d4a\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d69\u5d6a\u5d6b\u5d6c\u5d6d\u5d6e\u5d6f\u5d70\u5d71\u5d72\u5d73\u5d74\u5d75\u5d76\u37f0\u37f1\u37f2\u37f3\u37f4\u37f5\u37f6\u37f7\u37f8\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u37f9\u37fa\u37fb\u37fc\u37fd\u37fe\u37ff\u3800\u3801\u3802\u3803\u3804\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d99\u5d9a\u5d9b\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da3\u5da4\u5da5\u3805\u3806\u3807\u3808\u3809\u380a\u380b\u380c\u380d\u380e\u380f\u3810\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u3811\u3812\u3813\u3814\u3815\u3816\u3817\u5db7\u5db8\u5db9\u5dba\u5dbc\u5dbd\u5dbe\u5dbf\u3818\u3819\u381a\u381b\u381c\u5dc0\u5dc1\u5dc2\u381d\u381e\u381f\u5dbb\u5dc3\u5dc4\u5dc5\u3820\u3821\u3822\u3823\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u3824\u5dcd\u5dcf\u5dd0\u3825\u3826\u5dce\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd7\u3827\u5dd6\u5dd8\u5dd9\u5dda\u3828\u5ddb\u5ddc\u5ddd\u5dde\u5ddf\u3829\u5de0\u5de2\u5de3\u5de4\u5de5\u382a\u5de6\u5de7\u5de8\u5de9\u5dea\u5deb\u5dec\u5ded\u5dee\u382b\u382c\u5def\u382d\u5df0\u382e\u5df1\u5df2\u5df3\u5df4\u382f\u5df5\u5df6\u3830\u5df7\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u3831\u5dfd\u5dfe\u5dff\u5e00\u5e01\u5e02\u5e03\u5e04\u5e05\u3832\u3833\u5e06\u5e07\u5e08\u3834\u3835\u3836\u5e09\u5e0a\u5e0b\u5e0c\u5e0d\u5e0e\u5e0f\u5e10\u3837\u3838\u3839\u383a\u383b\u383c\u5e11\u5e12\u5e13\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1c\u383d\u383e\u383f\u3840\u5e1d\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e26\u5e27\u3841\u3842\u3843\u3844\u3845\u3846\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2d\u5e2e\u5e2f\u5e30\u5e31\u3847\u3848\u5e32\u5e33\u5e34\u5e35\u5e36\u5e37\u5e38\u5e39\u5e3a\u5e3b\u5e3c\u3849\u384a\u384b\u384c\u384d\u384e\u5e3d\u5e3e\u5e3f\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e46\u5e47\u5e49\u384f\u3850\u3851\u3852\u3853\u3854\u3855\u3856\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u3857\u3858\u3859\u385a\u385b\u5e48\u5e51\u5e52\u5e53\u5e54\u5e55\u5e56\u5e57\u5e58\u5e59\u5e5b\u385c\u385d\u385e\u385f\u5e5a\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e64\u5e65\u3860\u3861\u5e66\u5e67\u5e68\u5e69\u3862\u3863\u3864\u5e6a\u5e6b\u5e6c\u3865\u3866\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u3867\u3868\u3869\u386a\u5e72\u5e73\u5e74\u5e75\u5e76\u5e77\u5e78\u5e79\u4e61\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u386b\u386c\u386d\u386e\u5e7f\u5e80\u5e81\u5e82\u5e83\u5e84\u5e85\u5e86\u386f\u3870\u3871\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8e\u5e8f\u5e90\u5e91\u5e92\u5e93\u5e94\u5e98\u3872\u3873\u5e95\u5e96\u5e97\u5e99\u5e9a\u5e9b\u5e9c\u5e9d\u5e9e\u5e9f\u3874\u3875\u3876\u3877\u3878\u3879\u387a\u387b\u5ea0\u5ea1\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u387c\u387d\u387e\u387f\u3880\u3881\u3882\u5ea7\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eaf\u3883\u3884\u3885\u3886\u3887\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5eba\u5ebb\u5ebc\u3888\u3889\u388a\u388b\u388c\u5ebd\u5ebe\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5eca\u388d\u388e\u388f\u3890\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5ecb\u5ecc\u9fee\u3891\u5ec4\u5ecd\u5ece\u5ecf\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u3892\u3893\u3894\u3895\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u3896\u3897\u3898\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eea\u3899\u389a\u389b\u389c\u5eeb\u5eec\u5eed\u9f90\u389d\u5eee\u5eef\u5ef0\u389e\u5ef1\u5ef2\u5ef3\u5ef4\u5ef5\u389f\u5ef6\u5ef7\u5ef8\u5ef9\u38a0\u5efa\u5efb\u5efc\u5efd\u5efe\u5eff\u5f00\u5f01\u5f02\u5f03\u5f04\u5f05\u5f06\u5f07\u5f08\u5f09\u38a1\u5f0a\u38a2\u38a3\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f10\u38a4\u38a5\u5f11\u5f12\u38a6\u5f13\u5f14\u5f15\u5f16\u38a7\u5f17\u5f18\u5f19\u5f1a\u5f1b\u5f1c\u38a8\u38a9\u38aa\u38ab\u5f1d\u5f1e\u5f1f\u5f20\u38ac\u38ad\u5f21\u5f22\u5f23\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2a\u38ae\u38af\u38b0\u38b1\u5f2b\u5f2c\u5f2d\u5f2e\u5f2f\u38b2\u38b3\u38b4\u38b5\u38b6\u38b7\u5f30\u5f31\u5f32\u5f33\u38b8\u38b9\u5f34\u5f35\u5f36\u5f37\u5f38\u5f39\u38ba\u38bb\u38bc\u5f3a\u5f3b\u5f3c\u5f3d\u5f3e\u38bd\u38be\u38bf\u5f3f\u5f40\u5f41\u5f42\u38c0\u38c1\u38c2\u5f43\u5f44\u5f45\u38c3\u5f46\u5f47\u5f48\u5f49\u38c4\u38c5\u5f4a\u5f4b\u5f4c\u5f4d\u38c6\u5f4e\u5f4f\u5f50\u5f51\u5f52\u5f53\u5f54\u5f55\u38c7\u5f56\u5f57\u5f58\u5f59\u5f5a\u5f5b\u5f5c\u38c8\u5f5d\u5f5e\u5f5f\u5f60\u5f61\u38c9\u5f62\u5f63\u5f64\u38ca\u38cb\u38cc\u38cd\u5f65\u5f66\u5f67\u5f68\u5f69\u5f6b\u5f6c\u38ce\u5f6d\u38cf\u38d0\u5f6e\u5f6f\u5f70\u38d1\u5f71\u38d2\u38d3\u5f72\u5f73\u38d4\u5f74\u5f75\u38d5\u5f76\u5f77\u5f78\u5f79\u5f7a\u5f7b\u9fc8\u9fc9\u38d6\u38d7\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f84\u38d8\u38d9\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f8d\u5f94\u38da\u38db\u38dc\u38dd\u38de\u38df\u38e0\u38e1\u5f8e\u5f8f\u5f90\u5f91\u5f92\u5f93\u5f95\u38e2\u38e3\u5f96\u5f97\u5f98\u5f99\u5f9b\u5f9c\u5f9d\u5f9e\u5f9f\u5fa0\u5fa1\u5fa2\u5fa3\u5fa4\u38e4\u38e5\u38e6\u38e7\u38e8\u38e9\u5f9a\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u38ea\u38eb\u38ec\u38ed\u38ee\u5fac\u5fad\u5fae\u5faf\u5fb0\u38ef\u5fb1\u5fb3\u5fb4\u38f0\u38f1\u38f2\u5fb2\u5fb5\u5fb6\u5fb7\u5fb8\u5fb9\u5fba\u38f3\u38f4\u5fbb\u5fbc\u38f5\u38f6\u5fbd\u5fbe\u38f7\u5fbf\u38f8\u5fc0\u5fc1\u38f9\u5fc2\u5fc3\u5fc4\u5fc5\u5fc6\u38fa\u5fc7\u5fc8\u5fc9\u5fca\u38fb\u5fcb\u5fcc\u5fcd\u5fce\u5fcf\u5fd0\u5fd1\u5fd2\u5fd3\u5fd4\u5fd5\u5fd6\u5fd7\u5fd8\u5fd9\u5fda\u5fdb\u5fdc\u38fc\u38fd\u38fe\u38ff\u3900\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe2\u5fe3\u5fe4\u5fe5\u5fe6\u5fe7\u5fe8\u5fe9\u5fea\u5feb\u5fec\u5fed\u5fee\u5fef\u5ff0\u5ff1\u5ff2\u5ff3\u5ff4\u5ff5\u5ff6\u5ff7\u5ff8\u5ff9\u5ffa\u5ffb\u5ffc\u5ffd\u5ffe\u5fff\u6000\u6001\u6002\u6003\u6004\u6005\u6006\u3901\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909\u390a\u390b\u6007\u6008\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6018\u6019\u601a\u601b\u601c\u601d\u601e\u601f\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6030\u6031\u6032\u6033\u6034\u6035\u6036\u6037\u6038\u6039\u603a\u603b\u603c\u603d\u603e\u603f\u390c\u390d\u390e\u390f\u3910\u3911\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604b\u604c\u604d\u604e\u604f\u6050\u6051\u6052\u6053\u6054\u6055\u6056\u6057\u6058\u6059\u605a\u605b\u605c\u605d\u605e\u605f\u6060\u6061\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6071\u6072\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607a\u607b\u607c\u607d\u391a\u391b\u391c\u391d\u391e\u391f\u3920\u3921\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929\u392a\u392b\u392c\u392d\u393a\u607e\u607f\u6080\u6081\u6082\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608b\u608c\u608d\u608e\u608f\u6090\u6091\u6092\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a1\u60a2\u60a3\u60a4\u60a5\u60a6\u60a7\u60a8\u60a9\u60aa\u60ab\u60ac\u60ad\u60ae\u60af\u392e\u392f\u3930\u3931\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939\u393b\u393c\u393d\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d0\u60d1\u60d2\u60d3\u60d4\u60d5\u60d6\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e5\u60e6\u60e7\u60e8\u60e9\u60ea\u60eb\u60ec\u60ed\u60ee\u60ef\u393e\u393f\u3940\u3941\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949\u394a\u394b\u394c\u394d\u394e\u394f\u3950\u3951\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6102\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6111\u6112\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611a\u611b\u611c\u611d\u611e\u611f\u6120\u6121\u6122\u6123\u6124\u6125\u6126\u6168\u395a\u395b\u395c\u395d\u395e\u395f\u3960\u3961\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969\u396a\u396b\u6127\u6128\u6129\u612a\u612b\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u613f\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6151\u396c\u396d\u396e\u396f\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979\u397a\u397b\u6152\u6153\u6154\u6155\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6169\u616a\u616b\u616c\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u397c\u397d\u397e\u397f\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u616d\u6189\u618a\u618b\u618c\u618d\u618e\u618f\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619d\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u3989\u398a\u398b\u398c\u398d\u398e\u398f\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bc\u61bd\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c4\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61ce\u61cf\u61d0\u61d1\u61d2\u61d3\u61d4\u3997\u3998\u3999\u61bb\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u399a\u399b\u399c\u399d\u399e\u399f\u39a0\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u39a1\u39a2\u61f5\u61f6\u61f7\u61f8\u39a3\u39a4\u39a5\u39a6\u39a7\u61f9\u61fa\u61fb\u39a8\u39a9\u39aa\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6202\u39ab\u39ac\u6203\u6204\u6205\u6206\u6207\u39ad\u6208\u6209\u620a\u620b\u620c\u620d\u620e\u620f\u6210\u6211\u6212\u6213\u39ae\u39af\u6214\u6215\u6216\u6217\u39b0\u39b1\u39b2\u6218\u39b3\u6219\u39b4\u39b5\u39b6\u621a\u621b\u621c\u621d\u39b7\u621e\u621f\u6226\u39b8\u6220\u6221\u6222\u6223\u6224\u6225\u39b9\u6227\u6228\u6229\u622a\u622b\u622c\u39ba\u622d\u622e\u622f\u6231\u39bb\u39bc\u6230\u6232\u6234\u39bd\u6233\u6235\u6236\u6237\u6238\u6239\u623a\u623b\u623c\u39be\u623d\u623e\u623f\u6240\u39bf\u39c0\u6241\u6242\u6243\u39c1\u39c2\u6244\u6245\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u9fb5\u624e\u6250\u6251\u6252\u6253\u6254\u6255\u6256\u39c3\u39c4\u39c5\u624f\u6257\u6258\u6259\u625a\u625b\u625c\u625d\u625e\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269\u626a\u626b\u626c\u39c6\u39c7\u39c8\u625f\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6275\u6276\u6277\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628b\u628c\u628d\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299\u629a\u629b\u629c\u629d\u629e\u629f\u62a0\u62a1\u62a2\u62a3\u62a4\u62a5\u39c9\u39ca\u39cb\u39cc\u39cd\u39ce\u39cf\u39d0\u39d1\u6278\u62a6\u62a7\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b2\u62b3\u62b4\u62b5\u62b6\u62b7\u62b8\u62b9\u62ba\u62bb\u62bc\u62bd\u62be\u62bf\u62c0\u62c1\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62dd\u62de\u62df\u62e0\u62e1\u62e2\u62e3\u62e4\u62e5\u62e6\u62e7\u62e8\u62e9\u39d2\u39d3\u39d4\u39d5\u39d6\u39d7\u39d8\u39d9\u39da\u39db\u39dc\u39dd\u39de\u39df\u39e0\u62ea\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307\u6308\u6309\u630a\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317\u6318\u6319\u631a\u631b\u631c\u631d\u631e\u631f\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327\u39e1\u39e2\u39e3\u39e4\u39e5\u39e6\u39e7\u39e8\u39e9\u39ea\u39eb\u39ec\u39ed\u39ee\u39ef\u39f0\u39f1\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u633f\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u635e\u635f\u6360\u6361\u6362\u6363\u6364\u39f2\u39f3\u39f4\u39f5\u39f6\u39f7\u39f8\u6365\u6366\u6367\u6368\u6369\u636a\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637e\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397\u6398\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a6\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b3\u63b4\u63b5\u63b6\u63b7\u63b8\u63b9\u63ba\u63bb\u63bc\u63bd\u39f9\u39fa\u39fb\u39fc\u39fd\u39fe\u39ff\u3a00\u3a01\u3a02\u3a03\u3a04\u3a05\u3a06\u3a07\u3a08\u63b2\u63be\u63bf\u63c0\u63c1\u63c2\u63c3\u63c4\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d4\u63d5\u63d6\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ec\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f7\u63f8\u63f9\u63fa\u63fb\u63fc\u63fd\u63fe\u63ff\u6400\u6401\u6402\u6403\u6404\u6405\u6452\u3a09\u3a0a\u3a0b\u3a0c\u3a0d\u3a0e\u3a0f\u3a10\u3a11\u3a12\u3a13\u3a14\u3a15\u3a17\u3a18\u6406\u6407\u6408\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6411\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u6419\u641a\u641b\u641c\u641d\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u6429\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643c\u643d\u643e\u643f\u6440\u6441\u6442\u6443\u6444\u6445\u6446\u6447\u6448\u6449\u644a\u3a16\u3a19\u3a1a\u3a1b\u3a1c\u3a1d\u3a1e\u3a1f\u3a20\u3a21\u3a22\u3a23\u3a24\u3a25\u3a26\u3a27\u3a28\u3a29\u3a2a\u3a2b\u3a2c\u63c5\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6453\u6454\u6455\u6457\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6467\u6468\u6469\u646a\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6482\u6483\u6484\u6487\u3a2d\u3a2e\u3a2f\u3a30\u3a31\u3a32\u3a33\u3a34\u3a35\u3a36\u3a37\u3a38\u3a39\u3a3a\u3a3b\u3a3c\u3a3d\u3a3e\u3a3f\u3a40\u3a41\u3a42\u6431\u6456\u6485\u6486\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6491\u6492\u6493\u6494\u6495\u6496\u6497\u6498\u6499\u649a\u649b\u649c\u649d\u649e\u649f\u64a0\u64a1\u64a2\u64a3\u64a4\u64a5\u64a6\u64a7\u64a8\u64a9\u64aa\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b5\u64b6\u64b7\u64b8\u64b9\u64ba\u64c6\u3a43\u3a44\u3a45\u3a46\u3a47\u3a48\u3a49\u3a4a\u3a4b\u3a4c\u3a4d\u3a4e\u3a4f\u3a50\u3a51\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cd\u64ce\u64cf\u64d0\u64d1\u64d2\u64d3\u64d4\u64d5\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dc\u64dd\u64de\u3a52\u3a53\u3a54\u3a55\u3a56\u3a57\u3a58\u3a59\u64df\u64e0\u64e1\u64e2\u64e3\u64e4\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u3a5a\u3a5b\u3a5c\u3a5d\u3a5e\u3a5f\u64e5\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6502\u6503\u6504\u6505\u6506\u3a60\u3a61\u3a62\u3a63\u3a64\u3a65\u3a66\u3a67\u3a68\u3a69\u3a6a\u3a6b\u6507\u6508\u6509\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6512\u3a6c\u3a6d\u6511\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651a\u3a6e\u3a6f\u3a70\u651b\u651c\u651d\u3a71\u3a72\u3a73\u3a74\u651e\u651f\u6520\u6521\u6522\u6523\u6524\u6526\u6527\u9fdc\u6525\u6528\u6529\u652a\u652b\u3a75\u3a76\u3a77\u652c\u652d\u652e\u3a78\u3a79\u652f\u6530\u3a7a\u6531\u3a7b\u3a7c\u3a7d\u6532\u3a7e\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653a\u653b\u653c\u3a7f\u3a80\u653d\u653e\u653f\u3a81\u3a82\u6540\u6541\u6542\u6543\u6544\u6545\u3a83\u3a84\u3a85\u3a86\u6546\u6547\u6548\u6549\u654a\u654b\u654c\u3a87\u3a88\u3a89\u555f\u654d\u654e\u654f\u6550\u6551\u6552\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655a\u655b\u3a8a\u3a8b\u3a8c\u3a8d\u3a8e\u655c\u655d\u655e\u655f\u6560\u6561\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u6569\u656a\u656d\u3a8f\u3a90\u3a91\u3a92\u3a93\u3a94\u3a95\u3a96\u3a97\u3a98\u3a99\u3a9a\u656b\u656c\u656e\u656f\u6570\u3a9b\u3a9c\u3a9d\u3a9e\u3a9f\u6571\u6572\u6573\u3aa0\u3aa1\u3aa2\u3aa3\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u3aa4\u3aa5\u3aa6\u657c\u657d\u657e\u657f\u3aa7\u3aa8\u3aa9\u3aaa\u6580\u6581\u6582\u6583\u8d01\u3aab\u3aac\u6584\u6585\u6586\u3aad\u3aae\u6587\u6588\u3aaf\u6589\u658a\u658b\u3ab0\u658c\u658d\u658e\u658f\u6590\u6591\u6592\u3ab1\u6593\u6594\u6595\u6596\u6597\u3ab2\u3ab3\u6598\u3ab4\u3ab5\u6599\u659a\u3ab6\u659b\u659c\u3ab7\u659d\u3ab8\u659e\u659f\u65a0\u65a1\u3ab9\u65a2\u65a3\u3aba\u3abb\u65a4\u65a5\u65a6\u65a7\u65a8\u65a9\u65aa\u65ab\u3abc\u3abd\u3abe\u3abf\u65ac\u65ad\u65ae\u65af\u3ac0\u65b0\u65b1\u65b2\u3ac1\u65b3\u3ac2\u65b4\u65b5\u65b6\u65b7\u65b8\u65b9\u3ac3\u65ba\u65bb\u65bc\u3ac4\u65bd\u65be\u65bf\u65c0\u3ac6\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6\u65ca\u3ac5\u3ac7\u3ac8\u3ac9\u65c7\u65c8\u65c9\u65cb\u65cc\u65cd\u65ce\u65cf\u3aca\u3acb\u3acc\u65d0\u65d1\u3acd\u65d2\u65d3\u65d4\u65d5\u65d6\u65d7\u3ace\u3acf\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e4\u65e5\u65e6\u65e7\u65e8\u65e9\u65ea\u65eb\u65ec\u65ed\u65ee\u65ef\u3ad0\u3ad1\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65f6\u65f7\u65f8\u3ad2\u3ad3\u3ad4\u3ad5\u3ad6\u3ad7\u65f9\u65fa\u65fb\u65fc\u65fd\u65fe\u65ff\u6600\u6601\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u3ad8\u3ad9\u3ada\u661a\u661b\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u6629\u662a\u662b\u662c\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638\u6639\u663a\u663b\u663c\u663d\u663e\u663f\u3adb\u3adc\u3add\u3ade\u3adf\u3ae0\u3ae1\u3ae2\u3ae3\u3ae4\u6640\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664b\u664c\u664d\u664e\u664f\u6650\u6651\u6652\u6653\u6654\u6655\u6656\u3ae5\u3ae6\u3ae7\u3ae8\u3ae9\u3aea\u3aeb\u3aec\u3aed\u3aee\u52d7\u6657\u6658\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6660\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u6669\u66fd\u3aef\u3af0\u3af1\u3af2\u3af3\u3af4\u666a\u666b\u666c\u666d\u666e\u666f\u6670\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u667f\u6680\u6681\u6682\u6683\u6691\u3af5\u3af6\u3af7\u3af8\u3af9\u3afa\u3afb\u3afc\u3afd\u3afe\u3aff\u3b00\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u668f\u6690\u6692\u6693\u6694\u6695\u6696\u6697\u6698\u6699\u3b01\u3b02\u3b03\u3b04\u3b05\u3b06\u3b07\u3b08\u3b09\u3b0a\u3b0b\u3b0c\u669a\u669b\u669c\u669d\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a7\u66a8\u3b0d\u3b0e\u3b0f\u3b10\u66a9\u66aa\u66ab\u66ac\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u3b11\u3b12\u3b13\u3b14\u3b15\u3b16\u66b8\u66b9\u66ba\u66bb\u66bc\u66bd\u66be\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u9fa7\u3b17\u3b18\u3b19\u3b1a\u3b1b\u3b1c\u3b1d\u3b1e\u3b1f\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66da\u3b20\u3b21\u3b22\u66d8\u66d9\u66db\u66dc\u3b23\u3b24\u3b25\u3b26\u3b27\u3b28\u66dd\u66de\u66df\u66e0\u66e1\u66e2\u3b29\u3b2a\u66e3\u66e4\u66e5\u66e6\u66e7\u66e8\u3b2b\u66e9\u3b2c\u3b2d\u66ea\u66eb\u66ec\u3b2e\u66ed\u66ee\u66ef\u3b2f\u66f0\u66f1\u66f2\u66f3\u3b30\u66f4\u66f5\u66f6\u66f7\u66f8\u66fa\u66f9\u66fb\u66fc\u66fe\u66ff\u6701\u6702\u6703\u6704\u6705\u6706\u3b31\u3b32\u6707\u6708\u6709\u670a\u670b\u670c\u670d\u3b33\u4dba\u4dbb\u670e\u670f\u6710\u6712\u6713\u6714\u6715\u3b34\u3b35\u6716\u6717\u6718\u6719\u671a\u671b\u3b36\u3b37\u671c\u671d\u671e\u671f\u3b38\u4dbc\u6720\u4dbd\u6722\u3b3a\u3b3b\u81a4\u3b3c\u3b3d\u3b3e\u6723\u6724\u3b3f\u3b40\u6726\u6727\u6728\u6729\u672a\u672b\u672c\u672d\u672e\u672f\u6730\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6740\u6741\u6742\u6743\u3b41\u6744\u6745\u6746\u6747\u6748\u6749\u674a\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758\u6759\u675a\u675b\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768\u6769\u6781\u3b42\u3b43\u3b44\u3b45\u3b46\u676a\u676b\u676c\u676d\u676e\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6780\u6782\u6783\u6784\u6785\u6786\u6787\u6788\u6789\u678a\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798\u6799\u679a\u679b\u679c\u679d\u679e\u679f\u67a0\u67a1\u67a2\u67a3\u67a4\u67a5\u67a6\u67a7\u67a8\u67a9\u67aa\u67ab\u67ac\u67ad\u3b47\u3b48\u3b49\u3b4a\u3b4b\u3b4c\u3b4d\u3b4e\u3b4f\u3b50\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d5\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e0\u67e1\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e8\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fd\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808\u6809\u680a\u680b\u680c\u680d\u680e\u680f\u6810\u6811\u3b51\u3b52\u3b53\u3b54\u3b55\u3b56\u3b57\u6812\u6813\u6814\u6815\u6816\u6817\u6818\u6819\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u6829\u682a\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u683f\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858\u6859\u685a\u685b\u685c\u685d\u685e\u685f\u6860\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868\u6869\u686a\u9fc4\u3b58\u3b59\u3b5a\u3b5b\u3b5c\u3b5d\u3b5e\u3b5f\u3b60\u3b61\u3b62\u3b63\u3b64\u3b65\u3b66\u3b67\u686b\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u688f\u6890\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a5\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b7\u68b8\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c0\u68c1\u68c2\u3b68\u3b69\u3b6a\u3b6b\u3b6c\u3b6d\u3b6e\u3b6f\u3b70\u3b71\u3b72\u3b73\u3b74\u3b75\u3b77\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68cf\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68d9\u68da\u68db\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e2\u68e3\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u68fe\u68ff\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u691f\u6920\u6921\u6922\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692d\u692e\u3b76\u3b78\u3b79\u3b7a\u3b7b\u3b7c\u3b7d\u3b7e\u3b7f\u3b80\u3b81\u3b82\u3b83\u3b84\u3b85\u3b86\u3b87\u3b88\u3b89\u3b8a\u692f\u6930\u6931\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693a\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u697c\u697d\u697e\u697f\u6980\u6981\u6982\u6983\u6984\u6985\u6986\u6987\u6988\u6989\u698b\u698c\u6994\u6998\ufa13\u3b8b\u3b8c\u3b8d\u3b8e\u3b8f\u3b90\u3b91\u3b92\u3b93\u3b94\u3b95\u3b96\u3b97\u3b98\u3b99\u3b9a\u3b9b\u3b9c\u3b9d\u3b9e\u3b9f\u3ba0\u3ba2\u3ba3\u698a\u698d\u698e\u698f\u6990\u6991\u6992\u6993\u6995\u6996\u6997\u6999\u699a\u699b\u699c\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b8\u69b9\u69ba\u69bb\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d2\u69d3\u69d4\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69db\u69dc\u69dd\u69de\u69df\u69e0\u69e1\u69e9\u6a2e\ufa14\u3ba4\u3ba5\u3ba6\u3ba7\u3ba8\u3ba9\u3baa\u3bab\u3bac\u3bad\u3bae\u3baf\u3bb0\u3bb1\u3bb2\u3bb3\u3bb4\u3bb5\u3bb6\u3bb7\u3bb8\u3bb9\u3bba\u3bbb\u3bbc\u3bbd\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69ea\u69eb\u69ec\u69ed\u69ee\u69ef\u69f0\u69f1\u69f2\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a28\u6a29\u6a2a\u6a2b\u6a2c\u6a2d\u6a2f\u6a30\u6a31\u6a65\u6a74\u3bbe\u3bbf\u3bc0\u3bc1\u3bc2\u3bc3\u3bc4\u3bc5\u3bc6\u3bc7\u3bc8\u3bc9\u3bca\u3bcb\u3bcc\u3bcd\u3bce\u3bcf\u3bd1\u3bd2\u3be0\u6a32\u6a33\u6a34\u6a35\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a61\u6a62\u6a63\u6a64\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a71\u6a72\u6a73\u6a75\u6a76\u6a77\u6a78\u6a79\u6a7a\u6a7b\u6a7c\u3bd0\u3bd3\u3bd4\u3bd5\u3bd6\u3bd7\u3bd8\u3bd9\u3bda\u3bdb\u3bdc\u3bdd\u3bde\u3bdf\u3be1\u3be2\u3be3\u3be4\u3be5\u3be6\u3be7\u3be8\u3be9\u6a7d\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aa9\u6aaa\u3bea\u3beb\u3bec\u3bed\u3bee\u3bef\u3bf0\u3bf1\u3bf2\u3bf3\u3bf4\u3bf5\u3bf6\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u3bf7\u3bf8\u3bf9\u3bfa\u3bfb\u3bfc\u3bfd\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6aeb\u6aed\u3bfe\u3bff\u3c00\u3c01\u3c02\u3c03\u3c04\u3c05\u3c06\u3c07\u3c08\u6ae7\u6ae8\u6ae9\u6aea\u6aec\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u3c09\u3c0a\u3c0b\u3c0c\u3c0d\u3c0e\u3c0f\u3c10\u3c11\u3c12\u3c13\u3c16\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b0c\u3c14\u3c15\u6af7\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0d\u6b0e\u3c17\u3c18\u6b0f\u6b10\u6b11\u6b12\u3c19\u3c1a\u3c1b\u3c1c\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u9fdd\u6b1e\u6b1f\u6b20\u6b21\u6b22\u6b24\u3c1d\u3c1e\u6b23\u6b25\u6b26\u6b27\u3c1f\u3c20\u3c21\u3c22\u6b28\u6b29\u6b2a\u3c23\u3c24\u3c25\u3c26\u3c27\u3c28\u6b2b\u6b2c\u6b2d\u6b2e\u6b2f\u6b30\u6b31\u3c29\u3c2a\u3c2b\u3c2c\u3c2d\u4dbe\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u3c2e\u3c2f\u3c30\u3c31\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u3c32\u3c33\u3c34\u3c35\u3c36\u3c38\u6b40\u6b41\u6b42\u6b43\u6b44\u6b45\u6b46\u6b47\u6b48\u3c39\u3c3a\u3c3b\u3c3c\u3c3d\u3c3e\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u3c3f\u3c40\u3c41\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u3c42\u3c43\u6b54\u6b55\u6b56\u6b57\u6b58\u6b59\u6b5a\u3c44\u3c45\u6b5b\u6b5c\u6b5d\u3c46\u3c47\u3c48\u3c49\u6b5e\u6b5f\u6b60\u3c4a\u3c4b\u6b61\u3c4c\u3c4d\u3c4e\u6b62\u9fb0\u6b63\u6b64\u3c4f\u6b65\u3c50\u3c51\u6b66\u6b67\u6b68\u6b69\u6b6a\u6b6b\u3c52\u3c53\u3c54\u6b6c\u6b6d\u6b6e\u6b6f\u3c55\u3c56\u6b70\u6b71\u6b72\u6b73\u6b74\u3c57\u6b75\u6b76\u6b77\u6b78\u3c58\u6b79\u6b7a\u6b7b\u3c59\u6b7c\u6b7d\u6b7e\u6b7f\u6b80\u6b81\u3c5a\u3c5b\u3c5c\u3c5d\u6b82\u6b83\u6b84\u6b85\u6b86\u6b87\u3c5e\u3c5f\u3c60\u6b88\u6b89\u6b8a\u6b8b\u3c37\u3c61\u6b8c\u6b8d\u6b8e\u6b8f\u6b90\u6b91\u6b92\u6b93\u3c62\u3c63\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9a\u3c64\u3c65\u3c66\u3c67\u3c68\u3c69\u6b9b\u6b9c\u3c6a\u3c6b\u3c6c\u3c6d\u3c6e\u6b9d\u6b9e\u6b9f\u6ba0\u6ba1\u3c6f\u3c70\u3c71\u3c72\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u3c73\u3c74\u6ba7\u6ba8\u6ba9\u6baa\u6bab\u3c75\u3c76\u3c77\u6bac\u6bad\u6bae\u3c78\u6baf\u6bb0\u6bb1\u9fde\u3c79\u3c7a\u6bb2\u3c7b\u6bb3\u3c7c\u6bb4\u3c7d\u6bb5\u6bb6\u6bb7\u3c7e\u3c7f\u6bb8\u6bb9\u6bba\u6bbb\u3c80\u6bbc\u6bbd\u3c81\u3c82\u3c83\u6bbe\u6bbf\u6bc0\u6bc1\u6bc2\u3c84\u6bc3\u6bc4\u3c85\u6bc5\u6bc6\u6bc7\u6bc8\u3c86\u3c87\u3c88\u3c89\u3c8a\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bce\u6bcf\u6bd0\u6bd1\u6bd2\u6bd3\u6bd4\u6bd5\u6bd6\u6bd7\u6bd8\u3c8b\u6bd9\u6bda\u6bdb\u3c8c\u6bdc\u6bdd\u6bde\u6bdf\u3c8d\u3c8e\u3c8f\u3c90\u3c91\u6be0\u6be1\u3c92\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bea\u3c93\u6beb\u6bec\u6bed\u6bee\u3c94\u3c95\u3c96\u3c97\u3c98\u3c99\u3c9a\u6bef\u6bf0\u6bf1\u6bf2\u6bf3\u6bf4\u6bf5\u6bf6\u3c9b\u3c9c\u3c9d\u3c9e\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u3c9f\u3ca0\u3ca1\u3ca2\u3ca3\u6bfe\u3ca4\u3ca5\u3ca6\u3ca7\u3ca8\u3ca9\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c07\u3caa\u3cab\u3cac\u3cad\u3cae\u6c08\u6c09\u6c0a\u6c0b\u3caf\u3cb0\u6c0c\u3cb1\u6c0d\u6c0e\u3cb2\u6c0f\u6c10\u6c11\u6c12\u6c13\u3cb3\u6c14\u6c15\u6c16\u6c17\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u3cb4\u6c1e\u6c1f\u6c20\u6c21\u6c22\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c29\u6c2a\u6c2b\u3cb5\u6c2c\u6c2d\u6c2e\u6c2f\u6c30\u6c31\u6c32\u6c33\u3cb6\u3cb7\u9feb\u6c34\u6c35\u6c3a\u6c36\u6c37\u6c38\u6c39\u3cb8\u6c3b\u6c3c\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c44\u6c45\u6c46\u6c47\u6c48\u6c49\u3cb9\u3cba\u3cbb\u3cbc\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c51\u6c52\u6c53\u6c54\u6c55\u6c56\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c62\u6c63\u6c64\u3cbd\u3cbe\u3cbf\u6c65\u6c66\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c77\u6c78\u6c79\u6c7a\u6c7b\u6c7c\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c91\u6c92\u6c93\u6c94\u6c95\u6c96\u6c97\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9e\u6c9f\u6ca0\u6ca1\u6ca2\u6ca3\u6ca4\u6ca5\u6ca6\u6ca7\u6ca8\u6ca9\u6caa\u3cc0\u3cc1\u3cc2\u3cc3\u3cc4\u3cc5\u3cc6\u3cc7\u3cc8\u3cc9\u3cca\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb5\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc8\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd8\u6cd9\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce4\u6ce5\u6ce6\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf4\u6cf6\u6cf7\u6cf8\u6cf9\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u3ccb\u3ccc\u3ccd\u3cce\u3ccf\u3cd0\u3cd1\u3cd2\u3cd3\u3cd4\u3cd5\u6cda\u6cff\u6d00\u6d01\u6d02\u6d03\u6d04\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d13\u6d14\u6d15\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1c\u6d1d\u6d1e\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d43\u6d44\u6d45\u6d46\u6d47\u6d48\u6d49\u6d4a\u6d4b\u6d4c\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52\u6d53\u6d54\u6d55\u3cd6\u3cd7\u3cd8\u3cd9\u3cda\u3cdb\u3cdc\u3cdd\u3cde\u3cdf\u3ce0\u3ce1\u3ce2\u3ce3\u6d0d\u6d16\u6d56\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5d\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6b\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d73\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6d9a\u6d9b\u6d9c\u6d9d\u6d9e\u6d9f\u6da0\u6da1\u6da2\u6da3\u6da4\u6da5\u6da6\u6da7\u6da8\u6da9\u3ce4\u3ce5\u3ce6\u3ce7\u3ce8\u3ce9\u3cea\u3ceb\u3cec\u3ced\u3cee\u3cef\u3cf0\u3cf1\u3cf2\u3cf3\u6d99\u6daa\u6dab\u6dac\u6dad\u6dae\u6daf\u6db0\u6db1\u6db2\u6db3\u6db4\u6db5\u6db6\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc1\u6dc2\u6dc3\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dce\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de7\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df8\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e04\u6e05\u6e06\u6e07\u6e08\u6e09\u6e0a\u6e0b\u6e0c\u6e0d\u6e0e\u6e0f\u6e10\u6e11\u6e12\u6e13\u6e14\u6e15\u6e16\u6e17\u6e1a\u6e74\u3cf4\u3cf5\u3cf6\u3cf7\u3cf8\u3cf9\u3cfa\u3cfb\u3cfc\u3cfd\u3cfe\u3cff\u3d00\u3d01\u3d02\u3d03\u3d04\u3d05\u3d06\u3d07\u3d08\u3d09\u3d0a\u3d0b\u3d0c\u3d0d\u3d0e\u6e03\u6e18\u6e19\u6e1b\u6e1c\u6e1d\u6e1e\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e37\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e43\u6e44\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4d\u6e4e\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e57\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6b\u6e6c\u6e6d\u6e6e\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e7e\u6e7f\u6e80\u6e81\u6e82\u6e83\u6e84\u6e85\u6e86\u6e87\u6e88\u6e89\u6e8a\u6e8b\u6e8c\u6ecb\u6ede\u9fcc\u3d0f\u3d10\u3d11\u3d12\u3d13\u3d14\u3d15\u3d16\u3d17\u3d18\u3d19\u3d1a\u3d1b\u3d1c\u3d1d\u3d1e\u3d1f\u3d20\u3d21\u3d22\u3d23\u3d24\u6e8d\u6e8e\u6e8f\u6e90\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6ea8\u6ea9\u6eaa\u6eab\u6eac\u6ead\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed7\u6ed8\u6ed9\u6edb\u6edc\u6edd\u6edf\u6ee0\u6ee1\u6ee2\u6ee3\u6ee4\u6ee5\u6ee6\u6ee7\u6ee8\u6ee9\u6eea\u6f13\u3d25\u3d26\u3d27\u3d28\u3d29\u3d2a\u3d2b\u3d2c\u3d2d\u3d2e\u3d2f\u3d30\u3d31\u3d32\u3d33\u3d34\u3d35\u3d36\u3d37\u3d38\u3d39\u3d3a\u3d3b\u6ecc\u6eda\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef0\u6ef1\u6ef2\u6ef3\u6ef4\u6ef5\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0c\u6f0d\u6f0e\u6f0f\u6f10\u6f11\u6f12\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f28\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3e\u6f3f\u6f40\u6f41\u6f42\u6f43\u6f44\u6f45\u6f46\u6f47\u6f48\u6f49\u6f4a\u6f4b\u6f4c\u6f4d\u3d3c\u3d3d\u3d3e\u3d3f\u3d40\u3d41\u3d42\u3d43\u3d44\u3d45\u3d46\u3d47\u3d48\u3d49\u6f0b\u6f3d\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f59\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f65\u6f66\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f71\u6f72\u6f73\u6f74\u6f75\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f81\u6f82\u6f83\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a\u6f8b\u6f8c\u6f8d\u6f8e\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f9a\u6f9b\u6f9c\u6f9d\u6fd0\u9ff0\u3d4a\u3d4b\u3d4c\u3d4d\u3d4e\u3d4f\u3d50\u3d51\u3d52\u3d53\u3d54\u3d55\u3d56\u3d57\u3d58\u3d59\u3d5a\u3d5b\u3d5c\u6f99\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb7\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd1\u6fd2\u6fd3\u6fd6\u3d5d\u3d5e\u3d5f\u3d60\u3d61\u3d62\u3d63\u3d64\u3d65\u3d66\u3d67\u3d68\u3d69\u3d6a\u3d6b\u3d6c\u3d6d\u3d6e\u6f80\u6fd4\u6fd5\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe5\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u3d6f\u3d70\u3d71\u3d72\u3d73\u3d74\u3d75\u3d76\u3d77\u3d78\u3d79\u3d7a\u3d7b\u3d7c\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7011\u7012\u7013\u7014\u3d7d\u3d7e\u3d7f\u3d80\u3d81\u3d82\u3d83\u6ff3\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023\u7024\u7025\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702d\u702e\u3d84\u3d85\u3d86\u3d87\u3d88\u3d89\u3d8a\u3d8b\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7036\u7037\u7038\u7039\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u3d8c\u3d8d\u3d8e\u3d8f\u3d90\u3d91\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704c\u704d\u704f\u7050\u3d92\u3d93\u3d94\u3d95\u3d96\u3d97\u3d98\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u3d99\u3d9a\u7059\u705a\u705b\u705c\u3d9b\u3d9c\u3d9d\u705d\u705e\u705f\u7060\u7061\u3d9e\u3d9f\u7062\u7063\u704e\u7064\u7065\u7066\u3da0\u7067\u7068\u7069\u706a\u706b\u706c\u706d\u706e\u706f\u7070\u7071\u7072\u7073\u7087\u3da1\u3da2\u7074\u7075\u7076\u7077\u7078\u7079\u707a\u707b\u707c\u707d\u707e\u707f\u7080\u3da3\u3da4\u3da5\u7081\u7082\u7083\u7084\u7085\u7086\u7088\u7089\u708a\u708b\u708c\u708d\u708e\u708f\u7090\u7091\u7092\u7093\u7094\u7095\u7096\u7097\u7098\u7099\u709a\u709b\u709c\u709d\u709e\u3da6\u3da7\u3da8\u3da9\u3daa\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b2\u70b3\u70b4\u70b5\u70b6\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70bf\u70c0\u70c1\u70c2\u70c3\u3dab\u3dac\u3dad\u3dae\u3daf\u3db0\u3db1\u3db2\u70c4\u70c5\u70c6\u70c7\u70c8\u70c9\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70db\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e3\u70e4\u70e5\u70e6\u70e7\u70e8\u70e9\u70ea\u70eb\u70ec\u70ed\u70ee\u3db3\u3db4\u3db5\u3db6\u3db7\u3db8\u70ef\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u7109\u710a\u710b\u710c\u710d\u710e\u710f\u7110\u7111\u7112\u7113\u7115\u7116\u7117\u7118\u3db9\u3dba\u3dbb\u3dbc\u3dbd\u3dbe\u3dbf\u3dc0\u3dc1\u7114\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7126\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u716e\u3dc2\u3dc3\u3dc4\u3dc5\u3dc6\u3dc7\u3dc8\u3dc9\u3dca\u3dcb\u3dcc\u3dcd\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7148\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716d\u716f\u7170\u7171\u7172\u7173\u7174\u7175\u7176\u7177\u7178\u717a\u3ba1\u3dce\u3dcf\u3dd0\u3dd1\u3dd2\u3dd3\u3dd4\u3dd5\u3dd6\u3dd7\u3dd8\u3dd9\u3dda\u3ddb\u3ddc\u3ddd\u3dde\u7179\u717b\u717c\u717d\u717e\u717f\u7180\u7181\u7182\u7183\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718b\u718c\u718d\u718e\u718f\u7190\u7191\u7192\u7193\u7194\u7195\u7196\u7197\u7198\u7199\u71a6\u84b8\u3ddf\u3de0\u3de1\u3de2\u3de3\u3de4\u3de5\u3de6\u3de7\u3de8\u3de9\u3dea\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a7\u71a8\u71a9\u71aa\u71ab\u71ac\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u9ed9\u9fa6\u9fbd\u3deb\u3dec\u3ded\u3dee\u3def\u3df0\u3df1\u3df2\u71b6\u71b7\u71b8\u71b9\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71ce\u71cf\u71d0\u71d1\u71d2\u71d3\u71d4\u71d5\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u3df3\u3df4\u3df5\u3df6\u3df7\u3df8\u3df9\u3dfa\u3dfb\u3dfc\u3dfd\u71df\u71e0\u71e1\u71e2\u71e3\u71e4\u71e5\u71e6\u71e7\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ee\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u9fea\u3dfe\u3dff\u3e00\u3e01\u3e02\u3e03\u71f8\u71f9\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u3e04\u3e05\u7204\u7205\u7206\u7207\u7208\u7209\u720a\u720c\u720d\u720e\u7215\u3e06\u3e07\u3e09\u720b\u720f\u7210\u7211\u7212\u7213\u7214\u7216\u7217\u7218\u3e08\u3e0a\u3e0b\u3e0c\u7219\u721a\u721b\u3e0d\u721c\u721d\u721e\u721f\u7220\u3e0e\u7221\u7222\u3e0f\u3e10\u7223\u7224\u7225\u7226\u3e11\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u3e12\u3e13\u722e\u722f\u7230\u7231\u3e14\u7232\u7233\u3e15\u5655\u7234\u7235\u7236\u7237\u7238\u3e16\u7239\u3e17\u3e18\u723a\u3e19\u723b\u3e1a\u723c\u723d\u723e\u4e2c\u723f\u7240\u7241\u3e1b\u7242\u3e1c\u7243\u7244\u7245\u7246\u7247\u7248\u3e1d\u3e1e\u7249\u724a\u3e1f\u3e20\u3e21\u724b\u724c\u724d\u724e\u724f\u7250\u7251\u7252\u7253\u7254\u3e22\u7255\u7256\u7257\u3e23\u3e24\u7258\u3e25\u7259\u3e26\u3e27\u725a\u725b\u725c\u725d\u725e\u725f\u3e28\u7260\u7261\u7262\u7263\u7264\u3e29\u3e2a\u7265\u7266\u7267\u7268\u7269\u726a\u726b\u726c\u3e2b\u3e2c\u3e2d\u3e2e\u3e2f\u726d\u726e\u726f\u7270\u7271\u7272\u7273\u7274\u7275\u3e30\u3e31\u3e32\u3e33\u3e34\u7276\u7277\u7278\u7279\u727a\u3e35\u3e36\u3e37\u3e38\u727b\u727c\u727d\u727e\u727f\u7281\u3e39\u3e3a\u3e3b\u3e3c\u3e3d\u3e3e\u3e3f\u3e40\u7280\u7282\u7283\u7284\u7285\u7286\u7287\u7288\u7289\u728a\u728b\u3e41\u3e42\u3e43\u728c\u728d\u728e\u728f\u7290\u7291\u3e45\u3e46\u3e47\u3e48\u7292\u7293\u7294\u7295\u7296\u7297\u3e44\u3e49\u3e4a\u3e4b\u7298\u7299\u729a\u729b\u3e4c\u3e4d\u3e4e\u3e4f\u3e50\u729c\u729d\u729e\u729f\u3e51\u3e52\u3e53\u72a0\u3e54\u3e55\u3e56\u3e57\u3e58\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u3e59\u72a7\u72a8\u3e5a\u72a9\u3e5b\u72aa\u72ab\u72ac\u72ad\u72ae\u72af\u72b0\u72b1\u72b2\u72b3\u72b4\u72b5\u72b6\u72b7\u72b8\u72b9\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c7\u72c8\u3e5c\u3e5d\u3e5e\u3e5f\u3e60\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72cf\u72d0\u72d1\u72d2\u72d3\u72d4\u72d5\u72d6\u72d7\u72d8\u72d9\u72da\u72db\u72dc\u72dd\u72de\u3e61\u3e62\u3e63\u3e64\u3e65\u3e66\u3e67\u3e68\u3e69\u3e6a\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72e8\u72e9\u72ea\u72eb\u72ec\u72ed\u72ee\u72ef\u72f0\u72f1\u72f2\u3e6b\u3e6c\u3e6d\u3e6e\u3e6f\u3e70\u72f3\u72f4\u72f5\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7303\u3e71\u3e72\u3e73\u3e74\u3e75\u3e76\u3e77\u3e78\u7304\u7305\u7306\u7307\u7308\u7309\u730a\u730b\u730c\u730d\u730e\u730f\u7310\u7311\u7312\u7313\u7314\u7315\u7316\u7317\u7318\u7319\u731a\u731b\u731c\u731d\u731e\u731f\u7320\u7321\u732a\u732b\u3e79\u3e7a\u3e7b\u3e7c\u3e7d\u3e7e\u3e7f\u3e80\u7322\u7323\u7324\u7325\u7326\u7327\u7328\u7329\u732c\u732d\u732e\u732f\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u7341\u3e81\u3e82\u3e83\u3e84\u3e85\u3e86\u733a\u733b\u733c\u733d\u733e\u733f\u7340\u7342\u7343\u7345\u7346\u7347\u7348\u7349\u734a\u3e87\u3e88\u3e89\u3e8a\u3e8b\u3e8c\u3e8d\u7344\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7353\u7354\u7355\u3e8e\u3e8f\u3e90\u3e91\u3e92\u3e93\u734b\u7356\u7357\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7360\u7361\u7362\u7363\u7364\u3e94\u3e95\u3e96\u3e97\u3e98\u3e99\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736d\u3e9a\u3e9b\u3e9c\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u3e9d\u3e9e\u3e9f\u7375\u7376\u7377\u7378\u3ea0\u7379\u737a\u737b\u3ea1\u3ea2\u737c\u737d\u3ea3\u3ea4\u3ea5\u3ea6\u737e\u737f\u7380\u7381\u7382\u7383\u3ea7\u7384\u7385\u7386\u7387\u7388\u7389\u738b\u738a\u738c\u738d\u738e\u738f\u7390\u7391\u3ea8\u3ea9\u3eaa\u3eab\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u7399\u739a\u739b\u3eac\u3ead\u3eae\u3eaf\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73ae\u73af\u73b0\u73b1\u9ff1\u3eb0\u3eb1\u3eb2\u3eb3\u3eb4\u3eb5\u3eb6\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73ba\u73bb\u73bc\u73bd\u73be\u73bf\u73c0\u73c1\u73c2\u73c3\u73c4\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d1\u3eb7\u3eb8\u3eb9\u3eba\u3ebb\u3ebc\u3ebd\u3ebe\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73df\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ec\u73ed\u73ee\u73ef\u73f0\u73f1\u73f2\u7409\u3ebf\u3ec0\u3ec1\u3ec2\u3ec3\u3ec4\u3ec5\u3ec6\u3ec7\u3ec8\u73f3\u73f4\u73f5\u73f6\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7403\u7404\u7405\u7406\u7407\u7408\u740a\u740b\u740c\u740d\u740e\u740f\u7410\u7411\u7412\u7413\u3ec9\u3eca\u3ecb\u3ecc\u3ecd\u3ece\u3ecf\u3ed0\u73f7\u7414\u7415\u7416\u7417\u7418\u7419\u741a\u741b\u741c\u741d\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7427\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743b\u743c\u3ed1\u3ed2\u3ed3\u3ed4\u3ed5\u3ed6\u3ed7\u3ed8\u3ed9\u3eda\u3edb\u3edc\u741e\u743d\u743e\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7458\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u3edd\u3ede\u3edf\u3ee0\u3ee1\u3ee2\u3ee3\u3ee4\u3ee5\u3ee6\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7477\u7478\u3ee7\u3ee8\u3ee9\u3eea\u7479\u747a\u747b\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7484\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748e\u7493\u3eeb\u3eec\u3eed\u3eee\u3eef\u3ef0\u3ef1\u3ef2\u3ef3\u3ef4\u748d\u748f\u7490\u7491\u7492\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749c\u749d\u749e\u749f\u74a0\u74a1\u74a3\u74a4\u3ef5\u3ef6\u3ef7\u3ef8\u3ef9\u3efa\u3efb\u3efc\u74a2\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u3efd\u3efe\u3eff\u3f00\u3f01\u3f02\u74b5\u74b6\u74b7\u74b8\u74b9\u74ba\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\u74c8\u74c9\u74ca\u74cb\u3f03\u3f04\u3f05\u3f06\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d2\u3f07\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u3f08\u74db\u74dc\u74dd\u3f09\u3f0a\u74de\u74df\u3f0b\u3f0c\u74e0\u3f0d\u3f0e\u3f0f\u74e1\u3f10\u3f11\u3f12\u3f13\u3f14\u74e2\u3f15\u74e3\u74e4\u74e5\u3f16\u74e6\u74e7\u3f17\u74e8\u74e9\u3f18\u3f19\u74ea\u74eb\u74ec\u74ed\u74ee\u74ef\u74f0\u74f1\u74f2\u3f1a\u3f1b\u74f3\u74f4\u74f5\u3f1c\u3f1d\u3f1e\u3f1f\u3f20\u74f6\u74f7\u74f8\u3f21\u3f22\u3f23\u3f24\u3f25\u3f26\u74f9\u74fa\u74fb\u74fc\u3f27\u3f28\u3f29\u3f2a\u74fd\u74fe\u74ff\u7500\u7501\u3f2b\u3f2c\u3f2d\u3f2e\u3f2f\u3f30\u3f31\u7502\u7503\u7504\u7505\u7506\u3f32\u3f33\u3f34\u3f35\u3f36\u3f37\u7507\u7508\u7509\u3f38\u3f39\u3f3a\u750a\u750b\u750c\u750d\u750e\u3f3b\u3f3c\u3f3d\u3f3e\u750f\u7510\u7511\u7512\u3f3f\u3f40\u3f41\u3f42\u3f43\u3f44\u3f45\u7513\u7514\u7515\u3f46\u3f47\u7516\u3f48\u3f49\u7517\u3f4a\u3f4b\u3f4c\u7518\u7519\u751a\u3f4d\u751b\u751c\u751d\u751e\u3f4e\u3f4f\u3f50\u3f51\u751f\u7520\u7521\u7522\u7523\u7524\u7525\u7526\u3f52\u7527\u3f53\u3f54\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538\u7539\u753a\u753c\u3f55\u3f56\u3f57\u753b\u753d\u753e\u753f\u7540\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548\u7549\u754a\u754b\u754c\u754d\u754e\u754f\u7550\u7551\u7552\u7553\u3f58\u3f59\u3f5a\u7554\u7555\u7556\u7557\u7558\u7559\u755a\u755b\u755c\u755d\u755e\u755f\u3f5b\u3f5c\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7569\u7570\u3f5d\u3f5e\u756a\u756b\u756c\u756d\u756e\u756f\u7572\u7573\u7574\u3f5f\u3f60\u7575\u7576\u7577\u7578\u7579\u757a\u3f61\u3f62\u3f63\u3f64\u7571\u757b\u757c\u757d\u3f65\u757e\u757f\u3f66\u3f67\u3f68\u7580\u7581\u7582\u3f69\u7583\u7584\u3f6a\u7585\u3f6b\u3f6c\u7586\u7587\u3f6d\u7588\u3f6e\u7589\u758a\u3f6f\u758b\u758c\u758d\u758e\u758f\u3f70\u7590\u7591\u7592\u7593\u7594\u7595\u7596\u7597\u3f71\u3f72\u7598\u7599\u759a\u759b\u759c\u759d\u759e\u759f\u75a0\u3f73\u3f74\u3f75\u3f76\u75a1\u75a2\u75a3\u75a4\u75a5\u75a6\u75a7\u75a8\u75a9\u75aa\u75ab\u75ac\u75ad\u75ae\u75af\u75ba\u3f77\u3f78\u3f79\u3f7a\u3f7b\u3f7c\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b7\u75b8\u75b9\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c6\u75c7\u75c8\u75c9\u3f7d\u3f7e\u3f7f\u3f80\u3f81\u3f82\u3f83\u3f84\u3f85\u3f86\u3f87\u3f88\u3f89\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d3\u75d4\u75d5\u75d6\u3f8a\u3f8b\u3f8c\u3f8d\u3f8e\u3f8f\u3f90\u3f91\u3f92\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3\u75e4\u75e5\u75e6\u75e7\u75e8\u75e9\u75ea\u75eb\u3f93\u3f94\u3f95\u3f96\u3f97\u3f98\u3f99\u3f9a\u3f9b\u3f9c\u3f9d\u3f9e\u3f9f\u3fa0\u3fa1\u75ec\u75ed\u75ee\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7604\u7605\u7606\u3fa2\u3fa3\u3fa4\u3fa5\u3fa6\u3fa7\u3fa8\u3fa9\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760e\u760f\u7610\u7611\u7612\u7613\u7614\u7615\u7616\u7617\u7618\u761f\u7627\u3faa\u3fab\u3fac\u3fad\u3fae\u3faf\u3fb0\u3fb1\u3fb2\u3fb3\u3fb4\u3fb5\u7619\u761a\u761b\u761c\u761d\u761e\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7628\u7629\u762a\u762b\u3fb6\u3fb7\u3fb8\u3fb9\u3fba\u3fbb\u3fbc\u3fbd\u3fbe\u3fbf\u3fc0\u3fc1\u762c\u762d\u762e\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763a\u763b\u763c\u763d\u763e\u763f\u764a\u3fc2\u3fc3\u3fc4\u3fc5\u3fc6\u3fc7\u3fc8\u7640\u7641\u7642\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764b\u764c\u764d\u764e\u3fc9\u3fca\u764f\u7650\u7651\u7652\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765a\u765b\u765c\u765d\u765e\u3fcb\u3fcc\u3fcd\u3fce\u3fcf\u3fd0\u765f\u7660\u7661\u7663\u3fd1\u3fd2\u3fd3\u7662\u7664\u7665\u7666\u3fd4\u7667\u7668\u7669\u766a\u766b\u3fd5\u3fd6\u3fd7\u766c\u766d\u766e\u3fd8\u766f\u7670\u3fd9\u7671\u7672\u3fda\u3fdb\u7673\u7674\u3fdc\u7675\u7676\u7677\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7680\u7681\u7682\u7683\u3fdd\u7684\u7685\u7686\u7687\u7688\u3fde\u7560\u7689\u768a\u768b\u768c\u768d\u3fdf\u768e\u768f\u7690\u7691\u3fe0\u3fe1\u7692\u7693\u7694\u7695\u7696\u7697\u7698\u7699\u3fe2\u3fe3\u3fe4\u769a\u769b\u769c\u769d\u769e\u3fe5\u769f\u76a0\u76a1\u3fe6\u76a2\u76a3\u76a4\u76a5\u76a6\u76a7\u76a8\u76a9\u3fe7\u76aa\u76ab\u76ac\u3fe8\u76ad\u3fe9\u76ae\u76af\u3fea\u3feb\u3fec\u76b0\u76b1\u3fed\u3fee\u76b2\u3fef\u3ff0\u76b3\u76b4\u3ff1\u76b5\u9fbe\u3ff2\u3ff3\u76b6\u76b7\u76b8\u76b9\u3ff4\u3ff5\u76ba\u3ff6\u3ff7\u76bb\u3ff8\u76bc\u76bd\u3ff9\u76be\u3ffa\u76bf\u76c0\u76c1\u76c2\u3ffb\u76c3\u76c4\u76c5\u76c6\u76c7\u76c8\u3ffc\u3ffd\u76c9\u76ca\u76cb\u76cc\u76cd\u76ce\u76cf\u76d0\u76d1\u3ffe\u3fff\u4000\u76d2\u76d3\u76d4\u76d5\u76d6\u76d7\u76d8\u76db\u4001\u4002\u76d9\u76da\u76dc\u4003\u76dd\u76de\u76df\u4004\u4005\u76e0\u76e1\u76e2\u76e3\u4006\u76e4\u76e5\u76e6\u76e7\u4007\u4008\u76e8\u76e9\u76ea\u4009\u76eb\u76ec\u400a\u76ed\u400b\u400c\u400d\u76ee\u76ef\u400e\u400f\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u4010\u4011\u4012\u4013\u4014\u76f6\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fd\u76fe\u76ff\u7700\u7701\u7702\u7703\u7704\u7705\u7706\u7707\u7708\u7709\u770a\u770b\u770c\u770d\u4015\u4016\u4017\u4018\u4019\u401a\u401b\u401c\u401d\u401e\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u7719\u771a\u771b\u771c\u771d\u771e\u771f\u7720\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772a\u772b\u772c\u773f\u401f\u4020\u4021\u4022\u4023\u4024\u4025\u4026\u772d\u772e\u772f\u7730\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d\u773e\u7741\u4027\u4028\u4029\u402a\u402b\u402c\u402d\u402e\u7740\u7742\u7743\u7744\u7745\u7746\u7747\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7750\u7751\u9fc3\u402f\u4030\u4031\u4032\u4033\u4034\u4035\u4036\u4037\u4038\u4039\u403a\u403b\u403c\u403d\u403e\u403f\u4040\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775a\u775b\u775c\u775d\u775e\u775f\u7760\u7762\u7763\u7764\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u4041\u4042\u4043\u4044\u4045\u4046\u4047\u4048\u4049\u7761\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7786\u404a\u404b\u404c\u404d\u404e\u404f\u4050\u4051\u4052\u4053\u4054\u4055\u4056\u7787\u7788\u7789\u778a\u778b\u778c\u778d\u778e\u778f\u7790\u7791\u7792\u7793\u4057\u4058\u4059\u405a\u405b\u405c\u405d\u405e\u405f\u4060\u4061\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u4062\u4063\u4064\u4065\u4066\u4067\u4068\u4069\u406a\u77a4\u77a5\u77a6\u77a7\u77a8\u77a9\u77aa\u77ab\u77ac\u77ad\u77ae\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u406b\u406c\u406d\u406e\u406f\u4070\u4071\u4072\u4073\u77b8\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c0\u77c1\u77c2\u4074\u4075\u4076\u4077\u4078\u4079\u407a\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u407b\u407c\u407d\u407e\u77d0\u77d1\u77d2\u77d3\u407f\u4080\u4081\u77d4\u4082\u4083\u77d5\u77d7\u77d8\u77d9\u4084\u77d6\u77da\u4085\u77db\u4086\u77dc\u4087\u77dd\u4088\u77de\u77df\u77e0\u4089\u408a\u408b\u408c\u408d\u408e\u77e1\u77e2\u77e3\u77e4\u77e5\u77e6\u77e7\u77e8\u77e9\u408f\u4090\u77ea\u77eb\u4091\u4092\u77ec\u77ed\u4093\u77ee\u4094\u4095\u77ef\u77f0\u77f1\u77f2\u77f3\u4096\u77f4\u77f5\u77f6\u4097\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u77ff\u7800\u7801\u4098\u4099\u6cf5\u7802\u7803\u7804\u7805\u7806\u7807\u7808\u7809\u780a\u780b\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7815\u7816\u7817\u7818\u7819\u781a\u781b\u781c\u409a\u409b\u409c\u409d\u409e\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783a\u783b\u783c\u783d\u783e\u783f\u7840\u7841\u9fec\u409f\u40a0\u40a1\u40a2\u40a3\u40a4\u40a5\u40a6\u40a7\u40a8\u7842\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u784f\u7850\u7851\u7852\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785a\u785b\u9fce\u40a9\u40aa\u40ab\u40ac\u40ad\u40ae\u40af\u785c\u785d\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7877\u40b0\u40b1\u40b2\u40b3\u40b4\u40b5\u40b6\u7878\u7879\u787a\u787b\u787c\u787d\u787f\u7880\u7881\u7882\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788a\u788b\u788c\u788d\u788e\u788f\u7890\u7891\u7892\u7893\u7894\u7895\u7896\u7897\u7898\u7899\u789a\u789b\u789c\u78b0\u40b7\u40b8\u40b9\u40ba\u40bb\u40bc\u40bd\u40be\u40bf\u40c0\u40c1\u40c2\u40c3\u40c4\u40c5\u40c6\u40c7\u787e\u789d\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a6\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b1\u78b2\u78b3\u78b4\u78b5\u78b6\u78b7\u78b8\u78b9\u78c1\u40c8\u40c9\u40ca\u40cb\u40cc\u40cd\u40ce\u40cf\u40d0\u78ba\u78bb\u78bc\u78bd\u78be\u78bf\u78c0\u78c2\u78c3\u78c4\u78c5\u78c6\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d6\u78d7\u78d8\u78d9\u78dc\u78e4\u40d1\u40d2\u40d3\u40d4\u40d5\u40d6\u40d7\u78da\u78db\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e5\u78e6\u78e7\u78e8\u78e9\u78ea\u78eb\u78ec\u78ed\u78ee\u40d8\u40d9\u40da\u40db\u40dc\u40dd\u40de\u40e0\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f6\u78f7\u78f8\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7901\u7902\u7903\u7904\u7905\u40df\u40e1\u40e2\u40e3\u40e4\u40e5\u40e6\u40e7\u40e8\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u790d\u790e\u790f\u7910\u7911\u7912\u7913\u7914\u7915\u7916\u40e9\u40ea\u40eb\u40ec\u40ed\u40ee\u40ef\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791e\u791f\u7920\u7921\u40f0\u7922\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u40f1\u40f2\u40f3\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7934\u40f4\u40f5\u40f6\u40f7\u7935\u40f8\u40f9\u7936\u7937\u7938\u40fa\u7939\u40fb\u793a\u793b\u793c\u793d\u40fc\u793e\u793f\u7940\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794d\u794e\u89c6\u9fc6\u40fd\u40fe\u40ff\u4100\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u4101\u4102\u4103\u7963\u7964\u7965\u7967\u7968\u7969\u796a\u796b\u796c\u796d\u796e\u796f\u4104\u4105\u4106\u7966\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978\u7984\u8996\u4107\u4108\u4109\u410a\u7979\u797a\u797b\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7985\u7986\u410b\u410c\u410d\u410e\u410f\u4110\u4111\u4112\u7987\u7988\u7989\u798a\u798b\u798c\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u4113\u4114\u4115\u4116\u4117\u799a\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u4118\u4119\u79a4\u79a5\u79a6\u411a\u411b\u411c\u411d\u411e\u79a7\u79a8\u79a9\u79aa\u79ab\u411f\u79ac\u79ad\u79ae\u79af\u9fc5\u4120\u4121\u79b0\u79b1\u4122\u79b2\u4123\u4124\u79b3\u79b4\u79b5\u79b6\u79b7\u4125\u79b8\u79b9\u79ba\u79bb\u79bc\u79bd\u842c\u79be\u79bf\u79c0\u79c1\u79c2\u79c3\u4126\u4127\u79c4\u79c5\u79c6\u79c7\u79c8\u79c9\u79ca\u4128\u4129\u412a\u412b\u412c\u412d\u79cb\u79cc\u79cd\u79ce\u79cf\u79d0\u79d1\u79d2\u79d3\u79d4\u79d5\u79d6\u79d7\u412e\u412f\u4130\u4131\u4132\u4133\u4134\u4135\u79d8\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79df\u79e0\u79e1\u79e2\u79e3\u79e4\u79e5\u79e6\u79e7\u79e8\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79ef\u79f0\u4136\u4137\u4138\u4139\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f8\u79f9\u79fa\u79fb\u79fc\u79fd\u79fe\u7a06\u413a\u413b\u413c\u413d\u413e\u413f\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147\u4148\u4149\u414a\u79ff\u7a00\u7a01\u7a02\u7a03\u7a04\u7a05\u7a07\u7a08\u7a09\u7a0a\u7a0b\u7a0c\u7a0d\u7a0e\u9fdf\u414b\u414c\u414d\u414e\u414f\u4150\u4151\u4152\u4153\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a16\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1d\u7a1e\u7a1f\u7a20\u7a21\u7a22\u7a23\u7a24\u7a25\u4154\u4155\u4156\u4157\u4158\u4159\u415a\u415b\u415c\u415d\u415e\u415f\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a33\u7a4a\u4160\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168\u4169\u416a\u416b\u7a34\u7a35\u7a36\u7a37\u7a38\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a41\u7a42\u7a43\u416c\u416d\u416e\u416f\u4170\u4171\u4172\u4173\u4174\u4175\u4176\u7a44\u7a45\u7a46\u7a47\u7a48\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a51\u7a52\u4177\u4178\u4179\u417a\u417b\u417c\u417d\u7a49\u7a53\u7a54\u7a55\u7a56\u7a57\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u417e\u417f\u4180\u7a5f\u7a60\u7a61\u7a62\u7a63\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u7a64\u7a65\u7a66\u7a67\u7a68\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u4188\u4189\u9fe0\u418a\u418b\u418c\u418d\u7a70\u7a73\u418e\u418f\u7a71\u7a72\u4190\u7a74\u7a75\u7a76\u7a77\u4191\u7a78\u7a79\u7a7a\u7a7b\u4192\u7a7c\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a82\u7a83\u4193\u4194\u4195\u4196\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8d\u7a8e\u4197\u4198\u4199\u7a8f\u7a90\u7a91\u7a92\u7a93\u7a94\u7a95\u419a\u419b\u419c\u419d\u419e\u419f\u41a0\u7a96\u7a97\u7a98\u7a99\u7a9a\u7a9b\u7a9c\u7a9d\u41a1\u41a2\u41a3\u41a4\u41a5\u7a9e\u7a9f\u7aa0\u7aa1\u7aa2\u7aa3\u7aa4\u7aa5\u7aa6\u7aa7\u41a6\u41a7\u41a8\u41a9\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aad\u41aa\u41ab\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u41ac\u41ad\u41ae\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u41af\u41b0\u41b1\u41b2\u41b3\u41b4\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u41b5\u41b6\u41b7\u41b8\u41b9\u41ba\u41bb\u7ac4\u7ac5\u41bc\u41bd\u7ac6\u41be\u41bf\u7ac7\u41c0\u7ac8\u7ac9\u7aca\u41c1\u7acb\u41c2\u7acc\u7acd\u7ace\u7acf\u41c3\u41c4\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad6\u7ad7\u41c5\u41c6\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7ade\u41c7\u41c8\u41c9\u41ca\u7ae1\u41cb\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u41cc\u41cd\u7ae8\u7ae9\u7aea\u7aeb\u41ce\u41cf\u41d0\u41d1\u7aec\u7aed\u7aef\u7af0\u7aee\u7af1\u41d2\u7af2\u7af3\u7af4\u41d3\u7af5\u41d4\u41d5\u7af6\u7af7\u7af8\u7af9\u7afa\u7afb\u7afc\u7afd\u7afe\u7aff\u7b00\u7b01\u7b02\u7b03\u41d6\u7b05\u7b06\u7b07\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0d\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b15\u41d7\u41d8\u41d9\u41da\u41db\u41dc\u41dd\u7b16\u7b17\u7b18\u7b19\u7b1a\u7b1b\u7b1c\u7b1d\u7b1e\u7b1f\u7b20\u7b21\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b36\u7b37\u7b38\u7b39\u7b3a\u7b3b\u7b3c\u7b3d\u7b3e\u41de\u41df\u41e0\u41e1\u41e2\u41e3\u41e4\u41e5\u41e6\u7b04\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b53\u7b54\u7b55\u7b56\u7b57\u7b58\u7b59\u7b5a\u7b5b\u7b5c\u7b5d\u41e7\u41e8\u41e9\u41ea\u41eb\u41ec\u41ed\u41ee\u41ef\u41f0\u41f1\u41f2\u41f3\u41f4\u7b5e\u7b5f\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b79\u7b7a\u7b7b\u7b7c\u7b7d\u7b7e\u7b7f\u7b80\u7bc0\u41f5\u41f6\u41f7\u41f8\u41f9\u41fa\u41fb\u41fc\u41fd\u41fe\u41ff\u4200\u7b81\u7b82\u7b83\u7b84\u7b85\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b93\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9a\u7b9b\u7b9c\u7b9d\u7b9e\u7b9f\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7ba5\u7ba6\u7ba7\u7ba8\u7ba9\u7baa\u7bab\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208\u4209\u420a\u420b\u420c\u420d\u7bac\u7bad\u7bae\u7baf\u7bb0\u7bb1\u7bb2\u7bb3\u7bb4\u7bb5\u7bb6\u7bb7\u7bb8\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc1\u7bc2\u7bc3\u7bc4\u7bc5\u7bc6\u7bc7\u7bc8\u7bca\u7bcb\u7bcc\u7bcd\u7bce\u7bcf\u7bd0\u7bd1\u7bd2\u7bd3\u420e\u420f\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218\u4219\u421a\u421b\u421c\u421d\u421e\u421f\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228\u4229\u7bc9\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bec\u7bed\u7bee\u7bef\u7c11\u7c15\u422a\u422b\u422c\u422d\u422e\u422f\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c07\u7c08\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c12\u7c13\u7c14\u7c16\u7c17\u4238\u4239\u423a\u423b\u423c\u423d\u423e\u423f\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u7c18\u7c19\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u4248\u4249\u424a\u424b\u424c\u424d\u424e\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258\u4259\u425a\u4263\u7c33\u7c34\u7c35\u7c36\u7c37\u7c38\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c41\u7c42\u424f\u425b\u425c\u425d\u425e\u425f\u4260\u4261\u4262\u4264\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4d\u7c4e\u7c4f\u7c55\u7c56\u4265\u7c50\u7c51\u7c52\u7c53\u7c54\u4266\u4267\u4268\u4269\u426a\u426b\u426c\u426d\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u426e\u426f\u4270\u4271\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u4272\u4273\u4274\u7c6a\u4276\u7c69\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u4277\u4278\u7c71\u4279\u7c72\u7c73\u7c74\u7c75\u7c76\u5a04\u7c77\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c82\u427a\u7c83\u7c84\u7c85\u7c86\u7c87\u7c88\u7c89\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c91\u427b\u427c\u7568\u7c92\u7c93\u7c94\u7c95\u7c96\u7c97\u7c98\u7c99\u7c9a\u7c9b\u7c9c\u7c9d\u7ca3\u427d\u427e\u427f\u4280\u7c9e\u7c9f\u7ca0\u7ca1\u7ca2\u7ca4\u7ca5\u7ca6\u7ca7\u7ca8\u7ca9\u7caa\u7cab\u7cac\u7cad\u4281\u4282\u4283\u4284\u4285\u4286\u7cae\u7caf\u7cb0\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5\u7cc0\u4287\u4288\u4289\u428a\u428b\u428c\u7cb6\u7cb7\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc1\u428d\u428e\u428f\u4290\u4291\u4292\u7cc2\u7cc3\u7cc4\u7cc5\u7cc6\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u4293\u4294\u4295\u4296\u4297\u4298\u4299\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd8\u9fef\u429a\u429b\u4a00\u7cd9\u7cda\u7cdb\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce1\u7ce2\u7ce8\u429c\u429d\u429e\u429f\u42a0\u42a1\u42a2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u42a3\u42a4\u42a5\u42a6\u42a7\u42a8\u42a9\u7ce9\u7cea\u7ceb\u7cec\u7ced\u42aa\u42ab\u42ac\u7cee\u7cef\u7cf0\u42ad\u42ae\u7cf2\u42af\u7cf1\u7cf3\u7cf4\u42b0\u7cf5\u42b1\u42b2\u7cf6\u42b3\u42b4\u7cf7\u7cf8\u7cf9\u7cfa\u7cfb\u7cfc\u7cfd\u7cfe\u7cff\u42b5\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u42b6\u42b7\u42b8\u42b9\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d23\u7d24\u7d25\u7d26\u7d27\u42ba\u42bb\u42bc\u42bd\u42be\u42bf\u42c0\u42c1\u42c2\u42c3\u42c4\u42c5\u42c6\u42c7\u7d28\u7d29\u7d2a\u7d2b\u7d2c\u7d2d\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u42c8\u42c9\u42ca\u42cb\u42cc\u42cd\u42ce\u42cf\u42d0\u42d1\u42d2\u42d3\u42d4\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\u7d77\u42d5\u42d6\u42d7\u42d8\u42d9\u42da\u42db\u42dc\u42dd\u42de\u7d5b\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u7d99\u7d9a\u7d9b\u7dd0\u42df\u42e0\u42e1\u42e2\u42e3\u42e4\u42e5\u42e6\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd1\u7dd2\u7dd4\u7dd5\u42e7\u42e8\u42e9\u42ea\u42eb\u42ec\u42ed\u42ee\u42ef\u42f0\u42f1\u42f2\u7dd3\u7dd6\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u42f3\u42f4\u42f5\u42f6\u42f7\u42f8\u42f9\u42fa\u42fb\u42fc\u42fd\u42fe\u42ff\u4300\u4301\u4302\u4303\u4304\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u4305\u4306\u4307\u4308\u4309\u430a\u430b\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e49\u7e4a\u7e4c\u7e4d\u430c\u430d\u430e\u430f\u4310\u4311\u4312\u4313\u4314\u4315\u7e48\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e67\u7e71\u4316\u4317\u4318\u4319\u431a\u431b\u7e4b\u7e66\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u431c\u431d\u431e\u431f\u4320\u4321\u4322\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e83\u4323\u4324\u4325\u4326\u4327\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u4328\u4329\u7e91\u7e92\u432a\u432b\u432c\u432d\u7e93\u7e94\u7e95\u7e96\u432e\u7e97\u432f\u4330\u4331\u4332\u7e98\u7e99\u7e9a\u7e9b\u4333\u4334\u7e9c\u7e9d\u4335\u7e9e\u7e9f\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eb6\u4336\u7eac\u7ead\u7eae\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd\u7ebe\u4338\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc\u7ecd\u7ece\u7ecf\u7ed0\u4337\u4339\u7ed1\u7ed2\u7ed3\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb\u7edc\u7edd\u7ede\u7edf\u433a\u433b\u7ee0\u7ee1\u7ee2\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u433c\u7ee9\u7eea\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00\u7f01\u433d\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f\u7f10\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18\u433e\u433f\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f\u7f20\u7f21\u7f22\u7f23\u7f24\u4340\u7f25\u7f26\u7f27\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u4341\u7f35\u7f36\u7f37\u7f38\u4342\u7f39\u7f3a\u7f3c\u4343\u7f3b\u7f3d\u4344\u4345\u4346\u4347\u4348\u4349\u7f3e\u7f3f\u7f40\u434a\u7f41\u7f42\u434b\u434c\u7f43\u434d\u7f44\u7f45\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u434e\u7f50\u7f51\u7f52\u7f53\u434f\u7f54\u7f55\u7f56\u7f57\u4350\u4351\u7f58\u7f59\u7f5a\u4352\u4353\u4354\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f62\u4355\u4356\u4357\u7f63\u4358\u7f64\u7f65\u7f66\u4359\u435a\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f72\u435b\u435c\u435d\u435e\u7f6f\u7f70\u7f71\u7f73\u7f74\u435f\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u4360\u4361\u7f7d\u7f7e\u7f7f\u7f80\u7f81\u4362\u7f82\u4363\u7f83\u7f84\u7f85\u7f86\u4364\u4365\u7f87\u7f88\u7f89\u4366\u9fe1\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f94\u7f96\u7f97\u7f98\u7f99\u4367\u4368\u4369\u7f95\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7f9f\u436a\u436b\u436c\u436d\u7fa0\u7fa1\u7fa2\u436e\u436f\u4370\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7faa\u4371\u7fab\u4372\u4373\u4374\u4375\u4376\u7fac\u7fad\u7fae\u7faf\u7fb0\u4377\u7fb1\u7fb2\u4378\u4379\u437a\u7fb3\u7fb4\u7fb5\u437b\u437c\u7fb6\u7fb7\u7fb8\u7fb9\u7fba\u7fbb\u7fbc\u437d\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc4\u7fc5\u7fc6\u437e\u437f\u7fc7\u7fc8\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u4380\u4381\u4382\u4383\u4384\u4385\u4386\u7fd3\u7fd4\u7fd5\u7fd6\u7fd7\u7fd8\u7fd9\u7fda\u4387\u4388\u4389\u438a\u7fdb\u7fdc\u7fdd\u438b\u438c\u438d\u438e\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe4\u438f\u4390\u4391\u4392\u4393\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u4394\u4395\u7ff2\u7ff3\u7ff4\u7ff5\u7ff6\u7ffc\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u4396\u4397\u4398\u7ffd\u7ffe\u7fff\u8000\u4399\u439a\u8001\u8002\u8003\u439b\u8004\u8005\u8006\u8007\u8008\u8009\u800a\u800b\u439c\u439d\u439e\u800c\u800d\u800e\u800f\u8010\u8011\u439f\u43a0\u43a1\u8012\u8013\u8014\u43a2\u8015\u8016\u8017\u8018\u8019\u801a\u801b\u801c\u801d\u801e\u801f\u43a3\u8020\u8021\u8022\u43a4\u43a5\u8023\u8024\u8025\u43a6\u43a7\u43a8\u43a9\u43aa\u8026\u8027\u43ab\u43ac\u8028\u8029\u802a\u802b\u802c\u43ad\u43ae\u43af\u802d\u802e\u43b0\u802f\u8030\u43b1\u8031\u8032\u8033\u8034\u43b2\u8035\u8036\u8037\u8038\u8039\u803a\u803b\u803c\u803d\u803e\u803f\u8040\u8041\u8042\u43b3\u43b4\u8043\u8044\u8045\u8046\u8047\u8048\u8049\u804a\u804b\u804c\u804d\u43b5\u43b6\u804e\u804f\u8050\u8051\u8052\u8053\u8054\u8060\u43b7\u8055\u8056\u8057\u8058\u43b8\u43b9\u8059\u805a\u805b\u805c\u805d\u805e\u805f\u8061\u8062\u8063\u9fe2\u43ba\u43bb\u43bc\u43bd\u43be\u8064\u8065\u8066\u8067\u8068\u8069\u806a\u806b\u9fe3\u43bf\u43c0\u806c\u806d\u43c1\u43c2\u43c3\u806f\u8070\u8071\u8072\u8073\u43c4\u43c5\u43c6\u43c7\u806e\u8074\u8075\u8076\u8077\u9fe4\u43c8\u8078\u8079\u807a\u807b\u807c\u43c9\u807d\u807e\u43ca\u807f\u8080\u8081\u8082\u8083\u8084\u8085\u8086\u43cb\u8087\u8088\u8089\u808a\u808b\u808c\u808d\u808e\u808f\u43cc\u43cd\u8090\u8091\u8092\u8093\u8094\u8095\u8096\u8097\u8098\u8099\u809a\u809b\u809c\u809d\u809e\u809f\u80a0\u43ce\u43cf\u80a1\u80a2\u80a3\u80a4\u80a5\u80a6\u80a7\u80a8\u80a9\u80aa\u80ab\u80ac\u80ad\u80ae\u80af\u80b0\u80b1\u80b2\u80b3\u80b4\u80b5\u80b6\u80b7\u80b8\u80b9\u80ba\u80bb\u80bc\u80bd\u80be\u80bf\u80c0\u80c1\u43d0\u43d1\u43d2\u43d3\u43d4\u43d5\u43d6\u43d7\u43d8\u43d9\u43da\u43db\u43dc\u43dd\u6711\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cb\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80df\u80e0\u80e1\u80e2\u80e3\u80e4\u80e5\u80e6\u80e7\u80e8\u80e9\u80ea\u80eb\u80ec\u8109\u43de\u43df\u43e0\u43e1\u43e2\u43e3\u43e4\u43e5\u80ed\u80ee\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f7\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u80ff\u8100\u8101\u8102\u8103\u8104\u8105\u8106\u8107\u8108\u810a\u810b\u810c\u810d\u810e\u810f\u8110\u8111\u8112\u8113\u8114\u43e6\u43e7\u43e8\u43e9\u43ea\u43eb\u43ec\u43ed\u43ee\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811c\u811d\u811e\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812c\u812d\u812e\u812f\u8130\u8131\u8132\u8133\u8134\u8135\u8136\u8137\u8138\u43ef\u43f0\u43f1\u43f2\u43f3\u43f4\u43f5\u43f6\u43f7\u43f8\u43f9\u43fa\u43fb\u8139\u813a\u813b\u813c\u813d\u813e\u813f\u8140\u8141\u8142\u8143\u8144\u8145\u8146\u8147\u8148\u8149\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8157\u8158\u8159\u815a\u3b39\u43fc\u43fd\u43fe\u43ff\u4400\u4401\u4402\u4403\u4404\u4405\u4406\u4407\u4408\u4409\u440a\u440b\u440c\u5e50\u6721\u815b\u815c\u815d\u815e\u815f\u8160\u8161\u8162\u8163\u8164\u8165\u8166\u8167\u8168\u8169\u816a\u816b\u816c\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8175\u8176\u8177\u8178\u8179\u817a\u817b\u817c\u817d\u817e\u440d\u440e\u440f\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417\u4418\u4419\u441a\u441b\u817f\u8180\u8181\u8182\u8183\u8184\u8185\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818e\u818f\u8190\u8191\u441c\u441d\u441e\u441f\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427\u4428\u4429\u442a\u8192\u8193\u8194\u8195\u8196\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a1\u81a2\u81a3\u442b\u442c\u442d\u442e\u442f\u4430\u4431\u4432\u4433\u4434\u6725\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u4435\u4436\u4437\u4438\u4439\u443a\u443b\u443c\u443d\u81b7\u81b8\u81b9\u81ba\u81bb\u81bc\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cb\u81cc\u443e\u443f\u4440\u4441\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u4442\u4443\u4444\u4445\u81d4\u81d5\u81d7\u81d8\u4446\u4447\u4448\u81d6\u81d9\u81da\u81db\u81dc\u4449\u444a\u81dd\u352e\u444b\u444c\u444d\u444e\u81de\u81df\u444f\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u4450\u81e6\u81e7\u81e8\u81e9\u4451\u81ea\u81eb\u81ec\u81ed\u81ee\u81ef\u81f0\u81f1\u81f2\u81f3\u81f4\u4452\u81f5\u81f6\u81f7\u81f8\u81f9\u4453\u81fa\u81fb\u81fc\u81fd\u81fe\u81ff\u8200\u8201\u4454\u8202\u4455\u8203\u8204\u8205\u8207\u4456\u8208\u4457\u8206\u8209\u4458\u820a\u820b\u820c\u820d\u820e\u820f\u8210\u4459\u445a\u8211\u445b\u8212\u8213\u8214\u8215\u8216\u8217\u445c\u8218\u8219\u821a\u821b\u821c\u821d\u821e\u445d\u445e\u445f\u821f\u8220\u4460\u8221\u8222\u8223\u8224\u4461\u4462\u4463\u8225\u8226\u8227\u8228\u8229\u822a\u822b\u822c\u822d\u822e\u822f\u8230\u8231\u4464\u4465\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823b\u4466\u4467\u4468\u4469\u823c\u823d\u823e\u823f\u446a\u446b\u446c\u446d\u446e\u8240\u8241\u8242\u8243\u8244\u8245\u8246\u8247\u8248\u8249\u446f\u4470\u824a\u824b\u824c\u824d\u4471\u4472\u4473\u4474\u4475\u4476\u4477\u4478\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u4479\u447a\u447b\u8255\u8256\u8257\u8258\u8259\u447c\u447d\u447e\u825a\u825b\u825c\u825d\u447f\u4480\u4481\u4482\u4483\u4484\u4485\u825e\u825f\u8260\u4486\u4487\u4488\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8268\u8269\u4489\u826a\u826b\u826c\u826d\u826e\u826f\u8270\u8271\u9fe5\u8272\u448a\u8273\u8274\u448b\u8275\u448c\u448d\u448e\u448f\u8276\u4490\u8277\u8278\u8279\u4491\u827a\u9fb7\u827b\u827c\u827d\u827e\u827f\u8280\u8281\u8282\u4492\u4493\u4494\u8283\u8284\u8285\u8286\u8287\u8288\u8289\u828a\u828b\u828c\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8295\u8296\u8297\u4495\u4496\u4497\u4498\u4499\u8298\u8299\u829a\u829b\u829c\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b2\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82c0\u82c1\u82c2\u82c3\u82c4\u82c5\u82c6\u82c7\u82c8\u82c9\u82ca\u82cb\u82cc\u82cd\u82ce\u82cf\u833e\u449a\u449b\u449c\u449d\u449e\u449f\u44a0\u44a1\u44a2\u44a3\u44a4\u44a5\u82bf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82da\u82db\u82dc\u82dd\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82e9\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f8\u82f9\u82fa\u82fb\u82fc\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830a\u830b\u830c\u830d\u830e\u830f\u8310\u8311\u8313\u8314\u8315\u44a6\u44a7\u44a8\u44a9\u44aa\u44ab\u44ac\u44ad\u44ae\u44af\u8312\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831e\u831f\u8320\u8321\u8322\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832e\u832f\u8330\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8354\u8355\u8356\u8357\u8358\u8359\u835a\u835b\u835c\u835d\u835e\u835f\u8360\u8361\u8362\u8363\u8364\u8365\u8366\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e\u836f\u9fd2\u44b0\u44b1\u44b2\u44b3\u44b4\u44b5\u44b6\u44b7\u44b8\u44b9\u44ba\u44bb\u44bc\u44bd\u44be\u44bf\u44c0\u44c1\u831d\u8323\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8377\u8378\u8379\u837a\u837b\u837c\u837d\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u839f\u83a0\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa\u83ab\u83ac\u83ae\u83af\u83b0\u83b1\u83b2\u83b3\u83b4\u83b5\u83b6\u83b7\u83b8\u83b9\u83ba\u83bb\u83bc\u83bd\u9fca\u44c2\u44c3\u44c4\u44c5\u44c6\u44c7\u44c8\u44c9\u44ca\u44cb\u44cc\u44cd\u44ce\u44cf\u44d0\u44d1\u44d2\u44d3\u44d4\u44d6\u8353\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d0\u83d1\u83d2\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83da\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e6\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f7\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8400\u8401\u8402\u8403\u8404\u8405\u8406\u8407\u8408\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8415\u8416\u8417\u8418\u8419\u841a\u841b\u841c\u841d\u841e\u841f\u8420\u8421\u8422\u8423\u8424\u8425\u8426\u8427\u8428\u8457\u9fbf\u44d5\u44d7\u44d8\u44d9\u44da\u44db\u44dc\u44dd\u44de\u44df\u44e0\u44e1\u44e2\u44e3\u44e4\u44e5\u44e6\u44e7\u44e8\u44e9\u44ea\u44eb\u44ec\u44ed\u83ad\u8429\u842a\u842b\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846a\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847b\u847c\u847d\u847e\u847f\u8480\u8481\u8482\u8483\u8484\u8485\u8486\u8487\u8488\u8489\u848a\u848b\u848c\u848d\u848e\u848f\u9fd3\u44ee\u44ef\u44f0\u44f1\u44f2\u44f3\u44f4\u44f5\u44f6\u44f7\u44f8\u44f9\u44fa\u44fb\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b3\u84b4\u84b5\u84b6\u84b7\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c3\u84c4\u84c5\u84c6\u84c7\u84c8\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d5\u84d6\u84d7\u84d8\u84d9\u84da\u84db\u84dc\u84dd\u84de\u84df\u84e0\u84e1\u84e2\u84e3\u84e4\u84e6\u44fc\u44fd\u44fe\u44ff\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507\u4508\u4509\u450a\u450b\u450c\u450d\u84e5\u84e7\u84e8\u84e9\u84ea\u84eb\u84ec\u84ed\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8501\u8502\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851b\u851c\u851d\u851e\u851f\u8520\u8521\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u8537\u8538\u8539\u853a\u853b\u853c\u450e\u450f\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517\u4518\u4519\u451a\u451b\u451c\u451d\u451e\u451f\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527\u4528\u4529\u452a\u452b\u452c\u853d\u853e\u853f\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855c\u855d\u855e\u855f\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8572\u8573\u8574\u8575\u452d\u452e\u452f\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537\u4538\u4539\u453a\u453b\u453c\u453d\u453e\u453f\u4540\u4541\u4542\u4543\u4544\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857d\u857e\u857f\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a5\u85a6\u85a7\u85a8\u85aa\u85ab\u85ac\u85ae\u9fa9\ufa1f\u4545\u4546\u4547\u4548\u4549\u454a\u454b\u454c\u454d\u454e\u454f\u4550\u4551\u85a9\u85ad\u85af\u85b0\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85ca\u85cb\u85cc\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d3\u8624\u4552\u4553\u4554\u4555\u4556\u4557\u4558\u4559\u455a\u455b\u455c\u455d\u85d4\u85d5\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e7\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u455e\u455f\u4560\u4561\u4562\u4563\u4564\u4565\u85ee\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8603\u8604\u8605\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8611\u8613\u8614\u8622\u4566\u4567\u4568\u4569\u456a\u456b\u456c\u456d\u456e\u456f\u4570\u4571\u4572\u8612\u8615\u8616\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8623\u8625\u8626\u8627\u8628\u8629\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u4573\u4574\u4575\u4576\u4577\u8632\u8633\u8634\u8635\u8636\u8637\u9fc0\u9fe6\u4578\u4579\u457a\u8631\u8638\u8639\u863a\u863b\u863c\u863d\u863e\u863f\u8640\u8641\u457b\u457c\u457d\u8642\u8643\u8644\u8645\u457e\u8646\u8647\u8648\u8649\u457f\u4580\u4581\u864a\u4582\u4583\u4584\u4585\u4586\u864b\u864c\u4587\u864d\u864e\u864f\u4588\u5f6a\u8650\u4589\u8651\u8653\u8654\u458a\u458b\u458c\u458d\u8655\u8656\u8657\u8658\u8659\u865a\u458e\u458f\u865b\u865c\u865d\u4590\u4591\u865e\u865f\u4592\u4593\u4594\u4595\u4596\u8660\u8661\u8662\u8663\u4597\u8664\u8665\u8666\u4598\u8667\u8668\u4599\u8669\u459a\u459b\u459c\u866a\u866b\u866c\u459d\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8679\u867a\u867b\u867c\u867d\u867e\u867f\u8680\u8681\u8682\u8683\u459e\u459f\u45a0\u8684\u8685\u8686\u8687\u8689\u868a\u868b\u868c\u868d\u868e\u868f\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869b\u869c\u869d\u869e\u869f\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a6\u86a7\u86a8\u86a9\u86aa\u86ac\u45a1\u45a2\u45a3\u86ab\u86ad\u86ae\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86ca\u86cb\u86cc\u86cd\u86ce\u86cf\ufa21\u45a4\u45a5\u45a6\u45a7\u45a8\u45a9\u45aa\u45ab\u45ac\u8688\u86d0\u86d1\u86d2\u86d3\u86d4\u86d5\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e0\u86e1\u86e2\u86e3\u86e4\u86e5\u86e6\u86e7\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ee\u86ef\u86f0\u86f1\u86f2\u86f3\u86f4\u45ad\u45ae\u45af\u45b0\u45b1\u45b2\u45b3\u45b4\u45b5\u86d6\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fc\u86fd\u86fe\u86ff\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u870f\u8710\u8711\u8712\u8713\u8714\u8715\u8716\u8717\u872b\u8746\u45b6\u45b7\u45b8\u45b9\u45ba\u45bb\u45bc\u45bd\u45be\u8718\u8719\u871a\u871b\u871c\u871d\u871e\u871f\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872c\u872d\u872e\u872f\u8730\u8731\u8732\u8733\u8734\u8735\u8736\u8737\u8738\u8739\u873a\u873b\u873c\u873d\u873e\u873f\u8740\u8741\u8742\u8743\u8744\u8745\u8747\u8748\u8749\u874a\u874b\u45bf\u45c0\u45c1\u45c2\u45c3\u45c4\u45c5\u45c6\u45c7\u45c8\u45c9\u45ca\u45d5\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8772\u8773\u8774\u8775\u8776\u8777\u8778\u877a\u877b\u877c\u877d\u877e\u877f\u8780\u87e1\u45cb\u45cc\u45cd\u45ce\u45cf\u45d0\u45d1\u45d2\u45d3\u45d4\u45d6\u8779\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878a\u878b\u878c\u878d\u878e\u878f\u8790\u8791\u8792\u8793\u8794\u8795\u8796\u8797\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u879f\u87a0\u87a1\u87a2\u87a3\u87a4\u87a5\u87a6\u87a7\u87a8\u87a9\u87d7\u45d7\u45d8\u45d9\u45da\u45db\u45dc\u45dd\u45de\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c7\u87c8\u87c9\u87ca\u87cb\u87cc\u87cd\u87ce\u87cf\u87d0\u87d1\u87d2\u8801\u45df\u45e0\u45e1\u45e2\u45e3\u45e4\u45e5\u45e6\u45e7\u45e8\u45e9\u45ea\u45eb\u45ec\u45ed\u45ee\u87d3\u87d4\u87d5\u87d6\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87e9\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u880e\u45ef\u45f0\u45f1\u45f2\u45f3\u87f6\u87f7\u87f8\u87f9\u87fa\u87fb\u87fc\u87fd\u87fe\u87ff\u8800\u8802\u8803\u8804\u8805\u8806\u8807\u8808\u8809\u880a\u880b\u880c\u880d\u880f\u45f4\u45f5\u45f6\u45f7\u45f8\u45f9\u45fa\u45fb\u8810\u8811\u8812\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u45fc\u45fd\u45fe\u45ff\u4600\u4601\u881a\u881b\u881c\u881d\u881e\u881f\u8820\u8821\u8822\u8823\u8824\u8834\u4602\u4603\u4604\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u4605\u4606\u4607\u4608\u4609\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u460a\u460b\u460c\u8835\u8836\u8837\u8838\u8839\u883a\u883b\u460d\u883c\u883d\u883e\u883f\u460e\u8840\u8841\u8842\u460f\u8843\u8844\u4610\u8845\u4611\u8846\u8847\u8848\u8849\u4612\u4613\u4614\u884a\u884b\u884c\u884d\u884e\u884f\u4615\u8850\u8851\u8852\u8853\u8854\u8855\u8856\u8857\u8858\u4616\u8859\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8861\u4617\u4618\u4619\u8862\u8863\u8864\u8865\u461a\u461b\u8866\u8867\u8868\u8869\u886a\u886b\u886c\u461c\u461d\u461e\u886d\u886e\u886f\u8870\u8871\u8872\u8873\u8874\u8875\u8876\u8877\u8878\u8879\u887a\u887b\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8885\u8886\u8887\u461f\u4620\u4621\u8888\u8889\u888a\u888b\u888c\u888d\u888e\u888f\u8890\u8891\u8892\u8893\u8894\u8895\u8896\u8897\u8898\u8899\u889a\u889b\u889c\u889d\u889e\u889f\u88a0\u88a1\u88a2\u88a3\u88a4\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u88ab\u88ac\u88ad\u88ae\u88b0\u4622\u4623\u4624\u4625\u4626\u4627\u88af\u88b1\u88b2\u88b3\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bb\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c3\u88c4\u88c5\u88c6\u88c7\u88c8\u88c9\u4628\u4629\u462a\u462b\u462c\u462d\u462e\u88ca\u88cb\u88cc\u88cd\u88ce\u88cf\u88d0\u88d1\u88d2\u88d3\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e0\u88e1\u88e2\u88e3\u88e4\u88e5\u462f\u4630\u4631\u4632\u88e7\u88e8\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8903\u8904\u4633\u4634\u4635\u4636\u4637\u4638\u4639\u463a\u463b\u463c\u463d\u463e\u463f\u4640\u4641\u4642\u88e6\u8905\u8906\u8907\u8908\u8909\u890a\u890b\u890c\u890d\u890e\u890f\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891b\u891c\u891d\u4643\u4644\u4645\u4646\u4647\u4648\u4649\u464a\u464b\u464c\u464d\u891e\u891f\u8920\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8928\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8934\u464e\u464f\u4650\u4651\u4652\u4653\u8933\u8935\u8936\u8937\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8941\u8942\u8943\u8944\u8945\u8954\u4654\u4655\u4656\u4657\u4658\u4659\u465a\u465b\u465c\u465d\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8955\u9fcb\u465e\u465f\u4660\u4661\u4662\u4663\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u4664\u4665\u8963\u8964\u8965\u8966\u8967\u8968\u4666\u4667\u4668\u4669\u8969\u896a\u896b\u896c\u896d\u896e\u466a\u896f\u8970\u8971\u8972\u466b\u8973\u8974\u897d\u466c\u466d\u8975\u8976\u8977\u466e\u466f\u8978\u8979\u897a\u897b\u897c\u4670\u4671\u897e\u897f\u8980\u8981\u4672\u4673\u8982\u4674\u8983\u8984\u4675\u4676\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898c\u8999\u898d\u898e\u4677\u4678\u898f\u8990\u8991\u8992\u8993\u8994\u4679\u467a\u467b\u8995\u8997\u8998\u899a\u467c\u467d\u467e\u467f\u899b\u899c\u4680\u4681\u899d\u899e\u899f\u89a0\u89a1\u4682\u4683\u89a2\u89a3\u89a4\u89a5\u4684\u4685\u89a6\u89a7\u89a8\u89a9\u89aa\u4686\u4687\u4688\u4689\u89ab\u89ac\u89ad\u89ae\u89af\u468a\u468b\u468c\u89b0\u89b1\u89b2\u89b3\u468d\u468e\u89b4\u89b5\u89b6\u89b7\u89b8\u468f\u4690\u4691\u4692\u4693\u89b9\u89ba\u89bb\u89bc\u89bd\u4694\u89be\u89bf\u89c0\u4695\u4696\u89c1\u89c2\u89c3\u89c4\u89c5\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd\u89ce\u89cf\u89d0\u89d1\u89d2\u89d3\u89d4\u89d5\u89d6\u89d7\u89d8\u89d9\u4697\u89da\u89db\u89dd\u89de\u89dc\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u4698\u4699\u469a\u89e8\u89e9\u89ea\u89eb\u469b\u89ec\u89ed\u89ee\u89ef\u469c\u469d\u469e\u469f\u46a0\u89f0\u89f1\u46a1\u46a2\u46a3\u46a4\u89f2\u89f3\u46a5\u46a6\u89f4\u9d64\u46a7\u89f5\u89f6\u46a8\u46a9\u46ac\u89f7\u89f8\u89f9\u46aa\u46ab\u89fa\u89fb\u89fc\u89fd\u89fe\u89ff\u46ad\u8a00\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a07\u8a08\u46ae\u46af\u46b0\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u46b1\u46b2\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u46b3\u46b4\u46b5\u46b6\u46b7\u46b8\u46b9\u46ba\u46bb\u46bc\u46bd\u46be\u46bf\u46c0\u46c1\u46c2\u46c3\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a48\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\u8a5f\u8a60\u46c4\u46c5\u46c6\u46c7\u46c8\u46c9\u46ca\u46cb\u46cc\u46cd\u46ce\u46cf\u46d0\u46d1\u46d2\u46d3\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a79\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a89\u8a8a\u8aa0\u9fc1\u46d4\u46d5\u46d6\u46d7\u46d8\u46d9\u46da\u46db\u46dc\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u46dd\u46de\u46df\u46e0\u46e1\u46e2\u46e3\u46e4\u46e5\u46e6\u46e7\u46e8\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8ae9\u46e9\u46ea\u46eb\u46ec\u46ed\u46ee\u46ef\u46f0\u46f1\u46f2\u46f3\u46f4\u46f5\u46f6\u46f7\u46f8\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u46f9\u46fa\u46fb\u46fc\u46fd\u8b04\u8b05\u8b06\u8b07\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u46fe\u46ff\u4700\u4701\u4702\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u4703\u4704\u4705\u4706\u4707\u4708\u4709\u470a\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u9fbb\u470b\u470c\u470d\u470e\u470f\u4710\u4711\u8b4d\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u4712\u4713\u4714\u4715\u4716\u4717\u4718\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u4719\u471a\u471b\u471c\u471d\u471e\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u471f\u4720\u4721\u8b86\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u4722\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bac\u8bad\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc\u8bbd\u8bbe\u8bbf\u8bc0\u4723\u8bc1\u8bc2\u8bc3\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9\u4724\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07\u8c08\u8c09\u8c0a\u4725\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26\u8c27\u4726\u4727\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u4728\u8c2d\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35\u4729\u8c36\u8c37\u472a\u8c38\u472b\u8c39\u8c3a\u8c3b\u472c\u472d\u8c3c\u8c3d\u472e\u8c3e\u472f\u8c3f\u8c40\u8c41\u4730\u8c42\u4731\u8c43\u8c44\u4732\u8c45\u8c46\u4733\u8c47\u8c48\u8c49\u4734\u4735\u8c4a\u8c4b\u4736\u9ff2\u4737\u4738\u4739\u8c4c\u8c4d\u8c4e\u473a\u473b\u473c\u473d\u473e\u473f\u8c4f\u4740\u4741\u4742\u8c50\u8c51\u4743\u8c52\u4744\u8c53\u8c54\u8c55\u8c56\u8c57\u4745\u8c58\u8c59\u8c5a\u8c5b\u8c5c\u8c5d\u4746\u4747\u8c5e\u8c5f\u8c60\u8c61\u4748\u8c62\u8c63\u8c64\u8c65\u8c66\u4749\u8c67\u8c68\u8c69\u8c6a\u474a\u474b\u474c\u8c6b\u8c6c\u8c6d\u8c6e\u474d\u474e\u8c6f\u8c70\u8c71\u8c72\u8c73\u8c74\u8c75\u474f\u8c77\u4750\u4751\u8c76\u4752\u4753\u4754\u4755\u8c78\u8c79\u8c7a\u8c7b\u8c7c\u8c7d\u4756\u4757\u4758\u4759\u8c7e\u8c7f\u8c80\u8c81\u8c82\u8c83\u475a\u475b\u8c84\u8c85\u8c86\u8c87\u8c88\u8c89\u8c8a\u8c8b\u8c8c\u8c8d\u475c\u8c8e\u8c8f\u475d\u475e\u8c90\u8c91\u8c92\u8c93\u475f\u8c94\u8c95\u8c96\u4760\u8c97\u8c98\u8c99\u4761\u4762\u8c9a\u4763\u4764\u4765\u4766\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8cae\u4767\u4768\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u4769\u476a\u476b\u476c\u476d\u476e\u476f\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u4770\u4771\u4772\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u3562\u4773\u4774\u4775\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u4776\u4777\u4778\u4779\u477a\u477b\u477c\u477d\u477e\u477f\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u4780\u4781\u4782\u4783\u4784\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u4785\u4786\u8cfe\u8cff\u8d00\u8d02\u8d03\u8d04\u8d05\u4787\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u4788\u8d0d\u8d0e\u8d0f\u4789\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u478a\u8d19\u8d1a\u478b\u8d1b\u8d1c\u8d1d\u8d1e\u8d1f\u8d20\u8d21\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u478c\u8d47\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u478d\u478e\u8d56\u8d57\u478f\u4790\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d64\u4791\u8d65\u8d66\u8d67\u8d68\u8d69\u8d6a\u4792\u8d6b\u4793\u4794\u8d6c\u8d6d\u8d6e\u8d6f\u4795\u8d70\u8d71\u8d72\u8d73\u8d74\u8d75\u9faa\u8d76\u8d77\u8d78\u4796\u4797\u4798\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\ufa23\u4799\u479a\u479b\u479c\u8d80\u8d81\u8d82\u8d83\u8d84\u8d85\u8d86\u8d87\u8d88\u8d89\u8d8a\u8d8b\u479d\u479e\u479f\u47a0\u47a1\u47a2\u47a3\u47a4\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u47a5\u47a6\u47a7\u47a8\u47a9\u47aa\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u47ab\u47ac\u47ad\u47ae\u47af\u47b0\u47b1\u47b2\u8d9b\u8d9c\u8d9d\u8d9e\u8d9f\u8da0\u8da1\u8da2\u8da3\u8da4\u47b3\u47b4\u47b5\u47b6\u47b7\u47b8\u8da5\u8da6\u8da7\u47b9\u47ba\u47bb\u47bc\u8da8\u47bd\u47be\u47bf\u47c0\u47c1\u47c2\u47c3\u47c4\u47c5\u47c6\u8da9\u8daa\u8dab\u8dac\u8dad\u47c7\u8dae\u47c8\u47c9\u47ca\u47cb\u8daf\u8db0\u47cc\u47cd\u47ce\u47cf\u8db1\u47d0\u47d1\u47d2\u8db2\u8db3\u8db4\u47d3\u47d4\u8db5\u8db6\u8db7\u8db8\u47d5\u47d6\u8db9\u8dba\u8dbb\u8dbd\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc4\u47d7\u47d8\u47d9\u47da\u47db\u47dc\u47dd\u47de\u8dc5\u8dc6\u8dc7\u8dc8\u8dc9\u8dca\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd2\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8dde\u8df5\u47df\u47e0\u47e1\u47e2\u47e3\u47e4\u47e5\u47e6\u47e7\u47e8\u47e9\u47ea\u47eb\u47ec\u47ed\u8dbc\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de5\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8ded\u8dee\u8def\u8df0\u8df1\u8df2\u8df3\u8df4\u8df6\u8df7\u8df8\u8df9\u8dfa\u8dfb\u47ee\u47ef\u47f0\u47f1\u47f2\u47f3\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e08\u8e09\u8e0a\u8e0b\u8e0c\u8e0d\u8e0e\u47f4\u47f5\u47f6\u47f7\u47f8\u47f9\u47fa\u47fb\u47fd\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2c\u8e2d\u8e2e\u8e2f\u8e3a\u47fc\u47fe\u47ff\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807\u4808\u4809\u480a\u480b\u480c\u8e2b\u8e30\u8e31\u8e32\u8e33\u8e34\u8e35\u8e36\u8e37\u8e38\u8e39\u8e3b\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e43\u8e44\u8e45\u480d\u480e\u480f\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e51\u8e52\u8e53\u4817\u4818\u4819\u481a\u481b\u481c\u481d\u8e54\u8e55\u8e56\u8e57\u8e58\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e6e\u8e80\u481e\u481f\u4820\u4821\u4822\u8e68\u8e69\u8e6a\u8e6b\u8e6c\u8e6d\u8e6f\u8e70\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7c\u8e7d\u8e7e\u8e7f\u4823\u4824\u4825\u4826\u4827\u8e81\u8e82\u8e83\u8e84\u8e85\u8e86\u8e87\u8e88\u8e89\u4828\u4829\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e8f\u482a\u482b\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u482c\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9c\u482d\u482e\u8e9d\u8e9e\u8e9f\u8ea0\u482f\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u4830\u8ea6\u8ea7\u8ea9\u8eaa\u8ea8\u4831\u8eab\u8eac\u8ead\u8eae\u8eaf\u8eb0\u4832\u4833\u4834\u4835\u4836\u8eb1\u8eb2\u4837\u4838\u4839\u483a\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8eba\u8ebb\u8ebc\u483b\u8ebd\u8ebe\u483c\u8ebf\u483d\u483e\u8ec0\u8ec1\u8ec2\u8ec3\u8ec4\u8ec5\u483f\u8ec6\u4840\u8ec7\u4841\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u4842\u4843\u4844\u8ece\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u4845\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u4846\u4847\u4848\u4849\u484a\u484b\u484c\u484d\u484e\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u9fab\u484f\u4850\u4851\u4852\u8eed\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u4853\u4854\u4855\u4856\u4857\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u4858\u4859\u485a\u485b\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u485c\u485d\u485e\u485f\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u4860\u4861\u4862\u4863\u4864\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u4865\u4866\u4867\u4868\u4869\u486a\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u9fc2\u486b\u486c\u486d\u486e\u486f\u4870\u4871\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u4872\u4873\u4874\u4875\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u4876\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u4877\u4878\u4879\u8f60\u8f61\u8f62\u487a\u487b\u8f63\u8f64\u487c\u487d\u8f65\u487e\u487f\u8f66\u8f67\u8f68\u8f69\u8f6a\u8f6b\u4880\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u4881\u8f71\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79\u8f7a\u8f7b\u4882\u8f7c\u8f7d\u8f7e\u8f7f\u8f80\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97\u8f98\u8f99\u8f9a\u8f9b\u8f9c\u8f9d\u8f9e\u8f9f\u8fa0\u8fa1\u8fa2\u8fa3\u8fa4\u4883\u8fa5\u8fa6\u8fa7\u8fa8\u8fa9\u8faa\u8fab\u8fac\u8fad\u8fae\u4884\u8faf\u8fb0\u8fb1\u8fb2\u4885\u4886\u8fb3\u4887\u8fb4\u4888\u4889\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbd\u5de1\u8fbe\u8fbf\u8fc0\u8fc1\u8fc2\u8fc3\u8fc4\u8fc5\u8fc6\u8fc7\u8fc8\u8fc9\u488a\u488b\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fcf\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fd8\u8fd9\u8fda\u8fdb\u8fdc\u8fdd\u8fde\u8fdf\u8fec\ufa24\u488c\u488d\u488e\u488f\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe7\u8fe8\u8fe9\u8fea\u8feb\u8fed\u8fee\u8fef\u8ff0\u8ff1\u8ff2\u8ff3\u4890\u4891\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005\u9006\u9007\u9008\u9009\u900a\u4892\u4893\u4894\u4895\u4896\u4897\u4898\u900b\u900c\u900d\u900e\u900f\u9010\u9011\u9012\u9013\u9014\u9015\u9016\u9017\u9018\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u9025\u9026\u9027\u4899\u489a\u489b\u9028\u9029\u902a\u902b\u902c\u902d\u902e\u902f\u9030\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u9039\u903a\u903b\u489c\u489d\u489e\u489f\u48a0\u903c\u903d\u903e\u903f\u9040\u9041\u9042\u9043\u9044\u9045\u9046\u9047\u9048\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9057\u48a1\u9058\u9059\u905a\u905b\u905c\u905d\u905e\u905f\u9060\u9061\u9062\u9063\u9064\u9065\u48a2\u48a3\u48a4\u48a5\u9066\u9067\u9068\u9069\u906a\u906b\u906c\u906d\u906e\u906f\u9070\u9071\u9073\u48a6\u48a7\u48a8\u48a9\u9072\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u9086\u48aa\u48ab\u48ac\u48ad\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9089\u48ae\u9087\u9088\u48af\u48b0\u908a\u908b\u908c\u48b1\u908d\u908e\u908f\u9090\u48b2\u9091\u9092\u9093\u48b3\u9094\u9095\u9096\u9097\u9098\u9099\u909a\u909b\u909c\u909d\u48b4\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a4\u90a5\u90a6\u90a7\u90a8\u90a9\u90aa\u90ab\u90ac\u48b5\u48b6\u48b7\u90ad\u90ae\u90af\u90b0\u90b1\u90b2\u90b3\u90b4\u90b5\u90b6\u90b7\u90b8\u90b9\u90ba\u90bb\u48b8\u48b9\u48ba\u90bc\u90bd\u90be\u90bf\u90c0\u90c1\u90c2\u90c3\u90c4\u90c5\u90c6\u90c7\u90c8\u90c9\u90ca\u90cb\u90cc\u90cd\u90ce\u90cf\u90d0\u90d1\u90d3\u48bb\u48bc\u48bd\u48be\u48bf\u48c0\u48c1\u48c2\u90d2\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90de\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e6\u90e7\u48c3\u48c4\u48c5\u48c6\u48c7\u48c8\u48c9\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ee\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f6\u90f7\u90f8\u48ca\u48cb\u48cc\u48cd\u48ce\u48cf\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910a\u48d0\u48d1\u48d2\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u48d3\u48d4\u48d5\u48d6\u48d7\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9125\u48d8\u48d9\u48da\u48db\u48dc\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u48dd\u48de\u48df\u48e0\u9133\u9134\u9135\u9136\u9137\u48e1\u9138\u9139\u48e2\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9142\u9141\u9143\u9144\u9145\u9146\u9147\u9148\u48e3\u48e4\u9149\u914a\u914b\u48e5\u48e6\u914c\u914d\u914e\u914f\u9150\u9151\u9152\u48e7\u48e8\u9153\u9154\u9155\u9156\u9157\u9158\u9159\u915a\u915b\u915c\u915d\u915e\u48e9\u48ea\u48eb\u48ec\u48ed\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u48ee\u48ef\u48f0\u48f1\u48f2\u48f3\u9166\u9167\u9168\u9169\u916a\u916b\u916c\u916d\u916e\u916f\u9170\u9171\u48f4\u48f5\u48f6\u48f7\u48f8\u48f9\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917b\u917c\u917d\u917e\u917f\u48fa\u48fb\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9188\u9189\u918a\u918b\u918c\u48fc\u48fd\u48fe\u48ff\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9194\u9195\u9196\u9197\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907\u4908\u9198\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a4\u4909\u490a\u490b\u490c\u91a5\u91a6\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u490d\u91ad\u91ae\u91af\u91b0\u91b1\u490e\u490f\u4910\u4911\u4912\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b8\u91b9\u91ba\u91bb\u4913\u4914\u4915\u4916\u91bc\u91bd\u91be\u91bf\u91c0\u4917\u4918\u91c1\u91c2\u91c3\u91c4\u91c5\u4919\u91c6\u91c7\u91c8\u91c9\u91ca\u91cb\u91cc\u91cd\u91ce\u491a\u91cf\u91d0\u91d1\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dc\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u491b\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u491c\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u491d\u491e\u491f\u4920\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9274\u928f\u9faf\u4921\u4922\u4923\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928e\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92ae\u92af\u92b0\u92b1\u4924\u4925\u4926\u4927\u4928\u4929\u492a\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\ufa27\u492b\u492c\u492d\u492e\u492f\u4930\u4931\u4932\u927c\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933e\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9348\u9fac\ufa28\u4933\u4934\u4935\u4936\u9328\u9347\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u4937\u4938\u4939\u493a\u493b\u493c\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93aa\u93ab\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u9fb2\u493d\u493e\u493f\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947\u93a9\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f9\u4948\u4949\u494a\u494b\u494c\u494d\u494e\u494f\u4950\u4951\u4952\u4953\u93f3\u93f5\u93f6\u93f7\u93f8\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u4954\u4955\u4956\u4957\u4958\u4959\u495a\u495b\u495c\u93f4\u9429\u942a\u942b\u942c\u942d\u942e\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9441\u495d\u495e\u495f\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9467\u4967\u4968\u4969\u496a\u496b\u496c\u496d\u496e\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u496f\u4970\u4971\u4972\u4973\u4974\u9468\u9469\u946a\u946b\u946c\u4975\u4976\u4977\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u4978\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u4979\u9485\u9486\u9487\u9488\u9489\u948a\u948b\u948c\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494\u9495\u9496\u9497\u9498\u9499\u949a\u949b\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa\u94ab\u94ac\u94ad\u94ae\u94af\u497a\u497b\u497c\u94b0\u94b1\u94b2\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u9fed\u497d\u497e\u497f\u94cf\u94d0\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5\u94f6\u94f7\u4980\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c\u950d\u950e\u950f\u9510\u9511\u9512\u9513\u9514\u9515\u9fcf\u4981\u9516\u9517\u9518\u9519\u951a\u951b\u951c\u951d\u951e\u951f\u9520\u9521\u9522\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a\u952b\u952c\u952d\u952e\u952f\u9530\u9531\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539\u953a\u953b\u953c\u953d\u953e\u953f\u9540\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549\u954a\u954b\u954c\u954d\u954e\u954f\u9550\u9551\u9552\u9553\u9554\u9555\u9fd4\u4982\u9556\u9557\u9558\u9559\u955a\u955b\u955c\u955d\u955e\u955f\u9560\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u4983\u4984\u4985\u956c\u956d\u956e\u956f\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u4986\u9577\u9578\u9579\u4987\u957a\u957b\u4988\u4989\u498a\u957c\u498b\u957d\u957e\u957f\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u498c\u498d\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u498e\u498f\u4990\u4991\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u4992\u4993\u4994\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u4995\u4996\u4997\u4998\u4999\u499a\u499b\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u499c\u499d\u499e\u499f\u95b5\u95b6\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u49a0\u49a1\u49a2\u49a3\u49a4\u49a5\u49a6\u49a7\u49a8\u95b7\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95ce\u95cf\u49a9\u49aa\u49ab\u49ac\u49ad\u49ae\u49af\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u49b0\u95de\u95df\u95e0\u95e1\u49b1\u95e2\u95e3\u95e4\u95e5\u95e6\u49b2\u49b3\u49b4\u95e7\u49b5\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd\u95fe\u95ff\u9600\u9601\u9602\u49b6\u9603\u9604\u9605\u9606\u49b7\u9607\u9608\u9609\u960a\u960b\u960c\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614\u9615\u49b8\u9616\u9617\u9618\u9619\u961a\u961b\u961c\u961d\u961e\u961f\u49b9\u49ba\u9620\u9621\u9622\u9623\u9624\u49bb\u9625\u9626\u9627\u9628\u9629\u962a\u962b\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9634\u9635\u9636\u49bc\u49bd\u49be\u49bf\u49c0\u9637\u9638\u9639\u963a\u963b\u963c\u963d\u963e\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648\u9649\u49c1\u49c2\u49c3\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9652\u9653\u9654\u9655\u49c4\u49c5\u49c6\u49c7\u49c8\u9656\u9657\u9658\u9659\u965b\u965c\u965d\u965e\u965f\u9660\u9661\u9662\u9663\u9664\u9665\u9666\u9667\u9668\u9669\u49c9\u49ca\u49cb\u49cc\u49cd\u49ce\u49cf\u965a\u966a\u966b\u966c\u966d\u966e\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u9679\u967a\u49d0\u49d1\u49d2\u49d3\u49d4\u49d5\u49d6\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968c\u968d\u968e\u968f\u9690\u49d7\u49d8\u49d9\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\ufa29\u49da\u49db\u49dc\u49dd\u49de\u49df\u969a\u969b\u969c\u969d\u969e\u969f\u96a0\u96a1\u49e0\u49e1\u49e2\u49e3\u96a2\u96a3\u96a4\u96a5\u49e4\u49e5\u49e6\u49e9\u96a6\u96a7\u96a8\u96a9\u96aa\u96ab\u49e7\u49e8\u49ea\u96ac\u96ad\u96ae\u96af\u96b0\u96b1\u96b2\u49eb\u49ec\u49ed\u96b3\u96b4\u49ee\u96b5\u49ef\u49f0\u9fe7\u96b6\u96b7\u96b8\u96b9\u96ba\u96bb\u96bc\u96bd\u96be\u49f1\u96bf\u96c0\u49f2\u49f3\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u49f4\u49f5\u49f6\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96cf\u49f7\u49f8\u49f9\u49fa\u96d0\u96d1\u96d2\u49fb\u96d3\u49fc\u49fd\u96d4\u96d5\u49fe\u49ff\u96d6\u4a01\u4a02\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e0\u4a03\u96e1\u96e2\u96e3\u4a04\u4a05\u4a06\u4a07\u96e4\u4a08\u96e5\u96e6\u4a09\u96e7\u4a0a\u96e8\u96e9\u96ea\u96eb\u4a0b\u96ec\u96ed\u96ee\u96ef\u96f0\u96f1\u96f2\u96f3\u4a0c\u4a0d\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fc\u96fd\u96fe\u4a0e\u96ff\u9700\u9701\u4a0f\u4a10\u4a11\u4a12\u4a13\u4a14\u4a15\u4a16\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970a\u4a17\u4a18\u4a19\u970b\u970c\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9714\u9715\u9716\u9717\u4a1a\u4a1b\u4a1c\u4a1d\u9718\u9719\u971a\u971b\u971c\u971d\u971e\u971f\u9720\u4a1e\u4a1f\u4a20\u4a21\u4a22\u4a23\u4a24\u9721\u9722\u9723\u9724\u9725\u4a25\u4a26\u4a27\u4a28\u4a29\u4a2a\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972d\u4a2b\u4a2c\u4a2d\u4a2e\u4a2f\u972e\u972f\u9730\u9731\u9732\u9733\u9734\u4a30\u4a31\u9735\u9736\u9737\u9738\u9739\u973a\u973b\u973c\u973d\u973e\u973f\u9740\u4a32\u4a33\u4a34\u9741\u4a35\u4a36\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u4a37\u9749\u4a38\u974a\u974b\u974c\u974d\u974e\u9fe8\u4a39\u974f\u4a3a\u9750\u4a3b\u9751\u9752\u9753\u9754\u9755\u9756\u9757\u9758\u9759\u975a\u975b\u975c\u975d\u4a3c\u975e\u4a3d\u4a3e\u975f\u4a3f\u9760\u4a40\u9761\u4a41\u9762\u9763\u4a42\u4a43\u4a44\u9764\u4a45\u4a46\u4a47\u9765\u9766\u4a48\u4a49\u4a4a\u4a4b\u9767\u4a4c\u4a4d\u4a4e\u9768\u4a4f\u9769\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\u4a50\u4a51\u4a52\u9772\u9773\u9774\u9775\u9776\u9777\u9778\u9779\u4a53\u4a54\u4a55\u4a56\u4a57\u4a58\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9786\u4a59\u4a5a\u4a5b\u4a5c\u4a5d\u4a5e\u9787\u9788\u9789\u978a\u978b\u978c\u978d\u978e\u978f\u9790\u9791\u9792\u4a5f\u9793\u9794\u9795\u9796\u9797\u9798\u9799\u4a60\u4a61\u4a62\u4a63\u4a64\u4a65\u4a66\u4a67\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u4a68\u4a69\u4a6a\u4a6b\u4a6c\u4a6d\u4a6e\u97a2\u97a3\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ab\u97ac\u97ad\u97ae\u97af\u97b0\u4a6f\u4a70\u4a71\u4a72\u4a73\u4a74\u4a75\u97b1\u97b2\u97b3\u97b4\u97b5\u97b6\u97b7\u4a76\u4a77\u4a78\u4a79\u4a7a\u4a7b\u97b8\u97b9\u97ba\u97bb\u4a7c\u4a7d\u4a7e\u97bc\u97bd\u97be\u97bf\u4a7f\u4a80\u4a81\u4a82\u4a83\u4a84\u97c0\u97c1\u97c2\u97c3\u4a85\u4a86\u97c4\u97c5\u4a87\u4a88\u97c6\u97c7\u97c8\u4a89\u4a8a\u4a8b\u97c9\u4a8c\u4a8d\u4a8e\u97ca\u97cb\u97cc\u4a8f\u97cd\u97ce\u4a90\u4a91\u4a92\u4a93\u97cf\u97d0\u97d1\u97d2\u4a94\u97d3\u97d4\u97d5\u4a95\u97d6\u97d7\u97d8\u97d9\u97da\u4a96\u4a97\u4a98\u97dc\u97dd\u97de\u97df\u4a99\u4a9a\u97db\u97e0\u97e1\u97e2\u4a9b\u97e3\u4a9c\u4a9d\u97e4\u97e5\u97e6\u97e7\u97e8\u97e9\u97ea\u97eb\u97ec\u97ed\u97ee\u4a9e\u97ef\u4a9f\u97f0\u97f1\u4aa0\u97f2\u4aa1\u4aa2\u4aa3\u4aa4\u4aa5\u97f3\u7adf\u7ae0\u4aa6\u4aa7\u4aa8\u97f4\u97f5\u4aa9\u97f6\u97f7\u4aaa\u97f8\u4aab\u4aac\u97f9\u97fa\u4aad\u97fb\u97fc\u4aae\u4aaf\u97fd\u97fe\u97ff\u4ab0\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u4ab1\u4ab2\u980a\u980b\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9819\u4ab3\u4ab4\u4ab5\u9814\u9815\u9816\u9817\u9818\u981a\u4ab6\u4ab7\u4ab8\u4ab9\u4aba\u4abb\u4abc\u4abd\u4abe\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u4abf\u4ac0\u4ac1\u4ac2\u9824\u9825\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u4ac3\u4ac4\u4ac5\u4ac6\u4ac7\u4ac8\u4ac9\u4aca\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u4acb\u4acc\u4acd\u4ace\u4acf\u4ad0\u4ad1\u4ad2\u4ad3\u983e\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u4ad4\u4ad5\u4ad6\u4ad7\u4ad8\u4ad9\u4ada\u4adb\u4adc\u4add\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u4ade\u4adf\u4ae0\u4ae1\u4ae2\u4ae3\u4ae4\u4ae5\u4ae6\u4ae7\u985f\u9860\u9861\u9862\u9863\u4ae8\u4ae9\u4aea\u4aeb\u9864\u9865\u9866\u9867\u9868\u4aec\u4aed\u4aee\u4aef\u4af0\u4af1\u9869\u986a\u986b\u4af2\u4af3\u4af4\u986c\u986d\u986e\u986f\u9870\u4af5\u4af6\u9871\u9872\u4af7\u9873\u9874\u9875\u9876\u9877\u9878\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880\u9881\u9882\u9883\u9884\u9885\u9886\u9887\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f\u9890\u9891\u9892\u9893\u9894\u9895\u9896\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e\u989f\u98a0\u98a1\u98a2\u98a3\u98a4\u98a5\u98a6\u98a7\u98a8\u4af8\u98a9\u98aa\u4af9\u98ab\u98ac\u4afa\u4afb\u4afc\u4afd\u98ad\u98ae\u98af\u98b0\u98b1\u4afe\u4aff\u4b00\u4b01\u4b02\u4b03\u98b2\u98b3\u4b04\u4b05\u98b4\u98b5\u4b06\u4b07\u4b08\u4b09\u4b0a\u98b6\u98b7\u4b0b\u4b0c\u4b0d\u4b0e\u4b0f\u4b10\u98b8\u98b9\u98ba\u4b11\u4b12\u4b13\u4b14\u4b15\u4b16\u4b17\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u4b18\u4b19\u4b1a\u98c1\u98c2\u98c3\u98c4\u4b1b\u4b1c\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u4b1d\u98cb\u4b1e\u4b1f\u98cc\u98cd\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4\u98d6\u98d5\u98d7\u98d8\u98d9\u98da\u98db\u4b20\u4b21\u98dc\u98dd\u98de\u98df\u98e0\u98e1\u98e2\u98e3\u98e4\u4b22\u4dbf\u98e5\u98e6\u98e7\u98e8\u4b23\u4b24\u4b25\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u4b26\u4b27\u4b28\u4b29\u4b2a\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fb\u98fc\u98fd\u98fe\u98ff\u4b2b\u4b2c\u4b2d\u4b2e\u4b2f\u4b30\u4b31\u4b32\u4b33\u4b34\u98fa\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u9908\u9909\u990a\u990b\u990c\u990d\u990e\u990f\u4b35\u4b36\u4b37\u4b38\u4b39\u4b3a\u4b3b\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991d\u4b3c\u4b3d\u4b3e\u4b3f\u4b40\u4b41\u4b42\u991a\u991b\u991c\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u4b43\u4b44\u4b45\u4b46\u4b47\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9937\u4b48\u4b49\u4b4a\u4b4b\u4b4c\u4b4d\u4b4e\u4b4f\u9936\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u4b50\u4b51\u4b52\u4b53\u4b54\u9944\u9945\u9946\u9947\u9948\u9949\u4b55\u4b56\u4b57\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u4b58\u4b59\u4b5a\u4b5b\u4b5c\u9954\u9955\u9956\u9957\u9958\u9959\u4b5d\u4b5e\u4b5f\u4b60\u995a\u995b\u995c\u4275\u4b61\u4b62\u4b63\u4b64\u4b65\u995d\u995e\u995f\u4b66\u4b67\u4b68\u9960\u9961\u4b69\u9962\u9963\u9964\u9965\u9966\u9967\u9968\u9969\u996a\u996b\u996c\u996d\u996e\u996f\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978\u9979\u997a\u997b\u997c\u997d\u997e\u997f\u9980\u9981\u9982\u9983\u9984\u9985\u9986\u9987\u9988\u998a\u998b\u9989\u998c\u998d\u998e\u998f\u9990\u9991\u9992\u9993\u9994\u4b6a\u9995\u9996\u9997\u4b6b\u4b6c\u9998\u4b6d\u4b6e\u9999\u999a\u999b\u999c\u999d\u4b6f\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u4b70\u4b71\u4b72\u99a4\u99a5\u99a6\u99a7\u99a8\u99a9\u99aa\u99ab\u4b73\u99ac\u99ad\u99ae\u4b74\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u4b75\u4b76\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u4b77\u4b78\u4b79\u4b7a\u4b7b\u4b7c\u4b7d\u4b7e\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u4b7f\u4b80\u4b81\u4b82\u4b83\u4b84\u4b85\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u4b86\u4b87\u4b88\u4b89\u4b8a\u4b8b\u4b8c\u4b8d\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u4b8e\u4b8f\u4b90\u4b91\u4b92\u99f3\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u4b93\u4b94\u4b95\u4b96\u4b97\u4b98\u4b99\u4b9a\u4b9b\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u4b9c\u4b9d\u4b9e\u4b9f\u4ba0\u4ba1\u4ba2\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\u4ba3\u4ba4\u4ba5\u4ba6\u4ba7\u4ba8\u4ba9\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9fad\u4baa\u4bab\u4bac\u4bad\u4bae\u4baf\u4bb0\u4bb1\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u4bb2\u4bb3\u4bb4\u4bb5\u4bb6\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u4bb7\u4bb8\u4bb9\u9a5d\u9a5e\u9a5f\u4bba\u4bbb\u4bbc\u4bbd\u9a60\u9a61\u9a62\u9a63\u4bbe\u9a64\u9a65\u9a66\u9a67\u9fae\u4bbf\u9a68\u9a69\u4bc0\u9a6a\u4bc1\u9a6b\u4bc2\u9a6c\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u4bc3\u9a8a\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u4bc4\u9a90\u9a91\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u4bc5\u9aa0\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9aa8\u4bc6\u9aa9\u4bc7\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab0\u9ab1\u4bc8\u4bc9\u9ab2\u9ab3\u9ab4\u9ab5\u9ab6\u9ab7\u4bca\u4bcb\u4bcc\u4bcd\u4bce\u9ab8\u9ab9\u9aba\u9abb\u9abc\u4bcf\u4bd0\u4bd1\u4bd2\u4bd3\u4bd4\u9abd\u9abe\u4bd5\u4bd6\u4bd7\u4bd8\u4bd9\u4bda\u9abf\u9ac0\u9ac1\u4bdb\u4bdc\u9ac2\u9ac3\u9ac4\u9ac5\u4bdd\u4bde\u4bdf\u4be0\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acb\u9acc\u4be1\u9acd\u9ace\u9acf\u4be2\u9ad0\u4be3\u9ad1\u9ad2\u9ad3\u9ad4\u4be4\u9ad5\u4be5\u9ad6\u4be6\u9ad7\u9ad8\u9ad9\u4be7\u4be8\u9ada\u4be9\u9adb\u9adc\u4bea\u9add\u4beb\u9ade\u4bec\u9adf\u9ae0\u4bed\u4bee\u9ae1\u9ae2\u9ae3\u9ae4\u9ae5\u9ae6\u9ae7\u9ae8\u9ae9\u9aea\u4bef\u4bf0\u4bf1\u4bf2\u4bf3\u4bf4\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af0\u9af1\u9af2\u9af3\u9af4\u4bf5\u4bf6\u9af5\u9af6\u9af7\u9af8\u9af9\u9afa\u9afb\u9b07\u4bf7\u4bf8\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u4bf9\u4bfa\u4bfb\u4bfc\u9b03\u9b04\u9b05\u9b06\u9b08\u4bfd\u4bfe\u4bff\u4c00\u4c01\u4c02\u4c03\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u4c04\u4c05\u4c06\u4c07\u9b10\u9b11\u9b12\u9b13\u4c08\u4c09\u4c0a\u4c0b\u9b14\u9b15\u9b16\u9b17\u9b18\u9b1d\u4c0c\u4c0d\u9b19\u9b1a\u9b1b\u9b1c\u4c0e\u9b1e\u9b1f\u9b20\u9b21\u9b22\u4c0f\u4c10\u4c11\u4c12\u9b23\u4c13\u4c14\u4c15\u9b24\u4c16\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u4c17\u4c18\u9b2b\u9b2c\u9b2d\u9b2e\u9b2f\u9b30\u9b31\u9b32\u4c19\u4c1a\u4c1b\u9b33\u4c1c\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3b\u4c1d\u4c1e\u9b3c\u9b3d\u9b3e\u9b3f\u9b40\u9b41\u9b42\u4c1f\u9b43\u9b44\u9b45\u9b46\u4c20\u4c21\u9b47\u4c22\u4c23\u9b48\u9b49\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u4c24\u4c25\u4c26\u4c27\u4c28\u4c29\u9b50\u4c2a\u9b51\u9b52\u9b53\u9b54\u9b55\u9b56\u4c2b\u4c2c\u4c2d\u4c2e\u9b57\u9b58\u9b59\u4c2f\u4c30\u4c31\u9b5a\u4c32\u9b5b\u9b5c\u9b5d\u9b5e\u4c33\u9b5f\u9b60\u9b61\u9b62\u4c34\u4c35\u4c36\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u4c37\u4c38\u4c39\u4c3a\u4c3b\u4c3c\u4c3d\u4c3e\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9ba3\u4c3f\u4c40\u4c41\u4c42\u4c43\u4c44\u4c45\u4c46\u4c47\u4c48\u4c49\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bba\u4c4a\u4c4b\u4c4c\u4c4d\u4c4e\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bfd\u4c4f\u4c50\u4c51\u4c52\u4c53\u4c54\u4c55\u4c56\u4c57\u4c58\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bfb\u4c59\u4c5a\u4c5b\u4c5c\u4c5d\u4c5e\u4c5f\u4c60\u4c61\u4c62\u4c63\u4c64\u4c65\u4c66\u4c67\u4c68\u4c69\u4c6a\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfc\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\u9c1b\u9c20\u4c6b\u4c6c\u4c6d\u4c6e\u4c6f\u4c70\u4c71\u4c72\u4c73\u4c74\u9c1c\u9c1d\u9c1e\u9c1f\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9fd0\u4c75\u4c76\u4c77\u4c78\u4c79\u4c7a\u4c7b\u4c7c\u4c7d\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9de0\u9ff3\u4c7e\u4c7f\u4c80\u4c81\u4c82\u4c83\u4c84\u4c85\u4c86\u4c87\u4c88\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u4c89\u4c8a\u4c8b\u4c8c\u4c8d\u4c8e\u4c8f\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c69\u9c6a\u9c6b\u4c90\u4c91\u4c92\u4c93\u4c94\u4c95\u9c68\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u4c96\u4c97\u4c98\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u4c99\u9c77\u9c78\u4c9a\u4c9b\u9c79\u9fe9\u9c7a\u9c7b\u4c9c\u9c7c\u9c7d\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9fd5\u4c9d\u9c84\u9c85\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c\u9c8d\u9c8e\u9c8f\u9c90\u9ff4\u4c9e\u4c9f\u9c91\u9c92\u9c93\u9c94\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa\u9cab\u9cac\u9ff5\u9ff6\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9\u9cba\u9cbb\u9cbc\u9cbd\u9cbf\u9cc0\u9cc1\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8\u9cc9\u9cca\u9ccb\u9ff7\u4ca0\u4ca1\u9cbe\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd1\u9cd2\u4ca2\u4ca3\u4ca4\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7\u9cd8\u9cd9\u9cda\u9cdb\u9ff8\u9ff9\u9cdc\u9cdd\u9cde\u9cdf\u9ce0\u9ce1\u9ce2\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u4ca5\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u4ca6\u4ca7\u4ca8\u4ca9\u4caa\u4cab\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0b\u9d0c\u9d0d\u9d0e\u4cac\u4cad\u4cae\u4caf\u4cb0\u4cb1\u4cb2\u4cb3\u4cb4\u4cb5\u4cb6\u4cb7\u4cb8\u9d0a\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u4cb9\u4cba\u4cbb\u4cbc\u4cbd\u4cbe\u4cbf\u4cc0\u4cc1\u4cc2\u4cc3\u4cc4\u4cc5\u4cc6\u4cc7\u4cc8\u4cc9\u4cca\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u4ccb\u4ccc\u4ccd\u4cce\u4ccf\u4cd0\u4cd1\u4cd2\u4cd3\u4cd4\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d65\u4cd5\u4cd6\u4cd7\u4cd8\u4cd9\u4cda\u4cdb\u4cdc\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d91\u4cdd\u4cde\u4cdf\u4ce0\u4ce1\u4ce2\u4ce3\u4ce4\u4ce5\u9d90\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u4ce6\u4ce7\u4ce8\u4ce9\u4cea\u4ceb\u4cec\u4ced\u4cee\u4cef\u4cf0\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcc\u9dcd\u9dce\u9dcf\u4cf1\u4cf2\u4cf3\u4cf4\u4cf5\u4cf6\u9dcb\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u4cf7\u4cf8\u4cf9\u4cfa\u4cfb\u4cfc\u4cfd\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9dfa\u9dfb\u9dfc\u4cfe\u4cff\u4d00\u4d01\u4d02\u4d03\u4d04\u4d05\u4d06\u9df9\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u4d07\u4d08\u4d09\u4d0a\u4d0b\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u4d0c\u4d0d\u9e13\u9e14\u4d0e\u9e15\u9e16\u9e17\u4d0f\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u4d10\u4d11\u4d12\u9e1f\u9e20\u9e21\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29\u4d13\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f\u4d14\u4d15\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47\u9e48\u9ffa\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u4d16\u9e55\u9e56\u9e57\u9e59\u9e5a\u9e5b\u9e5c\u4d17\u9e58\u9e5d\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u4d18\u9e65\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e6d\u9e6e\u9e6f\u9e70\u4d19\u9e71\u9e72\u9e73\u9e74\u9e75\u9e76\u4d1a\u9e77\u4d1b\u9e78\u9e79\u9e7a\u9e7b\u4d1c\u4d1d\u9e7c\u9e7d\u4d1e\u9e7e\u9e7f\u9e80\u9e81\u9e82\u4d1f\u9e83\u9e84\u4d20\u4d21\u4d22\u9e85\u9e86\u9e87\u9e88\u4d23\u4d24\u4d25\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u4d26\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u4d27\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u4d28\u9e9e\u4d29\u9e9f\u9ea0\u4d2a\u4d2b\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea7\u4d2c\u4d2d\u4d2e\u9ea8\u9ea9\u9eaa\u9eab\u4d2f\u4d30\u9eac\u9ead\u9eae\u4d31\u4d32\u4d33\u4d34\u9eaf\u9eb0\u4d35\u9eb1\u9eb2\u4d36\u4d37\u4d38\u9eb3\u9eb4\u4d39\u4d3a\u4d3b\u4d3c\u4d3d\u9eb5\u4d3e\u4d3f\u4d40\u9eb6\u4d41\u4d42\u4d45\u4d43\u4d44\u4d46\u9eb7\u9ea6\u9eb8\u9eb9\u9eba\u9ebb\u9ebc\u9ebd\u9ebe\u4d47\u9ebf\u9ec0\u9ec1\u4d48\u4d49\u9ec2\u9ec3\u9ec4\u9ec5\u9ec6\u4d4a\u9ec7\u9ec8\u9ec9\u9eca\u9ecb\u4d4b\u4d4c\u4d4d\u4d4e\u4d4f\u4d50\u9ecc\u9ecd\u9ece\u4d51\u4d52\u4d53\u9ecf\u4d54\u4d55\u4d56\u4d57\u4d58\u4d59\u9ed0\u4d5a\u4d5b\u4d5c\u9ed1\u9ed2\u4d5d\u4d5e\u58a8\u9ed3\u4d5f\u4d60\u9ed4\u9ed5\u9ed6\u9ed7\u9ed8\u4d61\u9eda\u9edb\u9edc\u9edd\u9ede\u4d62\u4d63\u9edf\u9ee0\u9ee1\u4d64\u4d65\u4d66\u4d67\u9ee2\u9ee3\u4d68\u4d69\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9ee9\u9eea\u4d6a\u4d6b\u4d6c\u9eeb\u9eec\u9eed\u9eee\u9eef\u4d6d\u4d6e\u4d6f\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u4d70\u4d71\u9ef5\u4d72\u4d73\u4d74\u9ef6\u4d75\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9eff\u9f00\u9f01\u9f02\u4d76\u9f03\u9f04\u4d77\u9f05\u4d78\u9f06\u9f07\u4d79\u9f08\u9f09\u9f0a\u9efe\u9f0b\u9f0c\u9f0d\u9f0e\u9f0f\u9f10\u9f11\u9f12\u4d7a\u4d7b\u4d7c\u9f13\u9f14\u9f15\u9f16\u4d7d\u4d7e\u4d7f\u9f17\u4d80\u9f18\u9f19\u9f1a\u9f1b\u4d81\u9f1c\u9f1d\u9f1e\u9f1f\u9f20\u9f21\u4d82\u9f22\u9f23\u9f24\u4d83\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9ffb\u9ffc\u4d84\u9f2d\u4d85\u9f2e\u9f2f\u9f30\u9f31\u4d86\u9f32\u9f33\u9f34\u9f35\u4d87\u9f36\u9f37\u9f38\u9f39\u4d88\u4d89\u9f3a\u9f3b\u9f3c\u9f3d\u9f3e\u9f3f\u4d8a\u4d8b\u9f40\u9f41\u4d8c\u4d8d\u4d8e\u4d8f\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u4d90\u4d91\u9f49\u9f4a\u9f4b\u4d92\u4d93\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f51\u9f52\u9f53\u9f54\u9f55\u4d94\u9f56\u9f57\u9f58\u4d95\u4d96\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u4d97\u4d98\u4d99\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u4d9a\u4d9b\u9f6a\u9f6b\u9f6c\u4d9c\u4d9d\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u4d9e\u4d9f\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u4da0\u4da1\u4da2\u9f78\u9f79\u9f7a\u9f7b\u4da3\u4da4\u4da5\u4da6\u4da7\u9f7c\u9f7d\u4da8\u4da9\u4daa\u9f7e\u4dab\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f8d\u9f8e\u9f8f\u9f91\u9f92\u9f93\u9f94\u9f95\u4dac\u9f96\u9f97\u9f98\u9f99\u4dad\u4dae\u9f9a\u9f9b\u9f9c\u4daf\u4db0\u9f9d\u4db1\u4db2\u9f9e\u9f9f\u9fa0\u9fa1\u4db3\u9fa2\u9fa3\u4db4\u9fa4\u9fa5\u4db5\u2f00\u3280\u3192\u319c\u3286\u3282\u3194\u32a4\u3196\u32a6\u3198\uf967\u319b\ufa70\u2f01\u2ea6\u32a5\u3197\uf905\u2f02\u2e80\uf95e\u2f03\u2f04\u319a\u2e84\u2e83\u2e82\u3288\uf91b\u2f05\uf9ba\u2f06\u3281\u3193\u3284\u2f07\uf977\u2f08\u319f\u2e85\uf9fd\uf9a8\u32ff\u32ad\u32a1\ufa73\uf92d\uf9b5\ufa30\uf965\uf9d4\uf9bb\ufa31\u329d\u2f09\ufa0c\ufa74\ufa32\u2f0a\ufa72\uf978\u2f0b\u3287\uf9d1\u3285\ufa75\u2f0c\u2e86\u2f0d\u32a2\u2f0e\ufa71\uf92e\uf979\uf955\uf954\ufa15\u2f0f\u2e87\u2f10\u2f11\u2e88\u2e89\ufa00\uf99c\uf9dd\uf9ff\uf9c7\uf98a\u2f12\uf99d\u3298\ufa76\ufa33\uf952\uf92f\ufa34\uf97f\u2f13\ufa77\u2f14\uf963\u2f15\u2f16\u32a9\uf9eb\u2f17\u3038\u3289\u3039\u303a\ufa35\u32af\u2f18\u2e8a\u2f19\u2e8b\u329e\uf91c\u2f1a\u2e81\u2f1b\uf96b\u2f1c\u2f1d\uf906\u32a8\u3294\uf9de\uf9ed\uf980\uf99e\u3244\ufa79\uf90b\ufa7a\ufa36\ufa78\ufa0d\ufa7b\ufa37\ufa38\u2f1e\u3283\u3195\uf9a9\u2f1f\u328f\u319e\ufa39\ufa10\ufa7c\uf96c\ufa3a\ufa7d\uf94a\uf942\u2f20\u2f21\u2f22\u2f23\u32b0\u2f24\u337d\u319d\ufa7e\uf90c\uf909\ufa7f\uf981\u2f25\u329b\ufa80\ufa81\u2f26\u32ab\u2f27\ufa04\u32aa\uf95f\uf9aa\uf9bc\u2f28\u2f29\u2e8c\u2e8d\u2e90\u2f2a\u2e8e\u2e8f\u2e91\u2f2b\uf9bd\uf94b\ufa3b\uf9df\ufa3c\u2f2c\u2f2d\uf9d5\uf921\uf9ab\u2f2e\u2f2f\u32a7\u2f30\u2e92\u2f31\u2f32\u337b\uf98e\u2e93\u2f33\u3245\u2f34\ufa01\uf9a2\uf928\ufa82\ufa0b\ufa83\uf982\u2f35\u2f36\uf943\u2f37\u2f38\u2f39\u2e95\u2e94\u2f3a\ufa84\u2f3b\uf9d8\uf966\ufa85\u2f3c\u2e97\u2e96\uf9a3\uf960\uf9ac\ufa6b\ufa3d\ufa86\uf9b9\ufa88\uf9d9\ufa87\ufa8a\ufa3e\ufa3f\ufa89\uf98f\ufa40\ufa8b\uf90d\uf990\u2f3d\uf9d2\ufa8c\u2f3e\u2f3f\u2e98\uf925\uf95b\ufa02\uf973\uf9a4\uf975\ufa8d\ufa8e\ufa8f\uf991\uf930\u2f40\u2f41\u2e99\ufa41\ufa90\uf969\u2f42\u3246\u2f43\uf9be\u2f44\u2f45\uf983\u2f46\u2e9b\ufa42\u2f47\u3290\u2e9c\u337e\uf9e0\u337c\ufa12\ufa91\uf9c5\ufa43\ufa06\uf98b\u2f48\uf901\u2f49\u328a\u2e9d\u3292\uf929\ufa92\ufa93\u2f4a\u328d\uf9e1\ufa94\uf9c8\uf9f4\uf9c9\uf9da\u3291\u337f\uf97a\ufa44\uf9e2\uf914\uf95c\uf9bf\uf94c\uf931\uf91d\u2f4b\u2f4c\u32a3\uf98c\ufa95\u2f4d\u2e9e\uf9a5\u2f4e\uf970\ufa96\u2f4f\u2e9f\u2f50\u2f51\u2f52\u2ea0\u2f53\u2f54\u328c\u2ea1\u2ea2\uf972\uf968\uf9e3\u329f\uf915\ufa05\uf9ca\ufa97\uf92a\ufa45\uf9f5\uf94d\uf9d6\ufa46\uf9cb\uf9ec\ufa99\uf904\ufa98\uf94e\ufa47\ufa9a\uf992\uf922\uf984\ufa9b\u2f55\u328b\u2ea3\uf9fb\uf99f\uf916\uf993\ufa48\ufa9c\uf9c0\uf9ee\uf932\uf91e\u2f56\ufa49\u2ea4\u2ea5\ufa9e\u2f57\u2f58\u2f59\u2f5a\u2f5b\u2f5c\u2ea7\uf946\u3295\u2f5d\u2ea8\ufa9f\uf9fa\uf92b\ufa16\ufaa0\uf9a7\u2f5e\uf961\uf9db\u2f5f\u2ea9\uf9ad\uf917\uf9e4\uf9cc\ufa4a\uf9ae\ufaa1\uf994\uf9ef\u2f60\u2f61\ufaa2\u2f62\u2f63\u2f64\u2f65\u3199\u329a\ufaa3\uf9cd\uf976\uf962\u2f66\u2eaa\u2f67\uf9e5\ufaa4\ufaa5\uf9c1\uf90e\u2f68\u2f69\u2f6a\u2f6b\ufa17\ufaa6\ufaa7\u32ac\uf933\u2f6c\u2eab\ufaa8\uf96d\ufaaa\ufaa9\ufa9d\u2f6d\u2f6e\u2f6f\uf9ce\uf93b\ufa4b\uf947\ufaab\uf964\uf985\u2f70\u2eac\u2ead\ufa18\ufa4c\u3293\ufa4e\ufa4d\ufa4f\ufa50\ufa51\u3297\ufa19\ufa1a\uf93c\ufa52\ufa53\ufa1b\uf9b6\u2f71\u2f72\uf995\u3299\uf956\ufa54\u2f73\ufa55\ufaac\uf9f7\u2f74\u2f75\u2eae\uf9f8\u3247\ufa56\ufaad\uf9a6\uf944\u2f76\ufaae\uf9f9\ufa1d\ufa03\uf97b\u2f77\u2eaf\uf9cf\uf96a\uf94f\ufaaf\uf93d\uf957\uf996\ufa57\ufab0\ufa58\uf950\ufa59\u2eb0\u2f78\ufab1\u2f79\u2eb2\u2eb5\u2eb1\u2eb3\u2eb4\ufa5a\uf9e6\uf90f\u2f7a\u2eb6\u2eb7\u2eb8\uf9af\ufa1e\u2f7b\uf934\u2f7c\u2eb9\ufa5b\ufab2\u2f7d\u2f7e\u2f7f\uf9b0\uf997\uf945\u2f80\u2ebb\u2eba\u2f81\u2ebc\uf953\uf926\u2f82\uf9f6\u2f83\ufa5c\u2f84\u2f85\u2ebd\u2f86\ufa6d\u2f87\u2f88\u2f89\uf97c\u2f8a\u2f8b\ufa5d\ufa5e\u2ebe\u2ebf\u2ec0\uf974\uf9fe\ufab3\uf93e\ufab4\uf958\uf918\uf96e\ufa5f\uf999\uf9c2\uf923\uf9f0\uf935\ufa20\uf91f\uf910\u2f8c\u2ec1\uf936\u2f8d\ufab5\uf911\uf927\u2f8e\ufa08\u2f8f\u2f90\u2ec2\uf9a0\uf9e7\uf9e8\uf912\ufa60\ufab6\uf924\u2f91\u2ec4\u2ec3\ufab7\ufa0a\u2f92\ufa61\ufab8\u2ec5\u2ec6\u2f93\u2ec7\u2f94\uf96f\uf9a1\ufab9\ufabb\uf97d\uf941\ufabe\ufa22\ufaba\uf95d\ufabd\ufa62\ufabc\ufa63\ufabf\uf9fc\uf95a\ufac0\u2ec8\u2f95\u2f96\uf900\u2f97\u2f98\u2f99\u3296\uf948\u32ae\uf903\ufa64\ufa65\ufac1\u2ec9\u2f9a\u2f9b\u2f9c\u2eca\uf937\u2f9d\uf902\u2f9e\uf998\uf9d7\ufac2\ufa07\uf98d\u2ecb\u2f9f\uf971\u2fa0\u2fa1\ufa66\u2ecc\u2ecd\u2ece\uf99a\ufa25\ufa67\u329c\ufac3\uf9c3\uf913\u2fa2\u2ecf\uf92c\ufa2e\ufa26\u2fa3\uf919\ufac4\uf9b7\u2fa4\uf9e9\u2fa5\uf97e\uf90a\u2fa6\u328e\uf9b1\ufac5\uf93f\uf99b\u2ed0\u2ed1\u2fa7\u2ed2\u2ed3\u2fa8\uf986\u2ed4\u2fa9\u2ed5\u2ed6\uf9c6\uf951\ufa09\uf959\uf9d3\ufac6\uf9dc\uf9f1\u2faa\ufa2f\uf9b8\u2fab\uf9ea\ufa68\ufac7\u2fac\u2ed7\uf9b2\uf949\uf938\uf9b3\u2fad\u2ed8\ufa1c\ufac8\u2fae\u2faf\u2fb0\u2fb1\ufac9\u2ed9\u2fb2\u2fb3\ufa69\ufaca\u2fb4\u32a0\ufacb\uf9b4\ufa6a\ufacc\uf9d0\u2eda\u2fb5\u2edb\u2fb6\u2edc\u2edd\u2fb7\u2edf\u2ede\ufa2a\ufa2b\ufa2c\u2ee0\u2fb8\u2ee1\u2fb9\u2fba\uf91a\uf987\u2ee2\u2fbb\u2ee3\u2fbc\u2fbd\ufacd\u2fbe\u2fbf\u2fc0\u2fc1\u2ee4\u2fc2\uf939\uf9f2\u2ee5\u2fc3\ufa2d\uf93a\uf920\u2ee6\u2fc4\u2ee7\uf940\u2fc5\uf988\uf9f3\u2fc6\u2ee8\u2fc7\u2fc8\u2ee9\u2fc9\uf989\u2fca\u2fcb\u2fcc\u2eea\u2fcd\u2fce\u2fcf\u2fd0\ufad8\u2fd1\u2eeb\u2eec\u2fd2\u2eed\u2eee\uf9c4\u2fd3\u2eef\ufad9\u2ef0\uf907\uf908\uface\u2fd4\u2ef1\u2ef2\u2ef3\u2fd5\ufad2\ufad3\ufad4\ufad0\ufacf\ufad1\ufa6c\ufad5\ufad6\ufad7\ufffd'; +const String _ducetOrder = + '\u0332\u0313\u0343\u0486\u2cf1\u0314\u0485\u2cf0\u0301\u0341\u0954\u0300\u0340\u0953\u0306\u0302\u030c\u030a\u0342\u0308\u030b\u0303\u0307\u0338\u0327\u0328\u0304\u030d\u030e\u0312\u0315\u031a\u033d\u033e\u033f\u0346\u034a\u034b\u034c\u0350\u0351\u0352\u0357\u035b\u035d\u035e\u0484\u0487\u0741\u0745\u0b55\u17cb\u17cc\u17cd\u17ce\u17cf\u17d0\u17d1\u17dd\u1ab0\u1ab1\u1ab2\u1ab3\u1ab4\u1abb\u1abc\u1dc0\u1dc1\u1dc3\u1dc4\u1dc5\u1dc6\u1dc7\u1dc8\u1dc9\u1dcb\u1dcc\u1dcd\u1dce\u1dd1\u1df5\u1df6\u1df7\u1df8\u1dfb\u1dfe\u20f0\u2cef\ua67c\ua67d\u0316\u0317\u0318\u0319\u031c\u031d\u031e\u031f\u0320\u0329\u032a\u032b\u032c\u032f\u0333\u033a\u033b\u033c\u0347\u0348\u0349\u034d\u034e\u0353\u0354\u0355\u0356\u0359\u035a\u035c\u035f\u0362\u0742\u0746\u07fd\u0859\u085a\u085b\u1ab5\u1ab6\u1ab7\u1ab8\u1ab9\u1aba\u1abd\u1dc2\u1dcf\u1dd0\u1df9\u1dfc\u1dfd\u1dff\u20ec\u20ed\u20ee\u20ef\ufe27\u0336\u0337\u20d8\u20d9\u20da\u20e5\u20ea\u20eb\u1abe\u20dd\u20de\u20df\u20e0\u20e2\u20e3\u20e4\u3099\uff9e\u309a\uff9f\u0335\u0305\u0309\u030f\u0310\u0311\u031b\u0321\u0322\u0323\u0324\u0325\u0326\u032d\u032e\u0330\u0331\u0334\u0339\u0345\u0358\u0360\ufe22\ufe29\u0361\ufe20\u0483\ufe2e\ua66f\u05b0\u05b1\u05b2\u05b3\u05b4\u05b5\u05b6\u05b7\u05b8\u05c7\u05b9\u05ba\u05bb\u05c2\u05c1\u05bc\u05bf\ufb1e\u081c\u081d\u081e\u081f\u0820\u0821\u0822\u0823\u0824\u0825\u0826\u0827\u0828\u0829\u082a\u082b\u082c\u0818\u0819\u082d\u064b\ufe71\ufe70\u08f0\u08e7\u064c\ufe72\u08f1\u08e8\u064d\ufe74\u08f2\u08e9\u064e\ufe77\ufe76\u08e4\u08f4\u08f5\u064f\ufe79\ufe78\u08e5\u08fe\u0650\ufe7b\ufe7a\u08e6\u08f6\u0651\u0afb\ufe7d\ufe7c\u0652\u0afa\ufe7f\ufe7e\u0653\u0afc\u0654\u0655\u065f\u0656\u0657\u0658\u08ff\u0659\u065a\u065b\u065c\u065d\u065e\u08e3\u08f7\u08f8\u08fd\u08fb\u08fc\u08f9\u08fa\u0670\u0711\u0730\u0731\u0732\u0733\u0734\u0735\u0736\u0737\u0738\u0739\u073a\u073b\u073c\u073d\u073e\u073f\u07eb\u07ec\u07ed\u07ee\u07ef\u07f0\u07f1\u07f2\u07f3\u135f\u135e\u135d\ua6f0\ua6f1\u093c\u09bc\u0a3c\u0abc\u0afd\u0afe\u0aff\u0b3c\u0cbc\u1b34\u1be6\u1c37\ua9b3\u0900\u0901\u0981\u0a01\u0a81\u0b01\u0c00\u0c01\u0c81\u0d01\u0d81\u1b00\u1b01\ua8c5\ua980\u0902\u0982\u0a02\u0a82\u0b02\u0b82\u0c02\u0c04\u0c82\u0d00\u0d02\u0d82\u0f7e\u1036\u17c6\u1a74\u1b02\u1b80\u1ced\ua80b\ua880\ua981\u0903\u0983\u0a03\u0a83\u0b03\u0c03\u0c83\u0d03\u0d83\u0f7f\u1038\u17c7\u1b04\u1b82\u1cf2\u1cf3\ua881\ua983\u09fe\u0a70\u0a71\u1b03\ua982\u1b81\uabec\u0e4e\u0e47\u0e48\u0e49\u0e4a\u0e4b\u0e4c\u0e4d\u0ec8\u0ec9\u0eca\u0ecb\u0ecc\u0ecd\uaabf\uaac1\u0f39\ua92b\ua92c\ua92d\u1037\u17c8\u17c9\u17ca\u1a75\u1a76\u1a77\u1a78\u1a79\u1a7a\u1a7b\u1a7c\u1939\u193a\u193b\u302a\u302b\u302c\u302d\u302e\u302f\u20d0\u20d1\u20d2\u20d3\u20d4\u20d5\u20d6\u20d7\u20db\u20dc\u20e1\u20e6\u20e7\u20e8\u20e9\u0344\ufc5e\ufc5f\ufcf2\ufc60\ufcf3\ufc61\ufcf4\ufc62\ufc63\u0009\u000a\u000b\u000c\u000d\u0085\u2028\u2029\u0020\u3000\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u00a0\u2007\u202f\u203e\ufe49\ufe4a\ufe4b\ufe4c\u005f\uff3f\ufe4d\ufe4e\ufe4f\ufe33\ufe34\u2017\u002d\uff0d\ufe63\u058a\u1400\u1b60\u1806\u1807\u2010\u2011\u2012\u2013\ufe32\u2014\ufe58\ufe31\u2015\u2e3a\u2e3b\u2053\u2e43\u2e17\u2e40\u301c\u3030\u30a0\u30fb\uff65\u002c\uff0c\ufe50\ufe10\u2e34\u2e32\u2e41\u2e4c\u2e4e\u2e4f\u055d\u060c\u060d\u066b\u066c\u07f8\u1802\u1808\ua4fe\ua60d\ua6f5\u3001\ufe51\uff64\ufe11\ufe45\ufe46\u003b\u037e\uff1b\ufe54\ufe14\u061b\u204f\u2e35\ua6f6\u2e49\u003a\uff1a\ufe55\ufe13\u2a74\u0589\u061e\u0703\u0704\u0705\u0706\u0707\u0708\u0830\u0831\u0832\u0833\u0834\u0835\u0836\u0837\u0838\u0839\u083a\u083b\u083c\u083d\u083e\u1361\u1363\u1364\u1365\u1366\u1804\u1805\u0f14\u17d6\u1b5d\ua9c7\u16eb\u16ec\u16ed\ua6f4\u0021\uff01\ufe57\ufe15\u203c\u2049\u00a1\u055c\u07f9\u1944\u003f\uff1f\ufe56\ufe16\u2048\u2047\u00bf\u2e2e\u055e\u061f\u0709\u1367\u1945\u2cfa\u2cfb\ua60f\ua6f7\uaaf1\u203d\u2e18\u002e\uff0e\u2024\ufe52\u2025\ufe30\u2026\ufe19\u1801\u06d4\u0701\u0702\u1362\u1803\u1809\u166e\u1b5c\u2cf9\u2cfe\u2e30\u2e3c\ua4ff\ua60e\ua6f3\u3002\uff61\ufe12\u00b7\u0387\u2e31\u2e33\u0964\u0965\ua8ce\ua8cf\u1c3b\u1c3c\ua876\ua877\u1735\u1736\ua92f\u104a\u104b\u17d4\u17d5\u1aa8\u1aa9\u1aaa\u1aab\u1b5e\u1b5f\ua9c8\ua9c9\uaa5d\uaa5e\uaa5f\uaaf0\uabeb\u1c7e\u1c7f\u0700\u07f7\u10fb\u1360\u1368\u1a1e\u1a1f\u1b5a\u1b5b\ua9c1\ua9c2\ua9c3\ua9c4\ua9c5\ua9c6\ua9ca\ua9cb\ua9cc\ua9cd\ua6f2\ua95f\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\u2e2a\u2e2b\u2e2c\u2e2d\u2e3d\u2cfc\u2cff\u2e19\'\uff07\u2018\u2019\u201a\u201b\u2039\u203a\u0022\uff02\u201c\u201d\u201e\u201f\u2e42\u301d\u301e\u301f\u00ab\u00bb\u0028\uff08\ufe59\u207d\u208d\ufe35\u2474\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2475\u2487\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u249c\u249d\u249e\u249f\u24a0\u24a1\u24a2\u24a3\u24a4\u24a5\u24a6\u24a7\u24a8\u24a9\u24aa\u24ab\u24ac\u24ad\u24ae\u24af\u24b0\u24b1\u24b2\u24b3\u24b4\u24b5\u3200\u320e\u3201\u320f\u3202\u3210\u3203\u3211\u3204\u3212\u3205\u3213\u3206\u3214\u3207\u3215\u321d\u321e\u3208\u3216\u321c\u3209\u3217\u320a\u3218\u320b\u3219\u320c\u321a\u320d\u321b\u3220\u3226\u3222\u3228\u3221\u3224\u3239\u323d\u3241\u3227\u3225\u3238\u3229\u323f\u3234\u323a\u3223\u322f\u323b\u3230\u322a\u3232\u322d\u3231\u322c\u322b\u3235\u323c\u3233\u3237\u3240\u3242\u3243\u3236\u323e\u322e\u0029\uff09\ufe5a\u207e\u208e\ufe36\u005b\uff3b\ufe47\u005d\uff3d\ufe48\u007b\uff5b\ufe5b\ufe37\u007d\uff5d\ufe5c\ufe38\u0f3a\u0f3b\u0f3c\u0f3d\u169b\u169c\u2045\u2046\u2308\u2309\u230a\u230b\u29fc\u29fd\u2983\u2984\u2985\uff5f\u2986\uff60\u2987\u2988\u2989\u298a\u298b\u298c\u298d\u298e\u298f\u2990\u2991\u2992\u2993\u2994\u2995\u2996\u2997\u2998\u27c5\u27c6\u27e6\u27e7\u27e8\u27e9\u27ea\u27eb\u27ec\u27ed\u27ee\u27ef\u2768\u2769\u276a\u276b\u276c\u276d\u276e\u276f\u2770\u2771\u2772\u2773\u2774\u2775\u2e02\u2e03\u2e04\u2e05\u2e09\u2e0a\u2e0c\u2e0d\u2e1c\u2e1d\u2e20\u2e21\u2e22\u2e23\u2e24\u2e25\u2e26\u2e27\u2e28\u2e29\u2329\u3008\ufe3f\u232a\u3009\ufe40\u300a\ufe3d\u300b\ufe3e\u300c\uff62\ufe41\u300d\uff63\ufe42\u300e\ufe43\u300f\ufe44\u3010\ufe3b\u3011\ufe3c\u3014\ufe5d\ufe39\u3015\ufe5e\ufe3a\u3016\ufe17\u3017\ufe18\u3018\u3019\u301a\u301b\ufd3e\ufd3f\u2016\u2e3e\u29d8\u29d9\u29da\u29db\u00a7\u2e39\u00b6\u204b\u2e4d\u2e3f\u0040\uff20\ufe6b\u002a\uff0a\ufe61\u204e\u2051\u066d\ua673\u002f\uff0f\\\uff3c\ufe68\u2e4a\u0026\uff06\ufe60\u204a\u2e52\u0023\uff03\ufe5f\u0025\uff05\ufe6a\u066a\u2030\u0609\u2031\u060a\u2020\u2021\u2e36\u2e37\u2e38\u2e4b\u2022\u2023\u2027\u2043\u204c\u204d\u2032\u2033\u2034\u2057\u2035\u2036\u2037\u3003\u303d\u2038\u203b\u203f\u2054\u2040\u2050\u2041\u2042\u2e00\u2e01\u2e06\u2e07\u2e08\u2e0b\u2e0e\u2e0f\u2e10\u2e11\u2e12\u2e13\u2e14\u2e15\u2e16\u2e1a\u2e1b\u2e1e\u2e1f\u2e44\u2e45\u2e46\u2e47\u2e48\ua67e\u055a\u055b\u055f\u05be\u05c0\u05c3\u05c6\u05f3\u05f4\u070a\u070b\u070c\u070d\u085e\u1800\u0970\ua8f8\ua8f9\ua8fa\ua8fc\u09fd\u0a76\u0af0\u0c77\u0c84\u0df4\u0e4f\u0e5a\u0e5b\uaade\uaadf\u0f04\u0f05\u0f06\u0f07\u0f08\u0f09\u0f0a\u0fd0\u0fd1\u0f0b\u0f0c\u0f0d\u0f0e\u0f0f\u0f10\u0f11\u0f12\u0f85\u0fd2\u0fd3\u0fd4\u0fd9\u0fda\u1c3d\u1c3e\u1c3f\u104c\u104d\u104e\u104f\u17d8\u17d9\u17da\u1aa0\u1aa1\u1aa2\u1aa3\u1aa4\u1aa5\u1aa6\u1aac\u1aad\u1cc0\u1cc1\u1cc2\u1cc3\u1cc4\u1cc5\u1cc6\u1cc7\u2d70\ua874\ua875\u1bfc\u1bfd\u1bfe\u1bff\ua92e\ua9de\ua9df\uaa5c\u0060\u1fef\uff40\u00b4\u0384\u1ffd\u02dc\u005e\uff3e\u00af\uffe3\u02d8\u02d9\u00a8\u0385\u1fee\u1fed\u1fc1\u02da\u02dd\u00b8\u02db\u1fbd\u1fbf\u1fce\u1fcd\u1fcf\u1ffe\u1fde\u1fdd\u1fdf\u1fc0\u309b\u309c\u02b9\u0374\u0375\u02ba\u02c2\u02c3\u02c4\u02c5\u02c6\u02c7\u02c8\u02c9\u02ca\u02cb\u02cc\u02cd\u02ce\u02cf\u02d2\u02d3\u02d4\u02d5\uab6a\uab6b\u02d6\u02d7\u02de\u02df\u02e5\u02e6\u02e7\u02e8\u02e9\u02ea\u02eb\u02ec\u02ed\u02ef\u02f0\u02f1\u02f2\u02f3\u02f4\u02f5\u02f6\u02f7\u02f8\u02f9\u02fa\u02fb\u02fc\u02fd\u02fe\u02ff\u1390\u1391\u1392\u1393\u1394\u1395\u1396\u1397\u1398\u1399\ua700\ua701\ua702\ua703\ua704\ua705\ua706\ua707\ua708\ua709\ua70a\ua70b\ua70c\ua70d\ua70e\ua70f\ua710\ua711\ua712\ua713\ua714\ua715\ua716\ua717\ua718\ua719\ua71a\ua71b\ua71c\ua71d\ua71e\ua71f\ua720\ua721\ua788\ua789\ua78a\uab5b\u00b0\u2103\u2109\u0482\u058d\u058e\u0608\u060e\u060f\u06de\u06e9\ufdfd\ufbb2\ufbb3\ufbb4\ufbb5\ufbb6\ufbb7\ufbb8\ufbb9\ufbba\ufbbb\ufbbc\ufbbd\ufbbe\ufbbf\ufbc0\ufbc1\u07f6\u09fa\u0b70\u0bf3\u0bf4\u0bf5\u0bf6\u0bf7\u0bf8\u0bfa\u0c7f\u0d4f\u0d79\ua828\ua829\ua82a\ua82b\ua836\ua837\ua839\u0f01\u0f02\u0f03\u0f13\u0f15\u0f16\u0f17\u0f1a\u0f1b\u0f1c\u0f1d\u0f1e\u0f1f\u0f34\u0f36\u0f38\u0fbe\u0fbf\u0fc0\u0fc1\u0fc2\u0fc3\u0fc4\u0fc5\u0fc7\u0fc8\u0fc9\u0fca\u0fcb\u0fcc\u0fce\u0fcf\u0fd5\u0fd6\u0fd7\u0fd8\u166d\u1940\u109e\u109f\uaa77\uaa78\uaa79\u19e0\u19e1\u19e2\u19e3\u19e4\u19e5\u19e6\u19e7\u19e8\u19e9\u19ea\u19eb\u19ec\u19ed\u19ee\u19ef\u19f0\u19f1\u19f2\u19f3\u19f4\u19f5\u19f6\u19f7\u19f8\u19f9\u19fa\u19fb\u19fc\u19fd\u19fe\u19ff\u1b61\u1b62\u1b63\u1b64\u1b65\u1b66\u1b67\u1b68\u1b69\u1b6a\u1b74\u1b75\u1b76\u1b77\u1b78\u1b79\u1b7a\u1b7b\u1b7c\u00a9\u00ae\u2104\u2108\u2114\u2117\u2118\u211e\u211f\u2123\u2125\u2127\u2129\u212e\u213a\u2141\u2142\u2143\u2144\u214a\u214c\u214f\u218a\u218b\u2190\uffe9\u219a\u2192\uffeb\u219b\u2191\uffea\u2193\uffec\u2194\u21ae\u2195\u2196\u2197\u2198\u2199\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cb\u21cc\u21d0\u21cd\u21d1\u21d2\u21cf\u21d3\u21d4\u21ce\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2200\u2201\u2202\u2203\u2204\u2205\u2206\u2207\u2208\u2209\u220a\u220b\u220c\u220d\u03f6\u220e\u220f\u2210\u2211\u2140\u002b\uff0b\ufb29\ufe62\u207a\u208a\u00b1\u00f7\u00d7\u003c\uff1c\ufe64\u226e\u003d\uff1d\ufe66\u207c\u208c\u2260\u2a75\u2a76\u003e\uff1e\ufe65\u226f\u00ac\uffe2\u007c\uff5c\u00a6\uffe4\u007e\uff5e\u2212\u207b\u208b\u2052\u2213\u2214\u2215\u2044\u2216\u2217\u2218\u2219\u221a\u221b\u0606\u221c\u0607\u221d\u221e\u221f\u2220\u2221\u2222\u2223\u2224\u2225\u2226\u2227\u2228\u2229\u222a\u222b\u222c\u222d\u2a0c\u222e\u222f\u2230\u2231\u2232\u2233\u2234\u2235\u2236\u2237\u2238\u2239\u223a\u223b\u223c\u2241\u223d\u223e\u223f\u2240\u2242\u2243\u2244\u2245\u2247\u2246\u2248\u2249\u224a\u224b\u224c\u224d\u226d\u224e\u224f\u2250\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2262\u2263\u2264\u2270\u2265\u2271\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u2272\u2274\u2273\u2275\u2276\u2278\u2277\u2279\u227a\u2280\u227b\u2281\u227c\u22e0\u227d\u22e1\u227e\u227f\u2282\u2284\u2283\u2285\u2286\u2288\u2287\u2289\u228a\u228b\u228c\u228d\u228e\u228f\u2290\u2291\u22e2\u2292\u22e3\u2293\u2294\u2295\u2296\u2297\u2298\u2299\u229a\u229b\u229c\u229d\u229e\u229f\u22a0\u22a1\u22a2\u22ac\u22a3\u22a4\u22a5\u22a6\u22a7\u22a8\u22ad\u22a9\u22ae\u22aa\u22ab\u22af\u22b0\u22b1\u22b2\u22ea\u22b3\u22eb\u22b4\u22ec\u22b5\u22ed\u22b6\u22b7\u22b8\u22b9\u22ba\u22bb\u22bc\u214b\u22bd\u22be\u22bf\u22c0\u22c1\u22c2\u22c3\u22c4\u22c5\u22c6\u22c7\u22c8\u22c9\u22ca\u22cb\u22cc\u22cd\u22ce\u22cf\u22d0\u22d1\u22d2\u22d3\u22d4\u22d5\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u22ee\u22ef\u22f0\u22f1\u22f2\u22f3\u22f4\u22f5\u22f6\u22f7\u22f8\u22f9\u22fa\u22fb\u22fc\u22fd\u22fe\u22ff\u2300\u2301\u2302\u2303\u2304\u2305\u2306\u2307\u230c\u230d\u230e\u230f\u2310\u2311\u2312\u2313\u2314\u2315\u2316\u2317\u2318\u2319\u231a\u231b\u231c\u231d\u231e\u231f\u2320\u2321\u2322\u2323\u2324\u2325\u2326\u2327\u2328\u232b\u232c\u232d\u232e\u232f\u2330\u2331\u2332\u2333\u2334\u2335\u2336\u2337\u2338\u2339\u233a\u233b\u233c\u233d\u233e\u233f\u2340\u2341\u2342\u2343\u2344\u2345\u2346\u2347\u2348\u2349\u234a\u234b\u234c\u234d\u234e\u234f\u2350\u2351\u2352\u2353\u2354\u2355\u2356\u2357\u2358\u2359\u235a\u235b\u235c\u235d\u235e\u235f\u2360\u2361\u2362\u2363\u2364\u2365\u2366\u2367\u2368\u2369\u236a\u236b\u236c\u236d\u236e\u236f\u2370\u2371\u2372\u2373\u2374\u2375\u2376\u2377\u2378\u2379\u237a\u237b\u237c\u237d\u237e\u237f\u2380\u2381\u2382\u2383\u2384\u2385\u2386\u2387\u2388\u2389\u238a\u238b\u238c\u238d\u238e\u238f\u2390\u2391\u2392\u2393\u2394\u2395\u2396\u2397\u2398\u2399\u239a\u239b\u239c\u239d\u239e\u239f\u23a0\u23a1\u23a2\u23a3\u23a4\u23a5\u23a6\u23a7\u23a8\u23a9\u23aa\u23ab\u23ac\u23ad\u23ae\u23af\u23b0\u23b1\u23b2\u23b3\u23b4\u23b5\u23b6\u23b7\u23b8\u23b9\u23ba\u23bb\u23bc\u23bd\u23be\u23bf\u23c0\u23c1\u23c2\u23c3\u23c4\u23c5\u23c6\u23c7\u23c8\u23c9\u23ca\u23cb\u23cc\u23cd\u23ce\u23cf\u23d0\u23d1\u23d2\u23d3\u23d4\u23d5\u23d6\u23d7\u23d8\u23d9\u23da\u23db\u23dc\u23dd\u23de\u23df\u23e0\u23e1\u23e2\u23e3\u23e4\u23e5\u23e6\u23e7\u23e8\u23e9\u23ea\u23eb\u23ec\u23ed\u23ee\u23ef\u23f0\u23f1\u23f2\u23f3\u23f4\u23f5\u23f6\u23f7\u23f8\u23f9\u23fa\u23fb\u23fc\u23fd\u23fe\u23ff\u2400\u2401\u2402\u2403\u2404\u2405\u2406\u2407\u2408\u2409\u240a\u240b\u240c\u240d\u240e\u240f\u2410\u2411\u2412\u2413\u2414\u2415\u2416\u2417\u2418\u2419\u241a\u241b\u241c\u241d\u241e\u241f\u2420\u2421\u2422\u2423\u2424\u2425\u2426\u2440\u2441\u2442\u2443\u2444\u2445\u2446\u2447\u2448\u2449\u244a\u2500\u2501\u2502\uffe8\u2503\u2504\u2505\u2506\u2507\u2508\u2509\u250a\u250b\u250c\u250d\u250e\u250f\u2510\u2511\u2512\u2513\u2514\u2515\u2516\u2517\u2518\u2519\u251a\u251b\u251c\u251d\u251e\u251f\u2520\u2521\u2522\u2523\u2524\u2525\u2526\u2527\u2528\u2529\u252a\u252b\u252c\u252d\u252e\u252f\u2530\u2531\u2532\u2533\u2534\u2535\u2536\u2537\u2538\u2539\u253a\u253b\u253c\u253d\u253e\u253f\u2540\u2541\u2542\u2543\u2544\u2545\u2546\u2547\u2548\u2549\u254a\u254b\u254c\u254d\u254e\u254f\u2550\u2551\u2552\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255a\u255b\u255c\u255d\u255e\u255f\u2560\u2561\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256a\u256b\u256c\u256d\u256e\u256f\u2570\u2571\u2572\u2573\u2574\u2575\u2576\u2577\u2578\u2579\u257a\u257b\u257c\u257d\u257e\u257f\u2580\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588\u2589\u258a\u258b\u258c\u258d\u258e\u258f\u2590\u2591\u2592\u2593\u2594\u2595\u2596\u2597\u2598\u2599\u259a\u259b\u259c\u259d\u259e\u259f\u25a0\uffed\u25a1\u25a2\u25a3\u25a4\u25a5\u25a6\u25a7\u25a8\u25a9\u25aa\u25ab\u25ac\u25ad\u25ae\u25af\u25b0\u25b1\u25b2\u25b3\u25b4\u25b5\u25b6\u25b7\u25b8\u25b9\u25ba\u25bb\u25bc\u25bd\u25be\u25bf\u25c0\u25c1\u25c2\u25c3\u25c4\u25c5\u25c6\u25c7\u25c8\u25c9\u25ca\u25cb\uffee\u25cc\u25cd\u25ce\u25cf\u25d0\u25d1\u25d2\u25d3\u25d4\u25d5\u25d6\u25d7\u25d8\u25d9\u25da\u25db\u25dc\u25dd\u25de\u25df\u25e0\u25e1\u25e2\u25e3\u25e4\u25e5\u25e6\u25e7\u25e8\u25e9\u25ea\u25eb\u25ec\u25ed\u25ee\u25ef\u25f0\u25f1\u25f2\u25f3\u25f4\u25f5\u25f6\u25f7\u25f8\u25f9\u25fa\u25fb\u25fc\u25fd\u25fe\u25ff\u2600\u2601\u2602\u2603\u2604\u2605\u2606\u2607\u2608\u2609\u260a\u260b\u260c\u260d\u260e\u260f\u2610\u2611\u2612\u2613\u2614\u2615\u2616\u2617\u2618\u2619\u261a\u261b\u261c\u261d\u261e\u261f\u2620\u2621\u2622\u2623\u2624\u2625\u2626\u2627\u2628\u2629\u262a\u262b\u262c\u262d\u262e\u262f\u2638\u2639\u263a\u263b\u263c\u263d\u263e\u263f\u2640\u2641\u2642\u2643\u2644\u2645\u2646\u2647\u2648\u2649\u264a\u264b\u264c\u264d\u264e\u264f\u2650\u2651\u2652\u2653\u2654\u2655\u2656\u2657\u2658\u2659\u265a\u265b\u265c\u265d\u265e\u265f\u2660\u2661\u2662\u2663\u2664\u2665\u2666\u2667\u2668\u2669\u266a\u266b\u266c\u2670\u2671\u2672\u2673\u2674\u2675\u2676\u2677\u2678\u2679\u267a\u267b\u267c\u267d\u267e\u267f\u2680\u2681\u2682\u2683\u2684\u2685\u2686\u2687\u2688\u2689\u2690\u2691\u2692\u2693\u2694\u2695\u2696\u2697\u2698\u2699\u269a\u269b\u269c\u269d\u269e\u269f\u26a0\u26a1\u26a2\u26a3\u26a4\u26a5\u26a6\u26a7\u26a8\u26a9\u26aa\u26ab\u26ac\u26ad\u26ae\u26af\u26b0\u26b1\u26b2\u26b3\u26b4\u26b5\u26b6\u26b7\u26b8\u26b9\u26ba\u26bb\u26bc\u26bd\u26be\u26bf\u26c0\u26c1\u26c2\u26c3\u26c4\u26c5\u26c6\u26c7\u26c8\u26c9\u26ca\u26cb\u26cc\u26cd\u26ce\u26cf\u26d0\u26d1\u26d2\u26d3\u26d4\u26d5\u26d6\u26d7\u26d8\u26d9\u26da\u26db\u26dc\u26dd\u26de\u26df\u26e0\u26e1\u26e2\u26e3\u26e4\u26e5\u26e6\u26e7\u26e8\u26e9\u26ea\u26eb\u26ec\u26ed\u26ee\u26ef\u26f0\u26f1\u26f2\u26f3\u26f4\u26f5\u26f6\u26f7\u26f8\u26f9\u26fa\u26fb\u26fc\u26fd\u26fe\u26ff\u2700\u2701\u2702\u2703\u2704\u2705\u2706\u2707\u2708\u2709\u270a\u270b\u270c\u270d\u270e\u270f\u2710\u2711\u2712\u2713\u2714\u2715\u2716\u2717\u2718\u2719\u271a\u271b\u271c\u271d\u271e\u271f\u2720\u2e50\u2e51\u2721\u2722\u2723\u2724\u2725\u2726\u2727\u2728\u2729\u272a\u272b\u272c\u272d\u272e\u272f\u2730\u2731\u2732\u2733\u2734\u2735\u2736\u2737\u2738\u2739\u273a\u273b\u273c\u273d\u273e\u273f\u2740\u2741\u2742\u2743\u2744\u2745\u2746\u2747\u2748\u2749\u274a\u274b\u274c\u274d\u274e\u274f\u2750\u2751\u2752\u2753\u2754\u2755\u2756\u2757\u2758\u2759\u275a\u275b\u275c\u275d\u275e\u275f\u2760\u2761\u2762\u2763\u2764\u2765\u2766\u2767\u2794\u2795\u2796\u2797\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b0\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27bf\u27c0\u27c1\u27c2\u27c3\u27c4\u27c7\u27c8\u27c9\u27ca\u27cb\u27cc\u27cd\u27ce\u27cf\u27d0\u27d1\u27d2\u27d3\u27d4\u27d5\u27d6\u27d7\u27d8\u27d9\u27da\u27db\u27dc\u27dd\u27de\u27df\u27e0\u27e1\u27e2\u27e3\u27e4\u27e5\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292b\u292c\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u297c\u297d\u297e\u297f\u2980\u2981\u2982\u2999\u299a\u299b\u299c\u299d\u299e\u299f\u29a0\u29a1\u29a2\u29a3\u29a4\u29a5\u29a6\u29a7\u29a8\u29a9\u29aa\u29ab\u29ac\u29ad\u29ae\u29af\u29b0\u29b1\u29b2\u29b3\u29b4\u29b5\u29b6\u29b7\u29b8\u29b9\u29ba\u29bb\u29bc\u29bd\u29be\u29bf\u29c0\u29c1\u29c2\u29c3\u29c4\u29c5\u29c6\u29c7\u29c8\u29c9\u29ca\u29cb\u29cc\u29cd\u29ce\u29cf\u29d0\u29d1\u29d2\u29d3\u29d4\u29d5\u29d6\u29d7\u29dc\u29dd\u29de\u29df\u29e0\u29e1\u29e2\u29e3\u29e4\u29e5\u29e6\u29e7\u29e8\u29e9\u29ea\u29eb\u29ec\u29ed\u29ee\u29ef\u29f0\u29f1\u29f2\u29f3\u29f4\u29f5\u29f6\u29f7\u29f8\u29f9\u29fa\u29fb\u29fe\u29ff\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c\u2a1d\u2a1e\u2a1f\u2a20\u2a21\u2a22\u2a23\u2a24\u2a25\u2a26\u2a27\u2a28\u2a29\u2a2a\u2a2b\u2a2c\u2a2d\u2a2e\u2a2f\u2a30\u2a31\u2a32\u2a33\u2a34\u2a35\u2a36\u2a37\u2a38\u2a39\u2a3a\u2a3b\u2a3c\u2a3d\u2a3e\u2a3f\u2a40\u2a41\u2a42\u2a43\u2a44\u2a45\u2a46\u2a47\u2a48\u2a49\u2a4a\u2a4b\u2a4c\u2a4d\u2a4e\u2a4f\u2a50\u2a51\u2a52\u2a53\u2a54\u2a55\u2a56\u2a57\u2a58\u2a59\u2a5a\u2a5b\u2a5c\u2a5d\u2a5e\u2a5f\u2a60\u2a61\u2a62\u2a63\u2a64\u2a65\u2a66\u2a67\u2a68\u2a69\u2a6a\u2a6b\u2a6c\u2a6d\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a77\u2a78\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2abd\u2abe\u2abf\u2ac0\u2ac1\u2ac2\u2ac3\u2ac4\u2ac5\u2ac6\u2ac7\u2ac8\u2ac9\u2aca\u2acb\u2acc\u2acd\u2ace\u2acf\u2ad0\u2ad1\u2ad2\u2ad3\u2ad4\u2ad5\u2ad6\u2ad7\u2ad8\u2ad9\u2ada\u2adb\u2add\u2adc\u2ade\u2adf\u2ae0\u2ae1\u2ae2\u2ae3\u2ae4\u2ae5\u2ae6\u2ae7\u2ae8\u2ae9\u2aea\u2aeb\u2aec\u2aed\u2aee\u2aef\u2af0\u2af1\u2af2\u2af3\u2af4\u2af5\u2af6\u2af7\u2af8\u2af9\u2afa\u2afb\u2afc\u2afd\u2afe\u2aff\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b12\u2b13\u2b14\u2b15\u2b16\u2b17\u2b18\u2b19\u2b1a\u2b1b\u2b1c\u2b1d\u2b1e\u2b1f\u2b20\u2b21\u2b22\u2b23\u2b24\u2b25\u2b26\u2b27\u2b28\u2b29\u2b2a\u2b2b\u2b2c\u2b2d\u2b2e\u2b2f\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\u2b4d\u2b4e\u2b4f\u2b50\u2b51\u2b52\u2b53\u2b54\u2b55\u2b56\u2b57\u2b58\u2b59\u2b5a\u2b5b\u2b5c\u2b5d\u2b5e\u2b5f\u2b60\u2b61\u2b62\u2b63\u2b64\u2b65\u2b66\u2b67\u2b68\u2b69\u2b6a\u2b6b\u2b6c\u2b6d\u2b6e\u2b6f\u2b70\u2b71\u2b72\u2b73\u2b76\u2b77\u2b78\u2b79\u2b7a\u2b7b\u2b7c\u2b7d\u2b7e\u2b7f\u2b80\u2b81\u2b82\u2b83\u2b84\u2b85\u2b86\u2b87\u2b88\u2b89\u2b8a\u2b8b\u2b8c\u2b8d\u2b8e\u2b8f\u2b90\u2b91\u2b92\u2b93\u2b94\u2b95\u2b97\u2b98\u2b99\u2b9a\u2b9b\u2b9c\u2b9d\u2b9e\u2b9f\u2ba0\u2ba1\u2ba2\u2ba3\u2ba4\u2ba5\u2ba6\u2ba7\u2ba8\u2ba9\u2baa\u2bab\u2bac\u2bad\u2bae\u2baf\u2bb0\u2bb1\u2bb2\u2bb3\u2bb4\u2bb5\u2bb6\u2bb7\u2bb8\u2bb9\u2bba\u2bbb\u2bbc\u2bbd\u2bbe\u2bbf\u2bc0\u2bc1\u2bc2\u2bc3\u2bc4\u2bc5\u2bc6\u2bc7\u2bc8\u2bc9\u2bca\u2bcb\u2bcc\u2bcd\u2bce\u2bcf\u2bd0\u2bd1\u2bd2\u2bd3\u2bd4\u2bd5\u2bd6\u2bd7\u2bd8\u2bd9\u2bda\u2bdb\u2bdc\u2bdd\u2bde\u2bdf\u2be0\u2be1\u2be2\u2be3\u2be4\u2be5\u2be6\u2be7\u2be8\u2be9\u2bea\u2beb\u2bec\u2bed\u2bee\u2bef\u2bf0\u2bf1\u2bf2\u2bf3\u2bf4\u2bf5\u2bf6\u2bf7\u2bf8\u2bf9\u2bfa\u2bfb\u2bfc\u2bfd\u2bfe\u2bff\u2ce5\u2ce6\u2ce7\u2ce8\u2ce9\u2cea\u2800\u2801\u2802\u2803\u2804\u2805\u2806\u2807\u2808\u2809\u280a\u280b\u280c\u280d\u280e\u280f\u2810\u2811\u2812\u2813\u2814\u2815\u2816\u2817\u2818\u2819\u281a\u281b\u281c\u281d\u281e\u281f\u2820\u2821\u2822\u2823\u2824\u2825\u2826\u2827\u2828\u2829\u282a\u282b\u282c\u282d\u282e\u282f\u2830\u2831\u2832\u2833\u2834\u2835\u2836\u2837\u2838\u2839\u283a\u283b\u283c\u283d\u283e\u283f\u2840\u2841\u2842\u2843\u2844\u2845\u2846\u2847\u2848\u2849\u284a\u284b\u284c\u284d\u284e\u284f\u2850\u2851\u2852\u2853\u2854\u2855\u2856\u2857\u2858\u2859\u285a\u285b\u285c\u285d\u285e\u285f\u2860\u2861\u2862\u2863\u2864\u2865\u2866\u2867\u2868\u2869\u286a\u286b\u286c\u286d\u286e\u286f\u2870\u2871\u2872\u2873\u2874\u2875\u2876\u2877\u2878\u2879\u287a\u287b\u287c\u287d\u287e\u287f\u2880\u2881\u2882\u2883\u2884\u2885\u2886\u2887\u2888\u2889\u288a\u288b\u288c\u288d\u288e\u288f\u2890\u2891\u2892\u2893\u2894\u2895\u2896\u2897\u2898\u2899\u289a\u289b\u289c\u289d\u289e\u289f\u28a0\u28a1\u28a2\u28a3\u28a4\u28a5\u28a6\u28a7\u28a8\u28a9\u28aa\u28ab\u28ac\u28ad\u28ae\u28af\u28b0\u28b1\u28b2\u28b3\u28b4\u28b5\u28b6\u28b7\u28b8\u28b9\u28ba\u28bb\u28bc\u28bd\u28be\u28bf\u28c0\u28c1\u28c2\u28c3\u28c4\u28c5\u28c6\u28c7\u28c8\u28c9\u28ca\u28cb\u28cc\u28cd\u28ce\u28cf\u28d0\u28d1\u28d2\u28d3\u28d4\u28d5\u28d6\u28d7\u28d8\u28d9\u28da\u28db\u28dc\u28dd\u28de\u28df\u28e0\u28e1\u28e2\u28e3\u28e4\u28e5\u28e6\u28e7\u28e8\u28e9\u28ea\u28eb\u28ec\u28ed\u28ee\u28ef\u28f0\u28f1\u28f2\u28f3\u28f4\u28f5\u28f6\u28f7\u28f8\u28f9\u28fa\u28fb\u28fc\u28fd\u28fe\u28ff\u268a\u268b\u268c\u268d\u268e\u268f\u2630\u2631\u2632\u2633\u2634\u2635\u2636\u2637\u4dc0\u4dc1\u4dc2\u4dc3\u4dc4\u4dc5\u4dc6\u4dc7\u4dc8\u4dc9\u4dca\u4dcb\u4dcc\u4dcd\u4dce\u4dcf\u4dd0\u4dd1\u4dd2\u4dd3\u4dd4\u4dd5\u4dd6\u4dd7\u4dd8\u4dd9\u4dda\u4ddb\u4ddc\u4ddd\u4dde\u4ddf\u4de0\u4de1\u4de2\u4de3\u4de4\u4de5\u4de6\u4de7\u4de8\u4de9\u4dea\u4deb\u4dec\u4ded\u4dee\u4def\u4df0\u4df1\u4df2\u4df3\u4df4\u4df5\u4df6\u4df7\u4df8\u4df9\u4dfa\u4dfb\u4dfc\u4dfd\u4dfe\u4dff\ua490\ua491\ua492\ua493\ua494\ua495\ua496\ua497\ua498\ua499\ua49a\ua49b\ua49c\ua49d\ua49e\ua49f\ua4a0\ua4a1\ua4a2\ua4a3\ua4a4\ua4a5\ua4a6\ua4a7\ua4a8\ua4a9\ua4aa\ua4ab\ua4ac\ua4ad\ua4ae\ua4af\ua4b0\ua4b1\ua4b2\ua4b3\ua4b4\ua4b5\ua4b6\ua4b7\ua4b8\ua4b9\ua4ba\ua4bb\ua4bc\ua4bd\ua4be\ua4bf\ua4c0\ua4c1\ua4c2\ua4c3\ua4c4\ua4c5\ua4c6\u266d\u266e\u266f\u2ff0\u2ff1\u2ff2\u2ff3\u2ff4\u2ff5\u2ff6\u2ff7\u2ff8\u2ff9\u2ffa\u2ffb\u31c0\u31c1\u31c2\u31c3\u31c4\u31c5\u31c6\u31c7\u31c8\u31c9\u31ca\u31cb\u31cc\u31cd\u31ce\u31cf\u31d0\u31d1\u31d2\u31d3\u31d4\u31d5\u31d6\u31d7\u31d8\u31d9\u31da\u31db\u31dc\u31dd\u31de\u31df\u31e0\u31e1\u31e2\u31e3\u3004\u3012\u3036\u3013\u3020\u3037\u303e\u303f\u3190\u3191\u327f\ufffc\u09f4\u09f5\u09f6\u09f7\u09f8\u09f9\u0b72\u0b73\u0b74\u0b75\u0b76\u0b77\ua830\ua831\ua832\ua833\ua834\ua835\u0bf0\u0bf1\u0bf2\u0d58\u0d59\u0d5a\u0d5b\u0d5c\u0d5d\u0d5e\u0d70\u0d71\u0d72\u0d73\u0d74\u0d75\u0d76\u0d77\u0d78\u1372\u1373\u1374\u1375\u1376\u1377\u1378\u1379\u137a\u137b\u137c\u2180\u2181\u2182\u2186\u2187\u2188\u2cfd\u02d0\u02d1\u0971\u0e46\u0ec6\u17d7\u1aa7\ua9cf\ua9e6\uaa70\uaadd\uaaf3\uaaf4\u3005\u303b\u3031\u3032\u3033\u3034\u3035\u309d\u309e\u30fc\uff70\u30fd\u30fe\u00a4\u00a2\uffe0\$\uff04\ufe69\u00a3\uffe1\u00a5\uffe5\u058f\u060b\u07fe\u07ff\u09f2\u09f3\u09fb\u0af1\ua838\u0bf9\u0e3f\u17db\u20a0\u20a1\u20a2\u20a3\u20a4\u20a5\u20a6\u20a7\u20a9\uffe6\u20aa\u20ab\u20ac\u20ad\u20ae\u20af\u20b0\u20b1\u20b2\u20b3\u20b4\u20b5\u20b6\u20b7\u20b8\u20b9\u20ba\u20bb\u20bc\u20bd\u20be\u20bf\u0030\u0660\u06f0\u07c0\u0966\u09e6\u0a66\u0ae6\u0b66\u0be6\u0c66\u0c78\u0ce6\u0d66\u0de6\u0e50\u0ed0\u0f20\u1040\u1090\u17e0\u17f0\u1810\u1946\u19d0\u1a80\u1a90\u1b50\u1bb0\u1c40\u1c50\u3007\ua620\ua8d0\ua900\ua9d0\ua9f0\uaa50\uabf0\uff10\u0f33\u24ea\u24ff\u2070\u2080\u2189\u3358\u0031\u0661\u06f1\u07c1\u0967\u09e7\u0a67\u0ae7\u0b67\u0be7\u0c67\u0c79\u0c7c\u0ce7\u0d67\u0de7\u0e51\u0ed1\u0f21\u1041\u1091\u1369\u17e1\u17f1\u1811\u1947\u19d1\u19da\u1a81\u1a91\u1b51\u1bb1\u1c41\u1c51\u3021\ua621\ua8d1\ua901\ua9d1\ua9f1\uaa51\uabf1\uff11\u0f2a\u2460\u24f5\u2776\u2780\u278a\u00b9\u2081\u2488\u215f\u2152\u00bd\u2153\u00bc\u2155\u2159\u2150\u215b\u2151\u2469\u24fe\u277f\u2789\u2793\u3248\u2491\u33e9\u32c9\u3362\u246a\u24eb\u2492\u33ea\u32ca\u3363\u246b\u24ec\u2493\u33eb\u32cb\u3364\u246c\u24ed\u2494\u33ec\u3365\u246d\u24ee\u2495\u33ed\u3366\u246e\u24ef\u2496\u33ee\u3367\u246f\u24f0\u2497\u33ef\u3368\u2470\u24f1\u2498\u33f0\u3369\u2471\u24f2\u2499\u33f1\u336a\u2472\u24f3\u249a\u33f2\u336b\u33e0\u32c0\u3359\u0032\u0662\u06f2\u07c2\u0968\u09e8\u0a68\u0ae8\u0b68\u0be8\u0c68\u0c7a\u0c7d\u0ce8\u0d68\u0de8\u0e52\u0ed2\u0f22\u1042\u1092\u136a\u17e2\u17f2\u1812\u1948\u19d2\u1a82\u1a92\u1b52\u1bb2\u1c42\u1c52\u3022\ua622\ua8d2\ua902\ua9d2\ua9f2\uaa52\uabf2\uff12\u0f2b\u2461\u24f6\u2777\u2781\u278b\u00b2\u2082\u2489\u2154\u2156\u2473\u24f4\u3249\u249b\u33f3\u336c\u3251\u33f4\u336d\u3252\u33f5\u336e\u3253\u33f6\u336f\u3254\u33f7\u3370\u3255\u33f8\u3256\u33f9\u3257\u33fa\u3258\u33fb\u3259\u33fc\u33e1\u32c1\u335a\u0033\u0663\u06f3\u07c3\u0969\u09e9\u0a69\u0ae9\u0b69\u0be9\u0c69\u0c7b\u0c7e\u0ce9\u0d69\u0de9\u0e53\u0ed3\u0f23\u1043\u1093\u136b\u17e3\u17f3\u1813\u1949\u19d3\u1a83\u1a93\u1b53\u1bb3\u1c43\u1c53\u3023\ua623\ua8d3\ua903\ua9d3\ua9f3\uaa53\uabf3\uff13\u0f2c\u2462\u24f7\u2778\u2782\u278c\u00b3\u2083\u248a\u00be\u2157\u215c\u324a\u325a\u33fd\u325b\u33fe\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u33e2\u32c2\u335b\u0034\u0664\u06f4\u07c4\u096a\u09ea\u0a6a\u0aea\u0b6a\u0bea\u0c6a\u0cea\u0d6a\u0dea\u0e54\u0ed4\u0f24\u1044\u1094\u136c\u17e4\u17f4\u1814\u194a\u19d4\u1a84\u1a94\u1b54\u1bb4\u1c44\u1c54\u3024\ua624\ua8d4\ua904\ua9d4\ua9f4\uaa54\uabf4\uff14\u0f2d\u2463\u24f8\u2779\u2783\u278d\u2074\u2084\u248b\u2158\u324b\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u33e3\u32c3\u335c\u0035\u0665\u06f5\u07c5\u096b\u09eb\u0a6b\u0aeb\u0b6b\u0beb\u0c6b\u0ceb\u0d6b\u0deb\u0e55\u0ed5\u0f25\u1045\u1095\u136d\u17e5\u17f5\u1815\u194b\u19d5\u1a85\u1a95\u1b55\u1bb5\u1c45\u1c55\u3025\ua625\ua8d5\ua905\ua9d5\ua9f5\uaa55\uabf5\uff15\u0f2e\u2464\u24f9\u277a\u2784\u278e\u2075\u2085\u248c\u215a\u215d\u324c\u32bf\u33e4\u32c4\u335d\u0036\u0666\u06f6\u07c6\u096c\u09ec\u0a6c\u0aec\u0b6c\u0bec\u0c6c\u0cec\u0d6c\u0dec\u0e56\u0ed6\u0f26\u1046\u1096\u136e\u17e6\u17f6\u1816\u194c\u19d6\u1a86\u1a96\u1b56\u1bb6\u1c46\u1c56\u2185\u3026\ua626\ua8d6\ua906\ua9d6\ua9f6\uaa56\uabf6\uff16\u0f2f\u2465\u24fa\u277b\u2785\u278f\u2076\u2086\u248d\u324d\u33e5\u32c5\u335e\u0037\u0667\u06f7\u07c7\u096d\u09ed\u0a6d\u0aed\u0b6d\u0bed\u0c6d\u0ced\u0d6d\u0ded\u0e57\u0ed7\u0f27\u1047\u1097\u136f\u17e7\u17f7\u1817\u194d\u19d7\u1a87\u1a97\u1b57\u1bb7\u1c47\u1c57\u3027\ua627\ua8d7\ua907\ua9d7\ua9f7\uaa57\uabf7\uff17\u0f30\u2466\u24fb\u277c\u2786\u2790\u2077\u2087\u248e\u215e\u324e\u33e6\u32c6\u335f\u0038\u0668\u06f8\u07c8\u096e\u09ee\u0a6e\u0aee\u0b6e\u0bee\u0c6e\u0cee\u0d6e\u0dee\u0e58\u0ed8\u0f28\u1048\u1098\u1370\u17e8\u17f8\u1818\u194e\u19d8\u1a88\u1a98\u1b58\u1bb8\u1c48\u1c58\u3028\ua628\ua8d8\ua908\ua9d8\ua9f8\uaa58\uabf8\uff18\u0f31\u2467\u24fc\u277d\u2787\u2791\u2078\u2088\u248f\u324f\u33e7\u32c7\u3360\u0039\u0669\u06f9\u07c9\u096f\u09ef\u0a6f\u0aef\u0b6f\u0bef\u0c6f\u0cef\u0d6f\u0def\u0e59\u0ed9\u0f29\u1049\u1099\u1371\u17e9\u17f9\u1819\u194f\u19d9\u1a89\u1a99\u1b59\u1bb9\u1c49\u1c59\u3029\ua629\ua8d9\ua909\ua9d9\ua9f9\uaa59\uabf9\uff19\u0f32\u2468\u24fd\u277e\u2788\u2792\u2079\u2089\u2490\u33e8\u32c8\u3361\u0061\uff41\u0363\u24d0\u0041\uff21\u24b6\u00aa\u1d43\u2090\u1d2c\u00e1\u00c1\u00e0\u00c0\u0103\u0102\u00e2\u00c2\u01ce\u01cd\u00e5\u00c5\u212b\u00e4\u1df2\ua79b\u00c4\ua79a\u00e3\u00c3\u0227\u0226\u0105\u0104\u0101\u0100\u1ea3\u1ea2\u0201\u0200\u0203\u0202\u1ea1\u1ea0\u1e01\u1e00\u1dd3\u1eaf\u1eae\u1eb1\u1eb0\u1eb5\u1eb4\u1eb3\u1eb2\u1ea5\u1ea4\u1ea7\u1ea6\u1eab\u1eaa\u1ea9\u1ea8\u01fb\u01fa\u01df\u01de\u01e1\u01e0\u1eb7\u1eb6\u1ead\u1eac\u00e6\u1dd4\u00c6\u1d2d\u01fd\u01fc\u01e3\u01e2\ua73b\ua73a\u33c2\u2100\u2101\u214d\u33df\ua733\ua732\u1dd5\ua735\ua734\ua737\ua736\u3373\u1dd6\ua739\ua738\ua73d\ua73c\u1e9a\u1d00\u2c65\u023a\u1d8f\ua7bb\ua7ba\u1d01\u1d02\u1d46\uab31\u0250\u2c6f\u1d44\u0251\u1de7\u2c6d\u1d45\uab30\u1d90\u0252\u2c70\u1d9b\uab64\u0062\uff42\u1de8\u24d1\u0042\uff22\u212c\u24b7\u1d47\u1d2e\u1e03\u1e02\u1e05\u1e04\u1e07\u1e06\u3374\u33c3\u0299\u0180\u0243\u1d2f\u1d03\u1d6c\ua797\ua796\u1d80\u0253\u0181\u0183\u0182\ua7b5\u1de9\ua7b4\u0063\uff43\u0368\u217d\u24d2\u0043\uff23\u216d\u2102\u212d\u24b8\u1d9c\u0107\u0106\u0109\u0108\u010d\u010c\u010b\u010a\u00e7\u1dd7\u00c7\u1e09\u1e08\u2105\u2106\u33c6\u3388\u33c4\u33c5\u339d\u33a0\u33a4\u33c7\u1d04\u023c\u023b\ua793\ua792\ua794\ua7c4\u0188\u0187\u0255\u1d9d\u2184\u2183\ua73f\ua73e\u0064\uff44\u0369\u217e\u2146\u24d3\u0044\uff24\u216e\u2145\u24b9\u1d48\u1d30\u010f\u010e\u1e0b\u1e0a\u1e11\u1e10\u0111\u0110\u1e0d\u1e0c\u1e13\u1e12\u1e0f\u1e0e\u00f0\u1dd9\u00d0\u1d9e\u1dd8\ua77a\ua779\u3372\u0238\u33c8\u3397\u3377\u3378\u3379\u01f3\u02a3\u01f2\u01f1\u01c6\u01c5\u01c4\uab66\u02a5\u02a4\u1d05\u1d06\ua7c8\ua7c7\u1d6d\u1d81\u0256\u0189\u0257\u018a\u1d91\u018c\u018b\u0221\ua771\u1e9f\u0065\uff45\u0364\u212f\u2147\u24d4\u0045\uff25\u2130\u24ba\u1d49\u2091\u1d31\u00e9\u00c9\u00e8\u00c8\u0115\u0114\u00ea\u00ca\u011b\u011a\u00eb\u00cb\u1ebd\u1ebc\u0117\u0116\u0229\u0228\u0119\u0118\u0113\u0112\u1ebb\u1eba\u0205\u0204\u0207\u0206\u1eb9\u1eb8\u1e19\u1e18\u1e1b\u1e1a\u1ebf\u1ebe\u1ec1\u1ec0\u1ec5\u1ec4\u1ec3\u1ec2\u1e1d\u1e1c\u1e17\u1e16\u1e15\u1e14\u1ec7\u1ec6\u32cd\u32ce\u1d07\uab32\uab33\u0247\u0246\u1d92\uab34\u2c78\u01dd\u018e\u1d32\u2c7b\u0259\u1dea\u018f\u1d4a\u2094\u1d95\u025b\u0190\u2107\u1d4b\u1d93\u0258\u025a\u025c\ua7ab\u1d9f\u1d94\u1d08\u1d4c\u025d\u025e\u029a\u0264\u0066\uff46\u1deb\u24d5\u0046\uff26\u2131\u24bb\u1da0\u1e1f\u1e1e\ua77c\ua77b\u213b\ufb00\ufb03\ufb04\ufb01\ufb02\u3399\u02a9\ua730\uab35\ua799\ua798\u1d6e\u1d82\u0192\u0191\u214e\u2132\ua7fb\u0067\uff47\u1dda\u210a\u24d6\u0047\uff27\u24bc\u1d4d\u1d33\u01f5\u01f4\u011f\u011e\u011d\u011c\u01e7\u01e6\u0121\u0120\u0123\u0122\u1e21\u1e20\ua7a1\ua7a0\u1d79\ua77d\u33ff\u3387\u3393\u33ac\u33c9\u0261\ua7ac\u1da2\uab36\u0262\u1ddb\u01e5\u01e4\u1d83\u0260\u0193\u029b\u1d77\ua77f\ua77e\u0263\u0194\u02e0\u01a3\u01a2\u0068\uff48\u036a\u210e\u24d7\u0048\uff28\u210b\u210c\u210d\u24bd\u02b0\u2095\u1d34\u0125\u0124\u021f\u021e\u1e27\u1e26\u1e23\u1e22\u1e29\u1e28\u0127\u210f\u0126\ua7f8\u1e25\u1e24\u1e2b\u1e2a\u1e96\u33ca\u32cc\u33cb\u3371\u3390\u029c\u0195\u01f6\ua795\u0266\ua7aa\u02b1\u2c68\u2c67\u2c76\u2c75\ua7f6\ua7f5\ua727\ua726\uab5c\u0267\u02bb\u02bd\u0069\uff49\u0365\u2170\u2139\u2148\u24d8\u0049\uff29\u2160\u2110\u2111\u24be\u2071\u1d62\u1d35\u00ed\u00cd\u00ec\u00cc\u012d\u012c\u00ee\u00ce\u01d0\u01cf\u00ef\u00cf\u0129\u0128\u0130\u012f\u012e\u012b\u012a\u1ec9\u1ec8\u0209\u0208\u020b\u020a\u1ecb\u1eca\u1e2d\u1e2c\u1e2f\u1e2e\u2171\u2161\u2172\u2162\u0133\u0132\u33cc\u337a\u2173\u2163\u2178\u2168\u0131\u026a\ua7ae\u1da6\ua7fe\ua7f7\u1d09\u1d4e\u0268\u0197\u1da4\u1d7b\u1da7\u1d96\ua7bd\ua7bc\u0269\u0196\u1da5\u1d7c\u006a\uff4a\u2149\u24d9\u004a\uff2a\u24bf\u02b2\u2c7c\u1d36\u0135\u0134\u01f0\u0237\u1d0a\u0249\u0248\u029d\ua7b2\u1da8\u025f\u1da1\u0284\u006b\uff4b\u1ddc\u24da\u004b\u212a\uff2b\u24c0\u1d4f\u2096\u1d37\u1e31\u1e30\u01e9\u01e8\u0137\u0136\ua7a3\ua7a2\u1e33\u1e32\u1e35\u1e34\u3384\u3385\u3389\u338f\u3391\u33cd\u3398\u339e\u33ce\u33a2\u33a6\u33aa\u33cf\u33b8\u33be\u33c0\u1d0b\u1d84\u0199\u0198\u2c6a\u2c69\ua741\ua740\ua743\ua742\ua745\ua744\u029e\ua7b0\u006c\uff4c\u1ddd\u217c\u2113\u24db\u004c\uff2c\u216c\u2112\u24c1\u02e1\u2097\u1d38\u013a\u0139\u013e\u013d\u013c\u013b\u0142\u0141\u1e37\u1e36\u1e3d\u1e3c\u1e3b\u1e3a\u0140\u013f\u1e39\u1e38\u01c9\u01c8\u01c7\u1efb\u1efa\u33d0\u33d1\u33d2\u02aa\u32cf\u33d3\u02ab\u029f\u1dde\u1dab\ua747\ua746\u1d0c\ua749\ua748\u019a\u023d\u2c61\u2c60\u026b\u2c62\uab5e\uab38\u1dec\uab39\u026c\ua7ad\uab37\uab5d\u1d85\u1daa\u026d\u1da9\ua78e\u0234\ua772\u026e\ua781\ua780\u019b\u028e\u006d\uff4d\u036b\u217f\u24dc\u004d\uff2d\u216f\u2133\u24c2\u1d50\u2098\u1d39\u1e3f\u1e3e\u1e41\u1e40\u1e43\u1e42\u33a7\u33a8\u33a1\u33a5\u3383\u33d4\u3386\u338e\u3392\u33d5\u3396\u339c\u339f\u33a3\u33d6\u33ab\u33b3\u33b7\u33b9\u33bd\u33bf\u33c1\u1d0d\u1ddf\u1d6f\u1d86\u0271\u2c6e\u1dac\uab3a\ua7fd\ua7ff\ua773\u006e\uff4e\u1de0\u24dd\u004e\uff2e\u2115\u24c3\u207f\u2099\u1d3a\u0144\u0143\u01f9\u01f8\u0148\u0147\u00f1\u00d1\u1e45\u1e44\u0146\u0145\ua7a5\ua7a4\u1e47\u1e46\u1e4b\u1e4a\u1e49\u1e48\u3381\u338b\u01cc\u01cb\u01ca\u339a\u2116\u33b1\u33b5\u33bb\u0274\u1de1\u1db0\u1d3b\u1d0e\u1d70\u0272\u019d\u1dae\u019e\u0220\ua791\ua790\u1d87\u0273\u1daf\u0235\uab3b\ua774\u014b\u014a\u1d51\uab3c\u006f\uff4f\u0366\u2134\u24de\u004f\uff2f\u24c4\u00ba\u1d52\u2092\u1d3c\u00f3\u00d3\u00f2\u00d2\u014f\u014e\u00f4\u00d4\u01d2\u01d1\u00f6\u1df3\ua79d\u00d6\ua79c\u0151\u0150\u00f5\u00d5\u022f\u022e\u00f8\u00d8\u01eb\u01ea\u014d\u014c\u1ded\u1ecf\u1ece\u020d\u020c\u020f\u020e\u01a1\u01a0\u1ecd\u1ecc\u1ed1\u1ed0\u1ed3\u1ed2\u1ed7\u1ed6\u1ed5\u1ed4\u022b\u022a\u1e4d\u1e4c\u1e4f\u1e4e\u022d\u022c\u0231\u0230\u01ff\u01fe\u01ed\u01ec\u1e53\u1e52\u1e51\u1e50\u1edb\u1eda\u1edd\u1edc\u1ee1\u1ee0\u1edf\u1ede\u1ee3\u1ee2\u1ed9\u1ed8\u0153\u0152\ua7f9\ua74f\ua74e\u3375\u1d0f\u1d11\uab3d\u0276\u1d14\uab41\uab42\uab40\uab43\uab44\u1d13\uab3e\u0254\u0186\u1d53\u1d10\u1d12\uab3f\u1d97\uab62\ua74d\ua74c\u1d16\u1d54\u1d17\u1d55\u2c7a\u0275\u019f\u1db1\ua74b\ua74a\u0277\ua7b7\ua7b6\u0223\u0222\u1d3d\u1d15\u0070\uff50\u1dee\u24df\u0050\uff30\u2119\u24c5\u1d56\u209a\u1d3e\u1e55\u1e54\u1e57\u1e56\u33d8\u3380\u33a9\u3376\u338a\u33d7\u33d9\u33da\u33b0\u3250\u33b4\u33ba\u1d18\u1d7d\u2c63\ua751\ua750\u1d71\u1d88\u01a5\u01a4\ua753\ua752\ua755\ua754\ua7fc\u0278\u1db2\u2c77\u0071\uff51\u24e0\u0051\uff31\u211a\u24c6\u0239\ua7af\ua757\ua756\ua759\ua758\u02a0\u024b\u024a\u0138\u0072\uff52\u036c\u1dca\u24e1\u0052\uff32\u211b\u211c\u211d\u24c7\u02b3\u1d63\u1d3f\u0155\u0154\u0159\u0158\u1e59\u1e58\u0157\u0156\ua7a7\ua7a6\u0211\u0210\u0213\u0212\u1e5b\u1e5a\u1e5f\u1e5e\ua783\ua782\u1e5d\u1e5c\u33ad\u33ae\u33af\u20a8\uab45\u0280\u1de2\u01a6\uab46\ua75b\u1de3\ua75a\u1d19\u024d\u024c\u1d72\u0279\u02b4\u1d1a\u027a\u1d89\u027b\u02b5\u2c79\u027c\u027d\u2c64\uab49\u027e\u1d73\u027f\uab47\uab48\uab4a\uab4b\uab4c\u0281\u02b6\uab68\ua775\ua776\ua75d\ua75c\u0073\uff53\u1de4\u24e2\u0053\uff33\u24c8\u02e2\u209b\u015b\u015a\u015d\u015c\u0161\u0160\u1e61\u1e60\u015f\u015e\ua7a9\ua7a8\u1e63\u1e62\u0219\u0218\u017f\u1de5\ua785\ua784\u1e65\u1e64\u1e67\u1e66\u1e69\u1e68\u1e9b\u00df\u1e9e\ufb05\u2120\u33db\ufb06\u33dc\ua731\ua7ca\ua7c9\u1d74\u1d8a\u0282\ua7c5\u1db3\u023f\u2c7e\u1e9c\u1e9d\u0283\u1def\u01a9\u1db4\uab4d\u1d8b\u01aa\u0285\u1d98\u0286\u0074\uff54\u036d\u24e3\u0054\uff34\u24c9\u1d57\u209c\u1d40\u0165\u0164\u1e97\u1e6b\u1e6a\u0163\u0162\u1e6d\u1e6c\u021b\u021a\u1e71\u1e70\u1e6f\u1e6e\ua787\ua786\u1d7a\u02a8\u2121\u3394\u2122\u01be\u02a6\uab67\u02a7\ua729\ua728\u1d1b\u0167\u0166\u2c66\u023e\u1d75\u01ab\u1db5\u01ad\u01ac\u0288\u01ae\u0236\ua777\u0287\ua7b1\u0075\uff55\u0367\u24e4\u0055\uff35\u24ca\u1d58\u1d64\u1d41\u00fa\u00da\u00f9\u00d9\u016d\u016c\u00fb\u00db\u01d4\u01d3\u016f\u016e\u00fc\u1df4\ua79f\u00dc\ua79e\u0171\u0170\u0169\u0168\u0173\u0172\u016b\u016a\u1df0\u1ee7\u1ee6\u0215\u0214\u0217\u0216\u01b0\u01af\u1ee5\u1ee4\u1e73\u1e72\u1e77\u1e76\u1e75\u1e74\u01d8\u01d7\u01dc\u01db\u01da\u01d9\u01d6\u01d5\u1e79\u1e78\u1e7b\u1e7a\u1ee9\u1ee8\u1eeb\u1eea\u1eef\u1eee\u1eed\u1eec\u1ef1\u1ef0\u1d1c\u1db8\uab4e\u1d1d\u1d59\u1d1e\u1d6b\uab50\uab51\u0289\u0244\u1db6\uab4f\ua7b9\ua7b8\u1d7e\u1d99\uab52\uab5f\ua7bf\ua7be\u0265\ua78d\u1da3\u02ae\u02af\u026f\u019c\u1d5a\ua7fa\u1d1f\u0270\u1dad\u028a\u01b1\u1db7\u1d7f\u0076\uff56\u036e\u2174\u24e5\u0056\uff36\u2164\u24cb\u1d5b\u1d65\u2c7d\u1e7d\u1e7c\u1e7f\u1e7e\u33de\u2175\u2165\u2176\u2166\u2177\u2167\ua761\ua760\u1d20\ua75f\ua75e\u1d8c\u028b\u01b2\u1db9\u2c71\u2c74\u1efd\u1efc\u028c\u0245\u1dba\u0077\uff57\u1abf\u1df1\u24e6\u0057\uff37\u24cc\u02b7\u1d42\u1e83\u1e82\u1e81\u1e80\u0175\u0174\u1e98\u1e85\u1e84\u1e87\u1e86\u1e89\u1e88\u33dd\u1d21\ua7c3\ua7c2\u2c73\u2c72\u028d\u1ac0\uab69\u0078\uff58\u036f\u2179\u24e7\u0058\uff38\u2169\u24cd\u02e3\u2093\u1e8d\u1e8c\u1e8b\u1e8a\u217a\u216a\u217b\u216b\u1d8d\uab56\uab57\uab58\uab59\uab53\ua7b3\uab54\uab55\u0079\uff59\u24e8\u0059\uff39\u24ce\u02b8\u00fd\u00dd\u1ef3\u1ef2\u0177\u0176\u1e99\u00ff\u0178\u1ef9\u1ef8\u1e8f\u1e8e\u0233\u0232\u1ef7\u1ef6\u1ef5\u1ef4\u028f\u024f\u024e\u01b4\u01b3\u1eff\u1efe\uab5a\u021d\u021c\u007a\uff5a\u1de6\u24e9\u005a\uff3a\u2124\u2128\u24cf\u1dbb\u017a\u0179\u1e91\u1e90\u017e\u017d\u017c\u017b\u1e93\u1e92\u1e95\u1e94\u018d\u1d22\u01b6\u01b5\u1d76\u1d8e\ua7c6\u0225\u0224\u0290\u1dbc\u0291\u1dbd\u0240\u2c7f\u2c6c\u2c6b\ua763\ua762\u0292\u01b7\u1dbe\u01ef\u01ee\u1d23\u01b9\u01b8\u1d9a\u01ba\u0293\u00fe\u00de\ua765\ua764\ua767\ua766\u01bf\u01f7\ua769\ua768\uab60\uab61\uab63\ua76b\ua76a\ua76d\ua76c\ua76f\u1dd2\ua76e\ua770\ua778\u01bb\ua72b\ua72a\ua72d\ua72c\ua72f\ua72e\u01a8\u01a7\u01bd\u01bc\u0185\u0184\u0294\u0242\u0241\u02c0\u02bc\u0149\u02ee\u02be\ua723\ua722\ua78c\ua78b\ua78f\u0295\u02e4\u02bf\u02c1\u1d24\u1d25\u1d5c\ua725\ua724\u02a1\u02a2\u0296\u01c0\u01c1\u01c2\u01c3\u0297\u0298\u02ac\u02ad\u03b1\u0391\u1f00\u1f08\u1f01\u1f09\u03ac\u1f71\u0386\u1fbb\u1f70\u1fba\u1fb0\u1fb8\u1fb6\u1fb1\u1fb9\u1fb3\u1fbc\u1f04\u1f0c\u1f02\u1f0a\u1f06\u1f0e\u1f80\u1f88\u1f05\u1f0d\u1f03\u1f0b\u1f07\u1f0f\u1f81\u1f89\u1fb4\u1fb2\u1fb7\u1f84\u1f8c\u1f82\u1f8a\u1f86\u1f8e\u1f85\u1f8d\u1f83\u1f8b\u1f87\u1f8f\u03b2\u03d0\u0392\u1d5d\u1d66\u03b3\u213d\u0393\u213e\u1d5e\u1d67\u1d26\u03b4\u0394\u1d5f\u03b5\u03f5\u0395\u1f10\u1f18\u1f11\u1f19\u03ad\u1f73\u0388\u1fc9\u1f72\u1fc8\u1f14\u1f1c\u1f12\u1f1a\u1f15\u1f1d\u1f13\u1f1b\u03dd\u03dc\u0377\u0376\u03db\u03da\u03b6\u0396\u0371\u0370\u03b7\u0397\u1f20\u1f28\u1f21\u1f29\u03ae\u1f75\u0389\u1fcb\u1f74\u1fca\u1fc6\u1fc3\u1fcc\u1f24\u1f2c\u1f22\u1f2a\u1f26\u1f2e\u1f90\u1f98\u1f25\u1f2d\u1f23\u1f2b\u1f27\u1f2f\u1f91\u1f99\u1fc4\u1fc2\u1fc7\u1f94\u1f9c\u1f92\u1f9a\u1f96\u1f9e\u1f95\u1f9d\u1f93\u1f9b\u1f97\u1f9f\u03b8\u03d1\u0398\u03f4\u1dbf\u03b9\u1fbe\u037a\u0399\u1f30\u1f38\u1f31\u1f39\u03af\u1f77\u038a\u1fdb\u1f76\u1fda\u1fd0\u1fd8\u1fd6\u03ca\u03aa\u1fd1\u1fd9\u1f34\u1f3c\u1f32\u1f3a\u1f36\u1f3e\u1f35\u1f3d\u1f33\u1f3b\u1f37\u1f3f\u0390\u1fd3\u1fd2\u1fd7\u03f3\u037f\u03ba\u03f0\u039a\u03d7\u03cf\u03bb\u039b\u1d27\u03bc\u00b5\u039c\u3382\u338c\u338d\u3395\u339b\u33b2\u33b6\u33bc\u03bd\u039d\u03be\u039e\u03bf\u039f\u1f40\u1f48\u1f41\u1f49\u03cc\u1f79\u038c\u1ff9\u1f78\u1ff8\u1f44\u1f4c\u1f42\u1f4a\u1f45\u1f4d\u1f43\u1f4b\u03c0\u03d6\u213c\u03a0\u213f\u1d28\u03fb\u03fa\u03df\u03de\u03d9\u03d8\u03c1\u03f1\u03a1\u1d68\u1fe4\u1fe5\u1fec\u1d29\u03fc\u03c3\u03f2\u03a3\u03f9\u03c2\u037c\u03fe\u037b\u03fd\u037d\u03ff\u03c4\u03a4\u03c5\u03a5\u03d2\u1f50\u1f51\u1f59\u03cd\u1f7b\u038e\u1feb\u03d3\u1f7a\u1fea\u1fe0\u1fe8\u1fe6\u03cb\u03ab\u03d4\u1fe1\u1fe9\u1f54\u1f52\u1f56\u1f55\u1f5d\u1f53\u1f5b\u1f57\u1f5f\u03b0\u1fe3\u1fe2\u1fe7\u03c6\u03d5\u03a6\u1d60\u1d69\u03c7\u03a7\u1d61\u1d6a\u03c8\u03a8\u1d2a\u03c9\u03a9\u2126\u1f60\u1f68\u1f61\u1f69\u03ce\u1f7d\u038f\u1ffb\u1f7c\u1ffa\u1ff6\u1ff3\u1ffc\u1f64\u1f6c\u1f62\u1f6a\u1f66\u1f6e\u1fa0\u1fa8\u1f65\u1f6d\u1f63\u1f6b\u1f67\u1f6f\u1fa1\u1fa9\u1ff4\u1ff2\u1ff7\u1fa4\u1fac\u1fa2\u1faa\u1fa6\u1fae\u1fa5\u1fad\u1fa3\u1fab\u1fa7\u1faf\uab65\u03e1\u03e0\u0373\u0372\u03f8\u03f7\u2c81\u2c80\u2c83\u2c82\u2c85\u2c84\u2c87\u2c86\u2c89\u2c88\u2cb7\u2cb6\u2c8b\u2c8a\u2c8d\u2c8c\u2c8f\u2c8e\u2c91\u2c90\u2c93\u2c92\u2c95\u2c94\u2ce4\u2cb9\u2cb8\u2c97\u2c96\u2c99\u2c98\u2c9b\u2c9a\u2cbb\u2cba\u2cbd\u2cbc\u2c9d\u2c9c\u2c9f\u2c9e\u2ca1\u2ca0\u2ca3\u2ca2\u2ca5\u2ca4\u2ca7\u2ca6\u2ca9\u2ca8\u2cab\u2caa\u2cad\u2cac\u2caf\u2cae\u2cb1\u2cb0\u2cbf\u2cbe\u2cc1\u2cc0\u03e3\u03e2\u2cec\u2ceb\u2cc3\u2cc2\u2cc5\u2cc4\u2cc7\u2cc6\u03e5\u03e4\u03e7\u03e6\u2cf3\u2cf2\u2cc9\u2cc8\u03e9\u03e8\u2ccb\u2cca\u2ccd\u2ccc\u2ccf\u2cce\u2cd1\u2cd0\u2cd3\u2cd2\u2cd5\u2cd4\u03eb\u03ea\u2cee\u2ced\u2cd7\u2cd6\u03ed\u03ec\u2cd9\u2cd8\u2cdb\u2cda\u2cdd\u2cdc\u03ef\u03ee\u2cb3\u2cb2\u2cb5\u2cb4\u2cdf\u2cde\u2ce1\u2ce0\u2ce3\u2ce2\u0430\u2df6\u0410\u04d1\u04d0\u04d3\u04d2\u04d9\u04d8\u04db\u04da\u04d5\u04d4\u0431\u2de0\u0411\u0432\u1c80\u2de1\u0412\u0433\u2de2\u0413\u0453\u0403\u0491\u0490\u0493\u0492\u04fb\u04fa\u0495\u0494\u04f7\u04f6\u0434\u1c81\u2de3\u0414\u0501\u0500\ua681\ua680\u0452\u0402\ua663\ua662\u0503\u0502\u0499\u0498\u0435\u2df7\u0415\u0450\u0400\u04d7\u04d6\u0451\u0401\u0454\ua674\u0404\u0436\u2de4\u0416\u04c2\u04c1\u04dd\u04dc\u052b\u052a\ua685\ua684\u0497\u0496\u0437\u2de5\u0417\u04df\u04de\ua641\ua640\u0505\u0504\u0511\u0510\ua643\ua642\u0455\u0405\ua645\ua644\u04e1\u04e0\ua689\ua688\u0507\u0506\ua683\ua682\u0438\ua675\u0418\u045d\u040d\u04e5\u04e4\u04e3\u04e2\u048b\u048a\u0456\u0406\u0457\ua676\u0407\ua647\ua646\u0439\u0419\u0458\u0408\ua649\u2df8\ua648\u043a\u2de6\u041a\u045c\u040c\u049b\u049a\u04c4\u04c3\u04a1\u04a0\u049f\u049e\u049d\u049c\u051f\u051e\u051b\u051a\u043b\u2de7\u041b\u1d2b\u04c6\u04c5\u052f\u052e\u0513\u0512\u0521\u0520\u0459\u0409\ua665\ua664\u0509\u0508\u0515\u0514\u043c\u2de8\u041c\u04ce\u04cd\ua667\ua666\u043d\u2de9\u041d\u1d78\u0529\u0528\u04ca\u04c9\u04a3\u04a2\u04c8\u04c7\u0523\u0522\u04a5\u04a4\u045a\u040a\u050b\u050a\u043e\u1c82\u2dea\ua669\ua66b\ua66d\ua66e\ua699\ua69b\u041e\ua668\ua66a\ua66c\ua698\ua69a\u04e7\u04e6\u04e9\u04e8\u04eb\u04ea\u043f\u2deb\u041f\u0525\u0524\u04a7\u04a6\u0481\u0480\u0440\u2dec\u0420\u048f\u048e\u0517\u0516\u0441\u1c83\u2ded\u0421\u2df5\u050d\u050c\u04ab\u04aa\u0442\u1c84\u1c85\u2dee\u0422\ua68d\ua68c\u050f\u050e\u04ad\u04ac\ua68b\ua68a\u045b\u040b\u0443\ua677\u0423\u045e\u040e\u04f1\u04f0\u04f3\u04f2\u04ef\u04ee\u04af\u04ae\u04b1\u04b0\ua64b\u1c88\u2df9\ua64a\u0479\u0478\u0444\ua69e\u0424\u0445\u2def\u0425\u04fd\u04fc\u04ff\u04fe\u04b3\u04b2\u04bb\u04ba\u0527\u0526\ua695\ua694\u0461\ua67b\u0460\u047f\u047e\ua64d\ua64c\u047d\u047c\u047b\u047a\u0446\u2df0\u0426\ua661\ua660\ua68f\ua68e\u04b5\u04b4\ua691\ua690\u0447\u2df1\u0427\u04f5\u04f4\u052d\u052c\ua693\ua692\u04b7\u04b6\u04cc\u04cb\u04b9\u04b8\ua687\ua686\u04bd\u04bc\u04bf\u04be\u045f\u040f\u0448\u2df2\u0428\ua697\ua696\u0449\u2df3\u0429\ua64f\ua64e\u2e2f\ua67f\u044a\u1c86\ua678\u042a\ua69c\ua651\ua650\u044b\ua679\u042b\u04f9\u04f8\u044c\ua67a\u042c\ua69d\u048d\u048c\u0463\u1c87\u2dfa\u0462\ua653\ua652\u044d\u042d\u04ed\u04ec\u044e\u2dfb\u042e\ua655\ua654\ua657\u2dfc\ua656\u044f\u042f\u0519\u0518\u0465\ua69f\u0464\u0467\u2dfd\u0466\ua659\ua658\u046b\u2dfe\u046a\ua65b\ua65a\u0469\u0468\ua65d\ua65c\u046d\u2dff\u046c\u046f\u046e\u0471\u0470\u0473\u2df4\u0472\u0475\u0474\u0477\u0476\ua65f\ua65e\u04a9\u04a8\u051d\u051c\u04cf\u04c0\u2c30\u2c00\u2c31\u2c01\u2c32\u2c02\u2c33\u2c03\u2c34\u2c04\u2c35\u2c05\u2c36\u2c06\u2c37\u2c07\u2c38\u2c08\u2c39\u2c09\u2c3a\u2c0a\u2c3b\u2c0b\u2c3c\u2c0c\u2c3d\u2c0d\u2c3e\u2c0e\u2c3f\u2c0f\u2c40\u2c10\u2c41\u2c11\u2c42\u2c12\u2c43\u2c13\u2c44\u2c14\u2c45\u2c15\u2c46\u2c16\u2c47\u2c17\u2c48\u2c18\u2c49\u2c19\u2c4a\u2c1a\u2c4b\u2c1b\u2c4c\u2c1c\u2c4d\u2c1d\u2c4e\u2c1e\u2c4f\u2c1f\u2c50\u2c20\u2c51\u2c21\u2c52\u2c22\u2c53\u2c23\u2c54\u2c24\u2c55\u2c25\u2c56\u2c26\u2c57\u2c27\u2c58\u2c28\u2c59\u2c29\u2c5a\u2c2a\u2c5b\u2c2b\u2c5c\u2c2c\u2c5d\u2c2d\u2c5e\u2c2e\u10d0\u1c90\u2d00\u10a0\u10d1\u1c91\u2d01\u10a1\u10d2\u1c92\u2d02\u10a2\u10d3\u1c93\u2d03\u10a3\u10d4\u1c94\u2d04\u10a4\u10d5\u1c95\u2d05\u10a5\u10d6\u1c96\u2d06\u10a6\u10f1\u1cb1\u2d21\u10c1\u10d7\u1c97\u2d07\u10a7\u10d8\u1c98\u2d08\u10a8\u10d9\u1c99\u2d09\u10a9\u10da\u1c9a\u2d0a\u10aa\u10db\u1c9b\u2d0b\u10ab\u10dc\u1c9c\u10fc\u2d0c\u10ac\u10f2\u1cb2\u2d22\u10c2\u10dd\u1c9d\u2d0d\u10ad\u10de\u1c9e\u2d0e\u10ae\u10df\u1c9f\u2d0f\u10af\u10e0\u1ca0\u2d10\u10b0\u10e1\u1ca1\u2d11\u10b1\u10e2\u1ca2\u2d12\u10b2\u10f3\u1cb3\u2d23\u10c3\u10e3\u1ca3\u2d13\u10b3\u10e4\u1ca4\u2d14\u10b4\u10e5\u1ca5\u2d15\u10b5\u10e6\u1ca6\u2d16\u10b6\u10e7\u1ca7\u2d17\u10b7\u10e8\u1ca8\u2d18\u10b8\u10e9\u1ca9\u2d19\u10b9\u10ea\u1caa\u2d1a\u10ba\u10eb\u1cab\u2d1b\u10bb\u10ec\u1cac\u2d1c\u10bc\u10ed\u1cad\u2d1d\u10bd\u10ee\u1cae\u2d1e\u10be\u10f4\u1cb4\u2d24\u10c4\u10ef\u1caf\u2d1f\u10bf\u10f0\u1cb0\u2d20\u10c0\u10f5\u1cb5\u2d25\u10c5\u10f6\u1cb6\u10f7\u1cb7\u2d27\u10c7\u10f8\u1cb8\u10f9\u1cb9\u10fa\u1cba\u10fd\u1cbd\u2d2d\u10cd\u10fe\u1cbe\u10ff\u1cbf\u0561\u0531\u0560\u0562\u0532\u0563\u0533\u0564\u0534\u0565\u0535\u0587\u0566\u0536\u0567\u0537\u0568\u0538\u0569\u0539\u056a\u053a\u056b\u053b\u056c\u053c\u056d\u053d\u056e\u053e\u056f\u053f\u0570\u0540\u0571\u0541\u0572\u0542\u0573\u0543\u0574\u0544\ufb14\ufb15\ufb17\ufb13\u0575\u0545\u0588\u0576\u0546\u0577\u0547\u0578\u0548\u0579\u0549\u057a\u054a\u057b\u054b\u057c\u054c\u057d\u054d\u057e\u054e\ufb16\u057f\u054f\u0580\u0550\u0581\u0551\u0582\u0552\u0583\u0553\u0584\u0554\u0585\u0555\u0586\u0556\u0559\u05d0\u2135\ufb21\ufb2e\ufb2f\ufb30\ufb4f\u05d1\u2136\ufb31\ufb4c\u05d2\u2137\ufb32\u05d3\u2138\ufb22\ufb33\u05d4\ufb23\ufb34\u05d5\ufb4b\ufb35\u05f0\u05f1\u05d6\ufb36\u05d7\u05d8\ufb38\u05d9\ufb1d\ufb39\u05ef\u05f2\ufb1f\u05db\ufb24\u05da\ufb3b\ufb3a\ufb4d\u05dc\ufb25\ufb3c\u05de\ufb26\u05dd\ufb3e\u05e0\u05df\ufb40\u05e1\ufb41\u05e2\ufb20\u05e4\u05e3\ufb44\ufb43\ufb4e\u05e6\u05e5\ufb46\u05e7\ufb47\u05e8\ufb27\ufb48\u05e9\ufb2b\ufb2a\ufb49\ufb2d\ufb2c\u05ea\ufb28\ufb4a\u0800\u0801\u0802\u0803\u0804\u0805\u0806\u0807\u0808\u0809\u080a\u080b\u080c\u080d\u080e\u080f\u0810\u0811\u0812\u0813\u0814\u0815\u0816\u0817\u081a\u081b\u0621\u0674\ufe80\u06fd\u0622\ufe82\ufe81\u0623\ufe84\ufe83\u0672\u0671\ufb51\ufb50\u0624\ufe86\ufe85\u0625\ufe88\ufe87\u0673\u0773\u0774\u0626\ufe8b\ufe8c\ufe8a\ufe89\ufbeb\ufbea\ufc97\ufc00\ufc98\ufc01\ufc99\ufc64\ufc65\ufc9a\ufcdf\ufc66\ufc02\ufc67\ufc9b\ufce0\ufbed\ufbec\ufbef\ufbee\ufbf3\ufbf2\ufbf1\ufbf0\ufbf5\ufbf4\ufbfb\ufbfa\ufc68\ufbf9\ufc03\ufc69\ufc04\ufbf8\ufbf7\ufbf6\u08a8\u08a9\u08ac\u0627\u08ad\ufe8e\ufe8d\ufd3c\ufd3d\u0675\ufdf3\ufdf2\u066e\u0628\ufe91\ufe92\ufe90\ufe8f\ufc9c\ufc05\ufc9d\ufc06\ufdc2\ufc9e\ufc07\ufd9e\ufc6a\ufc6b\ufc9f\ufce1\ufc6c\ufc08\ufc6d\ufca0\ufce2\ufc6e\ufc09\ufc6f\ufc0a\u067b\ufb54\ufb55\ufb53\ufb52\u067e\ufb58\ufb59\ufb57\ufb56\u0680\ufb5c\ufb5d\ufb5b\ufb5a\u0750\u0751\u0752\u0753\u0754\u0755\u08a0\u0756\u08be\u08a1\u08b6\u08b7\u0629\ufe94\ufe93\u062a\ufe97\ufe98\ufe96\ufe95\ufca1\ufc0b\ufd50\ufda0\ufd9f\ufca2\ufc0c\ufd52\ufd51\ufd53\ufca3\ufc0d\ufd54\ufda2\ufda1\ufc70\ufc71\ufca4\ufce3\ufc72\ufc0e\ufd55\ufd56\ufd57\ufda4\ufda3\ufc73\ufca5\ufce4\ufc74\ufc0f\ufc75\ufc10\u062b\ufe9b\ufe9c\ufe9a\ufe99\ufc11\ufc76\ufc77\ufca6\ufce5\ufc78\ufc12\ufc79\ufce6\ufc7a\ufc13\ufc7b\ufc14\u0679\ufb68\ufb69\ufb67\ufb66\u067a\ufb60\ufb61\ufb5f\ufb5e\u067c\u067d\u067f\ufb64\ufb65\ufb63\ufb62\u08b8\u08bf\u08c0\u062c\ufe9f\ufea0\ufe9e\ufe9d\ufca7\ufc15\ufda6\ufdbe\ufdfb\ufca8\ufc16\ufd59\ufd58\ufda7\ufda5\ufd1d\ufd01\ufd1e\ufd02\u0683\ufb78\ufb79\ufb77\ufb76\u0684\ufb74\ufb75\ufb73\ufb72\u0686\ufb7c\ufb7d\ufb7b\ufb7a\u06bf\u0687\ufb80\ufb81\ufb7f\ufb7e\u08a2\u08c1\u08c5\u08c6\u062d\ufea3\ufea4\ufea2\ufea1\ufca9\ufc17\ufdbf\ufcaa\ufc18\ufd5b\ufd5a\ufd1b\ufcff\ufd1c\ufd00\u062e\ufea7\ufea8\ufea6\ufea5\ufcab\ufc19\ufc1a\ufcac\ufc1b\ufd1f\ufd03\ufd20\ufd04\u0681\u0682\u0685\u0757\u0758\u076e\u076f\u0772\u077c\u062f\ufeaa\ufea9\u0630\ufeac\ufeab\ufc5b\u0688\ufb89\ufb88\u0689\u068a\u068b\u068c\ufb85\ufb84\u068d\ufb83\ufb82\u08ae\u068e\ufb87\ufb86\u068f\u0690\u06ee\u0759\u075a\u0631\ufeae\ufead\ufc5c\ufdf6\ufdfc\u0632\ufeb0\ufeaf\u0691\ufb8d\ufb8c\u0692\u0693\u0694\u0695\u0696\u0697\u0698\ufb8b\ufb8a\u0699\u06ef\u075b\u076b\u076c\u0771\u08aa\u08b2\u08b9\u0633\ufeb3\ufeb4\ufeb2\ufeb1\ufcad\ufd34\ufc1c\ufd5d\ufd5e\ufcae\ufd35\ufc1d\ufd5c\ufcaf\ufd36\ufc1e\ufda8\ufdc6\ufd2a\ufd0e\ufcb0\ufce7\ufc1f\ufd61\ufd60\ufd5f\ufd63\ufd62\ufd31\ufce8\ufd17\ufcfb\ufd18\ufcfc\u0634\ufeb7\ufeb8\ufeb6\ufeb5\ufd2d\ufd37\ufd25\ufd09\ufd69\ufd2e\ufd38\ufd26\ufd0a\ufd68\ufd67\ufdaa\ufd2f\ufd39\ufd27\ufd0b\ufd29\ufd0d\ufd30\ufce9\ufd28\ufd0c\ufd6b\ufd6a\ufd6d\ufd6c\ufd32\ufcea\ufd19\ufcfd\ufd1a\ufcfe\u069a\u069b\u069c\u06fa\u075c\u076d\u0770\u077d\u077e\u0635\ufebb\ufebc\ufeba\ufeb9\ufcb1\ufc20\ufd65\ufd64\ufda9\ufcb2\ufd2b\ufd0f\ufdf5\ufdf9\ufdfa\ufdf0\ufcb3\ufc21\ufdc5\ufd66\ufd21\ufd05\ufd22\ufd06\u0636\ufebf\ufec0\ufebe\ufebd\ufcb4\ufc22\ufcb5\ufc23\ufd6e\ufdab\ufcb6\ufc24\ufd70\ufd6f\ufd2c\ufd10\ufcb7\ufc25\ufd23\ufd07\ufd24\ufd08\u069d\u08af\u069e\u06fb\u0637\ufec3\ufec4\ufec2\ufec1\ufcb8\ufc26\ufd33\ufd3a\ufc27\ufd72\ufd71\ufd73\ufd74\ufd11\ufcf5\ufd12\ufcf6\u0638\ufec7\ufec8\ufec6\ufec5\ufcb9\ufd3b\ufc28\u069f\u08a3\u0639\ufecb\ufecc\ufeca\ufec9\ufcba\ufc29\ufdc4\ufd75\ufdf7\ufcbb\ufc2a\ufd77\ufd76\ufd78\ufdb6\ufd13\ufcf7\ufd14\ufcf8\u063a\ufecf\ufed0\ufece\ufecd\ufcbc\ufc2b\ufcbd\ufc2c\ufd79\ufd7b\ufd7a\ufd15\ufcf9\ufd16\ufcfa\u06a0\u08c3\u06fc\u075d\u075e\u075f\u08b3\u0641\ufed3\ufed4\ufed2\ufed1\ufcbe\ufc2d\ufcbf\ufc2e\ufcc0\ufc2f\ufd7d\ufd7c\ufcc1\ufc30\ufdc1\ufc7c\ufc31\ufc7d\ufc32\u06a1\u06a2\u08bb\u06a3\u06a4\ufb6c\ufb6d\ufb6b\ufb6a\u08a4\u06a5\u06a6\ufb70\ufb71\ufb6f\ufb6e\u0760\u0761\u066f\u0642\ufed7\ufed8\ufed6\ufed5\ufcc2\ufc33\ufdf1\ufcc3\ufc34\ufdb4\ufd7e\ufd7f\ufdb2\ufc7e\ufc35\ufc7f\ufc36\u06a7\u08bc\u06a8\u08c4\u08a5\u0643\ufedb\ufedc\ufeda\ufed9\ufc80\ufc37\ufcc4\ufc38\ufcc5\ufc39\ufcc6\ufc3a\ufcc7\ufceb\ufc81\ufc3b\ufcc8\ufcec\ufc82\ufc3c\ufdc3\ufdbb\ufdb7\ufc83\ufc3d\ufc84\ufc3e\u06a9\ufb90\ufb91\ufb8f\ufb8e\u06aa\u06ab\u06ac\u077f\u06ad\ufbd5\ufbd6\ufbd4\ufbd3\u06ae\u08b4\u06af\ufb94\ufb95\ufb93\ufb92\u08b0\u06b0\u06b1\ufb9c\ufb9d\ufb9b\ufb9a\u06b2\u06b3\ufb98\ufb99\ufb97\ufb96\u06b4\u0762\u063b\u063c\u0763\u0764\u08c2\u0644\ufedf\ufee0\ufede\ufedd\ufef6\ufef5\ufef8\ufef7\ufefa\ufef9\ufefc\ufefb\ufcc9\ufc3f\ufd83\ufd84\ufdba\ufdbc\ufdac\ufcca\ufc40\ufdb5\ufd80\ufd82\ufd81\ufccb\ufc41\ufd86\ufd85\ufccc\ufced\ufc85\ufc42\ufd88\ufd87\ufdad\ufccd\ufc86\ufc43\ufc87\ufc44\u06b5\u06b6\u06b7\u06b8\u076a\u08a6\u08c7\u0645\ufee3\ufee4\ufee2\ufee1\u06fe\ufc88\ufcce\ufc45\ufd8c\ufd92\ufd8d\ufdc0\ufccf\ufc46\ufd89\ufd8a\ufdf4\ufd8b\ufcd0\ufc47\ufd8e\ufd8f\ufdb9\ufcd1\ufc89\ufc48\ufdb1\ufc49\ufc4a\u0765\u0766\u08a7\u0646\ufee7\ufee8\ufee6\ufee5\ufcd2\ufc4b\ufdb8\ufdbd\ufd98\ufd97\ufd99\ufdc7\ufcd3\ufc4c\ufd95\ufd96\ufdb3\ufcd4\ufc4d\ufc8a\ufc8b\ufcd5\ufcee\ufc8c\ufc4e\ufd9b\ufd9a\ufc8d\ufcd6\ufcef\ufc8e\ufc4f\ufc8f\ufc50\u06ba\ufb9f\ufb9e\u08bd\u06bb\ufba2\ufba3\ufba1\ufba0\u06bc\u06bd\u06b9\u0767\u0768\u0769\u0647\ufeeb\ufeec\ufeea\ufee9\ufcd9\ufcd7\ufc51\ufcd8\ufc52\ufd93\ufd94\ufc53\ufc54\u06be\ufbac\ufbad\ufbab\ufbaa\u06c1\ufba8\ufba9\ufba7\ufba6\u06c2\u06c3\u06ff\u06d5\u06c0\ufba5\ufba4\u0648\u06e5\ufeee\ufeed\u0676\ufdf8\u06c4\u06c5\ufbe1\ufbe0\u06c6\ufbda\ufbd9\u06c7\ufbd8\ufbd7\u0677\ufbdd\u06c8\ufbdc\ufbdb\u06c9\ufbe3\ufbe2\u06ca\u06cb\ufbdf\ufbde\u08b1\u06cf\u0778\u0779\u08ab\u0649\ufbe8\ufbe9\ufef0\ufeef\ufc90\ufc5d\u064a\u06e6\ufef3\ufef4\ufef2\ufef1\u0678\ufcda\ufc55\ufdaf\ufcdb\ufc56\ufdae\ufcdc\ufc57\ufc91\ufc92\ufcdd\ufcf0\ufc93\ufc58\ufd9d\ufd9c\ufdb0\ufc94\ufcde\ufcf1\ufc95\ufc59\ufc96\ufc5a\u06cc\ufbfe\ufbff\ufbfd\ufbfc\u06cd\u06ce\u06d0\ufbe6\ufbe7\ufbe5\ufbe4\u06d1\u063d\u063e\u063f\u0620\u0775\u0776\u0777\u08ba\u06d2\ufbaf\ufbae\u06d3\ufbb1\ufbb0\u077a\u077b\u0710\u0712\u072d\u0713\u0714\u072e\u0716\u0715\u072f\u0717\u0718\u0719\u074d\u071a\u071b\u071c\u071d\u071e\u071f\u074e\u0720\u0721\u0722\u0723\u0724\u0725\u0726\u0727\u074f\u0728\u0729\u072a\u072b\u072c\u0860\u0861\u0862\u0863\u0864\u0865\u0866\u0867\u0868\u0869\u086a\u0840\u0841\u0842\u0843\u0844\u0845\u0846\u0847\u0848\u0849\u084a\u084b\u084c\u084d\u084e\u084f\u0850\u0851\u0852\u0853\u0854\u0855\u0856\u0857\u0858\u0780\u0799\u079a\u0781\u0782\u0783\u079c\u0784\u0785\u0786\u0787\u07a2\u07a3\u0788\u07a5\u0789\u078a\u078b\u079b\u078c\u0798\u07a0\u07a1\u078d\u078e\u07a4\u078f\u0790\u079d\u079e\u079f\u0791\u0792\u0793\u0794\u0795\u0796\u0797\u07b1\u07a6\u07a7\u07a8\u07a9\u07aa\u07ab\u07ac\u07ad\u07ae\u07af\u07b0\u07ca\u07cb\u07cc\u07cd\u07ce\u07cf\u07d0\u07d1\u07d2\u07d3\u07d4\u07d5\u07d6\u07e8\u07d7\u07e9\u07d8\u07d9\u07ea\u07da\u07db\u07dc\u07dd\u07de\u07df\u07e0\u07e1\u07e2\u07e3\u07e4\u07e5\u07e6\u07e7\u07f4\u07f5\u2d30\u2d31\u2d32\u2d33\u2d34\u2d35\u2d36\u2d37\u2d38\u2d39\u2d3a\u2d3b\u2d66\u2d3c\u2d3d\u2d3e\u2d3f\u2d40\u2d41\u2d42\u2d43\u2d44\u2d45\u2d46\u2d47\u2d48\u2d49\u2d4a\u2d4b\u2d4c\u2d4d\u2d4e\u2d4f\u2d50\u2d51\u2d52\u2d53\u2d67\u2d54\u2d55\u2d56\u2d57\u2d58\u2d59\u2d5a\u2d5b\u2d5c\u2d5d\u2d5e\u2d5f\u2d60\u2d61\u2d62\u2d63\u2d64\u2d65\u2d6f\u1200\u1201\u1202\u1203\u1204\u1205\u1206\u1207\u1208\u1209\u120a\u120b\u120c\u120d\u120e\u120f\u2d80\u1210\u1211\u1212\u1213\u1214\u1215\u1216\u1217\u1218\u1219\u121a\u121b\u121c\u121d\u121e\u121f\u1380\u1381\u1382\u1383\u2d81\u1220\u1221\u1222\u1223\u1224\u1225\u1226\u1227\u1228\u1229\u122a\u122b\u122c\u122d\u122e\u122f\u2d82\u1230\u1231\u1232\u1233\u1234\u1235\u1236\u1237\u2d83\uab01\uab02\uab03\uab04\uab05\uab06\u1238\u1239\u123a\u123b\u123c\u123d\u123e\u123f\u2d84\u1240\u1241\u1242\u1243\u1244\u1245\u1246\u1247\u1248\u124a\u124b\u124c\u124d\u1250\u1251\u1252\u1253\u1254\u1255\u1256\u1258\u125a\u125b\u125c\u125d\u1260\u1261\u1262\u1263\u1264\u1265\u1266\u1267\u1384\u1385\u1386\u1387\u2d85\u1268\u1269\u126a\u126b\u126c\u126d\u126e\u126f\u1270\u1271\u1272\u1273\u1274\u1275\u1276\u1277\u2d86\u1278\u1279\u127a\u127b\u127c\u127d\u127e\u127f\u2d87\u1280\u1281\u1282\u1283\u1284\u1285\u1286\u1287\u1288\u128a\u128b\u128c\u128d\u1290\u1291\u1292\u1293\u1294\u1295\u1296\u1297\u2d88\u1298\u1299\u129a\u129b\u129c\u129d\u129e\u129f\u2d89\u12a0\u12a1\u12a2\u12a3\u12a4\u12a5\u12a6\u12a7\u2d8a\u12a8\u12a9\u12aa\u12ab\u12ac\u12ad\u12ae\u12af\u12b0\u12b2\u12b3\u12b4\u12b5\u12b8\u12b9\u12ba\u12bb\u12bc\u12bd\u12be\u12c0\u12c2\u12c3\u12c4\u12c5\u12c8\u12c9\u12ca\u12cb\u12cc\u12cd\u12ce\u12cf\u12d0\u12d1\u12d2\u12d3\u12d4\u12d5\u12d6\u12d8\u12d9\u12da\u12db\u12dc\u12dd\u12de\u12df\u2d8b\uab11\uab12\uab13\uab14\uab15\uab16\u12e0\u12e1\u12e2\u12e3\u12e4\u12e5\u12e6\u12e7\u12e8\u12e9\u12ea\u12eb\u12ec\u12ed\u12ee\u12ef\u12f0\u12f1\u12f2\u12f3\u12f4\u12f5\u12f6\u12f7\u2d8c\uab09\uab0a\uab0b\uab0c\uab0d\uab0e\u12f8\u12f9\u12fa\u12fb\u12fc\u12fd\u12fe\u12ff\u2d8d\u1300\u1301\u1302\u1303\u1304\u1305\u1306\u1307\u2d8e\u1308\u1309\u130a\u130b\u130c\u130d\u130e\u130f\u1310\u1312\u1313\u1314\u1315\u1318\u1319\u131a\u131b\u131c\u131d\u131e\u131f\u2d93\u2d94\u2d95\u2d96\u1320\u1321\u1322\u1323\u1324\u1325\u1326\u1327\u2d8f\u1328\u1329\u132a\u132b\u132c\u132d\u132e\u132f\u2d90\uab20\uab21\uab22\uab23\uab24\uab25\uab26\u1330\u1331\u1332\u1333\u1334\u1335\u1336\u1337\u2d91\u1338\u1339\u133a\u133b\u133c\u133d\u133e\u133f\uab28\uab29\uab2a\uab2b\uab2c\uab2d\uab2e\u1340\u1341\u1342\u1343\u1344\u1345\u1346\u1347\u1348\u1349\u134a\u134b\u134c\u134d\u134e\u134f\u1388\u1389\u138a\u138b\u1350\u1351\u1352\u1353\u1354\u1355\u1356\u1357\u138c\u138d\u138e\u138f\u2d92\u1358\u1359\u135a\u2da0\u2da1\u2da2\u2da3\u2da4\u2da5\u2da6\u2da8\u2da9\u2daa\u2dab\u2dac\u2dad\u2dae\u2db0\u2db1\u2db2\u2db3\u2db4\u2db5\u2db6\u2db8\u2db9\u2dba\u2dbb\u2dbc\u2dbd\u2dbe\u2dc0\u2dc1\u2dc2\u2dc3\u2dc4\u2dc5\u2dc6\u2dc8\u2dc9\u2dca\u2dcb\u2dcc\u2dcd\u2dce\u2dd0\u2dd1\u2dd2\u2dd3\u2dd4\u2dd5\u2dd6\u2dd8\u2dd9\u2dda\u2ddb\u2ddc\u2ddd\u2dde\u0950\ua8fd\u0972\u0904\u0905\u0906\u0973\u0974\u0975\u0976\u0977\u0907\u0908\u0909\u090a\u090b\u0960\u090c\u0961\u090d\u090e\u090f\u0910\ua8fe\u0911\u0912\u0913\u0914\u0915\u0958\u0916\u0959\u0917\u095a\u097b\u0918\u0919\u091a\u091b\u091c\u095b\u0979\u097c\u091d\u091e\u091f\u0920\u0978\u0921\u095c\u097e\u0922\u095d\u0923\u0924\u0925\u0926\u0927\u0928\u0929\u092a\u092b\u095e\u092c\u097f\u092d\u092e\u092f\u095f\u097a\u0930\u0931\u0932\u0933\u0934\u0935\u0936\u0937\u0938\u0939\u093d\u097d\u1ce9\u1cea\u1ceb\u1cec\u1cee\u1cef\u1cf0\u1cf1\u1cfa\u1cf5\u1cf6\ua8f2\ua8f3\ua8f4\ua8f5\ua8f6\ua8f7\ua8fb\u093e\u093a\u093b\u094f\u0956\u0957\u093f\u0940\u0941\u0942\u0943\u0944\u0962\u0963\u0945\u0955\u0946\u0947\u094e\u0948\ua8ff\u0949\u094a\u094b\u094c\u094d\u0980\u0985\u0986\u0987\u0988\u0989\u098a\u098b\u09e0\u098c\u09e1\u098f\u0990\u0993\u0994\u0995\u0996\u0997\u0998\u0999\u099a\u099b\u099c\u099d\u099e\u099f\u09a0\u09a1\u09dc\u09a2\u09dd\u09a3\u09a4\u09ce\u09a5\u09a6\u09a7\u09a8\u09aa\u09ab\u09ac\u09ad\u09ae\u09af\u09df\u09b0\u09f0\u09b2\u09f1\u09b6\u09b7\u09b8\u09b9\u09bd\u09be\u09bf\u09c0\u09c1\u09c2\u09c3\u09c4\u09e2\u09e3\u09c7\u09c8\u09cb\u09cc\u09cd\u09d7\u09fc\u0a74\u0a73\u0a09\u0a0a\u0a13\u0a05\u0a06\u0a10\u0a14\u0a72\u0a07\u0a08\u0a0f\u0a38\u0a36\u0a39\u0a51\u0a15\u0a16\u0a59\u0a17\u0a5a\u0a18\u0a19\u0a1a\u0a1b\u0a1c\u0a5b\u0a1d\u0a1e\u0a1f\u0a20\u0a21\u0a22\u0a23\u0a24\u0a25\u0a26\u0a27\u0a28\u0a2a\u0a2b\u0a5e\u0a2c\u0a2d\u0a2e\u0a2f\u0a75\u0a30\u0a32\u0a33\u0a35\u0a5c\u0a3e\u0a3f\u0a40\u0a41\u0a42\u0a47\u0a48\u0a4b\u0a4c\u0a4d\u0ad0\u0a85\u0a86\u0a87\u0a88\u0a89\u0a8a\u0a8b\u0ae0\u0a8c\u0ae1\u0a8d\u0a8f\u0a90\u0a91\u0a93\u0a94\u0a95\u0a96\u0a97\u0a98\u0a99\u0a9a\u0a9b\u0a9c\u0af9\u0a9d\u0a9e\u0a9f\u0aa0\u0aa1\u0aa2\u0aa3\u0aa4\u0aa5\u0aa6\u0aa7\u0aa8\u0aaa\u0aab\u0aac\u0aad\u0aae\u0aaf\u0ab0\u0ab2\u0ab5\u0ab6\u0ab7\u0ab8\u0ab9\u0ab3\u0abd\u0abe\u0abf\u0ac0\u0ac1\u0ac2\u0ac3\u0ac4\u0ae2\u0ae3\u0ac5\u0ac7\u0ac8\u0ac9\u0acb\u0acc\u0acd\u0b05\u0b06\u0b07\u0b08\u0b09\u0b0a\u0b0b\u0b60\u0b0c\u0b61\u0b0f\u0b10\u0b13\u0b14\u0b15\u0b16\u0b17\u0b18\u0b19\u0b1a\u0b1b\u0b1c\u0b1d\u0b1e\u0b1f\u0b20\u0b21\u0b5c\u0b22\u0b5d\u0b23\u0b24\u0b25\u0b26\u0b27\u0b28\u0b2a\u0b2b\u0b2c\u0b2d\u0b2e\u0b2f\u0b5f\u0b30\u0b32\u0b33\u0b35\u0b71\u0b36\u0b37\u0b38\u0b39\u0b3d\u0b3e\u0b3f\u0b40\u0b41\u0b42\u0b43\u0b44\u0b62\u0b63\u0b47\u0b48\u0b4b\u0b4c\u0b4d\u0b56\u0b57\u0bd0\u0b85\u0b86\u0b87\u0b88\u0b89\u0b8a\u0b8e\u0b8f\u0b90\u0b92\u0b93\u0b94\u0b83\u0b95\u0b99\u0b9a\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8\u0baa\u0bae\u0baf\u0bb0\u0bb2\u0bb5\u0bb4\u0bb3\u0bb1\u0ba9\u0b9c\u0bb6\u0bb7\u0bb8\u0bb9\u0bbe\u0bbf\u0bc0\u0bc1\u0bc2\u0bc6\u0bc7\u0bc8\u0bca\u0bcb\u0bcc\u0bcd\u0bd7\u0c05\u0c06\u0c07\u0c08\u0c09\u0c0a\u0c0b\u0c60\u0c0c\u0c61\u0c0e\u0c0f\u0c10\u0c12\u0c13\u0c14\u0c15\u0c16\u0c17\u0c18\u0c19\u0c1a\u0c58\u0c1b\u0c1c\u0c59\u0c1d\u0c1e\u0c1f\u0c20\u0c21\u0c22\u0c23\u0c24\u0c25\u0c26\u0c27\u0c28\u0c2a\u0c2b\u0c2c\u0c2d\u0c2e\u0c2f\u0c30\u0c31\u0c32\u0c35\u0c36\u0c37\u0c38\u0c39\u0c33\u0c34\u0c5a\u0c3d\u0c3e\u0c3f\u0c40\u0c41\u0c42\u0c43\u0c44\u0c62\u0c63\u0c46\u0c47\u0c48\u0c4a\u0c4b\u0c4c\u0c4d\u0c55\u0c56\u0c85\u0c86\u0c87\u0c88\u0c89\u0c8a\u0c8b\u0ce0\u0c8c\u0ce1\u0c8e\u0c8f\u0c90\u0c92\u0c93\u0c94\u0c95\u0c96\u0c97\u0c98\u0c99\u0c9a\u0c9b\u0c9c\u0c9d\u0c9e\u0c9f\u0ca0\u0ca1\u0ca2\u0ca3\u0ca4\u0ca5\u0ca6\u0ca7\u0ca8\u0caa\u0cab\u0cac\u0cad\u0cae\u0caf\u0cb0\u0cb1\u0cb2\u0cb5\u0cb6\u0cb7\u0cb8\u0cb9\u0cb3\u0cde\u0cbd\u0cf1\u0cf2\u0c80\u0cbe\u0cbf\u0cc0\u0cc1\u0cc2\u0cc3\u0cc4\u0ce2\u0ce3\u0cc6\u0cc7\u0cc8\u0cca\u0ccb\u0ccc\u0ccd\u0cd5\u0cd6\u0d05\u0d06\u0d07\u0d08\u0d5f\u0d09\u0d0a\u0d0b\u0d60\u0d0c\u0d61\u0d0e\u0d0f\u0d10\u0d12\u0d13\u0d14\u0d15\u0d7f\u0d16\u0d17\u0d18\u0d19\u0d1a\u0d1b\u0d1c\u0d1d\u0d1e\u0d1f\u0d20\u0d21\u0d22\u0d23\u0d7a\u0d24\u0d25\u0d26\u0d27\u0d28\u0d7b\u0d29\u0d2a\u0d2b\u0d2c\u0d2d\u0d2e\u0d54\u0d2f\u0d55\u0d30\u0d4e\u0d7c\u0d32\u0d7d\u0d35\u0d36\u0d37\u0d38\u0d39\u0d33\u0d7e\u0d34\u0d56\u0d31\u0d3a\u0d3d\u0d04\u0d3e\u0d3f\u0d40\u0d41\u0d42\u0d43\u0d44\u0d62\u0d63\u0d46\u0d47\u0d48\u0d4a\u0d4b\u0d4c\u0d57\u0d4d\u0d3b\u0d3c\u0d85\u0d86\u0d87\u0d88\u0d89\u0d8a\u0d8b\u0d8c\u0d8d\u0d8e\u0d8f\u0d90\u0d91\u0d92\u0d93\u0d94\u0d95\u0d96\u0d9a\u0d9b\u0d9c\u0d9d\u0d9e\u0d9f\u0da0\u0da1\u0da2\u0da3\u0da4\u0da5\u0da6\u0da7\u0da8\u0da9\u0daa\u0dab\u0dac\u0dad\u0dae\u0daf\u0db0\u0db1\u0db3\u0db4\u0db5\u0db6\u0db7\u0db8\u0db9\u0dba\u0dbb\u0dbd\u0dc0\u0dc1\u0dc2\u0dc3\u0dc4\u0dc5\u0dc6\u0dcf\u0dd0\u0dd1\u0dd2\u0dd3\u0dd4\u0dd6\u0dd8\u0df2\u0ddf\u0df3\u0dd9\u0dda\u0ddb\u0ddc\u0ddd\u0dde\u0dca\uaaf2\uabc0\uabc1\uabc2\uabc3\uabc4\uabc5\uabc6\uabc7\uabc8\uabc9\uabca\uabcb\uabcc\uabcd\uabce\uabcf\uabd0\uabd1\uabd2\uabd3\uabd4\uabd5\uabd6\uabd7\uabd8\uabd9\uabda\uaae0\uaae1\uaae2\uaae3\uaae4\uaae5\uaae6\uaae7\uaae8\uaae9\uaaea\uabe3\uabe4\uabe5\uabe6\uabe7\uabe8\uabe9\uabea\uaaeb\uaaec\uaaed\uaaee\uaaef\uaaf5\uabdb\uabdc\uabdd\uabde\uabdf\uabe0\uabe1\uabe2\uabed\uaaf6\ua800\ua801\ua802\ua803\ua804\ua805\ua806\ua82c\ua807\ua808\ua809\ua80a\ua80c\ua80d\ua80e\ua80f\ua810\ua811\ua812\ua813\ua814\ua815\ua816\ua817\ua818\ua819\ua81a\ua81b\ua81c\ua81d\ua81e\ua81f\ua820\ua821\ua822\ua823\ua824\ua825\ua826\ua827\ua882\ua883\ua884\ua885\ua886\ua887\ua888\ua889\ua88a\ua88b\ua88c\ua88d\ua88e\ua88f\ua890\ua891\ua892\ua893\ua894\ua895\ua896\ua897\ua898\ua899\ua89a\ua89b\ua89c\ua89d\ua89e\ua89f\ua8a0\ua8a1\ua8a2\ua8a3\ua8a4\ua8a5\ua8a6\ua8a7\ua8a8\ua8a9\ua8aa\ua8ab\ua8ac\ua8ad\ua8ae\ua8af\ua8b0\ua8b1\ua8b2\ua8b3\ua8b4\ua8b5\ua8b6\ua8b7\ua8b8\ua8b9\ua8ba\ua8bb\ua8bc\ua8bd\ua8be\ua8bf\ua8c0\ua8c1\ua8c2\ua8c3\ua8c4\u1b83\u1bba\u1b84\u1b85\u1b86\u1b87\u1b88\u1b89\u1b8a\u1bbe\u1bae\u1b8b\u1b8c\u1b8d\u1b8e\u1b8f\u1b90\u1b91\u1b92\u1b93\u1b94\u1b95\u1b96\u1b97\u1b98\u1bbd\u1b99\u1bbf\u1bac\u1b9a\u1ba1\u1b9b\u1ba2\u1bbb\u1b9c\u1ba3\u1bbc\u1b9d\u1bad\u1b9e\u1b9f\u1baf\u1ba0\u1ba4\u1ba5\u1ba6\u1ba7\u1ba8\u1ba9\u1baa\u1bab\u0e01\u0e02\u0e03\u0e04\u0e05\u0e06\u0e07\u0e08\u0e09\u0e0a\u0e0b\u0e0c\u0e0d\u0e0e\u0e0f\u0e10\u0e11\u0e12\u0e13\u0e14\u0e15\u0e16\u0e17\u0e18\u0e19\u0e1a\u0e1b\u0e1c\u0e1d\u0e1e\u0e1f\u0e20\u0e21\u0e22\u0e23\u0e24\u0e25\u0e26\u0e27\u0e28\u0e29\u0e2a\u0e2b\u0e2c\u0e2d\u0e2e\u0e2f\u0e30\u0e31\u0e32\u0e33\u0e34\u0e35\u0e36\u0e37\u0e38\u0e39\u0e3a\u0e40\u0e41\u0e42\u0e43\u0e44\u0e45\u0ede\u0e81\u0e82\u0e84\u0e86\u0e87\u0e88\u0e89\u0eaa\u0e8a\u0e8c\u0e8e\u0edf\u0e8d\u0e8f\u0e90\u0e91\u0e92\u0e93\u0e94\u0e95\u0e96\u0e97\u0e98\u0e99\u0e9a\u0e9b\u0e9c\u0e9d\u0e9e\u0e9f\u0ea0\u0ea1\u0ea2\u0ea3\u0ea5\u0ea7\u0ea8\u0ea9\u0eab\u0edc\u0edd\u0eac\u0ead\u0eae\u0eaf\u0eb0\u0eb1\u0eb2\u0eb3\u0eb4\u0eb5\u0eb6\u0eb7\u0eb8\u0eb9\u0eba\u0ebb\u0ebc\u0ebd\u0ec0\u0ec1\u0ec2\u0ec3\u0ec4\uaa80\uaa81\uaa82\uaa83\uaa84\uaa85\uaa86\uaa87\uaa88\uaa89\uaa8a\uaa8b\uaa8c\uaa8d\uaa8e\uaa8f\uaa90\uaa91\uaa92\uaa93\uaa94\uaa95\uaa96\uaa97\uaa98\uaa99\uaa9a\uaa9b\uaa9c\uaa9d\uaa9e\uaa9f\uaaa0\uaaa1\uaaa2\uaaa3\uaaa4\uaaa5\uaaa6\uaaa7\uaaa8\uaaa9\uaaaa\uaaab\uaaac\uaaad\uaaae\uaaaf\uaab0\uaab1\uaab2\uaab3\uaab4\uaab5\uaab6\uaab7\uaab8\uaab9\uaaba\uaabb\uaabc\uaabd\uaabe\uaac0\uaac2\uaadb\uaadc\u0f40\u0f69\u0f90\u0fb9\u0f6b\u0f41\u0f91\u0f42\u0f43\u0f92\u0f93\u0f44\u0f94\u0f45\u0f95\u0f46\u0f96\u0f47\u0f97\u0f49\u0f99\u0f4a\u0f9a\u0f4b\u0f9b\u0f4c\u0f4d\u0f9c\u0f9d\u0f4e\u0f9e\u0f4f\u0f9f\u0f50\u0fa0\u0f51\u0f52\u0fa1\u0fa2\u0f53\u0fa3\u0f54\u0fa4\u0f55\u0fa5\u0f56\u0f57\u0fa6\u0fa7\u0f58\u0fa8\u0f59\u0fa9\u0f5a\u0faa\u0f5b\u0f5c\u0fab\u0fac\u0f5d\u0fad\u0fba\u0f5e\u0fae\u0f5f\u0faf\u0f60\u0fb0\u0f61\u0fb1\u0fbb\u0f62\u0f6a\u0fb2\u0fbc\u0f6c\u0f63\u0fb3\u0f64\u0fb4\u0f65\u0fb5\u0f66\u0fb6\u0f67\u0fb7\u0f68\u0f00\u0fb8\u0f88\u0f8d\u0f89\u0f8e\u0f8c\u0f8f\u0f8a\u0f8b\u0f71\u0f72\u0f73\u0f80\u0f81\u0f74\u0f75\u0f76\u0f77\u0f78\u0f79\u0f7a\u0f7b\u0f7c\u0f7d\u0f84\u1c00\u1c01\u1c02\u1c03\u1c04\u1c05\u1c06\u1c07\u1c08\u1c09\u1c4d\u1c4e\u1c4f\u1c0a\u1c0b\u1c0c\u1c0d\u1c0e\u1c0f\u1c10\u1c11\u1c12\u1c13\u1c14\u1c15\u1c16\u1c17\u1c18\u1c19\u1c1a\u1c24\u1c1b\u1c25\u1c1c\u1c1d\u1c1e\u1c1f\u1c20\u1c21\u1c22\u1c23\u1c36\u1c26\u1c27\u1c28\u1c29\u1c2a\u1c2b\u1c2c\u1c2d\u1c2e\u1c2f\u1c30\u1c31\u1c32\u1c33\u1c34\u1c35\ua840\ua841\ua842\ua843\ua844\ua845\ua846\ua847\ua869\ua86a\ua86b\ua86c\ua848\ua849\ua84a\ua84b\ua84c\ua84d\ua84e\ua84f\ua850\ua851\ua852\ua853\ua867\ua854\ua855\ua856\ua857\ua868\ua86d\ua858\ua871\ua872\ua859\ua85a\ua86e\ua85b\ua85c\ua86f\ua870\ua85d\ua862\ua863\ua864\ua865\ua85e\ua85f\ua860\ua861\ua866\ua873\u1900\u1901\u1902\u1903\u1904\u1905\u1906\u1907\u1908\u191d\u1909\u190a\u190b\u191e\u190c\u190d\u190e\u190f\u1910\u1911\u1912\u1913\u1914\u1915\u1916\u1917\u1918\u1919\u191a\u191b\u191c\u1920\u1921\u1922\u1923\u1924\u1925\u1926\u1927\u1928\u1929\u192a\u192b\u1930\u1931\u1932\u1933\u1934\u1935\u1936\u1937\u1938\u1700\u1701\u1702\u1703\u1704\u1705\u1706\u1707\u1708\u1709\u170a\u170b\u170c\u170e\u170f\u1710\u1711\u1712\u1713\u1714\u1720\u1721\u1722\u1723\u1724\u1725\u1726\u1727\u1728\u1729\u172a\u172b\u172c\u172d\u172e\u172f\u1730\u1731\u1732\u1733\u1734\u1740\u1741\u1742\u1743\u1744\u1745\u1746\u1747\u1748\u1749\u174a\u174b\u174c\u174d\u174e\u174f\u1750\u1751\u1752\u1753\u1760\u1761\u1762\u1763\u1764\u1765\u1766\u1767\u1768\u1769\u176a\u176b\u176c\u176e\u176f\u1770\u1772\u1773\u1a00\u1a01\u1a02\u1a03\u1a04\u1a05\u1a06\u1a07\u1a08\u1a09\u1a0a\u1a0b\u1a0c\u1a0d\u1a0e\u1a0f\u1a10\u1a11\u1a12\u1a13\u1a14\u1a15\u1a16\u1a17\u1a18\u1a19\u1a1a\u1a1b\u1bc0\u1bc1\u1bc2\u1bc3\u1bc4\u1bc5\u1bc6\u1bc7\u1bc8\u1bc9\u1bca\u1bcb\u1bcc\u1bcd\u1bce\u1bcf\u1bd0\u1bd1\u1bd2\u1bd3\u1bd4\u1bd5\u1bd6\u1bd7\u1bd8\u1bd9\u1bda\u1bdb\u1bdc\u1bdd\u1bde\u1bdf\u1be0\u1be1\u1be2\u1be3\u1be4\u1be5\u1be7\u1be8\u1be9\u1bea\u1beb\u1bec\u1bed\u1bee\u1bef\u1bf0\u1bf1\u1bf2\u1bf3\ua930\ua931\ua932\ua933\ua934\ua935\ua936\ua937\ua938\ua939\ua93a\ua93b\ua93c\ua93d\ua93e\ua93f\ua940\ua941\ua942\ua943\ua944\ua945\ua946\ua947\ua948\ua949\ua94a\ua94b\ua94c\ua94d\ua94e\ua94f\ua950\ua951\ua952\ua953\ua90a\ua90b\ua90c\ua90d\ua90e\ua90f\ua910\ua911\ua912\ua913\ua914\ua915\ua916\ua917\ua918\ua919\ua91a\ua91b\ua91c\ua91d\ua91e\ua91f\ua920\ua921\ua922\ua923\ua924\ua925\ua926\ua927\ua928\ua929\ua92a\u1000\u1075\u1001\u1076\u1002\u1077\uaa60\ua9e9\u1003\ua9e0\ua9ea\u1004\u105a\u1005\u1078\uaa61\u1006\ua9e1\uaa62\uaa7e\u1007\uaa63\ua9eb\u1079\uaa72\u1008\u105b\ua9e2\uaa64\ua9ec\u1061\uaa7f\u1009\u107a\uaa65\ua9e7\u100a\u100b\uaa66\u100c\uaa67\u100d\uaa68\ua9ed\u100e\uaa69\ua9ee\u100f\u106e\ua9e3\ua9ef\u1010\u1011\u1012\u107b\ua9fb\u1013\uaa6a\ua9fc\u1014\u107c\uaa6b\u105e\u1015\u1016\u107d\u107e\uaa6f\u108e\ua9e8\u1017\u107f\ua9fd\u1018\ua9e4\ua9fe\u1019\u105f\u101a\u103b\u101b\uaa73\uaa7a\u103c\u101c\u1060\u101d\u103d\u1082\u1080\u1050\u1051\u1065\u101e\u103f\uaa6c\u101f\u1081\uaa6d\u103e\uaa6e\uaa71\u1020\ua9fa\u105c\u105d\u106f\u1070\u1066\u1021\u1022\u1023\u1024\u1025\u1026\u1052\u1053\u1054\u1055\u1027\u1028\u1029\u102a\u102c\u102b\u1083\u1072\u109c\u102d\u1071\u102e\u1033\u102f\u1073\u1074\u1030\u1056\u1057\u1058\u1059\u1031\u1084\u1035\u1085\u1032\u109d\u1034\u1062\u1067\u1068\ua9e5\u1086\u1039\u103a\u1063\u1064\u1069\u106a\u106b\u106c\u106d\u1087\u108b\u1088\u108c\u108d\u1089\u108a\u108f\u109a\u109b\uaa7b\uaa7c\uaa7d\uaa74\uaa75\uaa76\u1780\u1781\u1782\u1783\u1784\u1785\u1786\u1787\u1788\u1789\u178a\u178b\u178c\u178d\u178e\u178f\u1790\u1791\u1792\u1793\u1794\u1795\u1796\u1797\u1798\u1799\u179a\u179b\u179c\u179d\u179e\u179f\u17a0\u17a1\u17a2\u17dc\u17a3\u17a4\u17a5\u17a6\u17a7\u17a8\u17a9\u17aa\u17ab\u17ac\u17ad\u17ae\u17af\u17b0\u17b1\u17b2\u17b3\u17b6\u17b7\u17b8\u17b9\u17ba\u17bb\u17bc\u17bd\u17be\u17bf\u17c0\u17c1\u17c2\u17c3\u17c4\u17c5\u17d2\u1950\u1951\u1952\u1953\u1954\u1955\u1956\u1957\u1958\u1959\u195a\u195b\u195c\u195d\u195e\u195f\u1960\u1961\u1962\u1963\u1964\u1965\u1966\u1967\u1968\u1969\u196a\u196b\u196c\u196d\u1970\u1971\u1972\u1973\u1974\u1980\u1981\u1982\u1983\u1984\u1985\u1986\u1987\u1988\u1989\u198a\u198b\u198c\u198d\u198e\u198f\u1990\u1991\u1992\u1993\u1994\u1995\u1996\u1997\u1998\u1999\u199a\u199b\u199c\u19de\u19df\u199d\u199e\u199f\u19a0\u19a1\u19a2\u19a3\u19a4\u19a5\u19a6\u19a7\u19a8\u19a9\u19aa\u19ab\u19b0\u19b1\u19b2\u19b3\u19b4\u19b5\u19b6\u19b7\u19b8\u19b9\u19ba\u19bb\u19bc\u19bd\u19be\u19bf\u19c0\u19c1\u19c2\u19c3\u19c4\u19c5\u19c6\u19c7\u19c8\u19c9\u1a20\u1a21\u1a22\u1a23\u1a24\u1a25\u1a26\u1a58\u1a59\u1a27\u1a28\u1a29\u1a2a\u1a2b\u1a2c\u1a2d\u1a2e\u1a2f\u1a30\u1a31\u1a32\u1a33\u1a34\u1a35\u1a36\u1a37\u1a38\u1a39\u1a3a\u1a3b\u1a5a\u1a5b\u1a3c\u1a3d\u1a3e\u1a3f\u1a40\u1a41\u1a42\u1a43\u1a44\u1a45\u1a46\u1a54\u1a47\u1a48\u1a49\u1a4a\u1a4b\u1a4c\u1a53\u1a6b\u1a55\u1a56\u1a57\u1a5c\u1a5d\u1a5e\u1a4d\u1a4e\u1a4f\u1a50\u1a51\u1a52\u1a61\u1a6c\u1a62\u1a63\u1a64\u1a65\u1a66\u1a67\u1a68\u1a69\u1a6a\u1a6e\u1a6f\u1a73\u1a70\u1a71\u1a72\u1a6d\u1a60\uaa00\uaa01\uaa02\uaa03\uaa04\uaa05\uaa06\uaa07\uaa08\uaa09\uaa0a\uaa0b\uaa0c\uaa0d\uaa0e\uaa0f\uaa10\uaa11\uaa12\uaa13\uaa14\uaa15\uaa16\uaa17\uaa18\uaa19\uaa1a\uaa1b\uaa1c\uaa1d\uaa1e\uaa1f\uaa20\uaa21\uaa22\uaa23\uaa24\uaa25\uaa26\uaa27\uaa28\uaa33\uaa34\uaa35\uaa36\uaa29\uaa2a\uaa2b\uaa2c\uaa2d\uaa2e\uaa2f\uaa30\uaa31\uaa32\uaa40\uaa41\uaa42\uaa43\uaa44\uaa45\uaa46\uaa47\uaa48\uaa49\uaa4a\uaa4b\uaa4c\uaa4d\u1b05\u1b06\u1b07\u1b08\u1b09\u1b0a\u1b0b\u1b0c\u1b0d\u1b0e\u1b0f\u1b10\u1b11\u1b12\u1b13\u1b45\u1b46\u1b14\u1b15\u1b16\u1b17\u1b18\u1b19\u1b1a\u1b1b\u1b1c\u1b1d\u1b1e\u1b1f\u1b20\u1b21\u1b22\u1b47\u1b23\u1b24\u1b25\u1b26\u1b27\u1b48\u1b28\u1b29\u1b2a\u1b2b\u1b2c\u1b2d\u1b2e\u1b2f\u1b49\u1b30\u1b31\u1b32\u1b4a\u1b4b\u1b33\u1b35\u1b36\u1b37\u1b38\u1b39\u1b3a\u1b3b\u1b3c\u1b3d\u1b3e\u1b3f\u1b40\u1b41\u1b42\u1b43\u1b44\ua984\ua985\ua986\ua987\ua988\ua989\ua98a\ua98b\ua98c\ua98d\ua98e\ua98f\ua990\ua991\ua992\ua993\ua994\ua995\ua996\ua997\ua998\ua999\ua99a\ua99b\ua99c\ua99d\ua99e\ua99f\ua9a0\ua9a1\ua9a2\ua9a3\ua9a4\ua9a5\ua9a6\ua9a7\ua9a8\ua9a9\ua9aa\ua9be\ua9ab\ua9ac\ua9bf\ua9ad\ua9ae\ua9af\ua9b0\ua9b1\ua9b2\ua9b4\ua9b5\ua9bc\ua9b6\ua9b7\ua9b8\ua9b9\ua9bd\ua9ba\ua9bb\ua9c0\u1880\u1881\u1882\u1883\u1884\u1885\u1886\u1843\u1820\u1887\u1821\u1844\u185d\u1822\u1845\u185e\u1873\u1888\u185f\u1823\u1846\u1824\u1847\u1861\u1825\u1848\u1826\u1849\u1860\u1827\u1828\u1829\u184a\u1862\u188a\u189b\u182a\u184b\u182b\u184c\u1866\u182c\u184d\u182d\u184e\u1864\u189a\u1865\u182e\u184f\u182f\u1830\u1831\u1867\u189c\u189d\u18a2\u18a4\u18a5\u1832\u1850\u1868\u1833\u1851\u1869\u1834\u1852\u1871\u1878\u185c\u188b\u1835\u1853\u186a\u1877\u1836\u1855\u1872\u1837\u1875\u1838\u1856\u1839\u186b\u1876\u183a\u1857\u1863\u1874\u1889\u183b\u183c\u1854\u186e\u183d\u186f\u1858\u186c\u183e\u1859\u186d\u183f\u1840\u1841\u1842\u185a\u185b\u1870\u188c\u189e\u188d\u188e\u189f\u188f\u1890\u1898\u18a0\u1891\u18a1\u1892\u1893\u18a8\u1894\u18a3\u1895\u1899\u1896\u1897\u18a6\u18a7\u18aa\u18a9\u1c5a\u1c5b\u1c5c\u1c5d\u1c5e\u1c5f\u1c60\u1c61\u1c62\u1c63\u1c64\u1c65\u1c66\u1c67\u1c68\u1c69\u1c6a\u1c6b\u1c6c\u1c6d\u1c6e\u1c6f\u1c70\u1c71\u1c72\u1c73\u1c74\u1c75\u1c76\u1c77\u1c78\u1c79\u1c7a\u1c7b\u1c7c\u1c7d\uab70\u13a0\uab71\u13a1\uab72\u13a2\uab73\u13a3\uab74\u13a4\uab75\u13a5\uab76\u13a6\uab77\u13a7\uab78\u13a8\uab79\u13a9\uab7a\u13aa\uab7b\u13ab\uab7c\u13ac\uab7d\u13ad\uab7e\u13ae\uab7f\u13af\uab80\u13b0\uab81\u13b1\uab82\u13b2\uab83\u13b3\uab84\u13b4\uab85\u13b5\uab86\u13b6\uab87\u13b7\uab88\u13b8\uab89\u13b9\uab8a\u13ba\uab8b\u13bb\uab8c\u13bc\uab8d\u13bd\uab8e\u13be\uab8f\u13bf\uab90\u13c0\uab91\u13c1\uab92\u13c2\uab93\u13c3\uab94\u13c4\uab95\u13c5\uab96\u13c6\uab97\u13c7\uab98\u13c8\uab99\u13c9\uab9a\u13ca\uab9b\u13cb\uab9c\u13cc\uab9d\u13cd\uab9e\u13ce\uab9f\u13cf\uaba0\u13d0\uaba1\u13d1\uaba2\u13d2\uaba3\u13d3\uaba4\u13d4\uaba5\u13d5\uaba6\u13d6\uaba7\u13d7\uaba8\u13d8\uaba9\u13d9\uabaa\u13da\uabab\u13db\uabac\u13dc\uabad\u13dd\uabae\u13de\uabaf\u13df\uabb0\u13e0\uabb1\u13e1\uabb2\u13e2\uabb3\u13e3\uabb4\u13e4\uabb5\u13e5\uabb6\u13e6\uabb7\u13e7\uabb8\u13e8\uabb9\u13e9\uabba\u13ea\uabbb\u13eb\uabbc\u13ec\uabbd\u13ed\uabbe\u13ee\uabbf\u13ef\u13f8\u13f0\u13f9\u13f1\u13fa\u13f2\u13fb\u13f3\u13fc\u13f4\u13fd\u13f5\u1401\u1402\u1403\u1404\u1405\u1406\u1407\u1408\u1409\u140a\u140b\u140c\u140d\u140e\u140f\u1410\u1411\u1412\u1413\u1414\u1415\u1416\u1417\u1418\u1419\u141a\u141b\u141c\u141d\u141e\u141f\u1420\u1421\u1422\u1423\u1424\u1425\u1426\u1427\u1428\u1429\u142a\u142b\u142c\u142d\u142e\u142f\u1430\u1431\u1432\u1433\u1434\u1435\u1436\u1437\u1438\u1439\u143a\u143b\u143c\u143d\u143e\u143f\u1440\u1441\u1442\u1443\u1444\u1445\u1446\u1447\u1448\u1449\u144a\u144b\u144c\u144d\u144e\u144f\u1450\u1451\u1452\u1453\u1454\u1455\u1456\u1457\u1458\u1459\u145a\u145b\u145c\u145d\u145e\u145f\u1460\u1461\u1462\u1463\u1464\u1465\u1466\u1467\u1468\u1469\u146a\u146b\u146c\u146d\u146e\u146f\u1470\u1471\u1472\u1473\u1474\u1475\u1476\u1477\u1478\u1479\u147a\u147b\u147c\u147d\u147e\u147f\u1480\u1481\u1482\u1483\u1484\u1485\u1486\u1487\u1488\u1489\u148a\u148b\u148c\u148d\u148e\u148f\u1490\u1491\u1492\u1493\u1494\u1495\u1496\u1497\u1498\u1499\u149a\u149b\u149c\u149d\u149e\u149f\u14a0\u14a1\u14a2\u14a3\u14a4\u14a5\u14a6\u14a7\u14a8\u14a9\u14aa\u14ab\u14ac\u14ad\u14ae\u14af\u14b0\u14b1\u14b2\u14b3\u14b4\u14b5\u14b6\u14b7\u14b8\u14b9\u14ba\u14bb\u14bc\u14bd\u14be\u14bf\u14c0\u14c1\u14c2\u14c3\u14c4\u14c5\u14c6\u14c7\u14c8\u14c9\u14ca\u14cb\u14cc\u14cd\u14ce\u14cf\u14d0\u14d1\u14d2\u14d3\u14d4\u14d5\u14d6\u14d7\u14d8\u14d9\u14da\u14db\u14dc\u14dd\u14de\u14df\u14e0\u14e1\u14e2\u14e3\u14e4\u14e5\u14e6\u14e7\u14e8\u14e9\u14ea\u14eb\u14ec\u14ed\u14ee\u14ef\u14f0\u14f1\u14f2\u14f3\u14f4\u14f5\u14f6\u14f7\u14f8\u14f9\u14fa\u14fb\u14fc\u14fd\u14fe\u14ff\u1500\u1501\u1502\u1503\u1504\u1505\u1506\u1507\u1508\u1509\u150a\u150b\u150c\u150d\u150e\u150f\u1510\u1511\u1512\u1513\u1514\u1515\u1516\u1517\u1518\u1519\u151a\u151b\u151c\u151d\u151e\u151f\u1520\u1521\u1522\u1523\u1524\u1525\u1526\u1527\u1528\u1529\u152a\u152b\u152c\u152d\u152e\u152f\u1530\u1531\u1532\u1533\u1534\u1535\u1536\u1537\u1538\u1539\u153a\u153b\u153c\u153d\u153e\u153f\u1540\u1541\u1542\u1543\u1544\u1545\u1546\u1547\u1548\u1549\u154a\u154b\u154c\u154d\u154e\u154f\u1550\u1551\u1552\u1553\u1554\u1555\u1556\u1557\u1558\u1559\u155a\u155b\u155c\u155d\u155e\u155f\u1560\u1561\u1562\u1563\u1564\u1565\u1566\u1567\u1568\u1569\u156a\u156b\u156c\u156d\u156e\u156f\u1570\u1571\u1572\u1573\u1574\u1575\u1576\u1577\u1578\u1579\u157a\u157b\u157d\u166f\u157e\u157f\u1580\u1581\u1582\u1583\u1584\u1585\u1586\u1587\u1588\u1589\u158a\u158b\u158c\u158d\u1670\u158e\u158f\u1590\u1591\u1592\u1593\u1594\u1595\u1671\u1672\u1673\u1674\u1675\u1676\u1596\u1597\u1598\u1599\u159a\u159b\u159c\u159d\u159e\u159f\u15a0\u15a1\u15a2\u15a3\u15a4\u15a5\u15a6\u157c\u15a7\u15a8\u15a9\u15aa\u15ab\u15ac\u15ad\u15ae\u15af\u15b0\u15b1\u15b2\u15b3\u15b4\u15b5\u15b6\u15b7\u15b8\u15b9\u15ba\u15bb\u15bc\u15bd\u15be\u15bf\u15c0\u15c1\u15c2\u15c3\u15c4\u15c5\u15c6\u15c7\u15c8\u15c9\u15ca\u15cb\u15cc\u15cd\u15ce\u15cf\u15d0\u15d1\u15d2\u15d3\u15d4\u15d5\u15d6\u15d7\u15d8\u15d9\u15da\u15db\u15dc\u15dd\u15de\u15df\u15e0\u15e1\u15e2\u15e3\u15e4\u15e5\u15e6\u15e7\u15e8\u15e9\u15ea\u15eb\u15ec\u15ed\u15ee\u15ef\u15f0\u15f1\u15f2\u15f3\u15f4\u15f5\u15f6\u15f7\u15f8\u15f9\u15fa\u15fb\u15fc\u15fd\u15fe\u15ff\u1600\u1601\u1602\u1603\u1604\u1605\u1606\u1607\u1608\u1609\u160a\u160b\u160c\u160d\u160e\u160f\u1610\u1611\u1612\u1613\u1614\u1615\u1616\u1617\u1618\u1619\u161a\u161b\u161c\u161d\u161e\u161f\u1620\u1621\u1622\u1623\u1624\u1625\u1626\u1627\u1628\u1629\u162a\u162b\u162c\u162d\u162e\u162f\u1630\u1631\u1632\u1633\u1634\u1635\u1636\u1637\u1638\u1639\u163a\u163b\u163c\u163d\u163e\u163f\u1640\u1641\u1642\u1643\u1644\u1645\u1646\u1647\u1648\u1649\u164a\u164b\u164c\u164d\u164e\u164f\u1650\u1651\u1652\u1653\u1654\u1655\u1656\u1657\u1658\u1659\u165a\u165b\u165c\u165d\u165e\u165f\u1660\u1661\u1662\u1663\u1664\u1665\u1666\u1667\u1668\u1669\u166a\u166b\u166c\u1677\u1678\u1679\u167a\u167b\u167c\u167d\u167e\u167f\u18b0\u18b1\u18b2\u18b3\u18b4\u18b5\u18b6\u18b7\u18b8\u18b9\u18ba\u18bb\u18bc\u18bd\u18be\u18bf\u18c0\u18c1\u18c2\u18c3\u18c4\u18c5\u18c6\u18c7\u18c8\u18c9\u18ca\u18cb\u18cc\u18cd\u18ce\u18cf\u18d0\u18d1\u18d2\u18d3\u18d4\u18d5\u18d6\u18d7\u18d8\u18d9\u18da\u18db\u18dc\u18dd\u18de\u18df\u18e0\u18e1\u18e2\u18e3\u18e4\u18e5\u18e6\u18e7\u18e8\u18e9\u18ea\u18eb\u18ec\u18ed\u18ee\u18ef\u18f0\u18f1\u18f2\u18f3\u18f4\u18f5\u1681\u1682\u1683\u1684\u1685\u1686\u1687\u1688\u1689\u168a\u168b\u168c\u168d\u168e\u168f\u1690\u1691\u1692\u1693\u1694\u1695\u1696\u1697\u1698\u1699\u169a\u16a0\u16a1\u16a2\u16a4\u16a5\u16a6\u16a7\u16f0\u16a8\u16a9\u16ac\u16ad\u16ae\u16f4\u16af\u16b0\u16b1\u16b2\u16b3\u16b4\u16b5\u16b6\u16f1\u16b7\u16b9\u16e9\u16ba\u16bb\u16bc\u16bd\u16be\u16bf\u16c0\u16c1\u16c2\u16f5\u16c3\u16c4\u16c5\u16c6\u16ee\u16c7\u16c8\u16d5\u16c9\u16ca\u16cb\u16ea\u16cc\u16cd\u16ce\u16f2\u16cf\u16d0\u16d1\u16d2\u16d3\u16d4\u16d6\u16f6\u16d7\u16d8\u16d9\u16ef\u16da\u16db\u16dc\u16dd\u16de\u16df\u16f3\u16aa\u16f7\u16ab\u16f8\u16a3\u16e0\u16e3\u16b8\u16e4\u16e1\u16e2\u16e5\u16e6\u16e7\u16e8\ua500\ua501\ua502\ua503\ua504\ua505\ua506\ua507\ua508\ua509\ua50a\ua50b\ua50c\ua613\ua50d\ua50e\ua50f\ua510\ua511\ua512\ua513\ua514\ua515\ua516\ua517\ua518\ua519\ua51a\ua51b\ua51c\ua51d\ua51e\ua614\ua51f\ua520\ua521\ua522\ua523\ua524\ua525\ua526\ua527\ua528\ua529\ua52a\ua52b\ua52c\ua52d\ua52e\ua52f\ua530\ua531\ua532\ua533\ua615\ua534\ua535\ua536\ua537\ua538\ua539\ua53a\ua53b\ua53c\ua53d\ua53e\ua53f\ua540\ua541\ua542\ua543\ua544\ua545\ua546\ua547\ua616\ua548\ua549\ua54a\ua54b\ua54c\ua54d\ua54e\ua54f\ua550\ua551\ua552\ua617\ua553\ua554\ua555\ua556\ua557\ua558\ua610\ua618\ua559\ua55a\ua619\ua55b\ua55c\ua55d\ua55e\ua55f\ua560\ua61a\ua561\ua562\ua563\ua564\ua565\ua566\ua567\ua568\ua569\ua56a\ua611\ua56b\ua56c\ua56d\ua56e\ua62a\ua56f\ua570\ua571\ua572\ua573\ua574\ua575\ua576\ua577\ua578\ua579\ua57a\ua57b\ua57c\ua57d\ua57e\ua57f\ua580\ua581\ua582\ua583\ua584\ua585\ua61b\ua586\ua587\ua612\ua588\ua589\ua58a\ua58b\ua58c\ua58d\ua58e\ua58f\ua590\ua591\ua592\ua593\ua594\ua595\ua596\ua597\ua598\ua599\ua59a\ua59b\ua59c\ua59d\ua59e\ua59f\ua5a0\ua5a1\ua5a2\ua5a3\ua5a4\ua5a5\ua5a6\ua5a7\ua5a8\ua5a9\ua5aa\ua5ab\ua5ac\ua5ad\ua5ae\ua5af\ua5b0\ua5b1\ua5b2\ua5b3\ua5b4\ua61c\ua5b5\ua5b6\ua5b7\ua5b8\ua5b9\ua5ba\ua5bb\ua5bc\ua5bd\ua5be\ua5bf\ua5c0\ua5c1\ua5c2\ua5c3\ua5c4\ua5c5\ua5c6\ua5c7\ua5c8\ua5c9\ua5ca\ua5cb\ua61d\ua5cc\ua5cd\ua5ce\ua5cf\ua5d0\ua5d1\ua62b\ua61e\ua5d2\ua5d3\ua5d4\ua5d5\ua5d6\ua5d7\ua5d8\ua61f\ua5d9\ua5da\ua5db\ua5dc\ua5dd\ua5de\ua5df\ua5e0\ua5e1\ua5e2\ua5e3\ua5e4\ua5e5\ua5e6\ua5e7\ua5e8\ua5e9\ua5ea\ua5eb\ua5ec\ua5ed\ua5ee\ua5ef\ua5f0\ua5f1\ua5f2\ua5f3\ua5f4\ua5f5\ua5f6\ua5f7\ua5f8\ua5f9\ua5fa\ua5fb\ua5fc\ua5fd\ua5fe\ua5ff\ua600\ua601\ua602\ua603\ua604\ua605\ua606\ua607\ua608\ua609\ua60a\ua60b\ua60c\ua6a0\ua6a1\ua6a2\ua6a3\ua6a4\ua6a5\ua6a6\ua6a7\ua6a8\ua6a9\ua6aa\ua6ab\ua6ac\ua6ad\ua6ae\ua6af\ua6b0\ua6b1\ua6b2\ua6b3\ua6b4\ua6b5\ua6b6\ua6b7\ua6b8\ua6b9\ua6ba\ua6bb\ua6bc\ua6bd\ua6be\ua6bf\ua6c0\ua6c1\ua6c2\ua6c3\ua6c4\ua6c5\ua6c6\ua6c7\ua6c8\ua6c9\ua6ca\ua6cb\ua6cc\ua6cd\ua6ce\ua6cf\ua6d0\ua6d1\ua6d2\ua6d3\ua6d4\ua6d5\ua6d6\ua6d7\ua6d8\ua6d9\ua6da\ua6db\ua6dc\ua6dd\ua6de\ua6df\ua6e0\ua6e1\ua6e2\ua6e3\ua6e4\ua6e5\ua6e6\ua6e7\ua6e8\ua6e9\ua6ea\ua6eb\ua6ec\ua6ed\ua6ee\ua6ef\u1100\u3131\u3260\uffa1\u326e\u1101\u3132\uffa2\u1102\u3134\u3261\uffa4\u326f\u1103\u3137\u3262\uffa7\u3270\u1104\u3138\uffa8\u1105\u3139\u3263\uffa9\u3271\u1106\u3141\u3264\uffb1\u3272\u1107\u3142\u3265\uffb2\u3273\u1108\u3143\uffb3\u1109\u3145\u3266\uffb5\u3274\u110a\u3146\uffb6\u110b\u3147\u3267\uffb7\u3275\u327e\u110c\u3148\u3268\uffb8\u3276\u327d\u110d\u3149\uffb9\u110e\u314a\u3269\uffba\u3277\u327c\u110f\u314b\u326a\uffbb\u3278\u1110\u314c\u326b\uffbc\u3279\u1111\u314d\u326c\uffbd\u327a\u1112\u314e\u326d\uffbe\u327b\u1113\u1114\u3165\u1115\u3166\u1116\u1117\u1118\u1119\u111a\u3140\uffb0\u111b\u111c\u316e\u111d\u3171\u111e\u3172\u111f\u1120\u3173\u1121\u3144\uffb4\u1122\u3174\u1123\u3175\u1124\u1125\u1126\u1127\u3176\u1128\u1129\u3177\u112a\u112b\u3178\u112c\u3179\u112d\u317a\u112e\u317b\u112f\u317c\u1130\u1131\u1132\u317d\u1133\u1134\u1135\u1136\u317e\u1137\u1138\u1139\u113a\u113b\u113c\u113d\u113e\u113f\u1140\u317f\u1141\u1142\u1143\u1144\u1145\u1146\u1147\u3180\u1148\u1149\u114a\u114b\u114c\u3181\u114d\u114e\u114f\u1150\u1151\u1152\u1153\u1154\u1155\u1156\u1157\u3184\u1158\u3185\u1159\u3186\u115a\u115b\u115c\u115d\u115e\ua960\ua961\ua962\ua963\ua964\ua965\ua966\ua967\ua968\ua969\ua96a\ua96b\ua96c\ua96d\ua96e\ua96f\ua970\ua971\ua972\ua973\ua974\ua975\ua976\ua977\ua978\ua979\ua97a\ua97b\ua97c\u115f\u1160\u3164\uffa0\u1161\u314f\uffc2\u1162\u3150\uffc3\u1163\u3151\uffc4\u1164\u3152\uffc5\u1165\u3153\uffc6\u1166\u3154\uffc7\u1167\u3155\uffca\u1168\u3156\uffcb\u1169\u3157\uffcc\u116a\u3158\uffcd\u116b\u3159\uffce\u116c\u315a\uffcf\u116d\u315b\uffd2\u116e\u315c\uffd3\u116f\u315d\uffd4\u1170\u315e\uffd5\u1171\u315f\uffd6\u1172\u3160\uffd7\u1173\u3161\uffda\u1174\u3162\uffdb\u1175\u3163\uffdc\u1176\u1177\u1178\u1179\u117a\u117b\u117c\u117d\u117e\u117f\u1180\u1181\u1182\u1183\u1184\u3187\u1185\u3188\u1186\u1187\u1188\u3189\u1189\u118a\u118b\u118c\u118d\u118e\u118f\u1190\u1191\u318a\u1192\u318b\u1193\u1194\u318c\u1195\u1196\u1197\u1198\u1199\u119a\u119b\u119c\u119d\u119e\u318d\u119f\u11a0\u11a1\u318e\u11a2\u11a3\u11a4\u11a5\u11a6\u11a7\ud7b0\ud7b1\ud7b2\ud7b3\ud7b4\ud7b5\ud7b6\ud7b7\ud7b8\ud7b9\ud7ba\ud7bb\ud7bc\ud7bd\ud7be\ud7bf\ud7c0\ud7c1\ud7c2\ud7c3\ud7c4\ud7c5\ud7c6\u11a8\u11a9\u11aa\u3133\uffa3\u11ab\u11ac\u3135\uffa5\u11ad\u3136\uffa6\u11ae\u11af\u11b0\u313a\uffaa\u11b1\u313b\uffab\u11b2\u313c\uffac\u11b3\u313d\uffad\u11b4\u313e\uffae\u11b5\u313f\uffaf\u11b6\u11b7\u11b8\u11b9\u11ba\u11bb\u11bc\u11bd\u11be\u11bf\u11c0\u11c1\u11c2\u11c3\u11c4\u11c5\u11c6\u11c7\u3167\u11c8\u3168\u11c9\u11ca\u11cb\u11cc\u3169\u11cd\u11ce\u316a\u11cf\u11d0\u11d1\u11d2\u11d3\u316b\u11d4\u11d5\u11d6\u11d7\u316c\u11d8\u11d9\u316d\u11da\u11db\u11dc\u11dd\u316f\u11de\u11df\u3170\u11e0\u11e1\u11e2\u11e3\u11e4\u11e5\u11e6\u11e7\u11e8\u11e9\u11ea\u11eb\u11ec\u11ed\u11ee\u11ef\u11f0\u11f1\u3182\u11f2\u3183\u11f3\u11f4\u11f5\u11f6\u11f7\u11f8\u11f9\u11fa\u11fb\u11fc\u11fd\u11fe\u11ff\ud7cb\ud7cc\ud7cd\ud7ce\ud7cf\ud7d0\ud7d1\ud7d2\ud7d3\ud7d4\ud7d5\ud7d6\ud7d7\ud7d8\ud7d9\ud7da\ud7db\ud7dc\ud7dd\ud7de\ud7df\ud7e0\ud7e1\ud7e2\ud7e3\ud7e4\ud7e5\ud7e6\ud7e7\ud7e8\ud7e9\ud7ea\ud7eb\ud7ec\ud7ed\ud7ee\ud7ef\ud7f0\ud7f1\ud7f2\ud7f3\ud7f4\ud7f5\ud7f6\ud7f7\ud7f8\ud7f9\ud7fa\ud7fb\u30a1\uff67\u30a2\uff71\u3041\u3042\u32d0\u3303\u3300\u3301\u3302\u30a3\uff68\u30a4\uff72\u3043\u3044\u32d1\u3304\u3305\u30a5\uff69\u30a6\uff73\u3045\u3046\u32d2\u30f4\u3094\u3306\u30a7\uff6a\u30a8\uff74\u3047\u3048\u32d3\u3308\u3307\u30a9\uff6b\u30aa\uff75\u3049\u304a\u32d4\u330a\u3309\u30f5\u30ab\uff76\u3095\u304b\u32d5\u30ac\u304c\u330e\u330f\u330b\u330c\u330d\u30ad\uff77\u304d\u32d6\u30ae\u304e\u3310\u3311\u3313\u3312\u3314\u3315\u3316\u3317\u31f0\u30af\uff78\u304f\u32d7\u30b0\u3050\u3318\u3319\u331a\u331b\u30f6\u30b1\uff79\u3096\u3051\u32d8\u30b2\u3052\u331c\u30b3\uff7a\u3053\u32d9\u30b4\u3054\u331e\u30ff\u331d\u30b5\uff7b\u3055\u32da\u30b6\u3056\u331f\u3320\u31f1\u30b7\uff7c\u3057\u32db\u30b8\u3058\u3006\u3321\u31f2\u30b9\uff7d\u3059\u32dc\u30ba\u305a\u30bb\uff7e\u305b\u32dd\u30bc\u305c\u3322\u3323\u30bd\uff7f\u305d\u32de\u30be\u305e\u30bf\uff80\u305f\u32df\u30c0\u3060\u3324\u30c1\uff81\u3061\u32e0\u30c2\u3062\u30c3\uff6f\u30c4\uff82\u3063\u3064\u32e1\u30c5\u3065\u30c6\uff83\u3066\u32e2\u30c7\u3067\u3325\u31f3\u30c8\uff84\u3068\u32e3\u30c9\u3069\u3326\u3327\u30ca\uff85\u306a\u32e4\u3328\u30cb\uff86\u306b\u32e5\u31f4\u30cc\uff87\u306c\u32e6\u30cd\uff88\u306d\u32e7\u30ce\uff89\u306e\u32e8\u3329\u31f5\u30cf\uff8a\u306f\u32e9\u30d0\u3070\u30d1\u3071\u332b\u332c\u332d\u332a\u31f6\u30d2\uff8b\u3072\u32ea\u30d3\u3073\u30d4\u3074\u332e\u332f\u3330\u3331\u31f7\u30d5\uff8c\u3075\u32eb\u30d6\u3076\u30d7\u3077\u3334\u3332\u3333\u3335\u31f8\u30d8\uff8d\u3078\u32ec\u30d9\u3079\u30da\u307a\u333b\u333c\u3337\u3338\u333a\u3336\u3339\u31f9\u30db\uff8e\u307b\u32ed\u30dc\u307c\u30dd\u307d\u333d\u333e\u3340\u3341\u3342\u333f\u30de\uff8f\u307e\u32ee\u3343\u3344\u303c\u3345\u3346\u3347\u30df\uff90\u307f\u32ef\u3348\u3349\u334a\u31fa\u30e0\uff91\u3080\u32f0\u30e1\uff92\u3081\u32f1\u334d\u334b\u334c\u30e2\uff93\u3082\u32f2\u30e3\uff6c\u30e4\uff94\u3083\u3084\u32f3\u334e\u334f\u30e5\uff6d\u30e6\uff95\u3085\u3086\u32f4\u3350\u30e7\uff6e\u30e8\uff96\u3087\u3088\u32f5\u309f\u31fb\u30e9\uff97\u3089\u32f6\u31fc\u30ea\uff98\u308a\u32f7\u3351\u3352\u31fd\u30eb\uff99\u308b\u32f8\u3354\u3353\u31fe\u30ec\uff9a\u308c\u32f9\u3355\u3356\u31ff\u30ed\uff9b\u308d\u32fa\u30ee\u30ef\uff9c\u308e\u308f\u32fb\u30f7\u3357\u30f0\u3090\u32fc\u30f8\u30f1\u3091\u32fd\u30f9\u30f2\uff66\u3092\u32fe\u30fa\u30f3\uff9d\u3093\u3105\u31a0\u3106\u31b4\u3107\u31ac\u3108\u312a\u3109\u310a\u31b5\u310b\u312f\u310c\u310d\u31bb\u31a3\u310e\u31b6\u312b\u31ad\u310f\u31b7\u3110\u31a2\u3111\u3112\u312c\u31bc\u31bd\u3113\u3114\u3115\u3116\u3117\u31a1\u3118\u3119\u31b8\u31b9\u31ba\u311a\u31a9\u311b\u31a7\u31a6\u311c\u312e\u311d\u31a4\u31a5\u311e\u31ae\u311f\u3120\u31af\u3121\u3122\u3123\u3124\u31b2\u3125\u31b0\u31b1\u3126\u3127\u31aa\u31b3\u3128\u31ab\u31a8\u3129\u312d\u31be\u31bf\ua000\ua001\ua002\ua003\ua004\ua005\ua006\ua007\ua008\ua009\ua00a\ua00b\ua00c\ua00d\ua00e\ua00f\ua010\ua011\ua012\ua013\ua014\ua015\ua016\ua017\ua018\ua019\ua01a\ua01b\ua01c\ua01d\ua01e\ua01f\ua020\ua021\ua022\ua023\ua024\ua025\ua026\ua027\ua028\ua029\ua02a\ua02b\ua02c\ua02d\ua02e\ua02f\ua030\ua031\ua032\ua033\ua034\ua035\ua036\ua037\ua038\ua039\ua03a\ua03b\ua03c\ua03d\ua03e\ua03f\ua040\ua041\ua042\ua043\ua044\ua045\ua046\ua047\ua048\ua049\ua04a\ua04b\ua04c\ua04d\ua04e\ua04f\ua050\ua051\ua052\ua053\ua054\ua055\ua056\ua057\ua058\ua059\ua05a\ua05b\ua05c\ua05d\ua05e\ua05f\ua060\ua061\ua062\ua063\ua064\ua065\ua066\ua067\ua068\ua069\ua06a\ua06b\ua06c\ua06d\ua06e\ua06f\ua070\ua071\ua072\ua073\ua074\ua075\ua076\ua077\ua078\ua079\ua07a\ua07b\ua07c\ua07d\ua07e\ua07f\ua080\ua081\ua082\ua083\ua084\ua085\ua086\ua087\ua088\ua089\ua08a\ua08b\ua08c\ua08d\ua08e\ua08f\ua090\ua091\ua092\ua093\ua094\ua095\ua096\ua097\ua098\ua099\ua09a\ua09b\ua09c\ua09d\ua09e\ua09f\ua0a0\ua0a1\ua0a2\ua0a3\ua0a4\ua0a5\ua0a6\ua0a7\ua0a8\ua0a9\ua0aa\ua0ab\ua0ac\ua0ad\ua0ae\ua0af\ua0b0\ua0b1\ua0b2\ua0b3\ua0b4\ua0b5\ua0b6\ua0b7\ua0b8\ua0b9\ua0ba\ua0bb\ua0bc\ua0bd\ua0be\ua0bf\ua0c0\ua0c1\ua0c2\ua0c3\ua0c4\ua0c5\ua0c6\ua0c7\ua0c8\ua0c9\ua0ca\ua0cb\ua0cc\ua0cd\ua0ce\ua0cf\ua0d0\ua0d1\ua0d2\ua0d3\ua0d4\ua0d5\ua0d6\ua0d7\ua0d8\ua0d9\ua0da\ua0db\ua0dc\ua0dd\ua0de\ua0df\ua0e0\ua0e1\ua0e2\ua0e3\ua0e4\ua0e5\ua0e6\ua0e7\ua0e8\ua0e9\ua0ea\ua0eb\ua0ec\ua0ed\ua0ee\ua0ef\ua0f0\ua0f1\ua0f2\ua0f3\ua0f4\ua0f5\ua0f6\ua0f7\ua0f8\ua0f9\ua0fa\ua0fb\ua0fc\ua0fd\ua0fe\ua0ff\ua100\ua101\ua102\ua103\ua104\ua105\ua106\ua107\ua108\ua109\ua10a\ua10b\ua10c\ua10d\ua10e\ua10f\ua110\ua111\ua112\ua113\ua114\ua115\ua116\ua117\ua118\ua119\ua11a\ua11b\ua11c\ua11d\ua11e\ua11f\ua120\ua121\ua122\ua123\ua124\ua125\ua126\ua127\ua128\ua129\ua12a\ua12b\ua12c\ua12d\ua12e\ua12f\ua130\ua131\ua132\ua133\ua134\ua135\ua136\ua137\ua138\ua139\ua13a\ua13b\ua13c\ua13d\ua13e\ua13f\ua140\ua141\ua142\ua143\ua144\ua145\ua146\ua147\ua148\ua149\ua14a\ua14b\ua14c\ua14d\ua14e\ua14f\ua150\ua151\ua152\ua153\ua154\ua155\ua156\ua157\ua158\ua159\ua15a\ua15b\ua15c\ua15d\ua15e\ua15f\ua160\ua161\ua162\ua163\ua164\ua165\ua166\ua167\ua168\ua169\ua16a\ua16b\ua16c\ua16d\ua16e\ua16f\ua170\ua171\ua172\ua173\ua174\ua175\ua176\ua177\ua178\ua179\ua17a\ua17b\ua17c\ua17d\ua17e\ua17f\ua180\ua181\ua182\ua183\ua184\ua185\ua186\ua187\ua188\ua189\ua18a\ua18b\ua18c\ua18d\ua18e\ua18f\ua190\ua191\ua192\ua193\ua194\ua195\ua196\ua197\ua198\ua199\ua19a\ua19b\ua19c\ua19d\ua19e\ua19f\ua1a0\ua1a1\ua1a2\ua1a3\ua1a4\ua1a5\ua1a6\ua1a7\ua1a8\ua1a9\ua1aa\ua1ab\ua1ac\ua1ad\ua1ae\ua1af\ua1b0\ua1b1\ua1b2\ua1b3\ua1b4\ua1b5\ua1b6\ua1b7\ua1b8\ua1b9\ua1ba\ua1bb\ua1bc\ua1bd\ua1be\ua1bf\ua1c0\ua1c1\ua1c2\ua1c3\ua1c4\ua1c5\ua1c6\ua1c7\ua1c8\ua1c9\ua1ca\ua1cb\ua1cc\ua1cd\ua1ce\ua1cf\ua1d0\ua1d1\ua1d2\ua1d3\ua1d4\ua1d5\ua1d6\ua1d7\ua1d8\ua1d9\ua1da\ua1db\ua1dc\ua1dd\ua1de\ua1df\ua1e0\ua1e1\ua1e2\ua1e3\ua1e4\ua1e5\ua1e6\ua1e7\ua1e8\ua1e9\ua1ea\ua1eb\ua1ec\ua1ed\ua1ee\ua1ef\ua1f0\ua1f1\ua1f2\ua1f3\ua1f4\ua1f5\ua1f6\ua1f7\ua1f8\ua1f9\ua1fa\ua1fb\ua1fc\ua1fd\ua1fe\ua1ff\ua200\ua201\ua202\ua203\ua204\ua205\ua206\ua207\ua208\ua209\ua20a\ua20b\ua20c\ua20d\ua20e\ua20f\ua210\ua211\ua212\ua213\ua214\ua215\ua216\ua217\ua218\ua219\ua21a\ua21b\ua21c\ua21d\ua21e\ua21f\ua220\ua221\ua222\ua223\ua224\ua225\ua226\ua227\ua228\ua229\ua22a\ua22b\ua22c\ua22d\ua22e\ua22f\ua230\ua231\ua232\ua233\ua234\ua235\ua236\ua237\ua238\ua239\ua23a\ua23b\ua23c\ua23d\ua23e\ua23f\ua240\ua241\ua242\ua243\ua244\ua245\ua246\ua247\ua248\ua249\ua24a\ua24b\ua24c\ua24d\ua24e\ua24f\ua250\ua251\ua252\ua253\ua254\ua255\ua256\ua257\ua258\ua259\ua25a\ua25b\ua25c\ua25d\ua25e\ua25f\ua260\ua261\ua262\ua263\ua264\ua265\ua266\ua267\ua268\ua269\ua26a\ua26b\ua26c\ua26d\ua26e\ua26f\ua270\ua271\ua272\ua273\ua274\ua275\ua276\ua277\ua278\ua279\ua27a\ua27b\ua27c\ua27d\ua27e\ua27f\ua280\ua281\ua282\ua283\ua284\ua285\ua286\ua287\ua288\ua289\ua28a\ua28b\ua28c\ua28d\ua28e\ua28f\ua290\ua291\ua292\ua293\ua294\ua295\ua296\ua297\ua298\ua299\ua29a\ua29b\ua29c\ua29d\ua29e\ua29f\ua2a0\ua2a1\ua2a2\ua2a3\ua2a4\ua2a5\ua2a6\ua2a7\ua2a8\ua2a9\ua2aa\ua2ab\ua2ac\ua2ad\ua2ae\ua2af\ua2b0\ua2b1\ua2b2\ua2b3\ua2b4\ua2b5\ua2b6\ua2b7\ua2b8\ua2b9\ua2ba\ua2bb\ua2bc\ua2bd\ua2be\ua2bf\ua2c0\ua2c1\ua2c2\ua2c3\ua2c4\ua2c5\ua2c6\ua2c7\ua2c8\ua2c9\ua2ca\ua2cb\ua2cc\ua2cd\ua2ce\ua2cf\ua2d0\ua2d1\ua2d2\ua2d3\ua2d4\ua2d5\ua2d6\ua2d7\ua2d8\ua2d9\ua2da\ua2db\ua2dc\ua2dd\ua2de\ua2df\ua2e0\ua2e1\ua2e2\ua2e3\ua2e4\ua2e5\ua2e6\ua2e7\ua2e8\ua2e9\ua2ea\ua2eb\ua2ec\ua2ed\ua2ee\ua2ef\ua2f0\ua2f1\ua2f2\ua2f3\ua2f4\ua2f5\ua2f6\ua2f7\ua2f8\ua2f9\ua2fa\ua2fb\ua2fc\ua2fd\ua2fe\ua2ff\ua300\ua301\ua302\ua303\ua304\ua305\ua306\ua307\ua308\ua309\ua30a\ua30b\ua30c\ua30d\ua30e\ua30f\ua310\ua311\ua312\ua313\ua314\ua315\ua316\ua317\ua318\ua319\ua31a\ua31b\ua31c\ua31d\ua31e\ua31f\ua320\ua321\ua322\ua323\ua324\ua325\ua326\ua327\ua328\ua329\ua32a\ua32b\ua32c\ua32d\ua32e\ua32f\ua330\ua331\ua332\ua333\ua334\ua335\ua336\ua337\ua338\ua339\ua33a\ua33b\ua33c\ua33d\ua33e\ua33f\ua340\ua341\ua342\ua343\ua344\ua345\ua346\ua347\ua348\ua349\ua34a\ua34b\ua34c\ua34d\ua34e\ua34f\ua350\ua351\ua352\ua353\ua354\ua355\ua356\ua357\ua358\ua359\ua35a\ua35b\ua35c\ua35d\ua35e\ua35f\ua360\ua361\ua362\ua363\ua364\ua365\ua366\ua367\ua368\ua369\ua36a\ua36b\ua36c\ua36d\ua36e\ua36f\ua370\ua371\ua372\ua373\ua374\ua375\ua376\ua377\ua378\ua379\ua37a\ua37b\ua37c\ua37d\ua37e\ua37f\ua380\ua381\ua382\ua383\ua384\ua385\ua386\ua387\ua388\ua389\ua38a\ua38b\ua38c\ua38d\ua38e\ua38f\ua390\ua391\ua392\ua393\ua394\ua395\ua396\ua397\ua398\ua399\ua39a\ua39b\ua39c\ua39d\ua39e\ua39f\ua3a0\ua3a1\ua3a2\ua3a3\ua3a4\ua3a5\ua3a6\ua3a7\ua3a8\ua3a9\ua3aa\ua3ab\ua3ac\ua3ad\ua3ae\ua3af\ua3b0\ua3b1\ua3b2\ua3b3\ua3b4\ua3b5\ua3b6\ua3b7\ua3b8\ua3b9\ua3ba\ua3bb\ua3bc\ua3bd\ua3be\ua3bf\ua3c0\ua3c1\ua3c2\ua3c3\ua3c4\ua3c5\ua3c6\ua3c7\ua3c8\ua3c9\ua3ca\ua3cb\ua3cc\ua3cd\ua3ce\ua3cf\ua3d0\ua3d1\ua3d2\ua3d3\ua3d4\ua3d5\ua3d6\ua3d7\ua3d8\ua3d9\ua3da\ua3db\ua3dc\ua3dd\ua3de\ua3df\ua3e0\ua3e1\ua3e2\ua3e3\ua3e4\ua3e5\ua3e6\ua3e7\ua3e8\ua3e9\ua3ea\ua3eb\ua3ec\ua3ed\ua3ee\ua3ef\ua3f0\ua3f1\ua3f2\ua3f3\ua3f4\ua3f5\ua3f6\ua3f7\ua3f8\ua3f9\ua3fa\ua3fb\ua3fc\ua3fd\ua3fe\ua3ff\ua400\ua401\ua402\ua403\ua404\ua405\ua406\ua407\ua408\ua409\ua40a\ua40b\ua40c\ua40d\ua40e\ua40f\ua410\ua411\ua412\ua413\ua414\ua415\ua416\ua417\ua418\ua419\ua41a\ua41b\ua41c\ua41d\ua41e\ua41f\ua420\ua421\ua422\ua423\ua424\ua425\ua426\ua427\ua428\ua429\ua42a\ua42b\ua42c\ua42d\ua42e\ua42f\ua430\ua431\ua432\ua433\ua434\ua435\ua436\ua437\ua438\ua439\ua43a\ua43b\ua43c\ua43d\ua43e\ua43f\ua440\ua441\ua442\ua443\ua444\ua445\ua446\ua447\ua448\ua449\ua44a\ua44b\ua44c\ua44d\ua44e\ua44f\ua450\ua451\ua452\ua453\ua454\ua455\ua456\ua457\ua458\ua459\ua45a\ua45b\ua45c\ua45d\ua45e\ua45f\ua460\ua461\ua462\ua463\ua464\ua465\ua466\ua467\ua468\ua469\ua46a\ua46b\ua46c\ua46d\ua46e\ua46f\ua470\ua471\ua472\ua473\ua474\ua475\ua476\ua477\ua478\ua479\ua47a\ua47b\ua47c\ua47d\ua47e\ua47f\ua480\ua481\ua482\ua483\ua484\ua485\ua486\ua487\ua488\ua489\ua48a\ua48b\ua48c\ua4f8\ua4f9\ua4fa\ua4fb\ua4fd\ua4fc\ua4d0\ua4d1\ua4d2\ua4d3\ua4d4\ua4d5\ua4d6\ua4d7\ua4d8\ua4d9\ua4da\ua4db\ua4dc\ua4dd\ua4de\ua4df\ua4e0\ua4e1\ua4e2\ua4e3\ua4e4\ua4e5\ua4e6\ua4e7\ua4e8\ua4e9\ua4eb\ua4ed\ua4ea\ua4ec\ua4ee\ua4ef\ua4f0\ua4f1\ua4f2\ua4f3\ua4f4\ua4f5\ua4f6\ua4f7\u4e00\u4e01\u4e02\u4e03\u4e04\u4e05\u4e06\u4e07\u4e08\u4e09\u4e0a\u4e0b\u4e0c\u4e90\u5344\u4e0d\u4e0e\u4e0f\u4e10\u4e11\u4e12\u4e13\u4e17\u4e14\u4e15\u4e16\u4e18\u4e19\u4e1a\u4e1b\u4e1c\u4e1d\u3400\u4e1e\u4e1f\u4e20\u4e21\u4e22\u3401\u3402\u4e23\u4e24\u4e25\u4e3d\u9fd6\u4e26\u4e27\u9fd7\u4db6\u4e28\u4e29\u4e2a\u4e2b\u3403\u3404\u4e2d\u4e2e\u4e2f\u4e30\u4e31\u4e32\u4e33\u4e34\u4e35\u4e36\u4e37\u4e38\u4e49\u4e39\u4e3a\u4e3b\u4e3c\u4e3e\u4e3f\u4e40\u4e41\u4e42\u4e43\u4e44\u3405\u4e45\u4e46\u4e47\u4e48\u4e4a\u4e4b\u4e4c\u5c39\u4e4d\u4e4e\u4e4f\u4e50\u4e51\u4e52\u4e53\u4e54\u3406\u4e55\u4e56\u4e57\u4e58\u4e59\u4e5a\u4e5b\u4e5c\u4e5d\u9fb4\u4e5e\u4e5f\u4e60\u3407\u3408\u3409\u4e63\u4e64\u4e65\u4e66\u340a\u340b\u4e67\u340c\u340d\u340e\u340f\u4e68\u4e69\u4e6a\u4e6b\u4e6c\u4e6d\u4e6e\u4e6f\u4e70\u3410\u3411\u3412\u3413\u3414\u3415\u4e71\u4e72\u3416\u3417\u3418\u4e73\u4e74\u4e75\u4e76\u4e77\u4e78\u3419\u341a\u341b\u4e79\u4e7a\u4e7b\u4e7c\u341c\u341d\u341e\u341f\u3420\u4e7d\u4e7e\u4e7f\u4e80\u3421\u3422\u3423\u4e81\u3424\u4e82\u4e83\u4e84\u3425\u3426\u4e85\u4e86\u4e87\u4e88\u3427\u4e89\u4e8a\u4e8b\u3428\u4e8c\u4e8d\u4e8e\u4e8f\u4e91\u4e92\u4e93\u4e94\u4e95\u4e96\u4e97\u4e98\u4e99\u4e9a\u4e9b\u4e9c\u4e9d\u4e9e\u4e9f\u3429\u4ea0\u4ea1\u4ea2\u4ea3\u4ea4\u4ea5\u4ea6\u4ea7\u342a\u342b\u4ea8\u4ea9\u4eaa\u342c\u4eab\u4eac\u342d\u4ead\u4eae\u4eaf\u4eb0\u4eb1\u4eb2\u4eb3\u4eb4\u4eb5\u4eb6\u4eb7\u342e\u4eb8\u342f\u4eb9\u4eba\u4ebb\u4ebc\u4ebd\u4ebe\u4ebf\u4ec0\u4ec1\u4ec2\u4ec3\u4ec4\u4ec5\u4ec6\u4ec7\u4ec8\u4ec9\u4eca\u4ecb\u4ecc\u4ecd\u4ece\u4ecf\u4ed0\u4ed1\u4ed2\u4ed3\u4ed4\u4ed5\u4ed6\u4ed7\u4ed8\u4ed9\u4eda\u4edb\u4edc\u4edd\u4ede\u4edf\u4ee0\u4ee1\u4ee2\u4ee3\u4ee4\u4ee5\u4ee6\u4ee7\u4ee8\u4ee9\u4eea\u4eeb\u4eec\u4eed\u3430\u3431\u3432\u3433\u3434\u3435\u3436\u3437\u4eee\u4eef\u4ef0\u4ef1\u4ef2\u4ef3\u4ef4\u4ef5\u4ef6\u4ef7\u4ef8\u4ef9\u4efa\u4efb\u4efc\u4efd\u4efe\u4eff\u4f00\u4f01\u4f02\u4f03\u4f04\u4f05\u4f06\u4f07\u4f08\u4f09\u4f0a\u4f0b\u4f0c\u4f0d\u4f0e\u4f0f\u4f10\u4f11\u4f12\u4f13\u4f14\u4f15\u4f16\u4f17\u4f18\u4f19\u4f1a\u4f1b\u4f1c\u4f1d\u4f1e\u4f1f\u4f20\u4f21\u4f22\u4f23\u4f24\u4f25\u4f26\u4f27\u4f28\u4f29\u4f2a\u4f2b\u4f2c\u4f64\u3438\u3439\u343a\u343b\u343c\u343d\u343e\u343f\u3440\u4f2d\u4f2e\u4f2f\u4f30\u4f31\u4f32\u4f33\u4f34\u4f35\u4f36\u4f37\u4f38\u4f39\u4f3a\u4f3b\u4f3c\u4f3d\u4f3e\u4f3f\u4f40\u4f41\u4f42\u4f43\u4f44\u4f45\u4f46\u4f47\u4f48\u4f49\u4f4a\u4f4b\u4f4c\u4f4d\u4f4e\u4f4f\u4f50\u4f51\u4f52\u4f53\u4f54\u4f55\u4f56\u4f57\u4f58\u4f59\u4f5a\u4f5b\u4f5c\u4f5d\u4f5e\u4f5f\u4f60\u4f61\u4f62\u4f63\u4f65\u4f66\u4f67\u4f68\u3441\u3442\u3443\u3444\u3445\u3446\u3447\u3448\u4f69\u4f6a\u4f6b\u4f6c\u4f6d\u4f6e\u4f6f\u4f70\u4f71\u4f72\u4f73\u4f74\u4f75\u4f76\u4f77\u4f78\u4f79\u4f7a\u4f7b\u4f7c\u4f7d\u4f7e\u4f7f\u4f80\u4f81\u4f82\u4f83\u4f84\u4f85\u4f86\u4f87\u4f88\u4f89\u4f8a\u4f8b\u4f8c\u4f8d\u4f8e\u4f8f\u4f90\u4f91\u4f92\u4f93\u4f94\u4f95\u4f96\u4f97\u4f98\u4f99\u4f9a\u4f9b\u4f9c\u4f9d\u4f9e\u4f9f\u4fa0\u4fa1\u4fa2\u4fa3\u4fa4\u4fa5\u4fa6\u4fa7\u4fa8\u4fa9\u4faa\u4fab\u4fac\u4fad\u9fc7\u3449\u344a\u344b\u344c\u344d\u344e\u344f\u3450\u3451\u3452\u3453\u3454\u3455\u3456\u4fae\u4faf\u4fb0\u4fb1\u4fb2\u4fb3\u4fb4\u4fb5\u4fb6\u4fb7\u4fb8\u4fb9\u4fba\u4fbb\u4fbc\u4fbd\u4fbe\u4fbf\u4fc0\u4fc1\u4fc2\u4fc3\u4fc4\u4fc5\u4fc6\u4fc7\u4fc8\u4fc9\u4fca\u4fcb\u4fcc\u4fcd\u4fce\u4fcf\u4fd0\u4fd1\u4fd2\u4fd3\u4fd4\u4fd5\u4fd6\u4fd7\u4fd8\u4fd9\u4fda\u4fdb\u4fdc\u4fdd\u4fde\u4fdf\u4fe0\u4fe1\u4fe2\u4fe3\u4fe4\u4fe5\u4fe6\u4fe7\u4fe8\u4fe9\u4fea\u4feb\u4fec\u4fed\u3457\u3458\u3459\u345a\u345b\u345c\u345d\u345e\u345f\u3460\u3461\u3462\u4fee\u4fef\u4ff0\u4ff1\u4ff2\u4ff3\u4ff4\u4ff5\u4ff6\u4ff7\u4ff8\u4ff9\u4ffa\u4ffb\u4ffc\u4ffd\u4ffe\u4fff\u5000\u5001\u5002\u5003\u5004\u5005\u5006\u5007\u5008\u5009\u500a\u500b\u500c\u500d\u500e\u500f\u5010\u5011\u5012\u5013\u5014\u5015\u5016\u5017\u5018\u5019\u501a\u501b\u501c\u501d\u501e\u501f\u5020\u5021\u5022\u5023\u5024\u5025\u5026\u5027\u5028\u5029\u502a\u502b\u502c\u502d\u502e\u502f\u5030\u5031\u5032\u5033\u5034\u5035\u5036\u5037\u5038\u5039\u503a\u503b\u503c\u503d\u503e\u503f\u3463\u3465\u3466\u3467\u3468\u3469\u346a\u346b\u346c\u346d\u5040\u5041\u5042\u5043\u5044\u5045\u5046\u5047\u5048\u5049\u504a\u504b\u504c\u504d\u504e\u504f\u5050\u5051\u5052\u5053\u5054\u5055\u5056\u5057\u5058\u5059\u505a\u505b\u505c\u505d\u505e\u505f\u5060\u5061\u5062\u5063\u5064\u5065\u5066\u5067\u5068\u5069\u506a\u506b\u506c\u506d\u506e\u506f\u5070\u5071\u5072\u5073\u5074\u5075\u5076\u5077\u5078\u5079\u507a\u507b\u507c\u507d\u507e\u507f\u3464\u346e\u346f\u3470\u3471\u3472\u5080\u5081\u5082\u5083\u5084\u5085\u5086\u5087\u5088\u5089\u508a\u508b\u508c\u508d\u508e\u508f\u5090\u5091\u5092\u5093\u5094\u5095\u5096\u5097\u5098\u5099\u509a\u509b\u509c\u509d\u509e\u509f\u50a0\u50a1\u50a2\u50a3\u50a4\u50a5\u50a6\u50a7\u50a8\u50a9\u9fd8\u3473\u3474\u3475\u3476\u3477\u3478\u3479\u347a\u50aa\u50ab\u50ac\u50ad\u50ae\u50af\u50b0\u50b1\u50b2\u50b3\u50b4\u50b5\u50b6\u50b7\u50b8\u50b9\u50ba\u50bb\u50bc\u50bd\u50be\u50bf\u50c0\u50c1\u50c2\u50c3\u50c4\u50c5\u50c6\u50c7\u50c8\u50c9\u50ca\u50cb\u50cc\u50cd\u9fd9\u347b\u347c\u347d\u347e\u347f\u3480\u3481\u50ce\u50cf\u50d0\u50d1\u50d2\u50d3\u50d4\u50d5\u50d6\u50d7\u50d8\u50d9\u50da\u50db\u50dc\u50dd\u50de\u50df\u50e0\u50e1\u50e2\u50e3\u50e4\u50e5\u50e6\u50e7\u50e8\u50e9\u50ea\u50eb\u50ec\u50ed\u50ee\u50ef\u50f0\u50f1\u50f3\u50f4\u50f7\u3482\u3483\u3484\u3485\u3486\u3487\u3488\u3489\u348a\u348b\u348c\u348d\u348e\u348f\u3490\u50f2\u50f5\u50f6\u50f8\u50f9\u50fa\u50fb\u50fc\u50fd\u50fe\u50ff\u5100\u5101\u5102\u5103\u5104\u5105\u5106\u5107\u5108\u5109\u510a\u510b\u510c\u510d\u510e\u510f\u3491\u3492\u3493\u3494\u3495\u3496\u3497\u3498\u5110\u5111\u5112\u5113\u5114\u5115\u5116\u5117\u5118\u5119\u511a\u511b\u511c\u511d\u511e\u512b\u9fda\u3499\u349a\u349b\u349c\u511f\u5120\u5121\u5122\u5123\u5124\u5125\u5126\u5127\u5128\u5129\u512a\u512c\u349d\u349e\u512d\u512e\u512f\u5130\u5131\u5132\u349f\u34a0\u5133\u5134\u5135\u34a1\u34a2\u34a3\u5136\u34a4\u34a5\u34a6\u5137\u5138\u5139\u513a\u34a7\u34a8\u513b\u513c\u513d\u34a9\u513e\u34aa\u513f\u5140\u5141\u5142\u5143\u5144\u5145\u5146\u5147\u5148\u5149\u514a\u34ab\u514b\u514c\u514d\u514e\u514f\u5150\u5151\u5152\u5153\u5154\u5155\u5156\u34ac\u5157\u5158\u5159\u515a\u515b\u34ad\u515c\u515d\u515e\u34ae\u515f\u5160\u5161\u5162\u5163\u34af\u5164\u5165\u5166\u5167\u34b0\u34b1\u5168\u6c3d\u34b2\u34b3\u34b4\u5169\u516a\u516b\u516c\u516d\u516e\u516f\u5170\u5171\u5172\u5173\u5174\u9fb9\u5175\u34b5\u34b6\u34b7\u5176\u5177\u5178\u5179\u517b\u34b8\u517a\u517c\u517d\u517e\u517f\u5180\u5181\u34b9\u5182\u5183\u5184\u5185\u5186\u5187\u5188\u5189\u518a\u518b\u518c\u518d\u518e\u518f\u5190\u34ba\u5191\u5192\u5193\u5194\u5195\u34bb\u34bc\u6700\u34bd\u34be\u34bf\u5196\u5197\u5198\u34c0\u34c1\u5199\u519a\u519b\u519c\u519d\u519e\u519f\u51a0\u34c2\u51a1\u51a2\u51a3\u51a4\u51a5\u51a6\u51a7\u51a8\u34c3\u51a9\u34c4\u51aa\u51ab\u34c5\u51ac\u51ad\u51ae\u51af\u51b0\u51b1\u51b2\u51b3\u51b4\u34c6\u34c7\u51b5\u51b6\u51b7\u51b8\u51b9\u51ba\u51bb\u9fd1\u34c8\u51bc\u51bd\u51be\u51bf\u51c0\u34c9\u34ca\u34cb\u34cc\u34cd\u51c1\u51c2\u51c3\u34ce\u34cf\u51c4\u51c5\u51c6\u51c7\u51c8\u51c9\u51ca\u51cb\u51cc\u51cd\u51ce\u34d0\u34d1\u34d2\u51cf\u51d0\u51d1\u34d3\u51d2\u51d3\u51d4\u51d5\u51d6\u34d4\u34d5\u51d7\u34d6\u51d8\u34d7\u51d9\u51da\u51db\u51dc\u51dd\u51de\u51df\u9fdb\u51e0\u51e1\u51e2\u51e3\u51e4\u51e5\u51e6\u51e7\u51e8\u51e9\u51ea\u51eb\u51ec\u51ed\u51ee\u51ef\u51f0\u34d8\u51f1\u51f2\u51f3\u51f4\u51f5\u51f6\u51f7\u51f8\u51f9\u51fa\u51fb\u51fc\u34d9\u51fd\u51fe\u51ff\u5200\u5201\u5202\u5203\u5204\u5205\u5206\u5207\u5208\u5209\u520a\u520b\u520c\u520d\u34da\u34db\u34dc\u520e\u520f\u5210\u5211\u5212\u5213\u5214\u5215\u5216\u5217\u5218\u5219\u521a\u521b\u34dd\u34de\u521c\u521d\u521e\u521f\u5220\u5221\u5222\u5223\u5224\u5225\u5226\u5227\u5228\u5229\u522a\u522b\u522c\u522d\u34df\u34e0\u522e\u522f\u5230\u5231\u5232\u5233\u5234\u5235\u5236\u5237\u5238\u5239\u523a\u523b\u523c\u523d\u523e\u523f\u5240\u5241\u5242\u34e1\u34e2\u34e3\u34e4\u34e5\u34e6\u5243\u5244\u5245\u5246\u5247\u5248\u5249\u524a\u524b\u524c\u524d\u524e\u524f\u5250\u5251\u34e7\u34e8\u34e9\u34ea\u34eb\u5252\u5253\u5254\u5255\u5256\u5257\u5258\u5259\u525a\u525b\u525c\u525d\u525e\u525f\u5260\u5261\u5262\u5263\u5264\u5265\u5266\u5267\u34ec\u34ed\u34ee\u34ef\u34f0\u5268\u526a\u526b\u526c\u526d\u526e\u526f\u5270\u5271\u5276\u34f1\u34f2\u34f3\u34f4\u34f5\u34f6\u5269\u5272\u5273\u5274\u5275\u34f7\u34f8\u34f9\u34fa\u34fb\u5277\u5278\u5279\u527a\u527b\u527c\u527d\u527e\u527f\u34fc\u34fd\u5280\u5281\u5282\u5283\u5284\u34fe\u34ff\u3500\u3501\u3502\u3503\u3504\u3505\u3506\u3507\u3508\u3509\u5285\u5286\u5287\u5288\u5289\u528a\u528b\u528c\u528d\u528e\u528f\u350a\u5290\u5291\u5292\u5293\u5294\u350b\u350c\u350d\u5295\u350e\u350f\u3510\u5296\u3511\u3512\u5297\u5298\u5299\u529a\u529b\u529c\u529d\u529e\u529f\u52a0\u52a1\u52a2\u3513\u361e\u52a3\u52a4\u52a5\u52a6\u52a7\u52a8\u3514\u3515\u3516\u52a9\u52aa\u52ab\u52ac\u52ad\u52ae\u52af\u52b0\u52b1\u52b2\u52b3\u52b4\u3517\u3518\u52b5\u52b6\u52b7\u52b8\u52b9\u52ba\u52bb\u52bc\u52bd\u52be\u52bf\u3519\u351a\u351b\u52c0\u52c1\u52c2\u52c3\u52c4\u52c5\u52c6\u52c7\u52c8\u52c9\u52ca\u52cb\u351c\u52cc\u52cd\u52ce\u52cf\u52d0\u52d1\u351d\u351e\u351f\u52d2\u52d3\u52d4\u52d5\u52d6\u52d8\u52d9\u52da\u3520\u52db\u52dc\u52dd\u52de\u3521\u52df\u52e0\u52e1\u52e2\u52e3\u52e4\u52e5\u52e6\u52e7\u52e8\u52e9\u52ea\u52eb\u52ec\u52ed\u3522\u52ee\u52ef\u52f0\u52f1\u52f2\u52f3\u52f4\u52f5\u52f6\u3523\u3524\u3525\u3526\u3527\u52f7\u52f8\u52f9\u52fa\u52fb\u52fc\u52fd\u52fe\u52ff\u5300\u5301\u5302\u5303\u5304\u5305\u5306\u5307\u5308\u5309\u530a\u530b\u530c\u530d\u530e\u530f\u5310\u3528\u5311\u5312\u3529\u5313\u352a\u5314\u5315\u5316\u352b\u5317\u352c\u5318\u5319\u352d\u531a\u531b\u531c\u531d\u531e\u531f\u5320\u5321\u5322\u5323\u5324\u5325\u352f\u3530\u5326\u5327\u5328\u5329\u532a\u532b\u9fa8\u532c\u532d\u532e\u3531\u532f\u3532\u3533\u3534\u5330\u5331\u5332\u3535\u5333\u5334\u5335\u5336\u5337\u3536\u5338\u5339\u533a\u533b\u3537\u533c\u533d\u533e\u533f\u5340\u3538\u5341\u5342\u5343\u5345\u5346\u5347\u5348\u3539\u5349\u534a\u534c\u534b\u534d\u534e\u534f\u5350\u353a\u353b\u5351\u5352\u5353\u5354\u5355\u5356\u9fba\u5357\u5358\u5359\u535a\u353c\u535b\u535c\u535d\u535e\u535f\u5360\u5361\u5362\u5363\u5364\u5365\u5366\u5367\u353d\u5368\u5369\u536a\u536b\u353e\u353f\u536c\u536d\u536e\u536f\u5370\u5371\u5372\u5373\u5374\u5375\u3540\u5376\u5377\u5378\u5379\u537a\u3541\u537b\u537c\u537d\u537e\u537f\u5380\u5381\u5382\u5383\u5384\u5385\u5386\u5387\u5388\u5389\u538a\u538b\u538c\u538d\u3542\u3543\u3544\u538e\u538f\u5390\u5391\u3545\u3546\u3547\u5392\u5393\u5394\u5395\u3548\u3549\u5396\u5397\u5398\u5399\u539a\u539b\u354a\u539c\u539d\u539e\u539f\u8652\u354b\u354c\u354d\u53a0\u53a1\u53a2\u53a3\u53a9\u53a4\u53a5\u53a6\u53a7\u53a8\u354e\u53aa\u53ab\u354f\u53ac\u53ad\u53ae\u53af\u53b0\u3550\u3551\u53b1\u53b2\u3552\u53b3\u3553\u53b4\u3554\u53b5\u53b6\u53b7\u53b8\u53b9\u3555\u53ba\u53bb\u53bc\u53bd\u53be\u53bf\u53c0\u53c1\u53c2\u3556\u53c3\u53c4\u3557\u3558\u53c5\u53c6\u53c7\u3559\u53c8\u53c9\u53ca\u53cb\u53cc\u53cd\u53ce\u355a\u355b\u53cf\u53d0\u53d1\u53d2\u355c\u53d3\u355d\u53d4\u53d5\u53d6\u53d7\u53d8\u355e\u53d9\u53da\u53db\u53dc\u53dd\u355f\u53de\u53df\u3560\u53e0\ufa0e\u3561\u53e1\u53e2\u58e1\u53e3\u53e4\u53e5\u53e6\u53e7\u53e8\u53e9\u53ea\u53eb\u53ec\u53ed\u53ee\u53ef\u53f0\u53f1\u53f2\u53f3\u53f4\u53f5\u53f6\u53f7\u53f8\u53f9\u53fa\u53fb\u53fc\u53fd\u53fe\u3563\u3564\u3565\u4db7\u53ff\u5400\u5401\u5402\u5403\u5404\u5405\u5406\u5407\u5408\u5409\u540a\u540b\u540c\u540d\u540e\u540f\u5410\u5411\u5412\u5413\u5414\u5415\u5416\u5417\u3566\u3567\u3568\u4db8\u5418\u5419\u541a\u541b\u541c\u541d\u541e\u541f\u5420\u5421\u5422\u5423\u5424\u5425\u5426\u5427\u5428\u5429\u542a\u542b\u542c\u542d\u542e\u542f\u5430\u5431\u5432\u5433\u5434\u5435\u5436\u5437\u5438\u5439\u543a\u543b\u543c\u543d\u543e\u543f\u5440\u5441\u5442\u5443\u5444\u5445\u5446\u5447\u5448\u5449\u544a\u544b\u544c\u544d\u544e\u544f\u5450\u5451\u5452\u5453\u5454\u5455\u5456\u5457\u5458\u5459\u545a\u545b\u545c\u3569\u356a\u356b\u356c\u356d\u356e\u356f\u3570\u3571\u3572\u3573\u3574\u3575\u3576\u545d\u545e\u545f\u5460\u5461\u5462\u5463\u5464\u5465\u5466\u5467\u5468\u5469\u546a\u546b\u546c\u546d\u546e\u546f\u5470\u5471\u5472\u5473\u5474\u5475\u5476\u5477\u5478\u5479\u547a\u547b\u547c\u547d\u547e\u547f\u5480\u5481\u5482\u5483\u5484\u5485\u5486\u5487\u5488\u5489\u548a\u548b\u548c\u548d\u548e\u548f\u5490\u5491\u5492\u5493\u5494\u5495\u5496\u5497\u5498\u5499\u549a\u549b\u549c\u549d\u3577\u3578\u3579\u357a\u357b\u357c\u357d\u357e\u357f\u549e\u549f\u54a0\u54a1\u54a2\u54a3\u54a4\u54a5\u54a6\u54a7\u54a8\u54a9\u54aa\u54ab\u54ac\u54ad\u54ae\u54af\u54b0\u54b1\u54b2\u54b3\u54b4\u54b5\u54b6\u54b7\u54b8\u54b9\u54ba\u54bb\u54bc\u54bd\u54be\u54bf\u54c0\u54c1\u54c2\u54c3\u54c4\u54c5\u54c6\u54c7\u54c8\u54c9\u54ca\u54cb\u54cc\u54cd\u54ce\u54cf\u54d0\u54d1\u54d2\u54d3\u54d4\u54d5\u54d6\u54d7\u54d8\u54d9\u54da\u54db\u54dc\u54dd\u54de\u54df\u3580\u3581\u3582\u3583\u3584\u3585\u3586\u3587\u3588\u3589\u358a\u358b\u358c\u358d\u358e\u54e0\u54e1\u54e2\u54e3\u54e4\u54e5\u54e6\u54e7\u54e8\u54e9\u54ea\u54eb\u54ec\u54ed\u54ee\u54ef\u54f0\u54f1\u54f2\u54f3\u54f4\u54f5\u54f6\u54f7\u54f8\u54f9\u54fa\u54fb\u54fc\u54fd\u54fe\u54ff\u5500\u5501\u5502\u5503\u5504\u5505\u5506\u5507\u5508\u5509\u550a\u550b\u550c\u550d\u550e\u550f\u5510\u5511\u5512\u5513\u5514\u5515\u5516\u5517\u5518\u5519\u551a\u551b\u551c\u551d\u551e\u551f\u5520\u5521\u5522\u5523\u5524\u5525\u5526\u5527\u358f\u3590\u3591\u3592\u3593\u3594\u3595\u3596\u3597\u3598\u3599\u359a\u359b\u359c\u359d\u359e\u5528\u5529\u552a\u552b\u552c\u552d\u552e\u552f\u5530\u5531\u5532\u5533\u5534\u5535\u5536\u5537\u5538\u5539\u553a\u553b\u553c\u553d\u553e\u553f\u5540\u5541\u5542\u5543\u5544\u5545\u5546\u5547\u5548\u5549\u554a\u554b\u554c\u554d\u554e\u554f\u5550\u5551\u5552\u5553\u5554\u5555\u5556\u5557\u5558\u555a\u555b\u555c\u555d\u555e\u5560\u5561\u5562\u5563\u5564\u5565\u5566\u5567\u5568\u5569\u556a\u556c\u556d\u556e\u556f\u5570\u5571\u5572\u5573\u5574\u5575\u5576\u5577\u5578\u5579\u359f\u35a0\u35a1\u35a2\u35a3\u35a4\u35a5\u35a6\u35a7\u35a8\u35a9\u35aa\u35ab\u35ac\u35ad\u35ae\u35af\u35b0\u35b1\u35b2\u35b3\u35b4\u35b5\u5559\u556b\u557a\u557b\u557c\u557d\u557e\u557f\u5580\u5581\u5582\u5583\u5584\u5585\u5586\u5587\u5588\u5589\u558a\u558b\u558c\u558e\u558f\u5590\u5591\u5592\u5593\u5594\u5595\u5596\u5597\u5598\u5599\u559a\u559b\u559c\u559d\u559e\u559f\u55a0\u55a1\u55a2\u55a3\u55a4\u55a5\u55a6\u55a7\u55a8\u55a9\u55aa\u55ab\u55ac\u55ad\u55ae\u55af\u55b0\u55b1\u55b2\u55b3\u55b4\u55b5\u55b6\u55b7\u55b8\u55b9\u55ba\u55bb\u55bc\u55bd\u55be\u5645\u35b6\u35b7\u35b8\u35b9\u35ba\u35bb\u35bc\u35bd\u35be\u35bf\u35c0\u35c1\u35c2\u35c3\u35c4\u35c5\u35c6\u35c7\u35c8\u35c9\u35ca\u35cb\u35cc\u35cd\u35ce\u35cf\u35d0\u35d1\u558d\u55bf\u55c0\u55c1\u55c2\u55c3\u55c4\u55c5\u55c6\u55c7\u55c8\u55c9\u55ca\u55cb\u55cc\u55cd\u55ce\u55cf\u55d0\u55d1\u55d2\u55d3\u55d4\u55d5\u55d6\u55d7\u55d8\u55d9\u55da\u55db\u55dc\u55dd\u55de\u55df\u55e0\u55e1\u55e2\u55e3\u55e4\u55e5\u55e6\u55e7\u55e8\u55e9\u55ea\u55eb\u55ec\u55ed\u55ee\u55ef\u55f0\u55f1\u55f2\u55f3\u55f4\u55f5\u35d2\u35d3\u35d4\u35d5\u35d6\u35d7\u35d8\u35d9\u35da\u35db\u35dc\u35dd\u35de\u35df\u35e0\u35e1\u55f6\u55f7\u55f8\u55f9\u55fa\u55fb\u55fc\u55fd\u55fe\u55ff\u5600\u5601\u5602\u5603\u5604\u5605\u5606\u5607\u5608\u5609\u560a\u560b\u560c\u560d\u560e\u560f\u5610\u5611\u5612\u5613\u5614\u5615\u5616\u5617\u5618\u5619\u561a\u561b\u561c\u561d\u561e\u5621\u5622\u5623\u5624\u5625\u5626\u5627\u5651\u5653\u35e2\u35e3\u35e4\u35e5\u35e6\u35e7\u35e8\u35e9\u35ea\u35eb\u35ec\u35ed\u35ee\u35ef\u35f0\u561f\u5620\u5628\u5629\u562a\u562b\u562c\u562d\u562e\u562f\u5630\u5631\u5632\u5633\u5634\u5635\u5636\u5637\u5638\u5639\u563a\u563b\u563c\u563d\u563e\u563f\u5640\u5641\u5642\u5643\u5644\u5646\u5647\u5648\u5649\u564a\u564b\u564c\u564d\u564e\u564f\u5650\u5652\u5654\u5656\u5657\u5658\u5659\u565a\u565b\u565c\u565d\u5674\u35f1\u35f2\u35f3\u35f4\u35f5\u35f6\u35f7\u35f8\u35f9\u35fa\u565e\u565f\u5660\u5661\u5662\u5663\u5664\u5665\u5666\u5667\u5668\u5669\u566a\u566b\u566c\u566d\u566e\u566f\u5670\u5671\u5672\u5673\u5675\u5676\u5677\u5678\u5679\u567a\u567b\u567c\u35fb\u35fc\u35fd\u35fe\u35ff\u3600\u3601\u3602\u3603\u3604\u567d\u567e\u567f\u5680\u5681\u5682\u5683\u5684\u5685\u5686\u5687\u5688\u5689\u568a\u568b\u568c\u568d\u568e\u568f\u5690\u5691\u5692\u5693\u56ba\u3605\u3606\u3607\u3608\u5694\u5695\u5696\u5697\u5698\u5699\u569a\u569b\u569c\u569d\u569e\u569f\u56a0\u56a1\u56a2\u56a3\u56a4\u3609\u360a\u360b\u360c\u360d\u360e\u360f\u56a5\u56a6\u56a7\u56a8\u56a9\u56aa\u56ab\u56ac\u56ad\u56ae\u56af\u56b0\u3610\u3611\u3612\u56b1\u56b2\u56b3\u56b4\u56b5\u56b6\u56b7\u56b8\u56b9\u3613\u3614\u56bb\u56bc\u56bd\u56be\u56bf\u56c0\u56c1\u56c2\u56c3\u56c4\u56cd\u3615\u3616\u3617\u56c5\u56c6\u56c7\u56c8\u56c9\u56ca\u56cb\u56ce\u3618\u56cc\u56cf\u56d0\u3619\u361a\u56d1\u56d2\u56d3\u56d4\u56d5\u361b\u361c\u56d6\u56d7\u56d8\u56d9\u56da\u56db\u56dc\u9fb1\u361d\u56dd\u56de\u56df\u56e0\u56e1\u56e2\u56e3\u361f\u56e4\u56e5\u56e6\u56e7\u56e8\u56e9\u56ea\u56eb\u56ec\u56ed\u56ee\u56ef\u56f0\u56f1\u56f2\u56f3\u56f4\u56f5\u56f6\u56f7\u56f8\u56f9\u56fa\u56fb\u56fc\u56fd\u56fe\u3620\u3621\u56ff\u5700\u3622\u5701\u5702\u5703\u5704\u5705\u5706\u3623\u5707\u5708\u5709\u570a\u570b\u570f\u570c\u570d\u570e\u5710\u5711\u5712\u5713\u5714\u5715\u5716\u5717\u5718\u5719\u3624\u571a\u571b\u571c\u3625\u571d\u571e\u571f\u5720\u5721\u9fb6\u5722\u5723\u5724\u5725\u5726\u5727\u3626\u5728\u5729\u572a\u572b\u572c\u572d\u572e\u572f\u5730\u5731\u5732\u5733\u5734\u5735\u5736\u5737\u5738\u5739\u573a\u573b\u573c\u573d\u573e\u573f\u5740\u5741\u5742\u5743\u5744\u5745\u5746\u5747\u5748\u5749\u574a\u574b\u574c\u574d\u574e\u574f\u5750\u5751\u5752\u5753\u5754\u5755\u5756\u5757\u5758\u5759\u575a\u575b\u575c\u575d\u575e\u575f\u5760\u3627\u3628\u3629\u362a\u362b\u362c\u362d\u362e\u362f\u3630\u5761\u5762\u5763\u5764\u5765\u5766\u5767\u5768\u5769\u576a\u576b\u576c\u576d\u576e\u576f\u5770\u5771\u5772\u5773\u5774\u5775\u5776\u5777\u5778\u5779\u577a\u577b\u577c\u577d\u577e\u577f\u5780\u5781\u5782\u5783\u5784\u5785\u5786\u5787\u5788\u5789\u578a\u3631\u3632\u3633\u3634\u3635\u578b\u578c\u578d\u578e\u578f\u5790\u5791\u5792\u5793\u5794\u5795\u5796\u5797\u5798\u5799\u579a\u579b\u579c\u579d\u579e\u579f\u57a0\u57a1\u57a2\u57a3\u57a4\u57a5\u57a6\u57a7\u57a8\u57a9\u57aa\u57ab\u57ac\u57ad\u57ae\u57af\u57b0\u57b1\u57b2\u57b3\u57b4\u57b5\u57ce\u9fcd\u3636\u3637\u3638\u3639\u363a\u363b\u363c\u363d\u363e\u57b6\u57b7\u57b8\u57b9\u57ba\u57bb\u57bc\u57bd\u57be\u57bf\u57c0\u57c1\u57c2\u57c3\u57c4\u57c5\u57c6\u57c7\u57c8\u57c9\u57ca\u57cb\u57cc\u57cd\u57cf\u57d0\u57d1\u57d2\u57d3\u57d4\u57d5\u57d6\u57d7\u57d8\u57d9\u57da\u57db\ufa0f\u363f\u3640\u3641\u3642\u3643\u3644\u3645\u3646\u57dc\u57dd\u57de\u57df\u57e0\u57e1\u57e2\u57e3\u57e4\u57e5\u57e6\u57e7\u57e8\u57e9\u57eb\u57ec\u57ed\u57ee\u57ef\u57f0\u57f1\u57f2\u57f3\u57f4\u57f5\u57f6\u57f7\u57f8\u57f9\u57fa\u57fb\u57fc\u57fd\u57fe\u57ff\u5800\u5801\u5802\u5803\u5804\u5805\u5806\u5807\u5808\u5809\u580a\u580b\u580c\u580d\u580e\u580f\u5810\u5811\u5812\u5813\u5814\u5815\u3647\u3648\u3649\u364a\u364b\u364c\u364d\u57ea\u5816\u5817\u5818\u5819\u581a\u581b\u581c\u581d\u581e\u581f\u5820\u5821\u5822\u5823\u5824\u5825\u5826\u5827\u5828\u5829\u582a\u582b\u582c\u582d\u582e\u582f\u5830\u5831\u5832\u5833\u5834\u5835\u5836\u5837\u5838\u5839\u583a\u583b\u583c\u583e\u583f\u5840\u5841\u5842\u5844\u5845\u5846\u5847\u5848\u364e\u364f\u3650\u3651\u3652\u3653\u3654\u3655\u3656\u3657\u3658\u583d\u5843\u5849\u584a\u584b\u584c\u584d\u584e\u584f\u5850\u5851\u5852\u5853\u5854\u5855\u5856\u5857\u5858\u5859\u585a\u585b\u585c\u585d\u585e\u585f\u5860\u5861\u5862\u5863\u5864\u5865\u5866\u5867\u5868\u5869\u586a\u586b\u586c\u586d\u586e\u586f\u5870\u5871\u3659\u365a\u365b\u365c\u365d\u365e\u365f\u5872\u5873\u5874\u5875\u5876\u5877\u5878\u5879\u587a\u587b\u587c\u587d\u587e\u587f\u5880\u5881\u5882\u5883\u5884\u5885\u5886\u5887\u5888\u5889\u588a\u588b\u588c\u588d\u588e\u588f\u5890\u5891\u5892\u5893\u5894\u5895\u5896\u5897\u5898\u5899\u589a\u589b\u3660\u3661\u3662\u3663\u3664\u3665\u3666\u589c\u589d\u589e\u589f\u58a0\u58a1\u58a2\u58a3\u58a4\u58a5\u58a6\u58a7\u58a9\u58aa\u58ab\u58ac\u58ad\u58ae\u58af\u58b0\u58b1\u58b2\u58b3\u58b4\u58b5\u58b6\u58b7\u58b8\u58b9\u3667\u3668\u3669\u366a\u366b\u366c\u366d\u366e\u366f\u58ba\u58bb\u58bc\u58bd\u58be\u58bf\u58c0\u58c1\u58c2\u58c3\u58c4\u58c5\u58c6\u58c7\u58c8\u58c9\u58ca\u58cb\u58cc\u9fb3\u3670\u3671\u3672\u3673\u3674\u3675\u3676\u58cd\u58ce\u58cf\u58d0\u58d1\u58d2\u58d3\u58d4\u58d5\u58d6\u58d7\u9fbc\u3677\u3678\u3679\u367a\u58d8\u58d9\u367b\u367c\u367d\u58da\u58db\u58dc\u58dd\u58de\u58df\u58e0\u58e2\u367e\u367f\u58e3\u58e4\u58e5\u3680\u58e6\u58e7\u58e8\u58e9\u3681\u58ea\u3682\u58eb\u58ec\u58ed\u58ee\u58ef\u58f0\u58f1\u58f2\u58f3\u58f4\u58f5\u58f6\u58f7\u58f8\u58f9\u58fa\u58fb\u3683\u58fc\u58fd\u58fe\u58ff\u5900\u3684\u5901\u5902\u5903\u5904\u5905\u5906\u5907\u5908\u3685\u590a\u590b\u590c\u5909\u590d\u3686\u3687\u590e\u590f\u5910\u5911\u5913\u5912\u5914\u5915\u5916\u5917\u5918\u3688\u5919\u591a\u591b\u591c\u591d\u3689\u591e\u591f\u5920\u5921\u368a\u5922\u5923\u5924\u5925\u368b\u368c\u5926\u368d\u5927\u5928\u5929\u592a\u592b\u592c\u592d\u592e\u592f\u5930\u5931\u5932\u5933\u5934\u368e\u5935\u5936\u5937\u5938\u5939\u593a\u593b\u593c\u368f\u3690\u3691\u593d\u593e\u593f\u5940\u5941\u5942\u3692\u3693\u5943\u5944\u5945\u5946\u5947\u5948\u5949\u594b\u594c\u594d\u3694\u3695\u3696\u3697\u3698\u3699\u594e\u594f\u5950\u5951\u5952\u5953\u5954\u5955\u5956\u369a\u369b\u594a\u5957\u5958\u5959\u595a\u595b\u595c\u595d\u595e\u369c\u369d\u369e\u595f\u5960\u5961\u5962\u5963\u5964\u5965\u369f\u5966\u5967\u5968\u36a0\u5969\u596a\u596b\u596c\u596d\u596e\u596f\u36a1\u5970\u5971\u5972\u5973\u5974\u5975\u5976\u36a2\u5977\u5978\u5979\u597a\u597b\u597c\u597d\u597e\u597f\u5980\u5981\u5982\u5983\u5984\u5985\u5986\u5987\u5988\u36a3\u36a4\u36a5\u36a6\u36a7\u36a8\u5989\u598a\u598b\u598c\u598e\u598f\u5990\u5991\u5992\u5993\u5994\u5995\u5996\u5997\u5998\u5999\u599a\u599b\u599c\u599d\u599e\u599f\u59a0\u59a1\u59a2\u59a3\u59a4\u59a5\u59a6\u59a7\u59a8\u59a9\u59aa\u59ab\u36a9\u36aa\u36ab\u36ac\u36ad\u36ae\u36af\u36e0\u59ac\u59ad\u59ae\u59af\u59b0\u59b1\u59b2\u59b3\u59b4\u59b5\u59b6\u59b7\u59b8\u59b9\u59ba\u59bb\u59bc\u59bd\u59be\u59bf\u59c0\u59c1\u59c2\u59c3\u59c4\u59c5\u59c6\u59c7\u59c8\u59c9\u59ca\u59cb\u59cc\u59cd\u59ce\u59cf\u59d0\u59d1\u59d2\u59d3\u59d4\u59d5\u59d6\u59d7\u36b0\u36b1\u36b2\u36b3\u36b4\u36b5\u36b6\u36b7\u36b8\u36b9\u36ba\u36bb\u36bc\u36bd\u36be\u36bf\u36c0\u36c1\u598d\u59d8\u59d9\u59da\u59db\u59dc\u59dd\u59de\u59df\u59e0\u59e1\u59e2\u59e3\u59e4\u59e5\u59e6\u59e7\u59e8\u59e9\u59ea\u59eb\u59ed\u59ee\u59ef\u59f0\u59f1\u59f2\u59f3\u59f4\u59f5\u59f6\u59f7\u59f8\u59f9\u59fa\u59fb\u59fc\u59fd\u59fe\u59ff\u5a00\u5a01\u5a02\u5a03\u5a05\u5a06\u5a07\u5a08\u36c2\u36c3\u36c4\u36c5\u36c6\u36c7\u36c8\u36c9\u36ca\u36cb\u36cc\u59ec\u5a09\u5a0a\u5a0b\u5a0c\u5a0d\u5a0e\u5a0f\u5a10\u5a11\u5a12\u5a13\u5a14\u5a15\u5a16\u5a17\u5a18\u5a19\u5a1a\u5a1b\u5a1c\u5a1d\u5a1e\u5a1f\u5a20\u5a21\u5a22\u5a23\u5a24\u5a25\u5a26\u5a27\u5a28\u5a29\u5a2a\u5a2b\u5a2d\u5a2e\u5a2f\u5a30\u5a31\u5a32\u5a33\u5a34\u5a3d\u36cd\u36ce\u36cf\u36d0\u36d1\u36d2\u36d3\u36d4\u36d5\u36d6\u36d7\u36d8\u36d9\u36da\u36db\u36dc\u36dd\u36de\u36df\u36e1\u36e2\u36e3\u36e4\u5a2c\u5a35\u5a36\u5a37\u5a38\u5a39\u5a3a\u5a3b\u5a3c\u5a3e\u5a3f\u5a40\u5a41\u5a42\u5a43\u5a44\u5a45\u5a46\u5a47\u5a48\u5a49\u5a4a\u5a4b\u5a4c\u5a4d\u5a4e\u5a4f\u5a50\u5a51\u5a52\u5a53\u5a54\u5a55\u5a56\u5a57\u5a58\u5a59\u5a5a\u5a5b\u5a5c\u5a5d\u5a5e\u5a5f\u5a60\u5a61\u5a62\u5a63\u5a64\u5a65\u5a66\u5a67\u5a68\u5a69\u5a6a\u5a6b\u5a6c\u5a6d\u5a6e\u5a6f\u5a70\u5a71\u5a72\u5a73\u5a74\u5a75\u5a76\u36e5\u36e6\u36e7\u36e8\u36e9\u36ea\u36eb\u36ec\u36ed\u5a77\u5a78\u5a79\u5a7a\u5a7b\u5a7c\u5a7d\u5a7e\u5a7f\u5a80\u5a81\u5a82\u5a83\u5a84\u5a85\u5a86\u5a87\u5a88\u5a89\u5a8a\u5a8b\u5a8c\u5a8d\u5a8e\u5a8f\u5a91\u5a92\u5a93\u5a94\u5a95\u5a96\u5a97\u5a98\u5a99\u5a9a\u5a9b\u5a9c\u5a9d\u5a9e\u5a9f\u5aa0\u5aa1\u5aa2\u5aa3\u5aa4\u5aa5\u5aa6\u5aa7\u5aa8\u5aa9\u5aaa\u5aab\u5aac\u5aad\u5aae\u5aaf\u5acf\u36ee\u36ef\u36f0\u36f1\u36f2\u36f3\u36f4\u36f5\u36f6\u36f7\u36f8\u36f9\u36fa\u36fb\u36fc\u36fd\u36fe\u36ff\u3700\u3701\u3702\u3703\u3704\u5a90\u5ab0\u5ab1\u5ab2\u5ab3\u5ab4\u5ab5\u5ab6\u5ab7\u5ab8\u5ab9\u5aba\u5abb\u5abc\u5abd\u5abe\u5abf\u5ac0\u5ac1\u5ac2\u5ac3\u5ac4\u5ac5\u5ac6\u5ac7\u5ac8\u5ac9\u5aca\u5acb\u5acc\u5acd\u5ace\u5ad0\u5ad1\u5ad2\u5ad3\u5ad4\u3705\u3706\u3707\u3708\u3709\u370a\u370b\u370c\u370d\u370e\u370f\u3710\u3711\u3712\u3713\u3714\u5ad5\u5ad6\u5ad7\u5ad8\u5ad9\u5ada\u5adb\u5adc\u5add\u5ade\u5adf\u5ae0\u5ae1\u5ae2\u5ae3\u5ae4\u5ae5\u5ae6\u5ae7\u5ae8\u5ae9\u5aea\u5aeb\u5aec\u5aed\u5aee\u5aef\u5af0\u5af1\u5af2\u3715\u3716\u3717\u3718\u3719\u371a\u371b\u371c\u371d\u371e\u371f\u3720\u3721\u3722\u5af3\u5af4\u5af5\u5af6\u5af7\u5af8\u5af9\u5afa\u5afb\u5afc\u5afd\u5afe\u5aff\u5b00\u5b01\u5b02\u5b03\u5b04\u5b05\u5b06\u5b07\u5b08\u5b09\u5b0a\u5b0b\u5b0c\u5b0d\u5b0e\u5b0f\u3723\u3724\u3725\u3726\u3727\u3728\u5b10\u5b11\u5b12\u5b13\u5b14\u5b15\u5b16\u5b17\u5b18\u5b19\u5b1a\u5b1b\u5b1c\u5b1d\u5b1e\u5b1f\u5b20\u5b21\u5b22\u5b34\u3729\u372a\u372b\u372c\u372d\u5b23\u5b24\u5b25\u5b26\u5b27\u5b28\u5b29\u5b2a\u5b2b\u5b2c\u5b2d\u5b2e\u5b2f\u5b30\u5b31\u5b32\u5b33\u5b35\u5b36\u5b37\u372e\u372f\u5b38\u5b3a\u5b3b\u5b3c\u5b3d\u3730\u3731\u5b39\u5b3e\u5b3f\u3732\u3733\u3734\u3735\u5b40\u5b41\u5b42\u5b43\u5b44\u5b45\u5b46\u3736\u3737\u3738\u5b47\u5b48\u5b49\u3739\u5b4a\u5b4b\u5b4c\u373a\u5b4d\u5b4e\u5b4f\u373b\u373c\u5b50\u5b51\u5b52\u5b53\u5b54\u5b55\u5b56\u5b57\u5b58\u5b59\u373d\u5b5a\u5b5b\u5b5c\u5b5d\u5b5e\u373e\u373f\u5b5f\u5b60\u5b61\u5b62\u5b63\u5b64\u5b65\u5b66\u5b67\u3740\u5b68\u5b69\u5b6a\u3741\u5b6b\u5b6c\u5b6d\u3742\u3743\u5b6e\u5b6f\u5b70\u5b72\u5b71\u3744\u5b73\u5b74\u3745\u5b75\u5b76\u5b77\u3746\u5b78\u5b79\u3747\u5b7a\u5b7b\u5b7c\u5b7d\u5b7e\u5b7f\u3748\u5b80\u3749\u5b81\u5b82\u5b83\u5b84\u374a\u374b\u5b85\u5b86\u5b87\u5b88\u5b89\u374c\u374d\u5b8a\u5b8b\u5b8c\u5b8d\u5b8e\u5b8f\u5b90\u5b91\u5b92\u374e\u374f\u3750\u3751\u5b93\u5b94\u5b95\u5b96\u5b97\u5b98\u5b99\u5b9a\u5b9b\u5b9c\u5b9d\u5b9e\u5b9f\u5ba0\u5ba1\u3752\u5ba2\u5ba3\u5ba4\u5ba5\u5ba6\u5ba8\u5ba9\u5baa\u5bab\u3753\u3754\u3755\u3756\u5ba7\u5bac\u5bad\u5bae\u5baf\u5bb0\u5bb1\u5bb2\u5bb3\u5bb4\u5bb5\u5bb6\u5bb7\u5bb8\u5bb9\u5bba\u5bbb\u5bbc\u5bbd\u5bbe\u3757\u3758\u3759\u375a\u5bbf\u5bc0\u5bc1\u5bc2\u5bc3\u5bc4\u5bc5\u5bc6\u5bc7\u5bc8\u5bc9\u375b\u375c\u375d\u375e\u375f\u3760\u3761\u5bca\u5bcb\u5bcc\u5bcd\u5bce\u5bcf\u5bd0\u5bd1\u5bd2\u5bd3\u5bd4\u5bd5\u5bea\u3762\u3763\u5bd6\u5bd7\u5bd8\u5bd9\u5bda\u5bdb\u5bdc\u5bdd\u3764\u3765\u3766\u3767\u3768\u5bde\u5bdf\u5be0\u5be1\u5be2\u5be3\u5be4\u5be5\u5be6\u5be7\u5be8\u3769\u376a\u376b\u376c\u5be9\u5beb\u5bec\u5bed\u5bee\u376d\u376e\u376f\u5bef\u5bf0\u5bf1\u5bf2\u3770\u5bf3\u5bf4\u5bf5\u5bf6\u5bf7\u3771\u3772\u5bf8\u5bf9\u3773\u5bfa\u5bfb\u5bfc\u5bfd\u5bfe\u5bff\u3774\u5c00\u3775\u5c01\u5c02\u5c06\u5c03\u5c04\u5c05\u3776\u5c07\u5c08\u5c09\u5c0a\u5c0b\u5c0c\u3777\u5c0d\u5c0e\u5c0f\u5c10\u5c11\u5c12\u5c13\u5c14\u5c15\u9fb8\u5c16\u5c17\u5c18\u5c19\u5c1a\u5c1b\u5c1c\u5c1d\u3778\u5c1e\u3779\u5c1f\u5c20\u5c21\u377a\u377b\u5c22\u5c23\u5c24\u5c25\u5c26\u5c27\u377c\u5c28\u5c29\u5c2a\u5c2b\u5c2c\u377d\u5c2d\u377e\u377f\u5c2e\u5c2f\u3780\u3781\u3782\u3783\u3784\u3785\u3786\u5c30\u5c31\u3787\u3788\u5c32\u5c33\u5c34\u3789\u378a\u5c35\u5c36\u5c37\u5c38\u5c3a\u5c3b\u5c3c\u378b\u5c3d\u378c\u378d\u5c3e\u5c3f\u5c40\u5c41\u5c42\u5c43\u378e\u5c44\u5c45\u5c46\u5c47\u5c48\u5c49\u5c4a\u378f\u3790\u3791\u5c4b\u5c4c\u5c4d\u5c4e\u5c4f\u3792\u3793\u3794\u3795\u3796\u5c50\u5c51\u5c52\u5c53\u5c54\u5c55\u5c56\u5c57\u5c58\u3797\u5c59\u5c5a\u5c5b\u5c5c\u5c5d\u3798\u3799\u5c5e\u5c5f\u5c60\u5c61\u379a\u379b\u5c62\u5c63\u379c\u379d\u379e\u5c64\u5c65\u5c66\u5c67\u379f\u37a0\u5c68\u5c69\u5c6a\u5c6b\u37a1\u5c6c\u5c6d\u5c6e\u4db9\u5c6f\u37a2\u5c70\u37a3\u37b7\u5c71\u4e62\u5c72\u5c73\u5c74\u5c75\u5c76\u5c77\u37a4\u37a5\u37a6\u37a7\u5c78\u5c79\u5c7a\u5c7b\u5c7c\u5c7d\u5c7e\u5c7f\u5c80\u5c81\u5c82\u5c83\u37a8\u37a9\u37aa\u37ab\u37ac\u37ad\u37ae\u37af\u5c84\u5c85\u5c86\u5c87\u5c88\u5c89\u5c8a\u5c8b\u5c8c\u5c8e\u5c8f\u5c90\u5c91\u5c92\u5c93\u5c94\u5c95\u5c96\u5c97\u5c98\u5c99\u5c9a\u5c9b\u5c9c\u37b0\u37b1\u37b2\u37b3\u37b4\u37b5\u37b6\u37b8\u5c9d\u5c9e\u5c9f\u5ca0\u5ca1\u5ca2\u5ca3\u5ca4\u5ca5\u5ca6\u5ca7\u5ca8\u5ca9\u5caa\u5cab\u5cac\u5cad\u5cae\u5caf\u5cb0\u5cb1\u5cb2\u5cb3\u5cb4\u5cb5\u5cb6\u5cb7\u5cb8\u5cb9\u5cba\u5cbb\u5cbc\u5cbd\u5cbe\u5cbf\u5cc0\u5cc1\u5cc2\u5cc3\u5cc4\u5cc5\u37b9\u37ba\u37bb\u37bc\u37bd\u37be\u37bf\u37c0\u37c1\u37c2\u37c3\u5c8d\u5cc6\u5cc7\u5cc8\u5cc9\u5cca\u5ccb\u5ccc\u5ccd\u5cce\u5ccf\u5cd0\u5cd1\u5cd2\u5cd3\u5cd4\u5cd5\u5cd6\u5cd7\u5cd8\u5cd9\u5cda\u5cdb\u5cdc\u5cdd\u5cde\u5cdf\u5ce0\u5ce1\u5ce2\u5ce3\u5ce4\u5ce5\u5ce6\u5ce7\u37c4\u37c5\u37c6\u5ce8\u5ce9\u5cea\u5ceb\u5cec\u5ced\u5cee\u5cef\u5cf0\u5cf1\u5cf2\u5cf3\u5cf4\u5cf5\u5cf6\u5cf7\u5cf8\u5cf9\u5cfa\u5cfb\u5cfc\u5cfd\u5cfe\u5cff\u5d00\u5d01\u5d02\u5d03\u5d04\u5d05\u37c7\u37c8\u37c9\u37ca\u37cb\u37cc\u37cd\u37ce\u37cf\u37d0\u37d1\u37d2\u37d3\u37d4\u37d5\u37d6\u5d06\u5d07\u5d08\u5d09\u5d0a\u5d0b\u5d0c\u5d0d\u5d0e\u5d0f\u5d10\u5d11\u5d12\u5d13\u5d14\u5d15\u5d16\u5d17\u5d18\u5d19\u5d1a\u5d1b\u5d1c\u5d1d\u5d1e\u5d1f\u5d20\u5d21\u5d22\u5d23\u5d24\u5d25\u5d26\u5d27\u5d28\u5d29\u5d2a\u5d2b\u5d2c\u5d2d\u5d2e\u5d2f\u5d30\u37d7\u37d8\u37d9\u37da\u37db\u37dc\u37dd\u37de\u37df\u37e0\u37e1\u37e2\u37e3\u37e4\u37e5\u5d31\u5d32\u5d33\u5d34\u5d35\u5d36\u5d37\u5d38\u5d39\u5d3a\u5d3b\u5d3c\u5d3d\u5d3e\u5d3f\u5d40\u5d41\u5d42\u5d43\u5d44\u5d45\u5d46\u5d47\u5d48\u5d49\u5d4b\u5d4c\u5d4d\u5d4e\u5d4f\u5d50\u5d51\u5d52\u5d53\u5d54\u5d55\u5d56\u5d57\u5d58\u5d59\u5d5a\u5d5b\u5d5c\u5d5d\ufa11\u37e6\u37e7\u37e8\u37e9\u37ea\u37eb\u37ec\u37ed\u37ee\u37ef\u5d4a\u5d5e\u5d5f\u5d60\u5d61\u5d62\u5d63\u5d64\u5d65\u5d66\u5d67\u5d68\u5d69\u5d6a\u5d6b\u5d6c\u5d6d\u5d6e\u5d6f\u5d70\u5d71\u5d72\u5d73\u5d74\u5d75\u5d76\u37f0\u37f1\u37f2\u37f3\u37f4\u37f5\u37f6\u37f7\u37f8\u5d77\u5d78\u5d79\u5d7a\u5d7b\u5d7c\u5d7d\u5d7e\u5d7f\u5d80\u5d81\u5d82\u5d83\u5d84\u5d85\u5d86\u5d87\u5d88\u5d89\u5d8a\u5d8b\u5d8c\u5d8d\u5d8e\u37f9\u37fa\u37fb\u37fc\u37fd\u37fe\u37ff\u3800\u3801\u3802\u3803\u3804\u5d8f\u5d90\u5d91\u5d92\u5d93\u5d94\u5d95\u5d96\u5d97\u5d98\u5d99\u5d9a\u5d9b\u5d9c\u5d9d\u5d9e\u5d9f\u5da0\u5da1\u5da2\u5da3\u5da4\u5da5\u3805\u3806\u3807\u3808\u3809\u380a\u380b\u380c\u380d\u380e\u380f\u3810\u5da6\u5da7\u5da8\u5da9\u5daa\u5dab\u5dac\u5dad\u5dae\u5daf\u5db0\u5db1\u5db2\u5db3\u5db4\u5db5\u5db6\u3811\u3812\u3813\u3814\u3815\u3816\u3817\u5db7\u5db8\u5db9\u5dba\u5dbc\u5dbd\u5dbe\u5dbf\u3818\u3819\u381a\u381b\u381c\u5dc0\u5dc1\u5dc2\u381d\u381e\u381f\u5dbb\u5dc3\u5dc4\u5dc5\u3820\u3821\u3822\u3823\u5dc6\u5dc7\u5dc8\u5dc9\u5dca\u5dcb\u5dcc\u3824\u5dcd\u5dcf\u5dd0\u3825\u3826\u5dce\u5dd1\u5dd2\u5dd3\u5dd4\u5dd5\u5dd7\u3827\u5dd6\u5dd8\u5dd9\u5dda\u3828\u5ddb\u5ddc\u5ddd\u5dde\u5ddf\u3829\u5de0\u5de2\u5de3\u5de4\u5de5\u382a\u5de6\u5de7\u5de8\u5de9\u5dea\u5deb\u5dec\u5ded\u5dee\u382b\u382c\u5def\u382d\u5df0\u382e\u5df1\u5df2\u5df3\u5df4\u382f\u5df5\u5df6\u3830\u5df7\u5df8\u5df9\u5dfa\u5dfb\u5dfc\u3831\u5dfd\u5dfe\u5dff\u5e00\u5e01\u5e02\u5e03\u5e04\u5e05\u3832\u3833\u5e06\u5e07\u5e08\u3834\u3835\u3836\u5e09\u5e0a\u5e0b\u5e0c\u5e0d\u5e0e\u5e0f\u5e10\u3837\u3838\u3839\u383a\u383b\u383c\u5e11\u5e12\u5e13\u5e14\u5e15\u5e16\u5e17\u5e18\u5e19\u5e1a\u5e1b\u5e1c\u383d\u383e\u383f\u3840\u5e1d\u5e1e\u5e1f\u5e20\u5e21\u5e22\u5e23\u5e24\u5e25\u5e26\u5e27\u3841\u3842\u3843\u3844\u3845\u3846\u5e28\u5e29\u5e2a\u5e2b\u5e2c\u5e2d\u5e2e\u5e2f\u5e30\u5e31\u3847\u3848\u5e32\u5e33\u5e34\u5e35\u5e36\u5e37\u5e38\u5e39\u5e3a\u5e3b\u5e3c\u3849\u384a\u384b\u384c\u384d\u384e\u5e3d\u5e3e\u5e3f\u5e40\u5e41\u5e42\u5e43\u5e44\u5e45\u5e46\u5e47\u5e49\u384f\u3850\u3851\u3852\u3853\u3854\u3855\u3856\u5e4a\u5e4b\u5e4c\u5e4d\u5e4e\u5e4f\u3857\u3858\u3859\u385a\u385b\u5e48\u5e51\u5e52\u5e53\u5e54\u5e55\u5e56\u5e57\u5e58\u5e59\u5e5b\u385c\u385d\u385e\u385f\u5e5a\u5e5c\u5e5d\u5e5e\u5e5f\u5e60\u5e61\u5e62\u5e63\u5e64\u5e65\u3860\u3861\u5e66\u5e67\u5e68\u5e69\u3862\u3863\u3864\u5e6a\u5e6b\u5e6c\u3865\u3866\u5e6d\u5e6e\u5e6f\u5e70\u5e71\u3867\u3868\u3869\u386a\u5e72\u5e73\u5e74\u5e75\u5e76\u5e77\u5e78\u5e79\u4e61\u5e7a\u5e7b\u5e7c\u5e7d\u5e7e\u386b\u386c\u386d\u386e\u5e7f\u5e80\u5e81\u5e82\u5e83\u5e84\u5e85\u5e86\u386f\u3870\u3871\u5e87\u5e88\u5e89\u5e8a\u5e8b\u5e8c\u5e8d\u5e8e\u5e8f\u5e90\u5e91\u5e92\u5e93\u5e94\u5e98\u3872\u3873\u5e95\u5e96\u5e97\u5e99\u5e9a\u5e9b\u5e9c\u5e9d\u5e9e\u5e9f\u3874\u3875\u3876\u3877\u3878\u3879\u387a\u387b\u5ea0\u5ea1\u5ea2\u5ea3\u5ea4\u5ea5\u5ea6\u387c\u387d\u387e\u387f\u3880\u3881\u3882\u5ea7\u5ea8\u5ea9\u5eaa\u5eab\u5eac\u5ead\u5eae\u5eaf\u3883\u3884\u3885\u3886\u3887\u5eb0\u5eb1\u5eb2\u5eb3\u5eb4\u5eb5\u5eb6\u5eb7\u5eb8\u5eb9\u5eba\u5ebb\u5ebc\u3888\u3889\u388a\u388b\u388c\u5ebd\u5ebe\u5ebf\u5ec0\u5ec1\u5ec2\u5ec3\u5eca\u388d\u388e\u388f\u3890\u5ec5\u5ec6\u5ec7\u5ec8\u5ec9\u5ecb\u5ecc\u9fee\u3891\u5ec4\u5ecd\u5ece\u5ecf\u5ed0\u5ed1\u5ed2\u5ed3\u5ed4\u5ed5\u5ed6\u5ed7\u5ed8\u3892\u3893\u3894\u3895\u5ed9\u5eda\u5edb\u5edc\u5edd\u5ede\u5edf\u5ee0\u5ee1\u5ee2\u5ee3\u5ee4\u3896\u3897\u3898\u5ee5\u5ee6\u5ee7\u5ee8\u5ee9\u5eea\u3899\u389a\u389b\u389c\u5eeb\u5eec\u5eed\u9f90\u389d\u5eee\u5eef\u5ef0\u389e\u5ef1\u5ef2\u5ef3\u5ef4\u5ef5\u389f\u5ef6\u5ef7\u5ef8\u5ef9\u38a0\u5efa\u5efb\u5efc\u5efd\u5efe\u5eff\u5f00\u5f01\u5f02\u5f03\u5f04\u5f05\u5f06\u5f07\u5f08\u5f09\u38a1\u5f0a\u38a2\u38a3\u5f0b\u5f0c\u5f0d\u5f0e\u5f0f\u5f10\u38a4\u38a5\u5f11\u5f12\u38a6\u5f13\u5f14\u5f15\u5f16\u38a7\u5f17\u5f18\u5f19\u5f1a\u5f1b\u5f1c\u38a8\u38a9\u38aa\u38ab\u5f1d\u5f1e\u5f1f\u5f20\u38ac\u38ad\u5f21\u5f22\u5f23\u5f24\u5f25\u5f26\u5f27\u5f28\u5f29\u5f2a\u38ae\u38af\u38b0\u38b1\u5f2b\u5f2c\u5f2d\u5f2e\u5f2f\u38b2\u38b3\u38b4\u38b5\u38b6\u38b7\u5f30\u5f31\u5f32\u5f33\u38b8\u38b9\u5f34\u5f35\u5f36\u5f37\u5f38\u5f39\u38ba\u38bb\u38bc\u5f3a\u5f3b\u5f3c\u5f3d\u5f3e\u38bd\u38be\u38bf\u5f3f\u5f40\u5f41\u5f42\u38c0\u38c1\u38c2\u5f43\u5f44\u5f45\u38c3\u5f46\u5f47\u5f48\u5f49\u38c4\u38c5\u5f4a\u5f4b\u5f4c\u5f4d\u38c6\u5f4e\u5f4f\u5f50\u5f51\u5f52\u5f53\u5f54\u5f55\u38c7\u5f56\u5f57\u5f58\u5f59\u5f5a\u5f5b\u5f5c\u38c8\u5f5d\u5f5e\u5f5f\u5f60\u5f61\u38c9\u5f62\u5f63\u5f64\u38ca\u38cb\u38cc\u38cd\u5f65\u5f66\u5f67\u5f68\u5f69\u5f6b\u5f6c\u38ce\u5f6d\u38cf\u38d0\u5f6e\u5f6f\u5f70\u38d1\u5f71\u38d2\u38d3\u5f72\u5f73\u38d4\u5f74\u5f75\u38d5\u5f76\u5f77\u5f78\u5f79\u5f7a\u5f7b\u9fc8\u9fc9\u38d6\u38d7\u5f7c\u5f7d\u5f7e\u5f7f\u5f80\u5f81\u5f82\u5f83\u5f84\u38d8\u38d9\u5f85\u5f86\u5f87\u5f88\u5f89\u5f8a\u5f8b\u5f8c\u5f8d\u5f94\u38da\u38db\u38dc\u38dd\u38de\u38df\u38e0\u38e1\u5f8e\u5f8f\u5f90\u5f91\u5f92\u5f93\u5f95\u38e2\u38e3\u5f96\u5f97\u5f98\u5f99\u5f9b\u5f9c\u5f9d\u5f9e\u5f9f\u5fa0\u5fa1\u5fa2\u5fa3\u5fa4\u38e4\u38e5\u38e6\u38e7\u38e8\u38e9\u5f9a\u5fa5\u5fa6\u5fa7\u5fa8\u5fa9\u5faa\u5fab\u38ea\u38eb\u38ec\u38ed\u38ee\u5fac\u5fad\u5fae\u5faf\u5fb0\u38ef\u5fb1\u5fb3\u5fb4\u38f0\u38f1\u38f2\u5fb2\u5fb5\u5fb6\u5fb7\u5fb8\u5fb9\u5fba\u38f3\u38f4\u5fbb\u5fbc\u38f5\u38f6\u5fbd\u5fbe\u38f7\u5fbf\u38f8\u5fc0\u5fc1\u38f9\u5fc2\u5fc3\u5fc4\u5fc5\u5fc6\u38fa\u5fc7\u5fc8\u5fc9\u5fca\u38fb\u5fcb\u5fcc\u5fcd\u5fce\u5fcf\u5fd0\u5fd1\u5fd2\u5fd3\u5fd4\u5fd5\u5fd6\u5fd7\u5fd8\u5fd9\u5fda\u5fdb\u5fdc\u38fc\u38fd\u38fe\u38ff\u3900\u5fdd\u5fde\u5fdf\u5fe0\u5fe1\u5fe2\u5fe3\u5fe4\u5fe5\u5fe6\u5fe7\u5fe8\u5fe9\u5fea\u5feb\u5fec\u5fed\u5fee\u5fef\u5ff0\u5ff1\u5ff2\u5ff3\u5ff4\u5ff5\u5ff6\u5ff7\u5ff8\u5ff9\u5ffa\u5ffb\u5ffc\u5ffd\u5ffe\u5fff\u6000\u6001\u6002\u6003\u6004\u6005\u6006\u3901\u3902\u3903\u3904\u3905\u3906\u3907\u3908\u3909\u390a\u390b\u6007\u6008\u6009\u600a\u600b\u600c\u600d\u600e\u600f\u6010\u6011\u6012\u6013\u6014\u6015\u6016\u6017\u6018\u6019\u601a\u601b\u601c\u601d\u601e\u601f\u6020\u6021\u6022\u6023\u6024\u6025\u6026\u6027\u6028\u6029\u602a\u602b\u602c\u602d\u602e\u602f\u6030\u6031\u6032\u6033\u6034\u6035\u6036\u6037\u6038\u6039\u603a\u603b\u603c\u603d\u603e\u603f\u390c\u390d\u390e\u390f\u3910\u3911\u3912\u3913\u3914\u3915\u3916\u3917\u3918\u3919\u6040\u6041\u6042\u6043\u6044\u6045\u6046\u6047\u6048\u6049\u604a\u604b\u604c\u604d\u604e\u604f\u6050\u6051\u6052\u6053\u6054\u6055\u6056\u6057\u6058\u6059\u605a\u605b\u605c\u605d\u605e\u605f\u6060\u6061\u6062\u6063\u6064\u6065\u6066\u6067\u6068\u6069\u606a\u606b\u606c\u606d\u606e\u606f\u6070\u6071\u6072\u6073\u6074\u6075\u6076\u6077\u6078\u6079\u607a\u607b\u607c\u607d\u391a\u391b\u391c\u391d\u391e\u391f\u3920\u3921\u3922\u3923\u3924\u3925\u3926\u3927\u3928\u3929\u392a\u392b\u392c\u392d\u393a\u607e\u607f\u6080\u6081\u6082\u6083\u6084\u6085\u6086\u6087\u6088\u6089\u608a\u608b\u608c\u608d\u608e\u608f\u6090\u6091\u6092\u6093\u6094\u6095\u6096\u6097\u6098\u6099\u609a\u609b\u609c\u609d\u609e\u609f\u60a0\u60a1\u60a2\u60a3\u60a4\u60a5\u60a6\u60a7\u60a8\u60a9\u60aa\u60ab\u60ac\u60ad\u60ae\u60af\u392e\u392f\u3930\u3931\u3932\u3933\u3934\u3935\u3936\u3937\u3938\u3939\u393b\u393c\u393d\u60b0\u60b1\u60b2\u60b3\u60b4\u60b5\u60b6\u60b7\u60b8\u60b9\u60ba\u60bb\u60bc\u60bd\u60be\u60bf\u60c0\u60c1\u60c2\u60c3\u60c4\u60c5\u60c6\u60c7\u60c8\u60c9\u60ca\u60cb\u60cc\u60cd\u60ce\u60cf\u60d0\u60d1\u60d2\u60d3\u60d4\u60d5\u60d6\u60d7\u60d8\u60d9\u60da\u60db\u60dc\u60dd\u60de\u60df\u60e0\u60e1\u60e2\u60e3\u60e4\u60e5\u60e6\u60e7\u60e8\u60e9\u60ea\u60eb\u60ec\u60ed\u60ee\u60ef\u393e\u393f\u3940\u3941\u3942\u3943\u3944\u3945\u3946\u3947\u3948\u3949\u394a\u394b\u394c\u394d\u394e\u394f\u3950\u3951\u3952\u3953\u3954\u3955\u3956\u3957\u3958\u3959\u60f0\u60f1\u60f2\u60f3\u60f4\u60f5\u60f6\u60f7\u60f8\u60f9\u60fa\u60fb\u60fc\u60fd\u60fe\u60ff\u6100\u6101\u6102\u6103\u6104\u6105\u6106\u6107\u6108\u6109\u610a\u610b\u610c\u610d\u610e\u610f\u6110\u6111\u6112\u6113\u6114\u6115\u6116\u6117\u6118\u6119\u611a\u611b\u611c\u611d\u611e\u611f\u6120\u6121\u6122\u6123\u6124\u6125\u6126\u6168\u395a\u395b\u395c\u395d\u395e\u395f\u3960\u3961\u3962\u3963\u3964\u3965\u3966\u3967\u3968\u3969\u396a\u396b\u6127\u6128\u6129\u612a\u612b\u612c\u612d\u612e\u612f\u6130\u6131\u6132\u6133\u6134\u6135\u6136\u6137\u6138\u6139\u613a\u613b\u613c\u613d\u613e\u613f\u6140\u6141\u6142\u6143\u6144\u6145\u6146\u6147\u6148\u6149\u614a\u614b\u614c\u614d\u614e\u614f\u6150\u6151\u396c\u396d\u396e\u396f\u3970\u3971\u3972\u3973\u3974\u3975\u3976\u3977\u3978\u3979\u397a\u397b\u6152\u6153\u6154\u6155\u6156\u6157\u6158\u6159\u615a\u615b\u615c\u615d\u615e\u615f\u6160\u6161\u6162\u6163\u6164\u6165\u6166\u6167\u6169\u616a\u616b\u616c\u616e\u616f\u6170\u6171\u6172\u6173\u6174\u6175\u6176\u6177\u6178\u6179\u617a\u617b\u617c\u617d\u617e\u617f\u6180\u6181\u6182\u6183\u6184\u6185\u6186\u6187\u6188\u397c\u397d\u397e\u397f\u3980\u3981\u3982\u3983\u3984\u3985\u3986\u3987\u3988\u616d\u6189\u618a\u618b\u618c\u618d\u618e\u618f\u6190\u6191\u6192\u6193\u6194\u6195\u6196\u6197\u6198\u6199\u619a\u619b\u619c\u619d\u619e\u619f\u61a0\u61a1\u61a2\u61a3\u61a4\u61a5\u61a6\u61a7\u61a8\u61a9\u61aa\u61ab\u61ac\u61ad\u61ae\u61af\u61b0\u61b1\u61b2\u61b3\u3989\u398a\u398b\u398c\u398d\u398e\u398f\u3990\u3991\u3992\u3993\u3994\u3995\u3996\u61b4\u61b5\u61b6\u61b7\u61b8\u61b9\u61ba\u61bc\u61bd\u61be\u61bf\u61c0\u61c1\u61c2\u61c3\u61c4\u61c5\u61c6\u61c7\u61c8\u61c9\u61ca\u61cb\u61cc\u61cd\u61ce\u61cf\u61d0\u61d1\u61d2\u61d3\u61d4\u3997\u3998\u3999\u61bb\u61d5\u61d6\u61d7\u61d8\u61d9\u61da\u61db\u61dc\u61dd\u61de\u61df\u61e0\u61e1\u61e2\u61e3\u61e4\u61e5\u61e6\u61e7\u61e8\u399a\u399b\u399c\u399d\u399e\u399f\u39a0\u61e9\u61ea\u61eb\u61ec\u61ed\u61ee\u61ef\u61f0\u61f1\u61f2\u61f3\u61f4\u39a1\u39a2\u61f5\u61f6\u61f7\u61f8\u39a3\u39a4\u39a5\u39a6\u39a7\u61f9\u61fa\u61fb\u39a8\u39a9\u39aa\u61fc\u61fd\u61fe\u61ff\u6200\u6201\u6202\u39ab\u39ac\u6203\u6204\u6205\u6206\u6207\u39ad\u6208\u6209\u620a\u620b\u620c\u620d\u620e\u620f\u6210\u6211\u6212\u6213\u39ae\u39af\u6214\u6215\u6216\u6217\u39b0\u39b1\u39b2\u6218\u39b3\u6219\u39b4\u39b5\u39b6\u621a\u621b\u621c\u621d\u39b7\u621e\u621f\u6226\u39b8\u6220\u6221\u6222\u6223\u6224\u6225\u39b9\u6227\u6228\u6229\u622a\u622b\u622c\u39ba\u622d\u622e\u622f\u6231\u39bb\u39bc\u6230\u6232\u6234\u39bd\u6233\u6235\u6236\u6237\u6238\u6239\u623a\u623b\u623c\u39be\u623d\u623e\u623f\u6240\u39bf\u39c0\u6241\u6242\u6243\u39c1\u39c2\u6244\u6245\u6246\u6247\u6248\u6249\u624a\u624b\u624c\u624d\u9fb5\u624e\u6250\u6251\u6252\u6253\u6254\u6255\u6256\u39c3\u39c4\u39c5\u624f\u6257\u6258\u6259\u625a\u625b\u625c\u625d\u625e\u6260\u6261\u6262\u6263\u6264\u6265\u6266\u6267\u6268\u6269\u626a\u626b\u626c\u39c6\u39c7\u39c8\u625f\u626d\u626e\u626f\u6270\u6271\u6272\u6273\u6274\u6275\u6276\u6277\u6279\u627a\u627b\u627c\u627d\u627e\u627f\u6280\u6281\u6282\u6283\u6284\u6285\u6286\u6287\u6288\u6289\u628a\u628b\u628c\u628d\u628e\u628f\u6290\u6291\u6292\u6293\u6294\u6295\u6296\u6297\u6298\u6299\u629a\u629b\u629c\u629d\u629e\u629f\u62a0\u62a1\u62a2\u62a3\u62a4\u62a5\u39c9\u39ca\u39cb\u39cc\u39cd\u39ce\u39cf\u39d0\u39d1\u6278\u62a6\u62a7\u62a8\u62a9\u62aa\u62ab\u62ac\u62ad\u62ae\u62af\u62b0\u62b1\u62b2\u62b3\u62b4\u62b5\u62b6\u62b7\u62b8\u62b9\u62ba\u62bb\u62bc\u62bd\u62be\u62bf\u62c0\u62c1\u62c2\u62c3\u62c4\u62c5\u62c6\u62c7\u62c8\u62c9\u62ca\u62cb\u62cc\u62cd\u62ce\u62cf\u62d0\u62d1\u62d2\u62d3\u62d4\u62d5\u62d6\u62d7\u62d8\u62d9\u62da\u62db\u62dc\u62dd\u62de\u62df\u62e0\u62e1\u62e2\u62e3\u62e4\u62e5\u62e6\u62e7\u62e8\u62e9\u39d2\u39d3\u39d4\u39d5\u39d6\u39d7\u39d8\u39d9\u39da\u39db\u39dc\u39dd\u39de\u39df\u39e0\u62ea\u62eb\u62ec\u62ed\u62ee\u62ef\u62f0\u62f1\u62f2\u62f3\u62f4\u62f5\u62f6\u62f7\u62f8\u62f9\u62fa\u62fb\u62fc\u62fd\u62fe\u62ff\u6300\u6301\u6302\u6303\u6304\u6305\u6306\u6307\u6308\u6309\u630a\u630b\u630c\u630d\u630e\u630f\u6310\u6311\u6312\u6313\u6314\u6315\u6316\u6317\u6318\u6319\u631a\u631b\u631c\u631d\u631e\u631f\u6320\u6321\u6322\u6323\u6324\u6325\u6326\u6327\u39e1\u39e2\u39e3\u39e4\u39e5\u39e6\u39e7\u39e8\u39e9\u39ea\u39eb\u39ec\u39ed\u39ee\u39ef\u39f0\u39f1\u6328\u6329\u632a\u632b\u632c\u632d\u632e\u632f\u6330\u6331\u6332\u6333\u6334\u6335\u6336\u6337\u6338\u6339\u633a\u633b\u633c\u633d\u633e\u633f\u6340\u6341\u6342\u6343\u6344\u6345\u6346\u6347\u6348\u6349\u634a\u634b\u634c\u634d\u634e\u634f\u6350\u6351\u6352\u6353\u6354\u6355\u6356\u6357\u6358\u6359\u635a\u635b\u635c\u635d\u635e\u635f\u6360\u6361\u6362\u6363\u6364\u39f2\u39f3\u39f4\u39f5\u39f6\u39f7\u39f8\u6365\u6366\u6367\u6368\u6369\u636a\u636b\u636c\u636d\u636e\u636f\u6370\u6371\u6372\u6373\u6374\u6375\u6376\u6377\u6378\u6379\u637a\u637b\u637c\u637d\u637e\u637f\u6380\u6381\u6382\u6383\u6384\u6385\u6386\u6387\u6388\u6389\u638a\u638b\u638c\u638d\u638e\u638f\u6390\u6391\u6392\u6393\u6394\u6395\u6396\u6397\u6398\u6399\u639a\u639b\u639c\u639d\u639e\u639f\u63a0\u63a1\u63a2\u63a3\u63a4\u63a5\u63a6\u63a7\u63a8\u63a9\u63aa\u63ab\u63ac\u63ad\u63ae\u63af\u63b0\u63b1\u63b3\u63b4\u63b5\u63b6\u63b7\u63b8\u63b9\u63ba\u63bb\u63bc\u63bd\u39f9\u39fa\u39fb\u39fc\u39fd\u39fe\u39ff\u3a00\u3a01\u3a02\u3a03\u3a04\u3a05\u3a06\u3a07\u3a08\u63b2\u63be\u63bf\u63c0\u63c1\u63c2\u63c3\u63c4\u63c6\u63c7\u63c8\u63c9\u63ca\u63cb\u63cc\u63cd\u63ce\u63cf\u63d0\u63d1\u63d2\u63d3\u63d4\u63d5\u63d6\u63d7\u63d8\u63d9\u63da\u63db\u63dc\u63dd\u63de\u63df\u63e0\u63e1\u63e2\u63e3\u63e4\u63e5\u63e6\u63e7\u63e8\u63e9\u63ea\u63eb\u63ec\u63ed\u63ee\u63ef\u63f0\u63f1\u63f2\u63f3\u63f4\u63f5\u63f6\u63f7\u63f8\u63f9\u63fa\u63fb\u63fc\u63fd\u63fe\u63ff\u6400\u6401\u6402\u6403\u6404\u6405\u6452\u3a09\u3a0a\u3a0b\u3a0c\u3a0d\u3a0e\u3a0f\u3a10\u3a11\u3a12\u3a13\u3a14\u3a15\u3a17\u3a18\u6406\u6407\u6408\u6409\u640a\u640b\u640c\u640d\u640e\u640f\u6410\u6411\u6412\u6413\u6414\u6415\u6416\u6417\u6418\u6419\u641a\u641b\u641c\u641d\u641e\u641f\u6420\u6421\u6422\u6423\u6424\u6425\u6426\u6427\u6428\u6429\u642a\u642b\u642c\u642d\u642e\u642f\u6430\u6432\u6433\u6434\u6435\u6436\u6437\u6438\u6439\u643a\u643b\u643c\u643d\u643e\u643f\u6440\u6441\u6442\u6443\u6444\u6445\u6446\u6447\u6448\u6449\u644a\u3a16\u3a19\u3a1a\u3a1b\u3a1c\u3a1d\u3a1e\u3a1f\u3a20\u3a21\u3a22\u3a23\u3a24\u3a25\u3a26\u3a27\u3a28\u3a29\u3a2a\u3a2b\u3a2c\u63c5\u644b\u644c\u644d\u644e\u644f\u6450\u6451\u6453\u6454\u6455\u6457\u6458\u6459\u645a\u645b\u645c\u645d\u645e\u645f\u6460\u6461\u6462\u6463\u6464\u6465\u6466\u6467\u6468\u6469\u646a\u646b\u646c\u646d\u646e\u646f\u6470\u6471\u6472\u6473\u6474\u6475\u6476\u6477\u6478\u6479\u647a\u647b\u647c\u647d\u647e\u647f\u6480\u6481\u6482\u6483\u6484\u6487\u3a2d\u3a2e\u3a2f\u3a30\u3a31\u3a32\u3a33\u3a34\u3a35\u3a36\u3a37\u3a38\u3a39\u3a3a\u3a3b\u3a3c\u3a3d\u3a3e\u3a3f\u3a40\u3a41\u3a42\u6431\u6456\u6485\u6486\u6488\u6489\u648a\u648b\u648c\u648d\u648e\u648f\u6490\u6491\u6492\u6493\u6494\u6495\u6496\u6497\u6498\u6499\u649a\u649b\u649c\u649d\u649e\u649f\u64a0\u64a1\u64a2\u64a3\u64a4\u64a5\u64a6\u64a7\u64a8\u64a9\u64aa\u64ab\u64ac\u64ad\u64ae\u64af\u64b0\u64b1\u64b2\u64b3\u64b4\u64b5\u64b6\u64b7\u64b8\u64b9\u64ba\u64c6\u3a43\u3a44\u3a45\u3a46\u3a47\u3a48\u3a49\u3a4a\u3a4b\u3a4c\u3a4d\u3a4e\u3a4f\u3a50\u3a51\u64bb\u64bc\u64bd\u64be\u64bf\u64c0\u64c1\u64c2\u64c3\u64c4\u64c5\u64c7\u64c8\u64c9\u64ca\u64cb\u64cc\u64cd\u64ce\u64cf\u64d0\u64d1\u64d2\u64d3\u64d4\u64d5\u64d6\u64d7\u64d8\u64d9\u64da\u64db\u64dc\u64dd\u64de\u3a52\u3a53\u3a54\u3a55\u3a56\u3a57\u3a58\u3a59\u64df\u64e0\u64e1\u64e2\u64e3\u64e4\u64e6\u64e7\u64e8\u64e9\u64ea\u64eb\u64ec\u64ed\u64ee\u64ef\u64f0\u64f1\u3a5a\u3a5b\u3a5c\u3a5d\u3a5e\u3a5f\u64e5\u64f2\u64f3\u64f4\u64f5\u64f6\u64f7\u64f8\u64f9\u64fa\u64fb\u64fc\u64fd\u64fe\u64ff\u6500\u6501\u6502\u6503\u6504\u6505\u6506\u3a60\u3a61\u3a62\u3a63\u3a64\u3a65\u3a66\u3a67\u3a68\u3a69\u3a6a\u3a6b\u6507\u6508\u6509\u650a\u650b\u650c\u650d\u650e\u650f\u6510\u6512\u3a6c\u3a6d\u6511\u6513\u6514\u6515\u6516\u6517\u6518\u6519\u651a\u3a6e\u3a6f\u3a70\u651b\u651c\u651d\u3a71\u3a72\u3a73\u3a74\u651e\u651f\u6520\u6521\u6522\u6523\u6524\u6526\u6527\u9fdc\u6525\u6528\u6529\u652a\u652b\u3a75\u3a76\u3a77\u652c\u652d\u652e\u3a78\u3a79\u652f\u6530\u3a7a\u6531\u3a7b\u3a7c\u3a7d\u6532\u3a7e\u6533\u6534\u6535\u6536\u6537\u6538\u6539\u653a\u653b\u653c\u3a7f\u3a80\u653d\u653e\u653f\u3a81\u3a82\u6540\u6541\u6542\u6543\u6544\u6545\u3a83\u3a84\u3a85\u3a86\u6546\u6547\u6548\u6549\u654a\u654b\u654c\u3a87\u3a88\u3a89\u555f\u654d\u654e\u654f\u6550\u6551\u6552\u6553\u6554\u6555\u6556\u6557\u6558\u6559\u655a\u655b\u3a8a\u3a8b\u3a8c\u3a8d\u3a8e\u655c\u655d\u655e\u655f\u6560\u6561\u6562\u6563\u6564\u6565\u6566\u6567\u6568\u6569\u656a\u656d\u3a8f\u3a90\u3a91\u3a92\u3a93\u3a94\u3a95\u3a96\u3a97\u3a98\u3a99\u3a9a\u656b\u656c\u656e\u656f\u6570\u3a9b\u3a9c\u3a9d\u3a9e\u3a9f\u6571\u6572\u6573\u3aa0\u3aa1\u3aa2\u3aa3\u6574\u6575\u6576\u6577\u6578\u6579\u657a\u657b\u3aa4\u3aa5\u3aa6\u657c\u657d\u657e\u657f\u3aa7\u3aa8\u3aa9\u3aaa\u6580\u6581\u6582\u6583\u8d01\u3aab\u3aac\u6584\u6585\u6586\u3aad\u3aae\u6587\u6588\u3aaf\u6589\u658a\u658b\u3ab0\u658c\u658d\u658e\u658f\u6590\u6591\u6592\u3ab1\u6593\u6594\u6595\u6596\u6597\u3ab2\u3ab3\u6598\u3ab4\u3ab5\u6599\u659a\u3ab6\u659b\u659c\u3ab7\u659d\u3ab8\u659e\u659f\u65a0\u65a1\u3ab9\u65a2\u65a3\u3aba\u3abb\u65a4\u65a5\u65a6\u65a7\u65a8\u65a9\u65aa\u65ab\u3abc\u3abd\u3abe\u3abf\u65ac\u65ad\u65ae\u65af\u3ac0\u65b0\u65b1\u65b2\u3ac1\u65b3\u3ac2\u65b4\u65b5\u65b6\u65b7\u65b8\u65b9\u3ac3\u65ba\u65bb\u65bc\u3ac4\u65bd\u65be\u65bf\u65c0\u3ac6\u65c1\u65c2\u65c3\u65c4\u65c5\u65c6\u65ca\u3ac5\u3ac7\u3ac8\u3ac9\u65c7\u65c8\u65c9\u65cb\u65cc\u65cd\u65ce\u65cf\u3aca\u3acb\u3acc\u65d0\u65d1\u3acd\u65d2\u65d3\u65d4\u65d5\u65d6\u65d7\u3ace\u3acf\u65d8\u65d9\u65da\u65db\u65dc\u65dd\u65de\u65df\u65e0\u65e1\u65e2\u65e3\u65e4\u65e5\u65e6\u65e7\u65e8\u65e9\u65ea\u65eb\u65ec\u65ed\u65ee\u65ef\u3ad0\u3ad1\u65f0\u65f1\u65f2\u65f3\u65f4\u65f5\u65f6\u65f7\u65f8\u3ad2\u3ad3\u3ad4\u3ad5\u3ad6\u3ad7\u65f9\u65fa\u65fb\u65fc\u65fd\u65fe\u65ff\u6600\u6601\u6602\u6603\u6604\u6605\u6606\u6607\u6608\u6609\u660a\u660b\u660c\u660d\u660e\u660f\u6610\u6611\u6612\u6613\u6614\u6615\u6616\u6617\u6618\u6619\u3ad8\u3ad9\u3ada\u661a\u661b\u661c\u661d\u661e\u661f\u6620\u6621\u6622\u6623\u6624\u6625\u6626\u6627\u6628\u6629\u662a\u662b\u662c\u662d\u662e\u662f\u6630\u6631\u6632\u6633\u6634\u6635\u6636\u6637\u6638\u6639\u663a\u663b\u663c\u663d\u663e\u663f\u3adb\u3adc\u3add\u3ade\u3adf\u3ae0\u3ae1\u3ae2\u3ae3\u3ae4\u6640\u6641\u6642\u6643\u6644\u6645\u6646\u6647\u6648\u6649\u664a\u664b\u664c\u664d\u664e\u664f\u6650\u6651\u6652\u6653\u6654\u6655\u6656\u3ae5\u3ae6\u3ae7\u3ae8\u3ae9\u3aea\u3aeb\u3aec\u3aed\u3aee\u52d7\u6657\u6658\u6659\u665a\u665b\u665c\u665d\u665e\u665f\u6660\u6661\u6662\u6663\u6664\u6665\u6666\u6667\u6668\u6669\u66fd\u3aef\u3af0\u3af1\u3af2\u3af3\u3af4\u666a\u666b\u666c\u666d\u666e\u666f\u6670\u6671\u6672\u6673\u6674\u6675\u6676\u6677\u6678\u6679\u667a\u667b\u667c\u667d\u667e\u667f\u6680\u6681\u6682\u6683\u6691\u3af5\u3af6\u3af7\u3af8\u3af9\u3afa\u3afb\u3afc\u3afd\u3afe\u3aff\u3b00\u6684\u6685\u6686\u6687\u6688\u6689\u668a\u668b\u668c\u668d\u668e\u668f\u6690\u6692\u6693\u6694\u6695\u6696\u6697\u6698\u6699\u3b01\u3b02\u3b03\u3b04\u3b05\u3b06\u3b07\u3b08\u3b09\u3b0a\u3b0b\u3b0c\u669a\u669b\u669c\u669d\u669e\u669f\u66a0\u66a1\u66a2\u66a3\u66a4\u66a5\u66a6\u66a7\u66a8\u3b0d\u3b0e\u3b0f\u3b10\u66a9\u66aa\u66ab\u66ac\u66ad\u66ae\u66af\u66b0\u66b1\u66b2\u66b3\u66b4\u66b5\u66b6\u66b7\u3b11\u3b12\u3b13\u3b14\u3b15\u3b16\u66b8\u66b9\u66ba\u66bb\u66bc\u66bd\u66be\u66bf\u66c0\u66c1\u66c2\u66c3\u66c4\u66c5\u66c6\u66c7\u66c8\u66c9\u66ca\u66cb\u66cc\u66cd\u9fa7\u3b17\u3b18\u3b19\u3b1a\u3b1b\u3b1c\u3b1d\u3b1e\u3b1f\u66ce\u66cf\u66d0\u66d1\u66d2\u66d3\u66d4\u66d5\u66d6\u66d7\u66da\u3b20\u3b21\u3b22\u66d8\u66d9\u66db\u66dc\u3b23\u3b24\u3b25\u3b26\u3b27\u3b28\u66dd\u66de\u66df\u66e0\u66e1\u66e2\u3b29\u3b2a\u66e3\u66e4\u66e5\u66e6\u66e7\u66e8\u3b2b\u66e9\u3b2c\u3b2d\u66ea\u66eb\u66ec\u3b2e\u66ed\u66ee\u66ef\u3b2f\u66f0\u66f1\u66f2\u66f3\u3b30\u66f4\u66f5\u66f6\u66f7\u66f8\u66fa\u66f9\u66fb\u66fc\u66fe\u66ff\u6701\u6702\u6703\u6704\u6705\u6706\u3b31\u3b32\u6707\u6708\u6709\u670a\u670b\u670c\u670d\u3b33\u4dba\u4dbb\u670e\u670f\u6710\u6712\u6713\u6714\u6715\u3b34\u3b35\u6716\u6717\u6718\u6719\u671a\u671b\u3b36\u3b37\u671c\u671d\u671e\u671f\u3b38\u4dbc\u6720\u4dbd\u6722\u3b3a\u3b3b\u81a4\u3b3c\u3b3d\u3b3e\u6723\u6724\u3b3f\u3b40\u6726\u6727\u6728\u6729\u672a\u672b\u672c\u672d\u672e\u672f\u6730\u6731\u6732\u6733\u6734\u6735\u6736\u6737\u6738\u6739\u673a\u673b\u673c\u673d\u673e\u673f\u6740\u6741\u6742\u6743\u3b41\u6744\u6745\u6746\u6747\u6748\u6749\u674a\u674b\u674c\u674d\u674e\u674f\u6750\u6751\u6752\u6753\u6754\u6755\u6756\u6757\u6758\u6759\u675a\u675b\u675c\u675d\u675e\u675f\u6760\u6761\u6762\u6763\u6764\u6765\u6766\u6767\u6768\u6769\u6781\u3b42\u3b43\u3b44\u3b45\u3b46\u676a\u676b\u676c\u676d\u676e\u676f\u6770\u6771\u6772\u6773\u6774\u6775\u6776\u6777\u6778\u6779\u677a\u677b\u677c\u677d\u677e\u677f\u6780\u6782\u6783\u6784\u6785\u6786\u6787\u6788\u6789\u678a\u678b\u678c\u678d\u678e\u678f\u6790\u6791\u6792\u6793\u6794\u6795\u6796\u6797\u6798\u6799\u679a\u679b\u679c\u679d\u679e\u679f\u67a0\u67a1\u67a2\u67a3\u67a4\u67a5\u67a6\u67a7\u67a8\u67a9\u67aa\u67ab\u67ac\u67ad\u3b47\u3b48\u3b49\u3b4a\u3b4b\u3b4c\u3b4d\u3b4e\u3b4f\u3b50\u67ae\u67af\u67b0\u67b1\u67b2\u67b3\u67b4\u67b5\u67b6\u67b7\u67b8\u67b9\u67ba\u67bb\u67bc\u67bd\u67be\u67bf\u67c0\u67c1\u67c2\u67c3\u67c4\u67c5\u67c6\u67c7\u67c8\u67c9\u67ca\u67cb\u67cc\u67cd\u67ce\u67cf\u67d0\u67d1\u67d2\u67d3\u67d4\u67d5\u67d6\u67d7\u67d8\u67d9\u67da\u67db\u67dc\u67dd\u67de\u67df\u67e0\u67e1\u67e2\u67e3\u67e4\u67e5\u67e6\u67e7\u67e8\u67e9\u67ea\u67eb\u67ec\u67ed\u67ee\u67ef\u67f0\u67f1\u67f2\u67f3\u67f4\u67f5\u67f6\u67f7\u67f8\u67f9\u67fa\u67fb\u67fc\u67fd\u67fe\u67ff\u6800\u6801\u6802\u6803\u6804\u6805\u6806\u6807\u6808\u6809\u680a\u680b\u680c\u680d\u680e\u680f\u6810\u6811\u3b51\u3b52\u3b53\u3b54\u3b55\u3b56\u3b57\u6812\u6813\u6814\u6815\u6816\u6817\u6818\u6819\u681a\u681b\u681c\u681d\u681e\u681f\u6820\u6821\u6822\u6823\u6824\u6825\u6826\u6827\u6828\u6829\u682a\u682b\u682c\u682d\u682e\u682f\u6830\u6831\u6832\u6833\u6834\u6835\u6836\u6837\u6838\u6839\u683a\u683b\u683c\u683d\u683e\u683f\u6840\u6841\u6842\u6843\u6844\u6845\u6846\u6847\u6848\u6849\u684a\u684b\u684c\u684d\u684e\u684f\u6850\u6851\u6852\u6853\u6854\u6855\u6856\u6857\u6858\u6859\u685a\u685b\u685c\u685d\u685e\u685f\u6860\u6861\u6862\u6863\u6864\u6865\u6866\u6867\u6868\u6869\u686a\u9fc4\u3b58\u3b59\u3b5a\u3b5b\u3b5c\u3b5d\u3b5e\u3b5f\u3b60\u3b61\u3b62\u3b63\u3b64\u3b65\u3b66\u3b67\u686b\u686c\u686d\u686e\u686f\u6870\u6871\u6872\u6873\u6874\u6875\u6876\u6877\u6878\u6879\u687a\u687b\u687c\u687d\u687e\u687f\u6880\u6881\u6882\u6883\u6884\u6885\u6886\u6887\u6888\u6889\u688a\u688b\u688c\u688d\u688e\u688f\u6890\u6891\u6892\u6893\u6894\u6895\u6896\u6897\u6898\u6899\u689a\u689b\u689c\u689d\u689e\u689f\u68a0\u68a1\u68a2\u68a3\u68a4\u68a5\u68a6\u68a7\u68a8\u68a9\u68aa\u68ab\u68ac\u68ad\u68ae\u68af\u68b0\u68b1\u68b2\u68b3\u68b4\u68b5\u68b6\u68b7\u68b8\u68b9\u68ba\u68bb\u68bc\u68bd\u68be\u68bf\u68c0\u68c1\u68c2\u3b68\u3b69\u3b6a\u3b6b\u3b6c\u3b6d\u3b6e\u3b6f\u3b70\u3b71\u3b72\u3b73\u3b74\u3b75\u3b77\u68c3\u68c4\u68c5\u68c6\u68c7\u68c8\u68c9\u68ca\u68cb\u68cc\u68cd\u68ce\u68cf\u68d0\u68d1\u68d2\u68d3\u68d4\u68d5\u68d6\u68d7\u68d8\u68d9\u68da\u68db\u68dc\u68dd\u68de\u68df\u68e0\u68e1\u68e2\u68e3\u68e4\u68e5\u68e6\u68e7\u68e8\u68e9\u68ea\u68eb\u68ec\u68ed\u68ee\u68ef\u68f0\u68f1\u68f2\u68f3\u68f4\u68f5\u68f6\u68f7\u68f8\u68f9\u68fa\u68fb\u68fc\u68fd\u68fe\u68ff\u6900\u6901\u6902\u6903\u6904\u6905\u6906\u6907\u6908\u6909\u690a\u690b\u690c\u690d\u690e\u690f\u6910\u6911\u6912\u6913\u6914\u6915\u6916\u6917\u6918\u6919\u691a\u691b\u691c\u691d\u691e\u691f\u6920\u6921\u6922\u6923\u6924\u6925\u6926\u6927\u6928\u6929\u692a\u692b\u692c\u692d\u692e\u3b76\u3b78\u3b79\u3b7a\u3b7b\u3b7c\u3b7d\u3b7e\u3b7f\u3b80\u3b81\u3b82\u3b83\u3b84\u3b85\u3b86\u3b87\u3b88\u3b89\u3b8a\u692f\u6930\u6931\u6932\u6933\u6934\u6935\u6936\u6937\u6938\u6939\u693a\u693b\u693c\u693d\u693e\u693f\u6940\u6941\u6942\u6943\u6944\u6945\u6946\u6947\u6948\u6949\u694a\u694b\u694c\u694d\u694e\u694f\u6950\u6951\u6952\u6953\u6954\u6955\u6956\u6957\u6958\u6959\u695a\u695b\u695c\u695d\u695e\u695f\u6960\u6961\u6962\u6963\u6964\u6965\u6966\u6967\u6968\u6969\u696a\u696b\u696c\u696d\u696e\u696f\u6970\u6971\u6972\u6973\u6974\u6975\u6976\u6977\u6978\u6979\u697a\u697b\u697c\u697d\u697e\u697f\u6980\u6981\u6982\u6983\u6984\u6985\u6986\u6987\u6988\u6989\u698b\u698c\u6994\u6998\ufa13\u3b8b\u3b8c\u3b8d\u3b8e\u3b8f\u3b90\u3b91\u3b92\u3b93\u3b94\u3b95\u3b96\u3b97\u3b98\u3b99\u3b9a\u3b9b\u3b9c\u3b9d\u3b9e\u3b9f\u3ba0\u3ba2\u3ba3\u698a\u698d\u698e\u698f\u6990\u6991\u6992\u6993\u6995\u6996\u6997\u6999\u699a\u699b\u699c\u699d\u699e\u699f\u69a0\u69a1\u69a2\u69a3\u69a4\u69a5\u69a6\u69a7\u69a8\u69a9\u69aa\u69ab\u69ac\u69ad\u69ae\u69af\u69b0\u69b1\u69b2\u69b3\u69b4\u69b5\u69b6\u69b7\u69b8\u69b9\u69ba\u69bb\u69bc\u69bd\u69be\u69bf\u69c0\u69c1\u69c2\u69c3\u69c4\u69c5\u69c6\u69c7\u69c8\u69c9\u69ca\u69cb\u69cc\u69cd\u69ce\u69cf\u69d0\u69d1\u69d2\u69d3\u69d4\u69d5\u69d6\u69d7\u69d8\u69d9\u69da\u69db\u69dc\u69dd\u69de\u69df\u69e0\u69e1\u69e9\u6a2e\ufa14\u3ba4\u3ba5\u3ba6\u3ba7\u3ba8\u3ba9\u3baa\u3bab\u3bac\u3bad\u3bae\u3baf\u3bb0\u3bb1\u3bb2\u3bb3\u3bb4\u3bb5\u3bb6\u3bb7\u3bb8\u3bb9\u3bba\u3bbb\u3bbc\u3bbd\u69e2\u69e3\u69e4\u69e5\u69e6\u69e7\u69e8\u69ea\u69eb\u69ec\u69ed\u69ee\u69ef\u69f0\u69f1\u69f2\u69f3\u69f4\u69f5\u69f6\u69f7\u69f8\u69f9\u69fa\u69fb\u69fc\u69fd\u69fe\u69ff\u6a00\u6a01\u6a02\u6a03\u6a04\u6a05\u6a06\u6a07\u6a08\u6a09\u6a0a\u6a0b\u6a0c\u6a0d\u6a0e\u6a0f\u6a10\u6a11\u6a12\u6a13\u6a14\u6a15\u6a16\u6a17\u6a18\u6a19\u6a1a\u6a1b\u6a1c\u6a1d\u6a1e\u6a1f\u6a20\u6a21\u6a22\u6a23\u6a24\u6a25\u6a26\u6a27\u6a28\u6a29\u6a2a\u6a2b\u6a2c\u6a2d\u6a2f\u6a30\u6a31\u6a65\u6a74\u3bbe\u3bbf\u3bc0\u3bc1\u3bc2\u3bc3\u3bc4\u3bc5\u3bc6\u3bc7\u3bc8\u3bc9\u3bca\u3bcb\u3bcc\u3bcd\u3bce\u3bcf\u3bd1\u3bd2\u3be0\u6a32\u6a33\u6a34\u6a35\u6a36\u6a37\u6a38\u6a39\u6a3a\u6a3b\u6a3c\u6a3d\u6a3e\u6a3f\u6a40\u6a41\u6a42\u6a43\u6a44\u6a45\u6a46\u6a47\u6a48\u6a49\u6a4a\u6a4b\u6a4c\u6a4d\u6a4e\u6a4f\u6a50\u6a51\u6a52\u6a53\u6a54\u6a55\u6a56\u6a57\u6a58\u6a59\u6a5a\u6a5b\u6a5c\u6a5d\u6a5e\u6a5f\u6a60\u6a61\u6a62\u6a63\u6a64\u6a66\u6a67\u6a68\u6a69\u6a6a\u6a6b\u6a6c\u6a6d\u6a6e\u6a6f\u6a70\u6a71\u6a72\u6a73\u6a75\u6a76\u6a77\u6a78\u6a79\u6a7a\u6a7b\u6a7c\u3bd0\u3bd3\u3bd4\u3bd5\u3bd6\u3bd7\u3bd8\u3bd9\u3bda\u3bdb\u3bdc\u3bdd\u3bde\u3bdf\u3be1\u3be2\u3be3\u3be4\u3be5\u3be6\u3be7\u3be8\u3be9\u6a7d\u6a7e\u6a7f\u6a80\u6a81\u6a82\u6a83\u6a84\u6a85\u6a86\u6a87\u6a88\u6a89\u6a8a\u6a8b\u6a8c\u6a8d\u6a8e\u6a8f\u6a90\u6a91\u6a92\u6a93\u6a94\u6a95\u6a96\u6a97\u6a98\u6a99\u6a9a\u6a9b\u6a9c\u6a9d\u6a9e\u6a9f\u6aa0\u6aa1\u6aa2\u6aa3\u6aa4\u6aa5\u6aa6\u6aa7\u6aa8\u6aa9\u6aaa\u3bea\u3beb\u3bec\u3bed\u3bee\u3bef\u3bf0\u3bf1\u3bf2\u3bf3\u3bf4\u3bf5\u3bf6\u6aab\u6aac\u6aad\u6aae\u6aaf\u6ab0\u6ab1\u6ab2\u6ab3\u6ab4\u6ab5\u6ab6\u6ab7\u6ab8\u6ab9\u6aba\u6abb\u6abc\u6abd\u6abe\u6abf\u6ac0\u6ac1\u6ac2\u6ac3\u6ac4\u6ac5\u6ac6\u6ac7\u6ac8\u6ac9\u6aca\u3bf7\u3bf8\u3bf9\u3bfa\u3bfb\u3bfc\u3bfd\u6acb\u6acc\u6acd\u6ace\u6acf\u6ad0\u6ad1\u6ad2\u6ad3\u6ad4\u6ad5\u6ad6\u6ad7\u6ad8\u6ad9\u6ada\u6adb\u6adc\u6add\u6ade\u6adf\u6ae0\u6ae1\u6ae2\u6ae3\u6ae4\u6ae5\u6ae6\u6aeb\u6aed\u3bfe\u3bff\u3c00\u3c01\u3c02\u3c03\u3c04\u3c05\u3c06\u3c07\u3c08\u6ae7\u6ae8\u6ae9\u6aea\u6aec\u6aee\u6aef\u6af0\u6af1\u6af2\u6af3\u6af4\u6af5\u6af6\u3c09\u3c0a\u3c0b\u3c0c\u3c0d\u3c0e\u3c0f\u3c10\u3c11\u3c12\u3c13\u3c16\u6af8\u6af9\u6afa\u6afb\u6afc\u6afd\u6afe\u6aff\u6b00\u6b01\u6b02\u6b03\u6b04\u6b05\u6b0c\u3c14\u3c15\u6af7\u6b06\u6b07\u6b08\u6b09\u6b0a\u6b0b\u6b0d\u6b0e\u3c17\u3c18\u6b0f\u6b10\u6b11\u6b12\u3c19\u3c1a\u3c1b\u3c1c\u6b13\u6b14\u6b15\u6b16\u6b17\u6b18\u6b19\u6b1a\u6b1b\u6b1c\u6b1d\u9fdd\u6b1e\u6b1f\u6b20\u6b21\u6b22\u6b24\u3c1d\u3c1e\u6b23\u6b25\u6b26\u6b27\u3c1f\u3c20\u3c21\u3c22\u6b28\u6b29\u6b2a\u3c23\u3c24\u3c25\u3c26\u3c27\u3c28\u6b2b\u6b2c\u6b2d\u6b2e\u6b2f\u6b30\u6b31\u3c29\u3c2a\u3c2b\u3c2c\u3c2d\u4dbe\u6b32\u6b33\u6b34\u6b35\u6b36\u6b37\u6b38\u3c2e\u3c2f\u3c30\u3c31\u6b39\u6b3a\u6b3b\u6b3c\u6b3d\u6b3e\u6b3f\u3c32\u3c33\u3c34\u3c35\u3c36\u3c38\u6b40\u6b41\u6b42\u6b43\u6b44\u6b45\u6b46\u6b47\u6b48\u3c39\u3c3a\u3c3b\u3c3c\u3c3d\u3c3e\u6b49\u6b4a\u6b4b\u6b4c\u6b4d\u3c3f\u3c40\u3c41\u6b4e\u6b4f\u6b50\u6b51\u6b52\u6b53\u3c42\u3c43\u6b54\u6b55\u6b56\u6b57\u6b58\u6b59\u6b5a\u3c44\u3c45\u6b5b\u6b5c\u6b5d\u3c46\u3c47\u3c48\u3c49\u6b5e\u6b5f\u6b60\u3c4a\u3c4b\u6b61\u3c4c\u3c4d\u3c4e\u6b62\u9fb0\u6b63\u6b64\u3c4f\u6b65\u3c50\u3c51\u6b66\u6b67\u6b68\u6b69\u6b6a\u6b6b\u3c52\u3c53\u3c54\u6b6c\u6b6d\u6b6e\u6b6f\u3c55\u3c56\u6b70\u6b71\u6b72\u6b73\u6b74\u3c57\u6b75\u6b76\u6b77\u6b78\u3c58\u6b79\u6b7a\u6b7b\u3c59\u6b7c\u6b7d\u6b7e\u6b7f\u6b80\u6b81\u3c5a\u3c5b\u3c5c\u3c5d\u6b82\u6b83\u6b84\u6b85\u6b86\u6b87\u3c5e\u3c5f\u3c60\u6b88\u6b89\u6b8a\u6b8b\u3c37\u3c61\u6b8c\u6b8d\u6b8e\u6b8f\u6b90\u6b91\u6b92\u6b93\u3c62\u3c63\u6b94\u6b95\u6b96\u6b97\u6b98\u6b99\u6b9a\u3c64\u3c65\u3c66\u3c67\u3c68\u3c69\u6b9b\u6b9c\u3c6a\u3c6b\u3c6c\u3c6d\u3c6e\u6b9d\u6b9e\u6b9f\u6ba0\u6ba1\u3c6f\u3c70\u3c71\u3c72\u6ba2\u6ba3\u6ba4\u6ba5\u6ba6\u3c73\u3c74\u6ba7\u6ba8\u6ba9\u6baa\u6bab\u3c75\u3c76\u3c77\u6bac\u6bad\u6bae\u3c78\u6baf\u6bb0\u6bb1\u9fde\u3c79\u3c7a\u6bb2\u3c7b\u6bb3\u3c7c\u6bb4\u3c7d\u6bb5\u6bb6\u6bb7\u3c7e\u3c7f\u6bb8\u6bb9\u6bba\u6bbb\u3c80\u6bbc\u6bbd\u3c81\u3c82\u3c83\u6bbe\u6bbf\u6bc0\u6bc1\u6bc2\u3c84\u6bc3\u6bc4\u3c85\u6bc5\u6bc6\u6bc7\u6bc8\u3c86\u3c87\u3c88\u3c89\u3c8a\u6bc9\u6bca\u6bcb\u6bcc\u6bcd\u6bce\u6bcf\u6bd0\u6bd1\u6bd2\u6bd3\u6bd4\u6bd5\u6bd6\u6bd7\u6bd8\u3c8b\u6bd9\u6bda\u6bdb\u3c8c\u6bdc\u6bdd\u6bde\u6bdf\u3c8d\u3c8e\u3c8f\u3c90\u3c91\u6be0\u6be1\u3c92\u6be2\u6be3\u6be4\u6be5\u6be6\u6be7\u6be8\u6be9\u6bea\u3c93\u6beb\u6bec\u6bed\u6bee\u3c94\u3c95\u3c96\u3c97\u3c98\u3c99\u3c9a\u6bef\u6bf0\u6bf1\u6bf2\u6bf3\u6bf4\u6bf5\u6bf6\u3c9b\u3c9c\u3c9d\u3c9e\u6bf7\u6bf8\u6bf9\u6bfa\u6bfb\u6bfc\u6bfd\u3c9f\u3ca0\u3ca1\u3ca2\u3ca3\u6bfe\u3ca4\u3ca5\u3ca6\u3ca7\u3ca8\u3ca9\u6bff\u6c00\u6c01\u6c02\u6c03\u6c04\u6c05\u6c06\u6c07\u3caa\u3cab\u3cac\u3cad\u3cae\u6c08\u6c09\u6c0a\u6c0b\u3caf\u3cb0\u6c0c\u3cb1\u6c0d\u6c0e\u3cb2\u6c0f\u6c10\u6c11\u6c12\u6c13\u3cb3\u6c14\u6c15\u6c16\u6c17\u6c18\u6c19\u6c1a\u6c1b\u6c1c\u6c1d\u3cb4\u6c1e\u6c1f\u6c20\u6c21\u6c22\u6c23\u6c24\u6c25\u6c26\u6c27\u6c28\u6c29\u6c2a\u6c2b\u3cb5\u6c2c\u6c2d\u6c2e\u6c2f\u6c30\u6c31\u6c32\u6c33\u3cb6\u3cb7\u9feb\u6c34\u6c35\u6c3a\u6c36\u6c37\u6c38\u6c39\u3cb8\u6c3b\u6c3c\u6c3e\u6c3f\u6c40\u6c41\u6c42\u6c43\u6c44\u6c45\u6c46\u6c47\u6c48\u6c49\u3cb9\u3cba\u3cbb\u3cbc\u6c4a\u6c4b\u6c4c\u6c4d\u6c4e\u6c4f\u6c50\u6c51\u6c52\u6c53\u6c54\u6c55\u6c56\u6c57\u6c58\u6c59\u6c5a\u6c5b\u6c5c\u6c5d\u6c5e\u6c5f\u6c60\u6c61\u6c62\u6c63\u6c64\u3cbd\u3cbe\u3cbf\u6c65\u6c66\u6c67\u6c68\u6c69\u6c6a\u6c6b\u6c6c\u6c6d\u6c6e\u6c6f\u6c70\u6c71\u6c72\u6c73\u6c74\u6c75\u6c76\u6c77\u6c78\u6c79\u6c7a\u6c7b\u6c7c\u6c7d\u6c7e\u6c7f\u6c80\u6c81\u6c82\u6c83\u6c84\u6c85\u6c86\u6c87\u6c88\u6c89\u6c8a\u6c8b\u6c8c\u6c8d\u6c8e\u6c8f\u6c90\u6c91\u6c92\u6c93\u6c94\u6c95\u6c96\u6c97\u6c98\u6c99\u6c9a\u6c9b\u6c9c\u6c9d\u6c9e\u6c9f\u6ca0\u6ca1\u6ca2\u6ca3\u6ca4\u6ca5\u6ca6\u6ca7\u6ca8\u6ca9\u6caa\u3cc0\u3cc1\u3cc2\u3cc3\u3cc4\u3cc5\u3cc6\u3cc7\u3cc8\u3cc9\u3cca\u6cab\u6cac\u6cad\u6cae\u6caf\u6cb0\u6cb1\u6cb2\u6cb3\u6cb4\u6cb5\u6cb6\u6cb7\u6cb8\u6cb9\u6cba\u6cbb\u6cbc\u6cbd\u6cbe\u6cbf\u6cc0\u6cc1\u6cc2\u6cc3\u6cc4\u6cc5\u6cc6\u6cc7\u6cc8\u6cc9\u6cca\u6ccb\u6ccc\u6ccd\u6cce\u6ccf\u6cd0\u6cd1\u6cd2\u6cd3\u6cd4\u6cd5\u6cd6\u6cd7\u6cd8\u6cd9\u6cdb\u6cdc\u6cdd\u6cde\u6cdf\u6ce0\u6ce1\u6ce2\u6ce3\u6ce4\u6ce5\u6ce6\u6ce7\u6ce8\u6ce9\u6cea\u6ceb\u6cec\u6ced\u6cee\u6cef\u6cf0\u6cf1\u6cf2\u6cf3\u6cf4\u6cf6\u6cf7\u6cf8\u6cf9\u6cfa\u6cfb\u6cfc\u6cfd\u6cfe\u3ccb\u3ccc\u3ccd\u3cce\u3ccf\u3cd0\u3cd1\u3cd2\u3cd3\u3cd4\u3cd5\u6cda\u6cff\u6d00\u6d01\u6d02\u6d03\u6d04\u6d05\u6d06\u6d07\u6d08\u6d09\u6d0a\u6d0b\u6d0c\u6d0e\u6d0f\u6d10\u6d11\u6d12\u6d13\u6d14\u6d15\u6d17\u6d18\u6d19\u6d1a\u6d1b\u6d1c\u6d1d\u6d1e\u6d1f\u6d20\u6d21\u6d22\u6d23\u6d24\u6d25\u6d26\u6d27\u6d28\u6d29\u6d2a\u6d2b\u6d2c\u6d2d\u6d2e\u6d2f\u6d30\u6d31\u6d32\u6d33\u6d34\u6d35\u6d36\u6d37\u6d38\u6d39\u6d3a\u6d3b\u6d3c\u6d3d\u6d3e\u6d3f\u6d40\u6d41\u6d42\u6d43\u6d44\u6d45\u6d46\u6d47\u6d48\u6d49\u6d4a\u6d4b\u6d4c\u6d4d\u6d4e\u6d4f\u6d50\u6d51\u6d52\u6d53\u6d54\u6d55\u3cd6\u3cd7\u3cd8\u3cd9\u3cda\u3cdb\u3cdc\u3cdd\u3cde\u3cdf\u3ce0\u3ce1\u3ce2\u3ce3\u6d0d\u6d16\u6d56\u6d57\u6d58\u6d59\u6d5a\u6d5b\u6d5c\u6d5d\u6d5e\u6d5f\u6d60\u6d61\u6d62\u6d63\u6d64\u6d65\u6d66\u6d67\u6d68\u6d69\u6d6a\u6d6b\u6d6c\u6d6d\u6d6e\u6d6f\u6d70\u6d71\u6d72\u6d73\u6d74\u6d75\u6d76\u6d77\u6d78\u6d79\u6d7a\u6d7b\u6d7c\u6d7d\u6d7e\u6d7f\u6d80\u6d81\u6d82\u6d83\u6d84\u6d85\u6d86\u6d87\u6d88\u6d89\u6d8a\u6d8b\u6d8c\u6d8d\u6d8e\u6d8f\u6d90\u6d91\u6d92\u6d93\u6d94\u6d95\u6d96\u6d97\u6d98\u6d9a\u6d9b\u6d9c\u6d9d\u6d9e\u6d9f\u6da0\u6da1\u6da2\u6da3\u6da4\u6da5\u6da6\u6da7\u6da8\u6da9\u3ce4\u3ce5\u3ce6\u3ce7\u3ce8\u3ce9\u3cea\u3ceb\u3cec\u3ced\u3cee\u3cef\u3cf0\u3cf1\u3cf2\u3cf3\u6d99\u6daa\u6dab\u6dac\u6dad\u6dae\u6daf\u6db0\u6db1\u6db2\u6db3\u6db4\u6db5\u6db6\u6db7\u6db8\u6db9\u6dba\u6dbb\u6dbc\u6dbd\u6dbe\u6dbf\u6dc0\u6dc1\u6dc2\u6dc3\u6dc4\u6dc5\u6dc6\u6dc7\u6dc8\u6dc9\u6dca\u6dcb\u6dcc\u6dcd\u6dce\u6dcf\u6dd0\u6dd1\u6dd2\u6dd3\u6dd4\u6dd5\u6dd6\u6dd7\u6dd8\u6dd9\u6dda\u6ddb\u6ddc\u6ddd\u6dde\u6ddf\u6de0\u6de1\u6de2\u6de3\u6de4\u6de5\u6de6\u6de7\u6de8\u6de9\u6dea\u6deb\u6dec\u6ded\u6dee\u6def\u6df0\u6df1\u6df2\u6df3\u6df4\u6df5\u6df6\u6df7\u6df8\u6df9\u6dfa\u6dfb\u6dfc\u6dfd\u6dfe\u6dff\u6e00\u6e01\u6e02\u6e04\u6e05\u6e06\u6e07\u6e08\u6e09\u6e0a\u6e0b\u6e0c\u6e0d\u6e0e\u6e0f\u6e10\u6e11\u6e12\u6e13\u6e14\u6e15\u6e16\u6e17\u6e1a\u6e74\u3cf4\u3cf5\u3cf6\u3cf7\u3cf8\u3cf9\u3cfa\u3cfb\u3cfc\u3cfd\u3cfe\u3cff\u3d00\u3d01\u3d02\u3d03\u3d04\u3d05\u3d06\u3d07\u3d08\u3d09\u3d0a\u3d0b\u3d0c\u3d0d\u3d0e\u6e03\u6e18\u6e19\u6e1b\u6e1c\u6e1d\u6e1e\u6e1f\u6e20\u6e21\u6e22\u6e23\u6e24\u6e25\u6e26\u6e27\u6e28\u6e29\u6e2a\u6e2b\u6e2c\u6e2d\u6e2e\u6e2f\u6e30\u6e31\u6e32\u6e33\u6e34\u6e35\u6e36\u6e37\u6e38\u6e39\u6e3a\u6e3b\u6e3c\u6e3d\u6e3e\u6e3f\u6e40\u6e41\u6e42\u6e43\u6e44\u6e45\u6e46\u6e47\u6e48\u6e49\u6e4a\u6e4b\u6e4c\u6e4d\u6e4e\u6e4f\u6e50\u6e51\u6e52\u6e53\u6e54\u6e55\u6e56\u6e57\u6e58\u6e59\u6e5a\u6e5b\u6e5c\u6e5d\u6e5e\u6e5f\u6e60\u6e61\u6e62\u6e63\u6e64\u6e65\u6e66\u6e67\u6e68\u6e69\u6e6a\u6e6b\u6e6c\u6e6d\u6e6e\u6e6f\u6e70\u6e71\u6e72\u6e73\u6e75\u6e76\u6e77\u6e78\u6e79\u6e7a\u6e7b\u6e7c\u6e7d\u6e7e\u6e7f\u6e80\u6e81\u6e82\u6e83\u6e84\u6e85\u6e86\u6e87\u6e88\u6e89\u6e8a\u6e8b\u6e8c\u6ecb\u6ede\u9fcc\u3d0f\u3d10\u3d11\u3d12\u3d13\u3d14\u3d15\u3d16\u3d17\u3d18\u3d19\u3d1a\u3d1b\u3d1c\u3d1d\u3d1e\u3d1f\u3d20\u3d21\u3d22\u3d23\u3d24\u6e8d\u6e8e\u6e8f\u6e90\u6e91\u6e92\u6e93\u6e94\u6e95\u6e96\u6e97\u6e98\u6e99\u6e9a\u6e9b\u6e9c\u6e9d\u6e9e\u6e9f\u6ea0\u6ea1\u6ea2\u6ea3\u6ea4\u6ea5\u6ea6\u6ea7\u6ea8\u6ea9\u6eaa\u6eab\u6eac\u6ead\u6eae\u6eaf\u6eb0\u6eb1\u6eb2\u6eb3\u6eb4\u6eb5\u6eb6\u6eb7\u6eb8\u6eb9\u6eba\u6ebb\u6ebc\u6ebd\u6ebe\u6ebf\u6ec0\u6ec1\u6ec2\u6ec3\u6ec4\u6ec5\u6ec6\u6ec7\u6ec8\u6ec9\u6eca\u6ecd\u6ece\u6ecf\u6ed0\u6ed1\u6ed2\u6ed3\u6ed4\u6ed5\u6ed6\u6ed7\u6ed8\u6ed9\u6edb\u6edc\u6edd\u6edf\u6ee0\u6ee1\u6ee2\u6ee3\u6ee4\u6ee5\u6ee6\u6ee7\u6ee8\u6ee9\u6eea\u6f13\u3d25\u3d26\u3d27\u3d28\u3d29\u3d2a\u3d2b\u3d2c\u3d2d\u3d2e\u3d2f\u3d30\u3d31\u3d32\u3d33\u3d34\u3d35\u3d36\u3d37\u3d38\u3d39\u3d3a\u3d3b\u6ecc\u6eda\u6eeb\u6eec\u6eed\u6eee\u6eef\u6ef0\u6ef1\u6ef2\u6ef3\u6ef4\u6ef5\u6ef6\u6ef7\u6ef8\u6ef9\u6efa\u6efb\u6efc\u6efd\u6efe\u6eff\u6f00\u6f01\u6f02\u6f03\u6f04\u6f05\u6f06\u6f07\u6f08\u6f09\u6f0a\u6f0c\u6f0d\u6f0e\u6f0f\u6f10\u6f11\u6f12\u6f14\u6f15\u6f16\u6f17\u6f18\u6f19\u6f1a\u6f1b\u6f1c\u6f1d\u6f1e\u6f1f\u6f20\u6f21\u6f22\u6f23\u6f24\u6f25\u6f26\u6f27\u6f28\u6f29\u6f2a\u6f2b\u6f2c\u6f2d\u6f2e\u6f2f\u6f30\u6f31\u6f32\u6f33\u6f34\u6f35\u6f36\u6f37\u6f38\u6f39\u6f3a\u6f3b\u6f3c\u6f3e\u6f3f\u6f40\u6f41\u6f42\u6f43\u6f44\u6f45\u6f46\u6f47\u6f48\u6f49\u6f4a\u6f4b\u6f4c\u6f4d\u3d3c\u3d3d\u3d3e\u3d3f\u3d40\u3d41\u3d42\u3d43\u3d44\u3d45\u3d46\u3d47\u3d48\u3d49\u6f0b\u6f3d\u6f4e\u6f4f\u6f50\u6f51\u6f52\u6f53\u6f54\u6f55\u6f56\u6f57\u6f58\u6f59\u6f5a\u6f5b\u6f5c\u6f5d\u6f5e\u6f5f\u6f60\u6f61\u6f62\u6f63\u6f64\u6f65\u6f66\u6f67\u6f68\u6f69\u6f6a\u6f6b\u6f6c\u6f6d\u6f6e\u6f6f\u6f70\u6f71\u6f72\u6f73\u6f74\u6f75\u6f76\u6f77\u6f78\u6f79\u6f7a\u6f7b\u6f7c\u6f7d\u6f7e\u6f7f\u6f81\u6f82\u6f83\u6f84\u6f85\u6f86\u6f87\u6f88\u6f89\u6f8a\u6f8b\u6f8c\u6f8d\u6f8e\u6f8f\u6f90\u6f91\u6f92\u6f93\u6f94\u6f95\u6f96\u6f97\u6f98\u6f9a\u6f9b\u6f9c\u6f9d\u6fd0\u9ff0\u3d4a\u3d4b\u3d4c\u3d4d\u3d4e\u3d4f\u3d50\u3d51\u3d52\u3d53\u3d54\u3d55\u3d56\u3d57\u3d58\u3d59\u3d5a\u3d5b\u3d5c\u6f99\u6f9e\u6f9f\u6fa0\u6fa1\u6fa2\u6fa3\u6fa4\u6fa5\u6fa6\u6fa7\u6fa8\u6fa9\u6faa\u6fab\u6fac\u6fad\u6fae\u6faf\u6fb0\u6fb1\u6fb2\u6fb3\u6fb4\u6fb5\u6fb6\u6fb7\u6fb8\u6fb9\u6fba\u6fbb\u6fbc\u6fbd\u6fbe\u6fbf\u6fc0\u6fc1\u6fc2\u6fc3\u6fc4\u6fc5\u6fc6\u6fc7\u6fc8\u6fc9\u6fca\u6fcb\u6fcc\u6fcd\u6fce\u6fcf\u6fd1\u6fd2\u6fd3\u6fd6\u3d5d\u3d5e\u3d5f\u3d60\u3d61\u3d62\u3d63\u3d64\u3d65\u3d66\u3d67\u3d68\u3d69\u3d6a\u3d6b\u3d6c\u3d6d\u3d6e\u6f80\u6fd4\u6fd5\u6fd7\u6fd8\u6fd9\u6fda\u6fdb\u6fdc\u6fdd\u6fde\u6fdf\u6fe0\u6fe1\u6fe2\u6fe3\u6fe4\u6fe5\u6fe6\u6fe7\u6fe8\u6fe9\u6fea\u6feb\u6fec\u6fed\u6fee\u6fef\u6ff0\u6ff1\u6ff2\u6ff4\u6ff5\u6ff6\u6ff7\u6ff8\u3d6f\u3d70\u3d71\u3d72\u3d73\u3d74\u3d75\u3d76\u3d77\u3d78\u3d79\u3d7a\u3d7b\u3d7c\u6ff9\u6ffa\u6ffb\u6ffc\u6ffd\u6ffe\u6fff\u7000\u7001\u7002\u7003\u7004\u7005\u7006\u7007\u7008\u7009\u700a\u700b\u700c\u700d\u700e\u700f\u7010\u7011\u7012\u7013\u7014\u3d7d\u3d7e\u3d7f\u3d80\u3d81\u3d82\u3d83\u6ff3\u7015\u7016\u7017\u7018\u7019\u701a\u701b\u701c\u701d\u701e\u701f\u7020\u7021\u7022\u7023\u7024\u7025\u7026\u7027\u7028\u7029\u702a\u702b\u702c\u702d\u702e\u3d84\u3d85\u3d86\u3d87\u3d88\u3d89\u3d8a\u3d8b\u702f\u7030\u7031\u7032\u7033\u7034\u7035\u7036\u7037\u7038\u7039\u703a\u703b\u703c\u703d\u703e\u703f\u7040\u7041\u3d8c\u3d8d\u3d8e\u3d8f\u3d90\u3d91\u7042\u7043\u7044\u7045\u7046\u7047\u7048\u7049\u704a\u704b\u704c\u704d\u704f\u7050\u3d92\u3d93\u3d94\u3d95\u3d96\u3d97\u3d98\u7051\u7052\u7053\u7054\u7055\u7056\u7057\u7058\u3d99\u3d9a\u7059\u705a\u705b\u705c\u3d9b\u3d9c\u3d9d\u705d\u705e\u705f\u7060\u7061\u3d9e\u3d9f\u7062\u7063\u704e\u7064\u7065\u7066\u3da0\u7067\u7068\u7069\u706a\u706b\u706c\u706d\u706e\u706f\u7070\u7071\u7072\u7073\u7087\u3da1\u3da2\u7074\u7075\u7076\u7077\u7078\u7079\u707a\u707b\u707c\u707d\u707e\u707f\u7080\u3da3\u3da4\u3da5\u7081\u7082\u7083\u7084\u7085\u7086\u7088\u7089\u708a\u708b\u708c\u708d\u708e\u708f\u7090\u7091\u7092\u7093\u7094\u7095\u7096\u7097\u7098\u7099\u709a\u709b\u709c\u709d\u709e\u3da6\u3da7\u3da8\u3da9\u3daa\u709f\u70a0\u70a1\u70a2\u70a3\u70a4\u70a5\u70a6\u70a7\u70a8\u70a9\u70aa\u70ab\u70ac\u70ad\u70ae\u70af\u70b0\u70b1\u70b2\u70b3\u70b4\u70b5\u70b6\u70b7\u70b8\u70b9\u70ba\u70bb\u70bc\u70bd\u70be\u70bf\u70c0\u70c1\u70c2\u70c3\u3dab\u3dac\u3dad\u3dae\u3daf\u3db0\u3db1\u3db2\u70c4\u70c5\u70c6\u70c7\u70c8\u70c9\u70ca\u70cb\u70cc\u70cd\u70ce\u70cf\u70d0\u70d1\u70d2\u70d3\u70d4\u70d5\u70d6\u70d7\u70d8\u70d9\u70da\u70db\u70dc\u70dd\u70de\u70df\u70e0\u70e1\u70e2\u70e3\u70e4\u70e5\u70e6\u70e7\u70e8\u70e9\u70ea\u70eb\u70ec\u70ed\u70ee\u3db3\u3db4\u3db5\u3db6\u3db7\u3db8\u70ef\u70f0\u70f1\u70f2\u70f3\u70f4\u70f5\u70f6\u70f7\u70f8\u70f9\u70fa\u70fb\u70fc\u70fd\u70fe\u70ff\u7100\u7101\u7102\u7103\u7104\u7105\u7106\u7107\u7108\u7109\u710a\u710b\u710c\u710d\u710e\u710f\u7110\u7111\u7112\u7113\u7115\u7116\u7117\u7118\u3db9\u3dba\u3dbb\u3dbc\u3dbd\u3dbe\u3dbf\u3dc0\u3dc1\u7114\u7119\u711a\u711b\u711c\u711d\u711e\u711f\u7120\u7121\u7122\u7123\u7124\u7125\u7126\u7127\u7128\u7129\u712a\u712b\u712c\u712d\u712e\u712f\u7130\u7131\u7132\u7133\u7134\u7135\u7136\u7137\u7138\u7139\u713a\u713b\u713c\u713d\u713e\u713f\u7140\u716e\u3dc2\u3dc3\u3dc4\u3dc5\u3dc6\u3dc7\u3dc8\u3dc9\u3dca\u3dcb\u3dcc\u3dcd\u7141\u7142\u7143\u7144\u7145\u7146\u7147\u7148\u7149\u714a\u714b\u714c\u714d\u714e\u714f\u7150\u7151\u7152\u7153\u7154\u7155\u7156\u7157\u7158\u7159\u715a\u715b\u715c\u715d\u715e\u715f\u7160\u7161\u7162\u7163\u7164\u7165\u7166\u7167\u7168\u7169\u716a\u716b\u716c\u716d\u716f\u7170\u7171\u7172\u7173\u7174\u7175\u7176\u7177\u7178\u717a\u3ba1\u3dce\u3dcf\u3dd0\u3dd1\u3dd2\u3dd3\u3dd4\u3dd5\u3dd6\u3dd7\u3dd8\u3dd9\u3dda\u3ddb\u3ddc\u3ddd\u3dde\u7179\u717b\u717c\u717d\u717e\u717f\u7180\u7181\u7182\u7183\u7184\u7185\u7186\u7187\u7188\u7189\u718a\u718b\u718c\u718d\u718e\u718f\u7190\u7191\u7192\u7193\u7194\u7195\u7196\u7197\u7198\u7199\u71a6\u84b8\u3ddf\u3de0\u3de1\u3de2\u3de3\u3de4\u3de5\u3de6\u3de7\u3de8\u3de9\u3dea\u719a\u719b\u719c\u719d\u719e\u719f\u71a0\u71a1\u71a2\u71a3\u71a4\u71a5\u71a7\u71a8\u71a9\u71aa\u71ab\u71ac\u71ad\u71ae\u71af\u71b0\u71b1\u71b2\u71b3\u71b4\u71b5\u9ed9\u9fa6\u9fbd\u3deb\u3dec\u3ded\u3dee\u3def\u3df0\u3df1\u3df2\u71b6\u71b7\u71b8\u71b9\u71ba\u71bb\u71bc\u71bd\u71be\u71bf\u71c0\u71c1\u71c2\u71c3\u71c4\u71c5\u71c6\u71c7\u71c8\u71c9\u71ca\u71cb\u71cc\u71cd\u71ce\u71cf\u71d0\u71d1\u71d2\u71d3\u71d4\u71d5\u71d6\u71d7\u71d8\u71d9\u71da\u71db\u71dc\u71dd\u71de\u3df3\u3df4\u3df5\u3df6\u3df7\u3df8\u3df9\u3dfa\u3dfb\u3dfc\u3dfd\u71df\u71e0\u71e1\u71e2\u71e3\u71e4\u71e5\u71e6\u71e7\u71e8\u71e9\u71ea\u71eb\u71ec\u71ed\u71ee\u71ef\u71f0\u71f1\u71f2\u71f3\u71f4\u71f5\u71f6\u71f7\u9fea\u3dfe\u3dff\u3e00\u3e01\u3e02\u3e03\u71f8\u71f9\u71fa\u71fb\u71fc\u71fd\u71fe\u71ff\u7200\u7201\u7202\u7203\u3e04\u3e05\u7204\u7205\u7206\u7207\u7208\u7209\u720a\u720c\u720d\u720e\u7215\u3e06\u3e07\u3e09\u720b\u720f\u7210\u7211\u7212\u7213\u7214\u7216\u7217\u7218\u3e08\u3e0a\u3e0b\u3e0c\u7219\u721a\u721b\u3e0d\u721c\u721d\u721e\u721f\u7220\u3e0e\u7221\u7222\u3e0f\u3e10\u7223\u7224\u7225\u7226\u3e11\u7227\u7228\u7229\u722a\u722b\u722c\u722d\u3e12\u3e13\u722e\u722f\u7230\u7231\u3e14\u7232\u7233\u3e15\u5655\u7234\u7235\u7236\u7237\u7238\u3e16\u7239\u3e17\u3e18\u723a\u3e19\u723b\u3e1a\u723c\u723d\u723e\u4e2c\u723f\u7240\u7241\u3e1b\u7242\u3e1c\u7243\u7244\u7245\u7246\u7247\u7248\u3e1d\u3e1e\u7249\u724a\u3e1f\u3e20\u3e21\u724b\u724c\u724d\u724e\u724f\u7250\u7251\u7252\u7253\u7254\u3e22\u7255\u7256\u7257\u3e23\u3e24\u7258\u3e25\u7259\u3e26\u3e27\u725a\u725b\u725c\u725d\u725e\u725f\u3e28\u7260\u7261\u7262\u7263\u7264\u3e29\u3e2a\u7265\u7266\u7267\u7268\u7269\u726a\u726b\u726c\u3e2b\u3e2c\u3e2d\u3e2e\u3e2f\u726d\u726e\u726f\u7270\u7271\u7272\u7273\u7274\u7275\u3e30\u3e31\u3e32\u3e33\u3e34\u7276\u7277\u7278\u7279\u727a\u3e35\u3e36\u3e37\u3e38\u727b\u727c\u727d\u727e\u727f\u7281\u3e39\u3e3a\u3e3b\u3e3c\u3e3d\u3e3e\u3e3f\u3e40\u7280\u7282\u7283\u7284\u7285\u7286\u7287\u7288\u7289\u728a\u728b\u3e41\u3e42\u3e43\u728c\u728d\u728e\u728f\u7290\u7291\u3e45\u3e46\u3e47\u3e48\u7292\u7293\u7294\u7295\u7296\u7297\u3e44\u3e49\u3e4a\u3e4b\u7298\u7299\u729a\u729b\u3e4c\u3e4d\u3e4e\u3e4f\u3e50\u729c\u729d\u729e\u729f\u3e51\u3e52\u3e53\u72a0\u3e54\u3e55\u3e56\u3e57\u3e58\u72a1\u72a2\u72a3\u72a4\u72a5\u72a6\u3e59\u72a7\u72a8\u3e5a\u72a9\u3e5b\u72aa\u72ab\u72ac\u72ad\u72ae\u72af\u72b0\u72b1\u72b2\u72b3\u72b4\u72b5\u72b6\u72b7\u72b8\u72b9\u72ba\u72bb\u72bc\u72bd\u72be\u72bf\u72c0\u72c1\u72c2\u72c3\u72c4\u72c5\u72c6\u72c7\u72c8\u3e5c\u3e5d\u3e5e\u3e5f\u3e60\u72c9\u72ca\u72cb\u72cc\u72cd\u72ce\u72cf\u72d0\u72d1\u72d2\u72d3\u72d4\u72d5\u72d6\u72d7\u72d8\u72d9\u72da\u72db\u72dc\u72dd\u72de\u3e61\u3e62\u3e63\u3e64\u3e65\u3e66\u3e67\u3e68\u3e69\u3e6a\u72df\u72e0\u72e1\u72e2\u72e3\u72e4\u72e5\u72e6\u72e7\u72e8\u72e9\u72ea\u72eb\u72ec\u72ed\u72ee\u72ef\u72f0\u72f1\u72f2\u3e6b\u3e6c\u3e6d\u3e6e\u3e6f\u3e70\u72f3\u72f4\u72f5\u72f6\u72f7\u72f8\u72f9\u72fa\u72fb\u72fc\u72fd\u72fe\u72ff\u7300\u7301\u7302\u7303\u3e71\u3e72\u3e73\u3e74\u3e75\u3e76\u3e77\u3e78\u7304\u7305\u7306\u7307\u7308\u7309\u730a\u730b\u730c\u730d\u730e\u730f\u7310\u7311\u7312\u7313\u7314\u7315\u7316\u7317\u7318\u7319\u731a\u731b\u731c\u731d\u731e\u731f\u7320\u7321\u732a\u732b\u3e79\u3e7a\u3e7b\u3e7c\u3e7d\u3e7e\u3e7f\u3e80\u7322\u7323\u7324\u7325\u7326\u7327\u7328\u7329\u732c\u732d\u732e\u732f\u7330\u7331\u7332\u7333\u7334\u7335\u7336\u7337\u7338\u7339\u7341\u3e81\u3e82\u3e83\u3e84\u3e85\u3e86\u733a\u733b\u733c\u733d\u733e\u733f\u7340\u7342\u7343\u7345\u7346\u7347\u7348\u7349\u734a\u3e87\u3e88\u3e89\u3e8a\u3e8b\u3e8c\u3e8d\u7344\u734c\u734d\u734e\u734f\u7350\u7351\u7352\u7353\u7354\u7355\u3e8e\u3e8f\u3e90\u3e91\u3e92\u3e93\u734b\u7356\u7357\u7358\u7359\u735a\u735b\u735c\u735d\u735e\u735f\u7360\u7361\u7362\u7363\u7364\u3e94\u3e95\u3e96\u3e97\u3e98\u3e99\u7365\u7366\u7367\u7368\u7369\u736a\u736b\u736c\u736d\u3e9a\u3e9b\u3e9c\u736e\u736f\u7370\u7371\u7372\u7373\u7374\u3e9d\u3e9e\u3e9f\u7375\u7376\u7377\u7378\u3ea0\u7379\u737a\u737b\u3ea1\u3ea2\u737c\u737d\u3ea3\u3ea4\u3ea5\u3ea6\u737e\u737f\u7380\u7381\u7382\u7383\u3ea7\u7384\u7385\u7386\u7387\u7388\u7389\u738b\u738a\u738c\u738d\u738e\u738f\u7390\u7391\u3ea8\u3ea9\u3eaa\u3eab\u7392\u7393\u7394\u7395\u7396\u7397\u7398\u7399\u739a\u739b\u3eac\u3ead\u3eae\u3eaf\u739c\u739d\u739e\u739f\u73a0\u73a1\u73a2\u73a3\u73a4\u73a5\u73a6\u73a7\u73a8\u73a9\u73aa\u73ab\u73ac\u73ad\u73ae\u73af\u73b0\u73b1\u9ff1\u3eb0\u3eb1\u3eb2\u3eb3\u3eb4\u3eb5\u3eb6\u73b2\u73b3\u73b4\u73b5\u73b6\u73b7\u73b8\u73b9\u73ba\u73bb\u73bc\u73bd\u73be\u73bf\u73c0\u73c1\u73c2\u73c3\u73c4\u73c5\u73c6\u73c7\u73c8\u73c9\u73ca\u73cb\u73cc\u73cd\u73ce\u73cf\u73d0\u73d1\u3eb7\u3eb8\u3eb9\u3eba\u3ebb\u3ebc\u3ebd\u3ebe\u73d2\u73d3\u73d4\u73d5\u73d6\u73d7\u73d8\u73d9\u73da\u73db\u73dc\u73dd\u73de\u73df\u73e0\u73e1\u73e2\u73e3\u73e4\u73e5\u73e6\u73e7\u73e8\u73e9\u73ea\u73eb\u73ec\u73ed\u73ee\u73ef\u73f0\u73f1\u73f2\u7409\u3ebf\u3ec0\u3ec1\u3ec2\u3ec3\u3ec4\u3ec5\u3ec6\u3ec7\u3ec8\u73f3\u73f4\u73f5\u73f6\u73f8\u73f9\u73fa\u73fb\u73fc\u73fd\u73fe\u73ff\u7400\u7401\u7402\u7403\u7404\u7405\u7406\u7407\u7408\u740a\u740b\u740c\u740d\u740e\u740f\u7410\u7411\u7412\u7413\u3ec9\u3eca\u3ecb\u3ecc\u3ecd\u3ece\u3ecf\u3ed0\u73f7\u7414\u7415\u7416\u7417\u7418\u7419\u741a\u741b\u741c\u741d\u741f\u7420\u7421\u7422\u7423\u7424\u7425\u7426\u7427\u7428\u7429\u742a\u742b\u742c\u742d\u742e\u742f\u7430\u7431\u7432\u7433\u7434\u7435\u7436\u7437\u7438\u7439\u743a\u743b\u743c\u3ed1\u3ed2\u3ed3\u3ed4\u3ed5\u3ed6\u3ed7\u3ed8\u3ed9\u3eda\u3edb\u3edc\u741e\u743d\u743e\u743f\u7440\u7441\u7442\u7443\u7444\u7445\u7446\u7447\u7448\u7449\u744a\u744b\u744c\u744d\u744e\u744f\u7450\u7451\u7452\u7453\u7454\u7455\u7456\u7457\u7458\u7459\u745a\u745b\u745c\u745d\u745e\u745f\u3edd\u3ede\u3edf\u3ee0\u3ee1\u3ee2\u3ee3\u3ee4\u3ee5\u3ee6\u7460\u7461\u7462\u7463\u7464\u7465\u7466\u7467\u7468\u7469\u746a\u746b\u746c\u746d\u746e\u746f\u7470\u7471\u7472\u7473\u7474\u7475\u7476\u7477\u7478\u3ee7\u3ee8\u3ee9\u3eea\u7479\u747a\u747b\u747c\u747d\u747e\u747f\u7480\u7481\u7482\u7483\u7484\u7485\u7486\u7487\u7488\u7489\u748a\u748b\u748c\u748e\u7493\u3eeb\u3eec\u3eed\u3eee\u3eef\u3ef0\u3ef1\u3ef2\u3ef3\u3ef4\u748d\u748f\u7490\u7491\u7492\u7494\u7495\u7496\u7497\u7498\u7499\u749a\u749b\u749c\u749d\u749e\u749f\u74a0\u74a1\u74a3\u74a4\u3ef5\u3ef6\u3ef7\u3ef8\u3ef9\u3efa\u3efb\u3efc\u74a2\u74a5\u74a6\u74a7\u74a8\u74a9\u74aa\u74ab\u74ac\u74ad\u74ae\u74af\u74b0\u74b1\u74b2\u74b3\u74b4\u3efd\u3efe\u3eff\u3f00\u3f01\u3f02\u74b5\u74b6\u74b7\u74b8\u74b9\u74ba\u74bb\u74bc\u74bd\u74be\u74bf\u74c0\u74c1\u74c2\u74c3\u74c4\u74c5\u74c6\u74c7\u74c8\u74c9\u74ca\u74cb\u3f03\u3f04\u3f05\u3f06\u74cc\u74cd\u74ce\u74cf\u74d0\u74d1\u74d2\u3f07\u74d3\u74d4\u74d5\u74d6\u74d7\u74d8\u74d9\u74da\u3f08\u74db\u74dc\u74dd\u3f09\u3f0a\u74de\u74df\u3f0b\u3f0c\u74e0\u3f0d\u3f0e\u3f0f\u74e1\u3f10\u3f11\u3f12\u3f13\u3f14\u74e2\u3f15\u74e3\u74e4\u74e5\u3f16\u74e6\u74e7\u3f17\u74e8\u74e9\u3f18\u3f19\u74ea\u74eb\u74ec\u74ed\u74ee\u74ef\u74f0\u74f1\u74f2\u3f1a\u3f1b\u74f3\u74f4\u74f5\u3f1c\u3f1d\u3f1e\u3f1f\u3f20\u74f6\u74f7\u74f8\u3f21\u3f22\u3f23\u3f24\u3f25\u3f26\u74f9\u74fa\u74fb\u74fc\u3f27\u3f28\u3f29\u3f2a\u74fd\u74fe\u74ff\u7500\u7501\u3f2b\u3f2c\u3f2d\u3f2e\u3f2f\u3f30\u3f31\u7502\u7503\u7504\u7505\u7506\u3f32\u3f33\u3f34\u3f35\u3f36\u3f37\u7507\u7508\u7509\u3f38\u3f39\u3f3a\u750a\u750b\u750c\u750d\u750e\u3f3b\u3f3c\u3f3d\u3f3e\u750f\u7510\u7511\u7512\u3f3f\u3f40\u3f41\u3f42\u3f43\u3f44\u3f45\u7513\u7514\u7515\u3f46\u3f47\u7516\u3f48\u3f49\u7517\u3f4a\u3f4b\u3f4c\u7518\u7519\u751a\u3f4d\u751b\u751c\u751d\u751e\u3f4e\u3f4f\u3f50\u3f51\u751f\u7520\u7521\u7522\u7523\u7524\u7525\u7526\u3f52\u7527\u3f53\u3f54\u7528\u7529\u752a\u752b\u752c\u752d\u752e\u752f\u7530\u7531\u7532\u7533\u7534\u7535\u7536\u7537\u7538\u7539\u753a\u753c\u3f55\u3f56\u3f57\u753b\u753d\u753e\u753f\u7540\u7541\u7542\u7543\u7544\u7545\u7546\u7547\u7548\u7549\u754a\u754b\u754c\u754d\u754e\u754f\u7550\u7551\u7552\u7553\u3f58\u3f59\u3f5a\u7554\u7555\u7556\u7557\u7558\u7559\u755a\u755b\u755c\u755d\u755e\u755f\u3f5b\u3f5c\u7561\u7562\u7563\u7564\u7565\u7566\u7567\u7569\u7570\u3f5d\u3f5e\u756a\u756b\u756c\u756d\u756e\u756f\u7572\u7573\u7574\u3f5f\u3f60\u7575\u7576\u7577\u7578\u7579\u757a\u3f61\u3f62\u3f63\u3f64\u7571\u757b\u757c\u757d\u3f65\u757e\u757f\u3f66\u3f67\u3f68\u7580\u7581\u7582\u3f69\u7583\u7584\u3f6a\u7585\u3f6b\u3f6c\u7586\u7587\u3f6d\u7588\u3f6e\u7589\u758a\u3f6f\u758b\u758c\u758d\u758e\u758f\u3f70\u7590\u7591\u7592\u7593\u7594\u7595\u7596\u7597\u3f71\u3f72\u7598\u7599\u759a\u759b\u759c\u759d\u759e\u759f\u75a0\u3f73\u3f74\u3f75\u3f76\u75a1\u75a2\u75a3\u75a4\u75a5\u75a6\u75a7\u75a8\u75a9\u75aa\u75ab\u75ac\u75ad\u75ae\u75af\u75ba\u3f77\u3f78\u3f79\u3f7a\u3f7b\u3f7c\u75b0\u75b1\u75b2\u75b3\u75b4\u75b5\u75b6\u75b7\u75b8\u75b9\u75bb\u75bc\u75bd\u75be\u75bf\u75c0\u75c1\u75c2\u75c3\u75c4\u75c5\u75c6\u75c7\u75c8\u75c9\u3f7d\u3f7e\u3f7f\u3f80\u3f81\u3f82\u3f83\u3f84\u3f85\u3f86\u3f87\u3f88\u3f89\u75ca\u75cb\u75cc\u75cd\u75ce\u75cf\u75d0\u75d1\u75d2\u75d3\u75d4\u75d5\u75d6\u3f8a\u3f8b\u3f8c\u3f8d\u3f8e\u3f8f\u3f90\u3f91\u3f92\u75d7\u75d8\u75d9\u75da\u75db\u75dc\u75dd\u75de\u75df\u75e0\u75e1\u75e2\u75e3\u75e4\u75e5\u75e6\u75e7\u75e8\u75e9\u75ea\u75eb\u3f93\u3f94\u3f95\u3f96\u3f97\u3f98\u3f99\u3f9a\u3f9b\u3f9c\u3f9d\u3f9e\u3f9f\u3fa0\u3fa1\u75ec\u75ed\u75ee\u75ef\u75f0\u75f1\u75f2\u75f3\u75f4\u75f5\u75f6\u75f7\u75f8\u75f9\u75fa\u75fb\u75fc\u75fd\u75fe\u75ff\u7600\u7601\u7602\u7603\u7604\u7605\u7606\u3fa2\u3fa3\u3fa4\u3fa5\u3fa6\u3fa7\u3fa8\u3fa9\u7607\u7608\u7609\u760a\u760b\u760c\u760d\u760e\u760f\u7610\u7611\u7612\u7613\u7614\u7615\u7616\u7617\u7618\u761f\u7627\u3faa\u3fab\u3fac\u3fad\u3fae\u3faf\u3fb0\u3fb1\u3fb2\u3fb3\u3fb4\u3fb5\u7619\u761a\u761b\u761c\u761d\u761e\u7620\u7621\u7622\u7623\u7624\u7625\u7626\u7628\u7629\u762a\u762b\u3fb6\u3fb7\u3fb8\u3fb9\u3fba\u3fbb\u3fbc\u3fbd\u3fbe\u3fbf\u3fc0\u3fc1\u762c\u762d\u762e\u762f\u7630\u7631\u7632\u7633\u7634\u7635\u7636\u7637\u7638\u7639\u763a\u763b\u763c\u763d\u763e\u763f\u764a\u3fc2\u3fc3\u3fc4\u3fc5\u3fc6\u3fc7\u3fc8\u7640\u7641\u7642\u7643\u7644\u7645\u7646\u7647\u7648\u7649\u764b\u764c\u764d\u764e\u3fc9\u3fca\u764f\u7650\u7651\u7652\u7653\u7654\u7655\u7656\u7657\u7658\u7659\u765a\u765b\u765c\u765d\u765e\u3fcb\u3fcc\u3fcd\u3fce\u3fcf\u3fd0\u765f\u7660\u7661\u7663\u3fd1\u3fd2\u3fd3\u7662\u7664\u7665\u7666\u3fd4\u7667\u7668\u7669\u766a\u766b\u3fd5\u3fd6\u3fd7\u766c\u766d\u766e\u3fd8\u766f\u7670\u3fd9\u7671\u7672\u3fda\u3fdb\u7673\u7674\u3fdc\u7675\u7676\u7677\u7678\u7679\u767a\u767b\u767c\u767d\u767e\u767f\u7680\u7681\u7682\u7683\u3fdd\u7684\u7685\u7686\u7687\u7688\u3fde\u7560\u7689\u768a\u768b\u768c\u768d\u3fdf\u768e\u768f\u7690\u7691\u3fe0\u3fe1\u7692\u7693\u7694\u7695\u7696\u7697\u7698\u7699\u3fe2\u3fe3\u3fe4\u769a\u769b\u769c\u769d\u769e\u3fe5\u769f\u76a0\u76a1\u3fe6\u76a2\u76a3\u76a4\u76a5\u76a6\u76a7\u76a8\u76a9\u3fe7\u76aa\u76ab\u76ac\u3fe8\u76ad\u3fe9\u76ae\u76af\u3fea\u3feb\u3fec\u76b0\u76b1\u3fed\u3fee\u76b2\u3fef\u3ff0\u76b3\u76b4\u3ff1\u76b5\u9fbe\u3ff2\u3ff3\u76b6\u76b7\u76b8\u76b9\u3ff4\u3ff5\u76ba\u3ff6\u3ff7\u76bb\u3ff8\u76bc\u76bd\u3ff9\u76be\u3ffa\u76bf\u76c0\u76c1\u76c2\u3ffb\u76c3\u76c4\u76c5\u76c6\u76c7\u76c8\u3ffc\u3ffd\u76c9\u76ca\u76cb\u76cc\u76cd\u76ce\u76cf\u76d0\u76d1\u3ffe\u3fff\u4000\u76d2\u76d3\u76d4\u76d5\u76d6\u76d7\u76d8\u76db\u4001\u4002\u76d9\u76da\u76dc\u4003\u76dd\u76de\u76df\u4004\u4005\u76e0\u76e1\u76e2\u76e3\u4006\u76e4\u76e5\u76e6\u76e7\u4007\u4008\u76e8\u76e9\u76ea\u4009\u76eb\u76ec\u400a\u76ed\u400b\u400c\u400d\u76ee\u76ef\u400e\u400f\u76f0\u76f1\u76f2\u76f3\u76f4\u76f5\u4010\u4011\u4012\u4013\u4014\u76f6\u76f7\u76f8\u76f9\u76fa\u76fb\u76fc\u76fd\u76fe\u76ff\u7700\u7701\u7702\u7703\u7704\u7705\u7706\u7707\u7708\u7709\u770a\u770b\u770c\u770d\u4015\u4016\u4017\u4018\u4019\u401a\u401b\u401c\u401d\u401e\u770e\u770f\u7710\u7711\u7712\u7713\u7714\u7715\u7716\u7717\u7718\u7719\u771a\u771b\u771c\u771d\u771e\u771f\u7720\u7721\u7722\u7723\u7724\u7725\u7726\u7727\u7728\u7729\u772a\u772b\u772c\u773f\u401f\u4020\u4021\u4022\u4023\u4024\u4025\u4026\u772d\u772e\u772f\u7730\u7731\u7732\u7733\u7734\u7735\u7736\u7737\u7738\u7739\u773a\u773b\u773c\u773d\u773e\u7741\u4027\u4028\u4029\u402a\u402b\u402c\u402d\u402e\u7740\u7742\u7743\u7744\u7745\u7746\u7747\u7748\u7749\u774a\u774b\u774c\u774d\u774e\u774f\u7750\u7751\u9fc3\u402f\u4030\u4031\u4032\u4033\u4034\u4035\u4036\u4037\u4038\u4039\u403a\u403b\u403c\u403d\u403e\u403f\u4040\u7752\u7753\u7754\u7755\u7756\u7757\u7758\u7759\u775a\u775b\u775c\u775d\u775e\u775f\u7760\u7762\u7763\u7764\u7765\u7766\u7767\u7768\u7769\u776a\u776b\u776c\u776d\u4041\u4042\u4043\u4044\u4045\u4046\u4047\u4048\u4049\u7761\u776e\u776f\u7770\u7771\u7772\u7773\u7774\u7775\u7776\u7777\u7778\u7779\u777a\u777b\u777c\u777d\u777e\u777f\u7780\u7781\u7782\u7783\u7784\u7785\u7786\u404a\u404b\u404c\u404d\u404e\u404f\u4050\u4051\u4052\u4053\u4054\u4055\u4056\u7787\u7788\u7789\u778a\u778b\u778c\u778d\u778e\u778f\u7790\u7791\u7792\u7793\u4057\u4058\u4059\u405a\u405b\u405c\u405d\u405e\u405f\u4060\u4061\u7794\u7795\u7796\u7797\u7798\u7799\u779a\u779b\u779c\u779d\u779e\u779f\u77a0\u77a1\u77a2\u77a3\u4062\u4063\u4064\u4065\u4066\u4067\u4068\u4069\u406a\u77a4\u77a5\u77a6\u77a7\u77a8\u77a9\u77aa\u77ab\u77ac\u77ad\u77ae\u77af\u77b0\u77b1\u77b2\u77b3\u77b4\u77b5\u77b6\u77b7\u406b\u406c\u406d\u406e\u406f\u4070\u4071\u4072\u4073\u77b8\u77b9\u77ba\u77bb\u77bc\u77bd\u77be\u77bf\u77c0\u77c1\u77c2\u4074\u4075\u4076\u4077\u4078\u4079\u407a\u77c3\u77c4\u77c5\u77c6\u77c7\u77c8\u77c9\u77ca\u77cb\u77cc\u77cd\u77ce\u77cf\u407b\u407c\u407d\u407e\u77d0\u77d1\u77d2\u77d3\u407f\u4080\u4081\u77d4\u4082\u4083\u77d5\u77d7\u77d8\u77d9\u4084\u77d6\u77da\u4085\u77db\u4086\u77dc\u4087\u77dd\u4088\u77de\u77df\u77e0\u4089\u408a\u408b\u408c\u408d\u408e\u77e1\u77e2\u77e3\u77e4\u77e5\u77e6\u77e7\u77e8\u77e9\u408f\u4090\u77ea\u77eb\u4091\u4092\u77ec\u77ed\u4093\u77ee\u4094\u4095\u77ef\u77f0\u77f1\u77f2\u77f3\u4096\u77f4\u77f5\u77f6\u4097\u77f7\u77f8\u77f9\u77fa\u77fb\u77fc\u77fd\u77fe\u77ff\u7800\u7801\u4098\u4099\u6cf5\u7802\u7803\u7804\u7805\u7806\u7807\u7808\u7809\u780a\u780b\u780c\u780d\u780e\u780f\u7810\u7811\u7812\u7813\u7814\u7815\u7816\u7817\u7818\u7819\u781a\u781b\u781c\u409a\u409b\u409c\u409d\u409e\u781d\u781e\u781f\u7820\u7821\u7822\u7823\u7824\u7825\u7826\u7827\u7828\u7829\u782a\u782b\u782c\u782d\u782e\u782f\u7830\u7831\u7832\u7833\u7834\u7835\u7836\u7837\u7838\u7839\u783a\u783b\u783c\u783d\u783e\u783f\u7840\u7841\u9fec\u409f\u40a0\u40a1\u40a2\u40a3\u40a4\u40a5\u40a6\u40a7\u40a8\u7842\u7843\u7844\u7845\u7846\u7847\u7848\u7849\u784a\u784b\u784c\u784d\u784e\u784f\u7850\u7851\u7852\u7853\u7854\u7855\u7856\u7857\u7858\u7859\u785a\u785b\u9fce\u40a9\u40aa\u40ab\u40ac\u40ad\u40ae\u40af\u785c\u785d\u785e\u785f\u7860\u7861\u7862\u7863\u7864\u7865\u7866\u7867\u7868\u7869\u786a\u786b\u786c\u786d\u786e\u786f\u7870\u7871\u7872\u7873\u7874\u7875\u7876\u7877\u40b0\u40b1\u40b2\u40b3\u40b4\u40b5\u40b6\u7878\u7879\u787a\u787b\u787c\u787d\u787f\u7880\u7881\u7882\u7883\u7884\u7885\u7886\u7887\u7888\u7889\u788a\u788b\u788c\u788d\u788e\u788f\u7890\u7891\u7892\u7893\u7894\u7895\u7896\u7897\u7898\u7899\u789a\u789b\u789c\u78b0\u40b7\u40b8\u40b9\u40ba\u40bb\u40bc\u40bd\u40be\u40bf\u40c0\u40c1\u40c2\u40c3\u40c4\u40c5\u40c6\u40c7\u787e\u789d\u789e\u789f\u78a0\u78a1\u78a2\u78a3\u78a4\u78a5\u78a6\u78a7\u78a8\u78a9\u78aa\u78ab\u78ac\u78ad\u78ae\u78af\u78b1\u78b2\u78b3\u78b4\u78b5\u78b6\u78b7\u78b8\u78b9\u78c1\u40c8\u40c9\u40ca\u40cb\u40cc\u40cd\u40ce\u40cf\u40d0\u78ba\u78bb\u78bc\u78bd\u78be\u78bf\u78c0\u78c2\u78c3\u78c4\u78c5\u78c6\u78c7\u78c8\u78c9\u78ca\u78cb\u78cc\u78cd\u78ce\u78cf\u78d0\u78d1\u78d2\u78d3\u78d4\u78d5\u78d6\u78d7\u78d8\u78d9\u78dc\u78e4\u40d1\u40d2\u40d3\u40d4\u40d5\u40d6\u40d7\u78da\u78db\u78dd\u78de\u78df\u78e0\u78e1\u78e2\u78e3\u78e5\u78e6\u78e7\u78e8\u78e9\u78ea\u78eb\u78ec\u78ed\u78ee\u40d8\u40d9\u40da\u40db\u40dc\u40dd\u40de\u40e0\u78ef\u78f0\u78f1\u78f2\u78f3\u78f4\u78f5\u78f6\u78f7\u78f8\u78f9\u78fa\u78fb\u78fc\u78fd\u78fe\u78ff\u7900\u7901\u7902\u7903\u7904\u7905\u40df\u40e1\u40e2\u40e3\u40e4\u40e5\u40e6\u40e7\u40e8\u7906\u7907\u7908\u7909\u790a\u790b\u790c\u790d\u790e\u790f\u7910\u7911\u7912\u7913\u7914\u7915\u7916\u40e9\u40ea\u40eb\u40ec\u40ed\u40ee\u40ef\u7917\u7918\u7919\u791a\u791b\u791c\u791d\u791e\u791f\u7920\u7921\u40f0\u7922\u7923\u7924\u7925\u7926\u7927\u7928\u7929\u792a\u792b\u792c\u40f1\u40f2\u40f3\u792d\u792e\u792f\u7930\u7931\u7932\u7933\u7934\u40f4\u40f5\u40f6\u40f7\u7935\u40f8\u40f9\u7936\u7937\u7938\u40fa\u7939\u40fb\u793a\u793b\u793c\u793d\u40fc\u793e\u793f\u7940\u7941\u7942\u7943\u7944\u7945\u7946\u7947\u7948\u7949\u794a\u794b\u794c\u794d\u794e\u89c6\u9fc6\u40fd\u40fe\u40ff\u4100\u794f\u7950\u7951\u7952\u7953\u7954\u7955\u7956\u7957\u7958\u7959\u795a\u795b\u795c\u795d\u795e\u795f\u7960\u7961\u7962\u4101\u4102\u4103\u7963\u7964\u7965\u7967\u7968\u7969\u796a\u796b\u796c\u796d\u796e\u796f\u4104\u4105\u4106\u7966\u7970\u7971\u7972\u7973\u7974\u7975\u7976\u7977\u7978\u7984\u8996\u4107\u4108\u4109\u410a\u7979\u797a\u797b\u797c\u797d\u797e\u797f\u7980\u7981\u7982\u7983\u7985\u7986\u410b\u410c\u410d\u410e\u410f\u4110\u4111\u4112\u7987\u7988\u7989\u798a\u798b\u798c\u798d\u798e\u798f\u7990\u7991\u7992\u7993\u7994\u7995\u7996\u7997\u7998\u7999\u4113\u4114\u4115\u4116\u4117\u799a\u799b\u799c\u799d\u799e\u799f\u79a0\u79a1\u79a2\u79a3\u4118\u4119\u79a4\u79a5\u79a6\u411a\u411b\u411c\u411d\u411e\u79a7\u79a8\u79a9\u79aa\u79ab\u411f\u79ac\u79ad\u79ae\u79af\u9fc5\u4120\u4121\u79b0\u79b1\u4122\u79b2\u4123\u4124\u79b3\u79b4\u79b5\u79b6\u79b7\u4125\u79b8\u79b9\u79ba\u79bb\u79bc\u79bd\u842c\u79be\u79bf\u79c0\u79c1\u79c2\u79c3\u4126\u4127\u79c4\u79c5\u79c6\u79c7\u79c8\u79c9\u79ca\u4128\u4129\u412a\u412b\u412c\u412d\u79cb\u79cc\u79cd\u79ce\u79cf\u79d0\u79d1\u79d2\u79d3\u79d4\u79d5\u79d6\u79d7\u412e\u412f\u4130\u4131\u4132\u4133\u4134\u4135\u79d8\u79d9\u79da\u79db\u79dc\u79dd\u79de\u79df\u79e0\u79e1\u79e2\u79e3\u79e4\u79e5\u79e6\u79e7\u79e8\u79e9\u79ea\u79eb\u79ec\u79ed\u79ee\u79ef\u79f0\u4136\u4137\u4138\u4139\u79f1\u79f2\u79f3\u79f4\u79f5\u79f6\u79f7\u79f8\u79f9\u79fa\u79fb\u79fc\u79fd\u79fe\u7a06\u413a\u413b\u413c\u413d\u413e\u413f\u4140\u4141\u4142\u4143\u4144\u4145\u4146\u4147\u4148\u4149\u414a\u79ff\u7a00\u7a01\u7a02\u7a03\u7a04\u7a05\u7a07\u7a08\u7a09\u7a0a\u7a0b\u7a0c\u7a0d\u7a0e\u9fdf\u414b\u414c\u414d\u414e\u414f\u4150\u4151\u4152\u4153\u7a0f\u7a10\u7a11\u7a12\u7a13\u7a14\u7a15\u7a16\u7a17\u7a18\u7a19\u7a1a\u7a1b\u7a1c\u7a1d\u7a1e\u7a1f\u7a20\u7a21\u7a22\u7a23\u7a24\u7a25\u4154\u4155\u4156\u4157\u4158\u4159\u415a\u415b\u415c\u415d\u415e\u415f\u7a26\u7a27\u7a28\u7a29\u7a2a\u7a2b\u7a2c\u7a2d\u7a2e\u7a2f\u7a30\u7a31\u7a32\u7a33\u7a4a\u4160\u4161\u4162\u4163\u4164\u4165\u4166\u4167\u4168\u4169\u416a\u416b\u7a34\u7a35\u7a36\u7a37\u7a38\u7a39\u7a3a\u7a3b\u7a3c\u7a3d\u7a3e\u7a3f\u7a40\u7a41\u7a42\u7a43\u416c\u416d\u416e\u416f\u4170\u4171\u4172\u4173\u4174\u4175\u4176\u7a44\u7a45\u7a46\u7a47\u7a48\u7a4b\u7a4c\u7a4d\u7a4e\u7a4f\u7a50\u7a51\u7a52\u4177\u4178\u4179\u417a\u417b\u417c\u417d\u7a49\u7a53\u7a54\u7a55\u7a56\u7a57\u7a58\u7a59\u7a5a\u7a5b\u7a5c\u7a5d\u7a5e\u417e\u417f\u4180\u7a5f\u7a60\u7a61\u7a62\u7a63\u4181\u4182\u4183\u4184\u4185\u4186\u4187\u7a64\u7a65\u7a66\u7a67\u7a68\u7a69\u7a6a\u7a6b\u7a6c\u7a6d\u7a6e\u7a6f\u4188\u4189\u9fe0\u418a\u418b\u418c\u418d\u7a70\u7a73\u418e\u418f\u7a71\u7a72\u4190\u7a74\u7a75\u7a76\u7a77\u4191\u7a78\u7a79\u7a7a\u7a7b\u4192\u7a7c\u7a7d\u7a7e\u7a7f\u7a80\u7a81\u7a82\u7a83\u4193\u4194\u4195\u4196\u7a84\u7a85\u7a86\u7a87\u7a88\u7a89\u7a8a\u7a8b\u7a8c\u7a8d\u7a8e\u4197\u4198\u4199\u7a8f\u7a90\u7a91\u7a92\u7a93\u7a94\u7a95\u419a\u419b\u419c\u419d\u419e\u419f\u41a0\u7a96\u7a97\u7a98\u7a99\u7a9a\u7a9b\u7a9c\u7a9d\u41a1\u41a2\u41a3\u41a4\u41a5\u7a9e\u7a9f\u7aa0\u7aa1\u7aa2\u7aa3\u7aa4\u7aa5\u7aa6\u7aa7\u41a6\u41a7\u41a8\u41a9\u7aa8\u7aa9\u7aaa\u7aab\u7aac\u7aad\u41aa\u41ab\u7aae\u7aaf\u7ab0\u7ab1\u7ab2\u7ab3\u7ab4\u41ac\u41ad\u41ae\u7ab5\u7ab6\u7ab7\u7ab8\u7ab9\u7aba\u7abb\u7abc\u7abd\u41af\u41b0\u41b1\u41b2\u41b3\u41b4\u7abe\u7abf\u7ac0\u7ac1\u7ac2\u7ac3\u41b5\u41b6\u41b7\u41b8\u41b9\u41ba\u41bb\u7ac4\u7ac5\u41bc\u41bd\u7ac6\u41be\u41bf\u7ac7\u41c0\u7ac8\u7ac9\u7aca\u41c1\u7acb\u41c2\u7acc\u7acd\u7ace\u7acf\u41c3\u41c4\u7ad0\u7ad1\u7ad2\u7ad3\u7ad4\u7ad5\u7ad6\u7ad7\u41c5\u41c6\u7ad8\u7ad9\u7ada\u7adb\u7adc\u7add\u7ade\u41c7\u41c8\u41c9\u41ca\u7ae1\u41cb\u7ae2\u7ae3\u7ae4\u7ae5\u7ae6\u7ae7\u41cc\u41cd\u7ae8\u7ae9\u7aea\u7aeb\u41ce\u41cf\u41d0\u41d1\u7aec\u7aed\u7aef\u7af0\u7aee\u7af1\u41d2\u7af2\u7af3\u7af4\u41d3\u7af5\u41d4\u41d5\u7af6\u7af7\u7af8\u7af9\u7afa\u7afb\u7afc\u7afd\u7afe\u7aff\u7b00\u7b01\u7b02\u7b03\u41d6\u7b05\u7b06\u7b07\u7b08\u7b09\u7b0a\u7b0b\u7b0c\u7b0d\u7b0e\u7b0f\u7b10\u7b11\u7b12\u7b13\u7b14\u7b15\u41d7\u41d8\u41d9\u41da\u41db\u41dc\u41dd\u7b16\u7b17\u7b18\u7b19\u7b1a\u7b1b\u7b1c\u7b1d\u7b1e\u7b1f\u7b20\u7b21\u7b22\u7b23\u7b24\u7b25\u7b26\u7b27\u7b28\u7b29\u7b2a\u7b2b\u7b2c\u7b2d\u7b2e\u7b2f\u7b30\u7b31\u7b32\u7b33\u7b34\u7b35\u7b36\u7b37\u7b38\u7b39\u7b3a\u7b3b\u7b3c\u7b3d\u7b3e\u41de\u41df\u41e0\u41e1\u41e2\u41e3\u41e4\u41e5\u41e6\u7b04\u7b3f\u7b40\u7b41\u7b42\u7b43\u7b44\u7b45\u7b46\u7b47\u7b48\u7b49\u7b4a\u7b4b\u7b4c\u7b4d\u7b4e\u7b4f\u7b50\u7b51\u7b52\u7b53\u7b54\u7b55\u7b56\u7b57\u7b58\u7b59\u7b5a\u7b5b\u7b5c\u7b5d\u41e7\u41e8\u41e9\u41ea\u41eb\u41ec\u41ed\u41ee\u41ef\u41f0\u41f1\u41f2\u41f3\u41f4\u7b5e\u7b5f\u7b60\u7b61\u7b62\u7b63\u7b64\u7b65\u7b66\u7b67\u7b68\u7b69\u7b6a\u7b6b\u7b6c\u7b6d\u7b6e\u7b6f\u7b70\u7b71\u7b72\u7b73\u7b74\u7b75\u7b76\u7b77\u7b78\u7b79\u7b7a\u7b7b\u7b7c\u7b7d\u7b7e\u7b7f\u7b80\u7bc0\u41f5\u41f6\u41f7\u41f8\u41f9\u41fa\u41fb\u41fc\u41fd\u41fe\u41ff\u4200\u7b81\u7b82\u7b83\u7b84\u7b85\u7b86\u7b87\u7b88\u7b89\u7b8a\u7b8b\u7b8c\u7b8d\u7b8e\u7b8f\u7b90\u7b91\u7b92\u7b93\u7b94\u7b95\u7b96\u7b97\u7b98\u7b99\u7b9a\u7b9b\u7b9c\u7b9d\u7b9e\u7b9f\u7ba0\u7ba1\u7ba2\u7ba3\u7ba4\u7ba5\u7ba6\u7ba7\u7ba8\u7ba9\u7baa\u7bab\u4201\u4202\u4203\u4204\u4205\u4206\u4207\u4208\u4209\u420a\u420b\u420c\u420d\u7bac\u7bad\u7bae\u7baf\u7bb0\u7bb1\u7bb2\u7bb3\u7bb4\u7bb5\u7bb6\u7bb7\u7bb8\u7bb9\u7bba\u7bbb\u7bbc\u7bbd\u7bbe\u7bbf\u7bc1\u7bc2\u7bc3\u7bc4\u7bc5\u7bc6\u7bc7\u7bc8\u7bca\u7bcb\u7bcc\u7bcd\u7bce\u7bcf\u7bd0\u7bd1\u7bd2\u7bd3\u420e\u420f\u4210\u4211\u4212\u4213\u4214\u4215\u4216\u4217\u4218\u4219\u421a\u421b\u421c\u421d\u421e\u421f\u4220\u4221\u4222\u4223\u4224\u4225\u4226\u4227\u4228\u4229\u7bc9\u7bd4\u7bd5\u7bd6\u7bd7\u7bd8\u7bd9\u7bda\u7bdb\u7bdc\u7bdd\u7bde\u7bdf\u7be0\u7be1\u7be2\u7be3\u7be4\u7be5\u7be6\u7be7\u7be8\u7be9\u7bea\u7beb\u7bec\u7bed\u7bee\u7bef\u7c11\u7c15\u422a\u422b\u422c\u422d\u422e\u422f\u4230\u4231\u4232\u4233\u4234\u4235\u4236\u4237\u7bf0\u7bf1\u7bf2\u7bf3\u7bf4\u7bf5\u7bf6\u7bf7\u7bf8\u7bf9\u7bfa\u7bfb\u7bfc\u7bfd\u7bfe\u7bff\u7c00\u7c01\u7c02\u7c03\u7c04\u7c05\u7c06\u7c07\u7c08\u7c09\u7c0a\u7c0b\u7c0c\u7c0d\u7c0e\u7c0f\u7c10\u7c12\u7c13\u7c14\u7c16\u7c17\u4238\u4239\u423a\u423b\u423c\u423d\u423e\u423f\u4240\u4241\u4242\u4243\u4244\u4245\u4246\u4247\u7c18\u7c19\u7c1a\u7c1b\u7c1c\u7c1d\u7c1e\u7c1f\u7c20\u7c21\u7c22\u7c23\u7c24\u7c25\u7c26\u7c27\u7c28\u7c29\u7c2a\u7c2b\u7c2c\u7c2d\u7c2e\u7c2f\u7c30\u7c31\u7c32\u4248\u4249\u424a\u424b\u424c\u424d\u424e\u4250\u4251\u4252\u4253\u4254\u4255\u4256\u4257\u4258\u4259\u425a\u4263\u7c33\u7c34\u7c35\u7c36\u7c37\u7c38\u7c39\u7c3a\u7c3b\u7c3c\u7c3d\u7c3e\u7c3f\u7c40\u7c41\u7c42\u424f\u425b\u425c\u425d\u425e\u425f\u4260\u4261\u4262\u4264\u7c43\u7c44\u7c45\u7c46\u7c47\u7c48\u7c49\u7c4a\u7c4b\u7c4c\u7c4d\u7c4e\u7c4f\u7c55\u7c56\u4265\u7c50\u7c51\u7c52\u7c53\u7c54\u4266\u4267\u4268\u4269\u426a\u426b\u426c\u426d\u7c57\u7c58\u7c59\u7c5a\u7c5b\u7c5c\u7c5d\u7c5e\u7c5f\u7c60\u7c61\u426e\u426f\u4270\u4271\u7c62\u7c63\u7c64\u7c65\u7c66\u7c67\u7c68\u4272\u4273\u4274\u7c6a\u4276\u7c69\u7c6b\u7c6c\u7c6d\u7c6e\u7c6f\u7c70\u4277\u4278\u7c71\u4279\u7c72\u7c73\u7c74\u7c75\u7c76\u5a04\u7c77\u7c78\u7c79\u7c7a\u7c7b\u7c7c\u7c7d\u7c7e\u7c7f\u7c80\u7c81\u7c82\u427a\u7c83\u7c84\u7c85\u7c86\u7c87\u7c88\u7c89\u7c8a\u7c8b\u7c8c\u7c8d\u7c8e\u7c8f\u7c90\u7c91\u427b\u427c\u7568\u7c92\u7c93\u7c94\u7c95\u7c96\u7c97\u7c98\u7c99\u7c9a\u7c9b\u7c9c\u7c9d\u7ca3\u427d\u427e\u427f\u4280\u7c9e\u7c9f\u7ca0\u7ca1\u7ca2\u7ca4\u7ca5\u7ca6\u7ca7\u7ca8\u7ca9\u7caa\u7cab\u7cac\u7cad\u4281\u4282\u4283\u4284\u4285\u4286\u7cae\u7caf\u7cb0\u7cb1\u7cb2\u7cb3\u7cb4\u7cb5\u7cc0\u4287\u4288\u4289\u428a\u428b\u428c\u7cb6\u7cb7\u7cb8\u7cb9\u7cba\u7cbb\u7cbc\u7cbd\u7cbe\u7cbf\u7cc1\u428d\u428e\u428f\u4290\u4291\u4292\u7cc2\u7cc3\u7cc4\u7cc5\u7cc6\u7cc7\u7cc8\u7cc9\u7cca\u7ccb\u7ccc\u7ccd\u7cce\u4293\u4294\u4295\u4296\u4297\u4298\u4299\u7ccf\u7cd0\u7cd1\u7cd2\u7cd3\u7cd4\u7cd5\u7cd6\u7cd7\u7cd8\u9fef\u429a\u429b\u4a00\u7cd9\u7cda\u7cdb\u7cdc\u7cdd\u7cde\u7cdf\u7ce0\u7ce1\u7ce2\u7ce8\u429c\u429d\u429e\u429f\u42a0\u42a1\u42a2\u7ce3\u7ce4\u7ce5\u7ce6\u7ce7\u42a3\u42a4\u42a5\u42a6\u42a7\u42a8\u42a9\u7ce9\u7cea\u7ceb\u7cec\u7ced\u42aa\u42ab\u42ac\u7cee\u7cef\u7cf0\u42ad\u42ae\u7cf2\u42af\u7cf1\u7cf3\u7cf4\u42b0\u7cf5\u42b1\u42b2\u7cf6\u42b3\u42b4\u7cf7\u7cf8\u7cf9\u7cfa\u7cfb\u7cfc\u7cfd\u7cfe\u7cff\u42b5\u7d00\u7d01\u7d02\u7d03\u7d04\u7d05\u7d06\u7d07\u7d08\u7d09\u42b6\u42b7\u42b8\u42b9\u7d0a\u7d0b\u7d0c\u7d0d\u7d0e\u7d0f\u7d10\u7d11\u7d12\u7d13\u7d14\u7d15\u7d16\u7d17\u7d18\u7d19\u7d1a\u7d1b\u7d1c\u7d1d\u7d1e\u7d1f\u7d20\u7d21\u7d22\u7d23\u7d24\u7d25\u7d26\u7d27\u42ba\u42bb\u42bc\u42bd\u42be\u42bf\u42c0\u42c1\u42c2\u42c3\u42c4\u42c5\u42c6\u42c7\u7d28\u7d29\u7d2a\u7d2b\u7d2c\u7d2d\u7d2e\u7d2f\u7d30\u7d31\u7d32\u7d33\u7d34\u7d35\u7d36\u7d37\u7d38\u7d39\u7d3a\u7d3b\u7d3c\u7d3d\u7d3e\u7d3f\u7d40\u7d41\u7d42\u7d43\u7d44\u7d45\u7d46\u7d47\u7d48\u7d49\u7d4a\u7d4b\u7d4c\u42c8\u42c9\u42ca\u42cb\u42cc\u42cd\u42ce\u42cf\u42d0\u42d1\u42d2\u42d3\u42d4\u7d4d\u7d4e\u7d4f\u7d50\u7d51\u7d52\u7d53\u7d54\u7d55\u7d56\u7d57\u7d58\u7d59\u7d5a\u7d5c\u7d5d\u7d5e\u7d5f\u7d60\u7d61\u7d62\u7d63\u7d64\u7d65\u7d66\u7d67\u7d68\u7d69\u7d6a\u7d6b\u7d6c\u7d6d\u7d6e\u7d6f\u7d70\u7d71\u7d72\u7d73\u7d74\u7d75\u7d76\u7d77\u42d5\u42d6\u42d7\u42d8\u42d9\u42da\u42db\u42dc\u42dd\u42de\u7d5b\u7d78\u7d79\u7d7a\u7d7b\u7d7c\u7d7d\u7d7e\u7d7f\u7d80\u7d81\u7d82\u7d83\u7d84\u7d85\u7d86\u7d87\u7d88\u7d89\u7d8a\u7d8b\u7d8c\u7d8d\u7d8e\u7d8f\u7d90\u7d91\u7d92\u7d93\u7d94\u7d95\u7d96\u7d97\u7d98\u7d99\u7d9a\u7d9b\u7dd0\u42df\u42e0\u42e1\u42e2\u42e3\u42e4\u42e5\u42e6\u7d9c\u7d9d\u7d9e\u7d9f\u7da0\u7da1\u7da2\u7da3\u7da4\u7da5\u7da6\u7da7\u7da8\u7da9\u7daa\u7dab\u7dac\u7dad\u7dae\u7daf\u7db0\u7db1\u7db2\u7db3\u7db4\u7db5\u7db6\u7db7\u7db8\u7db9\u7dba\u7dbb\u7dbc\u7dbd\u7dbe\u7dbf\u7dc0\u7dc1\u7dc2\u7dc3\u7dc4\u7dc5\u7dc6\u7dc7\u7dc8\u7dc9\u7dca\u7dcb\u7dcc\u7dcd\u7dce\u7dcf\u7dd1\u7dd2\u7dd4\u7dd5\u42e7\u42e8\u42e9\u42ea\u42eb\u42ec\u42ed\u42ee\u42ef\u42f0\u42f1\u42f2\u7dd3\u7dd6\u7dd7\u7dd8\u7dd9\u7dda\u7ddb\u7ddc\u7ddd\u7dde\u7ddf\u7de0\u7de1\u7de2\u7de3\u7de4\u7de5\u7de6\u7de7\u7de8\u7de9\u7dea\u7deb\u7dec\u7ded\u7dee\u7def\u7df0\u7df1\u7df2\u7df3\u7df4\u7df5\u7df6\u7df7\u7df8\u7df9\u7dfa\u7dfb\u7dfc\u7dfd\u7dfe\u7dff\u7e00\u7e01\u7e02\u7e03\u7e04\u7e05\u7e06\u7e07\u42f3\u42f4\u42f5\u42f6\u42f7\u42f8\u42f9\u42fa\u42fb\u42fc\u42fd\u42fe\u42ff\u4300\u4301\u4302\u4303\u4304\u7e08\u7e09\u7e0a\u7e0b\u7e0c\u7e0d\u7e0e\u7e0f\u7e10\u7e11\u7e12\u7e13\u7e14\u7e15\u7e16\u7e17\u7e18\u7e19\u7e1a\u7e1b\u7e1c\u7e1d\u7e1e\u7e1f\u7e20\u7e21\u7e22\u7e23\u7e24\u7e25\u7e26\u7e27\u7e28\u4305\u4306\u4307\u4308\u4309\u430a\u430b\u7e29\u7e2a\u7e2b\u7e2c\u7e2d\u7e2e\u7e2f\u7e30\u7e31\u7e32\u7e33\u7e34\u7e35\u7e36\u7e37\u7e38\u7e39\u7e3a\u7e3b\u7e3c\u7e3d\u7e3e\u7e3f\u7e40\u7e41\u7e42\u7e43\u7e44\u7e45\u7e46\u7e47\u7e49\u7e4a\u7e4c\u7e4d\u430c\u430d\u430e\u430f\u4310\u4311\u4312\u4313\u4314\u4315\u7e48\u7e4e\u7e4f\u7e50\u7e51\u7e52\u7e53\u7e54\u7e55\u7e56\u7e57\u7e58\u7e59\u7e5a\u7e5b\u7e5c\u7e5d\u7e5e\u7e5f\u7e60\u7e61\u7e62\u7e63\u7e64\u7e65\u7e67\u7e71\u4316\u4317\u4318\u4319\u431a\u431b\u7e4b\u7e66\u7e68\u7e69\u7e6a\u7e6b\u7e6c\u7e6d\u7e6e\u7e6f\u7e70\u7e72\u7e73\u7e74\u7e75\u7e76\u7e77\u7e78\u7e79\u7e7a\u431c\u431d\u431e\u431f\u4320\u4321\u4322\u7e7b\u7e7c\u7e7d\u7e7e\u7e7f\u7e80\u7e81\u7e82\u7e83\u4323\u4324\u4325\u4326\u4327\u7e84\u7e85\u7e86\u7e87\u7e88\u7e89\u7e8a\u7e8b\u7e8c\u7e8d\u7e8e\u7e8f\u7e90\u4328\u4329\u7e91\u7e92\u432a\u432b\u432c\u432d\u7e93\u7e94\u7e95\u7e96\u432e\u7e97\u432f\u4330\u4331\u4332\u7e98\u7e99\u7e9a\u7e9b\u4333\u4334\u7e9c\u7e9d\u4335\u7e9e\u7e9f\u7ea0\u7ea1\u7ea2\u7ea3\u7ea4\u7ea5\u7ea6\u7ea7\u7ea8\u7ea9\u7eaa\u7eab\u7eb6\u4336\u7eac\u7ead\u7eae\u7eaf\u7eb0\u7eb1\u7eb2\u7eb3\u7eb4\u7eb5\u7eb7\u7eb8\u7eb9\u7eba\u7ebb\u7ebc\u7ebd\u7ebe\u4338\u7ebf\u7ec0\u7ec1\u7ec2\u7ec3\u7ec4\u7ec5\u7ec6\u7ec7\u7ec8\u7ec9\u7eca\u7ecb\u7ecc\u7ecd\u7ece\u7ecf\u7ed0\u4337\u4339\u7ed1\u7ed2\u7ed3\u7ed4\u7ed5\u7ed6\u7ed7\u7ed8\u7ed9\u7eda\u7edb\u7edc\u7edd\u7ede\u7edf\u433a\u433b\u7ee0\u7ee1\u7ee2\u7ee3\u7ee4\u7ee5\u7ee6\u7ee7\u7ee8\u433c\u7ee9\u7eea\u7eeb\u7eec\u7eed\u7eee\u7eef\u7ef0\u7ef1\u7ef2\u7ef3\u7ef4\u7ef5\u7ef6\u7ef7\u7ef8\u7ef9\u7efa\u7efb\u7efc\u7efd\u7efe\u7eff\u7f00\u7f01\u433d\u7f02\u7f03\u7f04\u7f05\u7f06\u7f07\u7f08\u7f09\u7f0a\u7f0b\u7f0c\u7f0d\u7f0e\u7f0f\u7f10\u7f11\u7f12\u7f13\u7f14\u7f15\u7f16\u7f17\u7f18\u433e\u433f\u7f19\u7f1a\u7f1b\u7f1c\u7f1d\u7f1e\u7f1f\u7f20\u7f21\u7f22\u7f23\u7f24\u4340\u7f25\u7f26\u7f27\u7f28\u7f29\u7f2a\u7f2b\u7f2c\u7f2d\u7f2e\u7f2f\u7f30\u7f31\u7f32\u7f33\u7f34\u4341\u7f35\u7f36\u7f37\u7f38\u4342\u7f39\u7f3a\u7f3c\u4343\u7f3b\u7f3d\u4344\u4345\u4346\u4347\u4348\u4349\u7f3e\u7f3f\u7f40\u434a\u7f41\u7f42\u434b\u434c\u7f43\u434d\u7f44\u7f45\u7f46\u7f47\u7f48\u7f49\u7f4a\u7f4b\u7f4c\u7f4d\u7f4e\u7f4f\u434e\u7f50\u7f51\u7f52\u7f53\u434f\u7f54\u7f55\u7f56\u7f57\u4350\u4351\u7f58\u7f59\u7f5a\u4352\u4353\u4354\u7f5b\u7f5c\u7f5d\u7f5e\u7f5f\u7f60\u7f61\u7f62\u4355\u4356\u4357\u7f63\u4358\u7f64\u7f65\u7f66\u4359\u435a\u7f67\u7f68\u7f69\u7f6a\u7f6b\u7f6c\u7f6d\u7f6e\u7f72\u435b\u435c\u435d\u435e\u7f6f\u7f70\u7f71\u7f73\u7f74\u435f\u7f75\u7f76\u7f77\u7f78\u7f79\u7f7a\u7f7b\u7f7c\u4360\u4361\u7f7d\u7f7e\u7f7f\u7f80\u7f81\u4362\u7f82\u4363\u7f83\u7f84\u7f85\u7f86\u4364\u4365\u7f87\u7f88\u7f89\u4366\u9fe1\u7f8a\u7f8b\u7f8c\u7f8d\u7f8e\u7f8f\u7f90\u7f91\u7f92\u7f93\u7f94\u7f96\u7f97\u7f98\u7f99\u4367\u4368\u4369\u7f95\u7f9a\u7f9b\u7f9c\u7f9d\u7f9e\u7f9f\u436a\u436b\u436c\u436d\u7fa0\u7fa1\u7fa2\u436e\u436f\u4370\u7fa3\u7fa4\u7fa5\u7fa6\u7fa7\u7fa8\u7fa9\u7faa\u4371\u7fab\u4372\u4373\u4374\u4375\u4376\u7fac\u7fad\u7fae\u7faf\u7fb0\u4377\u7fb1\u7fb2\u4378\u4379\u437a\u7fb3\u7fb4\u7fb5\u437b\u437c\u7fb6\u7fb7\u7fb8\u7fb9\u7fba\u7fbb\u7fbc\u437d\u7fbd\u7fbe\u7fbf\u7fc0\u7fc1\u7fc2\u7fc3\u7fc4\u7fc5\u7fc6\u437e\u437f\u7fc7\u7fc8\u7fc9\u7fca\u7fcb\u7fcc\u7fcd\u7fce\u7fcf\u7fd0\u7fd1\u7fd2\u4380\u4381\u4382\u4383\u4384\u4385\u4386\u7fd3\u7fd4\u7fd5\u7fd6\u7fd7\u7fd8\u7fd9\u7fda\u4387\u4388\u4389\u438a\u7fdb\u7fdc\u7fdd\u438b\u438c\u438d\u438e\u7fde\u7fdf\u7fe0\u7fe1\u7fe2\u7fe3\u7fe4\u438f\u4390\u4391\u4392\u4393\u7fe5\u7fe6\u7fe7\u7fe8\u7fe9\u7fea\u7feb\u7fec\u7fed\u7fee\u7fef\u7ff0\u7ff1\u4394\u4395\u7ff2\u7ff3\u7ff4\u7ff5\u7ff6\u7ffc\u7ff7\u7ff8\u7ff9\u7ffa\u7ffb\u4396\u4397\u4398\u7ffd\u7ffe\u7fff\u8000\u4399\u439a\u8001\u8002\u8003\u439b\u8004\u8005\u8006\u8007\u8008\u8009\u800a\u800b\u439c\u439d\u439e\u800c\u800d\u800e\u800f\u8010\u8011\u439f\u43a0\u43a1\u8012\u8013\u8014\u43a2\u8015\u8016\u8017\u8018\u8019\u801a\u801b\u801c\u801d\u801e\u801f\u43a3\u8020\u8021\u8022\u43a4\u43a5\u8023\u8024\u8025\u43a6\u43a7\u43a8\u43a9\u43aa\u8026\u8027\u43ab\u43ac\u8028\u8029\u802a\u802b\u802c\u43ad\u43ae\u43af\u802d\u802e\u43b0\u802f\u8030\u43b1\u8031\u8032\u8033\u8034\u43b2\u8035\u8036\u8037\u8038\u8039\u803a\u803b\u803c\u803d\u803e\u803f\u8040\u8041\u8042\u43b3\u43b4\u8043\u8044\u8045\u8046\u8047\u8048\u8049\u804a\u804b\u804c\u804d\u43b5\u43b6\u804e\u804f\u8050\u8051\u8052\u8053\u8054\u8060\u43b7\u8055\u8056\u8057\u8058\u43b8\u43b9\u8059\u805a\u805b\u805c\u805d\u805e\u805f\u8061\u8062\u8063\u9fe2\u43ba\u43bb\u43bc\u43bd\u43be\u8064\u8065\u8066\u8067\u8068\u8069\u806a\u806b\u9fe3\u43bf\u43c0\u806c\u806d\u43c1\u43c2\u43c3\u806f\u8070\u8071\u8072\u8073\u43c4\u43c5\u43c6\u43c7\u806e\u8074\u8075\u8076\u8077\u9fe4\u43c8\u8078\u8079\u807a\u807b\u807c\u43c9\u807d\u807e\u43ca\u807f\u8080\u8081\u8082\u8083\u8084\u8085\u8086\u43cb\u8087\u8088\u8089\u808a\u808b\u808c\u808d\u808e\u808f\u43cc\u43cd\u8090\u8091\u8092\u8093\u8094\u8095\u8096\u8097\u8098\u8099\u809a\u809b\u809c\u809d\u809e\u809f\u80a0\u43ce\u43cf\u80a1\u80a2\u80a3\u80a4\u80a5\u80a6\u80a7\u80a8\u80a9\u80aa\u80ab\u80ac\u80ad\u80ae\u80af\u80b0\u80b1\u80b2\u80b3\u80b4\u80b5\u80b6\u80b7\u80b8\u80b9\u80ba\u80bb\u80bc\u80bd\u80be\u80bf\u80c0\u80c1\u43d0\u43d1\u43d2\u43d3\u43d4\u43d5\u43d6\u43d7\u43d8\u43d9\u43da\u43db\u43dc\u43dd\u6711\u80c2\u80c3\u80c4\u80c5\u80c6\u80c7\u80c8\u80c9\u80ca\u80cb\u80cc\u80cd\u80ce\u80cf\u80d0\u80d1\u80d2\u80d3\u80d4\u80d5\u80d6\u80d7\u80d8\u80d9\u80da\u80db\u80dc\u80dd\u80de\u80df\u80e0\u80e1\u80e2\u80e3\u80e4\u80e5\u80e6\u80e7\u80e8\u80e9\u80ea\u80eb\u80ec\u8109\u43de\u43df\u43e0\u43e1\u43e2\u43e3\u43e4\u43e5\u80ed\u80ee\u80ef\u80f0\u80f1\u80f2\u80f3\u80f4\u80f5\u80f6\u80f7\u80f8\u80f9\u80fa\u80fb\u80fc\u80fd\u80fe\u80ff\u8100\u8101\u8102\u8103\u8104\u8105\u8106\u8107\u8108\u810a\u810b\u810c\u810d\u810e\u810f\u8110\u8111\u8112\u8113\u8114\u43e6\u43e7\u43e8\u43e9\u43ea\u43eb\u43ec\u43ed\u43ee\u8115\u8116\u8117\u8118\u8119\u811a\u811b\u811c\u811d\u811e\u811f\u8120\u8121\u8122\u8123\u8124\u8125\u8126\u8127\u8128\u8129\u812a\u812b\u812c\u812d\u812e\u812f\u8130\u8131\u8132\u8133\u8134\u8135\u8136\u8137\u8138\u43ef\u43f0\u43f1\u43f2\u43f3\u43f4\u43f5\u43f6\u43f7\u43f8\u43f9\u43fa\u43fb\u8139\u813a\u813b\u813c\u813d\u813e\u813f\u8140\u8141\u8142\u8143\u8144\u8145\u8146\u8147\u8148\u8149\u814a\u814b\u814c\u814d\u814e\u814f\u8150\u8151\u8152\u8153\u8154\u8155\u8156\u8157\u8158\u8159\u815a\u3b39\u43fc\u43fd\u43fe\u43ff\u4400\u4401\u4402\u4403\u4404\u4405\u4406\u4407\u4408\u4409\u440a\u440b\u440c\u5e50\u6721\u815b\u815c\u815d\u815e\u815f\u8160\u8161\u8162\u8163\u8164\u8165\u8166\u8167\u8168\u8169\u816a\u816b\u816c\u816d\u816e\u816f\u8170\u8171\u8172\u8173\u8174\u8175\u8176\u8177\u8178\u8179\u817a\u817b\u817c\u817d\u817e\u440d\u440e\u440f\u4410\u4411\u4412\u4413\u4414\u4415\u4416\u4417\u4418\u4419\u441a\u441b\u817f\u8180\u8181\u8182\u8183\u8184\u8185\u8186\u8187\u8188\u8189\u818a\u818b\u818c\u818d\u818e\u818f\u8190\u8191\u441c\u441d\u441e\u441f\u4420\u4421\u4422\u4423\u4424\u4425\u4426\u4427\u4428\u4429\u442a\u8192\u8193\u8194\u8195\u8196\u8197\u8198\u8199\u819a\u819b\u819c\u819d\u819e\u819f\u81a0\u81a1\u81a2\u81a3\u442b\u442c\u442d\u442e\u442f\u4430\u4431\u4432\u4433\u4434\u6725\u81a5\u81a6\u81a7\u81a8\u81a9\u81aa\u81ab\u81ac\u81ad\u81ae\u81af\u81b0\u81b1\u81b2\u81b3\u81b4\u81b5\u81b6\u4435\u4436\u4437\u4438\u4439\u443a\u443b\u443c\u443d\u81b7\u81b8\u81b9\u81ba\u81bb\u81bc\u81bd\u81be\u81bf\u81c0\u81c1\u81c2\u81c3\u81c4\u81c5\u81c6\u81c7\u81c8\u81c9\u81ca\u81cb\u81cc\u443e\u443f\u4440\u4441\u81cd\u81ce\u81cf\u81d0\u81d1\u81d2\u81d3\u4442\u4443\u4444\u4445\u81d4\u81d5\u81d7\u81d8\u4446\u4447\u4448\u81d6\u81d9\u81da\u81db\u81dc\u4449\u444a\u81dd\u352e\u444b\u444c\u444d\u444e\u81de\u81df\u444f\u81e0\u81e1\u81e2\u81e3\u81e4\u81e5\u4450\u81e6\u81e7\u81e8\u81e9\u4451\u81ea\u81eb\u81ec\u81ed\u81ee\u81ef\u81f0\u81f1\u81f2\u81f3\u81f4\u4452\u81f5\u81f6\u81f7\u81f8\u81f9\u4453\u81fa\u81fb\u81fc\u81fd\u81fe\u81ff\u8200\u8201\u4454\u8202\u4455\u8203\u8204\u8205\u8207\u4456\u8208\u4457\u8206\u8209\u4458\u820a\u820b\u820c\u820d\u820e\u820f\u8210\u4459\u445a\u8211\u445b\u8212\u8213\u8214\u8215\u8216\u8217\u445c\u8218\u8219\u821a\u821b\u821c\u821d\u821e\u445d\u445e\u445f\u821f\u8220\u4460\u8221\u8222\u8223\u8224\u4461\u4462\u4463\u8225\u8226\u8227\u8228\u8229\u822a\u822b\u822c\u822d\u822e\u822f\u8230\u8231\u4464\u4465\u8232\u8233\u8234\u8235\u8236\u8237\u8238\u8239\u823a\u823b\u4466\u4467\u4468\u4469\u823c\u823d\u823e\u823f\u446a\u446b\u446c\u446d\u446e\u8240\u8241\u8242\u8243\u8244\u8245\u8246\u8247\u8248\u8249\u446f\u4470\u824a\u824b\u824c\u824d\u4471\u4472\u4473\u4474\u4475\u4476\u4477\u4478\u824e\u824f\u8250\u8251\u8252\u8253\u8254\u4479\u447a\u447b\u8255\u8256\u8257\u8258\u8259\u447c\u447d\u447e\u825a\u825b\u825c\u825d\u447f\u4480\u4481\u4482\u4483\u4484\u4485\u825e\u825f\u8260\u4486\u4487\u4488\u8261\u8262\u8263\u8264\u8265\u8266\u8267\u8268\u8269\u4489\u826a\u826b\u826c\u826d\u826e\u826f\u8270\u8271\u9fe5\u8272\u448a\u8273\u8274\u448b\u8275\u448c\u448d\u448e\u448f\u8276\u4490\u8277\u8278\u8279\u4491\u827a\u9fb7\u827b\u827c\u827d\u827e\u827f\u8280\u8281\u8282\u4492\u4493\u4494\u8283\u8284\u8285\u8286\u8287\u8288\u8289\u828a\u828b\u828c\u828d\u828e\u828f\u8290\u8291\u8292\u8293\u8294\u8295\u8296\u8297\u4495\u4496\u4497\u4498\u4499\u8298\u8299\u829a\u829b\u829c\u829d\u829e\u829f\u82a0\u82a1\u82a2\u82a3\u82a4\u82a5\u82a6\u82a7\u82a8\u82a9\u82aa\u82ab\u82ac\u82ad\u82ae\u82af\u82b0\u82b1\u82b2\u82b3\u82b4\u82b5\u82b6\u82b7\u82b8\u82b9\u82ba\u82bb\u82bc\u82bd\u82be\u82c0\u82c1\u82c2\u82c3\u82c4\u82c5\u82c6\u82c7\u82c8\u82c9\u82ca\u82cb\u82cc\u82cd\u82ce\u82cf\u833e\u449a\u449b\u449c\u449d\u449e\u449f\u44a0\u44a1\u44a2\u44a3\u44a4\u44a5\u82bf\u82d0\u82d1\u82d2\u82d3\u82d4\u82d5\u82d6\u82d7\u82d8\u82d9\u82da\u82db\u82dc\u82dd\u82de\u82df\u82e0\u82e1\u82e2\u82e3\u82e4\u82e5\u82e6\u82e7\u82e8\u82e9\u82ea\u82eb\u82ec\u82ed\u82ee\u82ef\u82f0\u82f1\u82f2\u82f3\u82f4\u82f5\u82f6\u82f7\u82f8\u82f9\u82fa\u82fb\u82fc\u82fd\u82fe\u82ff\u8300\u8301\u8302\u8303\u8304\u8305\u8306\u8307\u8308\u8309\u830a\u830b\u830c\u830d\u830e\u830f\u8310\u8311\u8313\u8314\u8315\u44a6\u44a7\u44a8\u44a9\u44aa\u44ab\u44ac\u44ad\u44ae\u44af\u8312\u8316\u8317\u8318\u8319\u831a\u831b\u831c\u831e\u831f\u8320\u8321\u8322\u8324\u8325\u8326\u8327\u8328\u8329\u832a\u832b\u832c\u832d\u832e\u832f\u8330\u8331\u8332\u8333\u8334\u8335\u8336\u8337\u8338\u8339\u833a\u833b\u833c\u833d\u833f\u8340\u8341\u8342\u8343\u8344\u8345\u8346\u8347\u8348\u8349\u834a\u834b\u834c\u834d\u834e\u834f\u8350\u8351\u8352\u8354\u8355\u8356\u8357\u8358\u8359\u835a\u835b\u835c\u835d\u835e\u835f\u8360\u8361\u8362\u8363\u8364\u8365\u8366\u8367\u8368\u8369\u836a\u836b\u836c\u836d\u836e\u836f\u9fd2\u44b0\u44b1\u44b2\u44b3\u44b4\u44b5\u44b6\u44b7\u44b8\u44b9\u44ba\u44bb\u44bc\u44bd\u44be\u44bf\u44c0\u44c1\u831d\u8323\u8370\u8371\u8372\u8373\u8374\u8375\u8376\u8377\u8378\u8379\u837a\u837b\u837c\u837d\u837e\u837f\u8380\u8381\u8382\u8383\u8384\u8385\u8386\u8387\u8388\u8389\u838a\u838b\u838c\u838d\u838e\u838f\u8390\u8391\u8392\u8393\u8394\u8395\u8396\u8397\u8398\u8399\u839a\u839b\u839c\u839d\u839e\u839f\u83a0\u83a1\u83a2\u83a3\u83a4\u83a5\u83a6\u83a7\u83a8\u83a9\u83aa\u83ab\u83ac\u83ae\u83af\u83b0\u83b1\u83b2\u83b3\u83b4\u83b5\u83b6\u83b7\u83b8\u83b9\u83ba\u83bb\u83bc\u83bd\u9fca\u44c2\u44c3\u44c4\u44c5\u44c6\u44c7\u44c8\u44c9\u44ca\u44cb\u44cc\u44cd\u44ce\u44cf\u44d0\u44d1\u44d2\u44d3\u44d4\u44d6\u8353\u83be\u83bf\u83c0\u83c1\u83c2\u83c3\u83c4\u83c5\u83c6\u83c7\u83c8\u83c9\u83ca\u83cb\u83cc\u83cd\u83ce\u83cf\u83d0\u83d1\u83d2\u83d3\u83d4\u83d5\u83d6\u83d7\u83d8\u83d9\u83da\u83db\u83dc\u83dd\u83de\u83df\u83e0\u83e1\u83e2\u83e3\u83e4\u83e5\u83e6\u83e7\u83e8\u83e9\u83ea\u83eb\u83ec\u83ed\u83ee\u83ef\u83f0\u83f1\u83f2\u83f3\u83f4\u83f5\u83f6\u83f7\u83f8\u83f9\u83fa\u83fb\u83fc\u83fd\u83fe\u83ff\u8400\u8401\u8402\u8403\u8404\u8405\u8406\u8407\u8408\u8409\u840a\u840b\u840c\u840d\u840e\u840f\u8410\u8411\u8412\u8413\u8414\u8415\u8416\u8417\u8418\u8419\u841a\u841b\u841c\u841d\u841e\u841f\u8420\u8421\u8422\u8423\u8424\u8425\u8426\u8427\u8428\u8457\u9fbf\u44d5\u44d7\u44d8\u44d9\u44da\u44db\u44dc\u44dd\u44de\u44df\u44e0\u44e1\u44e2\u44e3\u44e4\u44e5\u44e6\u44e7\u44e8\u44e9\u44ea\u44eb\u44ec\u44ed\u83ad\u8429\u842a\u842b\u842d\u842e\u842f\u8430\u8431\u8432\u8433\u8434\u8435\u8436\u8437\u8438\u8439\u843a\u843b\u843c\u843d\u843e\u843f\u8440\u8441\u8442\u8443\u8444\u8445\u8446\u8447\u8448\u8449\u844a\u844b\u844c\u844d\u844e\u844f\u8450\u8451\u8452\u8453\u8454\u8455\u8456\u8458\u8459\u845a\u845b\u845c\u845d\u845e\u845f\u8460\u8461\u8462\u8463\u8464\u8465\u8466\u8467\u8468\u8469\u846a\u846b\u846c\u846d\u846e\u846f\u8470\u8471\u8472\u8473\u8474\u8475\u8476\u8477\u8478\u8479\u847a\u847b\u847c\u847d\u847e\u847f\u8480\u8481\u8482\u8483\u8484\u8485\u8486\u8487\u8488\u8489\u848a\u848b\u848c\u848d\u848e\u848f\u9fd3\u44ee\u44ef\u44f0\u44f1\u44f2\u44f3\u44f4\u44f5\u44f6\u44f7\u44f8\u44f9\u44fa\u44fb\u8490\u8491\u8492\u8493\u8494\u8495\u8496\u8497\u8498\u8499\u849a\u849b\u849c\u849d\u849e\u849f\u84a0\u84a1\u84a2\u84a3\u84a4\u84a5\u84a6\u84a7\u84a8\u84a9\u84aa\u84ab\u84ac\u84ad\u84ae\u84af\u84b0\u84b1\u84b2\u84b3\u84b4\u84b5\u84b6\u84b7\u84b9\u84ba\u84bb\u84bc\u84bd\u84be\u84bf\u84c0\u84c1\u84c2\u84c3\u84c4\u84c5\u84c6\u84c7\u84c8\u84c9\u84ca\u84cb\u84cc\u84cd\u84ce\u84cf\u84d0\u84d1\u84d2\u84d3\u84d4\u84d5\u84d6\u84d7\u84d8\u84d9\u84da\u84db\u84dc\u84dd\u84de\u84df\u84e0\u84e1\u84e2\u84e3\u84e4\u84e6\u44fc\u44fd\u44fe\u44ff\u4500\u4501\u4502\u4503\u4504\u4505\u4506\u4507\u4508\u4509\u450a\u450b\u450c\u450d\u84e5\u84e7\u84e8\u84e9\u84ea\u84eb\u84ec\u84ed\u84ee\u84ef\u84f0\u84f1\u84f2\u84f3\u84f4\u84f5\u84f6\u84f7\u84f8\u84f9\u84fa\u84fb\u84fc\u84fd\u84fe\u84ff\u8500\u8501\u8502\u8503\u8504\u8505\u8506\u8507\u8508\u8509\u850a\u850b\u850c\u850d\u850e\u850f\u8510\u8511\u8512\u8513\u8514\u8515\u8516\u8517\u8518\u8519\u851a\u851b\u851c\u851d\u851e\u851f\u8520\u8521\u8522\u8523\u8524\u8525\u8526\u8527\u8528\u8529\u852a\u852b\u852c\u852d\u852e\u852f\u8530\u8531\u8532\u8533\u8534\u8535\u8536\u8537\u8538\u8539\u853a\u853b\u853c\u450e\u450f\u4510\u4511\u4512\u4513\u4514\u4515\u4516\u4517\u4518\u4519\u451a\u451b\u451c\u451d\u451e\u451f\u4520\u4521\u4522\u4523\u4524\u4525\u4526\u4527\u4528\u4529\u452a\u452b\u452c\u853d\u853e\u853f\u8540\u8541\u8542\u8543\u8544\u8545\u8546\u8547\u8548\u8549\u854a\u854b\u854c\u854d\u854e\u854f\u8550\u8551\u8552\u8553\u8554\u8555\u8556\u8557\u8558\u8559\u855a\u855b\u855c\u855d\u855e\u855f\u8560\u8561\u8562\u8563\u8564\u8565\u8566\u8567\u8568\u8569\u856a\u856b\u856c\u856d\u856e\u856f\u8570\u8571\u8572\u8573\u8574\u8575\u452d\u452e\u452f\u4530\u4531\u4532\u4533\u4534\u4535\u4536\u4537\u4538\u4539\u453a\u453b\u453c\u453d\u453e\u453f\u4540\u4541\u4542\u4543\u4544\u8576\u8577\u8578\u8579\u857a\u857b\u857c\u857d\u857e\u857f\u8580\u8581\u8582\u8583\u8584\u8585\u8586\u8587\u8588\u8589\u858a\u858b\u858c\u858d\u858e\u858f\u8590\u8591\u8592\u8593\u8594\u8595\u8596\u8597\u8598\u8599\u859a\u859b\u859c\u859d\u859e\u859f\u85a0\u85a1\u85a2\u85a3\u85a4\u85a5\u85a6\u85a7\u85a8\u85aa\u85ab\u85ac\u85ae\u9fa9\ufa1f\u4545\u4546\u4547\u4548\u4549\u454a\u454b\u454c\u454d\u454e\u454f\u4550\u4551\u85a9\u85ad\u85af\u85b0\u85b1\u85b2\u85b3\u85b4\u85b5\u85b6\u85b7\u85b8\u85b9\u85ba\u85bb\u85bc\u85bd\u85be\u85bf\u85c0\u85c1\u85c2\u85c3\u85c4\u85c5\u85c6\u85c7\u85c8\u85c9\u85ca\u85cb\u85cc\u85cd\u85ce\u85cf\u85d0\u85d1\u85d2\u85d3\u8624\u4552\u4553\u4554\u4555\u4556\u4557\u4558\u4559\u455a\u455b\u455c\u455d\u85d4\u85d5\u85d6\u85d7\u85d8\u85d9\u85da\u85db\u85dc\u85dd\u85de\u85df\u85e0\u85e1\u85e2\u85e3\u85e4\u85e5\u85e6\u85e7\u85e8\u85e9\u85ea\u85eb\u85ec\u85ed\u85ef\u85f0\u85f1\u85f2\u85f3\u85f4\u85f5\u455e\u455f\u4560\u4561\u4562\u4563\u4564\u4565\u85ee\u85f6\u85f7\u85f8\u85f9\u85fa\u85fb\u85fc\u85fd\u85fe\u85ff\u8600\u8601\u8602\u8603\u8604\u8605\u8606\u8607\u8608\u8609\u860a\u860b\u860c\u860d\u860e\u860f\u8610\u8611\u8613\u8614\u8622\u4566\u4567\u4568\u4569\u456a\u456b\u456c\u456d\u456e\u456f\u4570\u4571\u4572\u8612\u8615\u8616\u8617\u8618\u8619\u861a\u861b\u861c\u861d\u861e\u861f\u8620\u8621\u8623\u8625\u8626\u8627\u8628\u8629\u862a\u862b\u862c\u862d\u862e\u862f\u8630\u4573\u4574\u4575\u4576\u4577\u8632\u8633\u8634\u8635\u8636\u8637\u9fc0\u9fe6\u4578\u4579\u457a\u8631\u8638\u8639\u863a\u863b\u863c\u863d\u863e\u863f\u8640\u8641\u457b\u457c\u457d\u8642\u8643\u8644\u8645\u457e\u8646\u8647\u8648\u8649\u457f\u4580\u4581\u864a\u4582\u4583\u4584\u4585\u4586\u864b\u864c\u4587\u864d\u864e\u864f\u4588\u5f6a\u8650\u4589\u8651\u8653\u8654\u458a\u458b\u458c\u458d\u8655\u8656\u8657\u8658\u8659\u865a\u458e\u458f\u865b\u865c\u865d\u4590\u4591\u865e\u865f\u4592\u4593\u4594\u4595\u4596\u8660\u8661\u8662\u8663\u4597\u8664\u8665\u8666\u4598\u8667\u8668\u4599\u8669\u459a\u459b\u459c\u866a\u866b\u866c\u459d\u866d\u866e\u866f\u8670\u8671\u8672\u8673\u8674\u8675\u8676\u8677\u8678\u8679\u867a\u867b\u867c\u867d\u867e\u867f\u8680\u8681\u8682\u8683\u459e\u459f\u45a0\u8684\u8685\u8686\u8687\u8689\u868a\u868b\u868c\u868d\u868e\u868f\u8690\u8691\u8692\u8693\u8694\u8695\u8696\u8697\u8698\u8699\u869a\u869b\u869c\u869d\u869e\u869f\u86a0\u86a1\u86a2\u86a3\u86a4\u86a5\u86a6\u86a7\u86a8\u86a9\u86aa\u86ac\u45a1\u45a2\u45a3\u86ab\u86ad\u86ae\u86af\u86b0\u86b1\u86b2\u86b3\u86b4\u86b5\u86b6\u86b7\u86b8\u86b9\u86ba\u86bb\u86bc\u86bd\u86be\u86bf\u86c0\u86c1\u86c2\u86c3\u86c4\u86c5\u86c6\u86c7\u86c8\u86c9\u86ca\u86cb\u86cc\u86cd\u86ce\u86cf\ufa21\u45a4\u45a5\u45a6\u45a7\u45a8\u45a9\u45aa\u45ab\u45ac\u8688\u86d0\u86d1\u86d2\u86d3\u86d4\u86d5\u86d7\u86d8\u86d9\u86da\u86db\u86dc\u86dd\u86de\u86df\u86e0\u86e1\u86e2\u86e3\u86e4\u86e5\u86e6\u86e7\u86e8\u86e9\u86ea\u86eb\u86ec\u86ed\u86ee\u86ef\u86f0\u86f1\u86f2\u86f3\u86f4\u45ad\u45ae\u45af\u45b0\u45b1\u45b2\u45b3\u45b4\u45b5\u86d6\u86f5\u86f6\u86f7\u86f8\u86f9\u86fa\u86fb\u86fc\u86fd\u86fe\u86ff\u8700\u8701\u8702\u8703\u8704\u8705\u8706\u8707\u8708\u8709\u870a\u870b\u870c\u870d\u870e\u870f\u8710\u8711\u8712\u8713\u8714\u8715\u8716\u8717\u872b\u8746\u45b6\u45b7\u45b8\u45b9\u45ba\u45bb\u45bc\u45bd\u45be\u8718\u8719\u871a\u871b\u871c\u871d\u871e\u871f\u8720\u8721\u8722\u8723\u8724\u8725\u8726\u8727\u8728\u8729\u872a\u872c\u872d\u872e\u872f\u8730\u8731\u8732\u8733\u8734\u8735\u8736\u8737\u8738\u8739\u873a\u873b\u873c\u873d\u873e\u873f\u8740\u8741\u8742\u8743\u8744\u8745\u8747\u8748\u8749\u874a\u874b\u45bf\u45c0\u45c1\u45c2\u45c3\u45c4\u45c5\u45c6\u45c7\u45c8\u45c9\u45ca\u45d5\u874c\u874d\u874e\u874f\u8750\u8751\u8752\u8753\u8754\u8755\u8756\u8757\u8758\u8759\u875a\u875b\u875c\u875d\u875e\u875f\u8760\u8761\u8762\u8763\u8764\u8765\u8766\u8767\u8768\u8769\u876a\u876b\u876c\u876d\u876e\u876f\u8770\u8771\u8772\u8773\u8774\u8775\u8776\u8777\u8778\u877a\u877b\u877c\u877d\u877e\u877f\u8780\u87e1\u45cb\u45cc\u45cd\u45ce\u45cf\u45d0\u45d1\u45d2\u45d3\u45d4\u45d6\u8779\u8781\u8782\u8783\u8784\u8785\u8786\u8787\u8788\u8789\u878a\u878b\u878c\u878d\u878e\u878f\u8790\u8791\u8792\u8793\u8794\u8795\u8796\u8797\u8798\u8799\u879a\u879b\u879c\u879d\u879e\u879f\u87a0\u87a1\u87a2\u87a3\u87a4\u87a5\u87a6\u87a7\u87a8\u87a9\u87d7\u45d7\u45d8\u45d9\u45da\u45db\u45dc\u45dd\u45de\u87aa\u87ab\u87ac\u87ad\u87ae\u87af\u87b0\u87b1\u87b2\u87b3\u87b4\u87b5\u87b6\u87b7\u87b8\u87b9\u87ba\u87bb\u87bc\u87bd\u87be\u87bf\u87c0\u87c1\u87c2\u87c3\u87c4\u87c5\u87c6\u87c7\u87c8\u87c9\u87ca\u87cb\u87cc\u87cd\u87ce\u87cf\u87d0\u87d1\u87d2\u8801\u45df\u45e0\u45e1\u45e2\u45e3\u45e4\u45e5\u45e6\u45e7\u45e8\u45e9\u45ea\u45eb\u45ec\u45ed\u45ee\u87d3\u87d4\u87d5\u87d6\u87d8\u87d9\u87da\u87db\u87dc\u87dd\u87de\u87df\u87e0\u87e2\u87e3\u87e4\u87e5\u87e6\u87e7\u87e8\u87e9\u87ea\u87eb\u87ec\u87ed\u87ee\u87ef\u87f0\u87f1\u87f2\u87f3\u87f4\u87f5\u880e\u45ef\u45f0\u45f1\u45f2\u45f3\u87f6\u87f7\u87f8\u87f9\u87fa\u87fb\u87fc\u87fd\u87fe\u87ff\u8800\u8802\u8803\u8804\u8805\u8806\u8807\u8808\u8809\u880a\u880b\u880c\u880d\u880f\u45f4\u45f5\u45f6\u45f7\u45f8\u45f9\u45fa\u45fb\u8810\u8811\u8812\u8813\u8814\u8815\u8816\u8817\u8818\u8819\u45fc\u45fd\u45fe\u45ff\u4600\u4601\u881a\u881b\u881c\u881d\u881e\u881f\u8820\u8821\u8822\u8823\u8824\u8834\u4602\u4603\u4604\u8825\u8826\u8827\u8828\u8829\u882a\u882b\u882c\u4605\u4606\u4607\u4608\u4609\u882d\u882e\u882f\u8830\u8831\u8832\u8833\u460a\u460b\u460c\u8835\u8836\u8837\u8838\u8839\u883a\u883b\u460d\u883c\u883d\u883e\u883f\u460e\u8840\u8841\u8842\u460f\u8843\u8844\u4610\u8845\u4611\u8846\u8847\u8848\u8849\u4612\u4613\u4614\u884a\u884b\u884c\u884d\u884e\u884f\u4615\u8850\u8851\u8852\u8853\u8854\u8855\u8856\u8857\u8858\u4616\u8859\u885a\u885b\u885c\u885d\u885e\u885f\u8860\u8861\u4617\u4618\u4619\u8862\u8863\u8864\u8865\u461a\u461b\u8866\u8867\u8868\u8869\u886a\u886b\u886c\u461c\u461d\u461e\u886d\u886e\u886f\u8870\u8871\u8872\u8873\u8874\u8875\u8876\u8877\u8878\u8879\u887a\u887b\u887c\u887d\u887e\u887f\u8880\u8881\u8882\u8883\u8884\u8885\u8886\u8887\u461f\u4620\u4621\u8888\u8889\u888a\u888b\u888c\u888d\u888e\u888f\u8890\u8891\u8892\u8893\u8894\u8895\u8896\u8897\u8898\u8899\u889a\u889b\u889c\u889d\u889e\u889f\u88a0\u88a1\u88a2\u88a3\u88a4\u88a5\u88a6\u88a7\u88a8\u88a9\u88aa\u88ab\u88ac\u88ad\u88ae\u88b0\u4622\u4623\u4624\u4625\u4626\u4627\u88af\u88b1\u88b2\u88b3\u88b4\u88b5\u88b6\u88b7\u88b8\u88b9\u88ba\u88bb\u88bc\u88bd\u88be\u88bf\u88c0\u88c1\u88c2\u88c3\u88c4\u88c5\u88c6\u88c7\u88c8\u88c9\u4628\u4629\u462a\u462b\u462c\u462d\u462e\u88ca\u88cb\u88cc\u88cd\u88ce\u88cf\u88d0\u88d1\u88d2\u88d3\u88d4\u88d5\u88d6\u88d7\u88d8\u88d9\u88da\u88db\u88dc\u88dd\u88de\u88df\u88e0\u88e1\u88e2\u88e3\u88e4\u88e5\u462f\u4630\u4631\u4632\u88e7\u88e8\u88e9\u88ea\u88eb\u88ec\u88ed\u88ee\u88ef\u88f0\u88f1\u88f2\u88f3\u88f4\u88f5\u88f6\u88f7\u88f8\u88f9\u88fa\u88fb\u88fc\u88fd\u88fe\u88ff\u8900\u8901\u8902\u8903\u8904\u4633\u4634\u4635\u4636\u4637\u4638\u4639\u463a\u463b\u463c\u463d\u463e\u463f\u4640\u4641\u4642\u88e6\u8905\u8906\u8907\u8908\u8909\u890a\u890b\u890c\u890d\u890e\u890f\u8910\u8911\u8912\u8913\u8914\u8915\u8916\u8917\u8918\u8919\u891a\u891b\u891c\u891d\u4643\u4644\u4645\u4646\u4647\u4648\u4649\u464a\u464b\u464c\u464d\u891e\u891f\u8920\u8921\u8922\u8923\u8924\u8925\u8926\u8927\u8928\u8929\u892a\u892b\u892c\u892d\u892e\u892f\u8930\u8931\u8932\u8934\u464e\u464f\u4650\u4651\u4652\u4653\u8933\u8935\u8936\u8937\u8938\u8939\u893a\u893b\u893c\u893d\u893e\u893f\u8940\u8941\u8942\u8943\u8944\u8945\u8954\u4654\u4655\u4656\u4657\u4658\u4659\u465a\u465b\u465c\u465d\u8946\u8947\u8948\u8949\u894a\u894b\u894c\u894d\u894e\u894f\u8950\u8951\u8952\u8953\u8955\u9fcb\u465e\u465f\u4660\u4661\u4662\u4663\u8956\u8957\u8958\u8959\u895a\u895b\u895c\u895d\u895e\u895f\u8960\u8961\u8962\u4664\u4665\u8963\u8964\u8965\u8966\u8967\u8968\u4666\u4667\u4668\u4669\u8969\u896a\u896b\u896c\u896d\u896e\u466a\u896f\u8970\u8971\u8972\u466b\u8973\u8974\u897d\u466c\u466d\u8975\u8976\u8977\u466e\u466f\u8978\u8979\u897a\u897b\u897c\u4670\u4671\u897e\u897f\u8980\u8981\u4672\u4673\u8982\u4674\u8983\u8984\u4675\u4676\u8985\u8986\u8987\u8988\u8989\u898a\u898b\u898c\u8999\u898d\u898e\u4677\u4678\u898f\u8990\u8991\u8992\u8993\u8994\u4679\u467a\u467b\u8995\u8997\u8998\u899a\u467c\u467d\u467e\u467f\u899b\u899c\u4680\u4681\u899d\u899e\u899f\u89a0\u89a1\u4682\u4683\u89a2\u89a3\u89a4\u89a5\u4684\u4685\u89a6\u89a7\u89a8\u89a9\u89aa\u4686\u4687\u4688\u4689\u89ab\u89ac\u89ad\u89ae\u89af\u468a\u468b\u468c\u89b0\u89b1\u89b2\u89b3\u468d\u468e\u89b4\u89b5\u89b6\u89b7\u89b8\u468f\u4690\u4691\u4692\u4693\u89b9\u89ba\u89bb\u89bc\u89bd\u4694\u89be\u89bf\u89c0\u4695\u4696\u89c1\u89c2\u89c3\u89c4\u89c5\u89c7\u89c8\u89c9\u89ca\u89cb\u89cc\u89cd\u89ce\u89cf\u89d0\u89d1\u89d2\u89d3\u89d4\u89d5\u89d6\u89d7\u89d8\u89d9\u4697\u89da\u89db\u89dd\u89de\u89dc\u89df\u89e0\u89e1\u89e2\u89e3\u89e4\u89e5\u89e6\u89e7\u4698\u4699\u469a\u89e8\u89e9\u89ea\u89eb\u469b\u89ec\u89ed\u89ee\u89ef\u469c\u469d\u469e\u469f\u46a0\u89f0\u89f1\u46a1\u46a2\u46a3\u46a4\u89f2\u89f3\u46a5\u46a6\u89f4\u9d64\u46a7\u89f5\u89f6\u46a8\u46a9\u46ac\u89f7\u89f8\u89f9\u46aa\u46ab\u89fa\u89fb\u89fc\u89fd\u89fe\u89ff\u46ad\u8a00\u8a01\u8a02\u8a03\u8a04\u8a05\u8a06\u8a07\u8a08\u46ae\u46af\u46b0\u8a09\u8a0a\u8a0b\u8a0c\u8a0d\u8a0e\u8a0f\u8a10\u8a11\u8a12\u8a13\u8a14\u8a15\u8a16\u8a17\u8a18\u8a19\u8a1a\u46b1\u46b2\u8a1b\u8a1c\u8a1d\u8a1e\u8a1f\u8a20\u8a21\u8a22\u8a23\u8a24\u8a25\u8a26\u8a27\u8a28\u8a29\u8a2a\u8a2b\u8a2c\u8a2d\u8a2e\u8a2f\u8a30\u8a31\u8a32\u8a33\u46b3\u46b4\u46b5\u46b6\u46b7\u46b8\u46b9\u46ba\u46bb\u46bc\u46bd\u46be\u46bf\u46c0\u46c1\u46c2\u46c3\u8a34\u8a35\u8a36\u8a37\u8a38\u8a39\u8a3a\u8a3b\u8a3c\u8a3d\u8a3e\u8a3f\u8a40\u8a41\u8a42\u8a43\u8a44\u8a45\u8a46\u8a47\u8a48\u8a49\u8a4a\u8a4b\u8a4c\u8a4d\u8a4e\u8a4f\u8a50\u8a51\u8a52\u8a53\u8a54\u8a55\u8a56\u8a57\u8a58\u8a59\u8a5a\u8a5b\u8a5c\u8a5d\u8a5e\u8a5f\u8a60\u46c4\u46c5\u46c6\u46c7\u46c8\u46c9\u46ca\u46cb\u46cc\u46cd\u46ce\u46cf\u46d0\u46d1\u46d2\u46d3\u8a61\u8a62\u8a63\u8a64\u8a65\u8a66\u8a67\u8a68\u8a69\u8a6a\u8a6b\u8a6c\u8a6d\u8a6e\u8a6f\u8a70\u8a71\u8a72\u8a73\u8a74\u8a75\u8a76\u8a77\u8a78\u8a79\u8a7a\u8a7b\u8a7c\u8a7d\u8a7e\u8a7f\u8a80\u8a81\u8a82\u8a83\u8a84\u8a85\u8a86\u8a87\u8a88\u8a89\u8a8a\u8aa0\u9fc1\u46d4\u46d5\u46d6\u46d7\u46d8\u46d9\u46da\u46db\u46dc\u8a8b\u8a8c\u8a8d\u8a8e\u8a8f\u8a90\u8a91\u8a92\u8a93\u8a94\u8a95\u8a96\u8a97\u8a98\u8a99\u8a9a\u8a9b\u8a9c\u8a9d\u8a9e\u8a9f\u8aa1\u8aa2\u8aa3\u8aa4\u8aa5\u8aa6\u8aa7\u8aa8\u8aa9\u8aaa\u8aab\u8aac\u8aad\u8aae\u46dd\u46de\u46df\u46e0\u46e1\u46e2\u46e3\u46e4\u46e5\u46e6\u46e7\u46e8\u8aaf\u8ab0\u8ab1\u8ab2\u8ab3\u8ab4\u8ab5\u8ab6\u8ab7\u8ab8\u8ab9\u8aba\u8abb\u8abc\u8abd\u8abe\u8abf\u8ac0\u8ac1\u8ac2\u8ac3\u8ac4\u8ac5\u8ac6\u8ac7\u8ac8\u8ac9\u8aca\u8acb\u8acc\u8acd\u8ace\u8acf\u8ad0\u8ad1\u8ad2\u8ad3\u8ad4\u8ad5\u8ad6\u8ad7\u8ad8\u8ad9\u8ada\u8ae9\u46e9\u46ea\u46eb\u46ec\u46ed\u46ee\u46ef\u46f0\u46f1\u46f2\u46f3\u46f4\u46f5\u46f6\u46f7\u46f8\u8adb\u8adc\u8add\u8ade\u8adf\u8ae0\u8ae1\u8ae2\u8ae3\u8ae4\u8ae5\u8ae6\u8ae7\u8ae8\u8aea\u8aeb\u8aec\u8aed\u8aee\u8aef\u8af0\u8af1\u8af2\u8af3\u8af4\u8af5\u8af6\u8af7\u8af8\u8af9\u8afa\u8afb\u8afc\u8afd\u8afe\u8aff\u8b00\u8b01\u8b02\u8b03\u46f9\u46fa\u46fb\u46fc\u46fd\u8b04\u8b05\u8b06\u8b07\u8b08\u8b09\u8b0a\u8b0b\u8b0c\u8b0d\u8b0e\u8b0f\u8b10\u8b11\u8b12\u8b13\u8b14\u8b15\u8b16\u8b17\u8b18\u8b19\u8b1a\u8b1b\u8b1c\u8b1d\u8b1e\u8b1f\u8b20\u8b21\u8b22\u46fe\u46ff\u4700\u4701\u4702\u8b23\u8b24\u8b25\u8b26\u8b27\u8b28\u8b29\u8b2a\u8b2b\u8b2c\u8b2d\u8b2e\u8b2f\u8b30\u8b31\u8b32\u8b33\u8b34\u8b35\u8b36\u8b37\u8b38\u8b39\u8b3a\u8b3b\u8b3c\u8b3d\u8b3e\u4703\u4704\u4705\u4706\u4707\u4708\u4709\u470a\u8b3f\u8b40\u8b41\u8b42\u8b43\u8b44\u8b45\u8b46\u8b47\u8b48\u8b49\u8b4a\u8b4b\u8b4c\u8b4e\u8b4f\u8b50\u8b51\u8b52\u8b53\u8b54\u8b55\u8b56\u8b57\u8b58\u8b59\u8b5a\u8b5b\u8b5c\u9fbb\u470b\u470c\u470d\u470e\u470f\u4710\u4711\u8b4d\u8b5d\u8b5e\u8b5f\u8b60\u8b61\u8b62\u8b63\u8b64\u8b65\u8b66\u8b67\u8b68\u8b69\u8b6a\u8b6b\u8b6c\u8b6d\u8b6e\u8b6f\u8b70\u8b71\u8b72\u4712\u4713\u4714\u4715\u4716\u4717\u4718\u8b73\u8b74\u8b75\u8b76\u8b77\u8b78\u8b79\u8b7a\u8b7b\u8b7c\u8b7d\u4719\u471a\u471b\u471c\u471d\u471e\u8b7e\u8b7f\u8b80\u8b81\u8b82\u8b83\u8b84\u8b85\u471f\u4720\u4721\u8b86\u8b87\u8b88\u8b89\u8b8a\u8b8b\u8b8c\u8b8d\u8b8e\u8b8f\u8b90\u4722\u8b91\u8b92\u8b93\u8b94\u8b95\u8b96\u8b97\u8b98\u8b99\u8b9a\u8b9b\u8b9c\u8b9d\u8b9e\u8b9f\u8ba0\u8ba1\u8ba2\u8ba3\u8ba4\u8ba5\u8ba6\u8ba7\u8ba8\u8ba9\u8baa\u8bab\u8bac\u8bad\u8bae\u8baf\u8bb0\u8bb1\u8bb2\u8bb3\u8bb4\u8bb5\u8bb6\u8bb7\u8bb8\u8bb9\u8bba\u8bbb\u8bbc\u8bbd\u8bbe\u8bbf\u8bc0\u4723\u8bc1\u8bc2\u8bc3\u8bc4\u8bc5\u8bc6\u8bc7\u8bc8\u8bc9\u8bca\u8bcb\u8bcc\u8bcd\u8bce\u8bcf\u8bd0\u8bd1\u8bd2\u8bd3\u8bd4\u8bd5\u8bd6\u8bd7\u8bd8\u8bd9\u8bda\u8bdb\u8bdc\u8bdd\u8bde\u8bdf\u8be0\u8be1\u8be2\u8be3\u8be4\u8be5\u8be6\u8be7\u8be8\u8be9\u4724\u8bea\u8beb\u8bec\u8bed\u8bee\u8bef\u8bf0\u8bf1\u8bf2\u8bf3\u8bf4\u8bf5\u8bf6\u8bf7\u8bf8\u8bf9\u8bfa\u8bfb\u8bfc\u8bfd\u8bfe\u8bff\u8c00\u8c01\u8c02\u8c03\u8c04\u8c05\u8c06\u8c07\u8c08\u8c09\u8c0a\u4725\u8c0b\u8c0c\u8c0d\u8c0e\u8c0f\u8c10\u8c11\u8c12\u8c13\u8c14\u8c15\u8c16\u8c17\u8c18\u8c19\u8c1a\u8c1b\u8c1c\u8c1d\u8c1e\u8c1f\u8c20\u8c21\u8c22\u8c23\u8c24\u8c25\u8c26\u8c27\u4726\u4727\u8c28\u8c29\u8c2a\u8c2b\u8c2c\u4728\u8c2d\u8c2e\u8c2f\u8c30\u8c31\u8c32\u8c33\u8c34\u8c35\u4729\u8c36\u8c37\u472a\u8c38\u472b\u8c39\u8c3a\u8c3b\u472c\u472d\u8c3c\u8c3d\u472e\u8c3e\u472f\u8c3f\u8c40\u8c41\u4730\u8c42\u4731\u8c43\u8c44\u4732\u8c45\u8c46\u4733\u8c47\u8c48\u8c49\u4734\u4735\u8c4a\u8c4b\u4736\u9ff2\u4737\u4738\u4739\u8c4c\u8c4d\u8c4e\u473a\u473b\u473c\u473d\u473e\u473f\u8c4f\u4740\u4741\u4742\u8c50\u8c51\u4743\u8c52\u4744\u8c53\u8c54\u8c55\u8c56\u8c57\u4745\u8c58\u8c59\u8c5a\u8c5b\u8c5c\u8c5d\u4746\u4747\u8c5e\u8c5f\u8c60\u8c61\u4748\u8c62\u8c63\u8c64\u8c65\u8c66\u4749\u8c67\u8c68\u8c69\u8c6a\u474a\u474b\u474c\u8c6b\u8c6c\u8c6d\u8c6e\u474d\u474e\u8c6f\u8c70\u8c71\u8c72\u8c73\u8c74\u8c75\u474f\u8c77\u4750\u4751\u8c76\u4752\u4753\u4754\u4755\u8c78\u8c79\u8c7a\u8c7b\u8c7c\u8c7d\u4756\u4757\u4758\u4759\u8c7e\u8c7f\u8c80\u8c81\u8c82\u8c83\u475a\u475b\u8c84\u8c85\u8c86\u8c87\u8c88\u8c89\u8c8a\u8c8b\u8c8c\u8c8d\u475c\u8c8e\u8c8f\u475d\u475e\u8c90\u8c91\u8c92\u8c93\u475f\u8c94\u8c95\u8c96\u4760\u8c97\u8c98\u8c99\u4761\u4762\u8c9a\u4763\u4764\u4765\u4766\u8c9b\u8c9c\u8c9d\u8c9e\u8c9f\u8ca0\u8ca1\u8ca2\u8ca3\u8ca4\u8ca5\u8ca6\u8ca7\u8ca8\u8ca9\u8caa\u8cab\u8cac\u8cad\u8cae\u4767\u4768\u8caf\u8cb0\u8cb1\u8cb2\u8cb3\u8cb4\u8cb5\u8cb6\u8cb7\u8cb8\u8cb9\u8cba\u8cbb\u8cbc\u8cbd\u8cbe\u8cbf\u8cc0\u8cc1\u4769\u476a\u476b\u476c\u476d\u476e\u476f\u8cc2\u8cc3\u8cc4\u8cc5\u8cc6\u8cc7\u8cc8\u8cc9\u8cca\u8ccb\u8ccc\u8ccd\u8cce\u4770\u4771\u4772\u8ccf\u8cd0\u8cd1\u8cd2\u8cd3\u8cd4\u8cd5\u8cd6\u8cd7\u8cd8\u3562\u4773\u4774\u4775\u8cd9\u8cda\u8cdb\u8cdc\u8cdd\u8cde\u8cdf\u8ce0\u8ce1\u8ce2\u8ce3\u8ce4\u8ce5\u8ce6\u8ce7\u8ce8\u8ce9\u8cea\u8ceb\u8cec\u4776\u4777\u4778\u4779\u477a\u477b\u477c\u477d\u477e\u477f\u8ced\u8cee\u8cef\u8cf0\u8cf1\u8cf2\u8cf3\u8cf4\u8cf5\u4780\u4781\u4782\u4783\u4784\u8cf6\u8cf7\u8cf8\u8cf9\u8cfa\u8cfb\u8cfc\u8cfd\u4785\u4786\u8cfe\u8cff\u8d00\u8d02\u8d03\u8d04\u8d05\u4787\u8d06\u8d07\u8d08\u8d09\u8d0a\u8d0b\u8d0c\u4788\u8d0d\u8d0e\u8d0f\u4789\u8d10\u8d11\u8d12\u8d13\u8d14\u8d15\u8d16\u8d17\u8d18\u478a\u8d19\u8d1a\u478b\u8d1b\u8d1c\u8d1d\u8d1e\u8d1f\u8d20\u8d21\u8d22\u8d23\u8d24\u8d25\u8d26\u8d27\u8d28\u8d29\u8d2a\u8d2b\u8d2c\u8d2d\u8d2e\u8d2f\u8d30\u8d31\u8d32\u8d33\u8d34\u8d35\u8d36\u8d37\u8d38\u8d39\u8d3a\u8d3b\u8d3c\u8d3d\u8d3e\u8d3f\u8d40\u8d41\u8d42\u8d43\u8d44\u8d45\u8d46\u478c\u8d47\u8d48\u8d49\u8d4a\u8d4b\u8d4c\u8d4d\u8d4e\u8d4f\u8d50\u8d51\u8d52\u8d53\u8d54\u8d55\u478d\u478e\u8d56\u8d57\u478f\u4790\u8d58\u8d59\u8d5a\u8d5b\u8d5c\u8d5d\u8d5e\u8d5f\u8d60\u8d61\u8d62\u8d63\u8d64\u4791\u8d65\u8d66\u8d67\u8d68\u8d69\u8d6a\u4792\u8d6b\u4793\u4794\u8d6c\u8d6d\u8d6e\u8d6f\u4795\u8d70\u8d71\u8d72\u8d73\u8d74\u8d75\u9faa\u8d76\u8d77\u8d78\u4796\u4797\u4798\u8d79\u8d7a\u8d7b\u8d7c\u8d7d\u8d7e\u8d7f\ufa23\u4799\u479a\u479b\u479c\u8d80\u8d81\u8d82\u8d83\u8d84\u8d85\u8d86\u8d87\u8d88\u8d89\u8d8a\u8d8b\u479d\u479e\u479f\u47a0\u47a1\u47a2\u47a3\u47a4\u8d8c\u8d8d\u8d8e\u8d8f\u8d90\u8d91\u8d92\u8d93\u8d94\u47a5\u47a6\u47a7\u47a8\u47a9\u47aa\u8d95\u8d96\u8d97\u8d98\u8d99\u8d9a\u47ab\u47ac\u47ad\u47ae\u47af\u47b0\u47b1\u47b2\u8d9b\u8d9c\u8d9d\u8d9e\u8d9f\u8da0\u8da1\u8da2\u8da3\u8da4\u47b3\u47b4\u47b5\u47b6\u47b7\u47b8\u8da5\u8da6\u8da7\u47b9\u47ba\u47bb\u47bc\u8da8\u47bd\u47be\u47bf\u47c0\u47c1\u47c2\u47c3\u47c4\u47c5\u47c6\u8da9\u8daa\u8dab\u8dac\u8dad\u47c7\u8dae\u47c8\u47c9\u47ca\u47cb\u8daf\u8db0\u47cc\u47cd\u47ce\u47cf\u8db1\u47d0\u47d1\u47d2\u8db2\u8db3\u8db4\u47d3\u47d4\u8db5\u8db6\u8db7\u8db8\u47d5\u47d6\u8db9\u8dba\u8dbb\u8dbd\u8dbe\u8dbf\u8dc0\u8dc1\u8dc2\u8dc3\u8dc4\u47d7\u47d8\u47d9\u47da\u47db\u47dc\u47dd\u47de\u8dc5\u8dc6\u8dc7\u8dc8\u8dc9\u8dca\u8dcb\u8dcc\u8dcd\u8dce\u8dcf\u8dd0\u8dd1\u8dd2\u8dd3\u8dd4\u8dd5\u8dd6\u8dd7\u8dd8\u8dd9\u8dda\u8ddb\u8ddc\u8ddd\u8dde\u8df5\u47df\u47e0\u47e1\u47e2\u47e3\u47e4\u47e5\u47e6\u47e7\u47e8\u47e9\u47ea\u47eb\u47ec\u47ed\u8dbc\u8ddf\u8de0\u8de1\u8de2\u8de3\u8de4\u8de5\u8de6\u8de7\u8de8\u8de9\u8dea\u8deb\u8dec\u8ded\u8dee\u8def\u8df0\u8df1\u8df2\u8df3\u8df4\u8df6\u8df7\u8df8\u8df9\u8dfa\u8dfb\u47ee\u47ef\u47f0\u47f1\u47f2\u47f3\u8dfc\u8dfd\u8dfe\u8dff\u8e00\u8e01\u8e02\u8e03\u8e04\u8e05\u8e06\u8e07\u8e08\u8e09\u8e0a\u8e0b\u8e0c\u8e0d\u8e0e\u47f4\u47f5\u47f6\u47f7\u47f8\u47f9\u47fa\u47fb\u47fd\u8e0f\u8e10\u8e11\u8e12\u8e13\u8e14\u8e15\u8e16\u8e17\u8e18\u8e19\u8e1a\u8e1b\u8e1c\u8e1d\u8e1e\u8e1f\u8e20\u8e21\u8e22\u8e23\u8e24\u8e25\u8e26\u8e27\u8e28\u8e29\u8e2a\u8e2c\u8e2d\u8e2e\u8e2f\u8e3a\u47fc\u47fe\u47ff\u4800\u4801\u4802\u4803\u4804\u4805\u4806\u4807\u4808\u4809\u480a\u480b\u480c\u8e2b\u8e30\u8e31\u8e32\u8e33\u8e34\u8e35\u8e36\u8e37\u8e38\u8e39\u8e3b\u8e3c\u8e3d\u8e3e\u8e3f\u8e40\u8e41\u8e42\u8e43\u8e44\u8e45\u480d\u480e\u480f\u4810\u4811\u4812\u4813\u4814\u4815\u4816\u8e46\u8e47\u8e48\u8e49\u8e4a\u8e4b\u8e4c\u8e4d\u8e4e\u8e4f\u8e50\u8e51\u8e52\u8e53\u4817\u4818\u4819\u481a\u481b\u481c\u481d\u8e54\u8e55\u8e56\u8e57\u8e58\u8e59\u8e5a\u8e5b\u8e5c\u8e5d\u8e5e\u8e5f\u8e60\u8e61\u8e62\u8e63\u8e64\u8e65\u8e66\u8e67\u8e6e\u8e80\u481e\u481f\u4820\u4821\u4822\u8e68\u8e69\u8e6a\u8e6b\u8e6c\u8e6d\u8e6f\u8e70\u8e71\u8e72\u8e73\u8e74\u8e75\u8e76\u8e77\u8e78\u8e79\u8e7a\u8e7b\u8e7c\u8e7d\u8e7e\u8e7f\u4823\u4824\u4825\u4826\u4827\u8e81\u8e82\u8e83\u8e84\u8e85\u8e86\u8e87\u8e88\u8e89\u4828\u4829\u8e8a\u8e8b\u8e8c\u8e8d\u8e8e\u8e8f\u482a\u482b\u8e90\u8e91\u8e92\u8e93\u8e94\u8e95\u8e96\u482c\u8e97\u8e98\u8e99\u8e9a\u8e9b\u8e9c\u482d\u482e\u8e9d\u8e9e\u8e9f\u8ea0\u482f\u8ea1\u8ea2\u8ea3\u8ea4\u8ea5\u4830\u8ea6\u8ea7\u8ea9\u8eaa\u8ea8\u4831\u8eab\u8eac\u8ead\u8eae\u8eaf\u8eb0\u4832\u4833\u4834\u4835\u4836\u8eb1\u8eb2\u4837\u4838\u4839\u483a\u8eb3\u8eb4\u8eb5\u8eb6\u8eb7\u8eb8\u8eb9\u8eba\u8ebb\u8ebc\u483b\u8ebd\u8ebe\u483c\u8ebf\u483d\u483e\u8ec0\u8ec1\u8ec2\u8ec3\u8ec4\u8ec5\u483f\u8ec6\u4840\u8ec7\u4841\u8ec8\u8ec9\u8eca\u8ecb\u8ecc\u8ecd\u4842\u4843\u4844\u8ece\u8ecf\u8ed0\u8ed1\u8ed2\u8ed3\u8ed4\u8ed5\u4845\u8ed6\u8ed7\u8ed8\u8ed9\u8eda\u8edb\u8edc\u8edd\u8ede\u8edf\u8ee0\u8ee1\u8ee2\u8ee3\u4846\u4847\u4848\u4849\u484a\u484b\u484c\u484d\u484e\u8ee4\u8ee5\u8ee6\u8ee7\u8ee8\u8ee9\u8eea\u8eeb\u8eec\u8eee\u8eef\u8ef0\u8ef1\u8ef2\u8ef3\u8ef4\u8ef5\u8ef6\u8ef7\u8ef8\u8ef9\u8efa\u8efb\u8efc\u8efd\u9fab\u484f\u4850\u4851\u4852\u8eed\u8efe\u8eff\u8f00\u8f01\u8f02\u8f03\u8f04\u8f05\u8f06\u8f07\u8f08\u8f09\u8f0a\u8f0b\u8f0c\u4853\u4854\u4855\u4856\u4857\u8f0d\u8f0e\u8f0f\u8f10\u8f11\u8f12\u8f13\u8f14\u8f15\u4858\u4859\u485a\u485b\u8f16\u8f17\u8f18\u8f19\u8f1a\u8f1b\u8f1c\u8f1d\u8f1e\u8f1f\u8f20\u8f21\u8f22\u8f23\u8f24\u8f25\u8f26\u8f27\u8f28\u8f29\u8f2a\u8f2b\u8f2c\u485c\u485d\u485e\u485f\u8f2d\u8f2e\u8f2f\u8f30\u8f31\u8f32\u8f33\u8f34\u8f35\u8f36\u8f37\u8f38\u8f39\u8f3a\u8f3b\u8f3c\u4860\u4861\u4862\u4863\u4864\u8f3d\u8f3e\u8f3f\u8f40\u8f41\u8f42\u8f43\u8f44\u8f45\u4865\u4866\u4867\u4868\u4869\u486a\u8f46\u8f47\u8f48\u8f49\u8f4a\u8f4b\u8f4c\u9fc2\u486b\u486c\u486d\u486e\u486f\u4870\u4871\u8f4d\u8f4e\u8f4f\u8f50\u8f51\u8f52\u8f53\u8f54\u4872\u4873\u4874\u4875\u8f55\u8f56\u8f57\u8f58\u8f59\u8f5a\u4876\u8f5b\u8f5c\u8f5d\u8f5e\u8f5f\u4877\u4878\u4879\u8f60\u8f61\u8f62\u487a\u487b\u8f63\u8f64\u487c\u487d\u8f65\u487e\u487f\u8f66\u8f67\u8f68\u8f69\u8f6a\u8f6b\u4880\u8f6c\u8f6d\u8f6e\u8f6f\u8f70\u4881\u8f71\u8f72\u8f73\u8f74\u8f75\u8f76\u8f77\u8f78\u8f79\u8f7a\u8f7b\u4882\u8f7c\u8f7d\u8f7e\u8f7f\u8f80\u8f81\u8f82\u8f83\u8f84\u8f85\u8f86\u8f87\u8f88\u8f89\u8f8a\u8f8b\u8f8c\u8f8d\u8f8e\u8f8f\u8f90\u8f91\u8f92\u8f93\u8f94\u8f95\u8f96\u8f97\u8f98\u8f99\u8f9a\u8f9b\u8f9c\u8f9d\u8f9e\u8f9f\u8fa0\u8fa1\u8fa2\u8fa3\u8fa4\u4883\u8fa5\u8fa6\u8fa7\u8fa8\u8fa9\u8faa\u8fab\u8fac\u8fad\u8fae\u4884\u8faf\u8fb0\u8fb1\u8fb2\u4885\u4886\u8fb3\u4887\u8fb4\u4888\u4889\u8fb5\u8fb6\u8fb7\u8fb8\u8fb9\u8fba\u8fbb\u8fbc\u8fbd\u5de1\u8fbe\u8fbf\u8fc0\u8fc1\u8fc2\u8fc3\u8fc4\u8fc5\u8fc6\u8fc7\u8fc8\u8fc9\u488a\u488b\u8fca\u8fcb\u8fcc\u8fcd\u8fce\u8fcf\u8fd0\u8fd1\u8fd2\u8fd3\u8fd4\u8fd5\u8fd6\u8fd7\u8fd8\u8fd9\u8fda\u8fdb\u8fdc\u8fdd\u8fde\u8fdf\u8fec\ufa24\u488c\u488d\u488e\u488f\u8fe0\u8fe1\u8fe2\u8fe3\u8fe4\u8fe5\u8fe6\u8fe7\u8fe8\u8fe9\u8fea\u8feb\u8fed\u8fee\u8fef\u8ff0\u8ff1\u8ff2\u8ff3\u4890\u4891\u8ff4\u8ff5\u8ff6\u8ff7\u8ff8\u8ff9\u8ffa\u8ffb\u8ffc\u8ffd\u8ffe\u8fff\u9000\u9001\u9002\u9003\u9004\u9005\u9006\u9007\u9008\u9009\u900a\u4892\u4893\u4894\u4895\u4896\u4897\u4898\u900b\u900c\u900d\u900e\u900f\u9010\u9011\u9012\u9013\u9014\u9015\u9016\u9017\u9018\u9019\u901a\u901b\u901c\u901d\u901e\u901f\u9020\u9021\u9022\u9023\u9024\u9025\u9026\u9027\u4899\u489a\u489b\u9028\u9029\u902a\u902b\u902c\u902d\u902e\u902f\u9030\u9031\u9032\u9033\u9034\u9035\u9036\u9037\u9038\u9039\u903a\u903b\u489c\u489d\u489e\u489f\u48a0\u903c\u903d\u903e\u903f\u9040\u9041\u9042\u9043\u9044\u9045\u9046\u9047\u9048\u9049\u904a\u904b\u904c\u904d\u904e\u904f\u9050\u9051\u9052\u9053\u9054\u9055\u9056\u9057\u48a1\u9058\u9059\u905a\u905b\u905c\u905d\u905e\u905f\u9060\u9061\u9062\u9063\u9064\u9065\u48a2\u48a3\u48a4\u48a5\u9066\u9067\u9068\u9069\u906a\u906b\u906c\u906d\u906e\u906f\u9070\u9071\u9073\u48a6\u48a7\u48a8\u48a9\u9072\u9074\u9075\u9076\u9077\u9078\u9079\u907a\u907b\u907c\u9086\u48aa\u48ab\u48ac\u48ad\u907d\u907e\u907f\u9080\u9081\u9082\u9083\u9084\u9085\u9089\u48ae\u9087\u9088\u48af\u48b0\u908a\u908b\u908c\u48b1\u908d\u908e\u908f\u9090\u48b2\u9091\u9092\u9093\u48b3\u9094\u9095\u9096\u9097\u9098\u9099\u909a\u909b\u909c\u909d\u48b4\u909e\u909f\u90a0\u90a1\u90a2\u90a3\u90a4\u90a5\u90a6\u90a7\u90a8\u90a9\u90aa\u90ab\u90ac\u48b5\u48b6\u48b7\u90ad\u90ae\u90af\u90b0\u90b1\u90b2\u90b3\u90b4\u90b5\u90b6\u90b7\u90b8\u90b9\u90ba\u90bb\u48b8\u48b9\u48ba\u90bc\u90bd\u90be\u90bf\u90c0\u90c1\u90c2\u90c3\u90c4\u90c5\u90c6\u90c7\u90c8\u90c9\u90ca\u90cb\u90cc\u90cd\u90ce\u90cf\u90d0\u90d1\u90d3\u48bb\u48bc\u48bd\u48be\u48bf\u48c0\u48c1\u48c2\u90d2\u90d4\u90d5\u90d6\u90d7\u90d8\u90d9\u90da\u90db\u90dc\u90dd\u90de\u90df\u90e0\u90e1\u90e2\u90e3\u90e4\u90e5\u90e6\u90e7\u48c3\u48c4\u48c5\u48c6\u48c7\u48c8\u48c9\u90e8\u90e9\u90ea\u90eb\u90ec\u90ed\u90ee\u90ef\u90f0\u90f1\u90f2\u90f3\u90f4\u90f5\u90f6\u90f7\u90f8\u48ca\u48cb\u48cc\u48cd\u48ce\u48cf\u90f9\u90fa\u90fb\u90fc\u90fd\u90fe\u90ff\u9100\u9101\u9102\u9103\u9104\u9105\u9106\u9107\u9108\u9109\u910a\u48d0\u48d1\u48d2\u910b\u910c\u910d\u910e\u910f\u9110\u9111\u9112\u9113\u9114\u9115\u9116\u9117\u48d3\u48d4\u48d5\u48d6\u48d7\u9118\u9119\u911a\u911b\u911c\u911d\u911e\u911f\u9120\u9121\u9122\u9123\u9124\u9125\u48d8\u48d9\u48da\u48db\u48dc\u9126\u9127\u9128\u9129\u912a\u912b\u912c\u912d\u912e\u912f\u9130\u9131\u9132\u48dd\u48de\u48df\u48e0\u9133\u9134\u9135\u9136\u9137\u48e1\u9138\u9139\u48e2\u913a\u913b\u913c\u913d\u913e\u913f\u9140\u9142\u9141\u9143\u9144\u9145\u9146\u9147\u9148\u48e3\u48e4\u9149\u914a\u914b\u48e5\u48e6\u914c\u914d\u914e\u914f\u9150\u9151\u9152\u48e7\u48e8\u9153\u9154\u9155\u9156\u9157\u9158\u9159\u915a\u915b\u915c\u915d\u915e\u48e9\u48ea\u48eb\u48ec\u48ed\u915f\u9160\u9161\u9162\u9163\u9164\u9165\u48ee\u48ef\u48f0\u48f1\u48f2\u48f3\u9166\u9167\u9168\u9169\u916a\u916b\u916c\u916d\u916e\u916f\u9170\u9171\u48f4\u48f5\u48f6\u48f7\u48f8\u48f9\u9172\u9173\u9174\u9175\u9176\u9177\u9178\u9179\u917a\u917b\u917c\u917d\u917e\u917f\u48fa\u48fb\u9180\u9181\u9182\u9183\u9184\u9185\u9186\u9187\u9188\u9189\u918a\u918b\u918c\u48fc\u48fd\u48fe\u48ff\u918d\u918e\u918f\u9190\u9191\u9192\u9193\u9194\u9195\u9196\u9197\u4900\u4901\u4902\u4903\u4904\u4905\u4906\u4907\u4908\u9198\u9199\u919a\u919b\u919c\u919d\u919e\u919f\u91a0\u91a1\u91a2\u91a3\u91a4\u4909\u490a\u490b\u490c\u91a5\u91a6\u91a7\u91a8\u91a9\u91aa\u91ab\u91ac\u490d\u91ad\u91ae\u91af\u91b0\u91b1\u490e\u490f\u4910\u4911\u4912\u91b2\u91b3\u91b4\u91b5\u91b6\u91b7\u91b8\u91b9\u91ba\u91bb\u4913\u4914\u4915\u4916\u91bc\u91bd\u91be\u91bf\u91c0\u4917\u4918\u91c1\u91c2\u91c3\u91c4\u91c5\u4919\u91c6\u91c7\u91c8\u91c9\u91ca\u91cb\u91cc\u91cd\u91ce\u491a\u91cf\u91d0\u91d1\u91d2\u91d3\u91d4\u91d5\u91d6\u91d7\u91d8\u91d9\u91da\u91db\u91dc\u91dd\u91de\u91df\u91e0\u91e1\u91e2\u491b\u91e3\u91e4\u91e5\u91e6\u91e7\u91e8\u91e9\u91ea\u91eb\u91ec\u91ed\u91ee\u91ef\u91f0\u91f1\u91f2\u91f3\u91f4\u91f5\u91f6\u91f7\u91f8\u91f9\u91fa\u91fb\u91fc\u491c\u91fd\u91fe\u91ff\u9200\u9201\u9202\u9203\u9204\u9205\u9206\u9207\u9208\u9209\u920a\u920b\u920c\u920d\u920e\u920f\u9210\u9211\u9212\u9213\u9214\u9215\u9216\u9217\u9218\u9219\u921a\u921b\u921c\u921d\u921e\u921f\u9220\u9221\u9222\u9223\u9224\u9225\u9226\u9227\u9228\u9229\u922a\u922b\u922c\u491d\u491e\u491f\u4920\u922d\u922e\u922f\u9230\u9231\u9232\u9233\u9234\u9235\u9236\u9237\u9238\u9239\u923a\u923b\u923c\u923d\u923e\u923f\u9240\u9241\u9242\u9243\u9244\u9245\u9246\u9247\u9248\u9249\u924a\u924b\u924c\u924d\u924e\u924f\u9250\u9251\u9252\u9253\u9254\u9255\u9256\u9257\u9258\u9259\u925a\u925b\u925c\u925d\u925e\u925f\u9260\u9261\u9262\u9263\u9264\u9265\u9266\u9267\u9268\u9269\u926a\u926b\u926c\u926d\u926e\u926f\u9270\u9271\u9272\u9273\u9274\u928f\u9faf\u4921\u4922\u4923\u9275\u9276\u9277\u9278\u9279\u927a\u927b\u927d\u927e\u927f\u9280\u9281\u9282\u9283\u9284\u9285\u9286\u9287\u9288\u9289\u928a\u928b\u928c\u928d\u928e\u9290\u9291\u9292\u9293\u9294\u9295\u9296\u9297\u9298\u9299\u929a\u929b\u929c\u929d\u929e\u929f\u92a0\u92a1\u92a2\u92a3\u92a4\u92a5\u92a6\u92a7\u92a8\u92a9\u92aa\u92ab\u92ac\u92ad\u92ae\u92af\u92b0\u92b1\u4924\u4925\u4926\u4927\u4928\u4929\u492a\u92b2\u92b3\u92b4\u92b5\u92b6\u92b7\u92b8\u92b9\u92ba\u92bb\u92bc\u92bd\u92be\u92bf\u92c0\u92c1\u92c2\u92c3\u92c4\u92c5\u92c6\u92c7\u92c8\u92c9\u92ca\u92cb\u92cc\u92cd\u92ce\u92cf\u92d0\u92d1\u92d2\u92d3\u92d4\u92d5\u92d6\u92d7\u92d8\u92d9\u92da\u92db\u92dc\u92dd\u92de\u92df\u92e0\u92e1\u92e2\u92e3\u92e4\u92e5\u92e6\u92e7\u92e8\u92e9\u92ea\u92eb\u92ec\u92ed\u92ee\u92ef\u92f0\u92f1\u92f2\u92f3\u92f4\u92f5\u92f6\ufa27\u492b\u492c\u492d\u492e\u492f\u4930\u4931\u4932\u927c\u92f7\u92f8\u92f9\u92fa\u92fb\u92fc\u92fd\u92fe\u92ff\u9300\u9301\u9302\u9303\u9304\u9305\u9306\u9307\u9308\u9309\u930a\u930b\u930c\u930d\u930e\u930f\u9310\u9311\u9312\u9313\u9314\u9315\u9316\u9317\u9318\u9319\u931a\u931b\u931c\u931d\u931e\u931f\u9320\u9321\u9322\u9323\u9324\u9325\u9326\u9327\u9329\u932a\u932b\u932c\u932d\u932e\u932f\u9330\u9331\u9332\u9333\u9334\u9335\u9336\u9337\u9338\u9339\u933a\u933b\u933c\u933d\u933e\u933f\u9340\u9341\u9342\u9343\u9344\u9345\u9346\u9348\u9fac\ufa28\u4933\u4934\u4935\u4936\u9328\u9347\u9349\u934a\u934b\u934c\u934d\u934e\u934f\u9350\u9351\u9352\u9353\u9354\u9355\u9356\u9357\u9358\u9359\u935a\u935b\u935c\u935d\u935e\u935f\u9360\u9361\u9362\u9363\u9364\u9365\u9366\u9367\u9368\u9369\u936a\u936b\u936c\u936d\u936e\u936f\u9370\u9371\u9372\u9373\u9374\u9375\u9376\u9377\u9378\u9379\u937a\u937b\u937c\u937d\u937e\u937f\u9380\u9381\u9382\u9383\u9384\u9385\u9386\u9387\u4937\u4938\u4939\u493a\u493b\u493c\u9388\u9389\u938a\u938b\u938c\u938d\u938e\u938f\u9390\u9391\u9392\u9393\u9394\u9395\u9396\u9397\u9398\u9399\u939a\u939b\u939c\u939d\u939e\u939f\u93a0\u93a1\u93a2\u93a3\u93a4\u93a5\u93a6\u93a7\u93a8\u93aa\u93ab\u93ac\u93ad\u93ae\u93af\u93b0\u93b1\u93b2\u93b3\u93b4\u93b5\u93b6\u93b7\u93b8\u93b9\u93ba\u93bb\u93bc\u93bd\u93be\u93bf\u9fb2\u493d\u493e\u493f\u4940\u4941\u4942\u4943\u4944\u4945\u4946\u4947\u93a9\u93c0\u93c1\u93c2\u93c3\u93c4\u93c5\u93c6\u93c7\u93c8\u93c9\u93ca\u93cb\u93cc\u93cd\u93ce\u93cf\u93d0\u93d1\u93d2\u93d3\u93d4\u93d5\u93d6\u93d7\u93d8\u93d9\u93da\u93db\u93dc\u93dd\u93de\u93df\u93e0\u93e1\u93e2\u93e3\u93e4\u93e5\u93e6\u93e7\u93e8\u93e9\u93ea\u93eb\u93ec\u93ed\u93ee\u93ef\u93f0\u93f1\u93f2\u93f9\u4948\u4949\u494a\u494b\u494c\u494d\u494e\u494f\u4950\u4951\u4952\u4953\u93f3\u93f5\u93f6\u93f7\u93f8\u93fa\u93fb\u93fc\u93fd\u93fe\u93ff\u9400\u9401\u9402\u9403\u9404\u9405\u9406\u9407\u9408\u9409\u940a\u940b\u940c\u940d\u940e\u940f\u9410\u9411\u9412\u9413\u9414\u9415\u9416\u9417\u9418\u9419\u941a\u941b\u941c\u941d\u941e\u941f\u9420\u9421\u9422\u9423\u9424\u9425\u9426\u9427\u9428\u4954\u4955\u4956\u4957\u4958\u4959\u495a\u495b\u495c\u93f4\u9429\u942a\u942b\u942c\u942d\u942e\u942f\u9430\u9431\u9432\u9433\u9434\u9435\u9436\u9437\u9438\u9439\u943a\u943b\u943c\u943d\u943e\u943f\u9440\u9441\u495d\u495e\u495f\u4960\u4961\u4962\u4963\u4964\u4965\u4966\u9442\u9443\u9444\u9445\u9446\u9447\u9448\u9449\u944a\u944b\u944c\u944d\u944e\u944f\u9450\u9451\u9452\u9453\u9454\u9467\u4967\u4968\u4969\u496a\u496b\u496c\u496d\u496e\u9455\u9456\u9457\u9458\u9459\u945a\u945b\u945c\u945d\u945e\u945f\u9460\u9461\u9462\u9463\u9464\u9465\u9466\u496f\u4970\u4971\u4972\u4973\u4974\u9468\u9469\u946a\u946b\u946c\u4975\u4976\u4977\u946d\u946e\u946f\u9470\u9471\u9472\u9473\u4978\u9474\u9475\u9476\u9477\u9478\u9479\u947a\u947b\u947c\u947d\u947e\u947f\u9480\u9481\u9482\u9483\u9484\u4979\u9485\u9486\u9487\u9488\u9489\u948a\u948b\u948c\u948d\u948e\u948f\u9490\u9491\u9492\u9493\u9494\u9495\u9496\u9497\u9498\u9499\u949a\u949b\u949c\u949d\u949e\u949f\u94a0\u94a1\u94a2\u94a3\u94a4\u94a5\u94a6\u94a7\u94a8\u94a9\u94aa\u94ab\u94ac\u94ad\u94ae\u94af\u497a\u497b\u497c\u94b0\u94b1\u94b2\u94b3\u94b4\u94b5\u94b6\u94b7\u94b8\u94b9\u94ba\u94bb\u94bc\u94bd\u94be\u94bf\u94c0\u94c1\u94c2\u94c3\u94c4\u94c5\u94c6\u94c7\u94c8\u94c9\u94ca\u94cb\u94cc\u94cd\u94ce\u9fed\u497d\u497e\u497f\u94cf\u94d0\u94d1\u94d2\u94d3\u94d4\u94d5\u94d6\u94d7\u94d8\u94d9\u94da\u94db\u94dc\u94dd\u94de\u94df\u94e0\u94e1\u94e2\u94e3\u94e4\u94e5\u94e6\u94e7\u94e8\u94e9\u94ea\u94eb\u94ec\u94ed\u94ee\u94ef\u94f0\u94f1\u94f2\u94f3\u94f4\u94f5\u94f6\u94f7\u4980\u94f8\u94f9\u94fa\u94fb\u94fc\u94fd\u94fe\u94ff\u9500\u9501\u9502\u9503\u9504\u9505\u9506\u9507\u9508\u9509\u950a\u950b\u950c\u950d\u950e\u950f\u9510\u9511\u9512\u9513\u9514\u9515\u9fcf\u4981\u9516\u9517\u9518\u9519\u951a\u951b\u951c\u951d\u951e\u951f\u9520\u9521\u9522\u9523\u9524\u9525\u9526\u9527\u9528\u9529\u952a\u952b\u952c\u952d\u952e\u952f\u9530\u9531\u9532\u9533\u9534\u9535\u9536\u9537\u9538\u9539\u953a\u953b\u953c\u953d\u953e\u953f\u9540\u9541\u9542\u9543\u9544\u9545\u9546\u9547\u9548\u9549\u954a\u954b\u954c\u954d\u954e\u954f\u9550\u9551\u9552\u9553\u9554\u9555\u9fd4\u4982\u9556\u9557\u9558\u9559\u955a\u955b\u955c\u955d\u955e\u955f\u9560\u9561\u9562\u9563\u9564\u9565\u9566\u9567\u9568\u9569\u956a\u956b\u4983\u4984\u4985\u956c\u956d\u956e\u956f\u9570\u9571\u9572\u9573\u9574\u9575\u9576\u4986\u9577\u9578\u9579\u4987\u957a\u957b\u4988\u4989\u498a\u957c\u498b\u957d\u957e\u957f\u9580\u9581\u9582\u9583\u9584\u9585\u9586\u9587\u9588\u9589\u958a\u498c\u498d\u958b\u958c\u958d\u958e\u958f\u9590\u9591\u9592\u9593\u9594\u9595\u9596\u9597\u498e\u498f\u4990\u4991\u9598\u9599\u959a\u959b\u959c\u959d\u959e\u959f\u95a0\u4992\u4993\u4994\u95a1\u95a2\u95a3\u95a4\u95a5\u95a6\u95a7\u95a8\u95a9\u95aa\u4995\u4996\u4997\u4998\u4999\u499a\u499b\u95ab\u95ac\u95ad\u95ae\u95af\u95b0\u95b1\u95b2\u95b3\u95b4\u499c\u499d\u499e\u499f\u95b5\u95b6\u95b8\u95b9\u95ba\u95bb\u95bc\u95bd\u95be\u95bf\u95c0\u95c1\u95c2\u49a0\u49a1\u49a2\u49a3\u49a4\u49a5\u49a6\u49a7\u49a8\u95b7\u95c3\u95c4\u95c5\u95c6\u95c7\u95c8\u95c9\u95ca\u95cb\u95cc\u95cd\u95ce\u95cf\u49a9\u49aa\u49ab\u49ac\u49ad\u49ae\u49af\u95d0\u95d1\u95d2\u95d3\u95d4\u95d5\u95d6\u95d7\u95d8\u95d9\u95da\u95db\u95dc\u95dd\u49b0\u95de\u95df\u95e0\u95e1\u49b1\u95e2\u95e3\u95e4\u95e5\u95e6\u49b2\u49b3\u49b4\u95e7\u49b5\u95e8\u95e9\u95ea\u95eb\u95ec\u95ed\u95ee\u95ef\u95f0\u95f1\u95f2\u95f3\u95f4\u95f5\u95f6\u95f7\u95f8\u95f9\u95fa\u95fb\u95fc\u95fd\u95fe\u95ff\u9600\u9601\u9602\u49b6\u9603\u9604\u9605\u9606\u49b7\u9607\u9608\u9609\u960a\u960b\u960c\u960d\u960e\u960f\u9610\u9611\u9612\u9613\u9614\u9615\u49b8\u9616\u9617\u9618\u9619\u961a\u961b\u961c\u961d\u961e\u961f\u49b9\u49ba\u9620\u9621\u9622\u9623\u9624\u49bb\u9625\u9626\u9627\u9628\u9629\u962a\u962b\u962c\u962d\u962e\u962f\u9630\u9631\u9632\u9633\u9634\u9635\u9636\u49bc\u49bd\u49be\u49bf\u49c0\u9637\u9638\u9639\u963a\u963b\u963c\u963d\u963e\u963f\u9640\u9641\u9642\u9643\u9644\u9645\u9646\u9647\u9648\u9649\u49c1\u49c2\u49c3\u964a\u964b\u964c\u964d\u964e\u964f\u9650\u9651\u9652\u9653\u9654\u9655\u49c4\u49c5\u49c6\u49c7\u49c8\u9656\u9657\u9658\u9659\u965b\u965c\u965d\u965e\u965f\u9660\u9661\u9662\u9663\u9664\u9665\u9666\u9667\u9668\u9669\u49c9\u49ca\u49cb\u49cc\u49cd\u49ce\u49cf\u965a\u966a\u966b\u966c\u966d\u966e\u966f\u9670\u9671\u9672\u9673\u9674\u9675\u9676\u9677\u9678\u9679\u967a\u49d0\u49d1\u49d2\u49d3\u49d4\u49d5\u49d6\u967b\u967c\u967d\u967e\u967f\u9680\u9681\u9682\u9683\u9684\u9685\u9686\u9687\u9688\u9689\u968a\u968b\u968c\u968d\u968e\u968f\u9690\u49d7\u49d8\u49d9\u9691\u9692\u9693\u9694\u9695\u9696\u9697\u9698\u9699\ufa29\u49da\u49db\u49dc\u49dd\u49de\u49df\u969a\u969b\u969c\u969d\u969e\u969f\u96a0\u96a1\u49e0\u49e1\u49e2\u49e3\u96a2\u96a3\u96a4\u96a5\u49e4\u49e5\u49e6\u49e9\u96a6\u96a7\u96a8\u96a9\u96aa\u96ab\u49e7\u49e8\u49ea\u96ac\u96ad\u96ae\u96af\u96b0\u96b1\u96b2\u49eb\u49ec\u49ed\u96b3\u96b4\u49ee\u96b5\u49ef\u49f0\u9fe7\u96b6\u96b7\u96b8\u96b9\u96ba\u96bb\u96bc\u96bd\u96be\u49f1\u96bf\u96c0\u49f2\u49f3\u96c1\u96c2\u96c3\u96c4\u96c5\u96c6\u96c7\u96c8\u49f4\u49f5\u49f6\u96c9\u96ca\u96cb\u96cc\u96cd\u96ce\u96cf\u49f7\u49f8\u49f9\u49fa\u96d0\u96d1\u96d2\u49fb\u96d3\u49fc\u49fd\u96d4\u96d5\u49fe\u49ff\u96d6\u4a01\u4a02\u96d7\u96d8\u96d9\u96da\u96db\u96dc\u96dd\u96de\u96df\u96e0\u4a03\u96e1\u96e2\u96e3\u4a04\u4a05\u4a06\u4a07\u96e4\u4a08\u96e5\u96e6\u4a09\u96e7\u4a0a\u96e8\u96e9\u96ea\u96eb\u4a0b\u96ec\u96ed\u96ee\u96ef\u96f0\u96f1\u96f2\u96f3\u4a0c\u4a0d\u96f4\u96f5\u96f6\u96f7\u96f8\u96f9\u96fa\u96fb\u96fc\u96fd\u96fe\u4a0e\u96ff\u9700\u9701\u4a0f\u4a10\u4a11\u4a12\u4a13\u4a14\u4a15\u4a16\u9702\u9703\u9704\u9705\u9706\u9707\u9708\u9709\u970a\u4a17\u4a18\u4a19\u970b\u970c\u970d\u970e\u970f\u9710\u9711\u9712\u9713\u9714\u9715\u9716\u9717\u4a1a\u4a1b\u4a1c\u4a1d\u9718\u9719\u971a\u971b\u971c\u971d\u971e\u971f\u9720\u4a1e\u4a1f\u4a20\u4a21\u4a22\u4a23\u4a24\u9721\u9722\u9723\u9724\u9725\u4a25\u4a26\u4a27\u4a28\u4a29\u4a2a\u9726\u9727\u9728\u9729\u972a\u972b\u972c\u972d\u4a2b\u4a2c\u4a2d\u4a2e\u4a2f\u972e\u972f\u9730\u9731\u9732\u9733\u9734\u4a30\u4a31\u9735\u9736\u9737\u9738\u9739\u973a\u973b\u973c\u973d\u973e\u973f\u9740\u4a32\u4a33\u4a34\u9741\u4a35\u4a36\u9742\u9743\u9744\u9745\u9746\u9747\u9748\u4a37\u9749\u4a38\u974a\u974b\u974c\u974d\u974e\u9fe8\u4a39\u974f\u4a3a\u9750\u4a3b\u9751\u9752\u9753\u9754\u9755\u9756\u9757\u9758\u9759\u975a\u975b\u975c\u975d\u4a3c\u975e\u4a3d\u4a3e\u975f\u4a3f\u9760\u4a40\u9761\u4a41\u9762\u9763\u4a42\u4a43\u4a44\u9764\u4a45\u4a46\u4a47\u9765\u9766\u4a48\u4a49\u4a4a\u4a4b\u9767\u4a4c\u4a4d\u4a4e\u9768\u4a4f\u9769\u976a\u976b\u976c\u976d\u976e\u976f\u9770\u9771\u4a50\u4a51\u4a52\u9772\u9773\u9774\u9775\u9776\u9777\u9778\u9779\u4a53\u4a54\u4a55\u4a56\u4a57\u4a58\u977a\u977b\u977c\u977d\u977e\u977f\u9780\u9781\u9782\u9783\u9784\u9785\u9786\u4a59\u4a5a\u4a5b\u4a5c\u4a5d\u4a5e\u9787\u9788\u9789\u978a\u978b\u978c\u978d\u978e\u978f\u9790\u9791\u9792\u4a5f\u9793\u9794\u9795\u9796\u9797\u9798\u9799\u4a60\u4a61\u4a62\u4a63\u4a64\u4a65\u4a66\u4a67\u979a\u979b\u979c\u979d\u979e\u979f\u97a0\u97a1\u4a68\u4a69\u4a6a\u4a6b\u4a6c\u4a6d\u4a6e\u97a2\u97a3\u97a4\u97a5\u97a6\u97a7\u97a8\u97a9\u97aa\u97ab\u97ac\u97ad\u97ae\u97af\u97b0\u4a6f\u4a70\u4a71\u4a72\u4a73\u4a74\u4a75\u97b1\u97b2\u97b3\u97b4\u97b5\u97b6\u97b7\u4a76\u4a77\u4a78\u4a79\u4a7a\u4a7b\u97b8\u97b9\u97ba\u97bb\u4a7c\u4a7d\u4a7e\u97bc\u97bd\u97be\u97bf\u4a7f\u4a80\u4a81\u4a82\u4a83\u4a84\u97c0\u97c1\u97c2\u97c3\u4a85\u4a86\u97c4\u97c5\u4a87\u4a88\u97c6\u97c7\u97c8\u4a89\u4a8a\u4a8b\u97c9\u4a8c\u4a8d\u4a8e\u97ca\u97cb\u97cc\u4a8f\u97cd\u97ce\u4a90\u4a91\u4a92\u4a93\u97cf\u97d0\u97d1\u97d2\u4a94\u97d3\u97d4\u97d5\u4a95\u97d6\u97d7\u97d8\u97d9\u97da\u4a96\u4a97\u4a98\u97dc\u97dd\u97de\u97df\u4a99\u4a9a\u97db\u97e0\u97e1\u97e2\u4a9b\u97e3\u4a9c\u4a9d\u97e4\u97e5\u97e6\u97e7\u97e8\u97e9\u97ea\u97eb\u97ec\u97ed\u97ee\u4a9e\u97ef\u4a9f\u97f0\u97f1\u4aa0\u97f2\u4aa1\u4aa2\u4aa3\u4aa4\u4aa5\u97f3\u7adf\u7ae0\u4aa6\u4aa7\u4aa8\u97f4\u97f5\u4aa9\u97f6\u97f7\u4aaa\u97f8\u4aab\u4aac\u97f9\u97fa\u4aad\u97fb\u97fc\u4aae\u4aaf\u97fd\u97fe\u97ff\u4ab0\u9800\u9801\u9802\u9803\u9804\u9805\u9806\u9807\u9808\u9809\u4ab1\u4ab2\u980a\u980b\u980c\u980d\u980e\u980f\u9810\u9811\u9812\u9813\u9819\u4ab3\u4ab4\u4ab5\u9814\u9815\u9816\u9817\u9818\u981a\u4ab6\u4ab7\u4ab8\u4ab9\u4aba\u4abb\u4abc\u4abd\u4abe\u981b\u981c\u981d\u981e\u981f\u9820\u9821\u9822\u9823\u9826\u9827\u9828\u9829\u982a\u982b\u982c\u4abf\u4ac0\u4ac1\u4ac2\u9824\u9825\u982d\u982e\u982f\u9830\u9831\u9832\u9833\u9834\u9835\u9836\u9837\u9838\u9839\u983a\u983b\u983c\u983d\u4ac3\u4ac4\u4ac5\u4ac6\u4ac7\u4ac8\u4ac9\u4aca\u983f\u9840\u9841\u9842\u9843\u9844\u9845\u9846\u9847\u9848\u9849\u984a\u4acb\u4acc\u4acd\u4ace\u4acf\u4ad0\u4ad1\u4ad2\u4ad3\u983e\u984b\u984c\u984d\u984e\u984f\u9850\u9851\u9852\u9853\u9854\u9855\u4ad4\u4ad5\u4ad6\u4ad7\u4ad8\u4ad9\u4ada\u4adb\u4adc\u4add\u9856\u9857\u9858\u9859\u985a\u985b\u985c\u985d\u985e\u4ade\u4adf\u4ae0\u4ae1\u4ae2\u4ae3\u4ae4\u4ae5\u4ae6\u4ae7\u985f\u9860\u9861\u9862\u9863\u4ae8\u4ae9\u4aea\u4aeb\u9864\u9865\u9866\u9867\u9868\u4aec\u4aed\u4aee\u4aef\u4af0\u4af1\u9869\u986a\u986b\u4af2\u4af3\u4af4\u986c\u986d\u986e\u986f\u9870\u4af5\u4af6\u9871\u9872\u4af7\u9873\u9874\u9875\u9876\u9877\u9878\u9879\u987a\u987b\u987c\u987d\u987e\u987f\u9880\u9881\u9882\u9883\u9884\u9885\u9886\u9887\u9888\u9889\u988a\u988b\u988c\u988d\u988e\u988f\u9890\u9891\u9892\u9893\u9894\u9895\u9896\u9897\u9898\u9899\u989a\u989b\u989c\u989d\u989e\u989f\u98a0\u98a1\u98a2\u98a3\u98a4\u98a5\u98a6\u98a7\u98a8\u4af8\u98a9\u98aa\u4af9\u98ab\u98ac\u4afa\u4afb\u4afc\u4afd\u98ad\u98ae\u98af\u98b0\u98b1\u4afe\u4aff\u4b00\u4b01\u4b02\u4b03\u98b2\u98b3\u4b04\u4b05\u98b4\u98b5\u4b06\u4b07\u4b08\u4b09\u4b0a\u98b6\u98b7\u4b0b\u4b0c\u4b0d\u4b0e\u4b0f\u4b10\u98b8\u98b9\u98ba\u4b11\u4b12\u4b13\u4b14\u4b15\u4b16\u4b17\u98bb\u98bc\u98bd\u98be\u98bf\u98c0\u4b18\u4b19\u4b1a\u98c1\u98c2\u98c3\u98c4\u4b1b\u4b1c\u98c5\u98c6\u98c7\u98c8\u98c9\u98ca\u4b1d\u98cb\u4b1e\u4b1f\u98cc\u98cd\u98ce\u98cf\u98d0\u98d1\u98d2\u98d3\u98d4\u98d6\u98d5\u98d7\u98d8\u98d9\u98da\u98db\u4b20\u4b21\u98dc\u98dd\u98de\u98df\u98e0\u98e1\u98e2\u98e3\u98e4\u4b22\u4dbf\u98e5\u98e6\u98e7\u98e8\u4b23\u4b24\u4b25\u98e9\u98ea\u98eb\u98ec\u98ed\u98ee\u98ef\u98f0\u98f1\u98f2\u4b26\u4b27\u4b28\u4b29\u4b2a\u98f3\u98f4\u98f5\u98f6\u98f7\u98f8\u98f9\u98fb\u98fc\u98fd\u98fe\u98ff\u4b2b\u4b2c\u4b2d\u4b2e\u4b2f\u4b30\u4b31\u4b32\u4b33\u4b34\u98fa\u9900\u9901\u9902\u9903\u9904\u9905\u9906\u9907\u9908\u9909\u990a\u990b\u990c\u990d\u990e\u990f\u4b35\u4b36\u4b37\u4b38\u4b39\u4b3a\u4b3b\u9910\u9911\u9912\u9913\u9914\u9915\u9916\u9917\u9918\u9919\u991d\u4b3c\u4b3d\u4b3e\u4b3f\u4b40\u4b41\u4b42\u991a\u991b\u991c\u991e\u991f\u9920\u9921\u9922\u9923\u9924\u9925\u9926\u9927\u9928\u9929\u4b43\u4b44\u4b45\u4b46\u4b47\u992a\u992b\u992c\u992d\u992e\u992f\u9930\u9931\u9932\u9933\u9934\u9935\u9937\u4b48\u4b49\u4b4a\u4b4b\u4b4c\u4b4d\u4b4e\u4b4f\u9936\u9938\u9939\u993a\u993b\u993c\u993d\u993e\u993f\u9940\u9941\u9942\u9943\u4b50\u4b51\u4b52\u4b53\u4b54\u9944\u9945\u9946\u9947\u9948\u9949\u4b55\u4b56\u4b57\u994a\u994b\u994c\u994d\u994e\u994f\u9950\u9951\u9952\u9953\u4b58\u4b59\u4b5a\u4b5b\u4b5c\u9954\u9955\u9956\u9957\u9958\u9959\u4b5d\u4b5e\u4b5f\u4b60\u995a\u995b\u995c\u4275\u4b61\u4b62\u4b63\u4b64\u4b65\u995d\u995e\u995f\u4b66\u4b67\u4b68\u9960\u9961\u4b69\u9962\u9963\u9964\u9965\u9966\u9967\u9968\u9969\u996a\u996b\u996c\u996d\u996e\u996f\u9970\u9971\u9972\u9973\u9974\u9975\u9976\u9977\u9978\u9979\u997a\u997b\u997c\u997d\u997e\u997f\u9980\u9981\u9982\u9983\u9984\u9985\u9986\u9987\u9988\u998a\u998b\u9989\u998c\u998d\u998e\u998f\u9990\u9991\u9992\u9993\u9994\u4b6a\u9995\u9996\u9997\u4b6b\u4b6c\u9998\u4b6d\u4b6e\u9999\u999a\u999b\u999c\u999d\u4b6f\u999e\u999f\u99a0\u99a1\u99a2\u99a3\u4b70\u4b71\u4b72\u99a4\u99a5\u99a6\u99a7\u99a8\u99a9\u99aa\u99ab\u4b73\u99ac\u99ad\u99ae\u4b74\u99af\u99b0\u99b1\u99b2\u99b3\u99b4\u99b5\u4b75\u4b76\u99b6\u99b7\u99b8\u99b9\u99ba\u99bb\u99bc\u99bd\u99be\u99bf\u99c0\u99c1\u99c2\u99c3\u99c4\u99c5\u99c6\u99c7\u4b77\u4b78\u4b79\u4b7a\u4b7b\u4b7c\u4b7d\u4b7e\u99c8\u99c9\u99ca\u99cb\u99cc\u99cd\u99ce\u99cf\u99d0\u99d1\u99d2\u99d3\u99d4\u99d5\u99d6\u99d7\u99d8\u99d9\u99da\u99db\u99dc\u99dd\u99de\u99df\u99e0\u4b7f\u4b80\u4b81\u4b82\u4b83\u4b84\u4b85\u99e1\u99e2\u99e3\u99e4\u99e5\u99e6\u99e7\u99e8\u99e9\u99ea\u99eb\u99ec\u99ed\u99ee\u99ef\u99f0\u99f1\u99f2\u4b86\u4b87\u4b88\u4b89\u4b8a\u4b8b\u4b8c\u4b8d\u99f4\u99f5\u99f6\u99f7\u99f8\u99f9\u99fa\u99fb\u99fc\u99fd\u99fe\u99ff\u9a00\u9a01\u9a02\u9a03\u4b8e\u4b8f\u4b90\u4b91\u4b92\u99f3\u9a04\u9a05\u9a06\u9a07\u9a08\u9a09\u9a0a\u9a0b\u9a0c\u9a0d\u9a0e\u9a0f\u9a10\u9a11\u9a12\u9a13\u4b93\u4b94\u4b95\u4b96\u4b97\u4b98\u4b99\u4b9a\u4b9b\u9a14\u9a15\u9a16\u9a17\u9a18\u9a19\u9a1a\u9a1b\u9a1c\u9a1d\u9a1e\u9a1f\u9a20\u9a21\u9a22\u9a23\u9a24\u9a25\u9a26\u9a27\u9a28\u4b9c\u4b9d\u4b9e\u4b9f\u4ba0\u4ba1\u4ba2\u9a29\u9a2a\u9a2b\u9a2c\u9a2d\u9a2e\u9a2f\u9a30\u9a31\u9a32\u9a33\u9a34\u9a35\u9a36\u9a37\u9a38\u4ba3\u4ba4\u4ba5\u4ba6\u4ba7\u4ba8\u4ba9\u9a39\u9a3a\u9a3b\u9a3c\u9a3d\u9a3e\u9a3f\u9a40\u9a41\u9a42\u9a43\u9a44\u9a45\u9a46\u9a47\u9fad\u4baa\u4bab\u4bac\u4bad\u4bae\u4baf\u4bb0\u4bb1\u9a48\u9a49\u9a4a\u9a4b\u9a4c\u9a4d\u9a4e\u9a4f\u9a50\u9a51\u9a52\u9a53\u9a54\u9a55\u4bb2\u4bb3\u4bb4\u4bb5\u4bb6\u9a56\u9a57\u9a58\u9a59\u9a5a\u9a5b\u9a5c\u4bb7\u4bb8\u4bb9\u9a5d\u9a5e\u9a5f\u4bba\u4bbb\u4bbc\u4bbd\u9a60\u9a61\u9a62\u9a63\u4bbe\u9a64\u9a65\u9a66\u9a67\u9fae\u4bbf\u9a68\u9a69\u4bc0\u9a6a\u4bc1\u9a6b\u4bc2\u9a6c\u9a6d\u9a6e\u9a6f\u9a70\u9a71\u9a72\u9a73\u9a74\u9a75\u9a76\u9a77\u9a78\u9a79\u9a7a\u9a7b\u9a7c\u9a7d\u9a7e\u9a7f\u9a80\u9a81\u9a82\u9a83\u9a84\u9a85\u9a86\u9a87\u9a88\u9a89\u4bc3\u9a8a\u9a8b\u9a8c\u9a8d\u9a8e\u9a8f\u4bc4\u9a90\u9a91\u9a92\u9a93\u9a94\u9a95\u9a96\u9a97\u9a98\u9a99\u9a9a\u9a9b\u9a9c\u9a9d\u9a9e\u9a9f\u4bc5\u9aa0\u9aa1\u9aa2\u9aa3\u9aa4\u9aa5\u9aa6\u9aa7\u9aa8\u4bc6\u9aa9\u4bc7\u9aaa\u9aab\u9aac\u9aad\u9aae\u9aaf\u9ab0\u9ab1\u4bc8\u4bc9\u9ab2\u9ab3\u9ab4\u9ab5\u9ab6\u9ab7\u4bca\u4bcb\u4bcc\u4bcd\u4bce\u9ab8\u9ab9\u9aba\u9abb\u9abc\u4bcf\u4bd0\u4bd1\u4bd2\u4bd3\u4bd4\u9abd\u9abe\u4bd5\u4bd6\u4bd7\u4bd8\u4bd9\u4bda\u9abf\u9ac0\u9ac1\u4bdb\u4bdc\u9ac2\u9ac3\u9ac4\u9ac5\u4bdd\u4bde\u4bdf\u4be0\u9ac6\u9ac7\u9ac8\u9ac9\u9aca\u9acb\u9acc\u4be1\u9acd\u9ace\u9acf\u4be2\u9ad0\u4be3\u9ad1\u9ad2\u9ad3\u9ad4\u4be4\u9ad5\u4be5\u9ad6\u4be6\u9ad7\u9ad8\u9ad9\u4be7\u4be8\u9ada\u4be9\u9adb\u9adc\u4bea\u9add\u4beb\u9ade\u4bec\u9adf\u9ae0\u4bed\u4bee\u9ae1\u9ae2\u9ae3\u9ae4\u9ae5\u9ae6\u9ae7\u9ae8\u9ae9\u9aea\u4bef\u4bf0\u4bf1\u4bf2\u4bf3\u4bf4\u9aeb\u9aec\u9aed\u9aee\u9aef\u9af0\u9af1\u9af2\u9af3\u9af4\u4bf5\u4bf6\u9af5\u9af6\u9af7\u9af8\u9af9\u9afa\u9afb\u9b07\u4bf7\u4bf8\u9afc\u9afd\u9afe\u9aff\u9b00\u9b01\u9b02\u4bf9\u4bfa\u4bfb\u4bfc\u9b03\u9b04\u9b05\u9b06\u9b08\u4bfd\u4bfe\u4bff\u4c00\u4c01\u4c02\u4c03\u9b09\u9b0a\u9b0b\u9b0c\u9b0d\u9b0e\u9b0f\u4c04\u4c05\u4c06\u4c07\u9b10\u9b11\u9b12\u9b13\u4c08\u4c09\u4c0a\u4c0b\u9b14\u9b15\u9b16\u9b17\u9b18\u9b1d\u4c0c\u4c0d\u9b19\u9b1a\u9b1b\u9b1c\u4c0e\u9b1e\u9b1f\u9b20\u9b21\u9b22\u4c0f\u4c10\u4c11\u4c12\u9b23\u4c13\u4c14\u4c15\u9b24\u4c16\u9b25\u9b26\u9b27\u9b28\u9b29\u9b2a\u4c17\u4c18\u9b2b\u9b2c\u9b2d\u9b2e\u9b2f\u9b30\u9b31\u9b32\u4c19\u4c1a\u4c1b\u9b33\u4c1c\u9b34\u9b35\u9b36\u9b37\u9b38\u9b39\u9b3a\u9b3b\u4c1d\u4c1e\u9b3c\u9b3d\u9b3e\u9b3f\u9b40\u9b41\u9b42\u4c1f\u9b43\u9b44\u9b45\u9b46\u4c20\u4c21\u9b47\u4c22\u4c23\u9b48\u9b49\u9b4a\u9b4b\u9b4c\u9b4d\u9b4e\u9b4f\u4c24\u4c25\u4c26\u4c27\u4c28\u4c29\u9b50\u4c2a\u9b51\u9b52\u9b53\u9b54\u9b55\u9b56\u4c2b\u4c2c\u4c2d\u4c2e\u9b57\u9b58\u9b59\u4c2f\u4c30\u4c31\u9b5a\u4c32\u9b5b\u9b5c\u9b5d\u9b5e\u4c33\u9b5f\u9b60\u9b61\u9b62\u4c34\u4c35\u4c36\u9b63\u9b64\u9b65\u9b66\u9b67\u9b68\u9b69\u9b6a\u9b6b\u9b6c\u9b6d\u9b6e\u9b6f\u9b70\u9b71\u9b72\u9b73\u9b74\u9b75\u9b76\u9b77\u9b78\u9b79\u4c37\u4c38\u4c39\u4c3a\u4c3b\u4c3c\u4c3d\u4c3e\u9b7a\u9b7b\u9b7c\u9b7d\u9b7e\u9b7f\u9b80\u9b81\u9b82\u9b83\u9b84\u9b85\u9b86\u9b87\u9b88\u9b89\u9b8a\u9b8b\u9b8c\u9b8d\u9b8e\u9b8f\u9b90\u9b91\u9b92\u9b93\u9b94\u9b95\u9b96\u9b97\u9b98\u9ba3\u4c3f\u4c40\u4c41\u4c42\u4c43\u4c44\u4c45\u4c46\u4c47\u4c48\u4c49\u9b99\u9b9a\u9b9b\u9b9c\u9b9d\u9b9e\u9b9f\u9ba0\u9ba1\u9ba2\u9ba4\u9ba5\u9ba6\u9ba7\u9ba8\u9ba9\u9baa\u9bab\u9bac\u9bad\u9bae\u9baf\u9bb0\u9bb1\u9bb2\u9bb3\u9bb4\u9bba\u4c4a\u4c4b\u4c4c\u4c4d\u4c4e\u9bb5\u9bb6\u9bb7\u9bb8\u9bb9\u9bbb\u9bbc\u9bbd\u9bbe\u9bbf\u9bc0\u9bc1\u9bc2\u9bc3\u9bc4\u9bc5\u9bc6\u9bc7\u9bc8\u9bc9\u9bca\u9bcb\u9bcc\u9bcd\u9bce\u9bcf\u9bd0\u9bd1\u9bd2\u9bd3\u9bfd\u4c4f\u4c50\u4c51\u4c52\u4c53\u4c54\u4c55\u4c56\u4c57\u4c58\u9bd4\u9bd5\u9bd6\u9bd7\u9bd8\u9bd9\u9bda\u9bdb\u9bdc\u9bdd\u9bde\u9bdf\u9be0\u9be1\u9be2\u9be3\u9be4\u9be5\u9be6\u9be7\u9be8\u9be9\u9bea\u9beb\u9bec\u9bed\u9bee\u9bef\u9bf0\u9bf1\u9bf2\u9bf3\u9bf4\u9bf5\u9bfb\u4c59\u4c5a\u4c5b\u4c5c\u4c5d\u4c5e\u4c5f\u4c60\u4c61\u4c62\u4c63\u4c64\u4c65\u4c66\u4c67\u4c68\u4c69\u4c6a\u9bf6\u9bf7\u9bf8\u9bf9\u9bfa\u9bfc\u9bfe\u9bff\u9c00\u9c01\u9c02\u9c03\u9c04\u9c05\u9c06\u9c07\u9c08\u9c09\u9c0a\u9c0b\u9c0c\u9c0d\u9c0e\u9c0f\u9c10\u9c11\u9c12\u9c13\u9c14\u9c15\u9c16\u9c17\u9c18\u9c19\u9c1a\u9c1b\u9c20\u4c6b\u4c6c\u4c6d\u4c6e\u4c6f\u4c70\u4c71\u4c72\u4c73\u4c74\u9c1c\u9c1d\u9c1e\u9c1f\u9c21\u9c22\u9c23\u9c24\u9c25\u9c26\u9c27\u9c28\u9c29\u9c2a\u9c2b\u9c2c\u9c2d\u9c2e\u9c2f\u9c30\u9fd0\u4c75\u4c76\u4c77\u4c78\u4c79\u4c7a\u4c7b\u4c7c\u4c7d\u9c31\u9c32\u9c33\u9c34\u9c35\u9c36\u9c37\u9c38\u9c39\u9c3a\u9c3b\u9c3c\u9c3d\u9c3e\u9c3f\u9c40\u9c41\u9c42\u9c43\u9c44\u9c45\u9c46\u9c47\u9c48\u9de0\u9ff3\u4c7e\u4c7f\u4c80\u4c81\u4c82\u4c83\u4c84\u4c85\u4c86\u4c87\u4c88\u9c49\u9c4a\u9c4b\u9c4c\u9c4d\u9c4e\u9c4f\u9c50\u9c51\u9c52\u9c53\u9c54\u9c55\u9c56\u9c57\u9c58\u9c59\u9c5a\u9c5b\u4c89\u4c8a\u4c8b\u4c8c\u4c8d\u4c8e\u4c8f\u9c5c\u9c5d\u9c5e\u9c5f\u9c60\u9c61\u9c62\u9c63\u9c64\u9c65\u9c66\u9c67\u9c69\u9c6a\u9c6b\u4c90\u4c91\u4c92\u4c93\u4c94\u4c95\u9c68\u9c6c\u9c6d\u9c6e\u9c6f\u9c70\u4c96\u4c97\u4c98\u9c71\u9c72\u9c73\u9c74\u9c75\u9c76\u4c99\u9c77\u9c78\u4c9a\u4c9b\u9c79\u9fe9\u9c7a\u9c7b\u4c9c\u9c7c\u9c7d\u9c7e\u9c7f\u9c80\u9c81\u9c82\u9c83\u9fd5\u4c9d\u9c84\u9c85\u9c86\u9c87\u9c88\u9c89\u9c8a\u9c8b\u9c8c\u9c8d\u9c8e\u9c8f\u9c90\u9ff4\u4c9e\u4c9f\u9c91\u9c92\u9c93\u9c94\u9c95\u9c96\u9c97\u9c98\u9c99\u9c9a\u9c9b\u9c9c\u9c9d\u9c9e\u9c9f\u9ca0\u9ca1\u9ca2\u9ca3\u9ca4\u9ca5\u9ca6\u9ca7\u9ca8\u9ca9\u9caa\u9cab\u9cac\u9ff5\u9ff6\u9cad\u9cae\u9caf\u9cb0\u9cb1\u9cb2\u9cb3\u9cb4\u9cb5\u9cb6\u9cb7\u9cb8\u9cb9\u9cba\u9cbb\u9cbc\u9cbd\u9cbf\u9cc0\u9cc1\u9cc2\u9cc3\u9cc4\u9cc5\u9cc6\u9cc7\u9cc8\u9cc9\u9cca\u9ccb\u9ff7\u4ca0\u4ca1\u9cbe\u9ccc\u9ccd\u9cce\u9ccf\u9cd0\u9cd1\u9cd2\u4ca2\u4ca3\u4ca4\u9cd3\u9cd4\u9cd5\u9cd6\u9cd7\u9cd8\u9cd9\u9cda\u9cdb\u9ff8\u9ff9\u9cdc\u9cdd\u9cde\u9cdf\u9ce0\u9ce1\u9ce2\u9ce3\u9ce4\u9ce5\u9ce6\u9ce7\u9ce8\u9ce9\u9cea\u9ceb\u9cec\u9ced\u9cee\u9cef\u9cf0\u4ca5\u9cf1\u9cf2\u9cf3\u9cf4\u9cf5\u9cf6\u4ca6\u4ca7\u4ca8\u4ca9\u4caa\u4cab\u9cf7\u9cf8\u9cf9\u9cfa\u9cfb\u9cfc\u9cfd\u9cfe\u9cff\u9d00\u9d01\u9d02\u9d03\u9d04\u9d05\u9d06\u9d07\u9d08\u9d09\u9d0b\u9d0c\u9d0d\u9d0e\u4cac\u4cad\u4cae\u4caf\u4cb0\u4cb1\u4cb2\u4cb3\u4cb4\u4cb5\u4cb6\u4cb7\u4cb8\u9d0a\u9d0f\u9d10\u9d11\u9d12\u9d13\u9d14\u9d15\u9d16\u9d17\u9d18\u9d19\u9d1a\u9d1b\u9d1c\u9d1d\u9d1e\u9d1f\u9d20\u9d21\u9d22\u9d23\u9d24\u9d25\u9d26\u9d27\u9d28\u9d29\u9d2a\u9d2b\u9d2c\u4cb9\u4cba\u4cbb\u4cbc\u4cbd\u4cbe\u4cbf\u4cc0\u4cc1\u4cc2\u4cc3\u4cc4\u4cc5\u4cc6\u4cc7\u4cc8\u4cc9\u4cca\u9d2d\u9d2e\u9d2f\u9d30\u9d31\u9d32\u9d33\u9d34\u9d35\u9d36\u9d37\u9d38\u9d39\u9d3a\u9d3b\u9d3c\u9d3d\u9d3e\u9d3f\u9d40\u9d41\u9d42\u9d43\u9d44\u9d45\u9d46\u9d47\u9d48\u9d49\u4ccb\u4ccc\u4ccd\u4cce\u4ccf\u4cd0\u4cd1\u4cd2\u4cd3\u4cd4\u9d4a\u9d4b\u9d4c\u9d4d\u9d4e\u9d4f\u9d50\u9d51\u9d52\u9d53\u9d54\u9d55\u9d56\u9d57\u9d58\u9d59\u9d5a\u9d5b\u9d5c\u9d5d\u9d5e\u9d5f\u9d60\u9d61\u9d62\u9d63\u9d65\u4cd5\u4cd6\u4cd7\u4cd8\u4cd9\u4cda\u4cdb\u4cdc\u9d66\u9d67\u9d68\u9d69\u9d6a\u9d6b\u9d6c\u9d6d\u9d6e\u9d6f\u9d70\u9d71\u9d72\u9d73\u9d74\u9d75\u9d76\u9d77\u9d78\u9d79\u9d7a\u9d7b\u9d7c\u9d7d\u9d7e\u9d7f\u9d80\u9d81\u9d82\u9d83\u9d84\u9d85\u9d86\u9d87\u9d88\u9d89\u9d8a\u9d8b\u9d8c\u9d8d\u9d8e\u9d8f\u9d91\u4cdd\u4cde\u4cdf\u4ce0\u4ce1\u4ce2\u4ce3\u4ce4\u4ce5\u9d90\u9d92\u9d93\u9d94\u9d95\u9d96\u9d97\u9d98\u9d99\u9d9a\u9d9b\u9d9c\u9d9d\u9d9e\u9d9f\u9da0\u9da1\u9da2\u9da3\u9da4\u9da5\u9da6\u9da7\u9da8\u9da9\u9daa\u9dab\u4ce6\u4ce7\u4ce8\u4ce9\u4cea\u4ceb\u4cec\u4ced\u4cee\u4cef\u4cf0\u9dac\u9dad\u9dae\u9daf\u9db0\u9db1\u9db2\u9db3\u9db4\u9db5\u9db6\u9db7\u9db8\u9db9\u9dba\u9dbb\u9dbc\u9dbd\u9dbe\u9dbf\u9dc0\u9dc1\u9dc2\u9dc3\u9dc4\u9dc5\u9dc6\u9dc7\u9dc8\u9dc9\u9dca\u9dcc\u9dcd\u9dce\u9dcf\u4cf1\u4cf2\u4cf3\u4cf4\u4cf5\u4cf6\u9dcb\u9dd0\u9dd1\u9dd2\u9dd3\u9dd4\u9dd5\u9dd6\u9dd7\u9dd8\u9dd9\u9dda\u9ddb\u9ddc\u9ddd\u9dde\u9ddf\u4cf7\u4cf8\u4cf9\u4cfa\u4cfb\u4cfc\u4cfd\u9de1\u9de2\u9de3\u9de4\u9de5\u9de6\u9de7\u9de8\u9de9\u9dea\u9deb\u9dec\u9ded\u9dee\u9def\u9df0\u9df1\u9df2\u9df3\u9df4\u9df5\u9df6\u9df7\u9df8\u9dfa\u9dfb\u9dfc\u4cfe\u4cff\u4d00\u4d01\u4d02\u4d03\u4d04\u4d05\u4d06\u9df9\u9dfd\u9dfe\u9dff\u9e00\u9e01\u9e02\u9e03\u9e04\u9e05\u9e06\u9e07\u9e08\u9e09\u9e0a\u4d07\u4d08\u4d09\u4d0a\u4d0b\u9e0b\u9e0c\u9e0d\u9e0e\u9e0f\u9e10\u9e11\u9e12\u4d0c\u4d0d\u9e13\u9e14\u4d0e\u9e15\u9e16\u9e17\u4d0f\u9e18\u9e19\u9e1a\u9e1b\u9e1c\u9e1d\u9e1e\u4d10\u4d11\u4d12\u9e1f\u9e20\u9e21\u9e22\u9e23\u9e24\u9e25\u9e26\u9e27\u9e28\u9e29\u4d13\u9e2a\u9e2b\u9e2c\u9e2d\u9e2e\u9e2f\u9e30\u9e31\u9e32\u9e33\u9e34\u9e35\u9e36\u9e37\u9e38\u9e39\u9e3a\u9e3b\u9e3c\u9e3d\u9e3e\u9e3f\u4d14\u4d15\u9e40\u9e41\u9e42\u9e43\u9e44\u9e45\u9e46\u9e47\u9e48\u9ffa\u9e49\u9e4a\u9e4b\u9e4c\u9e4d\u9e4e\u9e4f\u9e50\u9e51\u9e52\u9e53\u9e54\u4d16\u9e55\u9e56\u9e57\u9e59\u9e5a\u9e5b\u9e5c\u4d17\u9e58\u9e5d\u9e5e\u9e5f\u9e60\u9e61\u9e62\u9e63\u9e64\u4d18\u9e65\u9e66\u9e67\u9e68\u9e69\u9e6a\u9e6b\u9e6c\u9e6d\u9e6e\u9e6f\u9e70\u4d19\u9e71\u9e72\u9e73\u9e74\u9e75\u9e76\u4d1a\u9e77\u4d1b\u9e78\u9e79\u9e7a\u9e7b\u4d1c\u4d1d\u9e7c\u9e7d\u4d1e\u9e7e\u9e7f\u9e80\u9e81\u9e82\u4d1f\u9e83\u9e84\u4d20\u4d21\u4d22\u9e85\u9e86\u9e87\u9e88\u4d23\u4d24\u4d25\u9e89\u9e8a\u9e8b\u9e8c\u9e8d\u9e8e\u9e8f\u9e90\u4d26\u9e91\u9e92\u9e93\u9e94\u9e95\u9e96\u9e97\u4d27\u9e98\u9e99\u9e9a\u9e9b\u9e9c\u9e9d\u4d28\u9e9e\u4d29\u9e9f\u9ea0\u4d2a\u4d2b\u9ea1\u9ea2\u9ea3\u9ea4\u9ea5\u9ea7\u4d2c\u4d2d\u4d2e\u9ea8\u9ea9\u9eaa\u9eab\u4d2f\u4d30\u9eac\u9ead\u9eae\u4d31\u4d32\u4d33\u4d34\u9eaf\u9eb0\u4d35\u9eb1\u9eb2\u4d36\u4d37\u4d38\u9eb3\u9eb4\u4d39\u4d3a\u4d3b\u4d3c\u4d3d\u9eb5\u4d3e\u4d3f\u4d40\u9eb6\u4d41\u4d42\u4d45\u4d43\u4d44\u4d46\u9eb7\u9ea6\u9eb8\u9eb9\u9eba\u9ebb\u9ebc\u9ebd\u9ebe\u4d47\u9ebf\u9ec0\u9ec1\u4d48\u4d49\u9ec2\u9ec3\u9ec4\u9ec5\u9ec6\u4d4a\u9ec7\u9ec8\u9ec9\u9eca\u9ecb\u4d4b\u4d4c\u4d4d\u4d4e\u4d4f\u4d50\u9ecc\u9ecd\u9ece\u4d51\u4d52\u4d53\u9ecf\u4d54\u4d55\u4d56\u4d57\u4d58\u4d59\u9ed0\u4d5a\u4d5b\u4d5c\u9ed1\u9ed2\u4d5d\u4d5e\u58a8\u9ed3\u4d5f\u4d60\u9ed4\u9ed5\u9ed6\u9ed7\u9ed8\u4d61\u9eda\u9edb\u9edc\u9edd\u9ede\u4d62\u4d63\u9edf\u9ee0\u9ee1\u4d64\u4d65\u4d66\u4d67\u9ee2\u9ee3\u4d68\u4d69\u9ee4\u9ee5\u9ee6\u9ee7\u9ee8\u9ee9\u9eea\u4d6a\u4d6b\u4d6c\u9eeb\u9eec\u9eed\u9eee\u9eef\u4d6d\u4d6e\u4d6f\u9ef0\u9ef1\u9ef2\u9ef3\u9ef4\u4d70\u4d71\u9ef5\u4d72\u4d73\u4d74\u9ef6\u4d75\u9ef7\u9ef8\u9ef9\u9efa\u9efb\u9efc\u9efd\u9eff\u9f00\u9f01\u9f02\u4d76\u9f03\u9f04\u4d77\u9f05\u4d78\u9f06\u9f07\u4d79\u9f08\u9f09\u9f0a\u9efe\u9f0b\u9f0c\u9f0d\u9f0e\u9f0f\u9f10\u9f11\u9f12\u4d7a\u4d7b\u4d7c\u9f13\u9f14\u9f15\u9f16\u4d7d\u4d7e\u4d7f\u9f17\u4d80\u9f18\u9f19\u9f1a\u9f1b\u4d81\u9f1c\u9f1d\u9f1e\u9f1f\u9f20\u9f21\u4d82\u9f22\u9f23\u9f24\u4d83\u9f25\u9f26\u9f27\u9f28\u9f29\u9f2a\u9f2b\u9f2c\u9ffb\u9ffc\u4d84\u9f2d\u4d85\u9f2e\u9f2f\u9f30\u9f31\u4d86\u9f32\u9f33\u9f34\u9f35\u4d87\u9f36\u9f37\u9f38\u9f39\u4d88\u4d89\u9f3a\u9f3b\u9f3c\u9f3d\u9f3e\u9f3f\u4d8a\u4d8b\u9f40\u9f41\u4d8c\u4d8d\u4d8e\u4d8f\u9f42\u9f43\u9f44\u9f45\u9f46\u9f47\u9f48\u4d90\u4d91\u9f49\u9f4a\u9f4b\u4d92\u4d93\u9f4c\u9f4d\u9f4e\u9f4f\u9f50\u9f51\u9f52\u9f53\u9f54\u9f55\u4d94\u9f56\u9f57\u9f58\u4d95\u4d96\u9f59\u9f5a\u9f5b\u9f5c\u9f5d\u9f5e\u9f5f\u9f60\u9f61\u9f62\u9f63\u4d97\u4d98\u4d99\u9f64\u9f65\u9f66\u9f67\u9f68\u9f69\u4d9a\u4d9b\u9f6a\u9f6b\u9f6c\u4d9c\u4d9d\u9f6d\u9f6e\u9f6f\u9f70\u9f71\u4d9e\u4d9f\u9f72\u9f73\u9f74\u9f75\u9f76\u9f77\u4da0\u4da1\u4da2\u9f78\u9f79\u9f7a\u9f7b\u4da3\u4da4\u4da5\u4da6\u4da7\u9f7c\u9f7d\u4da8\u4da9\u4daa\u9f7e\u4dab\u9f7f\u9f80\u9f81\u9f82\u9f83\u9f84\u9f85\u9f86\u9f87\u9f88\u9f89\u9f8a\u9f8b\u9f8c\u9f8d\u9f8e\u9f8f\u9f91\u9f92\u9f93\u9f94\u9f95\u4dac\u9f96\u9f97\u9f98\u9f99\u4dad\u4dae\u9f9a\u9f9b\u9f9c\u4daf\u4db0\u9f9d\u4db1\u4db2\u9f9e\u9f9f\u9fa0\u9fa1\u4db3\u9fa2\u9fa3\u4db4\u9fa4\u9fa5\u4db5\u2f00\u3280\u3192\u319c\u3286\u3282\u3194\u32a4\u3196\u32a6\u3198\uf967\u319b\ufa70\u2f01\u2ea6\u32a5\u3197\uf905\u2f02\u2e80\uf95e\u2f03\u2f04\u319a\u2e84\u2e83\u2e82\u3288\uf91b\u2f05\uf9ba\u2f06\u3281\u3193\u3284\u2f07\uf977\u2f08\u319f\u2e85\uf9fd\uf9a8\u32ff\u32ad\u32a1\ufa73\uf92d\uf9b5\ufa30\uf965\uf9d4\uf9bb\ufa31\u329d\u2f09\ufa0c\ufa74\ufa32\u2f0a\ufa72\uf978\u2f0b\u3287\uf9d1\u3285\ufa75\u2f0c\u2e86\u2f0d\u32a2\u2f0e\ufa71\uf92e\uf979\uf955\uf954\ufa15\u2f0f\u2e87\u2f10\u2f11\u2e88\u2e89\ufa00\uf99c\uf9dd\uf9ff\uf9c7\uf98a\u2f12\uf99d\u3298\ufa76\ufa33\uf952\uf92f\ufa34\uf97f\u2f13\ufa77\u2f14\uf963\u2f15\u2f16\u32a9\uf9eb\u2f17\u3038\u3289\u3039\u303a\ufa35\u32af\u2f18\u2e8a\u2f19\u2e8b\u329e\uf91c\u2f1a\u2e81\u2f1b\uf96b\u2f1c\u2f1d\uf906\u32a8\u3294\uf9de\uf9ed\uf980\uf99e\u3244\ufa79\uf90b\ufa7a\ufa36\ufa78\ufa0d\ufa7b\ufa37\ufa38\u2f1e\u3283\u3195\uf9a9\u2f1f\u328f\u319e\ufa39\ufa10\ufa7c\uf96c\ufa3a\ufa7d\uf94a\uf942\u2f20\u2f21\u2f22\u2f23\u32b0\u2f24\u337d\u319d\ufa7e\uf90c\uf909\ufa7f\uf981\u2f25\u329b\ufa80\ufa81\u2f26\u32ab\u2f27\ufa04\u32aa\uf95f\uf9aa\uf9bc\u2f28\u2f29\u2e8c\u2e8d\u2e90\u2f2a\u2e8e\u2e8f\u2e91\u2f2b\uf9bd\uf94b\ufa3b\uf9df\ufa3c\u2f2c\u2f2d\uf9d5\uf921\uf9ab\u2f2e\u2f2f\u32a7\u2f30\u2e92\u2f31\u2f32\u337b\uf98e\u2e93\u2f33\u3245\u2f34\ufa01\uf9a2\uf928\ufa82\ufa0b\ufa83\uf982\u2f35\u2f36\uf943\u2f37\u2f38\u2f39\u2e95\u2e94\u2f3a\ufa84\u2f3b\uf9d8\uf966\ufa85\u2f3c\u2e97\u2e96\uf9a3\uf960\uf9ac\ufa6b\ufa3d\ufa86\uf9b9\ufa88\uf9d9\ufa87\ufa8a\ufa3e\ufa3f\ufa89\uf98f\ufa40\ufa8b\uf90d\uf990\u2f3d\uf9d2\ufa8c\u2f3e\u2f3f\u2e98\uf925\uf95b\ufa02\uf973\uf9a4\uf975\ufa8d\ufa8e\ufa8f\uf991\uf930\u2f40\u2f41\u2e99\ufa41\ufa90\uf969\u2f42\u3246\u2f43\uf9be\u2f44\u2f45\uf983\u2f46\u2e9b\ufa42\u2f47\u3290\u2e9c\u337e\uf9e0\u337c\ufa12\ufa91\uf9c5\ufa43\ufa06\uf98b\u2f48\uf901\u2f49\u328a\u2e9d\u3292\uf929\ufa92\ufa93\u2f4a\u328d\uf9e1\ufa94\uf9c8\uf9f4\uf9c9\uf9da\u3291\u337f\uf97a\ufa44\uf9e2\uf914\uf95c\uf9bf\uf94c\uf931\uf91d\u2f4b\u2f4c\u32a3\uf98c\ufa95\u2f4d\u2e9e\uf9a5\u2f4e\uf970\ufa96\u2f4f\u2e9f\u2f50\u2f51\u2f52\u2ea0\u2f53\u2f54\u328c\u2ea1\u2ea2\uf972\uf968\uf9e3\u329f\uf915\ufa05\uf9ca\ufa97\uf92a\ufa45\uf9f5\uf94d\uf9d6\ufa46\uf9cb\uf9ec\ufa99\uf904\ufa98\uf94e\ufa47\ufa9a\uf992\uf922\uf984\ufa9b\u2f55\u328b\u2ea3\uf9fb\uf99f\uf916\uf993\ufa48\ufa9c\uf9c0\uf9ee\uf932\uf91e\u2f56\ufa49\u2ea4\u2ea5\ufa9e\u2f57\u2f58\u2f59\u2f5a\u2f5b\u2f5c\u2ea7\uf946\u3295\u2f5d\u2ea8\ufa9f\uf9fa\uf92b\ufa16\ufaa0\uf9a7\u2f5e\uf961\uf9db\u2f5f\u2ea9\uf9ad\uf917\uf9e4\uf9cc\ufa4a\uf9ae\ufaa1\uf994\uf9ef\u2f60\u2f61\ufaa2\u2f62\u2f63\u2f64\u2f65\u3199\u329a\ufaa3\uf9cd\uf976\uf962\u2f66\u2eaa\u2f67\uf9e5\ufaa4\ufaa5\uf9c1\uf90e\u2f68\u2f69\u2f6a\u2f6b\ufa17\ufaa6\ufaa7\u32ac\uf933\u2f6c\u2eab\ufaa8\uf96d\ufaaa\ufaa9\ufa9d\u2f6d\u2f6e\u2f6f\uf9ce\uf93b\ufa4b\uf947\ufaab\uf964\uf985\u2f70\u2eac\u2ead\ufa18\ufa4c\u3293\ufa4e\ufa4d\ufa4f\ufa50\ufa51\u3297\ufa19\ufa1a\uf93c\ufa52\ufa53\ufa1b\uf9b6\u2f71\u2f72\uf995\u3299\uf956\ufa54\u2f73\ufa55\ufaac\uf9f7\u2f74\u2f75\u2eae\uf9f8\u3247\ufa56\ufaad\uf9a6\uf944\u2f76\ufaae\uf9f9\ufa1d\ufa03\uf97b\u2f77\u2eaf\uf9cf\uf96a\uf94f\ufaaf\uf93d\uf957\uf996\ufa57\ufab0\ufa58\uf950\ufa59\u2eb0\u2f78\ufab1\u2f79\u2eb2\u2eb5\u2eb1\u2eb3\u2eb4\ufa5a\uf9e6\uf90f\u2f7a\u2eb6\u2eb7\u2eb8\uf9af\ufa1e\u2f7b\uf934\u2f7c\u2eb9\ufa5b\ufab2\u2f7d\u2f7e\u2f7f\uf9b0\uf997\uf945\u2f80\u2ebb\u2eba\u2f81\u2ebc\uf953\uf926\u2f82\uf9f6\u2f83\ufa5c\u2f84\u2f85\u2ebd\u2f86\ufa6d\u2f87\u2f88\u2f89\uf97c\u2f8a\u2f8b\ufa5d\ufa5e\u2ebe\u2ebf\u2ec0\uf974\uf9fe\ufab3\uf93e\ufab4\uf958\uf918\uf96e\ufa5f\uf999\uf9c2\uf923\uf9f0\uf935\ufa20\uf91f\uf910\u2f8c\u2ec1\uf936\u2f8d\ufab5\uf911\uf927\u2f8e\ufa08\u2f8f\u2f90\u2ec2\uf9a0\uf9e7\uf9e8\uf912\ufa60\ufab6\uf924\u2f91\u2ec4\u2ec3\ufab7\ufa0a\u2f92\ufa61\ufab8\u2ec5\u2ec6\u2f93\u2ec7\u2f94\uf96f\uf9a1\ufab9\ufabb\uf97d\uf941\ufabe\ufa22\ufaba\uf95d\ufabd\ufa62\ufabc\ufa63\ufabf\uf9fc\uf95a\ufac0\u2ec8\u2f95\u2f96\uf900\u2f97\u2f98\u2f99\u3296\uf948\u32ae\uf903\ufa64\ufa65\ufac1\u2ec9\u2f9a\u2f9b\u2f9c\u2eca\uf937\u2f9d\uf902\u2f9e\uf998\uf9d7\ufac2\ufa07\uf98d\u2ecb\u2f9f\uf971\u2fa0\u2fa1\ufa66\u2ecc\u2ecd\u2ece\uf99a\ufa25\ufa67\u329c\ufac3\uf9c3\uf913\u2fa2\u2ecf\uf92c\ufa2e\ufa26\u2fa3\uf919\ufac4\uf9b7\u2fa4\uf9e9\u2fa5\uf97e\uf90a\u2fa6\u328e\uf9b1\ufac5\uf93f\uf99b\u2ed0\u2ed1\u2fa7\u2ed2\u2ed3\u2fa8\uf986\u2ed4\u2fa9\u2ed5\u2ed6\uf9c6\uf951\ufa09\uf959\uf9d3\ufac6\uf9dc\uf9f1\u2faa\ufa2f\uf9b8\u2fab\uf9ea\ufa68\ufac7\u2fac\u2ed7\uf9b2\uf949\uf938\uf9b3\u2fad\u2ed8\ufa1c\ufac8\u2fae\u2faf\u2fb0\u2fb1\ufac9\u2ed9\u2fb2\u2fb3\ufa69\ufaca\u2fb4\u32a0\ufacb\uf9b4\ufa6a\ufacc\uf9d0\u2eda\u2fb5\u2edb\u2fb6\u2edc\u2edd\u2fb7\u2edf\u2ede\ufa2a\ufa2b\ufa2c\u2ee0\u2fb8\u2ee1\u2fb9\u2fba\uf91a\uf987\u2ee2\u2fbb\u2ee3\u2fbc\u2fbd\ufacd\u2fbe\u2fbf\u2fc0\u2fc1\u2ee4\u2fc2\uf939\uf9f2\u2ee5\u2fc3\ufa2d\uf93a\uf920\u2ee6\u2fc4\u2ee7\uf940\u2fc5\uf988\uf9f3\u2fc6\u2ee8\u2fc7\u2fc8\u2ee9\u2fc9\uf989\u2fca\u2fcb\u2fcc\u2eea\u2fcd\u2fce\u2fcf\u2fd0\ufad8\u2fd1\u2eeb\u2eec\u2fd2\u2eed\u2eee\uf9c4\u2fd3\u2eef\ufad9\u2ef0\uf907\uf908\uface\u2fd4\u2ef1\u2ef2\u2ef3\u2fd5\ufad2\ufad3\ufad4\ufad0\ufacf\ufad1\ufa6c\ufad5\ufad6\ufad7\ufffd'; /// Kangxi Radicals (U+2F00-U+2FD5) → CJK Unified equivalents. /// ICU decomposes these via NFD before collation. @@ -227,10 +228,7 @@ const Map _kangxiDecomp = { final Map _ranks = _buildRanks(); Map _buildRanks() { - return { - for (var i = 0; i < _ducetOrder.length; i++) - _ducetOrder.codeUnitAt(i): i, - }; + return {for (var i = 0; i < _ducetOrder.length; i++) _ducetOrder.codeUnitAt(i): i}; } /// Compare two characters using DUCET + CLDR ordering. diff --git a/lib/database/app_database.dart b/lib/database/app_database.dart index 99104050..2e33200f 100644 --- a/lib/database/app_database.dart +++ b/lib/database/app_database.dart @@ -247,15 +247,15 @@ class AppDatabase extends _$AppDatabase { } Future updateSyncRuleCount(String globalKey, int episodeCount) async { - await (update(syncRules)..where((t) => t.globalKey.equals(globalKey))).write( - SyncRulesCompanion(episodeCount: Value(episodeCount)), - ); + await (update( + syncRules, + )..where((t) => t.globalKey.equals(globalKey))).write(SyncRulesCompanion(episodeCount: Value(episodeCount))); } Future updateSyncRuleEnabled(String globalKey, bool enabled) async { - await (update(syncRules)..where((t) => t.globalKey.equals(globalKey))).write( - SyncRulesCompanion(enabled: Value(enabled)), - ); + await (update( + syncRules, + )..where((t) => t.globalKey.equals(globalKey))).write(SyncRulesCompanion(enabled: Value(enabled))); } Future updateSyncRuleLastExecuted(String globalKey) async { @@ -300,9 +300,12 @@ LazyDatabase _openConnection() { } } - return NativeDatabase.createInBackground(file, setup: (db) { - db.execute('PRAGMA journal_mode=WAL'); - db.execute('PRAGMA synchronous=NORMAL'); - }); + return NativeDatabase.createInBackground( + file, + setup: (db) { + db.execute('PRAGMA journal_mode=WAL'); + db.execute('PRAGMA synchronous=NORMAL'); + }, + ); }); } diff --git a/lib/focus/focusable_action_bar.dart b/lib/focus/focusable_action_bar.dart index 2b8ca542..f926c2c3 100644 --- a/lib/focus/focusable_action_bar.dart +++ b/lib/focus/focusable_action_bar.dart @@ -88,8 +88,7 @@ class FocusableActionBarState extends State { late List _focusNodes; late List _focusStates; - FocusNode? getFocusNode(int index) => - index >= 0 && index < _focusNodes.length ? _focusNodes[index] : null; + FocusNode? getFocusNode(int index) => index >= 0 && index < _focusNodes.length ? _focusNodes[index] : null; void requestFocusOnFirst() { if (_focusNodes.isNotEmpty) _focusNodes.first.requestFocus(); @@ -143,9 +142,7 @@ class FocusableActionBarState extends State { return Row( mainAxisSize: MainAxisSize.min, - children: [ - for (var i = 0; i < widget.actions.length; i++) _buildButton(i, isKeyboard, duration), - ], + children: [for (var i = 0; i < widget.actions.length; i++) _buildButton(i, isKeyboard, duration)], ); } @@ -164,9 +161,7 @@ class FocusableActionBarState extends State { } return dpadKeyHandler( onSelect: action.onPressed, - onLeft: index > 0 - ? () => _focusNodes[index - 1].requestFocus() - : widget.onNavigateLeft, + onLeft: index > 0 ? () => _focusNodes[index - 1].requestFocus() : widget.onNavigateLeft, onRight: index < _focusNodes.length - 1 ? () => _focusNodes[index + 1].requestFocus() : widget.onNavigateRight, @@ -179,7 +174,8 @@ class FocusableActionBarState extends State { duration: duration, child: Container( decoration: FocusTheme.focusBackgroundDecoration(isFocused: showFocus, borderRadius: 20), - child: action.child ?? + child: + action.child ?? IconButton( icon: AppIcon(action.icon, fill: action.iconFill, color: action.iconColor), tooltip: action.tooltip, diff --git a/lib/focus/focusable_button.dart b/lib/focus/focusable_button.dart index 2c5cab4b..e281d423 100644 --- a/lib/focus/focusable_button.dart +++ b/lib/focus/focusable_button.dart @@ -85,11 +85,7 @@ class _FocusableButtonState extends State { onNavigateLeft: widget.onNavigateLeft, onNavigateRight: widget.onNavigateRight, onBack: widget.onBack, - child: AnimatedOpacity( - opacity: showFocus ? 1.0 : opacity, - duration: duration, - child: widget.child, - ), + child: AnimatedOpacity(opacity: showFocus ? 1.0 : opacity, duration: duration, child: widget.child), ); } } diff --git a/lib/focus/focusable_wrapper.dart b/lib/focus/focusable_wrapper.dart index bc78bb25..1efce137 100644 --- a/lib/focus/focusable_wrapper.dart +++ b/lib/focus/focusable_wrapper.dart @@ -426,7 +426,12 @@ class _FocusableWrapperState extends State with SingleTickerPr // Choose decoration based on useBackgroundFocus final decoration = widget.useBackgroundFocus ? FocusTheme.focusBackgroundDecoration(isFocused: showFocus, borderRadius: widget.borderRadius) - : FocusTheme.focusDecoration(context, isFocused: showFocus, borderRadius: widget.borderRadius, color: widget.focusColor); + : FocusTheme.focusDecoration( + context, + isFocused: showFocus, + borderRadius: widget.borderRadius, + color: widget.focusColor, + ); Widget result = Focus( focusNode: _focusNode, diff --git a/lib/mixins/tab_navigation_mixin.dart b/lib/mixins/tab_navigation_mixin.dart index 57e52aae..6f26cab8 100644 --- a/lib/mixins/tab_navigation_mixin.dart +++ b/lib/mixins/tab_navigation_mixin.dart @@ -102,20 +102,28 @@ mixin TabNavigationMixin on State, TickerProviderSt if (isSelected) { onSelectWhenActive(); } else { - setState(() { tabController.index = index; }); + setState(() { + tabController.index = index; + }); } }, onNavigateLeft: index > 0 ? () { final newIndex = index - 1; - setState(() { suppressAutoFocus = true; tabController.index = newIndex; }); + setState(() { + suppressAutoFocus = true; + tabController.index = newIndex; + }); getTabChipFocusNode(newIndex).requestFocus(); } : onTabBarBack, onNavigateRight: index < tabCount - 1 ? () { final newIndex = index + 1; - setState(() { suppressAutoFocus = true; tabController.index = newIndex; }); + setState(() { + suppressAutoFocus = true; + tabController.index = newIndex; + }); getTabChipFocusNode(newIndex).requestFocus(); } : onNavigateRightFromLast, diff --git a/lib/models/livetv_capture_buffer.dart b/lib/models/livetv_capture_buffer.dart index 45b16068..af41162b 100644 --- a/lib/models/livetv_capture_buffer.dart +++ b/lib/models/livetv_capture_buffer.dart @@ -9,11 +9,7 @@ class CaptureBuffer { final double seekStartSeconds; final double seekEndSeconds; - const CaptureBuffer({ - required this.startedAt, - required this.seekStartSeconds, - required this.seekEndSeconds, - }); + const CaptureBuffer({required this.startedAt, required this.seekStartSeconds, required this.seekEndSeconds}); /// Absolute epoch second of the earliest seekable point. int get seekableStartEpoch => (startedAt + seekStartSeconds).round(); @@ -31,11 +27,7 @@ class CaptureBuffer { final minOffset = _parseDouble(session['minOffsetAvailable']); final maxOffset = _parseDouble(session['maxOffsetAvailable']); if (timeStamp == null || minOffset == null || maxOffset == null) return null; - return CaptureBuffer( - startedAt: timeStamp, - seekStartSeconds: minOffset, - seekEndSeconds: maxOffset, - ); + return CaptureBuffer(startedAt: timeStamp, seekStartSeconds: minOffset, seekEndSeconds: maxOffset); } static double? _parseDouble(dynamic value) { diff --git a/lib/models/livetv_channel.dart b/lib/models/livetv_channel.dart index 5e7b298d..0516c1fe 100644 --- a/lib/models/livetv_channel.dart +++ b/lib/models/livetv_channel.dart @@ -36,13 +36,23 @@ class LiveTvChannel { factory LiveTvChannel.fromJson(Map json) { return LiveTvChannel( - key: json['key'] as String? ?? json['ratingKey'] as String? ?? json['identifier'] as String? ?? json['id'] as String? ?? json['channelIdentifier'] as String? ?? '', + key: + json['key'] as String? ?? + json['ratingKey'] as String? ?? + json['identifier'] as String? ?? + json['id'] as String? ?? + json['channelIdentifier'] as String? ?? + '', identifier: json['identifier'] as String? ?? json['id'] as String? ?? json['channelIdentifier'] as String?, callSign: json['callSign'] as String?, title: json['title'] as String? ?? json['callSign'] as String?, thumb: json['thumb'] as String?, art: json['art'] as String?, - number: json['number'] as String? ?? json['channelNumber'] as String? ?? json['channelVcn']?.toString() ?? json['vcn']?.toString(), + number: + json['number'] as String? ?? + json['channelNumber'] as String? ?? + json['channelVcn']?.toString() ?? + json['vcn']?.toString(), hd: flexibleBool(json['hd']), lineup: json['lineup'] as String?, slug: json['slug'] as String?, @@ -81,13 +91,7 @@ class FavoriteChannel { final String? thumb; final String? vcn; - FavoriteChannel({ - required this.source, - required this.id, - this.title, - this.thumb, - this.vcn, - }); + FavoriteChannel({required this.source, required this.id, this.title, this.thumb, this.vcn}); factory FavoriteChannel.fromJson(Map json) { return FavoriteChannel( diff --git a/lib/models/livetv_program.dart b/lib/models/livetv_program.dart index 83d8ed33..3c2f24ea 100644 --- a/lib/models/livetv_program.dart +++ b/lib/models/livetv_program.dart @@ -44,10 +44,7 @@ class LiveTvProgram { this.premiere, }); - factory LiveTvProgram.fromJson( - Map json, { - Map? mediaOverride, - }) { + factory LiveTvProgram.fromJson(Map json, {Map? mediaOverride}) { // Grid endpoint nests timing/channel info inside Media[] and Channel[]. // When mediaOverride is supplied, the caller is pinning this parse to a // specific airing (one Media entry); treat it as authoritative for diff --git a/lib/models/mpv_config_models.dart b/lib/models/mpv_config_models.dart index d0ecfbe8..b763b258 100644 --- a/lib/models/mpv_config_models.dart +++ b/lib/models/mpv_config_models.dart @@ -14,9 +14,5 @@ class MpvPreset { ); } - Map toJson() => { - 'name': name, - 'text': text, - 'createdAt': createdAt.toIso8601String(), - }; + Map toJson() => {'name': name, 'text': text, 'createdAt': createdAt.toIso8601String()}; } diff --git a/lib/models/plex_hub.dart b/lib/models/plex_hub.dart index dd5ac6ed..8994f4a9 100644 --- a/lib/models/plex_hub.dart +++ b/lib/models/plex_hub.dart @@ -61,7 +61,9 @@ class PlexHub { return PlexHub( hubKey: json['key'] as String? ?? '', - title: kBlurArtwork ? obfuscateText(json['title'] as String? ?? 'Unknown') : json['title'] as String? ?? 'Unknown', + title: kBlurArtwork + ? obfuscateText(json['title'] as String? ?? 'Unknown') + : json['title'] as String? ?? 'Unknown', type: json['type'] as String? ?? 'hub', hubIdentifier: json['hubIdentifier'] as String?, size: (json['size'] as num?)?.toInt() ?? metadataList.length, diff --git a/lib/models/plex_media_info.dart b/lib/models/plex_media_info.dart index e0d4b4d8..6f596a08 100644 --- a/lib/models/plex_media_info.dart +++ b/lib/models/plex_media_info.dart @@ -37,30 +37,34 @@ class PlexMediaInfo { try { final streamType = s['streamType'] as int?; if (streamType == 2) { - audioTracks.add(PlexAudioTrack( - id: s['id'] as int, - index: s['index'] as int?, - codec: s['codec'] as String?, - language: s['language'] as String?, - languageCode: s['languageCode'] as String?, - title: s['title'] as String?, - displayTitle: s['displayTitle'] as String?, - channels: s['channels'] as int?, - selected: flexibleBool(s['selected']), - )); + audioTracks.add( + PlexAudioTrack( + id: s['id'] as int, + index: s['index'] as int?, + codec: s['codec'] as String?, + language: s['language'] as String?, + languageCode: s['languageCode'] as String?, + title: s['title'] as String?, + displayTitle: s['displayTitle'] as String?, + channels: s['channels'] as int?, + selected: flexibleBool(s['selected']), + ), + ); } else if (streamType == 3) { - subtitleTracks.add(PlexSubtitleTrack( - id: s['id'] as int, - index: s['index'] as int?, - codec: s['codec'] as String?, - language: s['language'] as String?, - languageCode: s['languageCode'] as String?, - title: s['title'] as String?, - displayTitle: s['displayTitle'] as String?, - selected: flexibleBool(s['selected']), - forced: flexibleBool(s['forced']), - key: s['key'] as String?, - )); + subtitleTracks.add( + PlexSubtitleTrack( + id: s['id'] as int, + index: s['index'] as int?, + codec: s['codec'] as String?, + language: s['language'] as String?, + languageCode: s['languageCode'] as String?, + title: s['title'] as String?, + displayTitle: s['displayTitle'] as String?, + selected: flexibleBool(s['selected']), + forced: flexibleBool(s['forced']), + key: s['key'] as String?, + ), + ); } } catch (e) { appLogger.d('Skipping malformed stream in cached metadata', error: e); @@ -68,12 +72,7 @@ class PlexMediaInfo { } } - return PlexMediaInfo( - videoUrl: '', - audioTracks: audioTracks, - subtitleTracks: subtitleTracks, - chapters: const [], - ); + return PlexMediaInfo(videoUrl: '', audioTracks: audioTracks, subtitleTracks: subtitleTracks, chapters: const []); } } @@ -259,7 +258,12 @@ class PlaybackExtras { if (m.type == 'intro' || m.type == 'credits') return m; final newType = _classifyChapterTitle(m.type, introPattern, creditsPattern); if (newType != null) { - return PlexMarker(id: m.id, type: newType, startTimeOffset: m.startTimeOffset, endTimeOffset: m.endTimeOffset); + return PlexMarker( + id: m.id, + type: newType, + startTimeOffset: m.startTimeOffset, + endTimeOffset: m.endTimeOffset, + ); } return m; }).toList(); @@ -278,8 +282,7 @@ class PlaybackExtras { final start = ch.startTimeOffset; if (start == null) continue; - final end = ch.endTimeOffset ?? - (i + 1 < chapters.length ? chapters[i + 1].startTimeOffset : null); + final end = ch.endTimeOffset ?? (i + 1 < chapters.length ? chapters[i + 1].startTimeOffset : null); if (end == null) continue; synthetic.add(PlexMarker(id: ch.id, type: type, startTimeOffset: start, endTimeOffset: end)); diff --git a/lib/models/plex_metadata.dart b/lib/models/plex_metadata.dart index 3d0cf7e6..3e255c40 100644 --- a/lib/models/plex_metadata.dart +++ b/lib/models/plex_metadata.dart @@ -11,11 +11,9 @@ import '../utils/json_utils.dart'; part 'plex_metadata.g.dart'; -Object? _readRatingKey(Map json, String key) => - json['ratingKey'] ?? json['key'] ?? ''; +Object? _readRatingKey(Map json, String key) => json['ratingKey'] ?? json['key'] ?? ''; -List? _tagsFromJson(List? json) => - json?.cast>().map((e) => e['tag'] as String).toList(); +List? _tagsFromJson(List? json) => json?.cast>().map((e) => e['tag'] as String).toList(); /// Media type enum for type-safe media type handling enum PlexMediaType { @@ -156,10 +154,7 @@ class PlexMetadata with MultiServerFields { /// For an episode: [seasonRatingKey, showRatingKey] /// For a season: [showRatingKey] /// For a movie: [] - List get parentChain => [ - ?parentRatingKey, - ?grandparentRatingKey, - ]; + List get parentChain => [?parentRatingKey, ?grandparentRatingKey]; /// Whether this item represents a library section (shared whole-library, not a media item). /// These have keys like `/library/sections/5/all` instead of `/library/metadata/12345`. @@ -548,9 +543,13 @@ class PlexMetadata with MultiServerFields { try { return _$PlexMetadataFromJson(kBlurArtwork ? _obfuscateJson(json) : json); } on TypeError catch (e, st) { - Sentry.captureException(e, stackTrace: st, withScope: (scope) { - scope.setContexts('json', json); - }); + Sentry.captureException( + e, + stackTrace: st, + withScope: (scope) { + scope.setContexts('json', json); + }, + ); rethrow; } } diff --git a/lib/mpv/player/platform/player_android.dart b/lib/mpv/player/platform/player_android.dart index 0de07964..16eadc8d 100644 --- a/lib/mpv/player/platform/player_android.dart +++ b/lib/mpv/player/platform/player_android.dart @@ -92,7 +92,12 @@ class PlayerAndroid extends PlayerBase { // ============================================ @override - Future open(Media media, {bool play = true, bool isLive = false, List? externalSubtitles}) async { + Future open( + Media media, { + bool play = true, + bool isLive = false, + List? externalSubtitles, + }) async { if (disposed) return; await _ensureInitialized(); setSeekable(false); diff --git a/lib/mpv/player/player_base.dart b/lib/mpv/player/player_base.dart index c6b95490..16399583 100644 --- a/lib/mpv/player/player_base.dart +++ b/lib/mpv/player/player_base.dart @@ -356,10 +356,9 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { _state = _state.copyWith(completed: true); completedController.add(true); } else if (reason == 'error') { - errorController.add(PlayerError( - data?['message'] as String? ?? 'Playback error', - cause: data?['cause'] as String?, - )); + errorController.add( + PlayerError(data?['message'] as String? ?? 'Playback error', cause: data?['cause'] as String?), + ); } break; @@ -440,7 +439,11 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { } } - return (tracks: Tracks(audio: audioTracks, subtitle: subtitleTracks), selectedAudioId: selectedAudioId, selectedSubtitleId: selectedSubtitleId); + return ( + tracks: Tracks(audio: audioTracks, subtitle: subtitleTracks), + selectedAudioId: selectedAudioId, + selectedSubtitleId: selectedSubtitleId, + ); } /// Update the selected audio track. @@ -591,11 +594,9 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { } } catch (e) { // Font configuration is not critical - continue without it - logController.add(PlayerLog( - prefix: 'fonts', - level: PlayerLogLevel.warn, - text: 'Failed to configure subtitle fonts: $e', - )); + logController.add( + PlayerLog(prefix: 'fonts', level: PlayerLogLevel.warn, text: 'Failed to configure subtitle fonts: $e'), + ); } } @@ -609,15 +610,14 @@ abstract class PlayerBase with PlayerStreamControllersMixin implements Player { /// without needing a real misbehaving server. void debugSimulateServer500() { if (_disposed) return; - logController.add(const PlayerLog( - level: PlayerLogLevel.warn, - prefix: 'ffmpeg', - text: 'https: HTTP error 500 Internal Server Error', - )); - errorController.add(const PlayerError( - 'HTTP 500', - cause: PlayerError.serverHttp500, - )); + logController.add( + const PlayerLog( + level: PlayerLogLevel.warn, + prefix: 'ffmpeg', + text: 'https: HTTP error 500 Internal Server Error', + ), + ); + errorController.add(const PlayerError('HTTP 500', cause: PlayerError.serverHttp500)); } // ============================================ diff --git a/lib/mpv/player/player_native.dart b/lib/mpv/player/player_native.dart index 25fe688e..915bca8d 100644 --- a/lib/mpv/player/player_native.dart +++ b/lib/mpv/player/player_native.dart @@ -91,7 +91,12 @@ class PlayerNative extends PlayerBase { } @override - Future open(Media media, {bool play = true, bool isLive = false, List? externalSubtitles}) async { + Future open( + Media media, { + bool play = true, + bool isLive = false, + List? externalSubtitles, + }) async { if (disposed) return; await _ensureInitialized(); setSeekable(false); diff --git a/lib/navigation/navigation_tabs.dart b/lib/navigation/navigation_tabs.dart index a631187e..b1ce9adf 100644 --- a/lib/navigation/navigation_tabs.dart +++ b/lib/navigation/navigation_tabs.dart @@ -34,7 +34,6 @@ class NavigationTab { return true; }).toList(); } - } // Label getters (must be top-level for const constructor) diff --git a/lib/providers/companion_remote_provider.dart b/lib/providers/companion_remote_provider.dart index ddc05718..e4b1e650 100644 --- a/lib/providers/companion_remote_provider.dart +++ b/lib/providers/companion_remote_provider.dart @@ -158,10 +158,7 @@ class CompanionRemoteProvider with ChangeNotifier { _homeUserUUIDs!, ); - _session = RemoteSession( - role: RemoteSessionRole.host, - status: RemoteSessionStatus.connected, - ); + _session = RemoteSession(role: RemoteSessionRole.host, status: RemoteSessionStatus.connected); notifyListeners(); // Start LAN discovery broadcasting @@ -239,10 +236,7 @@ class CompanionRemoteProvider with ChangeNotifier { _peerService = CompanionRemotePeerService(); _setupPeerServiceListeners(); - _session = RemoteSession( - role: RemoteSessionRole.remote, - status: RemoteSessionStatus.connecting, - ); + _session = RemoteSession(role: RemoteSessionRole.remote, status: RemoteSessionStatus.connecting); notifyListeners(); try { @@ -284,10 +278,7 @@ class CompanionRemoteProvider with ChangeNotifier { _peerService = CompanionRemotePeerService(); _setupPeerServiceListeners(); - _session = RemoteSession( - role: RemoteSessionRole.remote, - status: RemoteSessionStatus.connecting, - ); + _session = RemoteSession(role: RemoteSessionRole.remote, status: RemoteSessionStatus.connecting); notifyListeners(); try { diff --git a/lib/providers/download_provider.dart b/lib/providers/download_provider.dart index 49a59586..bc82eca7 100644 --- a/lib/providers/download_provider.dart +++ b/lib/providers/download_provider.dart @@ -68,9 +68,9 @@ class DownloadProvider extends ChangeNotifier { final Map _syncRules = {}; DownloadProvider({required DownloadManagerService downloadManager, required AppDatabase database}) - : _downloadManager = downloadManager, - _database = database, - _syncRuleExecutor = SyncRuleExecutor(database: database) { + : _downloadManager = downloadManager, + _database = database, + _syncRuleExecutor = SyncRuleExecutor(database: database) { // Listen to progress updates from the download manager _progressSubscription = _downloadManager.progressStream.listen(_onProgressUpdate); @@ -321,10 +321,7 @@ class DownloadProvider extends ChangeNotifier { } /// Get episode downloads filtered by show and/or season ratingKey. - List _getEpisodeDownloads({ - String? showRatingKey, - String? seasonRatingKey, - }) { + List _getEpisodeDownloads({String? showRatingKey, String? seasonRatingKey}) { return _downloads.entries .where((entry) { final meta = _metadata[entry.key]; @@ -758,8 +755,13 @@ class DownloadProvider extends ChangeNotifier { } /// Queue all episodes from a TV show for download - Future _queueShowDownload(PlexMetadata show, PlexClient client, - {DownloadVersionConfig? versionConfig, DownloadFilter filter = DownloadFilter.all, int? maxCount}) async { + Future _queueShowDownload( + PlexMetadata show, + PlexClient client, { + DownloadVersionConfig? versionConfig, + DownloadFilter filter = DownloadFilter.all, + int? maxCount, + }) async { int count = 0; final seasons = await client.getChildren(show.ratingKey); @@ -770,8 +772,13 @@ class DownloadProvider extends ChangeNotifier { if (season.type == 'season') { if (remaining != null && remaining <= 0) break; final seasonWithServer = _ensureServerId(season, show.serverId); - final queued = await _queueSeasonDownload(seasonWithServer, client, - versionConfig: versionConfig, filter: filter, maxCount: remaining); + final queued = await _queueSeasonDownload( + seasonWithServer, + client, + versionConfig: versionConfig, + filter: filter, + maxCount: remaining, + ); count += queued; if (remaining != null) remaining -= queued; } @@ -781,8 +788,13 @@ class DownloadProvider extends ChangeNotifier { } /// Queue all episodes from a season for download - Future _queueSeasonDownload(PlexMetadata season, PlexClient client, - {DownloadVersionConfig? versionConfig, DownloadFilter filter = DownloadFilter.all, int? maxCount}) async { + Future _queueSeasonDownload( + PlexMetadata season, + PlexClient client, { + DownloadVersionConfig? versionConfig, + DownloadFilter filter = DownloadFilter.all, + int? maxCount, + }) async { int count = 0; final episodes = await client.getChildren(season.ratingKey); @@ -822,8 +834,11 @@ class DownloadProvider extends ChangeNotifier { } /// Queue missing episodes for a show - Future _queueMissingShowEpisodes(PlexMetadata show, PlexClient client, - {DownloadVersionConfig? versionConfig}) async { + Future _queueMissingShowEpisodes( + PlexMetadata show, + PlexClient client, { + DownloadVersionConfig? versionConfig, + }) async { int queuedCount = 0; final seasons = await client.getChildren(show.ratingKey); @@ -840,8 +855,11 @@ class DownloadProvider extends ChangeNotifier { } /// Queue missing episodes for a season - Future _queueMissingSeasonEpisodes(PlexMetadata season, PlexClient client, - {DownloadVersionConfig? versionConfig}) async { + Future _queueMissingSeasonEpisodes( + PlexMetadata season, + PlexClient client, { + DownloadVersionConfig? versionConfig, + }) async { int queuedCount = 0; final episodes = await client.getChildren(season.ratingKey); diff --git a/lib/providers/offline_mode_provider.dart b/lib/providers/offline_mode_provider.dart index ab66fe6a..575bc8f7 100644 --- a/lib/providers/offline_mode_provider.dart +++ b/lib/providers/offline_mode_provider.dart @@ -29,9 +29,10 @@ class OfflineModeProvider extends ChangeNotifier { /// Updates network and server connection flags Future _updateConnectionFlags() async { try { - final connectivityResult = await Connectivity() - .checkConnectivity() - .timeout(const Duration(seconds: 3), onTimeout: () => [ConnectivityResult.other]); + final connectivityResult = await Connectivity().checkConnectivity().timeout( + const Duration(seconds: 3), + onTimeout: () => [ConnectivityResult.other], + ); _hasNetworkConnection = !connectivityResult.contains(ConnectivityResult.none); } catch (e) { // connectivity_plus can throw PlatformException on Windows (NetworkManager::StartListen) @@ -50,24 +51,27 @@ class OfflineModeProvider extends ChangeNotifier { // Monitor connectivity changes — runZonedGuarded catches async errors from // connectivity_plus (e.g. DBusServiceUnknownException on Linux without NetworkManager) - runZonedGuarded(() { - _connectivitySubscription = Connectivity().onConnectivityChanged.listen( - (results) { - final wasOffline = isOffline; - _hasNetworkConnection = !results.contains(ConnectivityResult.none); + runZonedGuarded( + () { + _connectivitySubscription = Connectivity().onConnectivityChanged.listen( + (results) { + final wasOffline = isOffline; + _hasNetworkConnection = !results.contains(ConnectivityResult.none); - if (wasOffline != isOffline) { - notifyListeners(); - } - }, - onError: (e) { - _hasNetworkConnection = true; - }, - ); - }, (error, stack) { - // connectivity_plus throws DBusServiceUnknownException on Linux without NetworkManager - _hasNetworkConnection = true; - }); + if (wasOffline != isOffline) { + notifyListeners(); + } + }, + onError: (e) { + _hasNetworkConnection = true; + }, + ); + }, + (error, stack) { + // connectivity_plus throws DBusServiceUnknownException on Linux without NetworkManager + _hasNetworkConnection = true; + }, + ); // Monitor server status from MultiServerManager _serverStatusSubscription = _serverManager.statusStream.listen((statusMap) { diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index cb46f3ab..0a2a210d 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -90,75 +90,86 @@ class SettingsProvider extends ChangeNotifier { } Future setLibraryDensity(int density) => _updateSetting( - current: _libraryDensity, value: density.clamp(LibraryDensity.min, LibraryDensity.max), + current: _libraryDensity, + value: density.clamp(LibraryDensity.min, LibraryDensity.max), setLocal: (v) => _libraryDensity = v, persist: _settingsService!.setLibraryDensity, ); Future setViewMode(ViewMode mode) => _updateSetting( - current: _viewMode, value: mode, + current: _viewMode, + value: mode, setLocal: (v) => _viewMode = v, persist: _settingsService!.setViewMode, ); Future setEpisodePosterMode(EpisodePosterMode mode) => _updateSetting( - current: _episodePosterMode, value: mode, + current: _episodePosterMode, + value: mode, setLocal: (v) => _episodePosterMode = v, persist: _settingsService!.setEpisodePosterMode, ); Future setShowHeroSection(bool value) => _updateSetting( - current: _showHeroSection, value: value, + current: _showHeroSection, + value: value, setLocal: (v) => _showHeroSection = v, persist: _settingsService!.setShowHeroSection, ); Future setUseGlobalHubs(bool value) => _updateSetting( - current: _useGlobalHubs, value: value, + current: _useGlobalHubs, + value: value, setLocal: (v) => _useGlobalHubs = v, persist: _settingsService!.setUseGlobalHubs, ); Future setShowServerNameOnHubs(bool value) => _updateSetting( - current: _showServerNameOnHubs, value: value, + current: _showServerNameOnHubs, + value: value, setLocal: (v) => _showServerNameOnHubs = v, persist: _settingsService!.setShowServerNameOnHubs, ); Future setAlwaysKeepSidebarOpen(bool value) => _updateSetting( - current: _alwaysKeepSidebarOpen, value: value, + current: _alwaysKeepSidebarOpen, + value: value, setLocal: (v) => _alwaysKeepSidebarOpen = v, persist: _settingsService!.setAlwaysKeepSidebarOpen, ); Future setShowUnwatchedCount(bool value) => _updateSetting( - current: _showUnwatchedCount, value: value, + current: _showUnwatchedCount, + value: value, setLocal: (v) => _showUnwatchedCount = v, persist: _settingsService!.setShowUnwatchedCount, ); Future setHideSpoilers(bool value) => _updateSetting( - current: _hideSpoilers, value: value, + current: _hideSpoilers, + value: value, setLocal: (v) => _hideSpoilers = v, persist: _settingsService!.setHideSpoilers, ); Future setShowNavBarLabels(bool value) => _updateSetting( - current: _showNavBarLabels, value: value, + current: _showNavBarLabels, + value: value, setLocal: (v) => _showNavBarLabels = v, persist: _settingsService!.setShowNavBarLabels, ); Future setLiveTvDefaultFavorites(bool value) => _updateSetting( - current: _liveTvDefaultFavorites, value: value, + current: _liveTvDefaultFavorites, + value: value, setLocal: (v) => _liveTvDefaultFavorites = v, persist: _settingsService!.setLiveTvDefaultFavorites, ); Future setAutoHidePerformanceOverlay(bool value) => _updateSetting( - current: _autoHidePerformanceOverlay, value: value, + current: _autoHidePerformanceOverlay, + value: value, setLocal: (v) => _autoHidePerformanceOverlay = v, persist: _settingsService!.setAutoHidePerformanceOverlay, ); - } diff --git a/lib/providers/shader_provider.dart b/lib/providers/shader_provider.dart index 43c7c23e..55d96610 100644 --- a/lib/providers/shader_provider.dart +++ b/lib/providers/shader_provider.dart @@ -54,7 +54,8 @@ class ShaderProvider extends ChangeNotifier { /// Find a preset by its ID, searching both built-in and custom presets. ShaderPreset? findPresetById(String id) { - return ShaderPreset.fromId(id) ?? _customPresets.cast().firstWhere((p) => p!.id == id, orElse: () => null); + return ShaderPreset.fromId(id) ?? + _customPresets.cast().firstWhere((p) => p!.id == id, orElse: () => null); } /// Apply and persist a shader preset @@ -79,12 +80,7 @@ class ShaderProvider extends ChangeNotifier { final storedFileName = await ShaderAssetLoader.importCustomShader(filePath); final id = 'custom_$storedFileName'; - final preset = ShaderPreset( - id: id, - name: displayName, - type: ShaderPresetType.custom, - fileName: storedFileName, - ); + final preset = ShaderPreset(id: id, name: displayName, type: ShaderPresetType.custom, fileName: storedFileName); _customPresets.add(preset); await _saveCustomPresets(); diff --git a/lib/providers/theme_provider.dart b/lib/providers/theme_provider.dart index 8faae761..4f47c02e 100644 --- a/lib/providers/theme_provider.dart +++ b/lib/providers/theme_provider.dart @@ -113,5 +113,4 @@ class ThemeProvider extends ChangeNotifier { return Symbols.brightness_auto_rounded; } } - } diff --git a/lib/screens/actor_media_screen.dart b/lib/screens/actor_media_screen.dart index a7af452b..3a85e508 100644 --- a/lib/screens/actor_media_screen.dart +++ b/lib/screens/actor_media_screen.dart @@ -40,11 +40,7 @@ class _ActorMediaScreenState extends BaseMediaListDetailScreen GridFocusNodeMixin, FocusableDetailScreenMixin { @override - PlexMetadata get mediaItem => PlexMetadata( - ratingKey: '', - serverId: widget.serverId, - serverName: widget.serverName, - ); + PlexMetadata get mediaItem => PlexMetadata(ratingKey: '', serverId: widget.serverId, serverName: widget.serverName); @override String get title => widget.actorName; @@ -111,9 +107,7 @@ class _ActorMediaScreenState extends BaseMediaListDetailScreen const SizedBox(height: 4), Text( widget.characterName!, - style: theme.textTheme.bodyMedium?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), + style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.onSurfaceVariant), maxLines: 1, overflow: TextOverflow.ellipsis, ), @@ -122,9 +116,7 @@ class _ActorMediaScreenState extends BaseMediaListDetailScreen const SizedBox(height: 4), Text( '${items.length} ${items.length == 1 ? 'title' : 'titles'}', - style: theme.textTheme.bodySmall?.copyWith( - color: theme.colorScheme.onSurfaceVariant, - ), + style: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.onSurfaceVariant), ), ], ], @@ -155,11 +147,7 @@ class _ActorMediaScreenState extends BaseMediaListDetailScreen CustomAppBar(title: Text(widget.actorName), pinned: true, actions: buildFocusableAppBarActions()), _buildActorHeader(), ...buildStateSlivers(), - if (items.isNotEmpty) - buildFocusableGrid( - items: items, - onRefresh: updateItem, - ), + if (items.isNotEmpty) buildFocusableGrid(items: items, onRefresh: updateItem), ], ), ), diff --git a/lib/screens/collection_detail_screen.dart b/lib/screens/collection_detail_screen.dart index 0fd68677..ddca59e9 100644 --- a/lib/screens/collection_detail_screen.dart +++ b/lib/screens/collection_detail_screen.dart @@ -73,7 +73,12 @@ class _CollectionDetailScreenState extends BaseMediaListDetailScreen onCommand(RemoteCommandType.dpadLeft), ), - Center( - child: _DPadCenter( - onTap: () => onCommand(RemoteCommandType.select), - ), - ), + Center(child: _DPadCenter(onTap: () => onCommand(RemoteCommandType.select))), ], ), ), @@ -477,11 +470,7 @@ class _DPadZone extends StatefulWidget { final IconData icon; final VoidCallback onTap; - const _DPadZone({ - required this.startAngle, - required this.icon, - required this.onTap, - }); + const _DPadZone({required this.startAngle, required this.icon, required this.onTap}); Alignment get iconAlignment { final midRad = (startAngle + 45) * pi / 180; @@ -518,9 +507,7 @@ class _DPadZoneState extends State<_DPadZone> { }, child: AnimatedContainer( duration: tokens(context).fast, - color: _pressed - ? colors.primary.withValues(alpha: 0.8) - : colors.primary, + color: _pressed ? colors.primary.withValues(alpha: 0.8) : colors.primary, alignment: widget.iconAlignment, child: Icon(widget.icon, size: 28, color: colors.onPrimary), ), @@ -561,9 +548,7 @@ class _DPadCenterState extends State<_DPadCenter> { height: _DPad._centerSize, decoration: BoxDecoration( shape: BoxShape.circle, - color: _pressed - ? colors.primary.withValues(alpha: 0.8) - : colors.primary, + color: _pressed ? colors.primary.withValues(alpha: 0.8) : colors.primary, ), child: const SizedBox.shrink(), ), @@ -576,11 +561,7 @@ class _SectorClipper extends CustomClipper { final double innerRadius; final double gapWidth; - const _SectorClipper({ - required this.startAngle, - required this.innerRadius, - required this.gapWidth, - }); + const _SectorClipper({required this.startAngle, required this.innerRadius, required this.gapWidth}); @override Path getClip(Size size) { @@ -600,38 +581,17 @@ class _SectorClipper extends CustomClipper { final innerEnd = endRad - innerOffset; return Path() - ..moveTo( - center.dx + innerRadius * cos(innerStart), - center.dy + innerRadius * sin(innerStart), - ) - ..lineTo( - center.dx + outerRadius * cos(outerStart), - center.dy + outerRadius * sin(outerStart), - ) - ..arcTo( - Rect.fromCircle(center: center, radius: outerRadius), - outerStart, - outerEnd - outerStart, - false, - ) - ..lineTo( - center.dx + innerRadius * cos(innerEnd), - center.dy + innerRadius * sin(innerEnd), - ) - ..arcTo( - Rect.fromCircle(center: center, radius: innerRadius), - innerEnd, - innerStart - innerEnd, - false, - ) + ..moveTo(center.dx + innerRadius * cos(innerStart), center.dy + innerRadius * sin(innerStart)) + ..lineTo(center.dx + outerRadius * cos(outerStart), center.dy + outerRadius * sin(outerStart)) + ..arcTo(Rect.fromCircle(center: center, radius: outerRadius), outerStart, outerEnd - outerStart, false) + ..lineTo(center.dx + innerRadius * cos(innerEnd), center.dy + innerRadius * sin(innerEnd)) + ..arcTo(Rect.fromCircle(center: center, radius: innerRadius), innerEnd, innerStart - innerEnd, false) ..close(); } @override bool shouldReclip(covariant _SectorClipper oldClipper) => - startAngle != oldClipper.startAngle || - innerRadius != oldClipper.innerRadius || - gapWidth != oldClipper.gapWidth; + startAngle != oldClipper.startAngle || innerRadius != oldClipper.innerRadius || gapWidth != oldClipper.gapWidth; } class _RemoteButton extends StatelessWidget { diff --git a/lib/screens/discover_screen.dart b/lib/screens/discover_screen.dart index b7c28c64..03d6d4c8 100644 --- a/lib/screens/discover_screen.dart +++ b/lib/screens/discover_screen.dart @@ -56,7 +56,14 @@ class DiscoverScreen extends StatefulWidget { } class _DiscoverScreenState extends State - with Refreshable, FullRefreshable, ItemUpdatable, WatchStateAware, TabVisibilityAware, FocusableTab, WidgetsBindingObserver { + with + Refreshable, + FullRefreshable, + ItemUpdatable, + WatchStateAware, + TabVisibilityAware, + FocusableTab, + WidgetsBindingObserver { static const Duration _heroAutoScrollDuration = Duration(seconds: 8); static const Duration _indicatorUpdateInterval = Duration(milliseconds: 200); @@ -307,8 +314,7 @@ class _DiscoverScreenState extends State if (Platform.isIOS || Platform.isAndroid) { _refreshContinueWatching(); } - } else if (state == AppLifecycleState.inactive || - state == AppLifecycleState.hidden) { + } else if (state == AppLifecycleState.inactive || state == AppLifecycleState.hidden) { // Stop animations to prevent scroll state corruption while backgrounded _autoScrollTimer?.cancel(); _stopIndicatorProgress(); @@ -990,8 +996,7 @@ class _DiscoverScreenState extends State ), ), // Server Tasks - if (PlatformDetector.isDesktop(context)) - const FocusableAction(child: ServerActivitiesButton()), + if (PlatformDetector.isDesktop(context)) const FocusableAction(child: ServerActivitiesButton()), // User menu FocusableAction( onPressed: () => _showUserMenu(context, userProvider), @@ -1220,87 +1225,87 @@ class _DiscoverScreenState extends State ), // Page indicators with animated progress and pause/play button if (!InputModeTracker.isKeyboardMode(context)) - Positioned( - bottom: 16, - left: -26, - right: 0, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - // Pause/Play button - GestureDetector( - onTap: () { - if (_isAutoScrollPaused) { - _resumeAutoScroll(); - } else { - _pauseAutoScroll(); - } - }, - child: AppIcon( - _isAutoScrollPaused ? Symbols.play_arrow_rounded : Symbols.pause_rounded, - fill: 1, - color: Theme.of(context).colorScheme.onSurface, - size: 18, - semanticLabel: '${_isAutoScrollPaused ? t.common.play : t.common.pause} auto-scroll', + Positioned( + bottom: 16, + left: -26, + right: 0, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Pause/Play button + GestureDetector( + onTap: () { + if (_isAutoScrollPaused) { + _resumeAutoScroll(); + } else { + _pauseAutoScroll(); + } + }, + child: AppIcon( + _isAutoScrollPaused ? Symbols.play_arrow_rounded : Symbols.pause_rounded, + fill: 1, + color: Theme.of(context).colorScheme.onSurface, + size: 18, + semanticLabel: '${_isAutoScrollPaused ? t.common.play : t.common.pause} auto-scroll', + ), ), - ), - // Spacer to separate indicators from button - const SizedBox(width: 8), - // Page indicators (limited to 5 dots) - ...() { - final range = _getVisibleDotRange(); - return List.generate(range.end - range.start + 1, (i) { - final index = range.start + i; - final isActive = _currentHeroIndex == index; - final dotSize = _getDotSize(index, range.start, range.end); + // Spacer to separate indicators from button + const SizedBox(width: 8), + // Page indicators (limited to 5 dots) + ...() { + final range = _getVisibleDotRange(); + return List.generate(range.end - range.start + 1, (i) { + final index = range.start + i; + final isActive = _currentHeroIndex == index; + final dotSize = _getDotSize(index, range.start, range.end); - return isActive - // Progress indicator for active page (~5fps via Timer) - ? ValueListenableBuilder( - valueListenable: _indicatorProgress, - builder: (context, progress, child) { - final maxWidth = dotSize * 3; // 24px for normal, 15px for small - final fillWidth = dotSize + ((maxWidth - dotSize) * progress); - final onSurface = Theme.of(context).colorScheme.onSurface; - return Container( - margin: const EdgeInsets.symmetric(horizontal: 4), - width: maxWidth, - height: dotSize, - decoration: BoxDecoration( - color: onSurface.withValues(alpha: 0.4), - borderRadius: BorderRadius.circular(dotSize / 2), - ), - child: Align( - alignment: Alignment.centerLeft, - child: Container( - width: fillWidth, - height: dotSize, - decoration: BoxDecoration( - color: onSurface, - borderRadius: BorderRadius.circular(dotSize / 2), + return isActive + // Progress indicator for active page (~5fps via Timer) + ? ValueListenableBuilder( + valueListenable: _indicatorProgress, + builder: (context, progress, child) { + final maxWidth = dotSize * 3; // 24px for normal, 15px for small + final fillWidth = dotSize + ((maxWidth - dotSize) * progress); + final onSurface = Theme.of(context).colorScheme.onSurface; + return Container( + margin: const EdgeInsets.symmetric(horizontal: 4), + width: maxWidth, + height: dotSize, + decoration: BoxDecoration( + color: onSurface.withValues(alpha: 0.4), + borderRadius: BorderRadius.circular(dotSize / 2), + ), + child: Align( + alignment: Alignment.centerLeft, + child: Container( + width: fillWidth, + height: dotSize, + decoration: BoxDecoration( + color: onSurface, + borderRadius: BorderRadius.circular(dotSize / 2), + ), ), ), - ), - ); - }, - ) - // Static indicator for inactive pages - : AnimatedContainer( - duration: tokens(context).slow, - curve: Curves.easeInOut, - margin: const EdgeInsets.symmetric(horizontal: 4), - width: dotSize, - height: dotSize, - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.4), - borderRadius: BorderRadius.circular(dotSize / 2), - ), - ); - }); - }(), - ], + ); + }, + ) + // Static indicator for inactive pages + : AnimatedContainer( + duration: tokens(context).slow, + curve: Curves.easeInOut, + margin: const EdgeInsets.symmetric(horizontal: 4), + width: dotSize, + height: dotSize, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.4), + borderRadius: BorderRadius.circular(dotSize / 2), + ), + ); + }); + }(), + ], + ), ), - ), ], ), ), @@ -1566,7 +1571,10 @@ class _DiscoverScreenState extends State ], ), ), - ] else if (shouldHideSpoiler && isEpisode && heroItem.parentIndex != null && heroItem.index != null) ...[ + ] else if (shouldHideSpoiler && + isEpisode && + heroItem.parentIndex != null && + heroItem.index != null) ...[ const SizedBox(height: 12), Text( 'S${heroItem.parentIndex}, E${heroItem.index}: ${heroItem.title}', diff --git a/lib/screens/downloads/downloads_screen.dart b/lib/screens/downloads/downloads_screen.dart index adfcc284..1d68f30e 100644 --- a/lib/screens/downloads/downloads_screen.dart +++ b/lib/screens/downloads/downloads_screen.dart @@ -158,7 +158,8 @@ class DownloadsScreenState extends State with TickerProviderSta FocusableAction( icon: Symbols.sync_rounded, tooltip: t.downloads.activeSyncRules, - onPressed: () => Navigator.push(context, MaterialPageRoute(builder: (_) => const SyncRulesScreen())), + onPressed: () => + Navigator.push(context, MaterialPageRoute(builder: (_) => const SyncRulesScreen())), ), ], ), @@ -344,4 +345,3 @@ class _DownloadsGridContentState extends State<_DownloadsGridContent> { ); } } - diff --git a/lib/screens/downloads/sync_rules_screen.dart b/lib/screens/downloads/sync_rules_screen.dart index d18cf39c..12f0af0e 100644 --- a/lib/screens/downloads/sync_rules_screen.dart +++ b/lib/screens/downloads/sync_rules_screen.dart @@ -24,27 +24,20 @@ class SyncRulesScreen extends StatelessWidget { slivers: [ if (syncRules.isEmpty) SliverFillRemaining( - child: EmptyStateWidget( - message: t.downloads.noSyncRules, - icon: Symbols.sync_rounded, - iconSize: 80, - ), + child: EmptyStateWidget(message: t.downloads.noSyncRules, icon: Symbols.sync_rounded, iconSize: 80), ) else SliverList( - delegate: SliverChildBuilderDelegate( - (context, index) { - final entry = syncRules.entries.elementAt(index); - final rule = entry.value; - return _SyncRuleTile( - rule: rule, - metadata: downloadProvider.metadata, - downloadProvider: downloadProvider, - autofocus: index == 0, - ); - }, - childCount: syncRules.length, - ), + delegate: SliverChildBuilderDelegate((context, index) { + final entry = syncRules.entries.elementAt(index); + final rule = entry.value; + return _SyncRuleTile( + rule: rule, + metadata: downloadProvider.metadata, + downloadProvider: downloadProvider, + autofocus: index == 0, + ); + }, childCount: syncRules.length), ), ], ); diff --git a/lib/screens/hub_detail_screen.dart b/lib/screens/hub_detail_screen.dart index f893168d..30f6eeaf 100644 --- a/lib/screens/hub_detail_screen.dart +++ b/lib/screens/hub_detail_screen.dart @@ -54,11 +54,7 @@ class _HubDetailScreenState extends State @override List getAppBarActions() { return [ - FocusableAction( - icon: Symbols.swap_vert_rounded, - tooltip: t.libraries.sort, - onPressed: _showSortBottomSheet, - ), + FocusableAction(icon: Symbols.swap_vert_rounded, tooltip: t.libraries.sort, onPressed: _showSortBottomSheet), ]; } @@ -67,8 +63,9 @@ class _HubDetailScreenState extends State void navigateToGrid() { if (!hasItems) return; - final targetIndex = - shouldRestoreGridFocus && lastFocusedGridIndex! < _filteredItems.length ? lastFocusedGridIndex! : 0; + final targetIndex = shouldRestoreGridFocus && lastFocusedGridIndex! < _filteredItems.length + ? lastFocusedGridIndex! + : 0; setState(() { isAppBarFocused = false; @@ -304,11 +301,7 @@ class _HubDetailScreenState extends State controller: scrollController, clipBehavior: Clip.none, slivers: [ - CustomAppBar( - title: Text(widget.hub.title), - pinned: true, - actions: buildFocusableAppBarActions(), - ), + CustomAppBar(title: Text(widget.hub.title), pinned: true, actions: buildFocusableAppBarActions()), if (_errorMessage != null) SliverFillRemaining( child: ErrorStateWidget( @@ -390,28 +383,25 @@ class _HubDetailScreenState extends State horizontalPadding: 16, useWideAspectRatio: useWideLayout, ), - delegate: SliverChildBuilderDelegate( - (context, index) { - final item = _filteredItems[index]; - final focusNode = index == 0 - ? firstItemFocusNode - : getGridItemFocusNode(index, prefix: 'hub_detail_item'); - final isFirstRow = GridSizeCalculator.isFirstRow(index, columnCount); - final isFirstColumn = GridSizeCalculator.isFirstColumn(index, columnCount); + delegate: SliverChildBuilderDelegate((context, index) { + final item = _filteredItems[index]; + final focusNode = index == 0 + ? firstItemFocusNode + : getGridItemFocusNode(index, prefix: 'hub_detail_item'); + final isFirstRow = GridSizeCalculator.isFirstRow(index, columnCount); + final isFirstColumn = GridSizeCalculator.isFirstColumn(index, columnCount); - return FocusableMediaCard( - focusNode: focusNode, - item: item, - onRefresh: _handleItemRefresh, - onNavigateUp: isFirstRow ? navigateToAppBar : null, - onNavigateLeft: isFirstColumn ? () {} : null, - onBack: handleBackFromContent, - onFocusChange: (hasFocus) => trackGridItemFocus(index, hasFocus), - mixedHubContext: isMixedHub, - ); - }, - childCount: _filteredItems.length, - ), + return FocusableMediaCard( + focusNode: focusNode, + item: item, + onRefresh: _handleItemRefresh, + onNavigateUp: isFirstRow ? navigateToAppBar : null, + onNavigateLeft: isFirstColumn ? () {} : null, + onBack: handleBackFromContent, + onFocusChange: (hasFocus) => trackGridItemFocus(index, hasFocus), + mixedHubContext: isMixedHub, + ); + }, childCount: _filteredItems.length), ); }, ), diff --git a/lib/screens/libraries/adaptive_media_grid.dart b/lib/screens/libraries/adaptive_media_grid.dart index fe778e02..eaf6a951 100644 --- a/lib/screens/libraries/adaptive_media_grid.dart +++ b/lib/screens/libraries/adaptive_media_grid.dart @@ -20,7 +20,12 @@ class GridItemContext { /// Callback to navigate to the sidebar (for first-column items). final VoidCallback? navigateToSidebar; - const GridItemContext({required this.isFirstRow, required this.isFirstColumn, this.isListMode = false, this.navigateToSidebar}); + const GridItemContext({ + required this.isFirstRow, + required this.isFirstColumn, + this.isListMode = false, + this.navigateToSidebar, + }); } /// A widget that automatically switches between grid and list view diff --git a/lib/screens/libraries/folder_tree_item.dart b/lib/screens/libraries/folder_tree_item.dart index 62066fe0..5a970ce4 100644 --- a/lib/screens/libraries/folder_tree_item.dart +++ b/lib/screens/libraries/folder_tree_item.dart @@ -123,12 +123,7 @@ class FolderTreeItem extends StatelessWidget { : AppIcon(expandIcon, fill: 1, size: 20), ), const SizedBox(width: 8), - AppIcon( - _getIcon(), - fill: 1, - size: 20, - color: Theme.of(context).colorScheme.primary, - ), + AppIcon(_getIcon(), fill: 1, size: 20, color: Theme.of(context).colorScheme.primary), const SizedBox(width: 12), Expanded( child: Text( @@ -234,7 +229,8 @@ class FolderTreeItem extends StatelessWidget { ) { final posterUrl = item.posterThumb(mode: episodePosterMode); final client = serverId != null ? context.getClientForServer(serverId!) : null; - final shouldBlur = hideSpoilers && item.shouldHideSpoiler && episodePosterMode == EpisodePosterMode.episodeThumbnail; + final shouldBlur = + hideSpoilers && item.shouldHideSpoiler && episodePosterMode == EpisodePosterMode.episodeThumbnail; Widget image; if (item.usesWideAspectRatio(episodePosterMode)) { @@ -265,10 +261,7 @@ class FolderTreeItem extends StatelessWidget { Widget _buildWatchOverlay(BuildContext context, bool showUnwatchedCount) { final hasActiveProgress = - item.viewOffset != null && - item.duration != null && - item.viewOffset! > 0 && - item.viewOffset! < item.duration!; + item.viewOffset != null && item.duration != null && item.viewOffset! > 0 && item.viewOffset! < item.duration!; return Stack( children: [ @@ -356,11 +349,7 @@ class FolderTreeItem extends StatelessWidget { useBackgroundFocus: true, disableScale: true, descendantsAreFocusable: false, - child: GestureDetector( - onTap: _handleTap, - behavior: HitTestBehavior.opaque, - child: rowContent, - ), + child: GestureDetector(onTap: _handleTap, behavior: HitTestBehavior.opaque, child: rowContent), ), ), diff --git a/lib/screens/libraries/folder_tree_view.dart b/lib/screens/libraries/folder_tree_view.dart index 9ae55832..ed19e8ed 100644 --- a/lib/screens/libraries/folder_tree_view.dart +++ b/lib/screens/libraries/folder_tree_view.dart @@ -159,7 +159,10 @@ class _FolderTreeViewState extends State { bool _isFolder(PlexMetadata item) { // Folders typically don't have a specific type or might have special indicators // Check for common folder indicators - return item.key?.contains('/folder') == true || item.type == null || item.type!.isEmpty || item.mediaType == PlexMediaType.unknown; + return item.key?.contains('/folder') == true || + item.type == null || + item.type!.isEmpty || + item.mediaType == PlexMediaType.unknown; } List _buildTreeItems(List items, int depth, [String parentPath = '']) { @@ -227,10 +230,7 @@ class _FolderTreeViewState extends State { return RefreshIndicator( onRefresh: _loadRootFolders, - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 8), - children: _buildTreeItems(_rootFolders, 0), - ), + child: ListView(padding: const EdgeInsets.symmetric(horizontal: 8), children: _buildTreeItems(_rootFolders, 0)), ); } } diff --git a/lib/screens/libraries/libraries_screen.dart b/lib/screens/libraries/libraries_screen.dart index a2b39c0e..ce7e583a 100644 --- a/lib/screens/libraries/libraries_screen.dart +++ b/lib/screens/libraries/libraries_screen.dart @@ -100,7 +100,6 @@ class _LibrariesScreenState extends State String? _selectedLibraryGlobalKey; bool _isInitialLoad = true; - /// Flag to prevent onTabChanged from focusing when we're programmatically changing tabs bool _isRestoringTab = false; @@ -317,7 +316,6 @@ class _LibrariesScreenState extends State _focusCurrentTab(); } - @override void dispose() { _outerScrollController.dispose(); @@ -338,9 +336,7 @@ class _LibrariesScreenState extends State if (listEquals(_visibleTabs, newTabs)) return; // Save current tab type before changing - final currentTabType = _visibleTabs.length > tabController.index - ? _visibleTabs[tabController.index] - : null; + final currentTabType = _visibleTabs.length > tabController.index ? _visibleTabs[tabController.index] : null; // Dispose old focus nodes and controller for (final node in _tabFocusNodes) { @@ -350,10 +346,7 @@ class _LibrariesScreenState extends State // Build new _visibleTabs = newTabs; - _tabFocusNodes = List.generate( - newTabs.length, - (i) => FocusNode(debugLabel: 'tab_chip_${newTabs[i].name}'), - ); + _tabFocusNodes = List.generate(newTabs.length, (i) => FocusNode(debugLabel: 'tab_chip_${newTabs[i].name}')); initTabNavigation(); // Restore tab position: find current tab type in new set, default to first @@ -370,7 +363,12 @@ class _LibrariesScreenState extends State LibraryTabType.playlists => t.libraries.tabs.playlists, }; - Widget _buildTabContent(LibraryTabType type, {required PlexLibrary library, required bool isActive, required int tabIndex}) { + Widget _buildTabContent( + LibraryTabType type, { + required PlexLibrary library, + required bool isActive, + required int tabIndex, + }) { return switch (type) { LibraryTabType.recommended => LibraryRecommendedTab( key: _recommendedTabKey, @@ -481,7 +479,6 @@ class _LibrariesScreenState extends State _focusCurrentTab(); } }); - } @override @@ -605,10 +602,7 @@ class _LibrariesScreenState extends State FocusableButton( autofocus: true, onPressed: () => Navigator.pop(context, false), - child: TextButton( - onPressed: () => Navigator.pop(context, false), - child: Text(t.common.cancel), - ), + child: TextButton(onPressed: () => Navigator.pop(context, false), child: Text(t.common.cancel)), ), FocusableButton( onPressed: () => Navigator.pop(context, true), @@ -834,9 +828,8 @@ class _LibrariesScreenState extends State } Widget _buildLibraryDropdownTitle(List visibleLibraries) { - final selectedLibrary = visibleLibraries - .where((lib) => lib.globalKey == _selectedLibraryGlobalKey) - .firstOrNull ?? + final selectedLibrary = + visibleLibraries.where((lib) => lib.globalKey == _selectedLibraryGlobalKey).firstOrNull ?? visibleLibraries.firstOrNull; if (selectedLibrary == null) return Text(t.libraries.title); @@ -900,115 +893,116 @@ class _LibrariesScreenState extends State return Scaffold( body: ScrollConfiguration( - behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), - child: CustomScrollView( - controller: _outerScrollController, - slivers: [ - DesktopSliverAppBar( - title: _buildAppBarTitle(visibleLibraries), - pinned: true, - backgroundColor: Theme.of(context).scaffoldBackgroundColor, - surfaceTintColor: Colors.transparent, - shadowColor: Colors.transparent, - scrolledUnderElevation: 0, - actions: [ - FocusableActionBar( - key: _actionBarKey, - onNavigateLeft: () => getTabChipFocusNode(_visibleTabs.length - 1).requestFocus(), - onNavigateDown: _focusCurrentTab, - actions: [ - if (allLibraries.isNotEmpty) - FocusableAction( - icon: Symbols.edit_rounded, - tooltip: t.libraries.manageLibraries, - onPressed: _showLibraryManagementSheet, - ), + behavior: ScrollConfiguration.of(context).copyWith(scrollbars: false), + child: CustomScrollView( + controller: _outerScrollController, + slivers: [ + DesktopSliverAppBar( + title: _buildAppBarTitle(visibleLibraries), + pinned: true, + backgroundColor: Theme.of(context).scaffoldBackgroundColor, + surfaceTintColor: Colors.transparent, + shadowColor: Colors.transparent, + scrolledUnderElevation: 0, + actions: [ + FocusableActionBar( + key: _actionBarKey, + onNavigateLeft: () => getTabChipFocusNode(_visibleTabs.length - 1).requestFocus(), + onNavigateDown: _focusCurrentTab, + actions: [ + if (allLibraries.isNotEmpty) FocusableAction( - icon: Symbols.refresh_rounded, - tooltip: t.common.refresh, - onPressed: _refreshCurrentTab, + icon: Symbols.edit_rounded, + tooltip: t.libraries.manageLibraries, + onPressed: _showLibraryManagementSheet, ), - ], - ), - ], - ), - if (isLoadingLibraries) - const SliverFillRemaining(child: Center(child: CircularProgressIndicator())) - else if (_errorMessage != null && visibleLibraries.isEmpty) - SliverFillRemaining( - child: ErrorStateWidget( - message: _errorMessage!, - icon: Symbols.error_outline_rounded, - onRetry: () { - final librariesProvider = context.read(); - librariesProvider.refresh(); - }, - ), - ) - else if (visibleLibraries.isEmpty) - SliverFillRemaining( - child: EmptyStateWidget(message: t.libraries.noLibrariesFound, icon: Symbols.video_library_rounded), - ) - else ...[ - // Tab selector chips (only on mobile - desktop has them in app bar) - if (selectedLibrary != null && !PlatformDetector.shouldUseSideNavigation(context)) - SliverToBoxAdapter( - child: Container( - padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - child: SingleChildScrollView( - scrollDirection: Axis.horizontal, - child: Row( - children: [ - for (int i = 0; i < _visibleTabs.length; i++) ...[ - if (i > 0) const SizedBox(width: 8), - buildTabChip( - _getTabLabel(_visibleTabs[i]), - i, - onSelectWhenActive: _focusCurrentTab, - onNavigateDown: _focusCurrentTabFromTabBar, - onNavigateRightFromLast: () => _actionBarKey.currentState?.requestFocusOnFirst(), + FocusableAction( + icon: Symbols.refresh_rounded, + tooltip: t.common.refresh, + onPressed: _refreshCurrentTab, + ), + ], + ), + ], ), - ], + if (isLoadingLibraries) + const SliverFillRemaining(child: Center(child: CircularProgressIndicator())) + else if (_errorMessage != null && visibleLibraries.isEmpty) + SliverFillRemaining( + child: ErrorStateWidget( + message: _errorMessage!, + icon: Symbols.error_outline_rounded, + onRetry: () { + final librariesProvider = context.read(); + librariesProvider.refresh(); + }, + ), + ) + else if (visibleLibraries.isEmpty) + SliverFillRemaining( + child: EmptyStateWidget(message: t.libraries.noLibrariesFound, icon: Symbols.video_library_rounded), + ) + else ...[ + // Tab selector chips (only on mobile - desktop has them in app bar) + if (selectedLibrary != null && !PlatformDetector.shouldUseSideNavigation(context)) + SliverToBoxAdapter( + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + for (int i = 0; i < _visibleTabs.length; i++) ...[ + if (i > 0) const SizedBox(width: 8), + buildTabChip( + _getTabLabel(_visibleTabs[i]), + i, + onSelectWhenActive: _focusCurrentTab, + onNavigateDown: _focusCurrentTabFromTabBar, + onNavigateRightFromLast: () => _actionBarKey.currentState?.requestFocusOnFirst(), + ), ], - ), + ], ), ), ), + ), - // Tab content - if (selectedLibrary != null) - SliverFillRemaining( - child: TabBarView( - key: ValueKey(_selectedLibraryGlobalKey), - controller: tabController, - // Disable swipe on desktop - trackpad scrolling triggers accidental tab switches - // See: https://github.com/flutter/flutter/issues/11132 - physics: PlatformDetector.isDesktop(context) ? const NeverScrollableScrollPhysics() : null, - // Wrap each tab in ClipRect so horizontal overflow (e.g. hub rows - // with Clip.none) doesn't bleed into adjacent tabs during swipe transitions. - // The TabBarView's own clipBehavior only clips at the viewport level, - // not per-page, so we need per-child clipping. - children: [ - for (int i = 0; i < _visibleTabs.length; i++) - ClipRect(child: _buildTabContent( + // Tab content + if (selectedLibrary != null) + SliverFillRemaining( + child: TabBarView( + key: ValueKey(_selectedLibraryGlobalKey), + controller: tabController, + // Disable swipe on desktop - trackpad scrolling triggers accidental tab switches + // See: https://github.com/flutter/flutter/issues/11132 + physics: PlatformDetector.isDesktop(context) ? const NeverScrollableScrollPhysics() : null, + // Wrap each tab in ClipRect so horizontal overflow (e.g. hub rows + // with Clip.none) doesn't bleed into adjacent tabs during swipe transitions. + // The TabBarView's own clipBehavior only clips at the viewport level, + // not per-page, so we need per-child clipping. + children: [ + for (int i = 0; i < _visibleTabs.length; i++) + ClipRect( + child: _buildTabContent( _visibleTabs[i], library: selectedLibrary, isActive: tabController.index == i, tabIndex: i, - )), - ], - ), + ), + ), + ], ), - ], + ), ], - ), + ], ), + ), ); } } class _LibraryManagementSheet extends StatefulWidget { - final bool isDialog; final List allLibraries; final Set hiddenLibraryKeys; diff --git a/lib/screens/libraries/sort_bottom_sheet.dart b/lib/screens/libraries/sort_bottom_sheet.dart index 05ead5f7..97a87d26 100644 --- a/lib/screens/libraries/sort_bottom_sheet.dart +++ b/lib/screens/libraries/sort_bottom_sheet.dart @@ -146,24 +146,27 @@ class _SortBottomSheetState extends State { title: Text(sort.title), value: sort, secondary: isSelected - ? SegmentedButton( - showSelectedIcon: false, - segments: const [ - ButtonSegment(value: false, icon: AppIcon(Symbols.arrow_upward_rounded, fill: 1, size: 16)), - ButtonSegment( - value: true, - icon: AppIcon(Symbols.arrow_downward_rounded, fill: 1, size: 16), - ), - ], - selected: {_currentDescending}, - onSelectionChanged: (Set newSelection) { - _handleDirectionChange(sort, newSelection.first); - }, - ) - : null, - ), - ); - }, + ? SegmentedButton( + showSelectedIcon: false, + segments: const [ + ButtonSegment( + value: false, + icon: AppIcon(Symbols.arrow_upward_rounded, fill: 1, size: 16), + ), + ButtonSegment( + value: true, + icon: AppIcon(Symbols.arrow_downward_rounded, fill: 1, size: 16), + ), + ], + selected: {_currentDescending}, + onSelectionChanged: (Set newSelection) { + _handleDirectionChange(sort, newSelection.first); + }, + ) + : null, + ), + ); + }, ), ), ), diff --git a/lib/screens/libraries/tabs/library_browse_tab.dart b/lib/screens/libraries/tabs/library_browse_tab.dart index 5b73b92b..7e9044b2 100644 --- a/lib/screens/libraries/tabs/library_browse_tab.dart +++ b/lib/screens/libraries/tabs/library_browse_tab.dart @@ -643,52 +643,54 @@ class _LibraryBrowseTabState extends BaseLibraryTabState( - showDragHandle: true, - builder: (sheetContext) => Column( - mainAxisSize: MainAxisSize.min, - children: [ - Padding( - padding: const EdgeInsets.fromLTRB(16, 4, 16, 8), - child: Text( - t.libraries.groupings.title, - style: Theme.of(sheetContext).textTheme.titleMedium, - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ), - Flexible( - child: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: options.map((grouping) { - final isSelected = _selectedGrouping == grouping; - return FocusableListTile( - dense: true, - leading: AppIcon( - isSelected ? Symbols.radio_button_checked_rounded : Symbols.radio_button_unchecked_rounded, - fill: 1, - ), - title: Text(_getGroupingLabel(grouping)), - onTap: () => controller.close(grouping), - ); - }).toList(), + controller + .show( + showDragHandle: true, + builder: (sheetContext) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.fromLTRB(16, 4, 16, 8), + child: Text( + t.libraries.groupings.title, + style: Theme.of(sheetContext).textTheme.titleMedium, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), ), - ), + Flexible( + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: options.map((grouping) { + final isSelected = _selectedGrouping == grouping; + return FocusableListTile( + dense: true, + leading: AppIcon( + isSelected ? Symbols.radio_button_checked_rounded : Symbols.radio_button_unchecked_rounded, + fill: 1, + ), + title: Text(_getGroupingLabel(grouping)), + onTap: () => controller.close(grouping), + ); + }).toList(), + ), + ), + ), + ], ), - ], - ), - ).then((value) { - if (!mounted || value == null || value == _selectedGrouping) return; - setState(() { - _selectedGrouping = value; - }); - StorageService.getInstance().then((storage) { - storage.saveLibraryGrouping(widget.library.globalKey, value); - }); - _loadItems(); - _loadFirstCharacters(); - }); + ) + .then((value) { + if (!mounted || value == null || value == _selectedGrouping) return; + setState(() { + _selectedGrouping = value; + }); + StorageService.getInstance().then((storage) { + storage.saveLibraryGrouping(widget.library.globalKey, value); + }); + _loadItems(); + _loadFirstCharacters(); + }); } void _showFiltersBottomSheet() { @@ -776,7 +778,10 @@ class _LibraryBrowseTabState extends BaseLibraryTabState(); final maxExtent = GridSizeCalculator.getMaxCrossAxisExtent(context, settingsProvider.libraryDensity); final crossAxisSpacing = GridLayoutConstants.crossAxisSpacing; - final columnCount = - ((screenSize.width + crossAxisSpacing) / (maxExtent + crossAxisSpacing)).ceil().clamp(1, 100); + final columnCount = ((screenSize.width + crossAxisSpacing) / (maxExtent + crossAxisSpacing)).ceil().clamp(1, 100); final itemWidth = screenSize.width / columnCount; final itemHeight = itemWidth / GridLayoutConstants.posterAspectRatio; final rowHeight = itemHeight + GridLayoutConstants.mainAxisSpacing; @@ -1551,10 +1555,7 @@ class _SkeletonCard extends StatelessWidget { FractionallySizedBox( alignment: Alignment.centerLeft, widthFactor: 0.6, - child: SkeletonLoader( - borderRadius: BorderRadius.all(Radius.circular(4)), - child: SizedBox(height: 11), - ), + child: SkeletonLoader(borderRadius: BorderRadius.all(Radius.circular(4)), child: SizedBox(height: 11)), ), ], ), diff --git a/lib/screens/livetv/live_tv_screen.dart b/lib/screens/livetv/live_tv_screen.dart index 10bef130..99850764 100644 --- a/lib/screens/livetv/live_tv_screen.dart +++ b/lib/screens/livetv/live_tv_screen.dart @@ -47,6 +47,7 @@ class _LiveTvScreenState extends State bool _showFavoritesOnly = false; Set _favoriteChannelIds = {}; List _favoriteChannels = []; + /// Source URI per server, built from machineIdentifier + EPG provider identifier. final Map _favoriteSourceByServer = {}; @@ -79,7 +80,6 @@ class _LiveTvScreenState extends State super.dispose(); } - @override void onTabChanged() { if (!tabController.indexIsChanging) { @@ -306,7 +306,6 @@ class _LiveTvScreenState extends State @override void focusActiveTabIfReady() => _focusCurrentTab(); - // --------------------------------------------------------------------------- // Tab chips // --------------------------------------------------------------------------- @@ -363,11 +362,7 @@ class _LiveTvScreenState extends State tooltip: t.liveTv.reorderFavorites, onPressed: _showReorderFavorites, ), - FocusableAction( - icon: Symbols.refresh_rounded, - tooltip: t.liveTv.reloadGuide, - onPressed: _loadChannels, - ), + FocusableAction(icon: Symbols.refresh_rounded, tooltip: t.liveTv.reloadGuide, onPressed: _loadChannels), ], ), ]), diff --git a/lib/screens/livetv/program_details_sheet.dart b/lib/screens/livetv/program_details_sheet.dart index 66d4db6c..4730d052 100644 --- a/lib/screens/livetv/program_details_sheet.dart +++ b/lib/screens/livetv/program_details_sheet.dart @@ -158,13 +158,15 @@ class _ProgramDetailsSheetContentState extends State<_ProgramDetailsSheetContent if (widget.posterUrl != null) ...[ ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(6)), - child: blurArtwork(Image.network( - widget.posterUrl!, - width: 80, - height: 120, - fit: BoxFit.cover, - errorBuilder: (_, _, _) => const SizedBox.shrink(), - )), + child: blurArtwork( + Image.network( + widget.posterUrl!, + width: 80, + height: 120, + fit: BoxFit.cover, + errorBuilder: (_, _, _) => const SizedBox.shrink(), + ), + ), ), const SizedBox(width: 14), ], diff --git a/lib/screens/livetv/reorder_favorites_sheet.dart b/lib/screens/livetv/reorder_favorites_sheet.dart index a7e85854..82214f8d 100644 --- a/lib/screens/livetv/reorder_favorites_sheet.dart +++ b/lib/screens/livetv/reorder_favorites_sheet.dart @@ -225,10 +225,7 @@ class _ReorderFavoritesSheetState extends State { return Column( mainAxisSize: MainAxisSize.min, children: [ - BottomSheetHeader( - title: t.liveTv.reorderFavorites, - icon: Symbols.swap_vert_rounded, - ), + BottomSheetHeader(title: t.liveTv.reorderFavorites, icon: Symbols.swap_vert_rounded), Expanded( child: Focus( focusNode: _listFocusNode, @@ -314,9 +311,7 @@ class _ReorderFavoritesSheetState extends State { height: 40, fit: BoxFit.contain, ) - : Center( - child: AppIcon(Symbols.live_tv_rounded, fill: 1, color: colorScheme.onSurfaceVariant), - ), + : Center(child: AppIcon(Symbols.live_tv_rounded, fill: 1, color: colorScheme.onSurfaceVariant)), ), ], ), @@ -331,10 +326,7 @@ class _ReorderFavoritesSheetState extends State { ) : null, trailing: Container( - decoration: FocusTheme.focusBackgroundDecoration( - isFocused: isRemoveButtonFocused, - borderRadius: 20, - ), + decoration: FocusTheme.focusBackgroundDecoration(isFocused: isRemoveButtonFocused, borderRadius: 20), child: IconButton( icon: const AppIcon(Symbols.close_rounded, fill: 1, size: 20), onPressed: () => _removeItem(index), diff --git a/lib/screens/livetv/tabs/guide_tab.dart b/lib/screens/livetv/tabs/guide_tab.dart index 7b70457d..5c1ce2fb 100644 --- a/lib/screens/livetv/tabs/guide_tab.dart +++ b/lib/screens/livetv/tabs/guide_tab.dart @@ -1069,9 +1069,7 @@ class GuideTabState extends State { listenable: _gridHorizontalController, builder: (context, _) { const basePadding = 6.0; - final scrollOffset = _gridHorizontalController.hasClients - ? _gridHorizontalController.offset - : 0.0; + final scrollOffset = _gridHorizontalController.hasClients ? _gridHorizontalController.offset : 0.0; final maxInset = (tileWidth - 2 * basePadding - 20).clamp(0.0, double.infinity); final leftInset = (scrollOffset - tileLeft).clamp(0.0, maxInset); return Container( @@ -1083,10 +1081,7 @@ class GuideTabState extends State { children: [ Text( program.grandparentTitle ?? program.title, - style: theme.textTheme.bodyMedium?.copyWith( - fontWeight: FontWeight.w600, - color: titleColor, - ), + style: theme.textTheme.bodyMedium?.copyWith(fontWeight: FontWeight.w600, color: titleColor), maxLines: 1, overflow: TextOverflow.ellipsis, ), @@ -1191,43 +1186,43 @@ class _ChannelCellState extends State<_ChannelCell> { onTap: widget.onTap, onLongPress: widget.onLongPress, child: Container( - height: widget.rowHeight, - padding: const EdgeInsets.symmetric(horizontal: 8), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide(color: theme.dividerColor.withValues(alpha: 0.3)), - right: BorderSide(color: theme.dividerColor.withValues(alpha: 0.3)), - ), - ), - child: Stack( - alignment: Alignment.center, - children: [ - AnimatedOpacity( - opacity: showAction ? 0.3 : 1.0, - duration: const Duration(milliseconds: 150), - child: widget.channelThumb != null && widget.client != null - ? PlexOptimizedImage.thumb( - client: widget.client!, - imagePath: widget.channelThumb, - width: widget.channelColumnWidth - 16, - height: widget.rowHeight - 16, - fit: BoxFit.contain, - ) - : widget.fallbackBuilder(), + height: widget.rowHeight, + padding: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide(color: theme.dividerColor.withValues(alpha: 0.3)), + right: BorderSide(color: theme.dividerColor.withValues(alpha: 0.3)), ), - if (showAction) AppIcon(Symbols.play_arrow_rounded, size: 32, color: theme.colorScheme.onSurface), - if (widget.isFavorite) - Positioned( - top: 2, - right: 0, - child: AppIcon(Symbols.star_rounded, size: 14, color: theme.colorScheme.primary), + ), + child: Stack( + alignment: Alignment.center, + children: [ + AnimatedOpacity( + opacity: showAction ? 0.3 : 1.0, + duration: const Duration(milliseconds: 150), + child: widget.channelThumb != null && widget.client != null + ? PlexOptimizedImage.thumb( + client: widget.client!, + imagePath: widget.channelThumb, + width: widget.channelColumnWidth - 16, + height: widget.rowHeight - 16, + fit: BoxFit.contain, + ) + : widget.fallbackBuilder(), ), - ], + if (showAction) AppIcon(Symbols.play_arrow_rounded, size: 32, color: theme.colorScheme.onSurface), + if (widget.isFavorite) + Positioned( + top: 2, + right: 0, + child: AppIcon(Symbols.star_rounded, size: 14, color: theme.colorScheme.primary), + ), + ], + ), ), ), ), ), - ), ); } } diff --git a/lib/screens/livetv/tabs/whats_on_tab.dart b/lib/screens/livetv/tabs/whats_on_tab.dart index 26a96d53..dac3447e 100644 --- a/lib/screens/livetv/tabs/whats_on_tab.dart +++ b/lib/screens/livetv/tabs/whats_on_tab.dart @@ -500,7 +500,11 @@ class _LiveTvHubSectionState extends State<_LiveTvHubSection> { onKeyEvent: _handleKeyEvent, child: LayoutBuilder( builder: (context, constraints) { - final cardWidth = GridSizeCalculator.getCellWidth(constraints.maxWidth, context, settings.libraryDensity); + final cardWidth = GridSizeCalculator.getCellWidth( + constraints.maxWidth, + context, + settings.libraryDensity, + ); final posterWidth = cardWidth - 16; final posterHeight = posterWidth * 1.5; // 2:3 aspect final containerHeight = posterHeight + 66; diff --git a/lib/screens/media_detail_screen.dart b/lib/screens/media_detail_screen.dart index 94f59cfe..a8cb6a68 100644 --- a/lib/screens/media_detail_screen.dart +++ b/lib/screens/media_detail_screen.dart @@ -120,7 +120,6 @@ class _MediaDetailScreenState extends State // Context menu key for the three-dots button final _contextMenuKey = GlobalKey(); - // Locked focus pattern for extras int _focusedExtraIndex = 0; late final FocusNode _extrasFocusNode; @@ -1039,10 +1038,7 @@ class _MediaDetailScreenState extends State duration: const Duration(milliseconds: 150), curve: Curves.easeOutCubic, padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6), - decoration: BoxDecoration( - color: bgColor, - borderRadius: const BorderRadius.all(Radius.circular(100)), - ), + decoration: BoxDecoration(color: bgColor, borderRadius: const BorderRadius.all(Radius.circular(100))), child: Row( mainAxisSize: MainAxisSize.min, children: [ @@ -1055,11 +1051,7 @@ class _MediaDetailScreenState extends State const SizedBox(width: 4), Text( hasRating ? formatRating(starValue) : t.mediaMenu.rate, - style: TextStyle( - color: fgColor, - fontSize: 13, - fontWeight: FontWeight.w500, - ), + style: TextStyle(color: fgColor, fontSize: 13, fontWeight: FontWeight.w500), ), ], ), @@ -1158,12 +1150,7 @@ class _MediaDetailScreenState extends State PlexMetadata metadata, PlexClient client, ) { - return resolveDownloadVersion( - context, - metadata, - client, - fallbackVersions: _fullMetadata?.mediaVersions, - ); + return resolveDownloadVersion(context, metadata, client, fallbackVersions: _fullMetadata?.mediaVersions); } /// Shows actions for a synced item: edit count, remove rule, delete downloads. @@ -1484,10 +1471,7 @@ class _MediaDetailScreenState extends State for (final node in _seasonTabFocusNodes) { node.dispose(); } - _seasonTabFocusNodes = List.generate( - count, - (i) => FocusNode(debugLabel: 'season_tab_$i'), - ); + _seasonTabFocusNodes = List.generate(count, (i) => FocusNode(debugLabel: 'season_tab_$i')); _seasonContextMenuKeys.clear(); } } @@ -1812,10 +1796,7 @@ class _MediaDetailScreenState extends State child: Row( children: List.generate(_seasons.length, (index) { final season = _seasons[index]; - final contextMenuKey = _seasonContextMenuKeys.putIfAbsent( - index, - () => GlobalKey(), - ); + final contextMenuKey = _seasonContextMenuKeys.putIfAbsent(index, () => GlobalKey()); Offset? tapPosition; return Padding( padding: const EdgeInsets.only(right: 8), @@ -1925,7 +1906,12 @@ class _MediaDetailScreenState extends State if (key.isLeftKey) { if (_focusedExtraIndex > 0) { setState(() => _focusedExtraIndex--); - scrollListToIndex(_extrasScrollController, _focusedExtraIndex, itemExtent: _getResponsiveCardWidth() + 4, leadingPadding: 0); + scrollListToIndex( + _extrasScrollController, + _focusedExtraIndex, + itemExtent: _getResponsiveCardWidth() + 4, + leadingPadding: 0, + ); } return KeyEventResult.handled; } @@ -1934,7 +1920,12 @@ class _MediaDetailScreenState extends State if (key.isRightKey) { if (_focusedExtraIndex < _extras!.length - 1) { setState(() => _focusedExtraIndex++); - scrollListToIndex(_extrasScrollController, _focusedExtraIndex, itemExtent: _getResponsiveCardWidth() + 4, leadingPadding: 0); + scrollListToIndex( + _extrasScrollController, + _focusedExtraIndex, + itemExtent: _getResponsiveCardWidth() + 4, + leadingPadding: 0, + ); } return KeyEventResult.handled; } @@ -1970,7 +1961,12 @@ class _MediaDetailScreenState extends State if (key.isLeftKey) { if (_focusedCastIndex > 0) { setState(() => _focusedCastIndex--); - scrollListToIndex(_castScrollController, _focusedCastIndex, itemExtent: _getResponsiveCardWidth() + 6 + 4, leadingPadding: 0); + scrollListToIndex( + _castScrollController, + _focusedCastIndex, + itemExtent: _getResponsiveCardWidth() + 6 + 4, + leadingPadding: 0, + ); } return KeyEventResult.handled; } @@ -1979,7 +1975,12 @@ class _MediaDetailScreenState extends State if (key.isRightKey) { if (_focusedCastIndex < roleCount - 1) { setState(() => _focusedCastIndex++); - scrollListToIndex(_castScrollController, _focusedCastIndex, itemExtent: _getResponsiveCardWidth() + 6 + 4, leadingPadding: 0); + scrollListToIndex( + _castScrollController, + _focusedCastIndex, + itemExtent: _getResponsiveCardWidth() + 6 + 4, + leadingPadding: 0, + ); } return KeyEventResult.handled; } @@ -2092,8 +2093,8 @@ class _MediaDetailScreenState extends State focusNode: index == 0 ? _firstEpisodeFocusNode : index == _episodes.length - 1 && _episodes.length > 1 - ? _lastEpisodeFocusNode - : null, + ? _lastEpisodeFocusNode + : null, onNavigateUp: index == 0 ? () { if (!_showEpisodesDirectly) { @@ -2102,8 +2103,7 @@ class _MediaDetailScreenState extends State _overviewFocusNode.requestFocus(); _scrollSectionIntoView(_overviewSectionKey); } else { - _scrollController.animateTo(0, - duration: const Duration(milliseconds: 200), curve: Curves.easeOut); + _scrollController.animateTo(0, duration: const Duration(milliseconds: 200), curve: Curves.easeOut); _playButtonFocusNode.requestFocus(); } } @@ -2174,9 +2174,7 @@ class _MediaDetailScreenState extends State if (client == null) return; setStateIfMounted(() => _isLoadingEpisodes = true); try { - final episodeLists = await Future.wait( - _seasons.map((season) => client.getChildren(season.ratingKey)), - ); + final episodeLists = await Future.wait(_seasons.map((season) => client.getChildren(season.ratingKey))); setStateIfMounted(() { _episodes = episodeLists.expand((e) => e).toList(); _isLoadingEpisodes = false; @@ -2199,7 +2197,6 @@ class _MediaDetailScreenState extends State } } - /// Offline: update viewCount in the API cache and re-read metadata from it. Future _updateWatchStateOffline() async { final serverId = widget.metadata.serverId; @@ -2223,14 +2220,15 @@ class _MediaDetailScreenState extends State } await cache.put(serverId, endpoint, { - 'MediaContainer': {'Metadata': [json]}, + 'MediaContainer': { + 'Metadata': [json], + }, }); setStateIfMounted(() { - _fullMetadata = PlexMetadata.fromJsonWithImages(json).copyWith( - serverId: widget.metadata.serverId, - serverName: widget.metadata.serverName, - ); + _fullMetadata = PlexMetadata.fromJsonWithImages( + json, + ).copyWith(serverId: widget.metadata.serverId, serverName: widget.metadata.serverName); }); } @@ -3119,4 +3117,3 @@ class _MediaDetailScreenState extends State return Symbols.play_arrow_rounded; // Default play icon } } - diff --git a/lib/screens/metadata_edit_screen.dart b/lib/screens/metadata_edit_screen.dart index bd68b1af..0d984326 100644 --- a/lib/screens/metadata_edit_screen.dart +++ b/lib/screens/metadata_edit_screen.dart @@ -57,11 +57,9 @@ class _MetadataEditScreenState extends State { // Advanced prefs (loaded from metadata JSON) final Map _currentPrefs = {}; - static bool _tagsEqual(List a, List b) => - a.length == b.length && a.every((e) => b.contains(e)); + static bool _tagsEqual(List a, List b) => a.length == b.length && a.every((e) => b.contains(e)); - bool get _hasTagChanges => _tags.keys.any( - (k) => !_tagsEqual(_tags[k] ?? [], _origTags[k] ?? [])); + bool get _hasTagChanges => _tags.keys.any((k) => !_tagsEqual(_tags[k] ?? [], _origTags[k] ?? [])); bool get _hasChanges => _title != _origTitle || @@ -202,12 +200,7 @@ class _MetadataEditScreenState extends State { }) async { final String? result; if (multiline) { - result = await showMultilineTextInputDialog( - context, - title: title, - labelText: label, - initialValue: currentValue, - ); + result = await showMultilineTextInputDialog(context, title: title, labelText: label, initialValue: currentValue); } else { result = await showTextInputDialog( context, @@ -249,11 +242,8 @@ class _MetadataEditScreenState extends State { Future _openArtworkPicker(String element) async { final result = await showDialog( context: context, - builder: (context) => ArtworkPickerDialog( - client: _client, - ratingKey: widget.metadata.ratingKey, - element: element, - ), + builder: (context) => + ArtworkPickerDialog(client: _client, ratingKey: widget.metadata.ratingKey, element: element), ); if (result == true && mounted) { @@ -303,10 +293,7 @@ class _MetadataEditScreenState extends State { child: ListView( shrinkWrap: true, children: options.map((option) { - return FocusableRadioListTile( - title: Text(option.label), - value: option.value, - ); + return FocusableRadioListTile(title: Text(option.label), value: option.value); }).toList(), ), ), @@ -315,10 +302,7 @@ class _MetadataEditScreenState extends State { FocusableButton( autofocus: true, onPressed: () => Navigator.pop(dialogContext), - child: TextButton( - onPressed: () => Navigator.pop(dialogContext), - child: Text(t.common.cancel), - ), + child: TextButton(onPressed: () => Navigator.pop(dialogContext), child: Text(t.common.cancel)), ), ], ); @@ -385,10 +369,7 @@ class _MetadataEditScreenState extends State { (key: 'label', label: t.metadataEdit.label), ]; case PlexMediaType.episode: - return [ - (key: 'director', label: t.metadataEdit.director), - (key: 'writer', label: t.metadataEdit.writer), - ]; + return [(key: 'director', label: t.metadataEdit.director), (key: 'writer', label: t.metadataEdit.writer)]; case PlexMediaType.artist: return [ (key: 'genre', label: t.metadataEdit.genre), @@ -412,10 +393,7 @@ class _MetadataEditScreenState extends State { Future _editTag(String key, String label) async { final result = await showDialog>( context: context, - builder: (context) => TagEditDialog( - title: label, - initialTags: _tags[key] ?? [], - ), + builder: (context) => TagEditDialog(title: label, initialTags: _tags[key] ?? []), ); if (result != null && mounted) { setState(() => _tags[key] = result); @@ -440,10 +418,7 @@ class _MetadataEditScreenState extends State { child: SizedBox(width: 24, height: 24, child: CircularProgressIndicator(strokeWidth: 2)), ) else - IconButton( - onPressed: _hasChanges ? _save : null, - icon: const AppIcon(Symbols.check_rounded, fill: 1), - ), + IconButton(onPressed: _hasChanges ? _save : null, icon: const AppIcon(Symbols.check_rounded, fill: 1)), ], slivers: [ SliverPadding( @@ -451,16 +426,10 @@ class _MetadataEditScreenState extends State { sliver: SliverList( delegate: SliverChildListDelegate([ _buildBasicInfoCard(), - if (_tagFields.isNotEmpty) ...[ - const SizedBox(height: 16), - _buildTagsCard(), - ], + if (_tagFields.isNotEmpty) ...[const SizedBox(height: 16), _buildTagsCard()], const SizedBox(height: 16), _buildArtworkCard(), - if (_showAdvanced) ...[ - const SizedBox(height: 16), - _buildAdvancedSettingsCard(), - ], + if (_showAdvanced) ...[const SizedBox(height: 16), _buildAdvancedSettingsCard()], ]), ), ), @@ -513,11 +482,7 @@ class _MetadataEditScreenState extends State { ), ), if (_showReleaseDate) - _buildFieldTile( - label: t.metadataEdit.releaseDate, - value: _originallyAvailableAt, - onTap: _editDate, - ), + _buildFieldTile(label: t.metadataEdit.releaseDate, value: _originallyAvailableAt, onTap: _editDate), if (_showContentRating) _buildFieldTile( label: t.metadataEdit.contentRating, @@ -577,7 +542,9 @@ class _MetadataEditScreenState extends State { displayValue, maxLines: 2, overflow: TextOverflow.ellipsis, - style: isNotSet ? TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant.withValues(alpha: 0.5)) : null, + style: isNotSet + ? TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant.withValues(alpha: 0.5)) + : null, ), trailing: const AppIcon(Symbols.chevron_right_rounded), onTap: onTap, @@ -622,13 +589,7 @@ class _MetadataEditScreenState extends State { height: height, child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(4)), - child: PlexOptimizedImage( - client: _client, - imagePath: imagePath, - width: width, - height: height, - fit: fit, - ), + child: PlexOptimizedImage(client: _client, imagePath: imagePath, width: width, height: height, fit: fit), ), ), title: Text(label), @@ -651,13 +612,38 @@ class _MetadataEditScreenState extends State { style: Theme.of(context).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.bold), ), ), - _buildArtworkTile(width: 40, height: 60, imagePath: meta.thumb, label: t.metadataEdit.poster, element: 'posters'), + _buildArtworkTile( + width: 40, + height: 60, + imagePath: meta.thumb, + label: t.metadataEdit.poster, + element: 'posters', + ), if (_showBackground) - _buildArtworkTile(width: 80, height: 45, imagePath: meta.art, label: t.metadataEdit.background, element: 'arts'), + _buildArtworkTile( + width: 80, + height: 45, + imagePath: meta.art, + label: t.metadataEdit.background, + element: 'arts', + ), if (_showExtendedArtwork) - _buildArtworkTile(width: 80, height: 32, imagePath: meta.clearLogo, label: t.metadataEdit.logo, element: 'clearLogos', fit: BoxFit.contain), + _buildArtworkTile( + width: 80, + height: 32, + imagePath: meta.clearLogo, + label: t.metadataEdit.logo, + element: 'clearLogos', + fit: BoxFit.contain, + ), if (_showExtendedArtwork) - _buildArtworkTile(width: 50, height: 50, imagePath: meta.backgroundSquare, label: t.metadataEdit.squareArt, element: 'squareArts'), + _buildArtworkTile( + width: 50, + height: 50, + imagePath: meta.backgroundSquare, + label: t.metadataEdit.squareArt, + element: 'squareArts', + ), ], ), ); @@ -836,22 +822,58 @@ class _MetadataEditScreenState extends State { // Plex locale codes for metadata agent language. const _plexLocaleCodes = [ - 'ar-SA', 'bg-BG', 'ca-ES', 'zh-CN', 'zh-HK', 'zh-TW', 'hr-HR', 'cs-CZ', - 'da-DK', 'nl-NL', 'en-US', 'en-AU', 'en-CA', 'en-GB', 'et-EE', 'fi-FI', - 'fr-FR', 'fr-CA', 'de-DE', 'el-GR', 'he-IL', 'hi-IN', 'hu-HU', 'is-IS', - 'id-ID', 'it-IT', 'ja-JP', 'ko-KR', 'lv-LV', 'lt-LT', 'nb-NO', 'fa-IR', - 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO', 'ru-RU', 'sk-SK', 'es-ES', 'es-MX', - 'sv-SE', 'th-TH', 'tr-TR', 'uk-UA', 'vi-VN', + 'ar-SA', + 'bg-BG', + 'ca-ES', + 'zh-CN', + 'zh-HK', + 'zh-TW', + 'hr-HR', + 'cs-CZ', + 'da-DK', + 'nl-NL', + 'en-US', + 'en-AU', + 'en-CA', + 'en-GB', + 'et-EE', + 'fi-FI', + 'fr-FR', + 'fr-CA', + 'de-DE', + 'el-GR', + 'he-IL', + 'hi-IN', + 'hu-HU', + 'is-IS', + 'id-ID', + 'it-IT', + 'ja-JP', + 'ko-KR', + 'lv-LV', + 'lt-LT', + 'nb-NO', + 'fa-IR', + 'pl-PL', + 'pt-BR', + 'pt-PT', + 'ro-RO', + 'ru-RU', + 'sk-SK', + 'es-ES', + 'es-MX', + 'sv-SE', + 'th-TH', + 'tr-TR', + 'uk-UA', + 'vi-VN', ]; // Common 2-letter codes shown at the top of audio/subtitle pickers. const _commonAudioSubtitleCodes = ['en', 'ja', 'fr', 'de', 'it', 'es', 'pt', 'ru', 'ar']; List<({String value, String label})> _buildLanguageOptions(String defaultLabel, List codes) { - return [ - (value: '', label: defaultLabel), - ...codes.map((c) => (value: c, label: LanguageCodes.getDisplayName(c))), - ]; + return [(value: '', label: defaultLabel), ...codes.map((c) => (value: c, label: LanguageCodes.getDisplayName(c)))]; } List<({String value, String label})> _metadataLanguageOptions(String defaultLabel) => diff --git a/lib/screens/playlist/playlist_detail_screen.dart b/lib/screens/playlist/playlist_detail_screen.dart index d6651b60..7d409fd4 100644 --- a/lib/screens/playlist/playlist_detail_screen.dart +++ b/lib/screens/playlist/playlist_detail_screen.dart @@ -64,7 +64,12 @@ class _PlaylistDetailScreenState extends BaseMediaListDetailScreen _buildPlaceholderAvatar(theme), - errorWidget: (ctx, url, error) => _buildPlaceholderAvatar(theme), - )), + child: blurArtwork( + CachedNetworkImage( + imageUrl: user.thumb, + width: size, + height: size, + fit: BoxFit.cover, + placeholder: (ctx, url) => _buildPlaceholderAvatar(theme), + errorWidget: (ctx, url, error) => _buildPlaceholderAvatar(theme), + ), + ), ), // Indicators (only show icon indicators when not using text labels) diff --git a/lib/screens/search_screen.dart b/lib/screens/search_screen.dart index f1f9ccdd..c4b3ed83 100644 --- a/lib/screens/search_screen.dart +++ b/lib/screens/search_screen.dart @@ -25,7 +25,8 @@ class SearchScreen extends StatefulWidget { State createState() => _SearchScreenState(); } -class _SearchScreenState extends State with Refreshable, FullRefreshable, SearchInputFocusable, FocusableTab { +class _SearchScreenState extends State + with Refreshable, FullRefreshable, SearchInputFocusable, FocusableTab { final _searchController = TextEditingController(); final _searchFocusNode = FocusNode(debugLabel: 'SearchInput'); final _firstResultFocusNode = FocusNode(debugLabel: 'SearchFirstResult'); diff --git a/lib/screens/settings/logs_screen.dart b/lib/screens/settings/logs_screen.dart index ae6d63a1..dfa99b9d 100644 --- a/lib/screens/settings/logs_screen.dart +++ b/lib/screens/settings/logs_screen.dart @@ -169,10 +169,7 @@ class _LogsScreenState extends State { FocusableButton( autofocus: true, onPressed: () => Navigator.of(ctx).pop(), - child: TextButton( - onPressed: () => Navigator.of(ctx).pop(), - child: Text(t.common.close), - ), + child: TextButton(onPressed: () => Navigator.of(ctx).pop(), child: Text(t.common.close)), ), ], ), @@ -213,39 +210,51 @@ class _LogsScreenState extends State { List _buildLogSpans() { final spans = []; if (_deviceInfo.isNotEmpty) { - spans.add(TextSpan( - text: '$_deviceInfo\n', - style: TextStyle(color: Colors.grey.withValues(alpha: 0.6)), - )); - spans.add(TextSpan( - text: '---\n', - style: TextStyle(color: Colors.grey.withValues(alpha: 0.3)), - )); + spans.add( + TextSpan( + text: '$_deviceInfo\n', + style: TextStyle(color: Colors.grey.withValues(alpha: 0.6)), + ), + ); + spans.add( + TextSpan( + text: '---\n', + style: TextStyle(color: Colors.grey.withValues(alpha: 0.3)), + ), + ); } for (var i = 0; i < _logs.length; i++) { if (i > 0) spans.add(const TextSpan(text: '\n')); final log = _logs[i]; final color = _getLevelColor(log.level); - spans.add(TextSpan( - text: '[${_formatTime(log.timestamp)}] ', - style: TextStyle(color: color.withValues(alpha: 0.6)), - )); - spans.add(TextSpan( - text: '[${log.level.name.toUpperCase()}] ', - style: TextStyle(color: color, fontWeight: FontWeight.bold), - )); + spans.add( + TextSpan( + text: '[${_formatTime(log.timestamp)}] ', + style: TextStyle(color: color.withValues(alpha: 0.6)), + ), + ); + spans.add( + TextSpan( + text: '[${log.level.name.toUpperCase()}] ', + style: TextStyle(color: color, fontWeight: FontWeight.bold), + ), + ); spans.add(TextSpan(text: log.message)); if (log.error != null) { - spans.add(TextSpan( - text: '\n Error: ${log.error}', - style: TextStyle(color: color), - )); + spans.add( + TextSpan( + text: '\n Error: ${log.error}', + style: TextStyle(color: color), + ), + ); } if (log.stackTrace != null) { - spans.add(TextSpan( - text: '\n ${log.stackTrace.toString().replaceAll('\n', '\n ')}', - style: TextStyle(color: Colors.grey.withValues(alpha: 0.7)), - )); + spans.add( + TextSpan( + text: '\n ${log.stackTrace.toString().replaceAll('\n', '\n ')}', + style: TextStyle(color: Colors.grey.withValues(alpha: 0.7)), + ), + ); } } return spans; @@ -282,11 +291,7 @@ class _LogsScreenState extends State { actions: [ FocusableActionBar( actions: [ - FocusableAction( - icon: Symbols.refresh_rounded, - tooltip: t.common.refresh, - onPressed: _loadLogs, - ), + FocusableAction(icon: Symbols.refresh_rounded, tooltip: t.common.refresh, onPressed: _loadLogs), FocusableAction( icon: Symbols.upload_rounded, tooltip: t.logs.uploadLogs, @@ -314,11 +319,7 @@ class _LogsScreenState extends State { sliver: SliverToBoxAdapter( child: SelectableText.rich( TextSpan( - style: theme.textTheme.bodySmall?.copyWith( - fontFamily: 'monospace', - fontSize: 12, - height: 1.5, - ), + style: theme.textTheme.bodySmall?.copyWith(fontFamily: 'monospace', fontSize: 12, height: 1.5), children: _buildLogSpans(), ), ), diff --git a/lib/screens/settings/mpv_config_screen.dart b/lib/screens/settings/mpv_config_screen.dart index 4d1c0024..e3d4e116 100644 --- a/lib/screens/settings/mpv_config_screen.dart +++ b/lib/screens/settings/mpv_config_screen.dart @@ -204,8 +204,7 @@ class _MpvConfigScreenState extends State { // We must consume Enter to prevent parent handlers from unfocusing, // but that also blocks Flutter's text editing shortcuts (which are // higher in the focus tree). So we manually insert newlines here. - if (event.logicalKey == LogicalKeyboardKey.enter || - event.logicalKey == LogicalKeyboardKey.numpadEnter) { + if (event.logicalKey == LogicalKeyboardKey.enter || event.logicalKey == LogicalKeyboardKey.numpadEnter) { if (event is KeyDownEvent || event is KeyRepeatEvent) { final sel = _textController.selection; if (sel.isValid) { @@ -224,8 +223,7 @@ class _MpvConfigScreenState extends State { } if (event.logicalKey.isDownKey && event.isActionable) { final sel = _textController.selection; - if (sel.isValid && - _textController.text.indexOf('\n', sel.extentOffset) == -1) { + if (sel.isValid && _textController.text.indexOf('\n', sel.extentOffset) == -1) { _savePresetFocusNode.requestFocus(); return KeyEventResult.handled; } diff --git a/lib/screens/settings/playback_settings_screen.dart b/lib/screens/settings/playback_settings_screen.dart index 703be53a..48fb1cec 100644 --- a/lib/screens/settings/playback_settings_screen.dart +++ b/lib/screens/settings/playback_settings_screen.dart @@ -324,10 +324,7 @@ class _PlaybackSettingsScreenState extends State { if (Platform.isAndroid && value > 0) { final heapMB = await PlayerAndroid.getHeapSize(); if (heapMB > 0 && value > heapMB ~/ 4 && mounted) { - showAppSnackBar( - context, - t.settings.bufferSizeWarning(heap: heapMB.toString(), size: value.toString()), - ); + showAppSnackBar(context, t.settings.bufferSizeWarning(heap: heapMB.toString(), size: value.toString())); } } } diff --git a/lib/screens/settings/settings_screen.dart b/lib/screens/settings/settings_screen.dart index 3aa576a0..50a5ceae 100644 --- a/lib/screens/settings/settings_screen.dart +++ b/lib/screens/settings/settings_screen.dart @@ -155,17 +155,13 @@ class _SettingsScreenState extends State with FocusableTab { _buildDownloadsSection(), // --- Keyboard Shortcuts (inline, conditional) --- - if (_keyboardShortcutsSupported) ...[ - _buildKeyboardShortcutsSection(), - ], + if (_keyboardShortcutsSupported) ...[_buildKeyboardShortcutsSection()], // --- Advanced (inline) --- _buildAdvancedSection(), // --- Updates (conditional) --- - if (UpdateService.isUpdateCheckEnabled) ...[ - _buildUpdateSection(), - ], + if (UpdateService.isUpdateCheckEnabled) ...[_buildUpdateSection()], // --- About --- ListTile( @@ -190,7 +186,8 @@ class _SettingsScreenState extends State with FocusableTab { Widget _buildAppearanceTile() { return Consumer2( builder: (context, themeProvider, settingsProvider, child) { - final summary = '${themeProvider.themeModeDisplayName} · ${t.settings.libraryDensity} ${settingsProvider.libraryDensity}'; + final summary = + '${themeProvider.themeModeDisplayName} · ${t.settings.libraryDensity} ${settingsProvider.libraryDensity}'; return ListTile( focusNode: _focusTracker.get(_kAppearance), leading: const AppIcon(Symbols.palette_rounded, fill: 1), @@ -302,8 +299,6 @@ class _SettingsScreenState extends State with FocusableTab { ); } - - Widget _buildAdvancedSection() { return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -560,10 +555,7 @@ class _SettingsScreenState extends State with FocusableTab { title: Text(t.settings.watchTogetherRelay), content: TextField( controller: controller, - decoration: InputDecoration( - labelText: 'URL', - hintText: t.settings.watchTogetherRelayHint, - ), + decoration: InputDecoration(labelText: 'URL', hintText: t.settings.watchTogetherRelayHint), autofocus: true, textInputAction: TextInputAction.done, onEditingComplete: () => saveFocusNode.requestFocus(), diff --git a/lib/screens/settings/settings_utils.dart b/lib/screens/settings/settings_utils.dart index e0feb98b..50b590ab 100644 --- a/lib/screens/settings/settings_utils.dart +++ b/lib/screens/settings/settings_utils.dart @@ -33,11 +33,13 @@ Future showSelectionDialog({ child: Column( mainAxisSize: MainAxisSize.min, children: options - .map((option) => RadioListTile( - title: Text(option.title), - subtitle: option.subtitle != null ? Text(option.subtitle!) : null, - value: option.value, - )) + .map( + (option) => RadioListTile( + title: Text(option.title), + subtitle: option.subtitle != null ? Text(option.subtitle!) : null, + value: option.value, + ), + ) .toList(), ), ), @@ -124,10 +126,9 @@ void _showNumericInputDialogTV({ const SizedBox(height: 8), Text( t.settings.durationHint(min: min, max: max), - style: Theme.of(context) - .textTheme - .bodySmall - ?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant), + style: Theme.of( + context, + ).textTheme.bodySmall?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant), ), ], ), @@ -246,10 +247,7 @@ void showTextInputDialog({ title: Text(title), content: TextField( controller: controller, - decoration: InputDecoration( - labelText: 'Regex', - errorText: errorText, - ), + decoration: InputDecoration(labelText: 'Regex', errorText: errorText), autofocus: true, textInputAction: TextInputAction.done, onEditingComplete: () => saveFocusNode.requestFocus(), diff --git a/lib/services/ambient_lighting_service.dart b/lib/services/ambient_lighting_service.dart index 207e880d..38f06c7f 100644 --- a/lib/services/ambient_lighting_service.dart +++ b/lib/services/ambient_lighting_service.dart @@ -141,8 +141,8 @@ class AmbientLightingService { // Pass 3-5: Three Kawase blur passes at 1/8 resolution. const blur8Steps = [ - ('SMALL', 'BLUR8A', '2.0', 'Blur1'), - ('BLUR8A', 'BLUR8B', '6.0', 'Blur2'), + ('SMALL', 'BLUR8A', '2.0', 'Blur1'), + ('BLUR8A', 'BLUR8B', '6.0', 'Blur2'), ('BLUR8B', 'BLUR8C', '12.0', 'Blur3'), ]; for (final (input, output, offset, desc) in blur8Steps) { @@ -176,10 +176,7 @@ class AmbientLightingService { buf.writeln(); // Pass 7-8: Two more Kawase blur passes at 1/64 for maximum diffusion. - const blur64Steps = [ - ('TINY', 'GLOW1', '3.0', 'Blur4'), - ('GLOW1', 'GLOW', '6.0', 'Blur5'), - ]; + const blur64Steps = [('TINY', 'GLOW1', '3.0', 'Blur4'), ('GLOW1', 'GLOW', '6.0', 'Blur5')]; for (final (input, output, offset, desc) in blur64Steps) { buf.writeln('//!HOOK MAIN'); buf.writeln('//!BIND $input'); diff --git a/lib/services/companion_remote/companion_remote_peer_service.dart b/lib/services/companion_remote/companion_remote_peer_service.dart index 0cf262a7..179c57b8 100644 --- a/lib/services/companion_remote/companion_remote_peer_service.dart +++ b/lib/services/companion_remote/companion_remote_peer_service.dart @@ -198,11 +198,7 @@ class CompanionRemotePeerService with KeepaliveMixin { } // Send challenge: hostNonce + hostClientId - socket.add(jsonEncode({ - 'type': 'challenge', - 'nonce': base64Encode(hostNonce), - 'hostClientId': hostClientId, - })); + socket.add(jsonEncode({'type': 'challenge', 'nonce': base64Encode(hostNonce), 'hostClientId': hostClientId})); // Authentication timeout authTimeout = Timer(const Duration(seconds: 10), () { @@ -294,11 +290,7 @@ class CompanionRemotePeerService with KeepaliveMixin { await _sendEncryptedToSocket(socket, jsonEncode({'type': 'authSuccess'})); // Notify connection - final device = RemoteDevice( - id: 'remote-client', - name: deviceName, - platform: platform, - ); + final device = RemoteDevice(id: 'remote-client', name: deviceName, platform: platform); _deviceConnectedController.add(device); _connectionStateController.add(RemoteSessionStatus.connected); @@ -479,15 +471,17 @@ class CompanionRemotePeerService with KeepaliveMixin { platform: platform, ); - _channel!.sink.add(jsonEncode({ - 'type': 'auth', - 'clientNonce': base64Encode(clientNonce!), - 'userUUID': userUUID, - 'clientIdentifier': clientIdentifier, - 'deviceName': deviceName, - 'platform': platform, - 'authTag': authTag, - })); + _channel!.sink.add( + jsonEncode({ + 'type': 'auth', + 'clientNonce': base64Encode(clientNonce!), + 'userUUID': userUUID, + 'clientIdentifier': clientIdentifier, + 'deviceName': deviceName, + 'platform': platform, + 'authTag': authTag, + }), + ); _sessionEncKey = await auth.deriveSessionEncKey(homeSecret, hostNonce!, clientNonce!); _sendCounter = 0; @@ -571,7 +565,15 @@ class CompanionRemotePeerService with KeepaliveMixin { String clientIdentifier, ) async { if (hostAddresses.length == 1) { - await joinSession(deviceName, platform, hostAddresses.first, homeSecret, hostClientId, userUUID, clientIdentifier); + await joinSession( + deviceName, + platform, + hostAddresses.first, + homeSecret, + hostClientId, + userUUID, + clientIdentifier, + ); return hostAddresses.first; } @@ -627,8 +629,10 @@ class CompanionRemotePeerService with KeepaliveMixin { } try { - final winner = - await completer.future.namedTimeout(const Duration(seconds: 10), operation: 'CompanionRemote race connect'); + final winner = await completer.future.namedTimeout( + const Duration(seconds: 10), + operation: 'CompanionRemote race connect', + ); cleanup(); // Set up the proper managed connection on the winning address @@ -636,10 +640,7 @@ class CompanionRemotePeerService with KeepaliveMixin { return winner; } on TimeoutException { cleanup(); - throw const RemotePeerError( - type: RemotePeerErrorType.timeout, - message: 'Timed out connecting to all addresses', - ); + throw const RemotePeerError(type: RemotePeerErrorType.timeout, message: 'Timed out connecting to all addresses'); } } diff --git a/lib/services/companion_remote/lan_discovery_service.dart b/lib/services/companion_remote/lan_discovery_service.dart index 3f3b1606..5e624bd1 100644 --- a/lib/services/companion_remote/lan_discovery_service.dart +++ b/lib/services/companion_remote/lan_discovery_service.dart @@ -138,9 +138,7 @@ class LanDiscoveryService { /// Start listening for host beacons. /// Returns a stream of currently-visible hosts, updated on each beacon or stale cleanup. - Stream> startListening({ - required List discoveryKey, - }) { + Stream> startListening({required List discoveryKey}) { _stopListeningInternal(); _discoveredHosts.clear(); diff --git a/lib/services/companion_remote/remote_auth_service.dart b/lib/services/companion_remote/remote_auth_service.dart index cdc30be5..bfc041f0 100644 --- a/lib/services/companion_remote/remote_auth_service.dart +++ b/lib/services/companion_remote/remote_auth_service.dart @@ -75,11 +75,7 @@ class RemoteAuthService { } /// Derive per-session encryption key from homeSecret + both nonces. - Future> deriveSessionEncKey( - List homeSecret, - List hostNonce, - List clientNonce, - ) async { + Future> deriveSessionEncKey(List homeSecret, List hostNonce, List clientNonce) async { final hkdf = _hkdf; final salt = Uint8List(hostNonce.length + clientNonce.length); @@ -306,11 +302,7 @@ class RemoteAuthService { final algo = _aesGcm; final nonce = buildNonce(isHost ? _directionHost : _directionClient, counter); - final secretBox = await algo.encrypt( - plaintext, - secretKey: SecretKey(sessionEncKey), - nonce: nonce, - ); + final secretBox = await algo.encrypt(plaintext, secretKey: SecretKey(sessionEncKey), nonce: nonce); // Return ciphertext + mac (nonce is implicit) return [...secretBox.cipherText, ...secretBox.mac.bytes]; diff --git a/lib/services/data_aggregation_service.dart b/lib/services/data_aggregation_service.dart index d6dcc13c..9bdfe7ff 100644 --- a/lib/services/data_aggregation_service.dart +++ b/lib/services/data_aggregation_service.dart @@ -302,10 +302,7 @@ class DataAggregationService { /// Split "Recently Added" hubs that contain items from multiple libraries /// into separate per-library hubs, matching the official Plex client behavior. - List _splitRecentlyAddedHubs( - List hubs, - Map>? librariesByServer, - ) { + List _splitRecentlyAddedHubs(List hubs, Map>? librariesByServer) { final result = []; for (final hub in hubs) { @@ -340,33 +337,37 @@ class DataAggregationService { final libraryName = _resolveLibraryName(items.first, librariesByServer); final title = libraryName != null ? 'Recently Added in $libraryName' : hub.title; - result.add(PlexHub( - hubKey: hub.hubKey, - title: title, - type: hub.type, - hubIdentifier: '${hub.hubIdentifier}_${entry.key}', - size: items.length, - more: hub.more, - items: items, - serverId: hub.serverId, - serverName: hub.serverName, - librarySectionID: entry.key, - )); + result.add( + PlexHub( + hubKey: hub.hubKey, + title: title, + type: hub.type, + hubIdentifier: '${hub.hubIdentifier}_${entry.key}', + size: items.length, + more: hub.more, + items: items, + serverId: hub.serverId, + serverName: hub.serverName, + librarySectionID: entry.key, + ), + ); } // Keep ungrouped items in a hub with the original title if (ungrouped.isNotEmpty) { - result.add(PlexHub( - hubKey: hub.hubKey, - title: hub.title, - type: hub.type, - hubIdentifier: hub.hubIdentifier, - size: ungrouped.length, - more: hub.more, - items: ungrouped, - serverId: hub.serverId, - serverName: hub.serverName, - )); + result.add( + PlexHub( + hubKey: hub.hubKey, + title: hub.title, + type: hub.type, + hubIdentifier: hub.hubIdentifier, + size: ungrouped.length, + more: hub.more, + items: ungrouped, + serverId: hub.serverId, + serverName: hub.serverName, + ), + ); } } @@ -374,10 +375,7 @@ class DataAggregationService { } /// Resolve library name from item metadata or library lookup map. - String? _resolveLibraryName( - PlexMetadata item, - Map>? librariesByServer, - ) { + String? _resolveLibraryName(PlexMetadata item, Map>? librariesByServer) { // Try librarySectionTitle from the item itself (Plex API often includes it) if (item.librarySectionTitle != null && item.librarySectionTitle!.isNotEmpty) { return item.librarySectionTitle; diff --git a/lib/services/discord_rpc_service.dart b/lib/services/discord_rpc_service.dart index 34e02798..75645558 100644 --- a/lib/services/discord_rpc_service.dart +++ b/lib/services/discord_rpc_service.dart @@ -300,21 +300,14 @@ class DiscordRPCService { if (imageUrl.isEmpty) return null; // Fetch image data - final imageBytes = await httpClient.getBytes( - imageUrl, - timeout: const Duration(seconds: 10), - ); + final imageBytes = await httpClient.getBytes(imageUrl, timeout: const Duration(seconds: 10)); if (imageBytes.isEmpty) return null; // Upload to Litterbox final uploadRequest = http.MultipartRequest('POST', Uri.parse(_litterboxUrl)) ..fields['reqtype'] = 'fileupload' ..fields['time'] = '1h' - ..files.add(http.MultipartFile.fromBytes( - 'fileToUpload', - imageBytes, - filename: 'thumbnail.jpg', - )); + ..files.add(http.MultipartFile.fromBytes('fileToUpload', imageBytes, filename: 'thumbnail.jpg')); final uploadStreamed = await httpClient.inner .send(uploadRequest) diff --git a/lib/services/display_mode_service.dart b/lib/services/display_mode_service.dart index 00cfba85..ed0575f2 100644 --- a/lib/services/display_mode_service.dart +++ b/lib/services/display_mode_service.dart @@ -24,10 +24,7 @@ class DisplayModeService { /// Apply display matching based on video properties. Returns the delay /// duration to wait before starting playback. - Future applyDisplayMatching({ - required double? fps, - required double? sigPeak, - }) async { + Future applyDisplayMatching({required double? fps, required double? sigPeak}) async { if (!Platform.isWindows) return Duration.zero; if (!_fullscreen.isFullscreen) { appLogger.d('Display matching skipped: not in fullscreen'); @@ -125,9 +122,7 @@ class DisplayModeService { final alreadyEnabled = await _channel.invokeMethod('isHDREnabled'); if (alreadyEnabled == true) return false; - final success = await _channel.invokeMethod('setSystemHDR', { - 'enabled': true, - }); + final success = await _channel.invokeMethod('setSystemHDR', {'enabled': true}); if (success == true) { _hdrStateChanged = true; @@ -139,12 +134,7 @@ class DisplayModeService { /// Find the best matching refresh rate for a video fps. /// Mirrors the C++ FindBestRefreshRate algorithm. - static int _findBestRefreshRate( - double videoFps, - List modes, - int currentWidth, - int currentHeight, - ) { + static int _findBestRefreshRate(double videoFps, List modes, int currentWidth, int currentHeight) { if (videoFps <= 0) return 0; // Collect unique refresh rates at current resolution. @@ -174,9 +164,7 @@ class DisplayModeService { // Within 0.5% tolerance. if (deviation > 0.005) continue; - if (bestRate == 0 || - multiplier < bestMultiplier || - (multiplier == bestMultiplier && rate > bestRate)) { + if (bestRate == 0 || multiplier < bestMultiplier || (multiplier == bestMultiplier && rate > bestRate)) { bestRate = rate; bestMultiplier = multiplier; } diff --git a/lib/services/download_manager_service.dart b/lib/services/download_manager_service.dart index 7457c1ae..6e8581bf 100644 --- a/lib/services/download_manager_service.dart +++ b/lib/services/download_manager_service.dart @@ -126,10 +126,13 @@ class DownloadManagerService { /// Await this before reading download state from the DB to avoid races. late final Future recoveryFuture; - DownloadManagerService({required AppDatabase database, required DownloadStorageService storageService, PlexHttpClient? http}) - : _database = database, - _storageService = storageService, - _http = http ?? httpClient; + DownloadManagerService({ + required AppDatabase database, + required DownloadStorageService storageService, + PlexHttpClient? http, + }) : _database = database, + _storageService = storageService, + _http = http ?? httpClient; /// Register a callback to resolve the correct PlexClient for a given serverId. void setClientResolver(PlexClient? Function(String serverId) resolver) { @@ -739,7 +742,8 @@ class DownloadManagerService { // DNS/connection errors fail instantly and exhaust native retries in milliseconds, // creating a retry storm. Treat them as permanent failures. - final isNetworkError = errorMessage.contains('Unable to resolve host') || + final isNetworkError = + errorMessage.contains('Unable to resolve host') || errorMessage.contains('No address associated with hostname') || errorMessage.contains('Network is unreachable') || errorMessage.contains('Connection refused'); @@ -770,9 +774,7 @@ class DownloadManagerService { if (isNetworkError) { appLogger.w('Network error for $globalKey, failing permanently (no auto-retry): $errorMessage'); } - final userMessage = isServerError - ? t.downloads.serverErrorBitrate - : errorMessage; + final userMessage = isServerError ? t.downloads.serverErrorBitrate : errorMessage; await _onDownloadPermanentlyFailed(globalKey, userMessage); } } @@ -1680,9 +1682,11 @@ class DownloadManagerService { try { final downloadsDir = await _storageService.getDownloadsDirectory(); var current = dir; - while (current.path != downloadsDir.path && - current.path.startsWith(downloadsDir.path)) { - if (!await current.exists()) { current = current.parent; continue; } + while (current.path != downloadsDir.path && current.path.startsWith(downloadsDir.path)) { + if (!await current.exists()) { + current = current.parent; + continue; + } final contents = await current.list().toList(); if (contents.isEmpty) { await current.delete(); @@ -1704,9 +1708,7 @@ class DownloadManagerService { if (await seasonDir.exists()) { final contents = await seasonDir.list().toList(); final hasVideos = contents.any( - (e) => - _videoExtensions.any((ext) => e.path.endsWith(ext)) || - e.path.contains('_subs'), + (e) => _videoExtensions.any((ext) => e.path.endsWith(ext)) || e.path.contains('_subs'), ); if (!hasVideos) { diff --git a/lib/services/file_picker_service.dart b/lib/services/file_picker_service.dart index 71bbb52d..38b59f0d 100644 --- a/lib/services/file_picker_service.dart +++ b/lib/services/file_picker_service.dart @@ -31,16 +31,13 @@ class FilePickerService { List? allowedExtensions, bool withData = false, }) { - return _guard('pickFiles', () => FilePicker.platform.pickFiles( - type: type, - allowedExtensions: allowedExtensions, - withData: withData, - )); + return _guard( + 'pickFiles', + () => FilePicker.platform.pickFiles(type: type, allowedExtensions: allowedExtensions, withData: withData), + ); } Future getDirectoryPath({String? dialogTitle}) { - return _guard('getDirectoryPath', () => FilePicker.platform.getDirectoryPath( - dialogTitle: dialogTitle, - )); + return _guard('getDirectoryPath', () => FilePicker.platform.getDirectoryPath(dialogTitle: dialogTitle)); } } diff --git a/lib/services/image_cache_service.dart b/lib/services/image_cache_service.dart index 4a4afce3..06528f5e 100644 --- a/lib/services/image_cache_service.dart +++ b/lib/services/image_cache_service.dart @@ -17,14 +17,14 @@ class PlexImageCacheManager extends CacheManager with ImageCacheManager { static final PlexImageCacheManager instance = PlexImageCacheManager._(); PlexImageCacheManager._() - : super( - Config( - _key, - stalePeriod: const Duration(days: 14), - maxNrOfCacheObjects: 3000, - fileService: _HttpFileService(httpClient.inner), - ), - ); + : super( + Config( + _key, + stalePeriod: const Duration(days: 14), + maxNrOfCacheObjects: 3000, + fileService: _HttpFileService(httpClient.inner), + ), + ); } class _HttpFileService extends FileService { @@ -33,10 +33,7 @@ class _HttpFileService extends FileService { _HttpFileService(this._client); @override - Future get( - String url, { - Map? headers, - }) async { + Future get(String url, {Map? headers}) async { final request = http.Request('GET', Uri.parse(url)); if (headers != null) request.headers.addAll(headers); final response = await _client.send(request); diff --git a/lib/services/multi_server_manager.dart b/lib/services/multi_server_manager.dart index 4e64e948..8bb95533 100644 --- a/lib/services/multi_server_manager.dart +++ b/lib/services/multi_server_manager.dart @@ -95,7 +95,9 @@ class MultiServerManager { final cachedEndpoint = storage.getServerEndpoint(serverId); // Find best working connection, passing cached endpoint for fast-path - final streamIterator = StreamIterator(server.findBestWorkingConnection(preferredUri: cachedEndpoint, clientIdentifier: clientIdentifier)); + final streamIterator = StreamIterator( + server.findBestWorkingConnection(preferredUri: cachedEndpoint, clientIdentifier: clientIdentifier), + ); if (!await streamIterator.moveNext()) { throw Exception('No working connection found'); @@ -208,7 +210,10 @@ class MultiServerManager { try { appLogger.d('Attempting connection to server: ${server.name}'); - final client = await _createClientForServer(server: server, clientIdentifier: effectiveClientId).namedTimeout(timeout, operation: 'connect to ${server.name}'); + final client = await _createClientForServer( + server: server, + clientIdentifier: effectiveClientId, + ).namedTimeout(timeout, operation: 'connect to ${server.name}'); // Store the client and server info _clients[serverId]?.close(); @@ -353,43 +358,46 @@ class MultiServerManager { } appLogger.i('Starting network monitoring for all servers'); - runZonedGuarded(() { - final connectivity = Connectivity(); - _connectivitySubscription = connectivity.onConnectivityChanged.listen( - (results) { - final status = results.isNotEmpty ? results.first : ConnectivityResult.none; + runZonedGuarded( + () { + final connectivity = Connectivity(); + _connectivitySubscription = connectivity.onConnectivityChanged.listen( + (results) { + final status = results.isNotEmpty ? results.first : ConnectivityResult.none; - if (status == ConnectivityResult.none) { - appLogger.w('Connectivity lost, pausing optimization until network returns'); - return; - } + if (status == ConnectivityResult.none) { + appLogger.w('Connectivity lost, pausing optimization until network returns'); + return; + } - // Debounce rapid connectivity events (e.g. WiFi flapping) into a single trigger - _connectivityDebounce?.cancel(); - _connectivityDebounce = Timer(const Duration(seconds: 2), () { - _connectivityDebounce = null; + // Debounce rapid connectivity events (e.g. WiFi flapping) into a single trigger + _connectivityDebounce?.cancel(); + _connectivityDebounce = Timer(const Duration(seconds: 2), () { + _connectivityDebounce = null; - appLogger.d( - 'Connectivity change detected, re-optimizing all servers', - error: { - 'status': status.name, - 'interfaces': results.map((r) => r.name).toList(), - 'serverCount': _servers.length, - }, - ); + appLogger.d( + 'Connectivity change detected, re-optimizing all servers', + error: { + 'status': status.name, + 'interfaces': results.map((r) => r.name).toList(), + 'serverCount': _servers.length, + }, + ); - // Re-optimize all servers and re-probe offline ones - _reoptimizeAllServers(reason: 'connectivity:${status.name}'); - checkServerHealth(); - }); - }, - onError: (error, stackTrace) { - appLogger.w('Connectivity listener error', error: error, stackTrace: stackTrace); - }, - ); - }, (error, stack) { - appLogger.w('Connectivity monitoring unavailable', error: error); - }); + // Re-optimize all servers and re-probe offline ones + _reoptimizeAllServers(reason: 'connectivity:${status.name}'); + checkServerHealth(); + }); + }, + onError: (error, stackTrace) { + appLogger.w('Connectivity listener error', error: error, stackTrace: stackTrace); + }, + ); + }, + (error, stack) { + appLogger.w('Connectivity monitoring unavailable', error: error); + }, + ); } /// Stop monitoring network connectivity @@ -437,7 +445,10 @@ class MultiServerManager { try { appLogger.d('Starting connection optimization for ${server.name}', error: {'reason': reason}); - await for (final connection in server.findBestWorkingConnection(preferredUri: cachedEndpoint, clientIdentifier: _clientIdentifier)) { + await for (final connection in server.findBestWorkingConnection( + preferredUri: cachedEndpoint, + clientIdentifier: _clientIdentifier, + )) { final newUrl = connection.uri; // Check if this is actually a better connection than current diff --git a/lib/services/offline_watch_sync_service.dart b/lib/services/offline_watch_sync_service.dart index c6905bc3..31cee1cd 100644 --- a/lib/services/offline_watch_sync_service.dart +++ b/lib/services/offline_watch_sync_service.dart @@ -450,7 +450,9 @@ class OfflineWatchSyncService extends ChangeNotifier { existingMeta['lastViewedAt'] = episode.lastViewedAt; existingMeta['viewedLeafCount'] = episode.viewedLeafCount; await PlexApiCache.instance.put(serverId, cacheKey, { - 'MediaContainer': {'Metadata': [existingMeta]}, + 'MediaContainer': { + 'Metadata': [existingMeta], + }, }); // Repair corrupted entries (missing Media/Chapter from previous overwrites) @@ -462,7 +464,9 @@ class OfflineWatchSyncService extends ChangeNotifier { } else { // No existing entry — write what we have await PlexApiCache.instance.put(serverId, cacheKey, { - 'MediaContainer': {'Metadata': [episode.toJson()]}, + 'MediaContainer': { + 'Metadata': [episode.toJson()], + }, }); } synced++; diff --git a/lib/services/pip_service.dart b/lib/services/pip_service.dart index 172fce9e..369ba900 100644 --- a/lib/services/pip_service.dart +++ b/lib/services/pip_service.dart @@ -46,11 +46,7 @@ class PipService { /// Tell the native side whether auto-PiP is ready and the current video dimensions static Future setAutoPipReady({required bool ready, int? width, int? height}) async { if (!_isAvailable) return; - await _channel.invokeMethod('setAutoPipReady', { - 'ready': ready, - 'width': width, - 'height': height, - }); + await _channel.invokeMethod('setAutoPipReady', {'ready': ready, 'width': width, 'height': height}); } static Future exit() async { diff --git a/lib/services/play_queue_launcher.dart b/lib/services/play_queue_launcher.dart index 9b45a6eb..2d17c5f2 100644 --- a/lib/services/play_queue_launcher.dart +++ b/lib/services/play_queue_launcher.dart @@ -189,11 +189,7 @@ class PlayQueueLauncher { execute: (dismissLoading) async { final folderUri = await client.buildFolderUri(folderKey); - var playQueue = await client.createPlayQueue( - uri: folderUri, - type: 'video', - shuffle: shuffle ? 1 : 0, - ); + var playQueue = await client.createPlayQueue(uri: folderUri, type: 'video', shuffle: shuffle ? 1 : 0); if (playQueue != null && (playQueue.items == null || playQueue.items!.isEmpty)) { final fetchedQueue = await client.getPlayQueue(playQueue.playQueueID); @@ -204,12 +200,7 @@ class PlayQueueLauncher { await dismissLoading(); - return _launchFromQueue( - playQueue: playQueue, - ratingKey: folderKey, - serverId: serverId, - serverName: serverName, - ); + return _launchFromQueue(playQueue: playQueue, ratingKey: folderKey, serverId: serverId, serverName: serverName); }, ); } diff --git a/lib/services/playback_initialization_service.dart b/lib/services/playback_initialization_service.dart index 346eb031..60cb09a8 100644 --- a/lib/services/playback_initialization_service.dart +++ b/lib/services/playback_initialization_service.dart @@ -46,8 +46,10 @@ class PlaybackInitializationService { // Skip offline file if a different version was requested if (downloadedItem.mediaIndex != mediaIndex) { - appLogger.d('[VersionTrace] Offline video is version ${downloadedItem.mediaIndex}, ' - 'but requested version $mediaIndex — skipping offline'); + appLogger.d( + '[VersionTrace] Offline video is version ${downloadedItem.mediaIndex}, ' + 'but requested version $mediaIndex — skipping offline', + ); return null; } @@ -94,7 +96,11 @@ class PlaybackInitializationService { // Check for offline content first if preferOffline is enabled String? offlineVideoPath; if (preferOffline && database != null) { - offlineVideoPath = await getOfflineVideoPath(client.serverId, metadata.ratingKey, mediaIndex: selectedMediaIndex); + offlineVideoPath = await getOfflineVideoPath( + client.serverId, + metadata.ratingKey, + mediaIndex: selectedMediaIndex, + ); } // If offline video is available, use it diff --git a/lib/services/playback_progress_tracker.dart b/lib/services/playback_progress_tracker.dart index 51d4a4df..fb4c2594 100644 --- a/lib/services/playback_progress_tracker.dart +++ b/lib/services/playback_progress_tracker.dart @@ -195,7 +195,9 @@ class PlaybackProgressTracker { _scrobbled = true; try { await client!.markAsWatched(metadata.ratingKey, metadata: metadata); - appLogger.d('Scrobbled ${metadata.ratingKey} (${(percent * 100).toStringAsFixed(0)}% >= ${client!.watchedThresholdPercent}%)'); + appLogger.d( + 'Scrobbled ${metadata.ratingKey} (${(percent * 100).toStringAsFixed(0)}% >= ${client!.watchedThresholdPercent}%)', + ); } catch (e) { appLogger.w('Failed to scrobble ${metadata.ratingKey}', error: e); _scrobbled = false; // Retry on next tick diff --git a/lib/services/plex_api_cache.dart b/lib/services/plex_api_cache.dart index 442c80be..4747aa24 100644 --- a/lib/services/plex_api_cache.dart +++ b/lib/services/plex_api_cache.dart @@ -53,7 +53,9 @@ class PlexApiCache { final encoded = await tryIsolateRun(() => jsonEncode(data)); await _db .into(_db.apiCache) - .insertOnConflictUpdate(ApiCacheCompanion(cacheKey: Value(key), data: Value(encoded), cachedAt: Value(DateTime.now()))); + .insertOnConflictUpdate( + ApiCacheCompanion(cacheKey: Value(key), data: Value(encoded), cachedAt: Value(DateTime.now())), + ); } /// Delete all cached data for a server diff --git a/lib/services/plex_auth_service.dart b/lib/services/plex_auth_service.dart index 39b8538a..a6ec3219 100644 --- a/lib/services/plex_auth_service.dart +++ b/lib/services/plex_auth_service.dart @@ -451,7 +451,12 @@ class PlexServer { appLogger.d('Running connection race to find first working endpoint', error: {'candidateCount': totalCandidates}); for (final candidate in candidates) { - PlexClient.testConnectionWithLatency(candidate.url, accessToken, timeout: raceTimeout, clientIdentifier: clientIdentifier).then((result) { + PlexClient.testConnectionWithLatency( + candidate.url, + accessToken, + timeout: raceTimeout, + clientIdentifier: clientIdentifier, + ).then((result) { completedTests++; if (!result.success) { @@ -496,7 +501,10 @@ class PlexServer { } // Attempt HTTPS upgrade on the Phase 1 winner before emitting - final upgradedFirstCandidate = await _upgradeCandidateToHttpsIfPossible(firstCandidate, clientIdentifier: clientIdentifier); + final upgradedFirstCandidate = await _upgradeCandidateToHttpsIfPossible( + firstCandidate, + clientIdentifier: clientIdentifier, + ); final emitCandidate = upgradedFirstCandidate ?? firstCandidate; final firstConnection = _updateConnectionUrl(emitCandidate.connection, emitCandidate.url); @@ -518,7 +526,12 @@ class PlexServer { await Future.wait( candidates.map((candidate) async { - final result = await PlexClient.testConnectionWithAverageLatency(candidate.url, accessToken, attempts: 2, clientIdentifier: clientIdentifier); + final result = await PlexClient.testConnectionWithAverageLatency( + candidate.url, + accessToken, + attempts: 2, + clientIdentifier: clientIdentifier, + ); if (result.success) { candidateResults[candidate] = result; @@ -542,7 +555,8 @@ class PlexServer { // Emit the best connection if it's different from the first one if (bestCandidate != null) { - final upgradedCandidate = await _upgradeCandidateToHttpsIfPossible(bestCandidate, clientIdentifier: clientIdentifier) ?? bestCandidate; + final upgradedCandidate = + await _upgradeCandidateToHttpsIfPossible(bestCandidate, clientIdentifier: clientIdentifier) ?? bestCandidate; final bestConnection = _updateConnectionUrl(upgradedCandidate.connection, upgradedCandidate.url); if (bestConnection.uri != firstConnection.uri) { @@ -660,7 +674,10 @@ class PlexServer { return urls; } - Future<_ConnectionCandidate?> _upgradeCandidateToHttpsIfPossible(_ConnectionCandidate candidate, {String? clientIdentifier}) async { + Future<_ConnectionCandidate?> _upgradeCandidateToHttpsIfPossible( + _ConnectionCandidate candidate, { + String? clientIdentifier, + }) async { final currentUrl = candidate.url; if (currentUrl.startsWith('https://')) { return null; @@ -714,7 +731,10 @@ class PlexServer { ); if (!result.success) { - appLogger.w('HTTPS upgrade failed, staying on HTTP candidate', error: {'url': currentUrl, 'reason': result.error}); + appLogger.w( + 'HTTPS upgrade failed, staying on HTTP candidate', + error: {'url': currentUrl, 'reason': result.error}, + ); return null; } diff --git a/lib/services/plex_client.dart b/lib/services/plex_client.dart index 8b1e7743..ab048f09 100644 --- a/lib/services/plex_client.dart +++ b/lib/services/plex_client.dart @@ -213,11 +213,7 @@ class PlexClient { }) async { final gen = _endpointManager?.generation; try { - return await _http.get(path, - queryParameters: queryParameters, - headers: headers, - timeout: timeout, - abort: abort); + return await _http.get(path, queryParameters: queryParameters, headers: headers, timeout: timeout, abort: abort); } on PlexHttpException catch (e) { if (!_shouldAttemptFailover(e) || _failoverSwitching || @@ -243,13 +239,14 @@ class PlexClient { error: {'from': failedEndpoint, 'to': nextBaseUrl, 'path': path}, ); await _handleEndpointSwitch(nextBaseUrl); - final response = await _http.get(path, - queryParameters: queryParameters, - headers: headers, - timeout: timeout, - abort: abort); - appLogger.i('Endpoint failover retry succeeded', - error: {'newEndpoint': nextBaseUrl}); + final response = await _http.get( + path, + queryParameters: queryParameters, + headers: headers, + timeout: timeout, + abort: abort, + ); + appLogger.i('Endpoint failover retry succeeded', error: {'newEndpoint': nextBaseUrl}); return response; } finally { _failoverSwitching = false; @@ -313,8 +310,7 @@ class PlexClient { if (dir['type'] == 'playlist') continue; final isNumericId = int.tryParse(id) != null; - final isSharedLibrary = !isNumericId && - dir['key']?.toString().startsWith('/library/shared') == true; + final isSharedLibrary = !isNumericId && dir['key']?.toString().startsWith('/library/shared') == true; // Skip non-numeric IDs unless it's a shared library if (!isNumericId && !isSharedLibrary) continue; @@ -324,11 +320,9 @@ class PlexClient { json['key'] = id; libraries.add( - PlexLibrary.fromJson(json).copyWith( - serverId: serverId, - serverName: serverName, - isShared: isSharedLibrary, - ), + PlexLibrary.fromJson( + json, + ).copyWith(serverId: serverId, serverName: serverName, isShared: isSharedLibrary), ); } catch (e) { appLogger.w('Failed to parse media provider directory entry', error: e); @@ -387,11 +381,7 @@ class PlexClient { final stopwatch = Stopwatch()..start(); try { - final client = PlexHttpClient( - baseUrl: baseUrl, - connectTimeout: timeout, - receiveTimeout: timeout, - ); + final client = PlexHttpClient(baseUrl: baseUrl, connectTimeout: timeout, receiveTimeout: timeout); final headers = {'X-Plex-Token': token}; if (clientIdentifier != null) { @@ -424,7 +414,11 @@ class PlexClient { return ConnectionTestResult(success: false, latencyMs: stopwatch.elapsedMilliseconds, error: error); } catch (e) { stopwatch.stop(); - return ConnectionTestResult(success: false, latencyMs: stopwatch.elapsedMilliseconds, error: e.runtimeType.toString()); + return ConnectionTestResult( + success: false, + latencyMs: stopwatch.elapsedMilliseconds, + error: e.runtimeType.toString(), + ); } } @@ -604,15 +598,9 @@ class PlexClient { queryParams.addAll(filters); } - final endpoint = sectionId == 'shared' - ? '/library/shared/all' - : '/library/sections/$sectionId/all'; + final endpoint = sectionId == 'shared' ? '/library/shared/all' : '/library/sections/$sectionId/all'; - final response = await _getWithFailover( - endpoint, - queryParameters: queryParams, - abort: abort, - ); + final response = await _getWithFailover(endpoint, queryParameters: queryParams, abort: abort); final items = _extractMetadataList(response); final container = _getMediaContainer(response); @@ -981,12 +969,15 @@ class PlexClient { int forced = 0, }) async { return _wrapListApiCall( - () => _http.get('/library/metadata/$ratingKey/subtitles', queryParameters: { - 'language': language, - if (title != null && title.isNotEmpty) 'title': title, - 'hearingImpaired': hearingImpaired, - 'forced': forced, - }), + () => _http.get( + '/library/metadata/$ratingKey/subtitles', + queryParameters: { + 'language': language, + if (title != null && title.isNotEmpty) 'title': title, + 'hearingImpaired': hearingImpaired, + 'forced': forced, + }, + ), (response) { final container = _getMediaContainer(response); final streams = container?['Stream'] as List? ?? []; @@ -1008,14 +999,17 @@ class PlexClient { required String providerTitle, }) async { return _wrapBoolApiCall( - () => _http.put('/library/metadata/$ratingKey/subtitles', queryParameters: { - 'key': key, - 'codec': codec, - 'language': language, - 'hearingImpaired': hearingImpaired ? 1 : 0, - 'forced': forced ? 1 : 0, - 'providerTitle': providerTitle, - }), + () => _http.put( + '/library/metadata/$ratingKey/subtitles', + queryParameters: { + 'key': key, + 'codec': codec, + 'language': language, + 'hearingImpaired': hearingImpaired ? 1 : 0, + 'forced': forced ? 1 : 0, + 'providerTitle': providerTitle, + }, + ), 'Failed to download subtitle', ); } @@ -1077,16 +1071,13 @@ class PlexClient { /// Uses /hubs?identifier=home.continue,home.ondeck which respects the /// server's OnDeckWindow preference (unlike /library/onDeck). Future> getContinueWatching({int count = 20}) async { - final response = await _getWithFailover('/hubs', queryParameters: { - 'identifier': 'home.continue,home.ondeck', - 'count': count, - 'includeGuids': 1, - }); + final response = await _getWithFailover( + '/hubs', + queryParameters: {'identifier': 'home.continue,home.ondeck', 'count': count, 'includeGuids': 1}, + ); final sid = serverId; final sname = serverName; - final hubs = await tryIsolateRun( - () => _processHubResponse(response.data as Map, sid, sname), - ); + final hubs = await tryIsolateRun(() => _processHubResponse(response.data as Map, sid, sname)); // Deduplicate across home.continue and home.ondeck hubs. // Like plex-web, episodes from the same show (same grandparentRatingKey) // are deduplicated, preferring the in-progress item (has viewOffset). @@ -1096,9 +1087,7 @@ class PlexClient { final isEpisode = item.type?.toLowerCase() == 'episode'; final gpKey = item.grandparentRatingKey; if (isEpisode && gpKey != null) { - final idx = result.indexWhere((e) => - e.type?.toLowerCase() == 'episode' && - e.grandparentRatingKey == gpKey); + final idx = result.indexWhere((e) => e.type?.toLowerCase() == 'episode' && e.grandparentRatingKey == gpKey); if (idx != -1) { if (result[idx].viewOffset == null && item.viewOffset != null) { result[idx] = item; @@ -1166,7 +1155,12 @@ class PlexClient { /// Get chapters and markers from cached metadata or fetch if needed /// Uses same cache key as other metadata methods for consistency - Future getPlaybackExtras(String ratingKey, {String? introPattern, String? creditsPattern, bool forceRefresh = false}) async { + Future getPlaybackExtras( + String ratingKey, { + String? introPattern, + String? creditsPattern, + bool forceRefresh = false, + }) async { try { final fetch = forceRefresh ? _fetchWithCacheFallback : _fetchWithCacheFirst; final data = await fetch>( @@ -1177,7 +1171,11 @@ class PlexClient { parseResponse: (response) => response.data as Map?, ); final metadataJson = _getFirstMetadataJsonFromData(data); - return _parsePlaybackExtrasFromMetadataJson(metadataJson, introPattern: introPattern, creditsPattern: creditsPattern); + return _parsePlaybackExtrasFromMetadataJson( + metadataJson, + introPattern: introPattern, + creditsPattern: creditsPattern, + ); } catch (e) { appLogger.w('Failed to get playback extras', error: e); return PlaybackExtras(chapters: [], markers: []); @@ -1185,7 +1183,11 @@ class PlexClient { } /// Parse PlaybackExtras from metadata JSON - PlaybackExtras _parsePlaybackExtrasFromMetadataJson(Map? metadataJson, {String? introPattern, String? creditsPattern}) { + PlaybackExtras _parsePlaybackExtrasFromMetadataJson( + Map? metadataJson, { + String? introPattern, + String? creditsPattern, + }) { return PlaybackExtras.withChapterFallback( chapters: _parseChapters(metadataJson), markers: _parseMarkers(metadataJson), @@ -1350,7 +1352,10 @@ class PlexClient { /// /// If [metadata] is provided, emits a [WatchStateEvent] for UI updates. Future markAsWatched(String ratingKey, {PlexMetadata? metadata}) async { - await _getWithFailover('/:/scrobble', queryParameters: {'key': ratingKey, 'identifier': 'com.plexapp.plugins.library'}); + await _getWithFailover( + '/:/scrobble', + queryParameters: {'key': ratingKey, 'identifier': 'com.plexapp.plugins.library'}, + ); if (metadata != null) { WatchStateNotifier().notifyWatched(metadata: metadata, isNowWatched: true); } @@ -1360,7 +1365,10 @@ class PlexClient { /// /// If [metadata] is provided, emits a [WatchStateEvent] for UI updates. Future markAsUnwatched(String ratingKey, {PlexMetadata? metadata}) async { - await _getWithFailover('/:/unscrobble', queryParameters: {'key': ratingKey, 'identifier': 'com.plexapp.plugins.library'}); + await _getWithFailover( + '/:/unscrobble', + queryParameters: {'key': ratingKey, 'identifier': 'com.plexapp.plugins.library'}, + ); if (metadata != null) { WatchStateNotifier().notifyWatched(metadata: metadata, isNowWatched: false); } @@ -1431,18 +1439,14 @@ class PlexClient { : captureBufferWrapper as Map?; if (cbMap != null) { final ts = cbMap['TranscodeSession']; - final tsMap = ts is List - ? ts.firstOrNull as Map? - : ts as Map?; + final tsMap = ts is List ? ts.firstOrNull as Map? : ts as Map?; if (tsMap != null) return CaptureBuffer.fromTranscodeSession(tsMap); } } final transcodeSessions = container['TranscodeSession']; if (transcodeSessions is List && transcodeSessions.isNotEmpty) { - return CaptureBuffer.fromTranscodeSession( - transcodeSessions.first as Map, - ); + return CaptureBuffer.fromTranscodeSession(transcodeSessions.first as Map); } else if (transcodeSessions is Map) { return CaptureBuffer.fromTranscodeSession(transcodeSessions); } @@ -1524,7 +1528,10 @@ class PlexClient { if (type != null) queryParams['type'] = type; if (filters != null) queryParams.addAll(filters); - final response = await _getWithFailover('/library/sections/$sectionId/firstCharacter', queryParameters: queryParams); + final response = await _getWithFailover( + '/library/sections/$sectionId/firstCharacter', + queryParameters: queryParams, + ); return _extractDirectoryList(response, PlexFirstCharacter.fromJson); } @@ -1542,7 +1549,12 @@ class PlexClient { if (sectionId == 'shared') { return [ PlexSort(key: 'titleSort', descKey: 'titleSort:desc', title: 'Title', defaultDirection: 'asc'), - PlexSort(key: 'taggingCreatedAt', descKey: 'taggingCreatedAt:desc', title: 'Date Shared', defaultDirection: 'desc'), + PlexSort( + key: 'taggingCreatedAt', + descKey: 'taggingCreatedAt:desc', + title: 'Date Shared', + defaultDirection: 'desc', + ), ]; } try { @@ -1634,16 +1646,17 @@ class PlexClient { /// Get related hubs for a specific metadata item (collections, similar, "more from" director/actor) Future> getRelatedHubs(String ratingKey, {int count = 10}) async { try { - final response = await _getWithFailover( - '/hubs/metadata/$ratingKey/related', - queryParameters: {'count': count}, - ); + final response = await _getWithFailover('/hubs/metadata/$ratingKey/related', queryParameters: {'count': count}); final sid = serverId; final sname = serverName; - return await tryIsolateRun(() => _processHubResponse( - response.data as Map, sid, sname, - filter: (item) => item.isVideoContent || item.isCollection, - )); + return await tryIsolateRun( + () => _processHubResponse( + response.data as Map, + sid, + sname, + filter: (item) => item.isVideoContent || item.isCollection, + ), + ); } catch (e) { appLogger.e('Failed to get related hubs: $e'); } @@ -1850,8 +1863,7 @@ class PlexClient { } final removed = original.where((t) => !current.contains(t)).toList(); if (removed.isNotEmpty) { - queryParams['$field[].tag.tag-'] = - removed.map(Uri.encodeComponent).join(','); + queryParams['$field[].tag.tag-'] = removed.map(Uri.encodeComponent).join(','); } queryParams['$field.locked'] = '1'; } @@ -2317,9 +2329,7 @@ class PlexClient { final allChannels = []; for (final provider in _providerEpg) { final isCloudGuide = provider.identifier.startsWith('tv.plex.providers.epg'); - final primaryEndpoint = isCloudGuide - ? '/lineups/plex/channels' - : '/${provider.identifier}/lineups/dvr/channels'; + final primaryEndpoint = isCloudGuide ? '/lineups/plex/channels' : '/${provider.identifier}/lineups/dvr/channels'; try { final response = await _getWithFailover(primaryEndpoint); final parsed = parseChannels(response); @@ -2526,10 +2536,24 @@ class PlexClient { /// Plex tune responses use XML-to-JSON conversion where all values are strings. static void _coerceNumericFields(Map json) { const numericKeys = [ - 'duration', 'year', 'addedAt', 'updatedAt', 'lastViewedAt', - 'parentIndex', 'index', 'viewOffset', 'viewCount', 'leafCount', - 'viewedLeafCount', 'childCount', 'rating', 'audienceRating', - 'userRating', 'ratingCount', 'skipCount', 'lastRatedAt', + 'duration', + 'year', + 'addedAt', + 'updatedAt', + 'lastViewedAt', + 'parentIndex', + 'index', + 'viewOffset', + 'viewCount', + 'leafCount', + 'viewedLeafCount', + 'childCount', + 'rating', + 'audienceRating', + 'userRating', + 'ratingCount', + 'skipCount', + 'lastRatedAt', ]; for (final key in numericKeys) { final val = json[key]; @@ -2544,16 +2568,16 @@ class PlexClient { /// POSTs to the tune endpoint and extracts metadata, session info, and /// capture buffer data from the response. Call [buildLiveStreamPath] after /// to build the actual stream URL (with optional offset for time-shift). - Future<({ - PlexMetadata metadata, - String sessionPath, - String sessionIdentifier, - CaptureBuffer? captureBuffer, - int? beginsAt, - })?> tuneChannel( - String dvrKey, - String channelIdentifier, - ) async { + Future< + ({ + PlexMetadata metadata, + String sessionPath, + String sessionIdentifier, + CaptureBuffer? captureBuffer, + int? beginsAt, + })? + > + tuneChannel(String dvrKey, String channelIdentifier) async { try { final sessionIdentifier = generateSessionIdentifier(); @@ -2571,7 +2595,11 @@ class PlexClient { if (container == null) return null; final containerStatus = container['status']; - final statusInt = containerStatus is num ? containerStatus.toInt() : containerStatus is String ? int.tryParse(containerStatus) : null; + final statusInt = containerStatus is num + ? containerStatus.toInt() + : containerStatus is String + ? int.tryParse(containerStatus) + : null; if (statusInt != null && statusInt != 0 && statusInt != 200) { final msg = container['message'] ?? 'Unknown error'; appLogger.w('Tune channel error: $msg (status: $containerStatus)'); @@ -2583,7 +2611,11 @@ class PlexClient { Map? metadataJson; int? beginsAt; final subscriptions = container['MediaSubscription']; - final subList = subscriptions is List ? subscriptions : subscriptions is Map ? [subscriptions] : null; + final subList = subscriptions is List + ? subscriptions + : subscriptions is Map + ? [subscriptions] + : null; if (subList != null && subList.isNotEmpty) { final sub = subList.first as Map; @@ -2611,7 +2643,11 @@ class PlexClient { } final ops = sub['MediaGrabOperation']; - final opList = ops is List ? ops : ops is Map ? [ops] : null; + final opList = ops is List + ? ops + : ops is Map + ? [ops] + : null; if (opList != null && opList.isNotEmpty) { final op = opList.first as Map; final nested = op['Metadata']; @@ -2632,7 +2668,9 @@ class PlexClient { } if (metadataJson == null) { - appLogger.w('Tune channel failed: ${container['message'] ?? 'no metadata'} (status: ${container['status']}, keys: ${container.keys.toList()})'); + appLogger.w( + 'Tune channel failed: ${container['message'] ?? 'no metadata'} (status: ${container['status']}, keys: ${container.keys.toList()})', + ); return null; } @@ -2652,9 +2690,7 @@ class PlexClient { CaptureBuffer? captureBuffer; final tsSource = container['TranscodeSession'] ?? metadataJson['TranscodeSession']; if (tsSource is List && tsSource.isNotEmpty) { - captureBuffer = CaptureBuffer.fromTranscodeSession( - tsSource.first as Map, - ); + captureBuffer = CaptureBuffer.fromTranscodeSession(tsSource.first as Map); } else if (tsSource is Map) { captureBuffer = CaptureBuffer.fromTranscodeSession(tsSource); } @@ -2761,7 +2797,9 @@ class PlexClient { // to extract generalDecisionCode, mdeDecisionCode, transcodeDecisionCode). final decisionBody = decisionResponse.data?.toString() ?? ''; if (decisionBody.isNotEmpty) { - appLogger.d('Decision response: ${decisionBody.length > 500 ? '${decisionBody.substring(0, 500)}...' : decisionBody}'); + appLogger.d( + 'Decision response: ${decisionBody.length > 500 ? '${decisionBody.substring(0, 500)}...' : decisionBody}', + ); } // Token is added by the caller via .withPlexToken() @@ -2800,10 +2838,7 @@ class PlexClient { /// Get favorite channels from the Plex cloud. Future> getFavoriteChannels() async { try { - final response = await _http.get( - _favoriteChannelsUrl, - headers: _providerVersionHeader, - ); + final response = await _http.get(_favoriteChannelsUrl, headers: _providerVersionHeader); final container = _getMediaContainer(response); if (container != null && container['FavoriteChannel'] != null) { return (container['FavoriteChannel'] as List) diff --git a/lib/services/saf_storage_service.dart b/lib/services/saf_storage_service.dart index 608b885d..68fdd07b 100644 --- a/lib/services/saf_storage_service.dart +++ b/lib/services/saf_storage_service.dart @@ -68,5 +68,4 @@ class SafStorageService { return null; } } - } diff --git a/lib/services/server_connection_orchestrator.dart b/lib/services/server_connection_orchestrator.dart index 37782285..a7c9e836 100644 --- a/lib/services/server_connection_orchestrator.dart +++ b/lib/services/server_connection_orchestrator.dart @@ -45,12 +45,8 @@ class ServerConnectionOrchestrator { servers, clientIdentifier: clientIdentifier, timeout: timeout, - onServerConnected: onServerStatus != null - ? (serverId, _) => onServerStatus(serverId, true) - : null, - onServerFailed: onServerStatus != null - ? (serverId, _) => onServerStatus(serverId, false) - : null, + onServerConnected: onServerStatus != null ? (serverId, _) => onServerStatus(serverId, true) : null, + onServerFailed: onServerStatus != null ? (serverId, _) => onServerStatus(serverId, false) : null, ); PlexClient? firstClient; diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart index fe58dc63..df9a60cf 100644 --- a/lib/services/settings_service.dart +++ b/lib/services/settings_service.dart @@ -77,10 +77,8 @@ class SettingsService extends BaseSharedPreferencesService { static const String _keyIntroPattern = 'intro_pattern'; static const String _keyCreditsPattern = 'credits_pattern'; - static const String defaultIntroPattern = - r'(?:^|\b)(?:intro(?:duction)?|opening)(?:\b|$)|^op(?:\s?\d+)?$'; - static const String defaultCreditsPattern = - r'(?:^|\b)(?:outro|closing|credits?|ending)(?:\b|$)|^ed(?:\s?\d+)?$'; + static const String defaultIntroPattern = r'(?:^|\b)(?:intro(?:duction)?|opening)(?:\b|$)|^op(?:\s?\d+)?$'; + static const String defaultCreditsPattern = r'(?:^|\b)(?:outro|closing|credits?|ending)(?:\b|$)|^ed(?:\s?\d+)?$'; static const String _keyCustomDownloadPath = 'custom_download_path'; static const String _keyCustomDownloadPathType = 'custom_download_path_type'; static const String _keyDownloadOnWifiOnly = 'download_on_wifi_only'; diff --git a/lib/services/sync_rule_executor.dart b/lib/services/sync_rule_executor.dart index 03809061..f483a730 100644 --- a/lib/services/sync_rule_executor.dart +++ b/lib/services/sync_rule_executor.dart @@ -152,7 +152,9 @@ class SyncRuleExecutor { static bool _isActiveDownload(DownloadProgress? p) => p != null && - (p.status == DownloadStatus.completed || p.status == DownloadStatus.downloading || p.status == DownloadStatus.queued); + (p.status == DownloadStatus.completed || + p.status == DownloadStatus.downloading || + p.status == DownloadStatus.queued); Future _collectUnwatchedForShow( PlexClient client, diff --git a/lib/services/track_manager.dart b/lib/services/track_manager.dart index a1863283..b8ec82f7 100644 --- a/lib/services/track_manager.dart +++ b/lib/services/track_manager.dart @@ -248,7 +248,8 @@ class TrackManager { onAudioTrackChanged(next); if (isActive()) { - final label = 'Audio: ${TrackLabelBuilder.buildAudioLabel(title: next.title, language: next.language, codec: next.codec, channelsCount: next.channelsCount, index: nextIndex)}'; + final label = + 'Audio: ${TrackLabelBuilder.buildAudioLabel(title: next.title, language: next.language, codec: next.codec, channelsCount: next.channelsCount, index: nextIndex)}'; showMessage?.call(label, duration: const Duration(seconds: 1)); } } @@ -315,7 +316,11 @@ class TrackManager { if (streamID != null) { appLogger.d('Matched subtitle by lang/title: streamID $streamID'); } else { - final matchedPlex = findPlexTrackForMpvSubtitle(track, info.subtitleTracks, allMpvTracks: player.state.tracks.subtitle); + final matchedPlex = findPlexTrackForMpvSubtitle( + track, + info.subtitleTracks, + allMpvTracks: player.state.tracks.subtitle, + ); streamID = matchedPlex?.id; if (streamID != null) { appLogger.d('Matched subtitle by properties: streamID $streamID'); @@ -338,9 +343,7 @@ class TrackManager { /// Rating key used for series/movie level language preferences. String get _preferenceRatingKey { - return metadata.isEpisode - ? (metadata.grandparentRatingKey ?? metadata.ratingKey) - : metadata.ratingKey; + return metadata.isEpisode ? (metadata.grandparentRatingKey ?? metadata.ratingKey) : metadata.ratingKey; } /// Common guard checks for track change handlers. diff --git a/lib/services/track_selection_service.dart b/lib/services/track_selection_service.dart index 44cfb0d5..4daedfde 100644 --- a/lib/services/track_selection_service.dart +++ b/lib/services/track_selection_service.dart @@ -17,7 +17,11 @@ import '../utils/language_codes.dart'; // differently. /// Find the MPV subtitle track that matches a Plex subtitle track -SubtitleTrack? findMpvTrackForPlexSubtitle(PlexSubtitleTrack plexTrack, List mpvTracks, {List? allPlexTracks}) { +SubtitleTrack? findMpvTrackForPlexSubtitle( + PlexSubtitleTrack plexTrack, + List mpvTracks, { + List? allPlexTracks, +}) { if (mpvTracks.isEmpty) return null; // For external subtitles, match by URI containing the Plex key @@ -38,7 +42,9 @@ SubtitleTrack? findMpvTrackForPlexSubtitle(PlexSubtitleTrack plexTrack, List !t.isExternal).toList() : null; - final plexOrdinal = allPlexTracks != null ? allPlexTracks.where((t) => !t.isExternal).toList().indexOf(plexTrack) : -1; + final plexOrdinal = allPlexTracks != null + ? allPlexTracks.where((t) => !t.isExternal).toList().indexOf(plexTrack) + : -1; for (final mpvTrack in mpvTracks) { // Skip external tracks when matching internal Plex tracks @@ -87,7 +93,11 @@ SubtitleTrack? findMpvTrackForPlexSubtitle(PlexSubtitleTrack plexTrack, List plexTracks, {List? allMpvTracks}) { +PlexSubtitleTrack? findPlexTrackForMpvSubtitle( + SubtitleTrack mpvTrack, + List plexTracks, { + List? allMpvTracks, +}) { if (plexTracks.isEmpty) return null; // For external subtitles, match by URI containing the Plex key @@ -155,7 +165,11 @@ PlexSubtitleTrack? findPlexTrackForMpvSubtitle(SubtitleTrack mpvTrack, List mpvTracks, {List? allPlexTracks}) { +AudioTrack? findMpvTrackForPlexAudio( + PlexAudioTrack plexTrack, + List mpvTracks, { + List? allPlexTracks, +}) { if (mpvTracks.isEmpty) return null; AudioTrack? bestMatch; @@ -209,7 +223,11 @@ AudioTrack? findMpvTrackForPlexAudio(PlexAudioTrack plexTrack, List } /// Find the Plex audio track that matches an MPV audio track -PlexAudioTrack? findPlexTrackForMpvAudio(AudioTrack mpvTrack, List plexTracks, {List? allMpvTracks}) { +PlexAudioTrack? findPlexTrackForMpvAudio( + AudioTrack mpvTrack, + List plexTracks, { + List? allMpvTracks, +}) { if (plexTracks.isEmpty) return null; PlexAudioTrack? bestMatch; @@ -587,7 +605,11 @@ class TrackSelectionService { final plexSelectedTrack = plexMediaInfo!.audioTracks.where((t) => t.selected).firstOrNull; if (plexSelectedTrack != null) { - final matchedMpvTrack = findMpvTrackForPlexAudio(plexSelectedTrack, availableTracks, allPlexTracks: plexMediaInfo!.audioTracks); + final matchedMpvTrack = findMpvTrackForPlexAudio( + plexSelectedTrack, + availableTracks, + allPlexTracks: plexMediaInfo!.audioTracks, + ); if (matchedMpvTrack != null) { return TrackSelectionResult(matchedMpvTrack, TrackSelectionPriority.plexSelected); @@ -649,7 +671,11 @@ class TrackSelectionService { final plexSelectedTrack = plexMediaInfo!.subtitleTracks.where((t) => t.selected).firstOrNull; if (plexSelectedTrack != null) { - final matchedMpvTrack = findMpvTrackForPlexSubtitle(plexSelectedTrack, availableTracks, allPlexTracks: plexMediaInfo!.subtitleTracks); + final matchedMpvTrack = findMpvTrackForPlexSubtitle( + plexSelectedTrack, + availableTracks, + allPlexTracks: plexMediaInfo!.subtitleTracks, + ); if (matchedMpvTrack != null) { return TrackSelectionResult(matchedMpvTrack, TrackSelectionPriority.plexSelected); diff --git a/lib/services/video_filter_manager.dart b/lib/services/video_filter_manager.dart index f0d3b54c..8c15048d 100644 --- a/lib/services/video_filter_manager.dart +++ b/lib/services/video_filter_manager.dart @@ -44,7 +44,13 @@ class VideoFilterManager { /// Callback invoked when boxFitMode changes, for external persistence final void Function(int mode)? onBoxFitModeChanged; - VideoFilterManager({required this.player, required this.availableVersions, required this.selectedMediaIndex, int initialBoxFitMode = 0, this.onBoxFitModeChanged}) : _boxFitMode = initialBoxFitMode { + VideoFilterManager({ + required this.player, + required this.availableVersions, + required this.selectedMediaIndex, + int initialBoxFitMode = 0, + this.onBoxFitModeChanged, + }) : _boxFitMode = initialBoxFitMode { _debouncedUpdateVideoFilter = debounce( updateVideoFilter, const Duration(milliseconds: 50), diff --git a/lib/theme/gapped_track_shape.dart b/lib/theme/gapped_track_shape.dart index 35d74ae5..f6e8b5b9 100644 --- a/lib/theme/gapped_track_shape.dart +++ b/lib/theme/gapped_track_shape.dart @@ -75,7 +75,9 @@ class GappedTrackShape extends SliderTrackShape with BaseSliderTrackShape { bottomLeft: innerRadius, ); - final canvas = context.canvas..save()..clipRRect(trackRRect); + final canvas = context.canvas + ..save() + ..clipRRect(trackRRect); if (thumbCenter.dx > leftRRect.left + sliderTheme.trackHeight! / 2) { canvas.drawRRect(leftRRect, leftPaint); diff --git a/lib/utils/dialogs.dart b/lib/utils/dialogs.dart index ac556448..84459ef9 100644 --- a/lib/utils/dialogs.dart +++ b/lib/utils/dialogs.dart @@ -126,10 +126,7 @@ Future<({bool confirmed, bool checked})> showConfirmDialogWithCheckbox( ), FocusableButton( onPressed: () => Navigator.pop(dialogContext, true), - child: FilledButton( - onPressed: () => Navigator.pop(dialogContext, true), - child: Text(confirmText), - ), + child: FilledButton(onPressed: () => Navigator.pop(dialogContext, true), child: Text(confirmText)), ), ], ); @@ -143,8 +140,19 @@ Future<({bool confirmed, bool checked})> showConfirmDialogWithCheckbox( /// Shows a delete confirmation dialog. /// Convenience wrapper around [showConfirmDialog] with destructive styling. -Future showDeleteConfirmation(BuildContext context, {required String title, required String message, String? confirmText}) { - return showConfirmDialog(context, title: title, message: message, confirmText: confirmText ?? t.common.delete, isDestructive: true); +Future showDeleteConfirmation( + BuildContext context, { + required String title, + required String message, + String? confirmText, +}) { + return showConfirmDialog( + context, + title: title, + message: message, + confirmText: confirmText ?? t.common.delete, + isDestructive: true, + ); } /// Shows a text input dialog for creating/naming items @@ -240,10 +248,7 @@ class _MultilineTextInputDialogState extends State<_MultilineTextInputDialog> { FocusableButton( focusNode: _saveFocusNode, onPressed: () => Navigator.pop(context, _controller.text), - child: TextButton( - onPressed: () => Navigator.pop(context, _controller.text), - child: Text(t.common.save), - ), + child: TextButton(onPressed: () => Navigator.pop(context, _controller.text), child: Text(t.common.save)), ), ], ); @@ -353,7 +358,12 @@ class _OptionPickerDialog extends StatefulWidget { final bool focusFirstItem; final Future Function(T value)? onBeforeClose; - const _OptionPickerDialog({required this.title, required this.options, this.focusFirstItem = false, this.onBeforeClose}); + const _OptionPickerDialog({ + required this.title, + required this.options, + this.focusFirstItem = false, + this.onBeforeClose, + }); @override State<_OptionPickerDialog> createState() => _OptionPickerDialogState(); diff --git a/lib/utils/download_utils.dart b/lib/utils/download_utils.dart index bf918106..b182cae8 100644 --- a/lib/utils/download_utils.dart +++ b/lib/utils/download_utils.dart @@ -55,7 +55,11 @@ Future showDownloadOptionsAndQueue( (icon: Symbols.download_rounded, label: t.downloads.allEpisodes, value: _DownloadChoice.all), (icon: Symbols.visibility_off_rounded, label: t.downloads.unwatchedOnly, value: _DownloadChoice.unwatched), (icon: Symbols.filter_5_rounded, label: t.downloads.nextNUnwatched(count: 5), value: _DownloadChoice.next5), - (icon: Symbols.filter_9_plus_rounded, label: t.downloads.nextNUnwatched(count: 10), value: _DownloadChoice.next10), + ( + icon: Symbols.filter_9_plus_rounded, + label: t.downloads.nextNUnwatched(count: 10), + value: _DownloadChoice.next10, + ), (icon: Symbols.tune_rounded, label: t.downloads.customAmount, value: _DownloadChoice.custom), ], onBeforeClose: (value) async { @@ -153,11 +157,7 @@ Future showPlaylistDownloadOptionsAndQueue( if (selected == null || !context.mounted) return null; - return await downloadProvider.queuePlaylistDownload( - items, - client, - filter: selected, - ); + return await downloadProvider.queuePlaylistDownload(items, client, filter: selected); } Future _showEpisodeCountDialog(BuildContext context, {String? title, String? hintText}) async { diff --git a/lib/utils/download_version_utils.dart b/lib/utils/download_version_utils.dart index 330f1209..9ecb42a1 100644 --- a/lib/utils/download_version_utils.dart +++ b/lib/utils/download_version_utils.dart @@ -13,11 +13,8 @@ class DownloadVersionConfig { final Set acceptedSignatures; final Future Function(PlexMetadata episode, List versions)? onVersionMismatch; - DownloadVersionConfig({ - this.mediaIndex = 0, - Set? acceptedSignatures, - this.onVersionMismatch, - }) : acceptedSignatures = acceptedSignatures ?? {}; + DownloadVersionConfig({this.mediaIndex = 0, Set? acceptedSignatures, this.onVersionMismatch}) + : acceptedSignatures = acceptedSignatures ?? {}; /// Create from a selected version's signature. factory DownloadVersionConfig.fromSignature( @@ -84,11 +81,10 @@ Future showVersionPickerDialog(BuildContext context, List( context, title: title, - options: List.generate(versions.length, (index) => ( - icon: Symbols.video_file_rounded, - label: versions[index].displayLabel, - value: index, - )), + options: List.generate( + versions.length, + (index) => (icon: Symbols.video_file_rounded, label: versions[index].displayLabel, value: index), + ), ); } @@ -105,13 +101,12 @@ Future?> fetchRepresentativeVersions(PlexClient client, P final seasons = await client.getChildren(metadata.ratingKey); // Skip Season 0 (Specials) as it may have different encoding final firstSeason = seasons.cast().firstWhere( - (s) => s?.type == 'season' && (s?.index ?? 0) > 0, - orElse: () => seasons.cast().firstWhere((s) => s?.type == 'season', orElse: () => null), - ); + (s) => s?.type == 'season' && (s?.index ?? 0) > 0, + orElse: () => seasons.cast().firstWhere((s) => s?.type == 'season', orElse: () => null), + ); if (firstSeason != null) { final episodes = await client.getChildren(firstSeason.ratingKey); - final firstEpisode = - episodes.cast().firstWhere((e) => e?.type == 'episode', orElse: () => null); + final firstEpisode = episodes.cast().firstWhere((e) => e?.type == 'episode', orElse: () => null); episodeRatingKey = firstEpisode?.ratingKey; } } diff --git a/lib/utils/focus_utils.dart b/lib/utils/focus_utils.dart index 8e8b12b7..5f76dded 100644 --- a/lib/utils/focus_utils.dart +++ b/lib/utils/focus_utils.dart @@ -18,5 +18,4 @@ class FocusUtils { } }); } - } diff --git a/lib/utils/future_extensions.dart b/lib/utils/future_extensions.dart index f76492e8..5d6a5bdd 100644 --- a/lib/utils/future_extensions.dart +++ b/lib/utils/future_extensions.dart @@ -4,8 +4,11 @@ extension NamedTimeoutExtension on Future { /// Like [Future.timeout], but the [TimeoutException] includes [operation] /// so crash reports identify which call timed out. Future namedTimeout(Duration timeLimit, {required String operation}) { - return timeout(timeLimit, onTimeout: () { - throw TimeoutException('$operation timed out', timeLimit); - }); + return timeout( + timeLimit, + onTimeout: () { + throw TimeoutException('$operation timed out', timeLimit); + }, + ); } } diff --git a/lib/utils/grid_size_calculator.dart b/lib/utils/grid_size_calculator.dart index 3ed9e01e..a16b7e53 100644 --- a/lib/utils/grid_size_calculator.dart +++ b/lib/utils/grid_size_calculator.dart @@ -21,11 +21,7 @@ class GridSizeCalculator { /// Calculates the max cross-axis extent accounting for outer padding. /// [density] is an int 1–5. - static double getMaxCrossAxisExtentWithPadding( - BuildContext context, - int density, - double horizontalPadding, - ) { + static double getMaxCrossAxisExtentWithPadding(BuildContext context, int density, double horizontalPadding) { final screenWidth = MediaQuery.of(context).size.width; final availableWidth = screenWidth - horizontalPadding; final f = LibraryDensity.factor(density); diff --git a/lib/utils/json_utils.dart b/lib/utils/json_utils.dart index e6070480..e67d7a63 100644 --- a/lib/utils/json_utils.dart +++ b/lib/utils/json_utils.dart @@ -3,17 +3,17 @@ /// to handle Plex API responses where numeric fields may arrive as strings /// (XML-to-JSON conversion). int? flexibleInt(Object? v) => switch (v) { - num n => n.toInt(), - String s => int.tryParse(s), - _ => null, - }; + num n => n.toInt(), + String s => int.tryParse(s), + _ => null, +}; /// Parse a value that may be [bool], [int] (0/1), or [String] ('1') to [bool]. /// Returns `false` for `null` or unrecognised values. /// Handles Plex API responses where boolean fields may arrive as integers. bool flexibleBool(Object? v) => switch (v) { - bool b => b, - int n => n == 1, - String s => s == '1', - _ => false, - }; + bool b => b, + int n => n == 1, + String s => s == '1', + _ => false, +}; diff --git a/lib/utils/log_redaction_manager.dart b/lib/utils/log_redaction_manager.dart index 44644508..91c997b8 100644 --- a/lib/utils/log_redaction_manager.dart +++ b/lib/utils/log_redaction_manager.dart @@ -13,10 +13,7 @@ class LogRedactionManager { static final RegExp _ipv4HostPattern = RegExp(r'^\d{1,3}([.-]\d{1,3}){3}$'); /// Pattern-based catch-all for Plex tokens in query strings/headers. - static final RegExp _plexTokenQueryParam = RegExp( - r'X-Plex-Token=[^&#\s]+', - caseSensitive: false, - ); + static final RegExp _plexTokenQueryParam = RegExp(r'X-Plex-Token=[^&#\s]+', caseSensitive: false); // Combined regex for single-pass redaction (rebuilt on set changes) static RegExp? _combinedPattern; diff --git a/lib/utils/media_navigation_helper.dart b/lib/utils/media_navigation_helper.dart index 91510645..fa4e236e 100644 --- a/lib/utils/media_navigation_helper.dart +++ b/lib/utils/media_navigation_helper.dart @@ -126,11 +126,8 @@ Future navigateToMediaItem( final result = await Navigator.push( context, MaterialPageRoute( - builder: (context) => MediaDetailScreen( - metadata: showStub, - isOffline: isOffline, - initialSeasonIndex: metadata.index, - ), + builder: (context) => + MediaDetailScreen(metadata: showStub, isOffline: isOffline, initialSeasonIndex: metadata.index), ), ); if (result == true) { diff --git a/lib/utils/platform_http_client_stub.dart b/lib/utils/platform_http_client_stub.dart index c3c37ec6..cbe3b139 100644 --- a/lib/utils/platform_http_client_stub.dart +++ b/lib/utils/platform_http_client_stub.dart @@ -2,5 +2,4 @@ import 'package:http/http.dart' as http; /// Fallback stub — should never be called; actual implementation is selected /// via conditional imports in `plex_http_client.dart`. -http.Client createPlatformClient() => - throw UnsupportedError('No platform HTTP client available'); +http.Client createPlatformClient() => throw UnsupportedError('No platform HTTP client available'); diff --git a/lib/utils/plex_http_client.dart b/lib/utils/plex_http_client.dart index d422fe70..ade64b56 100644 --- a/lib/utils/plex_http_client.dart +++ b/lib/utils/plex_http_client.dart @@ -12,8 +12,7 @@ import 'log_redaction_manager.dart'; import 'plex_http_exception.dart'; // Platform-specific imports are conditional -import 'platform_http_client_stub.dart' - if (dart.library.io) 'platform_http_client_io.dart' as platform; +import 'platform_http_client_stub.dart' if (dart.library.io) 'platform_http_client_io.dart' as platform; /// Response from [PlexHttpClient] requests. class PlexResponse { @@ -25,11 +24,7 @@ class PlexResponse { final Map headers; - PlexResponse({ - required this.statusCode, - this.data, - required this.headers, - }); + PlexResponse({required this.statusCode, this.data, required this.headers}); } /// Abort controller for cancelling in-flight HTTP requests. @@ -61,8 +56,8 @@ class PlexHttpClient { Map defaultHeaders = const {}, this.connectTimeout = const Duration(seconds: 10), this.receiveTimeout = const Duration(seconds: 120), - }) : _client = client ?? platform.createPlatformClient(), - defaultHeaders = Map.of(defaultHeaders); + }) : _client = client ?? platform.createPlatformClient(), + defaultHeaders = Map.of(defaultHeaders); /// The underlying [http.Client] for direct streaming / multipart requests. http.Client get inner => _client; @@ -82,12 +77,7 @@ class PlexHttpClient { Map? headers, Duration? timeout, AbortController? abort, - }) => - _send('GET', path, - queryParameters: queryParameters, - headers: headers, - timeout: timeout, - abort: abort); + }) => _send('GET', path, queryParameters: queryParameters, headers: headers, timeout: timeout, abort: abort); Future post( String path, { @@ -96,13 +86,15 @@ class PlexHttpClient { Object? body, Duration? timeout, AbortController? abort, - }) => - _send('POST', path, - queryParameters: queryParameters, - headers: headers, - body: body, - timeout: timeout, - abort: abort); + }) => _send( + 'POST', + path, + queryParameters: queryParameters, + headers: headers, + body: body, + timeout: timeout, + abort: abort, + ); Future put( String path, { @@ -111,13 +103,15 @@ class PlexHttpClient { Object? body, Duration? timeout, AbortController? abort, - }) => - _send('PUT', path, - queryParameters: queryParameters, - headers: headers, - body: body, - timeout: timeout, - abort: abort); + }) => _send( + 'PUT', + path, + queryParameters: queryParameters, + headers: headers, + body: body, + timeout: timeout, + abort: abort, + ); Future delete( String path, { @@ -125,19 +119,10 @@ class PlexHttpClient { Map? headers, Duration? timeout, AbortController? abort, - }) => - _send('DELETE', path, - queryParameters: queryParameters, - headers: headers, - timeout: timeout, - abort: abort); + }) => _send('DELETE', path, queryParameters: queryParameters, headers: headers, timeout: timeout, abort: abort); /// Fetch raw bytes (e.g. images, BIF files, subtitles). - Future getBytes( - String url, { - Map? headers, - Duration? timeout, - }) async { + Future getBytes(String url, {Map? headers, Duration? timeout}) async { final uri = _isAbsoluteUrl(url) ? Uri.parse(url) : _buildUri(url, null); final request = http.Request('GET', uri); request.headers.addAll({...defaultHeaders, ...?headers}); @@ -148,9 +133,10 @@ class PlexHttpClient { .send(request) .namedTimeout(timeout ?? connectTimeout, operation: 'GET ${uri.path} connect'); - final bytes = await streamed.stream - .toBytes() - .namedTimeout(timeout ?? receiveTimeout, operation: 'GET ${uri.path} receive'); + final bytes = await streamed.stream.toBytes().namedTimeout( + timeout ?? receiveTimeout, + operation: 'GET ${uri.path} receive', + ); sw.stop(); _logResponse('GET', uri, streamed.statusCode, sw.elapsedMilliseconds); @@ -162,12 +148,7 @@ class PlexHttpClient { } /// Stream-download a URL directly into a file. - Future downloadFile( - String url, - String filePath, { - Map? headers, - Duration? timeout, - }) async { + Future downloadFile(String url, String filePath, {Map? headers, Duration? timeout}) async { final uri = _isAbsoluteUrl(url) ? Uri.parse(url) : _buildUri(url, null); final request = http.Request('GET', uri); request.headers.addAll({...defaultHeaders, ...?headers}); @@ -190,8 +171,7 @@ class PlexHttpClient { } /// Send a streamed request (for image cache etc). - Future sendStreamed(http.BaseRequest request) => - _client.send(request); + Future sendStreamed(http.BaseRequest request) => _client.send(request); void close() => _client.close(); @@ -212,10 +192,7 @@ class PlexHttpClient { ? _appendQuery(Uri.parse(path), queryParameters) : _buildUri(path, queryParameters); - final mergedHeaders = { - ...defaultHeaders, - ...?headers, - }; + final mergedHeaders = {...defaultHeaders, ...?headers}; // Build the request — use AbortableRequest when abort is provided final http.Request request; @@ -235,19 +212,16 @@ class PlexHttpClient { .namedTimeout(timeout ?? connectTimeout, operation: '$method ${uri.path} connect'); // Phase 2: consume body (receive timeout) - final bytes = await streamed.stream - .toBytes() - .namedTimeout(timeout ?? receiveTimeout, operation: '$method ${uri.path} receive'); + final bytes = await streamed.stream.toBytes().namedTimeout( + timeout ?? receiveTimeout, + operation: '$method ${uri.path} receive', + ); sw.stop(); _logResponse(method, uri, streamed.statusCode, sw.elapsedMilliseconds); final data = await _decodeBody(bytes, streamed.headers); - return PlexResponse( - statusCode: streamed.statusCode, - data: data, - headers: streamed.headers, - ); + return PlexResponse(statusCode: streamed.statusCode, data: data, headers: streamed.headers); } catch (e) { sw.stop(); throw PlexHttpException.from(e, uri: uri); @@ -293,8 +267,7 @@ class PlexHttpClient { return parts.join('&'); } - static bool _isAbsoluteUrl(String url) => - url.startsWith('http://') || url.startsWith('https://'); + static bool _isAbsoluteUrl(String url) => url.startsWith('http://') || url.startsWith('https://'); // --------------------------------------------------------------------------- // Body serialization @@ -328,8 +301,7 @@ class PlexHttpClient { /// Decode the response body: lenient UTF-8, then JSON parse if applicable. /// Large payloads are decoded in a background isolate. - Future _decodeBody( - List bytes, Map headers) async { + Future _decodeBody(List bytes, Map headers) async { if (bytes.isEmpty) return null; final contentType = headers['content-type'] ?? ''; @@ -338,8 +310,7 @@ class PlexHttpClient { // For large JSON payloads, do both UTF-8 decode and JSON parse in a // single isolate roundtrip to avoid two context switches. if (isJson && bytes.length > 50 * 1024) { - return await tryIsolateRun( - () => jsonDecode(utf8.decode(bytes, allowMalformed: true))); + return await tryIsolateRun(() => jsonDecode(utf8.decode(bytes, allowMalformed: true))); } final body = bytes.length > 50 * 1024 @@ -354,9 +325,7 @@ class PlexHttpClient { // --------------------------------------------------------------------------- void _logResponse(String method, Uri uri, int statusCode, int ms) { - appLogger.d( - '$method ${LogRedactionManager.redact(uri.toString())} → $statusCode (${ms}ms)', - ); + appLogger.d('$method ${LogRedactionManager.redact(uri.toString())} → $statusCode (${ms}ms)'); } } diff --git a/lib/utils/plex_http_exception.dart b/lib/utils/plex_http_exception.dart index c067be7f..02a952a0 100644 --- a/lib/utils/plex_http_exception.dart +++ b/lib/utils/plex_http_exception.dart @@ -3,13 +3,7 @@ import 'dart:io'; import 'package:http/http.dart'; -enum PlexHttpErrorType { - connectionTimeout, - receiveTimeout, - connectionError, - cancelled, - unknown, -} +enum PlexHttpErrorType { connectionTimeout, receiveTimeout, connectionError, cancelled, unknown } class PlexHttpException implements Exception { final PlexHttpErrorType type; @@ -18,48 +12,26 @@ class PlexHttpException implements Exception { final dynamic responseData; final Uri? requestUri; - PlexHttpException({ - required this.type, - this.message, - this.statusCode, - this.responseData, - this.requestUri, - }); + PlexHttpException({required this.type, this.message, this.statusCode, this.responseData, this.requestUri}); /// Map a caught exception to a [PlexHttpException]. factory PlexHttpException.from(Object error, {Uri? uri}) { if (error is PlexHttpException) return error; if (error is RequestAbortedException) { - return PlexHttpException( - type: PlexHttpErrorType.cancelled, - message: error.message, - requestUri: error.uri ?? uri, - ); + return PlexHttpException(type: PlexHttpErrorType.cancelled, message: error.message, requestUri: error.uri ?? uri); } if (error is TimeoutException) { - return PlexHttpException( - type: PlexHttpErrorType.connectionTimeout, - message: error.message, - requestUri: uri, - ); + return PlexHttpException(type: PlexHttpErrorType.connectionTimeout, message: error.message, requestUri: uri); } if (error is SocketException) { - return PlexHttpException( - type: PlexHttpErrorType.connectionError, - message: error.message, - requestUri: uri, - ); + return PlexHttpException(type: PlexHttpErrorType.connectionError, message: error.message, requestUri: uri); } if (error is HttpException) { - return PlexHttpException( - type: PlexHttpErrorType.connectionError, - message: error.message, - requestUri: uri, - ); + return PlexHttpException(type: PlexHttpErrorType.connectionError, message: error.message, requestUri: uri); } if (error is ClientException) { @@ -70,11 +42,7 @@ class PlexHttpException implements Exception { ); } - return PlexHttpException( - type: PlexHttpErrorType.unknown, - message: error.toString(), - requestUri: uri, - ); + return PlexHttpException(type: PlexHttpErrorType.unknown, message: error.toString(), requestUri: uri); } @override diff --git a/lib/utils/scroll_utils.dart b/lib/utils/scroll_utils.dart index cadf3bd2..f4d259e4 100644 --- a/lib/utils/scroll_utils.dart +++ b/lib/utils/scroll_utils.dart @@ -8,7 +8,12 @@ void scrollContextToCenter(BuildContext? context) { if (context == null) return; WidgetsBinding.instance.addPostFrameCallback((_) { if (!context.mounted) return; - Scrollable.ensureVisible(context, alignment: 0.5, duration: const Duration(milliseconds: 200), curve: Curves.easeOut); + Scrollable.ensureVisible( + context, + alignment: 0.5, + duration: const Duration(milliseconds: 200), + curve: Curves.easeOut, + ); }); } diff --git a/lib/utils/snackbar_helper.dart b/lib/utils/snackbar_helper.dart index 3ec5eebc..f3b59c1f 100644 --- a/lib/utils/snackbar_helper.dart +++ b/lib/utils/snackbar_helper.dart @@ -65,13 +65,6 @@ void showGlobalErrorSnackBar(String message) { ); } -/// Shows an info snackbar using the root ScaffoldMessenger (survives navigation). -void showGlobalSnackBar(String message, {Duration duration = const Duration(seconds: 2)}) { - rootScaffoldMessengerKey.currentState - ?..removeCurrentSnackBar() - ..showSnackBar(SnackBar(content: Text(message), duration: duration)); -} - /// Shows an info snackbar through the main-screen messenger when available /// (so it floats above the mobile NavigationBar), falling back to the root /// messenger when the main screen is not mounted. diff --git a/lib/watch_together/screens/watch_together_screen.dart b/lib/watch_together/screens/watch_together_screen.dart index 7ff7a242..dc19c800 100644 --- a/lib/watch_together/screens/watch_together_screen.dart +++ b/lib/watch_together/screens/watch_together_screen.dart @@ -104,7 +104,10 @@ class _NotInSessionViewState extends State<_NotInSessionView> { final client = HttpClient(); client.connectionTimeout = const Duration(seconds: 5); final request = await client.getUrl(Uri.parse(WatchTogetherPeerService.healthUrlFor(_customRelayUrl))); - final response = await request.close().namedTimeout(const Duration(seconds: 5), operation: 'WatchTogether health check'); + final response = await request.close().namedTimeout( + const Duration(seconds: 5), + operation: 'WatchTogether health check', + ); final body = await response.transform(const SystemEncoding().decoder).join(); client.close(); if (!mounted) return; @@ -194,14 +197,16 @@ class _NotInSessionViewState extends State<_NotInSessionView> { child: Text(t.watchTogether.recentRooms, style: theme.textTheme.titleSmall), ), const SizedBox(height: 8), - ..._recentRooms.map((room) => _RecentRoomTile( - room: room, - isBusy: _isBusy, - isEntering: _enteringRoomCode == room.code, - onTap: () => _enterRoom(room), - onRename: () => _renameRoom(room), - onRemove: () => _removeRoom(room), - )), + ..._recentRooms.map( + (room) => _RecentRoomTile( + room: room, + isBusy: _isBusy, + isEntering: _enteringRoomCode == room.code, + onTap: () => _enterRoom(room), + onRename: () => _renameRoom(room), + onRemove: () => _removeRoom(room), + ), + ), ], ], ), @@ -385,12 +390,12 @@ class _RecentRoomTile extends StatelessWidget { : const Icon(Symbols.meeting_room_rounded), title: Text(title, maxLines: 1, overflow: TextOverflow.ellipsis), subtitle: room.name != null - ? Text(room.code, style: TextStyle(fontFamily: 'monospace', color: theme.colorScheme.onSurfaceVariant)) + ? Text( + room.code, + style: TextStyle(fontFamily: 'monospace', color: theme.colorScheme.onSurfaceVariant), + ) : null, - trailing: IconButton( - icon: const Icon(Symbols.more_vert_rounded), - onPressed: () => _showActions(context), - ), + trailing: IconButton(icon: const Icon(Symbols.more_vert_rounded), onPressed: () => _showActions(context)), onTap: isBusy ? null : onTap, ), ), diff --git a/lib/watch_together/services/recent_rooms_service.dart b/lib/watch_together/services/recent_rooms_service.dart index 230eac7e..3e7048a1 100644 --- a/lib/watch_together/services/recent_rooms_service.dart +++ b/lib/watch_together/services/recent_rooms_service.dart @@ -12,11 +12,11 @@ class RecentRoom { const RecentRoom({required this.code, this.name, required this.lastUsed, this.controlMode}); Map toJson() => { - 'code': code, - if (name != null) 'name': name, - 'lastUsed': lastUsed.millisecondsSinceEpoch, - if (controlMode != null) 'controlMode': controlMode!.index, - }; + 'code': code, + if (name != null) 'name': name, + 'lastUsed': lastUsed.millisecondsSinceEpoch, + if (controlMode != null) 'controlMode': controlMode!.index, + }; factory RecentRoom.fromJson(Map json) { final modeIndex = json['controlMode'] as int?; @@ -28,13 +28,18 @@ class RecentRoom { ); } - RecentRoom copyWith({String? code, String? name, DateTime? lastUsed, ControlMode? controlMode, bool clearName = false}) => - RecentRoom( - code: code ?? this.code, - name: clearName ? null : (name ?? this.name), - lastUsed: lastUsed ?? this.lastUsed, - controlMode: controlMode ?? this.controlMode, - ); + RecentRoom copyWith({ + String? code, + String? name, + DateTime? lastUsed, + ControlMode? controlMode, + bool clearName = false, + }) => RecentRoom( + code: code ?? this.code, + name: clearName ? null : (name ?? this.name), + lastUsed: lastUsed ?? this.lastUsed, + controlMode: controlMode ?? this.controlMode, + ); } class RecentRoomsService { diff --git a/lib/watch_together/services/watch_together_peer_service.dart b/lib/watch_together/services/watch_together_peer_service.dart index e7287fcb..f54cb23c 100644 --- a/lib/watch_together/services/watch_together_peer_service.dart +++ b/lib/watch_together/services/watch_together_peer_service.dart @@ -38,7 +38,7 @@ class WatchTogetherPeerService with KeepaliveMixin { } WatchTogetherPeerService({String? customBaseUrl}) - : _baseUrl = (customBaseUrl != null && customBaseUrl.trim().isNotEmpty) ? customBaseUrl.trim() : defaultBaseUrl; + : _baseUrl = (customBaseUrl != null && customBaseUrl.trim().isNotEmpty) ? customBaseUrl.trim() : defaultBaseUrl; WebSocketChannel? _channel; StreamSubscription? _channelSubscription; @@ -131,7 +131,8 @@ class WatchTogetherPeerService with KeepaliveMixin { }, onError: (error) { appLogger.e('WatchTogether: WebSocket error', error: error); - _safeAdd(_errorController, + _safeAdd( + _errorController, PeerError(type: PeerErrorType.serverError, message: 'WebSocket error: $error', originalError: error), ); if (setupCompleter != null && !setupCompleter.isCompleted) { @@ -277,7 +278,8 @@ class WatchTogetherPeerService with KeepaliveMixin { void _attemptReconnect() { if (_reconnectAttempts >= _maxReconnectAttempts) { appLogger.e('WatchTogether: Max reconnect attempts reached'); - _safeAdd(_errorController, + _safeAdd( + _errorController, const PeerError( type: PeerErrorType.connectionFailed, message: 'Lost connection to relay after multiple reconnect attempts', @@ -314,7 +316,10 @@ class WatchTogetherPeerService with KeepaliveMixin { final createCompleter = Completer(); _listenToChannel(channel, setupCompleter: createCompleter); _sendRaw({'type': 'create', 'sessionId': _sessionId, 'peerId': _myPeerId}); - await createCompleter.future.namedTimeout(const Duration(seconds: 10), operation: 'WatchTogether reconnect create'); + await createCompleter.future.namedTimeout( + const Duration(seconds: 10), + operation: 'WatchTogether reconnect create', + ); } else { rethrow; } diff --git a/lib/watch_together/services/watch_together_sync_manager.dart b/lib/watch_together/services/watch_together_sync_manager.dart index 1d15eabd..fe7c2872 100644 --- a/lib/watch_together/services/watch_together_sync_manager.dart +++ b/lib/watch_together/services/watch_together_sync_manager.dart @@ -673,10 +673,7 @@ class WatchTogetherSyncManager { _firstPlayCompleted = true; final pos = _deferredPlayPosition; _deferredPlayPosition = null; - await _applyRemotePlay( - position: pos, - expectedAttachmentGeneration: queuedAttachmentGeneration, - ); + await _applyRemotePlay(position: pos, expectedAttachmentGeneration: queuedAttachmentGeneration); // Broadcast play to all peers now that everyone is ready _broadcastPlayPause(true); } diff --git a/lib/watch_together/widgets/watch_together_overlay.dart b/lib/watch_together/widgets/watch_together_overlay.dart index 87063f39..dc22c077 100644 --- a/lib/watch_together/widgets/watch_together_overlay.dart +++ b/lib/watch_together/widgets/watch_together_overlay.dart @@ -414,10 +414,7 @@ class _StatusPill extends StatelessWidget { child: Center( child: Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), - decoration: const BoxDecoration( - color: Colors.black54, - borderRadius: BorderRadius.all(Radius.circular(20)), - ), + decoration: const BoxDecoration(color: Colors.black54, borderRadius: BorderRadius.all(Radius.circular(20))), child: Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/widgets/artwork_picker_dialog.dart b/lib/widgets/artwork_picker_dialog.dart index 1aecc716..141df725 100644 --- a/lib/widgets/artwork_picker_dialog.dart +++ b/lib/widgets/artwork_picker_dialog.dart @@ -16,12 +16,7 @@ class ArtworkPickerDialog extends StatefulWidget { final String ratingKey; final String element; // "posters" or "arts" - const ArtworkPickerDialog({ - super.key, - required this.client, - required this.ratingKey, - required this.element, - }); + const ArtworkPickerDialog({super.key, required this.client, required this.ratingKey, required this.element}); @override State createState() => _ArtworkPickerDialogState(); @@ -106,10 +101,7 @@ class _ArtworkPickerDialogState extends State { } Future _uploadFile() async { - final result = await FilePickerService.instance.pickFiles( - type: FileType.image, - withData: true, - ); + final result = await FilePickerService.instance.pickFiles(type: FileType.image, withData: true); if (result == null || result.files.isEmpty || !mounted) return; @@ -138,9 +130,7 @@ class _ArtworkPickerDialogState extends State { content: SizedBox( width: 500, height: 400, - child: _isLoading - ? const Center(child: CircularProgressIndicator()) - : _buildArtworkContent(), + child: _isLoading ? const Center(child: CircularProgressIndicator()) : _buildArtworkContent(), ), actions: [ if (_isApplying) @@ -167,10 +157,7 @@ class _ArtworkPickerDialogState extends State { FocusableButton( autofocus: true, onPressed: () => Navigator.pop(context), - child: TextButton( - onPressed: () => Navigator.pop(context), - child: Text(t.common.cancel), - ), + child: TextButton(onPressed: () => Navigator.pop(context), child: Text(t.common.cancel)), ), ], ); @@ -214,11 +201,7 @@ class _ArtworkPickerDialogState extends State { ), child: ClipRRect( borderRadius: const BorderRadius.all(Radius.circular(8)), - child: PlexOptimizedImage( - client: widget.client, - imagePath: thumbUrl, - fit: BoxFit.contain, - ), + child: PlexOptimizedImage(client: widget.client, imagePath: thumbUrl, fit: BoxFit.contain), ), ), if (isSelected) @@ -227,10 +210,7 @@ class _ArtworkPickerDialogState extends State { bottom: 6, child: Container( padding: const EdgeInsets.all(4), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.primary, - shape: BoxShape.circle, - ), + decoration: BoxDecoration(color: Theme.of(context).colorScheme.primary, shape: BoxShape.circle), child: Icon(Symbols.check_rounded, size: 16, color: Theme.of(context).colorScheme.onPrimary), ), ), diff --git a/lib/widgets/collapsible_text.dart b/lib/widgets/collapsible_text.dart index 0a7fd849..23c41fef 100644 --- a/lib/widgets/collapsible_text.dart +++ b/lib/widgets/collapsible_text.dart @@ -48,7 +48,12 @@ class _CollapsibleTextState extends State { TextSpan( children: [ TextSpan(text: displayText, style: style), - if (!_expanded) WidgetSpan(alignment: widget.small ? PlaceholderAlignment.baseline : PlaceholderAlignment.middle, baseline: widget.small ? TextBaseline.alphabetic : null, child: _buildBadge(context)), + if (!_expanded) + WidgetSpan( + alignment: widget.small ? PlaceholderAlignment.baseline : PlaceholderAlignment.middle, + baseline: widget.small ? TextBaseline.alphabetic : null, + child: _buildBadge(context), + ), ], ), ), diff --git a/lib/widgets/companion_remote/discovery_view.dart b/lib/widgets/companion_remote/discovery_view.dart index 47f646a9..a129f68d 100644 --- a/lib/widgets/companion_remote/discovery_view.dart +++ b/lib/widgets/companion_remote/discovery_view.dart @@ -234,17 +234,19 @@ class _DiscoveryViewState extends State { children: [ Text(t.companionRemote.pairing.availableDevices, style: Theme.of(context).textTheme.titleMedium), const SizedBox(height: 8), - ..._hosts.map((host) => Card( - child: ListTile( - leading: Icon(_platformIcon(host.platform), size: 32), - title: Text(host.name), - subtitle: Text(host.platform), - trailing: _isConnecting - ? const SizedBox(width: 24, height: 24, child: CircularProgressIndicator(strokeWidth: 2)) - : const Icon(Icons.arrow_forward), - onTap: _isConnecting ? null : () => _connect(() => _provider.connectToDiscoveredHost(host)), - ), - )), + ..._hosts.map( + (host) => Card( + child: ListTile( + leading: Icon(_platformIcon(host.platform), size: 32), + title: Text(host.name), + subtitle: Text(host.platform), + trailing: _isConnecting + ? const SizedBox(width: 24, height: 24, child: CircularProgressIndicator(strokeWidth: 2)) + : const Icon(Icons.arrow_forward), + onTap: _isConnecting ? null : () => _connect(() => _provider.connectToDiscoveredHost(host)), + ), + ), + ), ], ); } diff --git a/lib/widgets/companion_remote/remote_session_dialog.dart b/lib/widgets/companion_remote/remote_session_dialog.dart index fb987088..bf938346 100644 --- a/lib/widgets/companion_remote/remote_session_dialog.dart +++ b/lib/widgets/companion_remote/remote_session_dialog.dart @@ -185,9 +185,7 @@ class _RemoteSessionDialogState extends State { if (provider.isHostServerRunning) { return Text( t.companionRemote.session.serverRunning, - style: Theme.of(context).textTheme.bodyMedium?.copyWith( - color: Theme.of(context).textTheme.bodySmall?.color, - ), + style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Theme.of(context).textTheme.bodySmall?.color), ); } return Text( @@ -207,10 +205,7 @@ class _RemoteSessionDialogState extends State { Container( width: 12, height: 12, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: isRunning ? Colors.green : Colors.grey, - ), + decoration: BoxDecoration(shape: BoxShape.circle, color: isRunning ? Colors.green : Colors.grey), ), const SizedBox(width: 16), Expanded( @@ -218,9 +213,7 @@ class _RemoteSessionDialogState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - isRunning - ? t.companionRemote.session.serverRunning - : t.companionRemote.session.serverStopped, + isRunning ? t.companionRemote.session.serverRunning : t.companionRemote.session.serverStopped, style: Theme.of(context).textTheme.titleMedium, ), const SizedBox(height: 4), diff --git a/lib/widgets/download_tree_view.dart b/lib/widgets/download_tree_view.dart index 315e3ab1..fd04ba9f 100644 --- a/lib/widgets/download_tree_view.dart +++ b/lib/widgets/download_tree_view.dart @@ -37,7 +37,6 @@ class DownloadTreeNode { int get completedChildrenCount { return children.where((child) => child.status == DownloadStatus.completed).length; } - } /// Type of node in the download tree @@ -691,8 +690,7 @@ class _DownloadTreeItemState extends State<_DownloadTreeItem> { ], // Error message for failed downloads - if (_effectiveStatus == DownloadStatus.failed && - widget.node.downloadProgress?.errorMessage != null) ...[ + if (_effectiveStatus == DownloadStatus.failed && widget.node.downloadProgress?.errorMessage != null) ...[ const SizedBox(height: 4), Text( widget.node.downloadProgress!.errorMessage!, diff --git a/lib/widgets/episode_card.dart b/lib/widgets/episode_card.dart index 3b6738d2..e8a0c255 100644 --- a/lib/widgets/episode_card.dart +++ b/lib/widgets/episode_card.dart @@ -141,267 +141,274 @@ class _EpisodeCardState extends State { borderRadius: BorderRadius.circular(FocusTheme.defaultBorderRadius), ), padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), - child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Episode thumbnail (16:9 aspect ratio, fixed width) - SizedBox( - width: 160, - child: Stack( - children: [ - ClipRRect( - borderRadius: const BorderRadius.all(Radius.circular(6)), - child: AspectRatio( - aspectRatio: 16 / 9, - child: shouldBlur - ? ClipRect( - child: ImageFiltered( - imageFilter: ImageFilter.blur(sigmaX: 12, sigmaY: 12), - child: _buildEpisodeThumbnail(), - ), - ) - : _buildEpisodeThumbnail(), - ), - ), - - // Play overlay - Positioned.fill( - child: Container( - decoration: BoxDecoration( - borderRadius: const BorderRadius.all(Radius.circular(6)), - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [Colors.transparent, Colors.black.withValues(alpha: 0.2)], - ), - ), - child: Center( - child: Container( - padding: const EdgeInsets.all(6), - decoration: BoxDecoration( - color: Colors.black.withValues(alpha: 0.6), - shape: BoxShape.circle, - ), - child: const AppIcon(Symbols.play_arrow_rounded, fill: 1, color: Colors.white, size: 20), - ), - ), - ), - ), - - // Progress bar at bottom - if (hasActiveProgress) - Positioned( - bottom: 0, - left: 0, - right: 0, - child: ClipRRect( - borderRadius: const BorderRadius.only( - bottomLeft: Radius.circular(6), - bottomRight: Radius.circular(6), - ), - child: LinearProgressIndicator( - value: progress, - backgroundColor: tokens(context).outline, - minHeight: 3, - ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Episode thumbnail (16:9 aspect ratio, fixed width) + SizedBox( + width: 160, + child: Stack( + children: [ + ClipRRect( + borderRadius: const BorderRadius.all(Radius.circular(6)), + child: AspectRatio( + aspectRatio: 16 / 9, + child: shouldBlur + ? ClipRect( + child: ImageFiltered( + imageFilter: ImageFilter.blur(sigmaX: 12, sigmaY: 12), + child: _buildEpisodeThumbnail(), + ), + ) + : _buildEpisodeThumbnail(), ), ), - if (widget.episode.isWatched && !hasActiveProgress) - Positioned( - top: 4, - right: 4, + // Play overlay + Positioned.fill( child: Container( - padding: const EdgeInsets.all(4), decoration: BoxDecoration( - color: tokens(context).text, - shape: BoxShape.circle, - boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.3), blurRadius: 4)], + borderRadius: const BorderRadius.all(Radius.circular(6)), + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [Colors.transparent, Colors.black.withValues(alpha: 0.2)], + ), ), - child: AppIcon(Symbols.check_rounded, fill: 1, color: tokens(context).bg, size: 12), - ), - ), - ], - ), - ), - - const SizedBox(width: 12), - - // Episode info - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Episode number and title with download status - Consumer( - builder: (context, downloadProvider, _) { - // Build download status icon based on state - Widget? downloadStatusIcon; - - // Only show download status in online mode - if (!widget.isOffline && widget.episode.serverId != null) { - final globalKey = widget.episode.globalKey; - final progress = downloadProvider.getProgress(globalKey); - final isQueueing = downloadProvider.isQueueing(globalKey); - - // Helper to get status-specific muted color - Color getMutedColor(Color baseColor) { - return Color.lerp( - tokens(context).textMuted, - baseColor, - 0.3, // 30% of the status color, 70% muted - )!; - } - - if (isQueueing) { - // Queueing state - building queue - downloadStatusIcon = SizedBox( - width: 12, - height: 12, - child: CircularProgressIndicator(strokeWidth: 1.5, color: tokens(context).textMuted), - ); - } else if (progress?.status == DownloadStatus.queued) { - // Queued state - waiting to download - downloadStatusIcon = AppIcon( - Symbols.schedule_rounded, - fill: 1, - size: 12, - color: getMutedColor(Colors.orange), - ); - } else if (progress?.status == DownloadStatus.downloading) { - // Downloading state - active download with radial progress - downloadStatusIcon = SizedBox( - width: 14, - height: 14, - child: Stack( - alignment: Alignment.center, - children: [ - // Background circle - CircularProgressIndicator( - value: 1.0, - strokeWidth: 1.5, - valueColor: AlwaysStoppedAnimation( - getMutedColor(Theme.of(context).colorScheme.primary).withValues(alpha: 0.3), - ), - ), - // Progress circle - CircularProgressIndicator( - value: progress?.progressPercent, - strokeWidth: 1.5, - valueColor: AlwaysStoppedAnimation( - getMutedColor(Theme.of(context).colorScheme.primary), - ), - ), - ], + child: Center( + child: Container( + padding: const EdgeInsets.all(6), + decoration: BoxDecoration( + color: Colors.black.withValues(alpha: 0.6), + shape: BoxShape.circle, ), - ); - } else if (progress?.status == DownloadStatus.paused) { - // Paused state - download paused - downloadStatusIcon = AppIcon( - Symbols.pause_circle_outline_rounded, - fill: 1, - size: 12, - color: getMutedColor(Colors.amber), - ); - } else if (progress?.status == DownloadStatus.failed) { - // Failed state - download failed - downloadStatusIcon = AppIcon( - Symbols.error_outline_rounded, - fill: 1, - size: 12, - color: getMutedColor(Colors.red), - ); - } else if (progress?.status == DownloadStatus.cancelled) { - // Cancelled state - download cancelled - downloadStatusIcon = AppIcon( - Symbols.cancel_rounded, - fill: 1, - size: 12, - color: getMutedColor(Colors.grey), - ); - } else if (progress?.status == DownloadStatus.completed) { - // Completed state - download complete - downloadStatusIcon = AppIcon( - Symbols.file_download_done_rounded, - fill: 1, - size: 12, - color: getMutedColor(Colors.green), - ); - } - // Note: No icon shown if not downloaded (null) - } - - return Row( - children: [ - // Episode number badge - if (widget.episode.index != null) - Container( - padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.primaryContainer, - borderRadius: const BorderRadius.all(Radius.circular(3)), - ), - child: Text( - 'E${widget.episode.index}', - style: TextStyle( - color: Theme.of(context).colorScheme.onPrimaryContainer, - fontSize: 11, - fontWeight: FontWeight.w600, - ), - ), - ), - // Download status icon (if present) - if (downloadStatusIcon != null) ...[const SizedBox(width: 6), downloadStatusIcon], - const SizedBox(width: 8), - // Episode title - Expanded( - child: Text( - widget.episode.title!, - style: Theme.of(context).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.bold), - maxLines: 2, - overflow: TextOverflow.ellipsis, + child: const AppIcon( + Symbols.play_arrow_rounded, + fill: 1, + color: Colors.white, + size: 20, ), ), - ], - ); - }, - ), + ), + ), + ), - // Summary (hidden when spoiler protection is active) - if (!shouldBlur && widget.episode.summary != null && widget.episode.summary!.isNotEmpty) ...[ - const SizedBox(height: 6), - if (PlatformDetector.isTV()) - Text( - widget.episode.summary!, - style: Theme.of( - context, - ).textTheme.bodySmall?.copyWith(color: tokens(context).textMuted, height: 1.3), - maxLines: 3, - overflow: TextOverflow.ellipsis, - ) - else - CollapsibleText( - text: widget.episode.summary!, - maxLines: 3, - small: true, - style: Theme.of( - context, - ).textTheme.bodySmall?.copyWith(color: tokens(context).textMuted, height: 1.3), + // Progress bar at bottom + if (hasActiveProgress) + Positioned( + bottom: 0, + left: 0, + right: 0, + child: ClipRRect( + borderRadius: const BorderRadius.only( + bottomLeft: Radius.circular(6), + bottomRight: Radius.circular(6), + ), + child: LinearProgressIndicator( + value: progress, + backgroundColor: tokens(context).outline, + minHeight: 3, + ), + ), + ), + + if (widget.episode.isWatched && !hasActiveProgress) + Positioned( + top: 4, + right: 4, + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: tokens(context).text, + shape: BoxShape.circle, + boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.3), blurRadius: 4)], + ), + child: AppIcon(Symbols.check_rounded, fill: 1, color: tokens(context).bg, size: 12), + ), ), ], - - // Metadata row (duration, watched status) - const SizedBox(height: 8), - _buildEpisodeMetaRow(context), - ], + ), ), - ), - ], + + const SizedBox(width: 12), + + // Episode info + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Episode number and title with download status + Consumer( + builder: (context, downloadProvider, _) { + // Build download status icon based on state + Widget? downloadStatusIcon; + + // Only show download status in online mode + if (!widget.isOffline && widget.episode.serverId != null) { + final globalKey = widget.episode.globalKey; + final progress = downloadProvider.getProgress(globalKey); + final isQueueing = downloadProvider.isQueueing(globalKey); + + // Helper to get status-specific muted color + Color getMutedColor(Color baseColor) { + return Color.lerp( + tokens(context).textMuted, + baseColor, + 0.3, // 30% of the status color, 70% muted + )!; + } + + if (isQueueing) { + // Queueing state - building queue + downloadStatusIcon = SizedBox( + width: 12, + height: 12, + child: CircularProgressIndicator(strokeWidth: 1.5, color: tokens(context).textMuted), + ); + } else if (progress?.status == DownloadStatus.queued) { + // Queued state - waiting to download + downloadStatusIcon = AppIcon( + Symbols.schedule_rounded, + fill: 1, + size: 12, + color: getMutedColor(Colors.orange), + ); + } else if (progress?.status == DownloadStatus.downloading) { + // Downloading state - active download with radial progress + downloadStatusIcon = SizedBox( + width: 14, + height: 14, + child: Stack( + alignment: Alignment.center, + children: [ + // Background circle + CircularProgressIndicator( + value: 1.0, + strokeWidth: 1.5, + valueColor: AlwaysStoppedAnimation( + getMutedColor(Theme.of(context).colorScheme.primary).withValues(alpha: 0.3), + ), + ), + // Progress circle + CircularProgressIndicator( + value: progress?.progressPercent, + strokeWidth: 1.5, + valueColor: AlwaysStoppedAnimation( + getMutedColor(Theme.of(context).colorScheme.primary), + ), + ), + ], + ), + ); + } else if (progress?.status == DownloadStatus.paused) { + // Paused state - download paused + downloadStatusIcon = AppIcon( + Symbols.pause_circle_outline_rounded, + fill: 1, + size: 12, + color: getMutedColor(Colors.amber), + ); + } else if (progress?.status == DownloadStatus.failed) { + // Failed state - download failed + downloadStatusIcon = AppIcon( + Symbols.error_outline_rounded, + fill: 1, + size: 12, + color: getMutedColor(Colors.red), + ); + } else if (progress?.status == DownloadStatus.cancelled) { + // Cancelled state - download cancelled + downloadStatusIcon = AppIcon( + Symbols.cancel_rounded, + fill: 1, + size: 12, + color: getMutedColor(Colors.grey), + ); + } else if (progress?.status == DownloadStatus.completed) { + // Completed state - download complete + downloadStatusIcon = AppIcon( + Symbols.file_download_done_rounded, + fill: 1, + size: 12, + color: getMutedColor(Colors.green), + ); + } + // Note: No icon shown if not downloaded (null) + } + + return Row( + children: [ + // Episode number badge + if (widget.episode.index != null) + Container( + padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 3), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primaryContainer, + borderRadius: const BorderRadius.all(Radius.circular(3)), + ), + child: Text( + 'E${widget.episode.index}', + style: TextStyle( + color: Theme.of(context).colorScheme.onPrimaryContainer, + fontSize: 11, + fontWeight: FontWeight.w600, + ), + ), + ), + // Download status icon (if present) + if (downloadStatusIcon != null) ...[const SizedBox(width: 6), downloadStatusIcon], + const SizedBox(width: 8), + // Episode title + Expanded( + child: Text( + widget.episode.title!, + style: Theme.of( + context, + ).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.bold), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ); + }, + ), + + // Summary (hidden when spoiler protection is active) + if (!shouldBlur && widget.episode.summary != null && widget.episode.summary!.isNotEmpty) ...[ + const SizedBox(height: 6), + if (PlatformDetector.isTV()) + Text( + widget.episode.summary!, + style: Theme.of( + context, + ).textTheme.bodySmall?.copyWith(color: tokens(context).textMuted, height: 1.3), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ) + else + CollapsibleText( + text: widget.episode.summary!, + maxLines: 3, + small: true, + style: Theme.of( + context, + ).textTheme.bodySmall?.copyWith(color: tokens(context).textMuted, height: 1.3), + ), + ], + + // Metadata row (duration, watched status) + const SizedBox(height: 8), + _buildEpisodeMetaRow(context), + ], + ), + ), + ], + ), ), ), ), ), - ), ); } diff --git a/lib/widgets/file_info_bottom_sheet.dart b/lib/widgets/file_info_bottom_sheet.dart index 58b5ff00..48ccc571 100644 --- a/lib/widgets/file_info_bottom_sheet.dart +++ b/lib/widgets/file_info_bottom_sheet.dart @@ -35,11 +35,7 @@ class _FileInfoBottomSheetState extends State { return Column( children: [ // Header - BottomSheetHeader( - title: t.fileInfo.title, - icon: Symbols.info_rounded, - closeFocusNode: _initialFocusNode, - ), + BottomSheetHeader(title: t.fileInfo.title, icon: Symbols.info_rounded, closeFocusNode: _initialFocusNode), // Content Expanded( child: ListView( @@ -47,10 +43,7 @@ class _FileInfoBottomSheetState extends State { children: [ // Title if (widget.title.isNotEmpty) ...[ - Text( - widget.title, - style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w500), - ), + Text(widget.title, style: const TextStyle(fontSize: 16, fontWeight: FontWeight.w500)), const SizedBox(height: 20), ], @@ -128,10 +121,7 @@ class _FileInfoBottomSheetState extends State { } Widget _buildSectionHeader(String title) { - return Text( - title, - style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold), - ); + return Text(title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)); } Widget _buildInfoRow(String label, String value, {bool isMonospace = false}) { @@ -184,7 +174,10 @@ class _FocusableInfoRowState extends State<_FocusableInfoRow> { children: [ SizedBox( width: 140, - child: Text(widget.label, style: TextStyle(color: Theme.of(context).textTheme.bodySmall?.color, fontSize: 14)), + child: Text( + widget.label, + style: TextStyle(color: Theme.of(context).textTheme.bodySmall?.color, fontSize: 14), + ), ), Expanded( child: Text( diff --git a/lib/widgets/hub_section.dart b/lib/widgets/hub_section.dart index 15ed0875..db0e7462 100644 --- a/lib/widgets/hub_section.dart +++ b/lib/widgets/hub_section.dart @@ -337,7 +337,9 @@ class HubSectionState extends State { onTap: widget.hub.more ? () => _navigateToHubDetail(context) : null, borderRadius: BorderRadius.circular(tokens(context).radiusSm), child: Padding( - padding: widget.inset ? const EdgeInsets.symmetric(vertical: 2) : const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + padding: widget.inset + ? const EdgeInsets.symmetric(vertical: 2) + : const EdgeInsets.symmetric(horizontal: 4, vertical: 2), child: Row( mainAxisSize: MainAxisSize.min, children: [ @@ -386,7 +388,11 @@ class HubSectionState extends State { child: LayoutBuilder( builder: (context, constraints) { final settings = context.watch(); - final baseCardWidth = GridSizeCalculator.getCellWidth(constraints.maxWidth, context, settings.libraryDensity); + final baseCardWidth = GridSizeCalculator.getCellWidth( + constraints.maxWidth, + context, + settings.libraryDensity, + ); // Get episode poster mode setting final episodePosterMode = settings.episodePosterMode; @@ -427,7 +433,9 @@ class HubSectionState extends State { controller: scrollController, scrollDirection: Axis.horizontal, clipBehavior: Clip.none, - padding: widget.inset ? const EdgeInsets.symmetric(vertical: 2) : const EdgeInsets.symmetric(horizontal: 8, vertical: 2), + padding: widget.inset + ? const EdgeInsets.symmetric(vertical: 2) + : const EdgeInsets.symmetric(horizontal: 8, vertical: 2), itemCount: isKeyboardMode ? _totalItemCount : widget.hub.items.length, itemBuilder: (context, index) { final isItemFocused = hasFocus && index == _focusedIndex; @@ -435,7 +443,9 @@ class HubSectionState extends State { // "View All" card at end if (index == widget.hub.items.length) { return Padding( - padding: widget.inset ? const EdgeInsets.only(right: 4) : const EdgeInsets.symmetric(horizontal: 2), + padding: widget.inset + ? const EdgeInsets.only(right: 4) + : const EdgeInsets.symmetric(horizontal: 2), child: FocusBuilders.buildLockedFocusWrapper( context: context, isFocused: isItemFocused, @@ -473,7 +483,9 @@ class HubSectionState extends State { final item = widget.hub.items[index]; return Padding( - padding: widget.inset ? const EdgeInsets.only(right: 4) : const EdgeInsets.symmetric(horizontal: 2), + padding: widget.inset + ? const EdgeInsets.only(right: 4) + : const EdgeInsets.symmetric(horizontal: 2), child: FocusBuilders.buildLockedFocusWrapper( context: context, isFocused: isItemFocused, @@ -501,7 +513,9 @@ class HubSectionState extends State { ) else Padding( - padding: widget.inset ? const EdgeInsets.symmetric(vertical: 8) : const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + padding: widget.inset + ? const EdgeInsets.symmetric(vertical: 8) + : const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Text( t.messages.noItemsAvailable, style: Theme.of(context).textTheme.bodySmall?.copyWith(color: Colors.grey), diff --git a/lib/widgets/media_card.dart b/lib/widgets/media_card.dart index 90191368..74107666 100644 --- a/lib/widgets/media_card.dart +++ b/lib/widgets/media_card.dart @@ -487,12 +487,7 @@ class _MediaCardList extends StatelessWidget { ), Text('$episodeNum · ', style: style), Expanded( - child: Text( - episodeTitle, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: style, - ), + child: Text(episodeTitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: style), ), ], ); @@ -567,7 +562,10 @@ class _MediaCardList extends StatelessWidget { const SizedBox(height: 2), ], // Subtitle (S# · Episode Title, or year/parent title) - if (item is PlexMetadata && (item as PlexMetadata).isEpisode && (item as PlexMetadata).parentIndex != null && (item as PlexMetadata).parentRatingKey != null) ...[ + if (item is PlexMetadata && + (item as PlexMetadata).isEpisode && + (item as PlexMetadata).parentIndex != null && + (item as PlexMetadata).parentRatingKey != null) ...[ _buildEpisodeSubtitle(context, item as PlexMetadata), const SizedBox(height: 4), ] else if (subtitle != null) ...[ @@ -662,9 +660,7 @@ Widget _buildPosterImage( final episodePosterMode = context.select((s) => s.episodePosterMode); final hideSpoilers = context.select((s) => s.hideSpoilers); final shouldBlur = - hideSpoilers && - item.shouldHideSpoiler && - episodePosterMode == EpisodePosterMode.episodeThumbnail; + hideSpoilers && item.shouldHideSpoiler && episodePosterMode == EpisodePosterMode.episodeThumbnail; posterUrl = item.posterThumb(mode: episodePosterMode, mixedHubContext: mixedHubContext); Widget image; @@ -752,12 +748,7 @@ class _MediaCardHelpers { ), Text(' · ', style: subtitleStyle), Expanded( - child: Text( - episodeTitle, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: subtitleStyle, - ), + child: Text(episodeTitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: subtitleStyle), ), ], ); @@ -772,19 +763,9 @@ class _MediaCardHelpers { // For other media types, show subtitle/parent/year if (metadata.displaySubtitle != null) { - return Text( - metadata.displaySubtitle!, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: subtitleStyle, - ); + return Text(metadata.displaySubtitle!, maxLines: 1, overflow: TextOverflow.ellipsis, style: subtitleStyle); } else if (metadata.parentTitle != null) { - return Text( - metadata.parentTitle!, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: subtitleStyle, - ); + return Text(metadata.parentTitle!, maxLines: 1, overflow: TextOverflow.ellipsis, style: subtitleStyle); } else if (metadata.year != null) { return Text( metadata.editionTitle != null ? '${metadata.year} · ${metadata.editionTitle}' : '${metadata.year}', @@ -904,11 +885,8 @@ void _navigateToSeason(BuildContext context, PlexMetadata episode, {bool isOffli Navigator.push( context, MaterialPageRoute( - builder: (_) => MediaDetailScreen( - metadata: showStub, - isOffline: isOffline, - initialSeasonIndex: episode.parentIndex, - ), + builder: (_) => + MediaDetailScreen(metadata: showStub, isOffline: isOffline, initialSeasonIndex: episode.parentIndex), ), ); } else if (episode.parentRatingKey != null) { @@ -924,7 +902,12 @@ void _navigateToSeason(BuildContext context, PlexMetadata episode, {bool isOffli serverId: episode.serverId, serverName: episode.serverName, ); - Navigator.push(context, MaterialPageRoute(builder: (_) => MediaDetailScreen(metadata: seasonStub, isOffline: isOffline))); + Navigator.push( + context, + MaterialPageRoute( + builder: (_) => MediaDetailScreen(metadata: seasonStub, isOffline: isOffline), + ), + ); } } @@ -990,12 +973,7 @@ class _ClickableTextState extends State<_ClickableText> { final baseStyle = widget.style ?? const TextStyle(); if (isKeyboard) { - return Text( - widget.text, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: baseStyle, - ); + return Text(widget.text, maxLines: 1, overflow: TextOverflow.ellipsis, style: baseStyle); } return MouseRegion( diff --git a/lib/widgets/media_context_menu.dart b/lib/widgets/media_context_menu.dart index 7e5af5ee..a67263c6 100644 --- a/lib/widgets/media_context_menu.dart +++ b/lib/widgets/media_context_menu.dart @@ -155,7 +155,9 @@ class MediaContextMenuState extends State { // Download (video playlists only) if (isPlaylist && (widget.item as PlexPlaylist).playlistType == 'video') { - menuActions.add(_MenuAction(value: 'download_playlist', icon: Symbols.download_rounded, label: t.downloads.downloadNow)); + menuActions.add( + _MenuAction(value: 'download_playlist', icon: Symbols.download_rounded, label: t.downloads.downloadNow), + ); } // Delete @@ -238,8 +240,9 @@ class MediaContextMenuState extends State { ? ancestorMeta.parentRatingKey : ancestorMeta?.ratingKey; // For episodes, the show key is grandparentRatingKey; for seasons, it's parentRatingKey - final itemSeriesKey = - mediaType == PlexMediaType.episode ? metadata.grandparentRatingKey : metadata.parentRatingKey; + final itemSeriesKey = mediaType == PlexMediaType.episode + ? metadata.grandparentRatingKey + : metadata.parentRatingKey; if ((mediaType == PlexMediaType.episode || mediaType == PlexMediaType.season) && itemSeriesKey != null && ancestorSeriesKey != itemSeriesKey) { @@ -249,9 +252,7 @@ class MediaContextMenuState extends State { // Go to Season (for episodes) — hide if already viewing that season's MediaDetailScreen if (mediaType == PlexMediaType.episode && metadata.parentTitle != null && - !(ancestorMeta != null && - ancestorMeta.isSeason && - ancestorMeta.ratingKey == metadata.parentRatingKey)) { + !(ancestorMeta != null && ancestorMeta.isSeason && ancestorMeta.ratingKey == metadata.parentRatingKey)) { menuActions.add( _MenuAction(value: 'season', icon: Symbols.playlist_play_rounded, label: t.mediaMenu.goToSeason), ); @@ -494,9 +495,7 @@ class MediaContextMenuState extends State { didNavigate = true; await _navigateToRelated( context, - metadata!.mediaType == PlexMediaType.season - ? metadata.parentRatingKey - : metadata.grandparentRatingKey, + metadata!.mediaType == PlexMediaType.season ? metadata.parentRatingKey : metadata.grandparentRatingKey, (metadata) => MediaDetailScreen(metadata: metadata), t.messages.errorLoadingSeries, ); diff --git a/lib/widgets/overlay_sheet.dart b/lib/widgets/overlay_sheet.dart index 070f8dd1..f904d72c 100644 --- a/lib/widgets/overlay_sheet.dart +++ b/lib/widgets/overlay_sheet.dart @@ -123,14 +123,16 @@ class OverlaySheetController { } // Apply the same default constraints the overlay system uses so sheets // shown without an OverlaySheetHost still have sensible sizing on desktop. - final effectiveConstraints = constraints ?? () { - final size = MediaQuery.of(context).size; - final isDesktop = size.width > 600; - return BoxConstraints( - maxWidth: isDesktop ? 700 : double.infinity, - maxHeight: isDesktop ? 400 : size.height * 0.75, - ); - }(); + final effectiveConstraints = + constraints ?? + () { + final size = MediaQuery.of(context).size; + final isDesktop = size.width > 600; + return BoxConstraints( + maxWidth: isDesktop ? 700 : double.infinity, + maxHeight: isDesktop ? 400 : size.height * 0.75, + ); + }(); return showModalBottomSheet( context: context, builder: builder, @@ -588,10 +590,7 @@ class _OverlaySheetHostState extends State with SingleTickerPr animation: _slideCurve, builder: (context, child) { final slideOffset = Offset.lerp(slideBegin, Offset.zero, _slideCurve.value)!; - return FractionalTranslation( - translation: slideOffset, - child: child, - ); + return FractionalTranslation(translation: slideOffset, child: child); }, child: Transform.translate( offset: Offset(0, _dragOffset.clamp(0, double.infinity)), @@ -610,10 +609,7 @@ class _OverlaySheetHostState extends State with SingleTickerPr bottom: !isTop, left: false, right: false, - child: ConstrainedBox( - constraints: effectiveConstraints, - child: sheetContent, - ), + child: ConstrainedBox(constraints: effectiveConstraints, child: sheetContent), ), ), ), diff --git a/lib/widgets/plex_optimized_image.dart b/lib/widgets/plex_optimized_image.dart index 20b82479..9d8590c0 100644 --- a/lib/widgets/plex_optimized_image.dart +++ b/lib/widgets/plex_optimized_image.dart @@ -291,12 +291,7 @@ class PlexOptimizedImage extends StatelessWidget { ); } - Widget _buildLocalFileImage( - BuildContext context, - File file, - double effectiveWidth, - double effectiveHeight, - ) { + Widget _buildLocalFileImage(BuildContext context, File file, double effectiveWidth, double effectiveHeight) { final dpr = PlexImageHelper.effectiveDevicePixelRatio(context); final scaledWidth = effectiveWidth * dpr; final scaledHeight = effectiveHeight * dpr; @@ -396,9 +391,7 @@ class PlexOptimizedImage extends StatelessWidget { if (wasSynchronouslyLoaded) return child; return AnimatedSwitcher( duration: const Duration(milliseconds: 300), - child: frame != null - ? child - : _buildPlaceholder(context), + child: frame != null ? child : _buildPlaceholder(context), ); }, ); diff --git a/lib/widgets/rating_bottom_sheet.dart b/lib/widgets/rating_bottom_sheet.dart index f23e4305..5828e4f8 100644 --- a/lib/widgets/rating_bottom_sheet.dart +++ b/lib/widgets/rating_bottom_sheet.dart @@ -12,12 +12,7 @@ class RatingBottomSheet extends StatefulWidget { final Future Function(double stars) onRate; final Future Function() onClear; - const RatingBottomSheet({ - super.key, - required this.currentRating, - required this.onRate, - required this.onClear, - }); + const RatingBottomSheet({super.key, required this.currentRating, required this.onRate, required this.onClear}); @override State createState() => _RatingBottomSheetState(); @@ -52,9 +47,7 @@ class _RatingBottomSheetState extends State { mainAxisSize: MainAxisSize.min, children: [ Text( - _selectedRating > 0 - ? '${formatRating(_selectedRating)} / 5' - : t.mediaMenu.rate, + _selectedRating > 0 ? '${formatRating(_selectedRating)} / 5' : t.mediaMenu.rate, style: theme.textTheme.titleMedium, ), const SizedBox(height: 16), @@ -76,9 +69,7 @@ class _RatingBottomSheetState extends State { padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(12)), - color: hasFocus - ? theme.colorScheme.primary.withValues(alpha: 0.12) - : null, + color: hasFocus ? theme.colorScheme.primary.withValues(alpha: 0.12) : null, ), child: child, ); diff --git a/lib/widgets/server_activities_button.dart b/lib/widgets/server_activities_button.dart index 85b51f19..1b5407c2 100644 --- a/lib/widgets/server_activities_button.dart +++ b/lib/widgets/server_activities_button.dart @@ -25,11 +25,7 @@ class _ServerResult { final String serverName; final List activities; - _ServerResult({ - required this.serverId, - required this.serverName, - required this.activities, - }); + _ServerResult({required this.serverId, required this.serverName, required this.activities}); } class _PanelData { @@ -98,11 +94,7 @@ class _ServerActivitiesButtonState extends State { final client = multiServer.getClientForServer(serverId); if (client == null) return null; final activities = await client.getActivities(); - return _ServerResult( - serverId: serverId, - serverName: client.serverName ?? serverId, - activities: activities, - ); + return _ServerResult(serverId: serverId, serverName: client.serverName ?? serverId, activities: activities); }); final rawResults = await Future.wait(futures); @@ -158,10 +150,7 @@ class _ServerActivitiesButtonState extends State { return Stack( children: [ Positioned.fill( - child: GestureDetector( - onTap: _removeOverlay, - behavior: HitTestBehavior.opaque, - ), + child: GestureDetector(onTap: _removeOverlay, behavior: HitTestBehavior.opaque), ), Positioned( right: right, @@ -196,9 +185,7 @@ class _ServerActivitiesButtonState extends State { Divider(height: 1, color: theme.dividerColor), ConstrainedBox( constraints: const BoxConstraints(maxHeight: 360), - child: SingleChildScrollView( - child: _buildPanelBody(context, data), - ), + child: SingleChildScrollView(child: _buildPanelBody(context, data)), ), ], ), @@ -214,10 +201,7 @@ class _ServerActivitiesButtonState extends State { children: [ AppIcon(Symbols.monitor_heart_rounded, size: 18, color: theme.colorScheme.onSurface), const SizedBox(width: 8), - Text( - t.serverTasks.title, - style: theme.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.bold), - ), + Text(t.serverTasks.title, style: theme.textTheme.titleSmall?.copyWith(fontWeight: FontWeight.bold)), ], ), ); @@ -232,9 +216,7 @@ class _ServerActivitiesButtonState extends State { child: Center( child: Text( t.common.loading, - style: theme.textTheme.bodyMedium?.copyWith( - color: theme.colorScheme.onSurface.withValues(alpha: 0.55), - ), + style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.onSurface.withValues(alpha: 0.55)), ), ), ); @@ -261,9 +243,7 @@ class _ServerActivitiesButtonState extends State { child: Center( child: Text( t.serverTasks.noTasks, - style: theme.textTheme.bodyMedium?.copyWith( - color: theme.colorScheme.onSurface.withValues(alpha: 0.55), - ), + style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.onSurface.withValues(alpha: 0.55)), ), ), ); @@ -288,10 +268,7 @@ class _ServerActivitiesButtonState extends State { const SizedBox(width: 6), Container( padding: const EdgeInsets.symmetric(horizontal: 6, vertical: 1), - decoration: BoxDecoration( - color: tokens(context).text, - borderRadius: BorderRadius.circular(10), - ), + decoration: BoxDecoration(color: tokens(context).text, borderRadius: BorderRadius.circular(10)), child: Text( '${result.activities.length}', style: theme.textTheme.labelSmall?.copyWith( @@ -304,8 +281,7 @@ class _ServerActivitiesButtonState extends State { ], ), ), - for (final activity in result.activities) - _buildActivityTile(context, result.serverId, activity), + for (final activity in result.activities) _buildActivityTile(context, result.serverId, activity), ], const SizedBox(height: 8), ], diff --git a/lib/widgets/settings_section.dart b/lib/widgets/settings_section.dart index 099c59d3..7609f673 100644 --- a/lib/widgets/settings_section.dart +++ b/lib/widgets/settings_section.dart @@ -13,10 +13,9 @@ class SettingsSectionHeader extends StatelessWidget { padding: const EdgeInsets.fromLTRB(16, 24, 16, 8), child: Text( title, - style: Theme.of(context).textTheme.labelLarge?.copyWith( - color: tokens(context).textMuted, - fontWeight: FontWeight.w600, - ), + style: Theme.of( + context, + ).textTheme.labelLarge?.copyWith(color: tokens(context).textMuted, fontWeight: FontWeight.w600), ), ); } diff --git a/lib/widgets/side_navigation_rail.dart b/lib/widgets/side_navigation_rail.dart index b65bd5a9..dec4b15d 100644 --- a/lib/widgets/side_navigation_rail.dart +++ b/lib/widgets/side_navigation_rail.dart @@ -303,8 +303,7 @@ class SideNavigationRailState extends State { if (!mounted) return; final ctx = nextNode.context; if (ctx != null) { - Scrollable.ensureVisible(ctx, - alignment: 0.5, duration: const Duration(milliseconds: 200)); + Scrollable.ensureVisible(ctx, alignment: 0.5, duration: const Duration(milliseconds: 200)); } }); return KeyEventResult.handled; @@ -401,107 +400,106 @@ class SideNavigationRailState extends State { child: Focus( canRequestFocus: false, skipTraversal: true, - onKeyEvent: (node, event) => - _handleVerticalNavigation(node, event, focusOrder), + onKeyEvent: (node, event) => _handleVerticalNavigation(node, event, focusOrder), child: Column( - children: [ - // Safe area for status bar and macOS traffic lights - SizedBox(height: _getTopPadding(context)), + children: [ + // Safe area for status bar and macOS traffic lights + SizedBox(height: _getTopPadding(context)), - // Navigation content - Expanded( - child: ListView( - padding: const EdgeInsets.symmetric(horizontal: 12), - clipBehavior: Clip.hardEdge, - children: [ - // Reconnect button when offline - if (widget.isOfflineMode && widget.onReconnect != null) ...[ - _buildReconnectItem(isCollapsed: isCollapsed), - const SizedBox(height: 8), - ], + // Navigation content + Expanded( + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 12), + clipBehavior: Clip.hardEdge, + children: [ + // Reconnect button when offline + if (widget.isOfflineMode && widget.onReconnect != null) ...[ + _buildReconnectItem(isCollapsed: isCollapsed), + const SizedBox(height: 8), + ], - // In online mode, show full navigation - if (!widget.isOfflineMode) ...[ - // Home - _buildNavItem( - icon: Symbols.home_rounded, - selectedIcon: Symbols.home_rounded, - label: Translations.of(context).common.home, - isSelected: widget.selectedTab == NavigationTabId.discover, - isFocused: _focusTracker.isFocused(_kHome), - onTap: () => widget.onDestinationSelected(NavigationTabId.discover), - focusNode: _focusTracker.get(_kHome), - isCollapsed: isCollapsed, - ), - - const SizedBox(height: 8), - - // Libraries section - _buildLibrariesSection(visibleLibraries, t, isCollapsed: isCollapsed), - - const SizedBox(height: 8), - - // Live TV (only if DVR available) - if (context.watch().hasLiveTv) ...[ + // In online mode, show full navigation + if (!widget.isOfflineMode) ...[ + // Home _buildNavItem( - icon: Symbols.live_tv_rounded, - selectedIcon: Symbols.live_tv_rounded, - label: Translations.of(context).navigation.liveTv, - isSelected: widget.selectedTab == NavigationTabId.liveTv, - isFocused: _focusTracker.isFocused('liveTv'), - onTap: () => widget.onDestinationSelected(NavigationTabId.liveTv), - focusNode: _focusTracker.get('liveTv'), + icon: Symbols.home_rounded, + selectedIcon: Symbols.home_rounded, + label: Translations.of(context).common.home, + isSelected: widget.selectedTab == NavigationTabId.discover, + isFocused: _focusTracker.isFocused(_kHome), + onTap: () => widget.onDestinationSelected(NavigationTabId.discover), + focusNode: _focusTracker.get(_kHome), + isCollapsed: isCollapsed, + ), + + const SizedBox(height: 8), + + // Libraries section + _buildLibrariesSection(visibleLibraries, t, isCollapsed: isCollapsed), + + const SizedBox(height: 8), + + // Live TV (only if DVR available) + if (context.watch().hasLiveTv) ...[ + _buildNavItem( + icon: Symbols.live_tv_rounded, + selectedIcon: Symbols.live_tv_rounded, + label: Translations.of(context).navigation.liveTv, + isSelected: widget.selectedTab == NavigationTabId.liveTv, + isFocused: _focusTracker.isFocused('liveTv'), + onTap: () => widget.onDestinationSelected(NavigationTabId.liveTv), + focusNode: _focusTracker.get('liveTv'), + isCollapsed: isCollapsed, + ), + + const SizedBox(height: 8), + ], + + // Search + _buildNavItem( + icon: Symbols.search_rounded, + selectedIcon: Symbols.search_rounded, + label: Translations.of(context).common.search, + isSelected: widget.selectedTab == NavigationTabId.search, + isFocused: _focusTracker.isFocused(_kSearch), + onTap: () => widget.onDestinationSelected(NavigationTabId.search), + focusNode: _focusTracker.get(_kSearch), isCollapsed: isCollapsed, ), const SizedBox(height: 8), ], - // Search + // Downloads _buildNavItem( - icon: Symbols.search_rounded, - selectedIcon: Symbols.search_rounded, - label: Translations.of(context).common.search, - isSelected: widget.selectedTab == NavigationTabId.search, - isFocused: _focusTracker.isFocused(_kSearch), - onTap: () => widget.onDestinationSelected(NavigationTabId.search), - focusNode: _focusTracker.get(_kSearch), + icon: Symbols.download_rounded, + selectedIcon: Symbols.download_rounded, + label: Translations.of(context).navigation.downloads, + isSelected: widget.selectedTab == NavigationTabId.downloads, + isFocused: _focusTracker.isFocused(_kDownloads), + onTap: () => widget.onDestinationSelected(NavigationTabId.downloads), + focusNode: _focusTracker.get(_kDownloads), isCollapsed: isCollapsed, ), const SizedBox(height: 8), + + // Settings + _buildNavItem( + icon: Symbols.settings_rounded, + selectedIcon: Symbols.settings_rounded, + label: Translations.of(context).common.settings, + isSelected: widget.selectedTab == NavigationTabId.settings, + isFocused: _focusTracker.isFocused(_kSettings), + onTap: () => widget.onDestinationSelected(NavigationTabId.settings), + focusNode: _focusTracker.get(_kSettings), + isCollapsed: isCollapsed, + ), ], - - // Downloads - _buildNavItem( - icon: Symbols.download_rounded, - selectedIcon: Symbols.download_rounded, - label: Translations.of(context).navigation.downloads, - isSelected: widget.selectedTab == NavigationTabId.downloads, - isFocused: _focusTracker.isFocused(_kDownloads), - onTap: () => widget.onDestinationSelected(NavigationTabId.downloads), - focusNode: _focusTracker.get(_kDownloads), - isCollapsed: isCollapsed, - ), - - const SizedBox(height: 8), - - // Settings - _buildNavItem( - icon: Symbols.settings_rounded, - selectedIcon: Symbols.settings_rounded, - label: Translations.of(context).common.settings, - isSelected: widget.selectedTab == NavigationTabId.settings, - isFocused: _focusTracker.isFocused(_kSettings), - onTap: () => widget.onDestinationSelected(NavigationTabId.settings), - focusNode: _focusTracker.get(_kSettings), - isCollapsed: isCollapsed, - ), - ], + ), ), - ), - ], - ), + ], + ), ), ), ), @@ -644,7 +642,9 @@ class SideNavigationRailState extends State { Translations.of(context).navigation.libraries, style: TextStyle( fontSize: 14, - fontWeight: widget.selectedTab == NavigationTabId.libraries ? FontWeight.w600 : FontWeight.w400, + fontWeight: widget.selectedTab == NavigationTabId.libraries + ? FontWeight.w600 + : FontWeight.w400, color: widget.selectedTab == NavigationTabId.libraries ? t.text : t.textMuted, ), ), @@ -739,7 +739,8 @@ class SideNavigationRailState extends State { } Widget _buildLibraryItem(PlexLibrary library, dynamic t, {bool showServerName = false}) { - final isSelected = widget.selectedTab == NavigationTabId.libraries && widget.selectedLibraryKey == library.globalKey; + final isSelected = + widget.selectedTab == NavigationTabId.libraries && widget.selectedLibraryKey == library.globalKey; final isFocused = _focusTracker.isFocused(library.globalKey); final focusNode = _focusTracker.get(library.globalKey); diff --git a/lib/widgets/tag_edit_dialog.dart b/lib/widgets/tag_edit_dialog.dart index 7b917012..e76bed03 100644 --- a/lib/widgets/tag_edit_dialog.dart +++ b/lib/widgets/tag_edit_dialog.dart @@ -79,10 +79,7 @@ class _TagEditDialogState extends State { labelText: t.metadataEdit.addTag, suffixIcon: FocusableButton( onPressed: _addTag, - child: IconButton( - icon: const AppIcon(Symbols.add_rounded), - onPressed: _addTag, - ), + child: IconButton(icon: const AppIcon(Symbols.add_rounded), onPressed: _addTag), ), ), textInputAction: TextInputAction.done, @@ -114,10 +111,7 @@ class _TagEditDialogState extends State { FocusableButton( focusNode: _saveFocusNode, onPressed: () => Navigator.pop(context, _tags), - child: TextButton( - onPressed: () => Navigator.pop(context, _tags), - child: Text(t.common.save), - ), + child: TextButton(onPressed: () => Navigator.pop(context, _tags), child: Text(t.common.save)), ), ], ); diff --git a/lib/widgets/video_controls/mobile_video_controls.dart b/lib/widgets/video_controls/mobile_video_controls.dart index 08ed582a..fab52c5c 100644 --- a/lib/widgets/video_controls/mobile_video_controls.dart +++ b/lib/widgets/video_controls/mobile_video_controls.dart @@ -43,6 +43,7 @@ class MobileVideoControls extends StatefulWidget { final VoidCallback? onBack; final VoidCallback? onNext; final VoidCallback? onPrevious; + /// Whether the user can control playback (false in host-only mode for non-host). final bool canControl; @@ -116,8 +117,7 @@ class MobileVideoControls extends StatefulWidget { State createState() => _MobileVideoControlsState(); } -class _MobileVideoControlsState extends State - with SingleTickerProviderStateMixin { +class _MobileVideoControlsState extends State with SingleTickerProviderStateMixin { late final AnimationController _stripAnim; bool _stripVisible = false; @@ -130,10 +130,7 @@ class _MobileVideoControlsState extends State @override void initState() { super.initState(); - _stripAnim = AnimationController( - vsync: this, - duration: const Duration(milliseconds: 250), - ); + _stripAnim = AnimationController(vsync: this, duration: const Duration(milliseconds: 250)); _stripAnim.addListener(_onStripAnimChanged); widget.controlsVisible?.addListener(_onControlsVisibilityChanged); } @@ -325,7 +322,10 @@ class _MobileVideoControlsState extends State return const SizedBox.shrink(); } - return FirstFrameGuard(hasFirstFrame: widget.hasFirstFrame, builder: (context) => _buildPlaybackControlsContent(context)); + return FirstFrameGuard( + hasFirstFrame: widget.hasFirstFrame, + builder: (context) => _buildPlaybackControlsContent(context), + ); } Widget _buildPlaybackControlsContent(BuildContext _) { diff --git a/lib/widgets/video_controls/painters/buffer_range_painter.dart b/lib/widgets/video_controls/painters/buffer_range_painter.dart index aad97197..70ecb1c7 100644 --- a/lib/widgets/video_controls/painters/buffer_range_painter.dart +++ b/lib/widgets/video_controls/painters/buffer_range_painter.dart @@ -70,7 +70,10 @@ class BufferRangePainter extends CustomPainter { final clippedRight = bufRight.clamp(segLeft, segRight); if (clippedRight <= clippedLeft) continue; canvas.drawRRect( - RRect.fromRectAndRadius(Rect.fromLTWH(clippedLeft, y, clippedRight - clippedLeft, trackHeight), Radius.circular(radius)), + RRect.fromRectAndRadius( + Rect.fromLTWH(clippedLeft, y, clippedRight - clippedLeft, trackHeight), + Radius.circular(radius), + ), bufPaint, ); } diff --git a/lib/widgets/video_controls/sheets/subtitle_search_sheet.dart b/lib/widgets/video_controls/sheets/subtitle_search_sheet.dart index 67f23582..0a17306c 100644 --- a/lib/widgets/video_controls/sheets/subtitle_search_sheet.dart +++ b/lib/widgets/video_controls/sheets/subtitle_search_sheet.dart @@ -248,39 +248,27 @@ class _SubtitleSearchSheetState extends State { Widget? trailing; if (isDownloading) { - trailing = const SizedBox( - width: 20, - height: 20, - child: CircularProgressIndicator(strokeWidth: 2), - ); + trailing = const SizedBox(width: 20, height: 20, child: CircularProgressIndicator(strokeWidth: 2)); } else { final trailingChildren = []; if (result.perfectMatch) { - trailingChildren.add( - const AppIcon(Symbols.star_rounded, fill: 1, color: Color(0xFFCC7B19), size: 16), - ); + trailingChildren.add(const AppIcon(Symbols.star_rounded, fill: 1, color: Color(0xFFCC7B19), size: 16)); } if (result.score != null) { - trailingChildren.add(Text( - result.score!.toInt().toString(), - style: TextStyle(fontSize: 12, color: colorScheme.onSurfaceVariant), - )); + trailingChildren.add( + Text( + result.score!.toInt().toString(), + style: TextStyle(fontSize: 12, color: colorScheme.onSurfaceVariant), + ), + ); } if (trailingChildren.isNotEmpty) { - trailing = Row( - mainAxisSize: MainAxisSize.min, - spacing: 4, - children: trailingChildren, - ); + trailing = Row(mainAxisSize: MainAxisSize.min, spacing: 4, children: trailingChildren); } } return FocusableListTile( - title: Text( - result.title ?? result.displayTitle ?? 'Unknown', - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), + title: Text(result.title ?? result.displayTitle ?? 'Unknown', maxLines: 1, overflow: TextOverflow.ellipsis), subtitle: Text( result.displayTitle ?? '', maxLines: 1, @@ -300,11 +288,7 @@ class _LanguagePickerView extends StatefulWidget { final void Function(String code, String name) onSelected; final VoidCallback onBack; - const _LanguagePickerView({ - required this.currentCode, - required this.onSelected, - required this.onBack, - }); + const _LanguagePickerView({required this.currentCode, required this.onSelected, required this.onBack}); @override State<_LanguagePickerView> createState() => _LanguagePickerViewState(); diff --git a/lib/widgets/video_controls/widgets/content_strip.dart b/lib/widgets/video_controls/widgets/content_strip.dart index 554969b2..ab04185e 100644 --- a/lib/widgets/video_controls/widgets/content_strip.dart +++ b/lib/widgets/video_controls/widgets/content_strip.dart @@ -560,9 +560,7 @@ class ContentStripState extends State { child: Container( decoration: BoxDecoration( borderRadius: const BorderRadius.all(Radius.circular(6)), - border: Border.fromBorderSide( - BorderSide(color: Colors.white, width: 2), - ), + border: Border.fromBorderSide(BorderSide(color: Colors.white, width: 2)), ), ), ), diff --git a/lib/widgets/video_controls/widgets/live_timeline_bar.dart b/lib/widgets/video_controls/widgets/live_timeline_bar.dart index 171b5bcf..ea2708e6 100644 --- a/lib/widgets/video_controls/widgets/live_timeline_bar.dart +++ b/lib/widgets/video_controls/widgets/live_timeline_bar.dart @@ -47,11 +47,9 @@ class _LiveTimelineBarState extends State { int get _rangeStart => widget.captureBuffer.seekableStartEpoch; int get _rangeEnd => widget.captureBuffer.seekableEndEpoch; - int _currentEpoch(Duration playerPosition) => - (widget.streamStartEpoch + playerPosition.inSeconds).round(); + int _currentEpoch(Duration playerPosition) => (widget.streamStartEpoch + playerPosition.inSeconds).round(); - int _displayPosition(Duration playerPosition) => - _isDragging ? _dragPositionEpoch : _currentEpoch(playerPosition); + int _displayPosition(Duration playerPosition) => _isDragging ? _dragPositionEpoch : _currentEpoch(playerPosition); String _formatEpochTime(int epochSeconds) { final dt = DateTime.fromMillisecondsSinceEpoch(epochSeconds * 1000); @@ -134,18 +132,14 @@ class _LiveTimelineBarState extends State { final width = constraints.maxWidth; return GestureDetector( onHorizontalDragStart: widget.enabled ? _onDragStart : null, - onHorizontalDragUpdate: widget.enabled - ? (details) => _onDragUpdate(details, width) - : null, + onHorizontalDragUpdate: widget.enabled ? (details) => _onDragUpdate(details, width) : null, onHorizontalDragEnd: widget.enabled ? _onDragEnd : null, onTapUp: widget.enabled ? (details) => _onTap(details, width) : null, child: SizedBox( height: 24, child: CustomPaint( size: Size(width, 24), - painter: _LiveTimelinePainter( - positionFraction: positionFraction, - ), + painter: _LiveTimelinePainter(positionFraction: positionFraction), ), ), ); @@ -229,6 +223,5 @@ class _LiveTimelinePainter extends CustomPainter { } @override - bool shouldRepaint(covariant _LiveTimelinePainter oldDelegate) => - positionFraction != oldDelegate.positionFraction; + bool shouldRepaint(covariant _LiveTimelinePainter oldDelegate) => positionFraction != oldDelegate.positionFraction; } diff --git a/lib/widgets/video_controls/widgets/performance_overlay/performance_overlay.dart b/lib/widgets/video_controls/widgets/performance_overlay/performance_overlay.dart index 9e00d182..dd6cae6a 100644 --- a/lib/widgets/video_controls/widgets/performance_overlay/performance_overlay.dart +++ b/lib/widgets/video_controls/widgets/performance_overlay/performance_overlay.dart @@ -58,8 +58,7 @@ class _PlayerPerformanceOverlayState extends State { if (!isMpv) _metric('Tunneling', _stats.tunneledPlaybackFormatted), if (_stats.aspectName != null && _stats.aspectName!.isNotEmpty) _metric('Aspect', _stats.aspectName!), if (_stats.rotate != null && _stats.rotate != 0) _metric('Rotation', _stats.rotateFormatted), - if (_stats.dvConversionActive) - _metric('DV', _stats.dvConversionMode == 'DV81' ? '7→8.1' : '7→HEVC'), + if (_stats.dvConversionActive) _metric('DV', _stats.dvConversionMode == 'DV81' ? '7→8.1' : '7→HEVC'), ]), _buildSection(Symbols.volume_up_rounded, 'Audio', [ if (_stats.audioCodec != null) _metric('Codec', _stats.audioCodec!), @@ -110,11 +109,7 @@ class _PlayerPerformanceOverlayState extends State { borderRadius: const BorderRadius.all(Radius.circular(8)), boxShadow: [BoxShadow(color: Colors.black.withValues(alpha: 0.3), blurRadius: 4)], ), - child: Wrap( - spacing: 24, - runSpacing: 12, - children: sections, - ), + child: Wrap(spacing: 24, runSpacing: 12, children: sections), ); } diff --git a/lib/widgets/video_controls/widgets/performance_overlay/performance_stats_service.dart b/lib/widgets/video_controls/widgets/performance_overlay/performance_stats_service.dart index ada0f434..94668afa 100644 --- a/lib/widgets/video_controls/widgets/performance_overlay/performance_stats_service.dart +++ b/lib/widgets/video_controls/widgets/performance_overlay/performance_stats_service.dart @@ -260,28 +260,16 @@ class PerformanceStatsService { if (hasVideo) { final isAndroid = Platform.isAndroid; videoResults = await Future.wait([ - isAndroid - ? Future.value(null) - : player.getProperty('display-fps'), // 0 + isAndroid ? Future.value(null) : player.getProperty('display-fps'), // 0 player.getProperty('video-params/pixelformat'), // 1 - isAndroid - ? Future.value(null) - : player.getProperty('video-params/hw-pixelformat'), // 2 + isAndroid ? Future.value(null) : player.getProperty('video-params/hw-pixelformat'), // 2 player.getProperty('video-params/colormatrix'), // 3 player.getProperty('video-params/primaries'), // 4 player.getProperty('video-params/gamma'), // 5 - isAndroid - ? Future.value(null) - : player.getProperty('video-params/max-luma'), // 6 - isAndroid - ? Future.value(null) - : player.getProperty('video-params/min-luma'), // 7 - isAndroid - ? Future.value(null) - : player.getProperty('video-params/max-cll'), // 8 - isAndroid - ? Future.value(null) - : player.getProperty('video-params/max-fall'), // 9 + isAndroid ? Future.value(null) : player.getProperty('video-params/max-luma'), // 6 + isAndroid ? Future.value(null) : player.getProperty('video-params/min-luma'), // 7 + isAndroid ? Future.value(null) : player.getProperty('video-params/max-cll'), // 8 + isAndroid ? Future.value(null) : player.getProperty('video-params/max-fall'), // 9 player.getProperty('video-params/aspect-name'), // 10 player.getProperty('video-params/rotate'), // 11 ]); diff --git a/lib/widgets/video_controls/widgets/sync_offset_control.dart b/lib/widgets/video_controls/widgets/sync_offset_control.dart index 7ecf0201..db8f8ba2 100644 --- a/lib/widgets/video_controls/widgets/sync_offset_control.dart +++ b/lib/widgets/video_controls/widgets/sync_offset_control.dart @@ -171,7 +171,10 @@ class _SyncOffsetControlState extends State { child: Container( width: size, height: size, - decoration: BoxDecoration(color: Theme.of(context).colorScheme.surfaceContainerHighest, borderRadius: const BorderRadius.all(Radius.circular(8))), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), child: Icon(icon, color: tokens(context).text, size: iconSize), ), ); @@ -200,7 +203,10 @@ class _SyncOffsetControlState extends State { child: Container( width: 36, height: 36, - decoration: BoxDecoration(color: Theme.of(context).colorScheme.surfaceContainerHighest, borderRadius: const BorderRadius.all(Radius.circular(8))), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), child: Icon(icon, color: tokens(context).text, size: 22), ), ), @@ -300,10 +306,7 @@ class _SyncOffsetControlState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ // Current offset display - Text( - formatSyncOffset(_currentOffset), - style: const TextStyle(fontSize: 48, fontWeight: FontWeight.bold), - ), + Text(formatSyncOffset(_currentOffset), style: const TextStyle(fontSize: 48, fontWeight: FontWeight.bold)), const SizedBox(height: 8), Text(_getDescriptionText(), style: TextStyle(color: tokens(context).textMuted, fontSize: 16)), const SizedBox(height: 48), @@ -359,9 +362,7 @@ class _SyncOffsetControlState extends State { onPressed: _currentOffset != 0 ? _resetOffset : null, icon: const AppIcon(Symbols.restart_alt_rounded, fill: 1), label: Text(t.videoControls.resetToZero), - style: ElevatedButton.styleFrom( - padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12), - ), + style: ElevatedButton.styleFrom(padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12)), ), ], ), diff --git a/lib/widgets/video_controls/widgets/timeline_slider.dart b/lib/widgets/video_controls/widgets/timeline_slider.dart index 9ce2352a..72cb59b7 100644 --- a/lib/widgets/video_controls/widgets/timeline_slider.dart +++ b/lib/widgets/video_controls/widgets/timeline_slider.dart @@ -119,12 +119,7 @@ class _TimelineSliderState extends State { gaplessPlayback: true, errorBuilder: (_, _, _) => const SizedBox.shrink(), ), - Positioned( - bottom: 4, - left: 0, - right: 0, - child: Center(child: timeLabel), - ), + Positioned(bottom: 4, left: 0, right: 0, child: Center(child: timeLabel)), ], ), ) @@ -191,9 +186,7 @@ class _TimelineSliderState extends State { overlayShape: const RoundSliderOverlayShape(overlayRadius: 0), tickMarkShape: SliderTickMarkShape.noTickMark, thumbSize: WidgetStatePropertyAll( - (!InputModeTracker.isKeyboardMode(context) || _isFocused) - ? const Size(4, 20) - : Size.zero, + (!InputModeTracker.isKeyboardMode(context) || _isFocused) ? const Size(4, 20) : Size.zero, ), ), child: Semantics( diff --git a/lib/widgets/video_controls/widgets/video_controls_header.dart b/lib/widgets/video_controls/widgets/video_controls_header.dart index 7c74791d..e63f56ef 100644 --- a/lib/widgets/video_controls/widgets/video_controls_header.dart +++ b/lib/widgets/video_controls/widgets/video_controls_header.dart @@ -54,10 +54,7 @@ class VideoControlsHeader extends StatelessWidget { selector: (_, p) => p.isInSession, builder: (context, inSession, child) { if (!inSession) return const SizedBox.shrink(); - return const Padding( - padding: EdgeInsets.only(right: 8), - child: WatchTogetherSessionIndicator(), - ); + return const Padding(padding: EdgeInsets.only(right: 8), child: WatchTogetherSessionIndicator()); }, ), ?trailing, diff --git a/lib/widgets/video_controls/widgets/video_timeline_bar.dart b/lib/widgets/video_controls/widgets/video_timeline_bar.dart index f9577b17..28cbd385 100644 --- a/lib/widgets/video_controls/widgets/video_timeline_bar.dart +++ b/lib/widgets/video_controls/widgets/video_timeline_bar.dart @@ -87,7 +87,12 @@ class VideoTimelineBar extends StatelessWidget { ); } - Widget _buildHorizontalLayout(Duration position, Duration duration, Duration remaining, List bufferRanges) { + Widget _buildHorizontalLayout( + Duration position, + Duration duration, + Duration remaining, + List bufferRanges, + ) { return Row( children: [ _buildTimestamp(position), @@ -99,7 +104,12 @@ class VideoTimelineBar extends StatelessWidget { ); } - Widget _buildVerticalLayout(Duration position, Duration duration, Duration remaining, List bufferRanges) { + Widget _buildVerticalLayout( + Duration position, + Duration duration, + Duration remaining, + List bufferRanges, + ) { return Column( children: [ _buildSlider(position, duration, bufferRanges), @@ -114,7 +124,11 @@ class VideoTimelineBar extends StatelessWidget { ); } - static const _timestampStyle = TextStyle(color: Colors.white, fontSize: 14, fontFeatures: [FontFeature.tabularFigures()]); + static const _timestampStyle = TextStyle( + color: Colors.white, + fontSize: 14, + fontFeatures: [FontFeature.tabularFigures()], + ); Widget _buildTimestamp(Duration time) { return Text(formatDurationTimestamp(time), style: _timestampStyle); @@ -129,7 +143,8 @@ class VideoTimelineBar extends StatelessWidget { initialData: player.state.rate, builder: (context, rateSnap) { final rate = rateSnap.data ?? 1.0; - final text = '${formatDurationTimestamp(remaining)} · ${formatFinishTime(remaining.abs(), rate: rate, is24Hour: MediaQuery.alwaysUse24HourFormatOf(context))}'; + final text = + '${formatDurationTimestamp(remaining)} · ${formatFinishTime(remaining.abs(), rate: rate, is24Hour: MediaQuery.alwaysUse24HourFormatOf(context))}'; return Text(text, style: _timestampStyle); }, ); diff --git a/scripts/ci_checks.sh b/scripts/ci_checks.sh new file mode 100755 index 00000000..65f3ca94 --- /dev/null +++ b/scripts/ci_checks.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +set -uo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" +cd "$ROOT" + +if [ -t 1 ]; then + BOLD=$'\e[1m'; RED=$'\e[31m'; GRN=$'\e[32m'; DIM=$'\e[2m'; RST=$'\e[0m' +else + BOLD=""; RED=""; GRN=""; DIM=""; RST="" +fi +section() { printf "\n%s==> %s%s\n" "$BOLD" "$1" "$RST"; } +ok() { printf " %sPASS%s %s\n" "$GRN" "$RST" "$1"; } +fail() { printf " %sFAIL%s %s\n" "$RED" "$RST" "$1"; } +skip() { printf " %sSKIP%s %s\n" "$DIM" "$RST" "$1"; } + +if ! command -v flutter >/dev/null 2>&1 || ! command -v dart >/dev/null 2>&1; then + fail "flutter/dart not in PATH" + echo " Install Flutter: https://docs.flutter.dev/get-started/install" + echo " Bypass temporarily: SKIP_HOOKS=1 git commit ..." + exit 1 +fi + +have_dart_code_linter() { + [ -f "$ROOT/.dart_tool/package_config.json" ] && \ + grep -q '"name": *"dart_code_linter"' "$ROOT/.dart_tool/package_config.json" 2>/dev/null +} + +FAILED=0 + +# 1. dart format (mirrors ci.yml "Verify formatting") +section "dart format" +files=() +while IFS= read -r -d '' f; do files+=("$f"); done < <( + find lib $([ -d test ] && echo test) \ + -name "*.dart" ! -name "*.g.dart" ! -name "*.freezed.dart" \ + -type f -print0 2>/dev/null +) +if [ ${#files[@]} -eq 0 ]; then + skip "no dart files" +else + out="$(mktemp)" + if dart format --output=none --set-exit-if-changed "${files[@]}" >"$out" 2>&1; then + ok "${#files[@]} file(s) correctly formatted" + else + fail "formatting issues" + sed 's/^/ /' "$out" + FAILED=1 + fi + rm -f "$out" +fi + +# 2. flutter analyze (mirrors ci.yml "Analyze code") +section "flutter analyze" +out="$(mktemp)" +flutter analyze >"$out" 2>&1 || true +if grep -q "error •" "$out"; then + fail "errors" + grep -E "error •|warning •" "$out" | sed 's/^/ /' + FAILED=1 +elif grep -q "warning •" "$out"; then + fail "warnings (treated as failure, matching CI)" + grep "warning •" "$out" | sed 's/^/ /' + FAILED=1 +else + ok "no errors or warnings" +fi +rm -f "$out" + +# 3. Unused code (mirrors ci.yml "Check for unused code") +section "dart_code_linter: unused code" +if ! have_dart_code_linter; then + skip "dart_code_linter unresolved — run 'flutter pub get'" +else + out="$(mktemp)" + dart run dart_code_linter:metrics check-unused-code lib >"$out" 2>&1 || true + if grep -qi "no unused code found" "$out"; then + ok "none" + else + fail "unused code detected:" + sed 's/^/ /' "$out" + FAILED=1 + fi + rm -f "$out" +fi + +# 4. Unused files (mirrors ci.yml "Check for unused files") +section "dart_code_linter: unused files" +if ! have_dart_code_linter; then + skip "dart_code_linter unresolved — run 'flutter pub get'" +else + out="$(mktemp)" + dart run dart_code_linter:metrics check-unused-files lib >"$out" 2>&1 || true + if grep -qi "no unused files found" "$out"; then + ok "none" + else + fail "unused files detected:" + sed 's/^/ /' "$out" + FAILED=1 + fi + rm -f "$out" +fi + +if [ "$FAILED" -ne 0 ]; then + printf "\n%sOne or more checks failed.%s Bypass with SKIP_HOOKS=1 (or --no-verify).\n" "$RED" "$RST" + exit 1 +fi +printf "\n%sAll checks passed.%s\n" "$GRN" "$RST" diff --git a/scripts/setup_hooks.sh b/scripts/setup_hooks.sh new file mode 100755 index 00000000..f478da60 --- /dev/null +++ b/scripts/setup_hooks.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +set -euo pipefail +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +cd "$ROOT" + +chmod +x .githooks/pre-commit scripts/ci_checks.sh +git config core.hooksPath .githooks + +cat <