├── .gitignore
├── Genre
├── 60's.jpg
├── 70's.jpg
├── 80's.jpg
├── 90's.jpg
├── ACG.jpg
├── Blues.jpg
├── CPop.jpg
├── Classical.jpg
├── Country.jpg
├── Disco.jpg
├── EDM.jpg
├── Folk.jpg
├── Funk.jpg
├── Hip-Hop.jpg
├── Instrumental.jpg
├── JPop.jpg
├── Jazz.jpg
├── KPop.jpg
├── Metal.jpg
├── NewAge.jpg
├── Other.jpg
├── Pop.jpg
├── Punk.jpg
├── Rap.jpg
├── Rock.jpg
├── Techno.jpg
└── 仅支持jpg格式!
├── LICENSE
├── README.md
├── bakup
├── 6.x
│ ├── backup
│ │ ├── foobox-6.6.11(alpha) with download.7z
│ │ ├── foobox-6.nsi
│ │ ├── netsearch.7z
│ │ └── nsis.7z
│ ├── foobox help.7z
│ └── foobox_js_6.7z
├── foo_converter_cfg
│ └── foo_converter.dll.cfg
├── jsview_multiplaylist2.js
├── nsis
│ ├── Modern UI 2
│ │ └── Welcome.nsh
│ ├── foobox-cn32.nsi
│ ├── foobox-cn32win7.nsi
│ ├── foobox-cn64.nsi
│ ├── foobox-cn64win7.nsi
│ ├── include
│ │ └── GetUserLevel.nsh
│ ├── video.foobox.cn32.nsi
│ └── video.foobox.cn64.nsi
├── scriptWin7
│ └── styles.css
└── shortcut.js
├── biography
└── {BA9557CE-7B4B-4E0E-9373-99F511E81252}
│ ├── LICENSE.txt
│ ├── assets
│ ├── html
│ │ ├── config.html
│ │ ├── confirm.html
│ │ ├── input.html
│ │ ├── inputApply.notUsed
│ │ ├── styles10.css
│ │ └── styles7.css
│ ├── images
│ │ ├── Logo.png
│ │ └── flags
│ │ │ ├── ad.png
│ │ │ ├── ae.png
│ │ │ ├── af.png
│ │ │ ├── ag.png
│ │ │ ├── ai.png
│ │ │ ├── al.png
│ │ │ ├── am.png
│ │ │ ├── ao.png
│ │ │ ├── aq.png
│ │ │ ├── ar.png
│ │ │ ├── as.png
│ │ │ ├── at.png
│ │ │ ├── au.png
│ │ │ ├── aw.png
│ │ │ ├── ax.png
│ │ │ ├── az.png
│ │ │ ├── ba.png
│ │ │ ├── bb.png
│ │ │ ├── bd.png
│ │ │ ├── be.png
│ │ │ ├── bf.png
│ │ │ ├── bg.png
│ │ │ ├── bh.png
│ │ │ ├── bi.png
│ │ │ ├── bj.png
│ │ │ ├── bl.png
│ │ │ ├── bm.png
│ │ │ ├── bn.png
│ │ │ ├── bo.png
│ │ │ ├── bq.png
│ │ │ ├── br.png
│ │ │ ├── bs.png
│ │ │ ├── bt.png
│ │ │ ├── bv.png
│ │ │ ├── bw.png
│ │ │ ├── by.png
│ │ │ ├── bz.png
│ │ │ ├── ca.png
│ │ │ ├── cc.png
│ │ │ ├── cd.png
│ │ │ ├── cf.png
│ │ │ ├── cg.png
│ │ │ ├── ch.png
│ │ │ ├── ci.png
│ │ │ ├── ck.png
│ │ │ ├── cl.png
│ │ │ ├── cm.png
│ │ │ ├── cn.png
│ │ │ ├── co.png
│ │ │ ├── cr.png
│ │ │ ├── cu.png
│ │ │ ├── cv.png
│ │ │ ├── cw.png
│ │ │ ├── cx.png
│ │ │ ├── cy.png
│ │ │ ├── cz.png
│ │ │ ├── de.png
│ │ │ ├── dj.png
│ │ │ ├── dk.png
│ │ │ ├── dm.png
│ │ │ ├── do.png
│ │ │ ├── dz.png
│ │ │ ├── ec.png
│ │ │ ├── ee.png
│ │ │ ├── eg.png
│ │ │ ├── eh.png
│ │ │ ├── er.png
│ │ │ ├── es.png
│ │ │ ├── et.png
│ │ │ ├── eu.png
│ │ │ ├── fi.png
│ │ │ ├── fj.png
│ │ │ ├── fk.png
│ │ │ ├── fm.png
│ │ │ ├── fo.png
│ │ │ ├── fr.png
│ │ │ ├── ga.png
│ │ │ ├── gb-eng.png
│ │ │ ├── gb-nir.png
│ │ │ ├── gb-sct.png
│ │ │ ├── gb-wls.png
│ │ │ ├── gb.png
│ │ │ ├── gd.png
│ │ │ ├── ge.png
│ │ │ ├── gf.png
│ │ │ ├── gg.png
│ │ │ ├── gh.png
│ │ │ ├── gi.png
│ │ │ ├── gl.png
│ │ │ ├── gm.png
│ │ │ ├── gn.png
│ │ │ ├── gp.png
│ │ │ ├── gq.png
│ │ │ ├── gr.png
│ │ │ ├── gs.png
│ │ │ ├── gt.png
│ │ │ ├── gu.png
│ │ │ ├── gw.png
│ │ │ ├── gy.png
│ │ │ ├── hk.png
│ │ │ ├── hm.png
│ │ │ ├── hn.png
│ │ │ ├── hr.png
│ │ │ ├── ht.png
│ │ │ ├── hu.png
│ │ │ ├── id.png
│ │ │ ├── ie.png
│ │ │ ├── il.png
│ │ │ ├── im.png
│ │ │ ├── in.png
│ │ │ ├── io.png
│ │ │ ├── iq.png
│ │ │ ├── ir.png
│ │ │ ├── is.png
│ │ │ ├── it.png
│ │ │ ├── je.png
│ │ │ ├── jm.png
│ │ │ ├── jo.png
│ │ │ ├── jp.png
│ │ │ ├── ke.png
│ │ │ ├── kg.png
│ │ │ ├── kh.png
│ │ │ ├── ki.png
│ │ │ ├── km.png
│ │ │ ├── kn.png
│ │ │ ├── kp.png
│ │ │ ├── kr.png
│ │ │ ├── kw.png
│ │ │ ├── ky.png
│ │ │ ├── kz.png
│ │ │ ├── la.png
│ │ │ ├── lb.png
│ │ │ ├── lc.png
│ │ │ ├── li.png
│ │ │ ├── lk.png
│ │ │ ├── lr.png
│ │ │ ├── ls.png
│ │ │ ├── lt.png
│ │ │ ├── lu.png
│ │ │ ├── lv.png
│ │ │ ├── ly.png
│ │ │ ├── ma.png
│ │ │ ├── mc.png
│ │ │ ├── md.png
│ │ │ ├── me.png
│ │ │ ├── mf.png
│ │ │ ├── mg.png
│ │ │ ├── mh.png
│ │ │ ├── mk.png
│ │ │ ├── ml.png
│ │ │ ├── mm.png
│ │ │ ├── mn.png
│ │ │ ├── mo.png
│ │ │ ├── mp.png
│ │ │ ├── mq.png
│ │ │ ├── mr.png
│ │ │ ├── ms.png
│ │ │ ├── mt.png
│ │ │ ├── mu.png
│ │ │ ├── mv.png
│ │ │ ├── mw.png
│ │ │ ├── mx.png
│ │ │ ├── my.png
│ │ │ ├── mz.png
│ │ │ ├── na.png
│ │ │ ├── nc.png
│ │ │ ├── ne.png
│ │ │ ├── nf.png
│ │ │ ├── ng.png
│ │ │ ├── ni.png
│ │ │ ├── nl.png
│ │ │ ├── no.png
│ │ │ ├── np.png
│ │ │ ├── nr.png
│ │ │ ├── nu.png
│ │ │ ├── nz.png
│ │ │ ├── om.png
│ │ │ ├── pa.png
│ │ │ ├── pe.png
│ │ │ ├── pf.png
│ │ │ ├── pg.png
│ │ │ ├── ph.png
│ │ │ ├── pk.png
│ │ │ ├── pl.png
│ │ │ ├── pm.png
│ │ │ ├── pn.png
│ │ │ ├── pr.png
│ │ │ ├── ps.png
│ │ │ ├── pt.png
│ │ │ ├── pw.png
│ │ │ ├── py.png
│ │ │ ├── qa.png
│ │ │ ├── re.png
│ │ │ ├── ro.png
│ │ │ ├── rs.png
│ │ │ ├── ru.png
│ │ │ ├── rw.png
│ │ │ ├── sa.png
│ │ │ ├── sb.png
│ │ │ ├── sc.png
│ │ │ ├── sd.png
│ │ │ ├── se.png
│ │ │ ├── sg.png
│ │ │ ├── sh.png
│ │ │ ├── si.png
│ │ │ ├── sj.png
│ │ │ ├── sk.png
│ │ │ ├── sl.png
│ │ │ ├── sm.png
│ │ │ ├── sn.png
│ │ │ ├── so.png
│ │ │ ├── sr.png
│ │ │ ├── ss.png
│ │ │ ├── st.png
│ │ │ ├── sv.png
│ │ │ ├── sx.png
│ │ │ ├── sy.png
│ │ │ ├── sz.png
│ │ │ ├── tc.png
│ │ │ ├── td.png
│ │ │ ├── tf.png
│ │ │ ├── tg.png
│ │ │ ├── th.png
│ │ │ ├── tj.png
│ │ │ ├── tk.png
│ │ │ ├── tl.png
│ │ │ ├── tm.png
│ │ │ ├── tn.png
│ │ │ ├── to.png
│ │ │ ├── tr.png
│ │ │ ├── tt.png
│ │ │ ├── tv.png
│ │ │ ├── tw.png
│ │ │ ├── tz.png
│ │ │ ├── ua.png
│ │ │ ├── ug.png
│ │ │ ├── um.png
│ │ │ ├── us.png
│ │ │ ├── uy.png
│ │ │ ├── uz.png
│ │ │ ├── va.png
│ │ │ ├── vc.png
│ │ │ ├── ve.png
│ │ │ ├── vg.png
│ │ │ ├── vi.png
│ │ │ ├── vn.png
│ │ │ ├── vu.png
│ │ │ ├── wf.png
│ │ │ ├── ws.png
│ │ │ ├── xk.png
│ │ │ ├── ye.png
│ │ │ ├── yt.png
│ │ │ ├── za.png
│ │ │ ├── zm.png
│ │ │ └── zw.png
│ └── licences
│ │ └── licences.txt
│ ├── main.js
│ ├── package.json
│ └── scripts
│ ├── allmusic.js
│ ├── buttons.js
│ ├── callbacks.js
│ ├── filmstrip.js
│ ├── helpers.js
│ ├── images.js
│ ├── initialise.js
│ ├── interface.js
│ ├── language.js
│ ├── lastfm.js
│ ├── library.js
│ ├── lyrics.js
│ ├── menu.js
│ ├── names.js
│ ├── panel.js
│ ├── popupbox.js
│ ├── properties.js
│ ├── resize.js
│ ├── scrollbar.js
│ ├── server.js
│ ├── settings.js
│ ├── tagger.js
│ ├── text.js
│ ├── timers.js
│ ├── utils.js
│ └── wikipedia.js
├── info
├── dui.png
├── nonportable.png
├── portable.png
├── screenshot-dark.jpg
└── screenshot-light.jpg
├── script
├── html
│ ├── ConfirmDialog.html
│ └── styles.css
├── images
│ ├── cover_default.jpg
│ ├── cover_w.jpg
│ └── foobar2000.png
├── js_common
│ ├── Genre.js
│ ├── JScommon.js
│ ├── JScomponents.js
│ ├── JSinputbox.js
│ ├── common.js
│ ├── guiext.js
│ ├── splitterESLProp.js
│ ├── splitterh.js
│ ├── splitterv.js
│ ├── splitterve.js
│ └── uihacks.js
└── js_panels
│ ├── base.js
│ ├── bottombar.js
│ ├── infoArt.js
│ ├── jsplaylist.js
│ ├── jsplaylist
│ ├── WSHheaderbar.js
│ ├── WSHplaylist.js
│ ├── WSHscrollbar.js
│ └── WSHsettings.js
│ ├── jssb.js
│ ├── jsspm.js
│ ├── jsview_multiplaylist.js
│ ├── jsview_playlist.js
│ ├── properties.js
│ └── search.js
└── switchgit.bat
/.gitignore:
--------------------------------------------------------------------------------
1 | # gitee github git files
2 | .gitee/
3 | .github/
--------------------------------------------------------------------------------
/Genre/60's.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/60's.jpg
--------------------------------------------------------------------------------
/Genre/70's.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/70's.jpg
--------------------------------------------------------------------------------
/Genre/80's.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/80's.jpg
--------------------------------------------------------------------------------
/Genre/90's.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/90's.jpg
--------------------------------------------------------------------------------
/Genre/ACG.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/ACG.jpg
--------------------------------------------------------------------------------
/Genre/Blues.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Blues.jpg
--------------------------------------------------------------------------------
/Genre/CPop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/CPop.jpg
--------------------------------------------------------------------------------
/Genre/Classical.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Classical.jpg
--------------------------------------------------------------------------------
/Genre/Country.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Country.jpg
--------------------------------------------------------------------------------
/Genre/Disco.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Disco.jpg
--------------------------------------------------------------------------------
/Genre/EDM.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/EDM.jpg
--------------------------------------------------------------------------------
/Genre/Folk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Folk.jpg
--------------------------------------------------------------------------------
/Genre/Funk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Funk.jpg
--------------------------------------------------------------------------------
/Genre/Hip-Hop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Hip-Hop.jpg
--------------------------------------------------------------------------------
/Genre/Instrumental.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Instrumental.jpg
--------------------------------------------------------------------------------
/Genre/JPop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/JPop.jpg
--------------------------------------------------------------------------------
/Genre/Jazz.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Jazz.jpg
--------------------------------------------------------------------------------
/Genre/KPop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/KPop.jpg
--------------------------------------------------------------------------------
/Genre/Metal.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Metal.jpg
--------------------------------------------------------------------------------
/Genre/NewAge.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/NewAge.jpg
--------------------------------------------------------------------------------
/Genre/Other.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Other.jpg
--------------------------------------------------------------------------------
/Genre/Pop.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Pop.jpg
--------------------------------------------------------------------------------
/Genre/Punk.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Punk.jpg
--------------------------------------------------------------------------------
/Genre/Rap.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Rap.jpg
--------------------------------------------------------------------------------
/Genre/Rock.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Rock.jpg
--------------------------------------------------------------------------------
/Genre/Techno.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/Techno.jpg
--------------------------------------------------------------------------------
/Genre/仅支持jpg格式!:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/Genre/仅支持jpg格式!
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # foobox
2 | foobox 是一个 [foobar2000](https://www.foobar2000.org) 默认用户界面 (DUI) 的皮肤配置,基于 jsplitter 组件,符合主流软件的审美,扩展功能丰富并保持软件的流畅运行.
3 | ## 【制作和使用】
4 | foobox 中文版适用于 foobar2000 汉化版 by [Asion](https://www.cnblogs.com/asionwu),使用以下第三方组件:
5 | * 基于 [Spider Monkey Panel](https://github.com/TheQwertiest/foo_spider_monkey_panel) 的 [JSplitter](https://foobar2000.ru/forum/viewtopic.php?t=6378),汉化[智享阁](https://www.esnpc.com/);
6 | * ttsping 的歌词组件 [ESLyric](https://github.com/ESLyric/release);
7 | * [foo_enhanced_spectrum_analyzer](https://hydrogenaud.io/index.php/topic,116014.0.html).
8 |
9 | 并修改使用以下优秀的代码部件:
10 | * 播放列表管理器,播放列表,封面浏览原作者 br3tt,汉化 always_beta;
11 | * 封面面板原作者 Jensen;
12 | * 搜索框原作者 [Asion](https://www.cnblogs.com/asionwu);
13 | * [简介面板](https://github.com/Wil-B/Biography)作者 Wil-B;
14 | * 网络电台列表收集自 [范明明](https://github.com/fanmingming)、[Kimentanm](https://github.com/Kimentanm).
15 |
16 | **到最新 Releases (发行版) 页面下载安装包,安装包不包含 foobar2000 汉化版,仅包含 foobox 主题及所需组件,绿色安装,自由便捷。**
17 |
18 | * 支持 32 位及 64 位 foobar2000,其中 32 位版本加入 UI Hacks 组件,适合喜欢隐藏菜单栏状态栏 UI 的朋友,并拥有完整的界面变色效果。
19 |
20 | * 额外的视频面板可选 (不推荐用 fb2k 播放视频),foobox-video 可以在 [github](https://github.com/dream7180/foobox-cn/releases/tag/video8) 或 [gitee](https://gitee.com/dream7180/foobox-en/releases/tag/video8) 下载。
21 |
22 | * 完成后可以在 “主菜单--视图--布局--快速设置”里切换各种 foobox 布局组合。
23 |
24 | 
25 |
26 | [**查看 foobox 帮助**](https://dream7180.github.io/2023/foobox-release/)
27 |
28 | 
29 |
30 | 
31 |
--------------------------------------------------------------------------------
/bakup/6.x/backup/foobox-6.6.11(alpha) with download.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/foobox-6.6.11(alpha) with download.7z
--------------------------------------------------------------------------------
/bakup/6.x/backup/foobox-6.nsi:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/foobox-6.nsi
--------------------------------------------------------------------------------
/bakup/6.x/backup/netsearch.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/netsearch.7z
--------------------------------------------------------------------------------
/bakup/6.x/backup/nsis.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/backup/nsis.7z
--------------------------------------------------------------------------------
/bakup/6.x/foobox help.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/foobox help.7z
--------------------------------------------------------------------------------
/bakup/6.x/foobox_js_6.7z:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/6.x/foobox_js_6.7z
--------------------------------------------------------------------------------
/bakup/foo_converter_cfg/foo_converter.dll.cfg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/bakup/foo_converter_cfg/foo_converter.dll.cfg
--------------------------------------------------------------------------------
/bakup/nsis/Modern UI 2/Welcome.nsh:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | NSIS Modern User Interface
4 | Welcome page (implemented using nsDialogs)
5 |
6 | */
7 |
8 | ;--------------------------------
9 | ;Page interface settings and variables
10 |
11 | !macro MUI_WELCOMEPAGE_INTERFACE
12 |
13 | !ifndef MUI_WELCOMEPAGE_INTERFACE
14 | !define MUI_WELCOMEPAGE_INTERFACE
15 | Var mui.WelcomePage
16 |
17 | Var mui.WelcomePage.Image
18 | Var mui.WelcomePage.Image.Bitmap
19 |
20 | Var mui.WelcomePage.Title
21 | Var mui.WelcomePage.Title.Font
22 |
23 | Var mui.WelcomePage.Text
24 | !endif
25 |
26 | !ifdef MUI_WELCOMEPAGE_LINK
27 | !ifndef MUI_WELCOMEPAGE_LINK_VARIABLES
28 | !define MUI_WELCOMEPAGE_LINK_VARIABLES
29 | Var mui.WelcomePage.Link
30 | !endif
31 | !endif
32 |
33 | !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp"
34 | !if "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" == ""
35 | !error "Invalid MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP"
36 | !endif
37 |
38 | !macroend
39 |
40 |
41 | ;--------------------------------
42 | ;Interface initialization
43 |
44 | !macro MUI_WELCOMEPAGE_GUIINIT
45 |
46 | !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT
47 | !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEWELCOMEPAGE_GUINIT
48 |
49 | Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit
50 |
51 | InitPluginsDir
52 | File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}"
53 | !pragma verifyloadimage "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}"
54 |
55 | !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT
56 | Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}"
57 | !endif
58 |
59 | FunctionEnd
60 |
61 | !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.GUIInit
62 |
63 | !endif
64 |
65 | !macroend
66 |
67 |
68 | ;--------------------------------
69 | ;Page declaration
70 |
71 | !macro MUI_PAGEDECLARATION_WELCOME
72 |
73 | !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEPAGE ""
74 | !insertmacro MUI_WELCOMEPAGE_INTERFACE
75 |
76 | !insertmacro MUI_WELCOMEPAGE_GUIINIT
77 |
78 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)"
79 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)"
80 | !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_LINK_COLOR "000080"
81 |
82 | !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW
83 |
84 | PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom
85 |
86 | PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID}
87 |
88 | PageExEnd
89 |
90 | !insertmacro MUI_FUNCTION_WELCOMEPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomeLeave_${MUI_UNIQUEID} \
91 | ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.WelcomePage.Link_${MUI_UNIQUEID}
92 |
93 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE
94 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES
95 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT
96 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK
97 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK_LOCATION
98 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_LINK_COLOR
99 |
100 | !macroend
101 |
102 | !macro MUI_PAGE_WELCOME
103 |
104 | !verbose push
105 | !verbose ${MUI_VERBOSE}
106 |
107 | !insertmacro MUI_PAGE_INIT
108 | !insertmacro MUI_PAGEDECLARATION_WELCOME
109 |
110 | !verbose pop
111 |
112 | !macroend
113 |
114 | !macro MUI_UNPAGE_WELCOME
115 |
116 | !verbose push
117 | !verbose ${MUI_VERBOSE}
118 |
119 | !insertmacro MUI_UNPAGE_INIT
120 | !insertmacro MUI_PAGEDECLARATION_WELCOME
121 |
122 | !verbose pop
123 |
124 | !macroend
125 |
126 |
127 | ;--------------------------------
128 | ;Page functions
129 |
130 | !macro MUI_FUNCTION_WELCOMEPAGE PRE LEAVE LINK
131 |
132 | !ifdef MUI_WELCOMEPAGE_LINK
133 |
134 | Function "${LINK}"
135 |
136 | ExecShell open "${MUI_WELCOMEPAGE_LINK_LOCATION}"
137 |
138 | FunctionEnd
139 |
140 | !endif
141 |
142 | Function "${PRE}"
143 |
144 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE
145 |
146 | ;Create dialog
147 | nsDialogs::Create 1044
148 | Pop $mui.WelcomePage
149 | nsDialogs::SetRTL $(^RTL)
150 | SetCtlColors $mui.WelcomePage "" "${MUI_BGCOLOR}"
151 |
152 | ;Image control
153 | ${NSD_CreateBitmap} 0u 0u 109u 193u ""
154 | Pop $mui.WelcomePage.Image
155 | !insertmacro MUI_INTERNAL_FULLWINDOW_LOADWIZARDIMAGE "${MUI_PAGE_UNINSTALLER_PREFIX}" $mui.WelcomePage.Image $PLUGINSDIR\modern-wizard.bmp $mui.WelcomePage.Image.Bitmap
156 |
157 | ;Positiong of controls
158 |
159 | ;Title
160 | !ifndef MUI_WELCOMEPAGE_TITLE_3LINES
161 | !define MUI_WELCOMEPAGE_TITLE_HEIGHT 28
162 | !else
163 | !define MUI_WELCOMEPAGE_TITLE_HEIGHT 38
164 | !endif
165 |
166 | ;Text
167 | ;17 = 10 (top margin) + 7 (distance between texts)
168 | !define /math MUI_WELCOMEPAGE_TEXT_TOP 17 + ${MUI_WELCOMEPAGE_TITLE_HEIGHT}
169 |
170 | ;Title
171 | ${NSD_CreateLabel} 120u 10u 195u ${MUI_WELCOMEPAGE_TITLE_HEIGHT}u "${MUI_WELCOMEPAGE_TITLE}"
172 | Pop $mui.WelcomePage.Title
173 | SetCtlColors $mui.WelcomePage.Title "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}"
174 | CreateFont $mui.WelcomePage.Title.Font "$(^Font)" "12" "700"
175 | SendMessage $mui.WelcomePage.Title ${WM_SETFONT} $mui.WelcomePage.Title.Font 0
176 |
177 | ;Welcome text
178 | ${NSD_CreateLabel} 120u ${MUI_WELCOMEPAGE_TEXT_TOP}u 195u 105u "${MUI_WELCOMEPAGE_TEXT}"
179 | Pop $mui.WelcomePage.Text
180 | SetCtlColors $mui.WelcomePage.Text "${MUI_TEXTCOLOR}" "${MUI_BGCOLOR}"
181 |
182 | ;Link
183 | !ifdef MUI_WELCOMEPAGE_LINK
184 | ${NSD_CreateLink} 120u 160u 195u 10u "${MUI_WELCOMEPAGE_LINK}"
185 | Pop $mui.WelcomePage.Link
186 | SetCtlColors $mui.WelcomePage.Link "${MUI_WELCOMEPAGE_LINK_COLOR}" "${MUI_BGCOLOR}"
187 | ${NSD_OnClick} $mui.WelcomePage.Link "${LINK}"
188 | !endif
189 |
190 | ;Show page
191 | Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow
192 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW
193 | nsDialogs::Show
194 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM DESTROYED
195 | Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow
196 |
197 | ;Delete image from memory
198 | ${NSD_FreeImage} $mui.WelcomePage.Image.Bitmap
199 |
200 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_HEIGHT
201 | !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT_TOP
202 |
203 | FunctionEnd
204 |
205 | Function "${LEAVE}"
206 |
207 | !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE
208 |
209 | FunctionEnd
210 |
211 | !macroend
212 |
--------------------------------------------------------------------------------
/bakup/nsis/foobox-cn64win7.nsi:
--------------------------------------------------------------------------------
1 | Unicode true
2 |
3 | # Include
4 | !include "MUI2.nsh"
5 | !include "nsDialogs.nsh"
6 | !include "GetUserLevel.nsh"
7 |
8 | #Var
9 | Var ProfileDir
10 | Var CfgCheckbox
11 | Var noAdmin
12 | Var noConfig
13 | Var initDestination
14 | Var FontDir
15 |
16 | #APP
17 | !define FBOX_VER "8.3"
18 | !define BUILD_NUM "1"
19 |
20 | # Setup
21 | Name "foobox"
22 | OutFile "foobox_x64.cn.v${FBOX_VER}-win7-${BUILD_NUM}.exe"
23 | # VerInfo
24 | VIProductVersion "${FBOX_VER}.0.${BUILD_NUM}.win7"
25 | VIAddVersionKey "ProductName" "foobox"
26 | VIAddVersionKey "FileDescription" "foobox DUI theme for foobar2000"
27 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180"
28 | VIAddVersionKey "FileVersion" "${FBOX_VER}"
29 | VIAddVersionKey "ProductVersion" "${FBOX_VER}"
30 |
31 | # Compile
32 | SetCompressor /SOLID lzma
33 | SetCompressorDictSize 32
34 | SetDatablockOptimize on
35 | SetOverwrite try
36 | SetFont "Microsoft Yahei" 9
37 |
38 | # Runtime
39 | Caption "安装 foobox 主题 v${FBOX_VER} 到 foobar2000 (x64) [Windows 7 专用版]"
40 | RequestExecutionLevel highest
41 | ShowInstDetails show
42 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):"
43 | BrandingText "NSIS v3"
44 |
45 | # --- MUI Settings Start ---
46 | ReserveFile ".\common\installer\install8.ico"
47 | ReserveFile ".\common\installer\foobox8.bmp"
48 |
49 | # MUI
50 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe"
51 | !define MUI_COMPONENTSPAGE_SMALLDESC
52 |
53 | # Icon
54 | !define MUI_ICON ".\common\installer\install8.ico"
55 | # Bitmap
56 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\foobox8.bmp"
57 |
58 | # - InstallPage -
59 | !define MUI_ABORTWARNING
60 |
61 | !define MUI_WELCOMEPAGE_TEXT "\
62 | foobox 是音频播放器 foobar2000 的定制主题,基于默认用户界面 (DUI) 及 JSplitter (Spider Monkey Panel 版) 组件,符合主流软件的审美,扩展功能丰富并保持软件的流畅运行.$\n$\n\
63 | 安装 foobox 到 foobar2000 前您应该已安装有 foobar2000 播放器 (64 位版). $\n$\n\
64 | 本安装包使用旧版的 JSPlitter(3.6.1.10),为 Windows 7 专用."
65 |
66 | !define MUI_WELCOMEPAGE_LINK "下载 foobar2000 汉化版 by Asion"
67 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://www.cnblogs.com/asionwu"
68 | !insertmacro MUI_PAGE_WELCOME
69 |
70 | # DirectoryPage
71 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir
72 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave
73 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。"
74 | !insertmacro MUI_PAGE_DIRECTORY
75 |
76 | #extra option page
77 | Page Custom OptionsPageCreate OptionsPageLeave
78 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre
79 | !insertmacro MUI_PAGE_COMPONENTS
80 | !insertmacro MUI_PAGE_INSTFILES
81 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\nfoobox 的文件和所需组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。"
82 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目"
83 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn"
84 | !insertmacro MUI_PAGE_FINISH
85 | #language
86 | !insertmacro MUI_LANGUAGE "SimpChinese"
87 |
88 | # --- Install Section ---
89 | Section "foobox 主题和所需组件" fooboxCore
90 | SectionIn RO
91 |
92 | Delete "$INSTDIR\themes\foobox*.fth"
93 |
94 | SetOutPath "$INSTDIR\themes"
95 | File ".\cn\xcommon\themes\*.*"
96 | File ".\cn\x64\themes\*.*"
97 |
98 | SetOutPath "$ProfileDir\foobox"
99 | File /r ".\cn\xcommon\foobox\*.*"
100 |
101 | SetOutPath "$ProfileDir\user-components-x64\foo_enhanced_spectrum_analyzer"
102 | File ".\cn\x64\profile\user-components-x64\foo_enhanced_spectrum_analyzer\foo_enhanced_spectrum_analyzer.dll"
103 |
104 | SetOutPath "$ProfileDir\user-components-x64\foo_playcount"
105 | File ".\cn\x64\profile\user-components-x64\foo_playcount\foo_playcount.dll"
106 |
107 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter"
108 | File ".\cn\win7\jsplitter-x64\*.*"
109 |
110 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_eslyric"
111 | File /r ".\cn\xcommon\foo_uie_eslyric\*.*"
112 |
113 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter"
114 | File /r ".\common\foo_uie_jsplitter\*.*"
115 |
116 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_eslyric"
117 | File ".\common\eslyric\x64\legacy\foo_uie_eslyric.dll"
118 |
119 | SetOutPath "$ProfileDir\foobox\script\html"
120 | File ".\common\scriptWin7\styles.css"
121 |
122 | SetOutPath "$ProfileDir\user-components-x64\foo_uie_jsplitter\samples\packages"
123 | File /r ".\cn\xcommon\biography-package\*.*"
124 |
125 | ${If} $noConfig = 0
126 | SetOutPath "$ProfileDir"
127 | File ".\cn\x64\profile\theme.fth"
128 | ${EndIf}
129 | ; install font
130 | Call CheckFontA
131 | ${If} $FontDir != "NOINST"
132 | Call CheckFontU
133 | ${EndIf}
134 | ;MessageBox MB_OK "Fontdir is $FontDir."
135 | ${If} $FontDir != "NOINST"
136 | SetOutPath "$FontDir"
137 | File ".\common\fontawesome-webfont.ttf"
138 |
139 | System::Call "gdi32::AddFontResource(t '$FontDir\fontawesome-webfont.ttf')"
140 |
141 | Push '$FontDir\fontawesome-webfont.ttf'
142 | Call GetFontName
143 | Pop $R0
144 |
145 | ${If} $R0 != 'error'
146 | ${If} $noAdmin = 0
147 | WriteRegStr HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" '$R0 (TrueType)' 'fontawesome-webfont.ttf'
148 | ${Else}
149 | WriteRegStr HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" '$R0 (TrueType)' '$FontDir\fontawesome-webfont.ttf'
150 | ${EndIf}
151 | ${Else}
152 | System::Call "gdi32::RemoveFontResource(t '$FontDir\fontawesome-webfont.ttf')"
153 | ${EndIf}
154 | ${EndIf}
155 | SectionEnd
156 |
157 | Section "文件格式图标" Icons
158 | SetOutPath "$INSTDIR\icons"
159 | File /r ".\common\icons\*.*"
160 | SectionEnd
161 |
162 | Section /o "写入 Last.fm 到 hosts" LastfmHosts
163 | SetOutPath "$INSTDIR"
164 | File ".\common\lastfmhosts.bat"
165 | nsExec::Exec "$INSTDIR\lastfmhosts.bat"
166 | SectionEnd
167 |
168 | Section -Post
169 | # 获取安装目录读写权限
170 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess"
171 | Delete "$INSTDIR\lastfmhosts.bat"
172 | SectionEnd
173 |
174 | Function .onInit
175 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0'
176 | StrCpy $InstDir $initDestination
177 |
178 | # 创建互斥防止重复运行
179 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e`
180 | Pop $R0
181 | StrCmp $R0 0 +3
182 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!"
183 | Abort
184 | FunctionEnd
185 |
186 | Function .onVerifyInstDir
187 | IfFileExists $INSTDIR\foobar2000.exe PathGood
188 | Abort
189 | PathGood:
190 | FunctionEnd
191 |
192 | Function Check_Dir
193 | SetShellVarContext current
194 | ${If} $initDestination != ""
195 | StrCpy $InstDir $initDestination
196 | ${Else}
197 | SetRegView 64
198 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir"
199 | ${EndIf}
200 | FunctionEnd
201 |
202 | Function Dir_Leave
203 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2"
204 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2
205 | StrCpy $ProfileDir "$InstDir\profile"
206 | FunctionEnd
207 |
208 | Function OptionsPageCreate
209 | #Call CheckWinver
210 | Call CheckUser
211 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory
212 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 此版本需要 64 位的 foobar2000."
213 | nsDialogs::Create 1018
214 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级 foobox 不会更改 foobar2000 的核心设置,可放心覆盖."
215 |
216 | IfFileExists $INSTDIR\icons\*.* +3 0
217 | SectionSetFlags ${Icons} 0
218 | SectionSetText ${Icons} ""
219 |
220 | ${If} $noAdmin = 1
221 | SectionSetFlags ${LastfmHosts} 0
222 | SectionSetText ${LastfmHosts} ""
223 | ${EndIf}
224 | ${NSD_CreateCheckbox} 10u 30u 90% 10u "不安装主题配置文件"
225 | Pop $CfgCheckbox
226 | ${If} $noConfig = 1
227 | ${NSD_Check} $CfgCheckbox
228 | ${EndIf}
229 | ${NSD_CreateLabel} 20u 40u 90% 20u "如果勾选, theme.fth 文件将不会安装. 谨慎, 不确定勿勾选!"
230 | ;EnableWindow $CfgCheckbox 0
231 | nsDialogs::Show
232 | FunctionEnd
233 |
234 | Function OptionsPageLeave
235 | ${NSD_GetState} $CfgCheckbox $0
236 | ${If} $0 = ${BST_CHECKED}
237 | StrCpy $noConfig 1
238 | ${Else}
239 | StrCpy $noConfig 0
240 | ${EndIf}
241 | FunctionEnd
242 |
243 | Function Inst_pre
244 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit"
245 | FunctionEnd
246 |
247 | Function CheckUser
248 | Pop $0
249 | Pop $R0
250 | ReadEnvStr $R0 "USERNAME"
251 | ${GetUserLevel} $0 $R0
252 | ${If} $0 != 2
253 | StrCpy $noAdmin 1
254 | StrCpy $FontDir "$PROFILE\AppData\Local\Microsoft\Windows\Fonts"
255 | ${Else}
256 | StrCpy $noAdmin 0
257 | StrCpy $FontDir "$FONTS"
258 | ${EndIf}
259 | FunctionEnd
260 |
261 | Function CheckFontA
262 | Pop $0
263 | ClearErrors
264 | ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "FontAwesome (TrueType)"
265 | IfErrors INSTOK 0
266 | ${IF} $0 != ""
267 | StrCpy $FontDir "NOINST"
268 | ${ENDIF}
269 | INSTOK:
270 | FunctionEnd
271 |
272 | Function CheckFontU
273 | Pop $0
274 | ClearErrors
275 | ReadRegStr $0 HKCU "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts" "FontAwesome (TrueType)"
276 | IfErrors INSTOK 0
277 | ${IF} $0 != ""
278 | StrCpy $FontDir "NOINST"
279 | ${ENDIF}
280 | INSTOK:
281 | FunctionEnd
282 |
283 | Function GetFontName
284 | Exch $R0
285 | Push $R1
286 | Push $R2
287 |
288 | System::Call *(i${NSIS_MAX_STRLEN})i.R1
289 | System::Alloc ${NSIS_MAX_STRLEN}
290 | Pop $R2
291 | System::Call gdi32::GetFontResourceInfoW(wR0,iR1,iR2,i1)i.R0
292 | ${If} $R0 == 0
293 | StrCpy $R0 error
294 | ${Else}
295 | System::Call *$R2(&w${NSIS_MAX_STRLEN}.R0)
296 | ${EndIf}
297 | System::Free $R1
298 | System::Free $R2
299 |
300 | Pop $R2
301 | Pop $R1
302 | Exch $R0
303 | FunctionEnd
304 |
305 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
306 | !insertmacro MUI_DESCRIPTION_TEXT ${fooboxCore} "foobox DUI 主题的文件和所需组件."
307 | !insertmacro MUI_DESCRIPTION_TEXT ${Icons} "替换文件格式关联图标为 foobox 主题的图标."
308 | !insertmacro MUI_DESCRIPTION_TEXT ${LastfmHosts} "把 Last.fm 地址写入 hosts, 让简介面板能下载图片 (可用性不确定)."
309 | !insertmacro MUI_FUNCTION_DESCRIPTION_END
310 |
--------------------------------------------------------------------------------
/bakup/nsis/include/GetUserLevel.nsh:
--------------------------------------------------------------------------------
1 | !define USER_PRIV_GUEST 0
2 | !define USER_PRIV_USER 1
3 | !define USER_PRIV_ADMIN 2
4 |
5 | !include "Util.nsh"
6 | !define GetUserLevel "!insertmacro Call_GetUserLevel"
7 | !macro Call_GetUserLevel _level _username
8 | !verbose push
9 | !verbose 3
10 | Push ${_username}
11 | ${CallArtificialFunction} Func_GetUserLevel
12 | Pop ${_level}
13 | !verbose pop
14 | !macroend
15 | !macro Func_GetUserLevel
16 | Exch $R0
17 | Push $R1
18 | System::Call "*(i)i.R1"
19 | System::Call "netapi32::NetUserGetInfo(in,wR0,i1,iR1)i.R0"
20 | IntCmp $R0 0 +3
21 | Push error
22 | Goto lbl_end
23 | System::Call "*$R1(i.R0)"
24 | System::Call "*$R0(w,w,i,i.s)"
25 | System::Call "netapi32::NetApiBufferFree(iR0)"
26 | lbl_end:
27 | System::Free $R1
28 | Exch
29 | Pop $R1
30 | Exch
31 | Pop $R0
32 | !macroend
--------------------------------------------------------------------------------
/bakup/nsis/video.foobox.cn32.nsi:
--------------------------------------------------------------------------------
1 | Unicode true
2 |
3 | # Include
4 | !include "MUI2.nsh"
5 | !include "nsDialogs.nsh"
6 | !include "GetUserLevel.nsh"
7 |
8 | #Var
9 | Var PortableMode
10 | Var ProfileDir
11 | Var VersionCheckbox
12 | Var CfgCheckbox
13 | Var noAdmin
14 | Var noConfig
15 | Var initDestination
16 | Var initVersion
17 |
18 | #APP
19 | !define /date ComplieTime "%y%m%d"
20 | !define FBOX_VER "8"
21 | !define VER_DATE "20${ComplieTime}"
22 | !define BUILD_NUM "1"
23 |
24 | # Setup
25 | Name "foobox 视频面板"
26 | OutFile "foobox8-video_x86.cn.${VER_DATE}.exe"
27 | # VerInfo
28 | VIProductVersion "${VER_DATE}.0.0.${BUILD_NUM}"
29 | VIAddVersionKey "ProductName" "foobox video"
30 | VIAddVersionKey "FileDescription" "video panels for foobox theme of foobar2000"
31 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180"
32 | VIAddVersionKey "FileVersion" "${VER_DATE}"
33 | VIAddVersionKey "ProductVersion" "${VER_DATE}.0"
34 |
35 | # Compile
36 | SetCompressor /SOLID lzma
37 | SetCompressorDictSize 32
38 | SetDatablockOptimize on
39 | SetOverwrite try
40 | SetFont "Microsoft Yahei" 9
41 |
42 | # Runtime
43 | Caption "安装视频组件和布局到 foobox v${FBOX_VER} 主题"
44 | RequestExecutionLevel highest
45 | ShowInstDetails show
46 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):"
47 | BrandingText "NSIS v3"
48 |
49 | # --- MUI Settings Start ---
50 | ReserveFile ".\common\installer\installer.ico"
51 | ReserveFile ".\common\installer\boxvideo.bmp"
52 |
53 | # MUI
54 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe"
55 | !define MUI_COMPONENTSPAGE_SMALLDESC
56 |
57 | # Icon
58 | !define MUI_ICON ".\common\installer\installer.ico"
59 | # Bitmap
60 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\boxvideo.bmp"
61 |
62 | # - InstallPage -
63 | !define MUI_ABORTWARNING
64 |
65 | !define MUI_WELCOMEPAGE_TEXT "\
66 | 本程序将安装额外的视频面板及其支持组件到集成有 foobox 主题 (x86) 的 foobar2000 音频播放器.$\n$\n\
67 | 本程序不包含 foobar2000 程序及 foobox 主题,安装前您应该已安装有 foobar2000 播放器 (x86版) 并整合了 foobox 主题."
68 |
69 | !define MUI_WELCOMEPAGE_LINK "访问 github 上的 foobox 项目"
70 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn"
71 | !insertmacro MUI_PAGE_WELCOME
72 |
73 | # DirectoryPage
74 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir
75 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave
76 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。"
77 | !insertmacro MUI_PAGE_DIRECTORY
78 |
79 | #extra option page
80 | Page Custom OptionsPageCreate OptionsPageLeave
81 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre
82 | !insertmacro MUI_PAGE_COMPONENTS
83 | !insertmacro MUI_PAGE_INSTFILES
84 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\n文件和组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n你现在可以在 foobar2000 主菜单“视图 - 布局 - 快速设置”里找到带视频面板的布局。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。"
85 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目"
86 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn"
87 | !insertmacro MUI_PAGE_FINISH
88 | #language
89 | !insertmacro MUI_LANGUAGE "SimpChinese"
90 |
91 | # --- Install Section ---
92 |
93 | Section "foo_input_ffmpeg 解码器封装组件" fooffmpeg
94 | SectionIn RO
95 | SetOutPath "$ProfileDir\user-components\foo_input_ffmpeg"
96 | File ".\cn\vx86\profile\user-components\foo_input_ffmpeg\*.*"
97 | ${If} $noConfig = 0
98 | SetOutPath "$ProfileDir\configuration"
99 | File ".\cn\vxcommon\profile\configuration\foo_input_ffmpeg.dll.cfg"
100 | ${EndIf}
101 | SetOutPath "$INSTDIR\encoders\ffmpeg"
102 | File /r ".\common\vx86\profile\foo_youtube\ffmpeg\*.*"
103 | Delete "$INSTDIR\themes\foobox*.fth"
104 | SectionEnd
105 |
106 | Section "视频面板 foo-youtube" VideoYoutube
107 | ;SectionIn 2
108 |
109 | ;remove old version files
110 | #IfFileExists "$INSTDIR\encoders\LAVFilters" 0 +6
111 | #${If} $noAdmin = 0
112 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVSplitter.ax"
113 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVVideo.ax"
114 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVAudio.ax"
115 | #${EndIf}
116 | #RMDir /r "$INSTDIR\encoders"
117 | #RMDir /r "$ProfileDir\foo_youtube"
118 | ;install new file
119 | SetOutPath "$ProfileDir\user-components\foo_youtube"
120 | File ".\common\vx86\profile\user-components\foo_youtube\*.*"
121 | File ".\common\vxcommon\foo_youtube\*.*"
122 | ${If} $noConfig = 0
123 | SetOutPath "$ProfileDir"
124 | File ".\cn\vx86\profile\theme.fth"
125 | SetOutPath "$ProfileDir\configuration"
126 | ${If} $noAdmin = 0
127 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_admin.dll.cfg"
128 | ${Else}
129 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_noadmin.dll.cfg"
130 | ${EndIf}
131 | ${EndIf}
132 | SetOutPath "$INSTDIR\themes"
133 | File ".\cn\vx86\themes\foobox8 + 简介 + 视频(youtube).fth"
134 | File ".\cn\vx86\themes\foobox8 + 视频(youtube).fth"
135 | SetOutPath "$ProfileDir\foo_youtube"
136 | File /r ".\common\vx86\profile\foo_youtube\*.*"
137 | File /r ".\cn\vx86\profile\foo_youtube\*.*"
138 | File ".\common\vxcommon\youtube-dl.exe"
139 | ${If} $noAdmin = 0
140 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVSplitter.ax"'
141 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVVideo.ax"'
142 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVAudio.ax"'
143 | ${EndIf}
144 | SetOutPath "$INSTDIR"
145 | ${If} $PortableMode = 0
146 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_0.bat"
147 | ${ElseIf} $PortableMode = 1
148 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_1.bat"
149 | ${Else}
150 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_2.bat"
151 | ${EndIf}
152 | SectionEnd
153 |
154 | Section /o "视频面板 foo-mpv" VideoMPV
155 | SetOutPath "$ProfileDir\user-components\foo_mpv"
156 | File /r ".\cn\vx86\profile\user-components\foo_mpv\*.*"
157 | ${If} $noConfig = 0
158 | SetOutPath "$ProfileDir\configuration"
159 | File ".\cn\vxcommon\profile\configuration\foo_mpv.dll.cfg"
160 | ${EndIf}
161 | SetOutPath "$INSTDIR\themes"
162 | File ".\cn\vx86\themes\foobox8 + 简介 + 视频(mpv).fth"
163 | File ".\cn\vx86\themes\foobox8 + 视频(mpv).fth"
164 | SetOutPath "$ProfileDir\mpv"
165 | File /r ".\cn\vxcommon\profile\mpv\*.*"
166 | SectionEnd
167 |
168 | /*
169 | Section -Post
170 | # 获取安装目录读写权限
171 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess"
172 | Delete "$INSTDIR\lastfmhosts.bat"
173 | SectionEnd
174 | */
175 | Function .onInit
176 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0'
177 | StrCpy $InstDir $initDestination
178 |
179 | # 创建互斥防止重复运行
180 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e`
181 | Pop $R0
182 | StrCmp $R0 0 +3
183 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!"
184 | Abort
185 | FunctionEnd
186 |
187 | Function .onVerifyInstDir
188 | IfFileExists $INSTDIR\foobar2000.exe PathGood
189 | Abort
190 | PathGood:
191 | FunctionEnd
192 |
193 | Function Check_Dir
194 | SetShellVarContext current
195 | ${If} $initDestination != ""
196 | StrCpy $InstDir $initDestination
197 | ${Else}
198 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir"
199 | ${EndIf}
200 | FunctionEnd
201 |
202 | Function Dir_Leave
203 | StrCpy $PortableMode 0
204 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2
205 | StrCpy $PortableMode 1
206 | ${If} $PortableMode = 0
207 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2"
208 | ${Else}
209 | StrCpy $ProfileDir "$InstDir\profile"
210 | ${EndIf}
211 | FunctionEnd
212 |
213 | Function OptionsPageCreate
214 | Call CheckUser
215 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory
216 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 务必先安装 32 位版本的 foobar2000 及 foobox 主题."
217 | nsDialogs::Create 1018
218 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级视频组件和布局不会更改 foobar2000 的核心设置,可放心覆盖."
219 |
220 | ${If} $noAdmin = 1
221 | ;SectionSetFlags ${LastfmHosts} 0
222 | ;SectionSetText ${LastfmHosts} ""
223 | ${NSD_CreateLabel} 10u 15u 90% 20u "* 您没有管理员权限,一些次要设定会被忽略,这并不影响向 foobar2000 添加视频播放支持."
224 | ${EndIf}
225 | ${NSD_CreateCheckbox} 10u 40u 90% 10u "安装到 foobar2000 1.x 版"
226 | Pop $VersionCheckbox
227 | ${If} $initVersion = "1"
228 | ${NSD_Check} $VersionCheckbox
229 | ${EndIf}
230 | ${NSD_CreateLabel} 20u 50u 90% 20u "如果您是给旧版的 foobar2000 v1.x 安装 foobox, 请务必勾选此项."
231 | ${NSD_CreateCheckbox} 10u 80u 90% 10u "不安装任何配置文件"
232 | Pop $CfgCheckbox
233 | ${If} $noConfig = 1
234 | ${NSD_Check} $CfgCheckbox
235 | ${EndIf}
236 | ${NSD_CreateLabel} 20u 92u 90% 30u "如果勾选, 视频组件 input_ffmpeg, foo_youtube, foo_mpv 的 cfg 文件将不会安装. 谨慎, 不确定请勿勾选!"
237 | nsDialogs::Show
238 | FunctionEnd
239 |
240 | Function OptionsPageLeave
241 | ${NSD_GetState} $VersionCheckbox $0
242 | ${If} $0 = ${BST_CHECKED}
243 | StrCpy $initVersion "1"
244 | StrCpy $PortableMode 1
245 | IfFileExists $INSTDIR\user_profiles_enabled 0 +2
246 | StrCpy $PortableMode 2
247 | ${If} $PortableMode = 2
248 | StrCpy $ProfileDir "$APPDATA\foobar2000"
249 | ${Else}
250 | StrCpy $ProfileDir "$InstDir\profile"
251 | ${EndIf}
252 | ${Else}
253 | StrCpy $initVersion "2"
254 | ${EndIf}
255 | ${NSD_GetState} $CfgCheckbox $0
256 | ${If} $0 = ${BST_CHECKED}
257 | StrCpy $noConfig 1
258 | ${Else}
259 | StrCpy $noConfig 0
260 | ${EndIf}
261 | FunctionEnd
262 |
263 | Function Inst_pre
264 | IfFileExists $ProfileDir\foobox PathGood
265 | MessageBox MB_OK "foobar2000 里未找到 foobox 主题,请取消本安装并先下载和安装 foobox 主题!"
266 | Abort
267 | PathGood:
268 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit"
269 | FunctionEnd
270 |
271 | Function CheckUser
272 | Pop $0
273 | Pop $R0
274 | ReadEnvStr $R0 "USERNAME"
275 | ${GetUserLevel} $0 $R0
276 | ${If} $0 != 2
277 | StrCpy $noAdmin 1
278 | ${Else}
279 | StrCpy $noAdmin 0
280 | ${EndIf}
281 | FunctionEnd
282 |
283 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
284 | !insertmacro MUI_DESCRIPTION_TEXT ${fooffmpeg} "封装和调用自定义的 ffmpeg 解码器, 以使 foobar2000 能识别和播放视频格式."
285 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoYoutube} "foo-youtube 视频组件及面板布局及其附加程序."
286 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoMPV} "foo-mpv 视频组件及面板布局."
287 | !insertmacro MUI_FUNCTION_DESCRIPTION_END
288 |
--------------------------------------------------------------------------------
/bakup/nsis/video.foobox.cn64.nsi:
--------------------------------------------------------------------------------
1 | Unicode true
2 |
3 | # Include
4 | !include "MUI2.nsh"
5 | !include "nsDialogs.nsh"
6 | !include "GetUserLevel.nsh"
7 |
8 | #Var
9 | Var PortableMode
10 | Var ProfileDir
11 | Var CfgCheckbox
12 | Var noAdmin
13 | Var noConfig
14 | Var initDestination
15 |
16 | #APP
17 | !define /date ComplieTime "%y%m%d"
18 | !define FBOX_VER "8"
19 | !define VER_DATE "20${ComplieTime}"
20 | !define BUILD_NUM "1"
21 |
22 | # Setup
23 | Name "foobox 视频面板"
24 | OutFile "foobox8-video_x64.cn.${VER_DATE}.exe"
25 | # VerInfo
26 | VIProductVersion "${VER_DATE}.0.0.${BUILD_NUM}"
27 | VIAddVersionKey "ProductName" "foobox video"
28 | VIAddVersionKey "FileDescription" "video panels for foobox theme of foobar2000"
29 | VIAddVersionKey "LegalCopyright" "https://github.com/dream7180"
30 | VIAddVersionKey "FileVersion" "${VER_DATE}"
31 | VIAddVersionKey "ProductVersion" "${VER_DATE}.0"
32 |
33 | # Compile
34 | SetCompressor /SOLID lzma
35 | SetCompressorDictSize 32
36 | SetDatablockOptimize on
37 | SetOverwrite try
38 | SetFont "Microsoft Yahei" 9
39 |
40 | # Runtime
41 | Caption "安装视频组件和布局到 foobox v${FBOX_VER} 主题"
42 | RequestExecutionLevel highest
43 | ShowInstDetails show
44 | DirText "安装程序会自动检测 foobar2000 的安装路径,如果检测不到或要安装到别的 foobar2000 所在目录,请点击 [浏览(B)...] 并选择合适的文件夹。" "" "" "选择 foobar2000 的根目录来安装 $(^NameDA):"
45 | BrandingText "NSIS v3"
46 |
47 | # --- MUI Settings Start ---
48 | ReserveFile ".\common\installer\installer.ico"
49 | ReserveFile ".\common\installer\boxvideo.bmp"
50 |
51 | # MUI
52 | !define MUI_UI_COMPONENTSPAGE_SMALLDESC "${NSISDIR}\Contrib\UIs\modern_smalldesc.exe"
53 | !define MUI_COMPONENTSPAGE_SMALLDESC
54 |
55 | # Icon
56 | !define MUI_ICON ".\common\installer\installer.ico"
57 | # Bitmap
58 | !define MUI_WELCOMEFINISHPAGE_BITMAP ".\common\installer\boxvideo.bmp"
59 |
60 | # - InstallPage -
61 | !define MUI_ABORTWARNING
62 |
63 | !define MUI_WELCOMEPAGE_TEXT "\
64 | 本程序将安装额外的视频面板及其支持组件到集成有 foobox 7 主题 (x64) 的 foobar2000 音频播放器.$\n$\n\
65 | 本程序不包含 foobar2000 程序及 foobox 7 主题,安装前您应该已安装有 foobar2000 播放器 (x64版) 并整合了 foobox 7 DUI 主题."
66 |
67 | !define MUI_WELCOMEPAGE_LINK "访问 github 上的 foobox 项目"
68 | !define MUI_WELCOMEPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn"
69 | !insertmacro MUI_PAGE_WELCOME
70 |
71 | # DirectoryPage
72 | !define MUI_PAGE_CUSTOMFUNCTION_PRE Check_Dir
73 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Dir_Leave
74 | !define MUI_TEXT_DIRECTORY_SUBTITLE "选择 foobar2000.exe 程序所在的目录来安装 $(^NameDA)。"
75 | !insertmacro MUI_PAGE_DIRECTORY
76 |
77 | #extra option page
78 | Page Custom OptionsPageCreate OptionsPageLeave
79 | !define MUI_PAGE_CUSTOMFUNCTION_LEAVE Inst_pre
80 | !insertmacro MUI_PAGE_COMPONENTS
81 | !insertmacro MUI_PAGE_INSTFILES
82 | !define MUI_TEXT_FINISH_INFO_TEXT "$(^NameDA) 已经成功安装到 foobar2000。$\r$\n文件和组件位于 foobar2000 的程序和用户数据目录,卸载 foobar2000 时可以一并移除。$\r$\n$\r$\n你现在可以在 foobar2000 主菜单“视图 - 布局 - 快速设置”里找到带视频面板的布局。$\r$\n$\r$\n点击 [完成(F)] 关闭安装程序。"
83 | !define MUI_FINISHPAGE_LINK "访问 github 上的 foobox 项目"
84 | !define MUI_FINISHPAGE_LINK_LOCATION "https://github.com/dream7180/foobox-cn"
85 | !insertmacro MUI_PAGE_FINISH
86 | #language
87 | !insertmacro MUI_LANGUAGE "SimpChinese"
88 |
89 | # --- Install Section ---
90 |
91 | Section "foo_input_ffmpeg 解码器封装组件" fooffmpeg
92 | SectionIn RO
93 | SetOutPath "$ProfileDir\user-components-x64\foo_input_ffmpeg"
94 | File ".\cn\vx64\profile\user-components-x64\foo_input_ffmpeg\*.*"
95 | ${If} $noConfig = 0
96 | SetOutPath "$ProfileDir\configuration"
97 | File ".\cn\vxcommon\profile\configuration\foo_input_ffmpeg.dll.cfg"
98 | ${EndIf}
99 | SetOutPath "$INSTDIR\encoders\ffmpeg"
100 | File /r ".\common\vx64\profile\foo_youtube\ffmpeg\*.*"
101 | Delete "$INSTDIR\themes\foobox*.fth"
102 | SectionEnd
103 |
104 | Section "视频面板 foo-youtube" VideoYoutube
105 | ;SectionIn 2
106 |
107 | ;remove old version files
108 | #IfFileExists "$INSTDIR\encoders\LAVFilters" 0 +6
109 | #${If} $noAdmin = 0
110 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVSplitter.ax"
111 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVVideo.ax"
112 | # UnRegDLL "$INSTDIR\encoders\LAVFilters\LAVAudio.ax"
113 | #${EndIf}
114 | #RMDir /r "$INSTDIR\encoders"
115 | #RMDir /r "$ProfileDir\foo_youtube"
116 | ;install new file
117 | SetOutPath "$ProfileDir\user-components-x64\foo_youtube"
118 | File ".\common\vx64\profile\user-components-x64\foo_youtube\*.*"
119 | File ".\common\vxcommon\foo_youtube\*.*"
120 | ${If} $noConfig = 0
121 | SetOutPath "$ProfileDir"
122 | File ".\cn\vx64\profile\theme.fth"
123 | SetOutPath "$ProfileDir\configuration"
124 | ${If} $noAdmin = 0
125 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_admin.dll.cfg"
126 | ${Else}
127 | File /oname=foo_youtube.dll.cfg ".\cn\vxcommon\profile\configuration\foo_youtube_noadmin.dll.cfg"
128 | ${EndIf}
129 | ${EndIf}
130 | SetOutPath "$INSTDIR\themes"
131 | File ".\cn\vx64\themes\foobox8 + 简介 + 视频(youtube).fth"
132 | File ".\cn\vx64\themes\foobox8 + 视频(youtube).fth"
133 | SetOutPath "$ProfileDir\foo_youtube"
134 | File /r ".\common\vx64\profile\foo_youtube\*.*"
135 | File /r ".\cn\vx64\profile\foo_youtube\*.*"
136 | File ".\common\vxcommon\youtube-dl.exe"
137 | ${If} $noAdmin = 0
138 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVSplitter.ax"'
139 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVVideo.ax"'
140 | ExecWait '"$SYSDIR\regsvr32.exe" /s "$ProfileDir\foo_youtube\LAVFilters\LAVAudio.ax"'
141 | ${EndIf}
142 | SetOutPath "$INSTDIR"
143 | ${If} $PortableMode = 0
144 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_0.bat"
145 | ${Else}
146 | File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_1.bat"
147 | ;${Else}
148 | ; File "/oname=LavFilters助手.bat" ".\cn\vxcommon\lavassist\LavFilters助手_2.bat"
149 | ${EndIf}
150 | SectionEnd
151 |
152 | Section /o "视频面板 foo-mpv" VideoMPV
153 | SetOutPath "$ProfileDir\user-components-x64\foo_mpv"
154 | File /r ".\cn\vx64\profile\user-components-x64\foo_mpv\*.*"
155 | ${If} $noConfig = 0
156 | SetOutPath "$ProfileDir\configuration"
157 | File ".\cn\vxcommon\profile\configuration\foo_mpv.dll.cfg"
158 | ${EndIf}
159 | SetOutPath "$INSTDIR\themes"
160 | File ".\cn\vx64\themes\foobox8 + 简介 + 视频(mpv).fth"
161 | File ".\cn\vx64\themes\foobox8 + 视频(mpv).fth"
162 | SetOutPath "$ProfileDir\mpv"
163 | File /r ".\cn\vxcommon\profile\mpv\*.*"
164 | SectionEnd
165 |
166 | /*
167 | Section -Post
168 | # 获取安装目录读写权限
169 | AccessControl::GrantOnFile "$INSTDIR" "(BU)" "FullAccess"
170 | Delete "$INSTDIR\lastfmhosts.bat"
171 | SectionEnd
172 | */
173 | Function .onInit
174 | System::Call 'SHCore::SetProcessDpiAwareness(i 1)i.R0'
175 | StrCpy $InstDir $initDestination
176 |
177 | # 创建互斥防止重复运行
178 | System::Call `kernel32::CreateMutex(i0,i0,t"foobox_installer")i.r1?e`
179 | Pop $R0
180 | StrCmp $R0 0 +3
181 | MessageBox MB_OK|MB_ICONEXCLAMATION "安装程序已经运行!"
182 | Abort
183 | FunctionEnd
184 |
185 | Function .onVerifyInstDir
186 | IfFileExists $INSTDIR\foobar2000.exe PathGood
187 | Abort
188 | PathGood:
189 | FunctionEnd
190 |
191 | Function Check_Dir
192 | SetShellVarContext current
193 | ${If} $initDestination != ""
194 | StrCpy $InstDir $initDestination
195 | ${Else}
196 | SetRegView 64
197 | ReadRegStr $INSTDIR HKLM "Software\foobar2000" "InstallDir"
198 | ${EndIf}
199 | FunctionEnd
200 |
201 | Function Dir_Leave
202 | StrCpy $PortableMode 0
203 | IfFileExists $INSTDIR\portable_mode_enabled 0 +2
204 | StrCpy $PortableMode 1
205 | ${If} $PortableMode = 0
206 | StrCpy $ProfileDir "$APPDATA\foobar2000-v2"
207 | ${Else}
208 | StrCpy $ProfileDir "$InstDir\profile"
209 | ${EndIf}
210 | FunctionEnd
211 |
212 | Function OptionsPageCreate
213 | Call CheckUser
214 | StrCpy $initDestination $InstDir ; If the user clicks BACK on the directory page we will remember their mode specific directory
215 | !insertmacro MUI_HEADER_TEXT "选项及注意事项" "重要提示: 务必先安装 64 位版本的 foobar2000 及 foobox 主题."
216 | nsDialogs::Create 1018
217 | ${NSD_CreateLabel} 10u 0u 90% 10u "安装或升级视频组件和布局不会更改 foobar2000 的核心设置,可放心覆盖."
218 |
219 | ${If} $noAdmin = 1
220 | ;SectionSetFlags ${LastfmHosts} 0
221 | ;SectionSetText ${LastfmHosts} ""
222 | ${NSD_CreateLabel} 10u 15u 90% 20u "* 您没有管理员权限,一些次要设定会被忽略,这并不影响向 foobar2000 添加视频播放支持."
223 | ${EndIf}
224 | ${NSD_CreateCheckbox} 10u 60u 90% 10u "不安装任何配置文件"
225 | Pop $CfgCheckbox
226 | ${If} $noConfig = 1
227 | ${NSD_Check} $CfgCheckbox
228 | ${EndIf}
229 | ${NSD_CreateLabel} 20u 72u 90% 30u "如果勾选, 视频组件 input_ffmpeg, foo_youtube, foo_mpv 的 cfg 文件将不会安装. 谨慎, 不确定请勿勾选!"
230 | nsDialogs::Show
231 | FunctionEnd
232 |
233 | Function OptionsPageLeave
234 | ${NSD_GetState} $CfgCheckbox $0
235 | ${If} $0 = ${BST_CHECKED}
236 | StrCpy $noConfig 1
237 | ${Else}
238 | StrCpy $noConfig 0
239 | ${EndIf}
240 | FunctionEnd
241 |
242 | Function Inst_pre
243 | IfFileExists $ProfileDir\foobox PathGood
244 | MessageBox MB_OK "foobar2000 里未找到 foobox 主题,请取消本安装并先下载和安装 foobox 主题!"
245 | Abort
246 | PathGood:
247 | ExecWait "$\"$INSTDIR\foobar2000.exe$\" /quiet /quit"
248 | FunctionEnd
249 |
250 | Function CheckUser
251 | Pop $0
252 | Pop $R0
253 | ReadEnvStr $R0 "USERNAME"
254 | ${GetUserLevel} $0 $R0
255 | ${If} $0 != 2
256 | StrCpy $noAdmin 1
257 | ${Else}
258 | StrCpy $noAdmin 0
259 | ${EndIf}
260 | FunctionEnd
261 |
262 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
263 | !insertmacro MUI_DESCRIPTION_TEXT ${fooffmpeg} "封装和调用自定义的 ffmpeg 解码器, 以使 foobar2000 能识别和播放视频格式."
264 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoYoutube} "foo-youtube 视频组件及面板布局及其附加程序."
265 | !insertmacro MUI_DESCRIPTION_TEXT ${VideoMPV} "foo-mpv 视频组件及面板布局."
266 | !insertmacro MUI_FUNCTION_DESCRIPTION_END
267 |
--------------------------------------------------------------------------------
/bakup/scriptWin7/styles.css:
--------------------------------------------------------------------------------
1 | body { color: WINDOWTEXT; background-color: THREEDFACE; }
2 | input { font:caption; border: 1px solid #7A7A7A; width: 100%; }
3 | input:focus { outline: none !important; border:1px solid #0078D7; }
4 | input:hover:focus { outline: none !important; border:1px solid #0078D7; }
5 | input:hover { outline: none !important; border:1px solid #000000; }
6 | label { font:caption; }
7 | button { font:caption; background: #E1E1E1; color:ButtonText; border: 1px solid #ADADAD; margin: 5px; padding: 5px; width: 90px; }
8 | button:focus { border: 1px solid #0078D7; padding: 5px; }
9 | button:hover { background: #e5f1fb; border: 1px solid #0078D7; padding: 5px; }
10 | button:focus:hover { background: #e5f1fb; border:1px solid #0078D7; padding: 5px; }
11 | button[disabled] { background: #CCCCCC; color:#EBEBE4; }
12 | /* --Suppress button:hover manually, since not() is not working =( */
13 | button[disabled]:hover { border: 1px solid #ADADAD; padding: 5px; }
--------------------------------------------------------------------------------
/bakup/shortcut.js:
--------------------------------------------------------------------------------
1 | function ShortcutMask(mask, vkey) {
2 | switch (mask) {
3 | case KMask.ctrl:
4 | switch (vkey){
5 | case 65:// CTRL+A
6 | fb.RunMainMenuCommand("编辑/全选");
7 | break;
8 | case 70:if// CTRL+F
9 | fb.RunMainMenuCommand("编辑/搜索");
10 | break;
11 | case 78:// CTRL+N
12 | fb.RunMainMenuCommand("文件/新建播放列表");
13 | break;
14 | case 79:// CTRL+O
15 | fb.RunMainMenuCommand("文件/打开...");
16 | break;
17 | case 80:// CTRL+P
18 | fb.RunMainMenuCommand("文件/参数选项");
19 | break;
20 | case 83:// CTRL+S
21 | fb.RunMainMenuCommand("文件/保存播放列表...");
22 | break;
23 | case 85:// CTRL+U
24 | fb.RunMainMenuCommand("文件/添加位置...");
25 | break;
26 | case 87:// CTRL+W
27 | fb.RunMainMenuCommand("文件/移除播放列表");
28 | break;
29 | }
30 | break;
31 | case KMask.alt:
32 | switch (vkey) {
33 | case 65:// ALT+A
34 | fb.RunMainMenuCommand("视图/总在最上面");
35 | break;
36 | case 108:// ALT+A
37 | fb.RunMainMenuCommand("属性");
38 | break;
39 | case 115://Alt+F4
40 | fb.RunMainMenuCommand("文件/退出");
41 | break;
42 | };
43 | break;
44 | }
45 | }
46 |
47 | function ShortcutMaskEn(mask, vkey) {
48 | switch (mask) {
49 | case KMask.ctrl:
50 | switch (vkey){
51 | case 65:// CTRL+A
52 | fb.RunMainMenuCommand("Edit/Select all");
53 | break;
54 | case 70:if// CTRL+F
55 | fb.RunMainMenuCommand("Edit/Search");
56 | break;
57 | case 78:// CTRL+N
58 | fb.RunMainMenuCommand("File/New playlist");
59 | break;
60 | case 79:// CTRL+O
61 | fb.RunMainMenuCommand("File/Open...");
62 | break;
63 | case 80:// CTRL+P
64 | fb.RunMainMenuCommand("File/Preferences");
65 | break;
66 | case 83:// CTRL+S
67 | fb.RunMainMenuCommand("File/Save playlist...");
68 | break;
69 | case 85:// CTRL+U
70 | fb.RunMainMenuCommand("File/Add location...");
71 | break;
72 | case 87:// CTRL+W
73 | fb.RunMainMenuCommand("File/Remove playlist");
74 | break;
75 | }
76 | break;
77 | case KMask.alt:
78 | switch (vkey) {
79 | case 65:// ALT+A
80 | fb.RunMainMenuCommand("View/Always on Top");
81 | break;
82 | case 108:// ALT+A
83 | fb.RunMainMenuCommand("Properties");
84 | break;
85 | case 115://Alt+F4
86 | fb.RunMainMenuCommand("File/Exit");
87 | break;
88 | };
89 | break;
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/LICENSE.txt:
--------------------------------------------------------------------------------
1 | License
2 |
3 | Copyright (c) 2021-2024 WilB
4 |
5 | The above copyright notice shall be included in all
6 | copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
9 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
10 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
11 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
12 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
13 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
14 | SOFTWARE.
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/confirm.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
78 |
79 |
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/input.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
87 |
88 |
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/inputApply.notUsed:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
91 |
92 |
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/styles10.css:
--------------------------------------------------------------------------------
1 | body {color:WindowText; background-color:Menu; font:caption;}
2 | input {font:caption; border:1px solid #7A7A7A; width:100%;}
3 | input:focus {outline:none !important; border:1px solid #0078D7;}
4 | input:hover:focus {outline:none !important; border:1px solid #0078D7;}
5 | input:hover {outline:none !important; border:1px solid #000000;}
6 | label {font:caption;}
7 | button {font:caption; background:#E1E1E1; color:ButtonText; border:1px solid #ADADAD; margin:5px; padding:3px; width:auto; min-width:4.4em; display:inline-block;}
8 | button:focus {outline:none !important; border:2px solid #0078D7; padding:2px;}
9 | button:hover {background:#e5f1fb; outline:none !important; border:1px solid #0078D7; padding:3px;}div {overflow:hidden;}
10 | button:focus:hover {background:#e5f1fb; outline:none !important; border:2px solid #0078D7; padding:2px;} span {display:block; overflow:hidden; padding-right:10px;}
11 | button[disabled] {background:#CCCCCC; color:#EBEBE4;}
12 | /* --Suppress button:hover manually, since not() is not working =( */
13 | button[disabled]:hover {border:1px solid #ADADAD; padding:3px;}
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/html/styles7.css:
--------------------------------------------------------------------------------
1 | body {color:WindowText; background-color:Menu; font:caption;}
2 | input {font:caption; border:1px solid #7A7A7A; width:100%;}
3 | input:focus {outline:none !important; border:1px solid #0078D7;}
4 | input:hover:focus {outline:none !important; border:1px solid #0078D7;}
5 | input:hover {outline:none !important; border:1px solid #000000;}
6 | label {font:caption;}
7 | button {font:caption; background:#E1E1E1; color:ButtonText; border:1px solid #ADADAD; margin:5px; padding:3px; width:auto; min-width:4.4em; display:inline-block;}
8 | button:focus {border:1px solid #0078D7; padding:3px;}
9 | button:hover {background:#e5f1fb; border:1px solid #0078D7; padding:3px;}
10 | button:focus:hover {background:#e5f1fb; border:1px solid #0078D7; padding:3px;}
11 | button[disabled] {background:#CCCCCC; color:#EBEBE4;}
12 | /* --Suppress button:hover manually, since not() is not working =( */
13 | button[disabled]:hover {border:1px solid #ADADAD; padding:3px;}
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/Logo.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ad.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ae.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ae.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/af.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/af.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ag.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ai.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/al.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/al.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/am.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/am.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ao.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aq.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ar.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/as.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/as.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/at.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/at.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/au.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/au.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/aw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ax.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ax.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/az.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/az.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ba.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ba.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bb.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bd.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/be.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/be.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bi.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bj.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bo.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bq.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/br.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/br.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bs.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/by.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/bz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ca.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ca.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cd.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ch.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ci.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ci.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ck.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ck.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/co.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/co.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cx.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cy.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/cz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/de.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/de.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dj.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/do.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/do.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/dz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ec.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ee.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/er.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/er.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/es.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/es.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/et.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/et.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/eu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fi.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fj.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fo.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/fr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ga.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-eng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-eng.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-nir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-nir.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-sct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-sct.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-wls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb-wls.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gb.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gd.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ge.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gi.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gp.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gq.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gs.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/gy.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ht.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ht.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/hu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/id.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ie.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ie.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/il.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/il.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/im.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/im.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/in.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/io.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/io.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/iq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/iq.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ir.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ir.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/is.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/is.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/it.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/it.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/je.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/je.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jo.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/jp.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ke.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ke.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ki.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/km.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/km.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kp.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ky.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ky.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/kz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/la.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/la.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lb.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/li.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/li.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ls.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/lv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ly.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ly.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ma.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ma.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/md.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/md.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/me.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ml.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ml.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mo.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mp.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mq.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ms.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mx.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/my.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/my.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/mz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/na.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/na.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ne.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ng.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ng.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ni.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ni.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/no.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/no.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/np.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/np.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/nz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/om.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/om.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pa.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pe.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ph.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ps.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/pw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/py.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/py.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/qa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/qa.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/re.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/re.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ro.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ro.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rs.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ru.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ru.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/rw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sa.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sb.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sd.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sd.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/se.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/se.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sh.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/si.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/si.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sj.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/so.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ss.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ss.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/st.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/st.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sx.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sy.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/sz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/td.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/th.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/th.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tj.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tj.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tl.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/to.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/to.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tr.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tv.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tv.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/tz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ua.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ug.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/um.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/um.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/us.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/us.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uy.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/uz.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/va.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/va.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vc.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ve.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ve.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vg.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vi.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vn.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/vu.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/wf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/wf.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ws.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ws.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/xk.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/xk.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ye.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/ye.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/yt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/yt.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/za.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/za.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zm.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/images/flags/zw.png
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/assets/licences/licences.txt:
--------------------------------------------------------------------------------
1 | ========== Weighted Damerau–Levenshtein distance ==========
2 |
3 | Copyright 2019 Marek Suppa
4 |
5 | Licensed under the Apache License, Version 2.0 (the "License");
6 | you may not use this file except in compliance with the License.
7 | You may obtain a copy of the License at
8 |
9 | http://www.apache.org/licenses/LICENSE-2.0
10 |
11 | Unless required by applicable law or agreed to in writing, software
12 | distributed under the License is distributed on an "AS IS" BASIS,
13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | See the License for the specific language governing permissions and
15 | limitations under the License.
16 |
17 |
18 |
19 | ========== fastest-levenshtein ==========
20 |
21 | MIT License
22 |
23 | Copyright (c) 2020 Kasper Unn Weihe
24 |
25 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
26 |
27 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
28 |
29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30 |
31 |
32 |
33 | ========== FuzzySet ==========
34 |
35 | # [The Prosperity Public License 3.0.0](https://prosperitylicense.com/)
36 |
37 | Contributor: Glen Chiacchieri
38 |
39 | Source Code: http://github.com/Glench/fuzzyset.js
40 |
41 | ## Purpose
42 |
43 | This license allows you to use and share this software for noncommercial purposes for free and to try this software for commercial purposes for thirty days.
44 |
45 | ## Agreement
46 |
47 | In order to receive this license, you have to agree to its rules. Those rules are both obligations under that agreement and conditions to your license. Don't do anything with this software that triggers a rule you can't or won't follow.
48 |
49 | ## Notices
50 |
51 | Make sure everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license and the contributor and source code lines above.
52 |
53 | ## Commercial Trial
54 |
55 | Limit your use of this software for commercial purposes to a thirty-day trial period. If you use this software for work, your company gets one trial period for all personnel, not one trial per person.
56 |
57 | ## Contributions Back
58 |
59 | Developing feedback, changes, or additions that you contribute back to the contributor on the terms of a standardized public software license such as [the Blue Oak Model License 1.0.0](https://blueoakcouncil.org/license/1.0.0), [the Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0.html), [the MIT license](https://spdx.org/licenses/MIT.html), or [the two-clause BSD license](https://spdx.org/licenses/BSD-2-Clause.html) doesn't count as use for a commercial purpose.
60 |
61 | ## Personal Uses
62 |
63 | Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, doesn't count as use for a commercial purpose.
64 |
65 | ## Noncommercial Organizations
66 |
67 | Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution doesn't count as use for a commercial purpose regardless of the source of funding or obligations resulting from the funding.
68 |
69 | ## Defense
70 |
71 | Don't make any legal claim against anyone accusing this software, with or without changes, alone or with other technology, of infringing any patent.
72 |
73 | ## Copyright
74 |
75 | The contributor licenses you to do everything with this software that would otherwise infringe their copyright in it.
76 |
77 | ## Patent
78 |
79 | The contributor licenses you to do everything with this software that would otherwise infringe any patents they can license or become able to license.
80 |
81 | ## Reliability
82 |
83 | The contributor can't revoke this license.
84 |
85 | ## Excuse
86 |
87 | You're excused for unknowingly breaking [Notices](#notices) if you take all practical steps to comply within thirty days of learning you broke the rule.
88 |
89 | ## No Liability
90 |
91 | ***As far as the law allows, this software comes as is, without any warranty or condition, and the contributor won't be liable to anyone for any damages related to this software or this license, under any kind of legal claim.***
92 |
93 |
94 |
95 | ========== Original code used in allmusic composition matching ==========
96 |
97 | Copyright 2021 Miguel A. Arroyo
98 |
99 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
100 |
101 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
102 |
103 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
104 |
105 |
106 | ========== YaMD5 ==========
107 |
108 | The MIT License (MIT)
109 |
110 | Copyright (C) 2014 Raymond Hill
111 |
112 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
113 |
114 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS INTHE SOFTWARE.
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/main.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | if (typeof my_utils === 'undefined') include('utils.js');
4 |
5 | const loadAsync = false; // window.GetProperty('Load Biography Asynchronously', true); // changed to false: issue on loading fth with many panels
6 |
7 | async function readFiles(files) {
8 | for (const file of files) {
9 | if (window.ID) { // fix pss issue
10 | await include(my_utils.getScriptPath + file);
11 | }
12 | }
13 | }
14 |
15 | const files = [
16 | 'helpers.js',
17 | 'properties.js',
18 | 'settings.js',
19 | 'interface.js',
20 | 'language.js',
21 | 'panel.js',
22 | 'server.js',
23 | 'allmusic.js',
24 | 'lastfm.js',
25 | 'wikipedia.js',
26 | 'names.js',
27 | 'scrollbar.js',
28 | 'buttons.js',
29 | 'menu.js',
30 | 'text.js',
31 | 'lyrics.js',
32 | 'tagger.js',
33 | 'resize.js',
34 | 'library.js',
35 | 'images.js',
36 | 'filmstrip.js',
37 | 'timers.js',
38 | 'popupbox.js',
39 | 'initialise.js',
40 | 'callbacks.js'
41 | ];
42 |
43 | if (loadAsync) {
44 | readFiles(files).then(() => {
45 | if (!window.ID) return; // fix pss issue
46 | on_size();
47 | window.Repaint();
48 | });
49 | } else {
50 | files.forEach(v => include(my_utils.getScriptPath + v));
51 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": "WilB(汉化:always beta)",
3 | "description": "功能丰富的多合一简介插件\r\n\r\n下载并显示来自 Last.fm、AllMusic 和维基百科的艺术家照片、简介和评论\r\n\r\n• 主要艺术家,相似艺术家、贡献艺术家、表演者和作曲家等\r\n\r\n• 主要专辑和热门专辑\r\n\r\n• 历史记录\r\n\r\n• 歌词\r\n\r\n• 文本阅读器\r\n\r\n• 项目属性\r\n\r\n• 正在播放显示\r\n\r\n• 布局预设:上、左、右、下 和 叠加。可使用自由式布局进行完全自定义\r\n\r\n• 主题:用户界面、深色、混合、浅色和随机\r\n\r\n• 自定义颜色和字体\r\n\r\n• 幻灯片显示:上、左、右、下 或 隐藏\r\n\r\n• 图像+文本、仅图像或仅文本\r\n\n• 拖动调整图像和幻灯片的大小(在面板具有焦点时按 Ctrl 键)\r\n\r\n• 用于字段重新映射和保存位置的自定义标题格式\r\n\r\n• 以及更多...",
4 | "enableDragDrop": false,
5 | "id": "{BA9557CE-7B4B-4E0E-9373-99F511E81252}",
6 | "name": "简介",
7 | "shouldGrabFocus": true,
8 | "version": "1.4.2"
9 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/initialise.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const ui = new UserInterface;
4 | const vk = new Vkeys;
5 | const panel = new Panel;
6 | const name = new Names;
7 | const alb_scrollbar = new Scrollbar;
8 | const art_scrollbar = new Scrollbar;
9 | const art_scroller = new Scrollbar;
10 | const cov_scroller = new Scrollbar;
11 | const but = new Buttons;
12 | const popUpBox = new PopUpBox;
13 | const txt = new Text;
14 | const tag = new Tagger;
15 | const resize = new ResizeHandler;
16 | const lib = new Library;
17 | const img = new Images;
18 | const seeker = new Seeker;
19 | const filmStrip = new FilmStrip;
20 | const timer = new Timers;
21 | const men = new MenuItems;
22 | const server = new Server;
23 | const infobox = new Infobox;
24 |
25 | let lyrics;
26 | if (panel.id.lyricsSource) lyrics = new Lyrics;
27 |
28 | alb_scrollbar.type = 'alb';
29 | art_scrollbar.type = 'art';
30 | art_scroller.type = 'film';
31 | cov_scroller.type = 'film';
32 |
33 | timer.image();
34 |
35 | timer.clear(timer.zSearch);
36 | timer.zSearch.id = setTimeout(() => {
37 | if ($.server && ppt.panelActive) {
38 | server.download(false, {ix:0, focus:false}, {ix:0, focus:false}); server.download(false, {ix:0, focus:true}, {ix:0, focus:true});
39 | }
40 | timer.zSearch.id = null;
41 | }, 3000);
42 |
43 | if (!ppt.get('Software Notice Checked', false)) fb.ShowPopupMessage('许可证\r\n\r\n版权所有 (c) 2021-2022 WilB\r\n\r\nThe above copyright notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.', '简介');
44 | ppt.set('Software Notice Checked', true);
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/library.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | class Library {
4 | constructor() {
5 | this.db_lib;
6 | this.update = true;
7 | }
8 |
9 | // Methods
10 |
11 | getLibItems() {
12 | if (!this.update) return this.db_lib;
13 | this.update = false;
14 | this.db_lib = fb.GetLibraryItems();
15 | return this.db_lib;
16 | }
17 |
18 | inLibrary(type, a, l) {
19 | if (a) a = a.toLowerCase();
20 | if (l) l = l.toLowerCase();
21 | switch (type) {
22 | case 1: {
23 | let q = '';
24 | let ql = '';
25 | cfg.albartFields.forEach((v, i) => q += (i ? ' OR ' : '') + v + ' IS ' + a);
26 | cfg.albFields.forEach((v, i) => ql += (i ? ' OR ' : '') + v + ' IS ' + l);
27 | const items = $.query(this.getLibItems(), '(' + q + ') AND (' + ql + ')');
28 | if (!items.Count) return false;
29 | return items.Count;
30 | }
31 | case 2: {
32 | const q = '(' + '"' + cfg.tf.albumArtist + '"' + ' IS ' + a + ') AND ((' + '"' + cfg.tf.album + '"' + ' IS ' + l + ') OR (' + '"' + '$trim($replace($replace(' + cfg.tf.album + ",CD1,,CD2,,CD3,,CD 1,,CD 2,,CD 3,,CD.01,,CD.02,,CD.03,,CD One,,CD Two,,CD Three,,Disc1,,Disc2,,Disc3,,Disc 1,,Disc 2,,Disc 3,,Disc One,,Disc Two,,Disc Three,,Disc I,,Disc II,,Disc III,,'()',,'[]',), , ,'()',,'[]',))" + '"' + ' IS ' + l + '))';
33 | const items = $.query(this.getLibItems(), q);
34 | if (!items.Count) return false;
35 | return items[0];
36 | }
37 | default: {
38 | let q = '';
39 | cfg.artFields.forEach((v, i) => q += (i ? ' OR ' : '') + v + ' IS ' + a);
40 | const items = $.query(this.getLibItems(), q);
41 | if (!items.Count) return false;
42 | return !type ? true : items[0];
43 | }
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/names.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | class Names {
4 | constructor() {
5 | this.cur_artist = '';
6 | this.lfmUID = '_[a-f0-9]{32}\\.jpg$';
7 | }
8 |
9 | // Methods
10 |
11 | alb(focus) {
12 | return $.eval('[$trim(' + cfg.tf.album + ')]', focus);
13 | }
14 |
15 | albID(focus, n) {
16 | if (!this.alb(focus)) return $.eval(cfg.tf.artist + cfg.tf.albumArtist + '%path%', focus);
17 | else switch (n) {
18 | case 'simple':
19 | return $.eval(cfg.tf.artist + cfg.tf.albumArtist + cfg.tf.album, focus);
20 | case 'stnd':
21 | return $.eval(cfg.tf.albumArtist + cfg.tf.album + '%discnumber%%date%', focus);
22 | case 'full':
23 | return $.eval(cfg.tf.artist + cfg.tf.albumArtist + cfg.tf.album + '%discnumber%%date%', focus);
24 | }
25 | }
26 |
27 | albm(focus, ignoreLock) {
28 | return this.albumTidy($.eval('[' + cfg.tf.album + ']', focus, ignoreLock));
29 | }
30 |
31 | album(focus, ignoreLock) {
32 | if (!cfg.albStrip) return this.albm(focus);
33 | return this.albumClean($.eval('[' + cfg.tf.album + ']', focus, ignoreLock));
34 |
35 | }
36 |
37 | albumArtist(focus, ignoreLock) {
38 | let albumArtist = $.eval('[$trim(' + cfg.tf.albumArtist + ')]', focus, ignoreLock);
39 | return albumArtist;
40 | }
41 |
42 | albumClean(n) {
43 | return n.replace(/CD(\s*\d|\.0\d)|CD\s*(One|Two|Three)|Dis(c|k)\s*\d|Dis(c|k)\s*(III|II|I|One|Two|Three)\b|(Bonus\s*Track|Collector's|(Digital\s*|Super\s*|)Deluxe|Digital|Expanded|Limited|Platinum|Reissue|Special)\s*(Edition|Version)|(Bonus\s*(CD|Disc))|\d\d\w\w\s*Anniversary\s*(Expanded\s*|Re(-|)master\s*|)(Edition|Re(-|)master|Version)|((19|20)\d\d(\s*|\s*-\s*)|)(Digital(ly|)\s*|)(Re(-|)master(ed|)|Re(-|)recorded)(\s*Edition|\s*Version|)|\(Deluxe\)|\(Mono\)|\(Reissue\)|\(Revisited\)|\(Stereo\)|\(Web\)|\[Deluxe\]|\[Mono\]|\[Reissue\]|\[Revisited\]|\[Stereo\]|\[Web\]/gi, '').replace(/\(\s*\)|\[\s*\]/g, ' ').replace(/\s\s+/g, ' ').replace(/-\s*$/g, ' ').trim();
44 | }
45 |
46 | albumTidy(n) {
47 | return n.replace(/CD(\s*\d|\.0\d)|CD\s*(One|Two|Three)|Dis(c|k)\s*\d|Dis(c|k)\s*(III|II|I|One|Two|Three)\b/gi, '').replace(/\(\s*\)|\[\s*\]/g, ' ').replace(/\s\s+/g, ' ').replace(/-\s*$/g, ' ').trim();
48 | }
49 |
50 | artist(focus, ignoreLock) {
51 | let artist = $.eval('[$trim(' + cfg.tf.artist + ')]', focus, ignoreLock);
52 | return artist;
53 | }
54 |
55 | composition(focus, ignoreLock) {
56 | return $.eval('[' + cfg.tf.composition + ']', focus, ignoreLock);
57 | }
58 |
59 | isLfmImg(fn, artist) {
60 | if (artist) {
61 | if (artist != this.cur_artist) {
62 | artist = $.regexEscape($.clean(artist));
63 | this.cur_artist = artist;
64 | }
65 | return RegExp(`^${artist + this.lfmUID}`, 'i').test(fn);
66 | } else return RegExp(this.lfmUID, 'i').test(fn);
67 | }
68 |
69 | title(focus, ignoreLock) {
70 | let title = $.eval('[$trim(' + cfg.tf.title + ')]', focus, ignoreLock);
71 | return title;
72 | }
73 |
74 | trackID(focus) {
75 | return $.eval(cfg.tf.artist + cfg.tf.title, focus);
76 | }
77 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/popupbox.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | class PopUpBox {
4 | constructor() {
5 | this.getHtmlCode();
6 | this.ok = true;
7 | this.soFeat = {clipboard: true, gecko: true}
8 | }
9 |
10 | // Methods
11 |
12 | confirm(msg_title, msg_content, btn_yes_label, btn_no_label, height_adjust, h_center, confirm_callback) {
13 | utils.ShowHtmlDialog(0, this.confirmHtmlCode, {
14 | data: [msg_title, msg_content, btn_yes_label, btn_no_label, height_adjust, h_center, confirm_callback]
15 | });
16 | }
17 |
18 | getHtmlCode() {
19 | let cssPath = `${my_utils.packagePath}/assets/html/`;
20 | if (this.getWindowsVersion() === '6.1') {
21 | cssPath += 'styles7.css';
22 | } else {
23 | cssPath += 'styles10.css';
24 | }
25 | this.configHtmlCode = my_utils.getAsset('\\html\\config.html').replace(/href="styles10.css"/i, `href="${cssPath}"`);
26 | this.inputHtmlCode = my_utils.getAsset('\\html\\input.html').replace(/href="styles10.css"/i, `href="${cssPath}"`);
27 | this.confirmHtmlCode = my_utils.getAsset('\\html\\confirm.html').replace(/href="styles10.css"/i, `href="${cssPath}"`);
28 | }
29 |
30 | getWindowsVersion() {
31 | let version = '';
32 |
33 | try {
34 | version = (WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentMajorVersionNumber')).toString();
35 | version += '.';
36 | version += (WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentMinorVersionNumber')).toString();
37 | return version;
38 | } catch (e) {}
39 | try {
40 | version = WshShell.RegRead('HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\CurrentVersion');
41 | return version;
42 | } catch (e) {}
43 | return '6.1';
44 | }
45 |
46 | config(ppt, cfg, dialogWindow, ok_callback, lang, recycler) {
47 | utils.ShowHtmlDialog(0, this.configHtmlCode, {
48 | data: [ppt, cfg, dialogWindow, window.IsTransparent, ok_callback, this.tf_callback, lang, recycler],
49 | resizable: true
50 | });
51 | }
52 |
53 | input(title, msg, ok_callback, input, def) {
54 | utils.ShowHtmlDialog(0, this.inputHtmlCode, {
55 | data: [title, msg, '取消', ok_callback, input, def]
56 | });
57 | }
58 |
59 | isHtmlDialogSupported() {
60 | if (ppt.isHtmlDialogSupported != 2) return ppt.isHtmlDialogSupported;
61 |
62 | if (typeof doc === 'undefined' || !doc) {
63 | this.soFeat.gecko = false;
64 | }
65 | if (this.soFeat.gecko) {
66 | let cache = null;
67 | let clText = 'test';
68 | try {
69 | cache = doc.parentWindow.clipboardData.getData('Text');
70 | } catch (e) {}
71 | try {
72 | doc.parentWindow.clipboardData.setData('Text', clText);
73 | clText = doc.parentWindow.clipboardData.getData('Text');
74 | } catch (e) {
75 | this.soFeat.clipboard = false;
76 | }
77 | if (cache) { // Just in case previous clipboard data is needed
78 | try {
79 | doc.parentWindow.clipboardData.setData('Text', cache);
80 | } catch (e) {}
81 | }
82 | if (clText !== 'test') {
83 | this.soFeat.clipboard = false;
84 | }
85 | } else {
86 | this.soFeat.clipboard = false;
87 | }
88 |
89 | ppt.isHtmlDialogSupported = this.soFeat.gecko && this.soFeat.clipboard || this.isIEInstalled() ? 1 : 0;
90 | if (!ppt.isHtmlDialogSupported) {
91 | const caption = '显示 HTML 对话框';
92 | const prompt =
93 | `功能检查表明,当前操作系统不支持 Spider Monkey Panel 显示 Html 对话框。
94 |
95 | 这用于显示选项。关闭此对话框时,控制台将显示替代方案。
96 |
97 | 有时,功能检查可能会给出错误的答案。
98 |
99 | 如果你使用的是 Windows 系统,并且支持 Internet Explorer,应该可以工作,请输入 1,然后点击确定。
100 |
101 | 该设置将作为第一项保存在面板属性中,以后可以在那里进行更改。
102 |
103 | 支持-1;不支持-0`;
104 | let ns = '';
105 | let status = 'ok'
106 | try {
107 | ns = utils.InputBox(0, prompt, caption, ppt.isHtmlDialogSupported, true);
108 | } catch(e) {
109 | status = 'cancel';
110 | }
111 | if (status != 'cancel') {
112 | ppt.isHtmlDialogSupported = ns == 0 ? 0 : 1;
113 | }
114 | }
115 | return ppt.isHtmlDialogSupported;
116 | }
117 |
118 | isIEInstalled() {
119 | const diskLetters = Array.from(Array(26)).map((e, i) => i + 65).map((x) => `${String.fromCharCode(x)}:\\`);
120 | const paths = ['Program Files\\Internet Explorer\\ieinstal.exe', 'Program Files (x86)\\Internet Explorer\\ieinstal.exe'];
121 | return diskLetters.some(d => {
122 | try { // Needed when permission error occurs and current SMP implementation is broken for some devices....
123 | return utils.IsDirectory(d) ? paths.some(p => utils.IsFile(d + p)) : false;
124 | } catch (e) {return false;}
125 | });
126 | }
127 |
128 | tf_callback(tf, tfAll, type, sFind, sReplace) {
129 | return cfg.preview(tf, tfAll, type, sFind, sReplace);
130 | }
131 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/timers.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | class Timers {
4 | constructor() {
5 | ['dl', 'img', 'lyrics', 'sim1', 'sim2', 'source', 'transition', 'tt', 'zSearch'].forEach(v => this[v] = {
6 | id: null
7 | });
8 |
9 | this.times = [1000, 1000, 1000, 1000, 2000, 4000, 5000, 6000, 7000];
10 | }
11 |
12 | // Methods
13 |
14 | clear(timer) {
15 | if (timer) clearTimeout(timer.id);
16 | timer.id = null;
17 | }
18 |
19 | decelerating(p_force) {
20 | let counter = 0;
21 | this.clear(this.dl);
22 | const func = () => {
23 | this.res(p_force);
24 | counter++;
25 | if (counter < this.times.length) timer_dl();
26 | else this.clear(this.dl);
27 | }
28 | const timer_dl = () => {
29 | this.dl.id = setTimeout(func, this.times[counter]);
30 | }
31 | timer_dl();
32 | }
33 |
34 | image() {
35 | if (!$.server) return;
36 | this.clear(this.img);
37 | this.img.id = setInterval(() => {
38 | img.fresh();
39 | men.fresh();
40 | window.NotifyOthers('bio_imgChange', 0);
41 | }, 1000);
42 | }
43 |
44 | res(force) {
45 | window.NotifyOthers('bio_getImg', force);
46 | if ($.server) img.grab(force);
47 | }
48 |
49 | tooltip() {
50 | this.clear(this.tt);
51 | this.tt.id = setTimeout(() => {
52 | txt.deactivateTooltip();
53 | this.tt.id = null;
54 | }, 5000);
55 | }
56 | }
--------------------------------------------------------------------------------
/biography/{BA9557CE-7B4B-4E0E-9373-99F511E81252}/scripts/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | let my_utils = {}
4 |
5 | my_utils.scriptInfo = window.ScriptInfo;
6 | my_utils.packageInfo = utils.GetPackageInfo(my_utils.scriptInfo.PackageId);
7 | my_utils.packagePath = `${my_utils.packageInfo.Directories.Root}/`;
8 |
9 | my_utils.getAsset = assetFile => utils.ReadTextFile(`${my_utils.packageInfo.Directories.Assets}/${assetFile}`);
10 | my_utils.getImageAsset = assetFile => gdi.Image(`${my_utils.packageInfo.Directories.Assets}/images/${assetFile}`);
11 | my_utils.getFlagAsset = assetFile => gdi.Image(`${my_utils.packageInfo.Directories.Assets}/images/flags/${assetFile}`);
12 | my_utils.getScriptPath = `${my_utils.packageInfo.Directories.Scripts}/`;
--------------------------------------------------------------------------------
/info/dui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/dui.png
--------------------------------------------------------------------------------
/info/nonportable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/nonportable.png
--------------------------------------------------------------------------------
/info/portable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/portable.png
--------------------------------------------------------------------------------
/info/screenshot-dark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/screenshot-dark.jpg
--------------------------------------------------------------------------------
/info/screenshot-light.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/info/screenshot-light.jpg
--------------------------------------------------------------------------------
/script/html/ConfirmDialog.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
101 |
102 |
--------------------------------------------------------------------------------
/script/html/styles.css:
--------------------------------------------------------------------------------
1 | body { color: WINDOWTEXT; background-color: THREEDFACE; }
2 | input { font:caption; border: 1px solid #7A7A7A; width: 100%; }
3 | input:focus { outline: none !important; border:1px solid #0078D7; }
4 | input:hover:focus { outline: none !important; border:1px solid #0078D7; }
5 | input:hover { outline: none !important; border:1px solid #000000; }
6 | label { font:caption; }
7 | button { font:caption; background: #E1E1E1; color:ButtonText; border: 1px solid #ADADAD; margin: 5px; padding: 5px; width: 90px; }
8 | button:focus { outline: none !important; border:2px solid #0078D7; padding: 4px; }
9 | button:hover { background: #e5f1fb; outline: none !important; border:1px solid #0078D7; padding: 5px; }div { overflow: hidden; }
10 | button:focus:hover { background: #e5f1fb; outline: none !important; border:2px solid #0078D7; padding: 4px; }';span { display:block; overflow: hidden; padding-right:10px; }
11 | button[disabled] { background: #CCCCCC; color:#EBEBE4; }
12 | /* --Suppress button:hover manually, since not() is not working =( */
13 | button[disabled]:hover { border: 1px solid #ADADAD; padding: 5px; }
--------------------------------------------------------------------------------
/script/images/cover_default.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/cover_default.jpg
--------------------------------------------------------------------------------
/script/images/cover_w.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/cover_w.jpg
--------------------------------------------------------------------------------
/script/images/foobar2000.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dream7180/foobox-cn/d16405f18e236f3507e2d80bed21189cfc1f7b27/script/images/foobar2000.png
--------------------------------------------------------------------------------
/script/js_common/Genre.js:
--------------------------------------------------------------------------------
1 | GenrePack = {
2 | "流行": "Pop",
3 | "华语流行": "CPop",
4 | "C-POP": "CPop",
5 | "日语流行": "JPop",
6 | "J-POP": "JPop",
7 | "韩语流行": "KPop",
8 | "K-POP": "KPop",
9 | "摇滚": "Rock",
10 | "经典": "Classical",
11 | "古典": "Classical",
12 | "Classic": "Classical",
13 | "Classik": "Classical",
14 | "动漫": "ACG",
15 | "Anime": "ACG",
16 | "Comic": "ACG",
17 | "Game": "ACG",
18 | "游戏": "ACG",
19 | "Blue": "Blues",
20 | "乡村": "Country",
21 | "其他": "Other",
22 | "其它": "Other",
23 | "电音": "EDM",
24 | "迪斯科": "Disco",
25 | "民谣": "Folk",
26 | "金属": "Metal",
27 | "朋克": "Punk",
28 | "蓝调": "Blues",
29 | "布鲁斯": "Blues",
30 | "纯乐器演奏": "Instrumental",
31 | "器乐": "Instrumental",
32 | "说唱": "Rap",
33 | "嘻哈": "Hip-Hop",
34 | "疯克": "Funk",
35 | "新世纪音乐": "NewAge",
36 | "New Age": "NewAge",
37 | "爵士": "Jazz"
38 | }
39 |
40 | function GetGenre(name){
41 | var str = GenrePack[name];
42 | if(!str) str = name;
43 | return str;
44 | }
--------------------------------------------------------------------------------
/script/js_common/common.js:
--------------------------------------------------------------------------------
1 | //common script
2 | function RGBA(r, g, b, a) {
3 | return ((a << 24) | (r << 16) | (g << 8) | (b));
4 | }
5 | function RGB(r, g, b) {
6 | return (0xff000000 | (r << 16) | (g << 8) | (b))
7 | }
8 | var c_black = RGB(0, 0, 0);
9 | var c_white = RGB(255, 255, 255);
10 | // Textformat
11 | var DT_LEFT = 0x00000000;
12 | var DT_CENTER = 0x00000001;
13 | var DT_RIGHT = 0x00000002;
14 | var DT_TOP = 0x00000000;
15 | var DT_VCENTER = 0x00000004;
16 | var DT_BOTTOM = 0x00000008;
17 | var DT_SINGLELINE = 0x00000020;
18 | var DT_NOCLIP = 0x00000100;
19 | var DT_CALCRECT = 0x00000400;
20 | var DT_END_ELLIPSIS = 0x00008000;
21 | var DT_NOPREFIX = 0x00000800;
22 |
23 | // Flags, used by Menu ----------------------
24 | var MF_SEPARATOR = 0x00000800;
25 | var MF_ENABLED = 0x00000000;
26 | var MF_GRAYED = 0x00000001;
27 | var MF_DISABLED = 0x00000002;
28 | var MF_UNCHECKED = 0x00000000;
29 | var MF_CHECKED = 0x00000008;
30 | var MF_STRING = 0x00000000;
31 | var MF_POPUP = 0x00000010;
32 | var MF_RIGHTJUSTIFY = 0x00004000;
33 | // Keyboard Flags & Tools
34 | DLGC_WANTALLKEYS = 0x0004; /* Control wants all keys */
35 | // {{
36 | var VK_F1 = 0x70;
37 | var VK_F2 = 0x71;
38 | var VK_F3 = 0x72;
39 | var VK_F4 = 0x73;
40 | var VK_F5 = 0x74;
41 | var VK_F6 = 0x75;
42 | var VK_BACK = 0x08;
43 | var VK_TAB = 0x09;
44 | var VK_RETURN = 0x0D;
45 | var VK_SHIFT = 0x10;
46 | var VK_CONTROL = 0x11;
47 | var VK_ALT = 0x12;
48 | var VK_ESCAPE = 0x1B;
49 | var VK_PGUP = 0x21;
50 | var VK_PGDN = 0x22;
51 | var VK_END = 0x23;
52 | var VK_HOME = 0x24;
53 | var VK_LEFT = 0x25;
54 | var VK_UP = 0x26;
55 | var VK_RIGHT = 0x27;
56 | var VK_DOWN = 0x28;
57 | var VK_INSERT = 0x2D;
58 | var VK_DELETE = 0x2E;
59 | var VK_SPACEBAR = 0x20;
60 | var VK_LWIN = 0x5B;
61 | var KMask = {
62 | none: 0,
63 | ctrl: 1,
64 | shift: 2,
65 | ctrlshift: 3,
66 | ctrlalt: 4,
67 | ctrlaltshift: 5,
68 | alt: 6
69 | };
70 |
71 | function GetKeyboardMask() {
72 | var c = utils.IsKeyPressed(VK_CONTROL) ? true : false;
73 | var a = utils.IsKeyPressed(VK_ALT) ? true : false;
74 | var s = utils.IsKeyPressed(VK_SHIFT) ? true : false;
75 | var ret = KMask.none;
76 | if (c && !a && !s) ret = KMask.ctrl;
77 | if (!c && !a && s) ret = KMask.shift;
78 | if (c && !a && s) ret = KMask.ctrlshift;
79 | if (c && a && !s) ret = KMask.ctrlalt;
80 | if (c && a && s) ret = KMask.ctrlaltshift;
81 | if (!c && a && !s) ret = KMask.alt;
82 | return ret;
83 | };
84 | // }}
85 | // Used in utils.GetSysColour()
86 | COLOR_WINDOW = 5;
87 | COLOR_HIGHLIGHT = 13;
88 | COLOR_3DFACE = 15;//3dface
89 | COLOR_BTNTEXT = 18;
90 | // Used in window.GetColorDUI()
91 | ColorTypeDUI = {
92 | text: 0,
93 | background: 1,
94 | highlight: 2,
95 | selection: 3
96 | };
97 | // Used in window.GetFontDUI()
98 | FontTypeDUI = {
99 | defaults: 0,
100 | tabs: 1,
101 | lists: 2,
102 | playlists: 3,
103 | statusbar: 4,
104 | console: 5
105 | };
106 | // Used in utils.GetAlbumArt()
107 | var AlbumArtId = {
108 | front: 0,
109 | back: 1,
110 | disc: 2,
111 | icon: 3,
112 | artist: 4,
113 |
114 | GetName: function(value) {
115 | for (var i in this) {
116 | if (this[i] == value) return i;
117 | }
118 | return null;
119 | }
120 | };
121 | //colour blending
122 | function getAlpha(color) {
123 | return ((color >> 24) & 0xff);
124 | };
125 |
126 | function getRed(color) {
127 | return ((color >> 16) & 0xff);
128 | };
129 |
130 | function getGreen(color) {
131 | return ((color >> 8) & 0xff);
132 | };
133 |
134 | function getBlue(color) {
135 | return (color & 0xff);
136 | };
137 |
138 | function toRGB(d){ // convert back to RGB values
139 | var d = d - 0xff000000;
140 | var r = d >> 16;
141 | var g = d >> 8 & 0xFF;
142 | var b = d & 0xFF;
143 | return [r,g,b];
144 | };
145 |
146 | function blendColors(c1, c2, factor) {
147 | // When factor is 0, result is 100% color1, when factor is 1, result is 100% color2.
148 | var c1 = toRGB(c1);
149 | var c2 = toRGB(c2);
150 | var r = Math.round(c1[0] + factor * (c2[0] - c1[0]));
151 | var g = Math.round(c1[1] + factor * (c2[1] - c1[1]));
152 | var b = Math.round(c1[2] + factor * (c2[2] - c1[2]));
153 | return (0xff000000 | (r << 16) | (g << 8) | (b));
154 | };
155 |
156 | function isDarkMode(background) {
157 | r = getRed(background);
158 | g = getGreen(background);
159 | b = getBlue(background);
160 | if ((r + g + b) < 383) return true;
161 | else return false;
162 | }
163 |
164 | function z(value) {
165 | return Math.round(value * zdpi);
166 | };
167 |
168 | // {{
169 | // Used in gr.DrawString()
170 | function StringFormat() {
171 | var h_align = 0,
172 | v_align = 0,
173 | trimming = 0,
174 | flags = 0;
175 | switch (arguments.length) {
176 | case 3:
177 | trimming = arguments[2];
178 | case 2:
179 | v_align = arguments[1];
180 | case 1:
181 | h_align = arguments[0];
182 | break;
183 | default:
184 | return 0;
185 | };
186 | return ((h_align << 28) | (v_align << 24) | (trimming << 20) | flags);
187 | };
188 | StringAlignment = {
189 | Near: 0,
190 | Centre: 1,
191 | Far: 2
192 | };
193 | var lc_stringformat = StringFormat(StringAlignment.Near, StringAlignment.Centre);
194 | var cc_stringformat = StringFormat(StringAlignment.Centre, StringAlignment.Centre);
195 | //}}
196 |
197 | var lc_txt = DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS;
198 | var rc_txt = DT_RIGHT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS;
199 | var rb_txt = DT_RIGHT | DT_BOTTOM | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS;
200 | var lt_txt = DT_LEFT | DT_TOP | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS;
201 | var cc_txt = DT_CENTER | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_END_ELLIPSIS;
202 | var ccf_txt = DT_CENTER | DT_NOPREFIX | DT_CALCRECT | DT_VCENTER;
203 | var lcs_txt = DT_LEFT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE | DT_END_ELLIPSIS;
204 | var rcs_txt = DT_RIGHT | DT_VCENTER | DT_CALCRECT | DT_NOPREFIX | DT_SINGLELINE | DT_END_ELLIPSIS;
--------------------------------------------------------------------------------
/script/js_common/guiext.js:
--------------------------------------------------------------------------------
1 | TOOLTIP_TEXT_PADDING_LEFT = 6;
2 | TOOLTIP_TEXT_PADDING_TOP = 2;
3 | TOOLTIP_TEXT_PADDING_RIGHT = 6;
4 | TOOLTIP_TEXT_PADDING_BOTTOM = 2;
5 |
6 | function UISlider(ImgBg, ImgOverlay, ImgKnob, ImgDiv) {
7 | this.State = 0; //0-normal 1-mouse hover 2-mouse down
8 | this.Value = 0;
9 | this.MinValue = 0;
10 | this.MaxValue = 100;
11 |
12 | this.setSize = function (x, y, w, h){
13 | this.X = x;
14 | this.Y = y;
15 | this.sub_w = Math.round((w - 9)/10);
16 | this.Width = w;
17 | this.Height = h;
18 | }
19 |
20 | this.ChangeValue = function(value) {
21 | this.Value = value;
22 | this.Repaint();
23 | }
24 |
25 | this.Paint = function(gr) {
26 | var pos = this.Value / (this.MaxValue - this.MinValue);
27 | if (pos > 1) pos = 1;
28 | pos = (pos * this.Width) | 0;
29 | if(ImgDiv) {
30 | var xf = true;
31 | for (var i = 1; i < 11; i++) {
32 | var _x = this.X + (this.sub_w + 1) * (i-1);
33 | DrawThemedBox(gr, _x, this.Y, this.sub_w, this.Height, ImgBg);
34 | var w_sum = i * this.sub_w + i - 1;
35 | if(w_sum < pos) {
36 | DrawThemedBox(gr, _x, this.Y, this.sub_w, this.Height, ImgOverlay);
37 | } else if(xf) {
38 | DrawThemedBox(gr, _x, this.Y, this.sub_w - (w_sum - pos), this.Height, ImgOverlay);
39 | xf = false;
40 | }
41 | }
42 | } else {
43 | DrawThemedBox(gr, this.X, this.Y, this.Width, this.Height, ImgBg);
44 | DrawThemedBox(gr, this.X, this.Y, pos, this.Height, ImgOverlay);
45 | }
46 | gr.DrawImage(ImgKnob, Math.floor(this.X + pos - (ImgKnob.Width / 2)), this.Y, ImgKnob.Width, ImgKnob.Height, 0, 0, ImgKnob.Width, ImgKnob.Height);
47 | }
48 |
49 | this.MouseDown = function(_x, _y) {
50 | if (this.State == 1) {
51 | this.State = 2;
52 | if (_x > this.X && _x < this.X + this.Width) {
53 | var pos = _x - this.X;
54 | this.Value = (pos * (this.MaxValue - this.MinValue) / this.Width) | 0;
55 | this.Repaint();
56 | }
57 | return true;
58 | } else return false;
59 | }
60 |
61 | this.MouseMove = function(_x, _y) {
62 | var _value;
63 | if (this.State == 2) {
64 | if (_x <= this.X) _value = this.MinValue;
65 | else {
66 | if (_x >= this.X + this.Width) _value = this.MaxValue;
67 | else {
68 | var pos = _x - this.X;
69 | _value = (pos * (this.MaxValue - this.MinValue) / this.Width) | 0;
70 | }
71 | }
72 | this.Value = _value;
73 | this.Repaint();
74 | return true;
75 | } else {
76 | if (_x > this.X - ImgKnob.Width / 2 && _x < this.X + this.Width + ImgKnob.Width / 2 && _y > this.Y && _y < this.Y + this.Height) {
77 | this.State = 1;
78 | return true;
79 | } else this.State = 0;
80 | }
81 | return false;
82 | }
83 |
84 | this.MouseUp = function() {
85 | if (this.State == 2) {
86 | this.State = 0;
87 | return true;
88 | }
89 | }
90 |
91 | this.MouseWheel = function(step, valueStep) {
92 | if (this.State == 1) {
93 | var newValue = this.Value + (step * valueStep);
94 | if (newValue < this.MinValue) newValue = this.MinValue;
95 | if (newValue > this.MaxValue) newValue = this.MaxValue;
96 | this.ChangeValue(newValue);
97 | return true;
98 | }
99 | return false;
100 | }
101 |
102 | this.MouseLeave = function() {
103 | this.State = 0;
104 | }
105 |
106 | this.Repaint = function() {
107 | window.RepaintRect(this.X - ImgKnob.Width, this.Y, this.Width + 2 * ImgKnob.Width, this.Height)
108 | }
109 | }
110 | //////////////////////
111 |
112 | function DrawThemedBox(gr, x, y, w, h, ImageObj) {
113 | gr.DrawImage(ImageObj, x, y, w, h, 0, 0, ImageObj.Width-2, ImageObj.Height);
114 | }
115 |
116 | function UITooltip(x, y, txt, FontObj, color, TipBG) {
117 | this.Visible = false;
118 | this.X = x;
119 | this.Y = y;
120 | this.Width = 0;
121 | this.Height = 0
122 | this.Text = txt;
123 | if(TipBG) var BgImageObj = TipBG;
124 |
125 | this.Paint = function(gr) {
126 | this.Width = gr.CalcTextWidth(this.Text, FontObj) + TOOLTIP_TEXT_PADDING_LEFT + TOOLTIP_TEXT_PADDING_RIGHT;
127 | this.Height = gr.CalcTextHeight(this.Text, FontObj) + TOOLTIP_TEXT_PADDING_TOP + TOOLTIP_TEXT_PADDING_BOTTOM;
128 | if (this.Visible) {
129 | if(TipBG) DrawThemedBox(gr, this.X, this.Y, this.Width, this.Height, BgImageObj);
130 | gr.GdiDrawText(this.Text, FontObj, color, this.X + TOOLTIP_TEXT_PADDING_LEFT, this.Y + TOOLTIP_TEXT_PADDING_TOP, gr.CalcTextWidth(this.Text, FontObj), FontObj.Height, DT_NOPREFIX);
131 | }
132 | }
133 |
134 | this.Repaint = function() {
135 | window.RepaintRect(this.X, this.Y, this.Width, this.Height);
136 | }
137 |
138 | this.Activate = function() {
139 | this.Visible = true;
140 | this.Repaint();
141 | }
142 |
143 | this.Deactivate = function() {
144 | this.Visible = false;
145 | this.Repaint();
146 | }
147 | }
148 |
149 | function UITextView(txt, FontObj, color, formatStr) {
150 | this.X = 0;
151 | this.Y = 0;
152 | this.Width = 0;
153 | this.Height = 0;
154 | this.Text = txt;
155 |
156 | this.SetSize = function(x, y, w, h) {
157 | this.X = x;
158 | this.Y = y;
159 | this.Width = w;
160 | this.Height = h;
161 | }
162 |
163 | this.ChangeText = function(txt) {
164 | this.Text = txt;
165 | window.RepaintRect(this.X, this.Y, this.Width, this.Height);
166 | }
167 |
168 | this.Repaint = function() {
169 | window.RepaintRect(this.X, this.Y, this.Width, this.Height);
170 | }
171 |
172 | this.NewTrack = function() {
173 | this.ChangeText(TF(this.Text));
174 | }
175 |
176 |
177 |
178 | this.Paint = function(gr) {
179 | gr.GdiDrawText(this.Text, FontObj, color, this.X, this.Y, this.Width, this.Height, formatStr);
180 | }
181 | }
182 |
183 | //DEFINE CLASS ButtonUI
184 | function ButtonUI(img) {
185 | this.x = null;
186 | this.y = null;
187 | this.img = img;
188 | this.width = img.Width;
189 | this.height = img.Height/3;
190 | this.state = 0; //0-normal ;1-hover ;2-down ;3-disable
191 | }
192 |
193 | ButtonUI.prototype.SetXY = function(x, y){
194 | this.x = x;
195 | this.y = y;
196 | }
197 |
198 | ButtonUI.prototype.Paint = function(gr) {
199 | gr.DrawImage(this.img, this.x, this.y, this.width, this.height, 0, 0, this.width, this.height, 0);
200 | if(this.state > 0) gr.DrawImage(this.img, this.x, this.y, this.width, this.height, 0, this.state * this.height, this.width, this.height, 0);
201 | }
202 |
203 | ButtonUI.prototype.Repaint = function() {
204 | window.RepaintRect(this.x, this.y, this.width, this.height);
205 | }
206 |
207 | ButtonUI.prototype.MouseMove = function(x, y) {
208 | if (x > this.x && x < this.x + this.width && y > this.y && y < this.y + this.height) {
209 | if (this.state == 0) {
210 | this.state = 1;
211 | this.Repaint();
212 | }
213 | return true;
214 | } else {
215 | this.Reset();
216 | return false;
217 | }
218 | }
219 |
220 | ButtonUI.prototype.MouseDown = function(x, y) {
221 | if (this.state == 1) {
222 | this.state = 2;
223 | this.Repaint();
224 | return true;
225 | } else return false;
226 | }
227 |
228 | ButtonUI.prototype.MouseUp = function() {
229 | if (this.state == 2) {
230 | this.state = 1;
231 | this.Repaint();
232 | return true;
233 | } else return false;
234 | }
235 |
236 | ButtonUI.prototype.Reset = function() {
237 | if (this.state != 0) {
238 | this.state = 0;
239 | this.Repaint();
240 | }
241 | }
--------------------------------------------------------------------------------
/script/js_common/splitterESLProp.js:
--------------------------------------------------------------------------------
1 | window.DefinePanel('Jsplitter R02');
2 | window.DlgCode = 0x0004;
3 | let ww = 0;
4 | let wh = 0;
5 | var INFO, ESL, active_p;
6 | var timer_swp = false;
7 | var autosw = window.GetProperty("Auto.Switch", true);
8 |
9 | function get_panel() {
10 | INFO = window.GetPanel('TrackProp');
11 | ESL = window.GetPanel('ESLyric');
12 | if(!autosw){
13 | if(ESL.Hidden) active_p = INFO;
14 | else active_p = ESL;
15 | }
16 | else{
17 | if(!fb.IsPlaying) {
18 | active_p = INFO;
19 | if(INFO.Hidden) INFO.Show(true);
20 | if(!ESL.Hidden) ESL.Show(false);
21 | }
22 | else {
23 | active_p = ESL;
24 | if(ESL.Hidden) ESL.Show(true);
25 | if(!INFO.Hidden) INFO.Show(false);
26 | }
27 | }
28 | INFO.ShowCaption = ESL.ShowCaption = false;
29 | }
30 |
31 | function set_panel() {
32 | try{
33 | if(active_p.Width != ww || active_p.Height != wh)
34 | active_p.Move(0, 0, ww, wh);
35 | } catch(e){//快速设置布局的bug
36 | get_panel();
37 | }
38 | }
39 |
40 | function swith_panel(pno) {
41 | active_p.Show(false);
42 | if(pno == 2) active_p = ESL;
43 | else active_p = INFO;
44 | active_p.Show(true);
45 | set_panel();
46 | }
47 |
48 | //////////////
49 | get_panel();
50 |
51 | function on_size() {
52 | ww = window.Width;
53 | wh = window.Height;
54 | if(ww) set_panel();
55 | }
56 |
57 | function on_playback_new_track(info) {
58 | if(!autosw) return;
59 | timer_swp && window.ClearTimeout(timer_swp);
60 | timer_swp = false;
61 | swith_panel(2);
62 | }
63 |
64 | function on_playback_stop(reason) {
65 | if(!autosw) return;
66 | timer_swp = window.SetTimeout(function() {
67 | swith_panel(1);
68 | timer_swp && window.ClearTimeout(timer_swp);
69 | timer_swp = false;
70 | }, 150);
71 | }
72 |
73 | function on_notify_data(name, info) {
74 | switch (name) {
75 | case "SwitchESLProp":
76 | if(INFO.Hidden) swith_panel(1);
77 | else swith_panel(2);
78 | break;
79 | case "AutoESLProp":
80 | autosw = info;
81 | window.SetProperty("Auto.Switch", autosw);
82 | break;
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/script/js_common/splitterh.js:
--------------------------------------------------------------------------------
1 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js');
2 | window.DlgCode = DLGC_WANTALLKEYS;
3 | let ww = 0, wh = 0;
4 | let m_x = 0, m_y = 0;
5 | let sp_drag = false;
6 | var leftratio = 0;
7 | PLeft.ShowCaption = PRight.ShowCaption = false;
8 |
9 | function get_colors() {
10 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background);
11 | g_color_background = g_color_background_default;
12 | dark_mode = isDarkMode(g_color_background);
13 | if(dark_mode){
14 | c_line = RGBA(0,0,0,100);
15 | g_color_topbar = RGBA(0,0,0,30);
16 | }else{
17 | c_line = RGBA(0,0,0,75);
18 | g_color_topbar = RGBA(0,0,0,15);
19 | }
20 | }
21 |
22 | function get_font() {
23 | let g_font = window.GetFontDUI(FontTypeDUI.playlists);
24 | zdpi = g_font.Size / 12;
25 | g_topbarheight = z(26) + 2;
26 | };
27 |
28 | //////////////
29 | get_colors();
30 | get_font();
31 |
32 | function on_size() {
33 | ww = window.Width;
34 | wh = window.Height;
35 | if(leftratio && ww) {
36 | var lw_calc = Math.round((ww-2)*leftratio);
37 | PLeft.Move(0, 0, lw_calc, wh);
38 | PRight.Move(lw_calc + 2, 0, ww - lw_calc - 2, wh);
39 | } else{
40 | PLeft.Move(0, 0, PLeft.Width, wh);
41 | PRight.Move(PLeft.Width + 2, 0, ww - PLeft.Width - 2, wh);
42 | }
43 | if(ww) leftratio = PLeft.Width/(ww-2);
44 | }
45 |
46 | function on_paint(gr) {
47 | if (!ww || !wh) return;
48 | gr.FillSolidRect(0, 0, ww, wh, g_color_background);
49 | if(hasTopbar){
50 | gr.FillSolidRect(0, 0, ww, g_topbarheight - 2, g_color_topbar);
51 | gr.DrawLine(0, g_topbarheight, ww, g_topbarheight, 1, RGBA(0, 0, 0, 45));
52 | }
53 | gr.DrawLine(PLeft.Width + 1, 0, PLeft.Width + 1, wh, 1, c_line);
54 | }
55 |
56 | function on_mouse_move(x, y) {
57 | if(m_x == x && m_y == y) return;
58 | if(x > 0 && y > 0 && x < ww && y < wh) {
59 | window.SetCursor(32644);//IDC_SIZE
60 | if(sp_drag){
61 | PLeft.Move(0, 0, x, wh);
62 | PRight.Move(x + 2, 0, ww - x - 2, wh);
63 | window.Repaint();
64 | leftratio = PLeft.Width/(ww -2);
65 | }
66 | }
67 | m_x = x;
68 | m_y = y;
69 | }
70 |
71 | function on_mouse_lbtn_down(x, y) {
72 | if(x > PLeft.Width - 1 && y > 0 && x < PLeft.Width + 3 && y < wh) sp_drag = true;
73 | }
74 |
75 | function on_mouse_lbtn_up(x, y) {
76 | sp_drag = false;
77 | }
78 |
79 | function on_mouse_rbtn_up() {
80 | return true;
81 | }
82 |
83 | function on_colours_changed() {
84 | get_colors();
85 | window.Repaint();
86 | }
87 |
88 | function on_font_changed() {
89 | get_font();
90 | window.Repaint();
91 | }
92 |
93 | function on_notify_data(name, info) {
94 | switch (name) {
95 | case "color_scheme_updated":
96 | if(!info) {
97 | g_color_background = g_color_background_default;
98 | window.Repaint();
99 | }else if(info.length > 3){
100 | g_color_background = RGB(info[3], info[4], info[5]);
101 | window.Repaint();
102 | }
103 | break;
104 | }
105 | }
--------------------------------------------------------------------------------
/script/js_common/splitterv.js:
--------------------------------------------------------------------------------
1 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js');
2 | window.DlgCode = DLGC_WANTALLKEYS;
3 | let ww = 0, wh = 0;
4 | let m_x = 0, m_y = 0;
5 | let sp_drag = false;
6 | var upperratio = 0;
7 | PUpper.ShowCaption = PLower.ShowCaption = false;
8 |
9 | function get_colors() {
10 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background);
11 | g_color_background = g_color_background_default;
12 | }
13 |
14 | //////////////
15 | get_colors();
16 |
17 | function on_size() {
18 | ww = window.Width;
19 | wh = window.Height;
20 | if(upperratio && wh) {
21 | var uh_calc = Math.round((wh-2)*upperratio);
22 | PUpper.Move(0, 0, ww, uh_calc);
23 | PLower.Move(0, uh_calc + 2, ww, wh - uh_calc - 2);
24 | } else{
25 | PUpper.Move(0, 0, ww, PUpper.Height);
26 | PLower.Move(0, PUpper.Height + 2, ww, wh - PUpper.Height - 2);
27 | }
28 | if(wh) upperratio = PUpper.Height/(wh-2);
29 | }
30 |
31 | function on_paint(gr) {
32 | if (!ww || !wh) return;
33 | gr.FillSolidRect(0, 0, ww, wh, g_color_background);
34 | gr.FillSolidRect(0, PUpper.Height, ww, 1, RGBA(0, 0, 0, 80));
35 | gr.FillSolidRect(0, PUpper.Height+1, ww, 1, RGBA(0, 0, 0, 160));
36 | }
37 |
38 | function on_mouse_move(x, y) {
39 | if(m_x == x && m_y == y) return;
40 | if(x > 0 && y > 0 && x < ww && y < wh) {
41 | window.SetCursor(32645);//IDC_SIZE
42 | if(sp_drag){
43 | PUpper.Move(0, 0, ww, y);
44 | PLower.Move(0, y + 2, ww, wh - y - 2);
45 | window.Repaint();
46 | upperratio = PUpper.Height/(wh-2);
47 | }
48 | }
49 | m_x = x;
50 | m_y = y;
51 | }
52 |
53 | function on_mouse_lbtn_down(x, y) {
54 | if(y > PUpper.Height - 1 && x > 0 && y < PUpper.Height + 3 && x < ww) sp_drag = true;
55 | }
56 |
57 | function on_mouse_lbtn_up(x, y) {
58 | sp_drag = false;
59 | }
60 |
61 | function on_mouse_rbtn_up() {
62 | return true;
63 | }
64 |
65 | function on_colours_changed() {
66 | get_colors();
67 | window.Repaint();
68 | }
69 |
70 | function on_notify_data(name, info) {
71 | switch (name) {
72 | case "color_scheme_updated":
73 | if(!info) {
74 | g_color_background = g_color_background_default;
75 | window.Repaint();
76 | }else if(info.length > 3){
77 | g_color_background = RGB(info[3], info[4], info[5]);
78 | window.Repaint();
79 | }
80 | break;
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/script/js_common/splitterve.js:
--------------------------------------------------------------------------------
1 | window.DefinePanel('Jsplitter V01');
2 | include(fb.ProfilePath + 'foobox\\script\\js_common\\common.js');
3 | var PUpper = window.GetPanel('infoart');
4 | var PLower = window.GetPanel('ESLProp');
5 | window.DlgCode = DLGC_WANTALLKEYS;
6 | let ww = 0, wh = 0;
7 | let m_x = 0, m_y = 0;
8 | let sp_drag = false;
9 | var upperratio = 0;
10 | var divcolor;
11 | var draw_splitter = window.GetProperty("Splitter.on", true);
12 | var splitter_hover = false;
13 | PUpper.ShowCaption = PLower.ShowCaption = false;
14 | var c_default_hl = 0, g_color_highlight = 0;
15 |
16 | function get_colors() {
17 | g_color_background_default = window.GetColourDUI(ColorTypeDUI.background);
18 | g_color_background = g_color_background_default;
19 | dark_mode = isDarkMode(g_color_background);
20 | if(dark_mode){
21 | divcolor = RGBA(0, 0, 0, 120);
22 | }else{
23 | divcolor = RGBA(0, 0, 0, 75);
24 | }
25 | c_default_hl = window.GetColourDUI(ColorTypeDUI.highlight);
26 | g_color_highlight = c_default_hl;
27 | }
28 |
29 | //////////////
30 | get_colors();
31 |
32 | function on_size() {
33 | ww = window.Width;
34 | wh = window.Height;
35 | if(upperratio && wh) {
36 | var uh_calc = Math.round((wh-2)*upperratio);
37 | PUpper.Move(0, 0, ww, uh_calc);
38 | PLower.Move(0, uh_calc + 2, ww, wh - uh_calc - 2);
39 | } else{
40 | PUpper.Move(0, 0, ww, PUpper.Height);
41 | PLower.Move(0, PUpper.Height + 2, ww, wh - PUpper.Height - 2);
42 | }
43 | if(wh) upperratio = PUpper.Height/(wh-2);
44 | }
45 |
46 | function on_paint(gr) {
47 | if (!ww || !wh) return;
48 | gr.FillSolidRect(0, 0, ww, wh, g_color_background);
49 | if(draw_splitter){
50 | gr.FillGradRect(0, PUpper.Height, ww, 1, 0, g_color_background, /*linecolor*/divcolor, 0.5);
51 | } else if(splitter_hover) gr.DrawLine(0, PUpper.Height, ww, PUpper.Height, 1, divcolor);
52 |
53 | }
54 |
55 | function on_mouse_move(x, y) {
56 | if(m_x == x && m_y == y) return;
57 | var splitter_tmp = splitter_hover;
58 | if(x > 0 && y > 0 && x < ww && y < wh) {
59 | window.SetCursor(32645);//IDC_SIZE
60 | if(sp_drag){
61 | PUpper.Move(0, 0, ww, y);
62 | PLower.Move(0, y + 2, ww, wh - y - 2);
63 | window.Repaint();
64 | upperratio = PUpper.Height/(wh-2);
65 | }
66 | splitter_hover = true;
67 | } else splitter_hover = false;
68 | if(!draw_splitter && (splitter_tmp != splitter_hover)) window.RepaintRect(0, PUpper.Height - 1, ww, 3);
69 | m_x = x;
70 | m_y = y;
71 | }
72 |
73 | function on_mouse_lbtn_down(x, y) {
74 | if(y > PUpper.Height - 1 && x > 0 && y < PUpper.Height + 3 && x < ww) sp_drag = true;
75 | }
76 |
77 | function on_mouse_lbtn_up(x, y) {
78 | sp_drag = false;
79 | }
80 |
81 | function on_mouse_rbtn_up() {
82 | return true;
83 | }
84 |
85 | function on_mouse_leave(){
86 | splitter_hover = false;
87 | if(!draw_splitter) window.RepaintRect(0, PUpper.Height - 1, ww, 3);
88 | }
89 |
90 | function on_colours_changed() {
91 | get_colors();
92 | window.Repaint();
93 | }
94 |
95 | function on_notify_data(name, info) {
96 | switch (name) {
97 | case "MetadataInfo":
98 | draw_splitter = info;
99 | window.SetProperty("Splitter.on", draw_splitter);
100 | window.Repaint();
101 | break;
102 | case "color_scheme_updated":
103 | if(!info) {
104 | g_color_background = g_color_background_default;
105 | window.Repaint();
106 | }else if(info.length > 3){
107 | g_color_background = RGB(info[3], info[4], info[5]);
108 | window.Repaint();
109 | }
110 | break;
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/script/js_common/uihacks.js:
--------------------------------------------------------------------------------
1 | var UIHacks;
2 | var uiHacks = utils.CheckComponent("foo_ui_hacks");
3 | if (uiHacks) UIHacks = new ActiveXObject("UIHacks");
4 | var pseudoCaption;
5 | var pseudoCaptionWidth;
6 | var mouseInControl = false;
7 |
8 | function uiHacksInit() {
9 | if (!uiHacks) return;
10 | UIHacks.FrameStyle = 3;//noboarder
11 | UIHacks.MainMenuState = 1;//hide
12 | UIHacks.StatusBarState = 0;//hide
13 | UIHacks.MoveStyle = 0;//caption only
14 | UIHacks.Aero.Effect = 2;//GlassFrame
15 | UIHacks.Aero.Bottom = 1;
16 | UIHacks.Aero.Left = UIHacks.Aero.Right = UIHacks.Aero.Top = 0;
17 | if(UIHacks.MainWindowState == 2) UIHacks.DisableSizing = true; //maximized
18 | else UIHacks.DisableSizing = false;
19 | }
20 |
21 | function uiHacksResetCaption(){
22 | if (!uiHacks) return;
23 | UIHacks.SetPseudoCaption(menubtnw, 0, ww - 3*topbtnw - menubtnw, topbarh);
24 | if(UIHacks.MainWindowState == 2) UIHacks.DisableSizing = true; //maximized
25 | else UIHacks.DisableSizing = false;
26 | }
--------------------------------------------------------------------------------
/switchgit.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | rem switch to 1=github 2=gitee
3 | set a=0
4 | set b=0
5 | set c=0
6 | if exist .github set /a a=1
7 | if exist .gitee set /a b=2
8 | set /a c=%a%+%b%
9 | if %c%==1 (
10 | rename .git .gitee
11 | rename .github .git
12 | ) else (
13 | if %c%==2 (
14 | rename .git .github
15 | rename .gitee .git
16 | )
17 | )
--------------------------------------------------------------------------------