From ebb9c225aa2341342a845e28ea1dea2ed214178b Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Sun, 20 Aug 2023 19:23:44 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E4=B8=BA`get=5Fhelp`=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=9B=B4=E5=A4=9A=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gsuid_core/help/draw_plugin_help.py | 133 ++++++++++++++++++++------ gsuid_core/help/icon/介绍.png | Bin 0 -> 776 bytes gsuid_core/help/icon/任务.png | Bin 0 -> 753 bytes gsuid_core/help/icon/信息.png | Bin 0 -> 1099 bytes gsuid_core/help/icon/公告.png | Bin 0 -> 698 bytes gsuid_core/help/icon/刀剑.png | Bin 0 -> 977 bytes gsuid_core/help/icon/切换.png | Bin 0 -> 890 bytes gsuid_core/help/icon/删除.png | Bin 0 -> 743 bytes gsuid_core/help/icon/刷新.png | Bin 0 -> 875 bytes gsuid_core/help/icon/卡组.png | Bin 0 -> 1462 bytes gsuid_core/help/icon/哪里.png | Bin 0 -> 896 bytes gsuid_core/help/icon/地图.png | Bin 0 -> 896 bytes gsuid_core/help/icon/导入.png | Bin 0 -> 563 bytes gsuid_core/help/icon/导出.png | Bin 0 -> 644 bytes gsuid_core/help/icon/影.png | Bin 0 -> 622 bytes gsuid_core/help/icon/拼图.png | Bin 0 -> 917 bytes gsuid_core/help/icon/探索.png | Bin 0 -> 1388 bytes gsuid_core/help/icon/推送.png | Bin 0 -> 770 bytes gsuid_core/help/icon/收集.png | Bin 0 -> 1120 bytes gsuid_core/help/icon/攻略.png | Bin 0 -> 1322 bytes gsuid_core/help/icon/更新.png | Bin 0 -> 883 bytes gsuid_core/help/icon/材料.png | Bin 0 -> 949 bytes gsuid_core/help/icon/查询.png | Bin 0 -> 839 bytes gsuid_core/help/icon/校验.png | Bin 0 -> 1069 bytes gsuid_core/help/icon/每月.png | Bin 0 -> 768 bytes gsuid_core/help/icon/深渊.png | Bin 0 -> 1004 bytes gsuid_core/help/icon/添加.png | Bin 0 -> 830 bytes gsuid_core/help/icon/清除.png | Bin 0 -> 643 bytes gsuid_core/help/icon/状态.png | Bin 0 -> 761 bytes gsuid_core/help/icon/签到.png | Bin 0 -> 772 bytes gsuid_core/help/icon/绑定.png | Bin 0 -> 837 bytes gsuid_core/help/icon/表.png | Bin 0 -> 537 bytes gsuid_core/help/icon/表情.png | Bin 0 -> 864 bytes gsuid_core/help/icon/角色.png | Bin 0 -> 627 bytes gsuid_core/help/icon/记录.png | Bin 0 -> 428 bytes gsuid_core/help/icon/配置.png | Bin 0 -> 1185 bytes gsuid_core/help/icon/重启.png | Bin 0 -> 990 bytes gsuid_core/utils/image/convert.py | 2 +- gsuid_core/utils/image/image_tools.py | 14 +-- poetry.lock | 22 ++--- pyproject.toml | 4 +- requirements.txt | 4 +- 42 files changed, 129 insertions(+), 50 deletions(-) create mode 100644 gsuid_core/help/icon/介绍.png create mode 100644 gsuid_core/help/icon/任务.png create mode 100644 gsuid_core/help/icon/信息.png create mode 100644 gsuid_core/help/icon/公告.png create mode 100644 gsuid_core/help/icon/刀剑.png create mode 100644 gsuid_core/help/icon/切换.png create mode 100644 gsuid_core/help/icon/删除.png create mode 100644 gsuid_core/help/icon/刷新.png create mode 100644 gsuid_core/help/icon/卡组.png create mode 100644 gsuid_core/help/icon/哪里.png create mode 100644 gsuid_core/help/icon/地图.png create mode 100644 gsuid_core/help/icon/导入.png create mode 100644 gsuid_core/help/icon/导出.png create mode 100644 gsuid_core/help/icon/影.png create mode 100644 gsuid_core/help/icon/拼图.png create mode 100644 gsuid_core/help/icon/探索.png create mode 100644 gsuid_core/help/icon/推送.png create mode 100644 gsuid_core/help/icon/收集.png create mode 100644 gsuid_core/help/icon/攻略.png create mode 100644 gsuid_core/help/icon/更新.png create mode 100644 gsuid_core/help/icon/材料.png create mode 100644 gsuid_core/help/icon/查询.png create mode 100644 gsuid_core/help/icon/校验.png create mode 100644 gsuid_core/help/icon/每月.png create mode 100644 gsuid_core/help/icon/深渊.png create mode 100644 gsuid_core/help/icon/添加.png create mode 100644 gsuid_core/help/icon/清除.png create mode 100644 gsuid_core/help/icon/状态.png create mode 100644 gsuid_core/help/icon/签到.png create mode 100644 gsuid_core/help/icon/绑定.png create mode 100644 gsuid_core/help/icon/表.png create mode 100644 gsuid_core/help/icon/表情.png create mode 100644 gsuid_core/help/icon/角色.png create mode 100644 gsuid_core/help/icon/记录.png create mode 100644 gsuid_core/help/icon/配置.png create mode 100644 gsuid_core/help/icon/重启.png diff --git a/gsuid_core/help/draw_plugin_help.py b/gsuid_core/help/draw_plugin_help.py index e057de0..7787caa 100644 --- a/gsuid_core/help/draw_plugin_help.py +++ b/gsuid_core/help/draw_plugin_help.py @@ -1,18 +1,50 @@ +from pathlib import Path from copy import deepcopy from typing import Dict, List, Tuple, Callable, Optional -from PIL import Image, ImageDraw, ImageFont +from PIL import Image, ImageDraw, ImageFont, ImageFilter from gsuid_core.data_store import get_res_path from gsuid_core.utils.image.convert import convert_img -from gsuid_core.utils.image.image_tools import ( - crop_center_img, - easy_alpha_composite, -) +from gsuid_core.utils.image.image_tools import crop_center_img from .model import PluginHelp cache: Dict[str, int] = {} +MICON_PATH = Path(__file__).parent / 'icon' +DEFAULT_ICON = MICON_PATH / '拼图.png' + + +def cx(w: int, x: int) -> int: + return int((w - x) / 2) + + +def _get_icon(name: str, ICON_PATH: Path) -> Optional[Image.Image]: + path = ICON_PATH / f'{name}.png' + icon = None + if path.exists(): + icon = Image.open(path) + else: + for i in ICON_PATH.glob('*.png'): + if i.stem in name: + icon = Image.open(i) + break + + return icon + + +def get_icon(name: str, ICON_PATH: Optional[Path]) -> Image.Image: + if ICON_PATH is not None: + icon = _get_icon(name, ICON_PATH) + if icon is None: + icon = _get_icon(name, MICON_PATH) + else: + icon = _get_icon(name, MICON_PATH) + + if icon is None: + icon = Image.open(DEFAULT_ICON) + + return icon.resize((36, 36)) async def get_help( @@ -28,6 +60,12 @@ async def get_help( is_dark: bool = True, text_color: Tuple[int, int, int] = (250, 250, 250), sub_color: Optional[Tuple[int, int, int]] = None, + op_color: Optional[Tuple[int, int, int]] = None, + column: int = 5, + is_gaussian: bool = False, + gaussian_blur: int = 20, + is_icon: bool = True, + ICON_PATH: Optional[Path] = None, ) -> bytes: help_path = get_res_path('help') / f'{name}.jpg' @@ -39,73 +77,112 @@ async def get_help( elif sub_color is None and not is_dark: sub_color = tuple(x + 50 for x in text_color if x < 205) - title = Image.new('RGBA', (900, 600)) + if op_color is None and is_dark: + op_color = tuple(x - 90 for x in text_color if x > 90) + elif op_color is None and not is_dark: + op_color = tuple(x + 90 for x in text_color if x < 160) + + w, h = 50 + 260 * column, 630 + button_x = 260 + button_y = 103 # 80 + + title = Image.new('RGBA', (w, 600)) icon = icon.resize((300, 300)) - title.paste(icon, (300, 89), icon) - title.paste(badge, (0, 390), badge) + + title.paste(icon, (cx(w, 300), 89), icon) + title.paste(badge, (cx(w, 900), 390), badge) badge_s = badge.resize((720, 80)) - title.paste(badge_s, (90, 480), badge_s) + title.paste(badge_s, (cx(w, 720), 480), badge_s) title_draw = ImageDraw.Draw(title) - title_draw.text((450, 440), f'{name} 帮助', text_color, font(36), 'mm') - title_draw.text((450, 520), sub_text, sub_color, font(26), 'mm') + title_draw.text((cx(w, 0), 440), f'{name} 帮助', text_color, font(36), 'mm') + title_draw.text((cx(w, 0), 520), sub_text, sub_color, font(26), 'mm') - w, h = 900, 630 + if is_dark: + icon_mask = Image.new('RGBA', (36, 36), (255, 255, 255)) + else: + icon_mask = Image.new('RGBA', (36, 36), (10, 10, 10)) sv_img_list: List[Image.Image] = [] for sv_name in help_data: tr_size = len(help_data[sv_name]['data']) - y = 100 + ((tr_size + 3) // 4) * 80 + y = 100 + ((tr_size + column - 1) // column) * button_y h += y - sv_img = Image.new('RGBA', (900, y)) + + # 生成单个服务的背景, 依据默认column + sv_img = Image.new('RGBA', (w, y)) sv_data = help_data[sv_name]['data'] sv_desc = help_data[sv_name]['desc'] bc = deepcopy(banner) bc_draw = ImageDraw.Draw(bc) bc_draw.text((30, 25), sv_name, text_color, font(35), 'lm') + if hasattr(font, 'getsize'): - size, _ = font(35).getsize(sv_name) + size, _ = font(35).getsize(sv_name) # type: ignore else: bbox = font(35).getbbox(sv_name) size, _ = bbox[2] - bbox[0], bbox[3] - bbox[1] - bc_draw.text((42 + size, 30), sv_desc, sub_color, font(20), 'lm') - sv_img = easy_alpha_composite(sv_img, bc, (0, 10)) - # sv_img.paste(bc, (0, 10), bc) + bc_draw.text((42 + size, 30), sv_desc, sub_color, font(20), 'lm') + sv_img.paste(bc, (0, 10), bc) + # sv_img = easy_alpha_composite(sv_img, bc, (0, 10)) + + # 开始绘制各个按钮 for index, tr in enumerate(sv_data): bt = deepcopy(button) bt_draw = ImageDraw.Draw(bt) - if len(tr['name']) > 8: + + # 限制长度 + if is_icon and len(tr['name']) > 7: tr_name = tr['name'][:5] + '..' + elif len(tr['name']) > 10: + tr_name = tr['name'][:8] + '..' else: tr_name = tr['name'] - bt_draw.text((105, 28), tr_name, text_color, font(26), 'mm') - bt_draw.text((105, 51), tr['eg'], sub_color, font(17), 'mm') - offset_x = 210 * (index % 4) - offset_y = 80 * (index // 4) - sv_img = easy_alpha_composite( - sv_img, bt, (26 + offset_x, 83 + offset_y) - ) - # sv_img.paste(bt, (26 + offset_x, 83 + offset_y), bt) + if is_icon: + f = 38 + icon = get_icon(tr['name'], ICON_PATH) + bt.paste(icon_mask, (13, 17), icon) + else: + f = 0 + + # 标题 + bt_draw.text((20 + f, 28), tr_name, text_color, font(26), 'lm') + # 使用范例 + bt_draw.text((20 + f, 50), tr['eg'], sub_color, font(17), 'lm') + # 简单介绍 + bt_draw.text((20, 78), tr['desc'], op_color, font(16), 'lm') + + offset_x = button_x * (index % column) + offset_y = button_y * (index // column) + sv_img.paste(bt, (25 + offset_x, 83 + offset_y), bt) sv_img_list.append(sv_img) img = crop_center_img(bg, w, h) + if is_gaussian: + img = img.filter(ImageFilter.GaussianBlur(gaussian_blur)) + img.paste(title, (0, 0), title) temp = 0 for _sm in sv_img_list: img.paste(_sm, (0, 600 + temp), _sm) temp += _sm.size[1] + img = img.convert('RGBA') + all_white = Image.new('RGBA', img.size, (255, 255, 255)) + img = Image.alpha_composite(all_white, img) + img = img.convert('RGB') help_path = get_res_path('help') / f'{name}.jpg' img.save( help_path, 'JPEG', - quality=85, + quality=89, subsampling=0, ) cache[name] = 1 + return await convert_img(img) diff --git a/gsuid_core/help/icon/介绍.png b/gsuid_core/help/icon/介绍.png new file mode 100644 index 0000000000000000000000000000000000000000..41301853a54de462a5610ed4ecf01c29df431941 GIT binary patch literal 776 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 RlvV%$002ovPDHLkV1gmX=yL!7 literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/公告.png b/gsuid_core/help/icon/公告.png new file mode 100644 index 0000000000000000000000000000000000000000..945dd0d603b8940bbc7cb906b8d5323f77332139 GIT binary patch literal 698 zcmV;r0!96aP)Px%bV)=(RCr$PTT61nFbuUgLCdsUr?7)lK~Duc=yhm^_5^Xq0k>E&M6qQh8I-Mm z($n8oz&!W|56-_)08|5dLg49TIiF0-o3$_pum?xR>9~8BCP&-^9OD461~Bs&vsGmm zKVQ2V5Q$F|fV0$L-^SSKxD}&I>>$VV^XqDVOY#^LDGr8^kWikf?zkLBZCM4m@zEv_)WSC#p=x7H;}c-&gck|p9K zs|KJgJ8NS!HXf5SH4&mY$P}vlnt$gCRHD+33%z(O)ZN0R!OdZ@A>F_6^l1YAo*?zQoJ9lZiaNZR3IK-*3{S3fic|ws1Hurl)u2{`S`CIa zK}|8a3!&U1hZ+Z1qClzFBr5n+W@GcR0Vw&FI0^t9s->ROMg+ie?K-=1R1vRreFLcl zP8T||O`ywRL!7GsXez9!aL|ycwSd+FS_`Dr0z(XO6q+;)wuM1sd`lYz&oRykTlE@I zV2mu~&|J7vG>0^awRThY3YV(yC0Iy3!}l`(b&H>$yNuzk@=^&bwGRKISp0v1QjBoz gs{n8zIo5rC0dlsqFBO63*#H0l07*qoM6N<$f@oecRR910 literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/刀剑.png b/gsuid_core/help/icon/刀剑.png new file mode 100644 index 0000000000000000000000000000000000000000..3df88a93cd50537377e8835910aa325f85d68ad9 GIT binary patch literal 977 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 BgxUZA literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/卡组.png b/gsuid_core/help/icon/卡组.png new file mode 100644 index 0000000000000000000000000000000000000000..80a42f8d38f1fb12133716a2391847c077d8b7e9 GIT binary patch literal 1462 zcmV;n1xfmeP)Px)a7jc#RCr$Po4sz-KoG}wFA^ORFMyQhd{IOJLOBo($wMF^D0u@UB)TLmMP7r3 z9=aT&04@|%C_WIRL{!wEyG84G&3HWfJ$6!DDv0g%&VPP0J3H%0vHlTqt$|pJpdq+a zBy4Tn-90`1FdLfA!9{QxIvMXA3n_P%5C@CJ{BS5S1`|OWua?VwZKO7?T+CbVuCA|E z$I$Sh#OPfFZQN?Lx-W$|fCgd_3WjVixlO;D9Ng`B}P-+*(w@F;1(dex&Ua93!fLx%*+8R$Esge9smgf{u zKh%n%=?j@dD)P~UT4k0;nC1*u|GBJ}Nf zYuqyBf)IjiWUQ3BCCQ5!3C}g5p(zL-wxA zuza=^ZjBhkIIVeD-s2S^bb=UD9|b8QxK=3RIM;cGEyvln(%>{GHbI6^fQy&dci2RS zArV4BXLV?;?VvU8i`mYEU|ZdTy76FcRY;NG%LQiM*3MFlH=ziz&vDlPhNw^qoFuq5 zRw1!j-4l@TI4VL)NJxQ?GG~v`wz0B_5K95h3$bC>O0Hm|6+?lS1Wbc3d9@Bz0w^#d zxRy8oMNkX{VIrV5woQms3Q|@H{4PjPECoR#gwl{ofsY2$WPu-eG;|Pcz*q{B zM4(FPTnaD^t`IN@*Vf~}tuyafF&}QZN@;j4CAoEIz%#Esu7B-1?Mk5_m;@XWaOvZs zAjD(7dr~Nf62X=mxG3-$=)3OgP`REDI*=t}wnh~84t-0g&ybw!IXmAd5it6l&`tO@ zAjfbjm-wnf>U~inP`LqrsG;vk`A{N9j2sH0bAo<=N`$Tx;MlK5V#V;a&O*kECIQnx zomdSSCb<+Ok)R*)ZLEeOBc()U$qCd-VOtgY7K4L=WD=^72;5jvo7c|H zKL0k)a#4^af~|ORC8C@|*GVy*3ngY7f7Q{Kvy-1(6tIdA(nTVRE~FYoMp4{(D1~}i z-74i1DdqR3NQ>xO*c_C!I>5m~J)-fYKKZv!41C006g$tQkWZBmzZQ%6jnD>a$nuy? z0#!VjFVtb|lE&A^@46cl5+>W*+gFy$tB<9WKR7915y6%ls>Ega63%vz>Jr0j(Nnj} zE-JFafuf;~-Rk7H`2n8yVd@eCj)$r9joVvJ&;vU+RvBNyg@j3};qW;Y5;`>KUt}1M z4Ws@>f{OySoB(O)a|g-!HC-Ypod Qy#N3J07*qoM6N<$f?Q^m1poj5 literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/哪里.png b/gsuid_core/help/icon/哪里.png new file mode 100644 index 0000000000000000000000000000000000000000..0adb2ec217f2a663ded9d51deb86391413d2f62a GIT binary patch literal 896 zcmV-`1AqL9P)Px&I!Q!9RCr$Pnr&{RFbsyty+FG?S*Iu4S;4(hWfUrp$BFG=hg3sxZV8a@U#yK-M=47COp06-)u3 z)&H;>ZXj3-S3y@;1Ng~(>y`3yffoSQ{`-KGR)cGe>6%{!fU_wzAaRa?#gMy}D|{{~ zfbz7O|FBj_+aHk}!JN)BgBaTI4oHF|K_(~U z)%wr1Oqe#3drMv5)dfTVq(P!Cz;+nTeN6$t+~(?lCP=RdGsR#Ez^h+-%>W_*aA2WU z4G%G>#T~XQ_c8?P2o)Y%TZ#_Iwo65-xPMnFc22LuBuv~*CF!wYOLr&q)AQJ+}pdMm%Nr!jzdVB~!>1KwhDz zo#EPxlC}7hHegr!8~{=X9^%t<32MZ705}L<;w2NLdkVljrE0=s7y$<&+6j__H;e;z z5QWpC$DggmpXPwHDz$Ac3WA6D?f}sA=(fSZ*&e1{w-g{oXZAf{|4xA03qW<`>Fkhm zP8R?z;x(_spnj;tcS(Vf#k&I-UA!xR-yq%%fK>c`o#ev^$%_qF@Thy37eT4`OuzZ4 zT+`}m1=SRQMm#tF*MhbZZ<+#H@s-w9Jv6ZtZw8=MycUABcoP75Qvq&{vJ;-LpglRk zL%a!qw3P&QhMUB5PVf?M1z?Z=koX#eBl`i|NPV~q`o890CWO9>|-tm47)U)0{aG_ WmkNEPx&I!Q!9RCr$Pnr&{RFbsyty+FG?S*Iu4S;4(hWfUrp$BFG=hg3sxZV8a@U#yK-M=47COp06-)u3 z)&H;>ZXj3-S3y@;1Ng~(>y`3yffoSQ{`-KGR)cGe>6%{!fU_wzAaRa?#gMy}D|{{~ zfbz7O|FBj_+aHk}!JN)BgBaTI4oHF|K_(~U z)%wr1Oqe#3drMv5)dfTVq(P!Cz;+nTeN6$t+~(?lCP=RdGsR#Ez^h+-%>W_*aA2WU z4G%G>#T~XQ_c8?P2o)Y%TZ#_Iwo65-xPMnFc22LuBuv~*CF!wYOLr&q)AQJ+}pdMm%Nr!jzdVB~!>1KwhDz zo#EPxlC}7hHegr!8~{=X9^%t<32MZ705}L<;w2NLdkVljrE0=s7y$<&+6j__H;e;z z5QWpC$DggmpXPwHDz$Ac3WA6D?f}sA=(fSZ*&e1{w-g{oXZAf{|4xA03qW<`>Fkhm zP8R?z;x(_spnj;tcS(Vf#k&I-UA!xR-yq%%fK>c`o#ev^$%_qF@Thy37eT4`OuzZ4 zT+`}m1=SRQMm#tF*MhbZZ<+#H@s-w9Jv6ZtZw8=MycUABcoP75Qvq&{vJ;-LpglRk zL%a!qw3P&QhMUB5PVf?M1z?Z=koX#eBl`i|NPV~q`o890CWO9>|-tm47)U)0{aG_ WmkNEPx$?MXyIRCr$Pnrm{yAPj_+lchOXlasYKYet?r({Xt$5=Nkinfx*e-j9{A!54b- zb^-N&5YZLvJF?qDJ6H>VFYRC_#NUZX1z~jn%v1%z0{|5SF95_4JOL0v&;mf?d(=NJ z!n_*QT2oCx1@OSBRRE2z-86C?1<>RKRKRKgUR9JjD6A*cZ``P80Z zX;xFOr&bWU0Fc;k76@hla&Km%onQ)J1_)IE$bo|-1^&ixIvmFt<%BALmO}?Eh-3T+ z2vY-KAZJ6E9sqQRp|IZc0N&aGXNza!R2{&b&Rz+oUIi5C1%+Ba5kd}tln6Rmi-%L7 zq%D^ooWG?ugZOR$TE7sPMZ6h+W8RIZ_Bl7IYk>4zU?130yqN>`+2GW%+zvAbAXqrM zhnS^6cO}9<3;+pmaWJyl*`Uz)0+u&{~9M z`~c8n70}Fpb!<4G#Q{89yvOIQJ;b3%|SQkRqg-)002ovPDHLkV1g{4 B=bQil literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/导出.png b/gsuid_core/help/icon/导出.png new file mode 100644 index 0000000000000000000000000000000000000000..a8621dde8250da95a8d72f8d9697cb337cc98f44 GIT binary patch literal 644 zcmV-~0(Px%K1oDDRCr$PnM-biFc60E9kPv7iG3Ep0oqfrD%}B?RjLu;Qs8SOu_DJOu=6 z0Bni(4Z#Y4De;@l=91_6+aN5C{H`FwtipH8Ps-}evOv7xOJxfp=yCg*TCR8mT9 z-4{YsWm#&+TMA!si<0y>=fD!Kkz)}b(09f&^04#xk1^{Vc4IQ8HyND1_ zIpcn2n0qi?B@}?Ui45auntn%7^ed@h05nbW0sW`xdknyon92L>0UQFH12_r3WEDu$ zR6ZxWrfG~T24xb2YS4;;8qZY(20&N^po_>JpmSp=Jr02x0-OUl2mIX$s$Sl9yVdsj zltW#w*W$^sD$HpR8phs};9TC&j57fC07OHCLjbs)cbWrKJZD)3?(_ebAL_aW^#sTE zL3jWn;aM{Y0sz(OD~dq?(Cq{fOUz}E%OICQ^NW!na=_0W;^H#+vLS#-c-BmU@BnLS z5FfG*05ON)Omv-X@K!iDHHZl@0L|S7djPa6jPSVNOu!)!+{_(L$oRg`;ao^Q%>YQS e2lUg`d%z80UA|wvU&(0z0000Px%C`m*?RCr$PTMKT(FbE|lTYIu~CtG{6O+-!R5^TUt7Go2s+N3q{M08k<$U2{mF0!p$+rZ8?+$q=HE zmfH2`eF*!8U^#{?UaSRFD~{UrIQ7f~&RqJXv*(0>zv>ru7eIRaAebLv<#=+lCh z2$1k@!kr@^jbScs(&~Y~w?u%1cM}Gq5wLMs5Fkicl9aa)*hK*?Cqd3(MZ8i7Xi8N} zNzjZp2-u;Fg#w(s3oI~S943W;)LFGw1@#YblA7<7%B~r&6apH6(FgS02ZRC?40Ig==FaNmBxuGfB|&pzaWVmByg@)TLiR?; z^R{^G2~x#NIY3bbn>rXV;|&60Pw@S-z32oRdKrpN(7J^uB|&p*8LjZ&sd;v;Y7A literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/拼图.png b/gsuid_core/help/icon/拼图.png new file mode 100644 index 0000000000000000000000000000000000000000..a76a9d9eb48846d9f049581a3958baf2ed3f3d7c GIT binary patch literal 917 zcmV;G18V$Px&Pf0{URCr$PnoV-*FbsfWjzrj(o~-T3O80~#;f@(hjgTzKwwyroHl2A1w)9#5 zjvM~@Kljh|A65XX1#}{?+wJz}^Z6}ox7lodj>qGn)7IH-%w1r+-F`UdJ_#uf(=@%$ z3Bn9OIC1a&$1n_gPC@Ve=jn9%;@-1(ZUW${{I^EnX_`!A;bbt`bR5T^{N2fiQ%;4! z++q$0%>f{%e{jxyVL@*kN1sBO!xfqXfT!=Ad(TCD2%)zXSOB;?RZgK-2f(H|XfYfx zE~sgrTU)^E0Z1!4j5dhwY5*`>qf8i2%vTV@Lu08`3x@|pmMn{pY3 z6D~Z@0w}5IdRRcZM{Up~0T9X`y!V$bF8HH_FxT~keI)C|PO^0cNdiF1S=O8-inMqK z)($nUkOQD9Xj&+yS))|}g#v))-!kfIl+3-`6+n%NwNe;hK{xVxxr>H^qB=-eMX zAajH4WUI;r;821qI%=&=`+Lb;vj_lnQPR5@qJU8HiPPXUhf?Ee^#6O0&9s#uWu2`` z;qD`IB>+;sS^(tNA6kFazAprDxyZ?Nge3rOw?ka336%=IsqNPlrS8MbLL#3CKuvH< z;>p8DQ#IG!i=PQfuhdIZ=b{0W+$w9WY|#Kv)5 zZc5v55&#yYxSU;L&RPJ{VP~}kU}lyqdP`~PMliie0vc3^`cRS@cXNlrfnetWL{8_{ zy*w`gAX@nEB~fh3t;qriKNfag5BpdGs6F{8tO!7a5dLOvUaSFJy1mfe)-+L2NHGAV rX+F*CD}bjtDkDKx3oruvG|T=1(38AhJ$3tq00000NkvXXu0mjfv8$YE literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/探索.png b/gsuid_core/help/icon/探索.png new file mode 100644 index 0000000000000000000000000000000000000000..6da2b44a692211b410591cb2af5506626ba31c73 GIT binary patch literal 1388 zcmV-y1(W)TP)Px)CP_p=RCr$PTRUr1K@^_Z2ny;Cus6H0Nte~mq)2J0ofa12uki5;Yy?Zu&R!5i z$flD`mm*{nLG1hiiVyIP%r$qpJNG=kdE7uuQfBU*Ip;gydCpyHPWhib<@%d50L~cj zA0n`_a$~)!s+-oib!YA5;9&ZcQ}b9{zzgL5{CQjpVeLACxijX8BsjIl{2by8I~Z*2 z?|+R)kF7CJG+|QL+m?(4nPOEj08lHW zD&BstQA7mWxqozTxkE1iz=}IJu}e!&DL{cDcm+7N^u?5pjDlgJ7(gnb1UD&|HP)4Kd@KVf871Su0C37T5tkAatqDpofug>) zHv|9~?STkC8jjrpFwRYUZB7+RC0Gzc{YEYb0BU0-r-uNvm6XIykm6Ga0BDh-8ON_{#hAtd5rB^M0l$|3@M~V6k})7R%S5%98k(WS zH0#U*5!0({44{;!0G8xt0m!v}BfOdlBUvTwD>X@6EMNf$(T%l!+j?9Lp^d9J1|VrU z48WZHBmgnBv_@0PEpqw*M0qML<^hmM(^zn{=ed|dmAYuAAsG--Hi!P2Qs_E2{*vl^ zq}U<>Kqe`u;H949BEB>^M&cL^Kv2VL)l@i#_e#f(v?ZWYlt<%0HULtZ(||+RK^8h- zOhR0_13)Ku2!|nsP7VkuEx4F|30<-P=(M|pNmBvHRi5k<`Ub#9UwSE>e?+gu(z$TS1RM)ojdpK`QF~%Z{#eL{vrb?8hJ}ecY$z4);!4U zHyVy#8)NP+?q|Ok>o#Vy>1PRq*t?AAi;>vohV2*`<*zMY->j^APbz8M%h_z_epD%~ z7)`wz%W(s?Qk43O@jYwID+YkCvxDgsYK;OMIS;-VK?0ye`IrJ{G#pQj zF>9fsm2;bihdUp_|EJCj*(?x~N5%Ypl;dMF$Li|p#a}-zJaX1Ou*P0C#=Nzad$#{+ zXB$x-F;=q=)C@@*N^?QY-;tayrq+nMg4;)*2{M6C^7WcpV6aR9AvU#2XLJBSswi;~ zl2|MuK!~6xp4$OH>Y>#MP@qL@(IkN&eh87MJQ)PT!iSplBGzg@lj;tdo7FKk;fECq zvUQ?r_-UJ@ZL5nz2BhL)UP!^bAf(UQmBK}V*mpHg*vo6$ literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/推送.png b/gsuid_core/help/icon/推送.png new file mode 100644 index 0000000000000000000000000000000000000000..8161773261d50a936da293b68c512bcd3e2ddb55 GIT binary patch literal 770 zcmV+d1O5DoP)Px%yh%hsRCr$Pn&EN7APj|Jr8on$lckxg86eI|?r|6AToo$Nt z1e{K%ON{ZWTapU)r5vRpz4+T=sY_v9(C{pB-=?6Ek{vr7+Q zk$B1h-6S@Nk`>SeP$G;i$D+^HfOUW;1r@uUYDmc%aPn*oSVgd=peFIu%uuu-zK3hT zc3`O>N@@W`6JeEGjPbfQG1MFyTe3BvmV%ny-X@;nU<4GQ57z)K1vQE1diE5@^P-mX z{x3?g!}o3iXkL+f_})zb3gw&?yso&C!l-S8iddr*cwTY4 z3V=}1+xKo3;2urZ8=S|}mSor61>o>5eSaW*($*&JE&$il=K{C7-%CZ&6hZg`BzQkG z?<`RvqymTnMc)s5pf9})rT4eje`ip2(>RWTUg*ODq+Q&9StSvGp+H2GWL5TK>n@3__=;2n3RWlV#BmTJG_T8Ag#2R#KwU)bB~rvLx|07*qoM6N<$f?|4E Ab^rhX literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/收集.png b/gsuid_core/help/icon/收集.png new file mode 100644 index 0000000000000000000000000000000000000000..5d3d5aeffd0d3660dc7505138490293c871d361a GIT binary patch literal 1120 zcmV-m1fTnfP)Px(8c9S!RCr$Pnp<|_FbsxcmPB};>B`!!teJPhlJFe)#ME&lOS0ua3p_$%q))$O z`QnBr|F|dje|Q0SDZrS(IF4WQJii$a+if`06gZtuf4%o#VC_85repUaU}|IvAcp|I z!FT8LdBU85->KhvIS=ES0s#3B!w?)zKH%`}J4_k*d*1tx!{P964!FoO{coN~or!dQ%`x0HlsbZwUGOmK=w4f%j__;-V8Ev&-f3 zsWC<%-&HNhr$^=cBGa@$+&GS_2*3bZ5KfC9LyZ~jG}aZ`*;o{)Bw(KsVWx3LrzkksDfNISb>Bw0Mzw*{nG;o_!R(1 zbCCm)j}vK!hGU6nbTo%9?HsLv+-3o39)mNb^hg}LNjg_UN&Z@mgX&Vi%J-+$G{~g_ z)}%P+KGV5<8H02lOF2sZN@v338X%y$O&@?k2)W{1F}GuSa6P?c^d*2OWk={608}9Z zT9WF_)d^|wlQ<`NhFYJ**$C|fiBwq0nydIZh`1Vz%jIaiwD?J!71WyWNSbnFD~v(F za#aGNG==p9APFQ1fSMX9gEc%Is$yDAhY8Ex8W>#R6Dt6lvzM1weLH+dEk_$6gum0QOQ_VPdW|Xt48w2(kU2Qz zjZpz&O=<@iB~@smA7%v33a*k;#U?ehr9e{lVXDv;ZW92}Kn{dODwJS=DyS~Dq?l#} z&ojx^3w{l?vjAZPpw!1sB?D+R1BR6I=$pl+f3S^#mU z7gn6!`)~>^J!t(EMNk@9>2qm;?$!!h&H~)l_C5N5=1WkTX|Qy3mu__IsQ`9k!b$-J z=Qo=#y8?&~ayv8>2&n=V`Nv_n%T}A)CcTQ_#xL#po)iGlLZi)77X>UmHg^4O13{yP zS^(I6!{o?(bAH*ZfSPr^1Vk->l)B`SmKlH=5T!q_1yG7MR&UG!l;&K_07?xS04=vd zx&Z)ZHQU|TX)(05*f~N3sf~6P0MW@3+X-^>xdw!!Hnc>0u~p=F^veVQ3?{v31 zvAY7ONsFG*#$fCMK-oK}syG*6?)O~*l+wbYpmEOLT>+^9@h(yAHJBP_9}0k#1Fhri mo&v1~TfhGTU`_O=jrSiCq%nfuw3n*@0000Px(^pZDgzGYEV9gL~Y6s064oV2>+Mm4GS%>QkpCh&E;ca3XF;JtFK0A-?>q zJ>T1|BntV3*iy=)h%}Mr34kb$sW@h4K)&N9u9g#tis@fW`vE>z((8Z(Eb5GTz*01${sjLvsf zF8|EI32oRJ;7qrUfE@YBlvLDS0v-L)F#>qI>w6!nh}EauvqbP-IUG9E^%nV`p+*f zFW*rStF>AWiaR6U0KgN4Z~(5$K0F%)-c73l49T2mx-SwF%s7kCzhab{pCm-37`VSSF9XR023nH+))r%UFQH5gJ|W zt}cd8t%HwFXtn@Z=WC_}qsMD`#Oh6Vk^p?uy`%Po!s)i>yH*9r+RT(>^j$!{04HA} zpulwRxB&2Cx9xpyU4ZCmttr9q=sJ2PuS(5-kH*6i*bfA;n$E>V2z$mYBD~mLT{v&O z1WX;)+3RXkx1M`lhr{jxTtKd!ju>|zot+M+5+JFdPBES0-0M39r^t68h_N@-I$S9w&$=4CLqYq>;K(~KGPUW~9~DykT4ev>8Y$r6V8#30>XTr7 z$~{8_7s?O=fOk8-_koI7eaf99g4r@SM0j@iG-#~^n$6Sqt;5>a0C1!bIfNhO+URpZ zaQT)p18T1v5MyKC0>C2$ac+nWc;@O=?+>dP5N=kh)yBlW2VN~g?EZ1M;(6ZRoZ4(O z+=n)hTE;ktME#AWAo%1@4vtX|Feal}pi50#csd+*6SPH$8yQ=8l>oNS1n*X4?iSAf zx&%1GSgb+GtP#_)5z^IW+5NNUozv531xIDe4?@QW7>kX`nGRI5CPlLz9*RXHTO@8| zOr6tnWDZN`-KO*a#Vw+dF`E_UV&-R<@)sjE-Ua9>#>tg=`I5#;4|*qU3jJipWDr^{ zKsqvJ8K9mP*NdO=b(ph=W1|*H9huE6*!<*;!gDxqYzk!nXXD*sQwgwJBDGaKs|?sG gWp~TIdp-mH0g8*-ZZBl5umAu607*qoM6N<$f@yMU;Q#;t literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/更新.png b/gsuid_core/help/icon/更新.png new file mode 100644 index 0000000000000000000000000000000000000000..0796868bd8b3f4d3b76e6ce038970db2157401d0 GIT binary patch literal 883 zcmV-(1C0EMP)Px&ElET{RCr$Po7;85FbswjI!_@Rluibn47x!|=V{%e987blb+hFp4ap;MZ0XZ) z`AP#1{xlEnKdb;&1w1%`QM*9fwtM9L{S7Y^_ss_0yRJKr6_@G&(CM!LhX$Z`-t+`G z)&^1q06N`Axq+j}VXkn1wI+D(w(qPYa-2spaO6YLE}6+{?x#m$C$2ZPf}}<0^-L=Su)1c@q44CwsRn;6@ZoZ za%Ltp`2O>wd)1C;Ipw?|m;kT_J7i=FknOGwWO;)vJ^&02TAY;1auBphu^hle&PO<< z5Q+ed(dQ)<;Cl+frh!*!6eS$NQ#mQTmZ}+0;d8u0CRvq z<$}=w%pobJAaHiMDj?1lYtII`BxzMa62PD3sWB~ESANFo+2YiQKy?F`T@_CUJnBlS zfS9l?8bI8O;C7Z53BaPF6@Z1-63ea%SYlKyKB*KC4>hHwrKRDylqDxZXds^Ng$DL< zA5dCa&c!K<9pu?y>X_?c0Fb*ZQ*VFa`D5loO@_!EU|m#X+GYAovn5VdNUaD-0R0JZ z;tXKwZa~>3ku(F~HXEmgz@7;ZBo+mL3yxbCz>4~PfdHperBkcG3L#4YY$Fqo2r($y z?vM>&?kdnG#cTkQ)TZnTmSM37z#Ji1oJaeM0dQRb8yHgwR_9#+NGj-)Qsu;`xsgU) z;wV;tI_p+~ASrMd0L$TsYCqt99-ta}oIq%zo>Jevjcy81D|CFK zJ%r#601eWP!8hZ>@8xM+p2pvY*XPwv4*+u~Q4vBF0DWQ{`Ht|f-}-xq2%#DPbC;0T zt(y17{1Wp>>d-bT2~sxJRzt}pOzJNHt^jUoaO@VE^F57ds4`Um3>!o8=EQcLx_aF; z<^WX(Fl=19cToHPK`9WU0w|Gct#4NVwaEULdRGPfmq^vJ^9ShiCSPL3GS~nB002ov JPDHLkV1jppeYXGr literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/材料.png b/gsuid_core/help/icon/材料.png new file mode 100644 index 0000000000000000000000000000000000000000..64df7fcd1355c57ddc782aad8ec1be0df524d2e8 GIT binary patch literal 949 zcmV;m14{gfP)Px&Z%IT!RCr$PT3d44FbqVFl9R+eS(1~rIaxaJh#s0D#RV3GYFGLu1!5OmJfs&n z=J_om7pLhL=RRuN5k?gt1&Vpn&z){iMBYW@gF#6|($Af4aEqpL?f!_!CkR>{h3V%` zHz*?C6)?X6&byT79zEZ?CLn?-YpHf>dLTK4~OrL|L9Xs#4FM zYOJGACs2bh@#<4~-C;VF8BvTr6`&5&sZ5}1Cq4Sqi>kEqrx^;+r~d}1R$sm>>8@H^ z7oKVLR8~Yq^mij%Q+!A%h}i*W%rWyN)Cp!h z6E?qMfMOg_0#Kl8eX@>c!sb{13Q&7G#YC-zklowE0L3ufI=>h5kh9!-F@{Um_~FeL|+UUHoP)t z`@7MB>Ijc$k9u}oI_15389+t!cRir2wHTH4Rshv=V1*saA2c_hy%AMj;F%ANuH9%Z zm0@FvS+K6H^4H}`0NTXSc z{i*iOm)0@H0kn6FsE-grSYPhyt-S&d{l&Rnhp^pN_2_lAj&(ibVVcKFR%9oo?6`&#=*wZP7 zX)jQygp}y*&aa|?LWg4v)9AF4CA~{X0g7cBW!tMyg>6KqmiSVDVwpyOieMVC6Ya}Y zrxd6a4)k;?f@v#IR(%@kR3uO{or++3rc+U*{~$zxYWq91QttJ%-Kut5SOXPhqivg( z`JzCvJ<(_gkTL&mfm-FuWhGGU$aRGitro7Zp=7)k)|t6YFQP`Xsc1XB*;KTRt1sTH z;GDTV?zR&skh>G86DSY?aM>AA2B0E8FoI?uZrL^Kt*Sj94vn1yFD*Dvpq>c<(3i_! Xi+bo?xNA1I00000NkvXXu0mjfLLIst literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/查询.png b/gsuid_core/help/icon/查询.png new file mode 100644 index 0000000000000000000000000000000000000000..041c6d27ec9170a9f0769df5472ee3558615bb34 GIT binary patch literal 839 zcmV-N1GxN&P)Px&0ZBwbRCr$Pn_Y5(Fc8N>JxkRK)ahIGWa`QEv12cw_AHVP&cM*H%YG#hL|;uH z``iC6yCD>A;=f|z_PZB=mjW0Bmdnp|S(aag_iI-aYsQp^4)MK}2VlPP zZG)Z(fb;%%`Tg0n?dvKa0MPdc8LH>&bwRlxwCAY-R3H|FLtg+w8B@e8vcF66cH3g5 zb&7mL*^@;9s;Ux5SQ_{b1%OtR0!yql$U^{7QWx0Y4Anl3vI8Ky$eyyA3Kb26tN>8s zg}p={L@9)<06-5Kk{PB53509_xXp(&{;k)|0sw2F!@65)d_5jg0#^lD0Cc=$kUa(| zG=y6;WdWdFoJ0{&C~#De96(3@3B2EgLeSW7ilpQKIGYX47695hoeKa`85eRE0I5|l_;$DgVBNUD)R5}B_5I9Au)Xk5 zZukET-C^u4HVAT508l72qy=XTsGVibJ^(krL+3&>9e9o(2N% zu=Eo{kR6vF2?&W2@DC<}H$E{Ws=0>rvDQ?d!1`Io<;nhDV})Uk76AB&SvM Rc|QOE002ovPDHLkV1gAAXSx6Y literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/校验.png b/gsuid_core/help/icon/校验.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb0fbf7f211fe745ab3fe7583c1af00ac3ca79f GIT binary patch literal 1069 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 IM6N<$g6V8;cK`qY literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/清除.png b/gsuid_core/help/icon/清除.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0c002ff6bd5ccff4494ea03cbf84332bbc5c39 GIT binary patch literal 643 zcmV-}0(||6P)Px%JxN4CRCr$PTTxQPFbHLDrYBQRrZ>~U+0Im?%i}f4rY-q#oP`8l9t2pu$;H?0 z;{HnkPz<;@0u=%mC%~{I_#z^2BBDRhHH4i*4iS;hr1J{WyNG|P#(}*$1wgi(MsBhg;0!bo;P%p)(H|B9-G`No_xGZ0tvYobK>C%g0Q&|1}w_j7AqTUl6iPQQ+NE$)Gqs-W9ay@ zRR#c$3GhLkfv^mP{elJWC|d?(^m}4Z02p+`K?oB9Gnd3(l7`p`3Ek03mzg~|Z}xr) z01?gXfFt|I4jFxwwZjnTav`A&21G9aotQSxi)^LNi#B~!14O!%K`Ux!^|SK7M@3F7 z_AnHq3~C5K6rw2rm>1yL06-UvGJtsjMgzcH5*z~7nJ58zWitx)5(QZRnJ_&S02JuR zt$1A^qL;lvTQ@QKX&uB7idxPL0Xb_8LfRSU%~mq}fzB^N$WQfe{XDksL6SL(Od|0GdO3unmg=2fMK5<`x5* dLwc|ce*kLdl|gR6Zc_jN002ovPDHLkV1ji41gQW3 literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/状态.png b/gsuid_core/help/icon/状态.png new file mode 100644 index 0000000000000000000000000000000000000000..fd320413c0cb7501a3104259a90dd427dfe9ad67 GIT binary patch literal 761 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 N002ovPDHLkV1fxO4u=2$ literal 0 HcmV?d00001 diff --git a/gsuid_core/help/icon/记录.png b/gsuid_core/help/icon/记录.png new file mode 100644 index 0000000000000000000000000000000000000000..308dc7cf9758aa584487102ee480d95050da6845 GIT binary patch literal 428 zcmV;d0aN~oP)Px$W=TXrRCr$Pn^6{oAP7ZsX{{_;*)%J2{^w9iP;~P4T`14T1Juei_)`Y=e*yp) zpdcV3^(DZ}BC;L%qJ{tfzyLx34N!z*E2SI?N~UnuT16Q@R0KB>nKPX{8hb~$0U$CB z!T>@54L}6R0;It|1dNSSGcTV7IIRu<09)q>16q|CA#f6bG!0nSb?KdRt@Zml2J||A z^?PXyxZ1H^`v9P4qh{8z>0D!F* zfB{|vo)`jSi=cN!qrOke0#Ocl?EnC!uzI9_eI4MXZq)Z_Az;}MiEwsVmQ}Np1^|^H zmEgViiJn*q-g=)10G`$kM<{!QjkGKfG5H7^06-~BDXe89dV$tiq-BSdgOSk>My67V zb|E<;i@9ywaar0u$pizTBA76L_mBV(nFZX-kzfD@oMJ%2N~I0Sud`{;KV;zH8Sn#N WeNJCz%UV1D0000Px(TS-JgRCr$Pn*nYdF$hJSleIZn)04G5Su3KjC0^ivFw?Bmj1(o(dJQ~(Fyom# ztizS$kjP0c$1Sd$`Ge2sUoQ-kiDy`vJlK9jLh-f0oE>~ zHc7jY)M1^XWVY7&%?^AEAgdn?2sJkn$H*iGKm|sD8yq?k$H*jau2#|nMpqb6sX^(q zlQ1f>F2o9lK2*(Mnk^VnbHJD?#D1gqpl67_;C(V)k{4yVWA?|51dt>Ub6J3@65`5(btGXa#>aZ}XP9Sxh-aAwl zX9S3aG1)z$DzAq=%smC`*KxYo2__0>loArW)CT#zpMI&rvejjM^A@FI81&7pie&J4}`?sLzqlJ!OY= z11ST+*e6D5mGvLdcPAREeQq~y1Oo-PJDQD0jhMHRr(LX7k1lLm85I~)$NJVL1CU7< zo09Uk+k~AS+*oB~DTNeh1F|r@@9EPu+sWFyVXE7#R%vDnvn%(nU?8d+4ui6J1K^VQvDA72I1U4+-zDmwv!5w*b)X!eY=0)%N3pfZ@dIwU`xBRk!; z2RSSZy~{+eOtR{xVW8DN1#&Wf);O^s+Na}@<1CQ92SFg1dk!xc7DSZBH@`X^VZ}H~ z9S;x#TN^j;{qzia+J$ytFe`{upocNud*loZG=KE@c$$bIW(#8+j*9J-K-!NAvVf)> zJ~_Z)fO}(HAl)>XQbtzPreH_F?tpY*bc$#vkC`T_tB$*c=)jm%1+&{sf=^SX1LG>^ zP}_Z#-J3!>Fsiw%+bDCQ&G;iw^xEIbkwYWq?LqNre}m|SF}_QSg~6OVdUL_!Iig6g zPxs#0@4ygW5D*50#^lX~Qik9W_Chx1chI^p#F?zpS64TJd*WZz9EMK;PmOsh>8vVJ zS{1HUj+ZjxPx&m`OxIRCr$PTUnCgFbs{u!KV8#q_{;4AT0w4ui@*V30O9&5}+6@3$$N>RT zDIaQL7XVNpXRYwH8315&ju|xpiuyT(uLVGmtB@Jv69A=!uK@rh1C}v90Z<~_YT*N< zDf0pV#_O*>bkq)mlmic0umAwlelEMO4FJXD@bcvW0Hu9tiYiGua%FjBzXbps%S~QNK=Z!UXh3$N3i;SeInsd`R=VHp@Xisrc zkI>fr0Vh25D1+=1q!Nf4_jejba1Gqtp4mo8$`rQ71g-FB6bRAZG6<3e?pP1A=)C|3 zLaPT)u?B8Xq@>m$0zj}>wLD?o%OC2&hGVcqc##SCCJ|u*d|C_$so<#{>>>vEAVflq z`}Di-`@fRM6ETl36&&W#M5tr{<{KpP%@87x?b4D~e>{OLqhbJg|Et)i0zd)6LJrWB zwLfF7-jh4~^e*+6O8IbpH2`iRE(WIxlk&YSY6#yca`UbRpf(V>1b6$+20#Ers{OLc z_f1CXOQdYd4nPn#ZTUOVnb`qO)48Gv1xQf=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] @@ -2708,4 +2708,4 @@ reference = "mirrors" [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "cf1907f9dba50e810dcf9bc81a81c79309a080aac345358c68a34b1dbd82d44e" +content-hash = "a57a5ae92fffd7da50ee98c76df4945223b2bf5636f1f6a84b2e38f0de05975f" diff --git a/pyproject.toml b/pyproject.toml index cb738d3..0245a52 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,8 +24,8 @@ aiosqlite = ">=0.17.0" aiofiles = ">=0.8.0" sqlmodel = ">=0.0.8" gitpython = ">=3.1.27" -fastapi-amis-admin = ">=0.5.0" -fastapi-user-auth = ">=0.5.0" +fastapi-amis-admin = "^0.5.8" +fastapi-user-auth = "^0.5.0" qrcode = {extras = ["pil"], version = "^7.3.1"} msgspec = ">= 0.13.1" uvicorn = ">=0.20.0" diff --git a/requirements.txt b/requirements.txt index d48f8aa..01b1b96 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ aiohttp==3.8.5 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0 aiosignal==1.3.1 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" aiosqlite==0.19.0 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" anyio==3.7.1 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" -apscheduler==3.10.3 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" +apscheduler==3.10.4 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" async-timeout==4.0.3 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" attrs==23.1.0 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" backports-zoneinfo==0.2.1 ; python_full_version >= "3.8.1" and python_version < "3.9" @@ -14,7 +14,7 @@ beautifulsoup4==4.12.2 ; python_full_version >= "3.8.1" and python_full_version certifi==2023.7.22 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" cffi==1.15.1 ; os_name == "nt" and implementation_name != "pypy" and python_full_version >= "3.8.1" and python_full_version < "4.0.0" charset-normalizer==3.2.0 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" -click==8.1.6 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" +click==8.1.7 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" colorama==0.4.6 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0" and (platform_system == "Windows" or sys_platform == "win32") dnspython==2.4.2 ; python_full_version >= "3.8.1" and python_version < "4.0" email-validator==2.0.0.post2 ; python_full_version >= "3.8.1" and python_full_version < "4.0.0"