From 73150d2584d7d7ef52fb60ba1c4dba633851ec84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B8nstantine=20K=20=CC=B7o=CC=B7valensky?= <45331093+kovalensky@users.noreply.github.com> Date: Fri, 13 Oct 2023 13:23:21 +0400 Subject: [PATCH] Peer client display support (#968) Show torrent client icons for statistics --- bt/announce.php | 10 +- library/attach_mod/displaying_torrent.php | 4 +- library/includes/functions.php | 155 ++++++++++++++++++ library/includes/ucp/viewprofile.php | 2 +- library/language/source/main.php | 1 + styles/images/clients/Ares.png | Bin 0 -> 2590 bytes styles/images/clients/Aria2.png | Bin 0 -> 4617 bytes styles/images/clients/BiglyBT.png | Bin 0 -> 2532 bytes styles/images/clients/BitComet.png | Bin 0 -> 780 bytes styles/images/clients/BitLord.png | Bin 0 -> 1859 bytes styles/images/clients/BitSpirit.png | Bin 0 -> 1076 bytes styles/images/clients/BitTorrent SDK.png | Bin 0 -> 3588 bytes styles/images/clients/BitTorrent.png | Bin 0 -> 2454 bytes styles/images/clients/Blackberry.png | Bin 0 -> 1909 bytes styles/images/clients/CTorrent.png | Bin 0 -> 1273 bytes styles/images/clients/Deluge.png | Bin 0 -> 638 bytes styles/images/clients/FakeUT.png | Bin 0 -> 621 bytes styles/images/clients/FlashGet.png | Bin 0 -> 2118 bytes styles/images/clients/Folx.png | Bin 0 -> 2000 bytes .../images/clients/Free Download Manager.png | Bin 0 -> 1313 bytes styles/images/clients/Freebox.png | Bin 0 -> 1497 bytes styles/images/clients/Halite.png | Bin 0 -> 1859 bytes styles/images/clients/KGet.png | Bin 0 -> 2403 bytes styles/images/clients/KTorrent.png | Bin 0 -> 1635 bytes styles/images/clients/LibreTorrent.png | Bin 0 -> 1281 bytes styles/images/clients/MLDonkey.png | Bin 0 -> 275 bytes styles/images/clients/MediaGet.png | Bin 0 -> 2649 bytes styles/images/clients/Monsoon.png | Bin 0 -> 2211 bytes styles/images/clients/Opera.png | Bin 0 -> 885 bytes styles/images/clients/PicoTorrent.png | Bin 0 -> 1558 bytes styles/images/clients/Tixati.png | Bin 0 -> 1163 bytes styles/images/clients/TorrentStream.png | Bin 0 -> 1640 bytes styles/images/clients/Transmission.png | Bin 0 -> 1943 bytes styles/images/clients/Ttorrent.png | Bin 0 -> 1593 bytes styles/images/clients/Vuze.png | Bin 0 -> 729 bytes styles/images/clients/WebTorrent.png | Bin 0 -> 1251 bytes styles/images/clients/Xunlei.png | Bin 0 -> 1551 bytes styles/images/clients/libTorrent.png | Bin 0 -> 218 bytes styles/images/clients/qBittorrent.png | Bin 0 -> 3617 bytes styles/images/clients/uTorrent Mac.png | Bin 0 -> 3418 bytes styles/images/clients/uTorrent Web.png | Bin 0 -> 2341 bytes styles/images/clients/uTorrent.png | Bin 0 -> 310 bytes .../templates/default/viewtopic_torrent.tpl | 6 +- 43 files changed, 171 insertions(+), 7 deletions(-) create mode 100644 styles/images/clients/Ares.png create mode 100644 styles/images/clients/Aria2.png create mode 100644 styles/images/clients/BiglyBT.png create mode 100644 styles/images/clients/BitComet.png create mode 100644 styles/images/clients/BitLord.png create mode 100644 styles/images/clients/BitSpirit.png create mode 100644 styles/images/clients/BitTorrent SDK.png create mode 100644 styles/images/clients/BitTorrent.png create mode 100644 styles/images/clients/Blackberry.png create mode 100644 styles/images/clients/CTorrent.png create mode 100644 styles/images/clients/Deluge.png create mode 100644 styles/images/clients/FakeUT.png create mode 100644 styles/images/clients/FlashGet.png create mode 100644 styles/images/clients/Folx.png create mode 100644 styles/images/clients/Free Download Manager.png create mode 100644 styles/images/clients/Freebox.png create mode 100644 styles/images/clients/Halite.png create mode 100644 styles/images/clients/KGet.png create mode 100644 styles/images/clients/KTorrent.png create mode 100644 styles/images/clients/LibreTorrent.png create mode 100644 styles/images/clients/MLDonkey.png create mode 100644 styles/images/clients/MediaGet.png create mode 100644 styles/images/clients/Monsoon.png create mode 100644 styles/images/clients/Opera.png create mode 100644 styles/images/clients/PicoTorrent.png create mode 100644 styles/images/clients/Tixati.png create mode 100644 styles/images/clients/TorrentStream.png create mode 100644 styles/images/clients/Transmission.png create mode 100644 styles/images/clients/Ttorrent.png create mode 100644 styles/images/clients/Vuze.png create mode 100644 styles/images/clients/WebTorrent.png create mode 100644 styles/images/clients/Xunlei.png create mode 100644 styles/images/clients/libTorrent.png create mode 100644 styles/images/clients/qBittorrent.png create mode 100644 styles/images/clients/uTorrent Mac.png create mode 100644 styles/images/clients/uTorrent Web.png create mode 100644 styles/images/clients/uTorrent.png diff --git a/bt/announce.php b/bt/announce.php index c4d7329c2..436e3c5b3 100644 --- a/bt/announce.php +++ b/bt/announce.php @@ -68,7 +68,8 @@ if (!isset($info_hash)) { // Store info hash in hex format $info_hash_hex = bin2hex($info_hash); - +// Store peer id +$peer_id_sql = rtrim(DB()->escape(substr($peer_id, 0, 10)), ' '); // Check info_hash version if (strlen($info_hash) === 32) { $is_bt_v2 = true; @@ -189,7 +190,7 @@ if ($lp_info) { $tor_type = $row['tor_type']; // Check hybrid torrents - if (!empty($row['info_hash'], $row['info_hash_v2'])) { + if (!empty($row['info_hash']) && !empty($row['info_hash_v2'])) { // Helpful dev variables $is_hybrid = true; $hybrid_v1_hash = &$row['info_hash']; @@ -316,6 +317,7 @@ if (isset($hybrid_tor_update) || !isset($is_hybrid)) { // Update statistics only $sql .= ", speed_down = $speed_down"; $sql .= ", complete = $complete"; + $sql .= ", peer_id = '$peer_id_sql'"; $sql .= " WHERE peer_hash = '$peer_hash'"; $sql .= " LIMIT 1"; @@ -326,8 +328,8 @@ if (isset($hybrid_tor_update) || !isset($is_hybrid)) { // Update statistics only } if (!$lp_info || !$peer_info_updated) { - $columns = 'peer_hash, topic_id, user_id, ip, port, seeder, releaser, tor_type, uploaded, downloaded, remain, speed_up, speed_down, up_add, down_add, update_time, complete'; - $values = "'$peer_hash', $topic_id, $user_id, '$ip_sql', $port, $seeder, $releaser, $tor_type, $uploaded, $downloaded, $left, $speed_up, $speed_down, $up_add, $down_add, $update_time, $complete"; + $columns = 'peer_hash, topic_id, user_id, ip, port, seeder, releaser, tor_type, uploaded, downloaded, remain, speed_up, speed_down, up_add, down_add, update_time, complete, peer_id'; + $values = "'$peer_hash', $topic_id, $user_id, '$ip_sql', $port, $seeder, $releaser, $tor_type, $uploaded, $downloaded, $left, $speed_up, $speed_down, $up_add, $down_add, $update_time, $complete, '$peer_id_sql'"; DB()->query("REPLACE INTO " . BB_BT_TRACKER . " ($columns) VALUES ($values)"); } diff --git a/library/attach_mod/displaying_torrent.php b/library/attach_mod/displaying_torrent.php index b037baa23..1b096562d 100644 --- a/library/attach_mod/displaying_torrent.php +++ b/library/attach_mod/displaying_torrent.php @@ -263,6 +263,7 @@ if ($tor_reged && $tor_info) { 'sup' => 'tr.speed_up', 'sdown' => 'tr.speed_down', 'time' => 'tr.update_time' + 'peer_id' => 'tr.peer_id', ]; foreach ($peer_orders as $get_key => $order_by_value) { @@ -288,7 +289,7 @@ if ($tor_reged && $tor_info) { LIMIT $show_peers_limit"; } else { $sql = "SELECT - tr.user_id, tr.ip, tr.port, tr.uploaded, tr.downloaded, tr.remain, + tr.user_id, tr.ip, tr.port, tr.peer_id, tr.uploaded, tr.downloaded, tr.remain, tr.seeder, tr.releaser, tr.speed_up, tr.speed_down, tr.update_time, tr.complete_percent, u.username, u.user_rank FROM " . BB_BT_TRACKER . " tr @@ -443,6 +444,7 @@ if ($tor_reged && $tor_info) { $template->assign_block_vars("$x_full.$x_row", [ 'ROW_BGR' => $row_bgr, 'NAME' => ($peer['update_time']) ? $name : "$name", + 'PEER_ID' => isset($peer['peer_id']) ? get_user_client($peer['peer_id']) : 'unknown', 'COMPL_PRC' => $compl_perc, 'UP_TOTAL' => ($max_up_id[$x] == $pid) ? "$up_tot" : $up_tot, 'DOWN_TOTAL' => ($max_down_id[$x] == $pid) ? "$down_tot" : $down_tot, diff --git a/library/includes/functions.php b/library/includes/functions.php index 5d600a619..2ff674ee4 100644 --- a/library/includes/functions.php +++ b/library/includes/functions.php @@ -1173,6 +1173,161 @@ function bb_date($gmepoch, $format = false, $friendly_date = true) return ($bb_cfg['translate_dates']) ? strtr(strtoupper($date), $lang['DATETIME']) : $date; } +// Get user's torrent client string +function get_user_client($peer_id) +{ + static $clients = [ + ///'-AD' => 'Advanced Download Manager', + '-AG' => 'Ares', + //'-AR' => 'Arctic', + //'-AT' => 'Artemis', + //'-AV' => 'Avicora', + //'-AX' => 'BitPump', + '-AZ' => 'Vuze', + '-A~' => 'Ares', + //'-BB' => 'BitBuddy', + '-BC' => 'BitComet', + '-BE' => 'BitTorrent SDK', + //'-BF' => 'BitFlu', + //'-BG' => 'BTGetit', + //'-BH' => 'BitZilla', + '-BI' => 'BiglyBT', + '-BL' => 'BitLord', + //'-BM' => 'BitMagnet', + //'-BN' => 'Baidu Netdisk', + //'-BOW' => 'Bits on Wheels', + //'-BP' => 'BitTorrent Pro (Azureus + Spyware)', + //'-BR' => 'BitRocket', + //'-BS' => 'BTSlave', + '-BT' => 'BitTorrent', + //'-BW' => 'BitTorrent Web', + //'-BX' => 'BittorrentX', + //'-CD' => 'Enhanced CTorrent', + '-CT' => 'CTorrent', + '-DE' => 'Deluge', + //'-DP' => 'Propagate Data Client', + //'-EB' => 'EBit', + //'-ES' => 'Electric Sheep', + //'-FC' => 'FileCroc', + '-FD' => 'Free Download Manager', + 'FD6' => 'Free Download Manager', + '-FG' => 'FlashGet', + '-FL' => 'Folx', + //'-FT' => 'FoxTorrent/RedSwoosh', + //'-FW' => 'FrostWire', + //'-FX' => 'Freebox', + //'-G3' => 'G3 Torrent', + //'-GR' => 'GetRight', + //'-GS' => 'GSTorrent', + //'-HK' => 'Hekate', + '-HL' => 'Halite', + //'-HN' => 'Hydranode', + '-KG' => 'KGet', + '-KT' => 'KTorrent', + //'-LC' => 'LeechCraft', + //'-LH' => 'LH-ABC', + //'-LP' => 'Lphant', + '-LT' => 'libTorrent', + //'-LW' => 'LimeWire', + '-Lr' => 'LibreTorrent', + '-MG' => 'MediaGet', + //'-MK' => 'Meerkat', + //'-ML' => 'MLDonkey', + //'-MO' => 'MonoTorrent', + //'-MP' => 'MooPolice', + //'-MR' => 'Miro', + //'-MT' => 'Moonlight', + //'-NE' => 'BT Next Evolution', + //'-NX' => 'Net Transport', + //'-OS' => 'OneSwarm', + //'-OT' => 'OmegaTorrent', + //'-PD' => 'Pando', + ///'-PI' => 'PicoTorrent', + //'-QD' => 'QQDownload', + //'-QT' => 'QT 4 Torrent example', + //'-RS' => 'Rufus', + //'-RT' => 'Retriever', + //'-RZ' => 'RezTorrent', + //'-SB' => 'Swiftbit', + ///'-SD' => 'Thunder', + //'-SM' => 'SoMud', + ///'-SP' => 'BitSpirit', + //'-SS' => 'SwarmScope', + //'-ST' => 'SymTorrent', + //'-SZ' => 'Shareaza', + //'-S~' => 'Shareaza', + //'-TB' => 'Torch Browser', + //'-TN' => 'Torrent .NET', + '-TR' => 'Transmission', + //'-TS' => 'Torrentstorm', + //'-TT' => 'TuoTu', + '-tT' => 'tTorrent', + //'-UE' => "uTorrent Embedded", + //'-UL' => 'uLeecher!', + '-UM' => "uTorrent Mac", + '-UT' => "uTorrent", + '-UW' => "uTorrent Web", + //'-VG' => 'Vagaa', + //'-WS' => 'HTTP Seed', + //'-WT' => 'BitLet', + //'-WT-' => 'BitLet', + '-WW' => 'WebTorrent', + '-WD' => 'WebTorrent', + //'-WY' => 'FireTorrent', + //'-XC' => 'Xtorrent', + //'-XF' => 'Xfplay', + '-XL' => 'Xunlei', + //'-XS' => 'XSwifter', + //'-XT' => 'XanTorrent', + //'-XX' => 'Xtorrent', + ///'-ZO' => 'Zona', + //'-ZT' => 'Zip Torrent', + //'-bk' => 'BitKitten (libtorrent)', + //'-lt' => 'libTorrent (Rakshasa)', + //'-pb' => 'pbTorrent', + '-PI' => 'PicoTorrent', + '-qB' => 'qBittorrent', + //'-st' => 'SharkTorrent', + //'346-' => 'TorrentTopia', + //'AZ2500BT' => 'BitTyrant (Azureus Mod)', + //'BLZ' => 'Blizzard Downloader', + //'DNA' => 'BitTorrent DNA', + //'FD6' => 'Free Download Manager 6', + //'LIME' => 'Limewire', + 'M' => 'BitTorrent', + 'MG' => 'MediaGet', + //'Mbrst' => 'burst!', + 'OP' => 'Opera', + //'Pando' => 'Pando', + //'Plus' => 'Plus!', + //'Q' => 'Queen Bee', + //'QVOD' => 'QVOD', + ///'S3' => 'Amazon S3', + 'TIX' => 'Tixati', + 'aria2-' => 'Aria2', + 'A2' => 'Aria2', + //'btpd' => 'BT Protocol Daemon', + //'eX' => 'eXeem', + //'martini' => 'Martini Man', + ]; + + $bestMatchLength = 0; + $peer_id = htmlCHR($peer_id); + foreach ($clients as $key => $clientName) { + if (str_starts_with($peer_id, $key) !== false && strlen($key) > $bestMatchLength) { + $bestMatch = $clientName; + $bestMatchLength = strlen($key); + } + } + + if (!empty($bestMatch)) { + return '' . $bestMatch . ''; + } + else { + return $peer_id; + } +} + function birthday_age($date) { global $bb_cfg; diff --git a/library/includes/ucp/viewprofile.php b/library/includes/ucp/viewprofile.php index 674c6f466..053d79179 100644 --- a/library/includes/ucp/viewprofile.php +++ b/library/includes/ucp/viewprofile.php @@ -77,6 +77,7 @@ if (bf($profiledata['user_opt'], 'user_opt', 'dis_sig')) { $template->assign_vars([ 'PAGE_TITLE' => sprintf($lang['VIEWING_USER_PROFILE'], $profiledata['username']), 'USERNAME' => $profiledata['username'], + 'PROFILE_USER_ID' => $profiledata['user_id'], 'PROFILE_USER' => $profile_user_id, 'USER_REGDATE' => bb_date($profiledata['user_regdate'], 'Y-m-d H:i', false), @@ -90,7 +91,6 @@ $template->assign_vars([ 'ICQ' => $profiledata['user_icq'], 'LAST_VISIT_TIME' => ($profiledata['user_lastvisit']) ? (!$profile_user_id && bf($profiledata['user_opt'], 'user_opt', 'user_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_lastvisit'], 'Y-m-d H:i', false) : $lang['NEVER'], 'LAST_ACTIVITY_TIME' => ($profiledata['user_session_time']) ? (!$profile_user_id && bf($profiledata['user_opt'], 'user_opt', 'user_viewonline') && !IS_ADMIN) ? $lang['HIDDEN_USER'] : bb_date($profiledata['user_session_time'], 'Y-m-d H:i', false) : $lang['NEVER'], - 'USER_ACTIVE' => $profiledata['user_active'], 'LOCATION' => $profiledata['user_from'], 'OCCUPATION' => $profiledata['user_occ'], diff --git a/library/language/source/main.php b/library/language/source/main.php index 037d234ad..f1b8bfdef 100644 --- a/library/language/source/main.php +++ b/library/language/source/main.php @@ -1542,6 +1542,7 @@ $lang['DL_DL'] = 'DL'; $lang['DL_UL_SPEED'] = 'UL speed'; $lang['DL_DL_SPEED'] = 'DL speed'; $lang['DL_PORT'] = 'Port'; +$lang['DL_CLIENT'] = 'Client'; $lang['DL_FORMULA'] = 'Formula: Uploaded/TorrentSize'; $lang['DL_ULR'] = 'URL'; $lang['DL_STOPPED'] = 'stopped'; diff --git a/styles/images/clients/Ares.png b/styles/images/clients/Ares.png new file mode 100644 index 0000000000000000000000000000000000000000..ba2738b56cb8ac291f8e3594685a8cbfceef28e3 GIT binary patch literal 2590 zcmV+(3gPvMP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy9dt!lbW?9;ba!ELWdKlNX>N2bPDNB8KR-V|KR+NdE;UTz+=l=F z33EwAK~zXfm6rEg6iFJ#hu#0;p67nq6#)TZU~=lo0~49R%rH3v5{4O)7(r2Y*Q^*w zCPWl-j=P3ch9IaY>bWZJqi*ogQ*gaAtZ;92L(8*!&)#!ApRTE{dMkY2x4OFGWZv17 zxX<7hM}a$TJdQ$v8*-4rZwlPwZz%?N=0cvSfNRX>7(#4)kd+ev*g8K;>t$)(Otp)laxzs; zdbXXGm6xfoX38xYGING3H&Y6jG9*T-#F#G10n&uJnL_PMOp_|mr1I4iu_Fqzk$RA3 zgrAVTAPY1jaPgsq>)MZg{D|E4=j+y;dpY@YkVrQYCc%Y~fI@_`0^umfiHhwJkqtza z3G>22YZ$YZV%B25wU}oq;+c!MxrH24KGzuH7=mm)Nc96uosXsUurzL_2C1d197wIg zMpNWv$SqV^Zo1S&l^QdoAk{z>8`8!4G?6Y1qzbi!)D*r7pnz+|&I*_%1P2dw%|x^z z)Hqqe`KGd^zrJ`yO1*YtaQm)Kh%He9j#%Be1IZwTIm<;5Jx2r(+7XyNB5_riifXOl zMW&(!QfE1q7sm2RF-xhyQX()H^UbpamLi2Gs&Gf;u87NsvgYI451KLsCWBGz7r3$vhKnG7I3EM!p?kwP z4}qI^?|1bNwjVs@udHY1cp0EpYJviL0;d|CbWeydzrungriG05bhWo8#{FLc)>fdkQ)~{Hf3OXUMkm6EPxFA(A1BW8X z4PxdZ&@2MYu!SJm<+ySrUh1jpIQAVm#@n~=?7jkyApqV12Jb!~tA6?QS&lD?HXgM1 zltz}UpE|Sm@8AD$|H1I1A3uEfK$b6Av3~K|mft70hSArrkDof-*s^s~Q)}zCw!Z!W za@QERJ}A&RS2wkhZHI>+b?!T`v9WpM=H|^!Eqzx9U{nf9H{t#3M{JSXi3KlBY{^ zsd6h-W@RcYUA+TD?W>WI>|AHZp$TIs2^E!1r-_rf%H)Z)s>pQ)^;W0e;*hEJU#4@D zA*x&msT{?YEl*<06IrrEmXsnfdANokKes>t+Xl$C6oYcKZRVAV?PdE*24NtrzvA0VU0tzm zpss$|vD4=Wv(eGf+js8X7@FkP-NB)|uxiLol!m;o8(PW7moHyFfBph^^7N@u0~DVzC%a;r~Toh$5~P>=mdpHEJ+emGJ^@JIEf)nWQZtir3F6a zpc$V{5Waqda-pTDwS8az|9OE&6qW#6AM!>Qkxe5N)pV_krSk%8oreXW^Mi+}^=#|d zPnh-e^yImGT$!2&NL5@wq69eNY=Y_O95_x0GkxJIOE+xXym8a! zvuDo{U3GVN=a}uFGZ85iC(=cUbm1fzg&{YwG)@?vt@9GHaRR<*?d7f*Iq3@*FP=Vq zW`Z+kPEXZ8)R!C2wt8cuw%~w za>m^~J$kcEkZlksjhM=Wsd5o&0<$#7wrkI)wE#iZyJvaI=6@1gUPaHgF;y-&48mCO zfx!?9s3WrwC!%$(XnOco`XkDz|@JVrk2*EOkV9*tI0mkU%1%5 zXJ6CSHt+?obNAlwFJB>QFJ8JNkjOz{VkS17hQ((J;xqZvGx_luJOBx1sBCa>!Ev$F z;C@%Aq83Dwy*De3T4@4L`q#DHwqW}N^07*qoM6N<$f|dK@ AUjP6A literal 0 HcmV?d00001 diff --git a/styles/images/clients/Aria2.png b/styles/images/clients/Aria2.png new file mode 100644 index 0000000000000000000000000000000000000000..b561ac0159f9e34fcebe18101c0d05d0b55f66da GIT binary patch literal 4617 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 literal 0 HcmV?d00001 diff --git a/styles/images/clients/BiglyBT.png b/styles/images/clients/BiglyBT.png new file mode 100644 index 0000000000000000000000000000000000000000..58603f508a990fbcc25987876b811c10e1f907a0 GIT binary patch literal 2532 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 KMNUMnLSTaW<5*(= literal 0 HcmV?d00001 diff --git a/styles/images/clients/BitLord.png b/styles/images/clients/BitLord.png new file mode 100644 index 0000000000000000000000000000000000000000..f97f1d88ac48b8a91d2e736f8afb9752b7747e35 GIT binary patch literal 1859 zcmV-J2fX-+P)004R=004l4008;_004mK004C`008P>0026d000+nm#LZ5000Kg zNkl!~(=BDk=l*3_5{3ckTcL5EF#;pW*+%|NkC5eE#kGkKKDt z{`m3p!Gov2fB%Ln{rmSXPz?k@ME?EzHvmqi7ytwi3xr~1U<86MpTAX@bGX-N{X?uflPS&_QTVsueiB56_up#-+%V~ z`wwKrVDO)phg(>L|G|UjOiYX_Dza>BtY}X8@#EL6TMs^e{tk2rT$h4^l$4YxkoEib zpF6i7|HTMpQBeVLabY0i+qWM;tN;K1kETFCfJa6~9L@y@AO>I_{tp8mKYUI~YKVy` zO-^ol`}RFhz z7<6ICKuFL!Kfn9WpFdBYyb=;}WM?;JWHbgF2trIu#)5)Y#l?L<6HcDI%*AB|RKUPs z1XloLb8(s5*u^U0G}R#hc2F)@An_8sUn zH8n+GssvgAQ~*ph_wGG8a^y%$%iOhVyMcBA1Q0ZaZ{5A8Zaw|<A=JfB!S4yEsKFcJ|dzL zXe*El^uUfCM}ZN@!C`Ut?h|CAoZ(tlzH)L}0weA0*&A?;cWysoV>1Ir3}kAQ&0s#TpJ4pNN4Gbb>ZfiggnogF>9q5+_GW@cdV`CCm*o|BUUA_$BzU0r2i zVZjd{o zF`mDol3GUWKv`yxqyGsD^Ocv!!*v4F8_<;(FWv^n23nbn2QUHCYID;pK|wx)SW>l`D4xi(F1lc5s4a0G30~p1ojTU=b4H{|CRHv*jojTW zfaZMr_6brR#>#IQn{o<{iJ9j;L{NU54Z~y-T!{iIF1nKB#VPHT`R=^17jgIz& zZ~y`b>R|~Xjl#&cl|acOD#72%0a(_vAg518#{VKB z0%2jGL~d!NUs_rwAt4RUw@{Fn=x=GMYG`N#7g1A_D=W(dy9PN${L|N0jf(P+mKHsG z_R5bRefkBOO)o0~&gTCAcX z8=Tuwk{c%{tA&NWhldq}3lKnzXU?24Ha3Q|pMb5cd(XbT{rHoYlTkyFALzSZzkYFY zaDM;sgN=<1)Y$s}514M4Sy+G#6-b+eVMu|qXU_rz5Td08B7ton86F^FfQbTq3#2*0 x8GsqJWEyh5g#ds60(ltd?}2s({Qy9K0RYDNL?#z2FXsRN002ovPDHLkV1h?xYZw3k literal 0 HcmV?d00001 diff --git a/styles/images/clients/BitSpirit.png b/styles/images/clients/BitSpirit.png new file mode 100644 index 0000000000000000000000000000000000000000..23770d68866a488a898b99134a31953eddc14361 GIT binary patch literal 1076 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

FctkqZ%ir3!x_+06hBatkDk_t97*mX}< zc|~JCv#P=Bov+PJJf2YwNOQ`7TObOw&Ear>UU&f~KFPUapBd{}UU31{py#ASzF3k< zqf&v}%a<=7Z9WQm{@{aOBqb(-Wnx05oKW7nc?%9dckbMY6DRiW-Akdd8B8AdWid`4 zJJyU+Se3QMfW5Epd^q&@GdOdNw2(ptX$e8_`kAK>Z~u}LC&DAy4Il3Lysz_jHM?FX zQRv#qzVWADfzlI%De(dcnaaQk;j#WNjT$+QAOXzlbS%T|K-_32d+*(VpsRTf@a^{g zth`b@9R6moJ0&BJOr}DVQs`_3CqbOCKBu5Umc4#y(XgPORE_pPXaToy7K=fx-c%0T zTUuH&Gc&JWzYa_`HSH@cEd!%mKH~9sl9R;{V;vnG=gywpQd7g^3PEx~%;Rxdoerl^ zl8c}uhh5*>^{LIQ1wz2rc%g(w=VE?m`={@SxPf>d4 zHjl#<0CGsq3lp~ zqM~TxQLHXqS`)`xe^577?S{}gs zB1snLdS0ubGgxu_HLy5dkh0>&RVvlr0H;Xvxjepm#cH$Yl2S4m>`38-aP_!XP!b)( z{L40z*W)A+$(6PHv+^pSK1DI(2Hk8~S%l&DFJ64u-CbN#(*LBt?Pgo$hDtDwj*T*z zEIN%wp-`^=`YMP5EGZd<;O?SH{o@~;O{4R69Daw#Pc<79k2_)j5UWX( zmzOs@@{LfO2_axMOl_{JqEm@LG8FOpLvJ^qx>j7(g!#Rai~?|GL8pZ4ND!sN;sxCV zgULaOWatWuHopuilgVVOfRW}`-*otCUbkyj^|Y{}K8U&8P6w4nnV%c?2f|D?pTT6Y z*qoK+CAg6d+YTDkuKqj1)DjAf374*)9@c3_*KcY72b3cZgF$RvX&r!9 z$vgQ8Jhm{08=vfPErp!30|WiB#sfMn~8()I9hLGKm#ZDB4!5^_e(P z6zT#r7%+!dK#2IGa~6vw5C}9HO>CJ+Bw{j|tAI&C%nu33>sn;6`6Mb^uk6)K$#aWp zd|n5XT+j>>?VNS9V;NaRpf|$!_l}0M;I>};J*qm06Fef U1G`KAkpKVy07*qoM6N<$f;H!sZU6uP literal 0 HcmV?d00001 diff --git a/styles/images/clients/Blackberry.png b/styles/images/clients/Blackberry.png new file mode 100644 index 0000000000000000000000000000000000000000..509ebbb097217afea896fc6b90dc9b29dd78ef4e GIT binary patch literal 1909 zcmd5+XFD4T1I=x5FXi6WmU4@tM(sT-ksw9{5mc2}wP)Ci;J6^`|;z)JUl$Syu5sTd{3S{;pgWU5D*X)6ciE? zdiwOKu&}U*h={1DsF;|TxVX54goLD|q?DADw6wI0jEtcZi0 zJv}`H0->+3Z(v|xXlRH;B8`lUP$-nKv9XDXiK(gS^XJda%*gwj^=I-w9;o;%w>FMR= zg~4FFy}f;We0+U<{rvp={rv+10s;dAgMxyBgM&jtLPA4B!@|PC!^0yYA|fLrqoSgs zqoZSDVq#-s@`{Rz%F4>Bs;cVh z>e|}cy1F_X4)^KPr~3N(hK7dEpFcM?Ha0aiH8(f6w6wIgwzjpkwYRr-baZrfc6N1j zb$567_V)Jm_4W7n4-5ylL?Ur#XJ>bJ_t&pqdwY8%5@~;b|KQ-@@bHjKCLbLg9UmW`oSdAVo}QhZ zou8jyUS3{ZU0q*a-!Aa~5VX^^g}1eU7^n%x(9I6xi}thyAkYr37!f!W$>}30A}t~= zCPwzWP2D|*K|n}3z4SDqG17>&x353T>saMt2PaAx0z^u5@j{#Y3PBlmvw@Kr9ohryt{U2ZI%Cui8D{l=3!H26r{ zF^QW#>;pBNgB$2l2I*m~ShJvwpQsj(eZWYJ^_r=3mCOWHLslBUx-|Fpn6LdgsLN~w z_u>6|8r-rfgbPX+yp%nOv(q@2nr40D^P)<-7;r!-fS zwvi^bGSOlmAPf{^!qeOK-WFb%$?irjSLwrc2G%Y@v=TZ!^-3~KH;wvu(`gmdJkV;5OICRC@L#^U(yIR{ZXz(bPGQC!FFKRyk!j?Qy2|?b?WTt z~!3hcXco! zKVYY4>G;caxXy{{A#5*Y{O3Ex4G{th`S)crV4=1L{}J!#GD&43*GNAQVcQ2 z7onjK($ly${y+$Vs?gZ`Oz4p~SJnj6qvL2LM~2l9D#m!m%7yz8fVeZ;F*{vo8hvpr zGs9~r*r<~U+~ns$i)BOAh({82WMhda4gy(#4A6rIDs?+(MbqW3L+_(Y}T~3e#}3tKm1iQo7!A|)Rfg22AZ~& z=9X*5W@TEN>xUaFTw4=OC=l`o&65xl4!HAvaNLjQ?w-CpOSE;0r?nd6{p{Jk`#hh| z=lMSG=kx2UV(daLo>$C*(gmzpyG9Y%Y&J|L6Kb_OqQSPU+c@(1k>RE4PG53eQ6@$` zrr4WZkk8>S4&(KEkphw;ll(y>pPz*#rKnVqIokSWCDm0`qxyej;UcWvJ*c!9ljI47 zQ`q>*CQ?#U#uSNz;_@(bL(l_>P8F*wp2lD>M6~(A(Z=!Ln@9DnQO6)R+tCzOKZ%|g zD!cYT7h@Yg!_t(86asIB`YR`?ZvJ3YSFg@lMSI3&)Q0;KDG=d4j=O_;oPv9UCX%pp zN&)4mg`%(MP{#*pwwz~{IR|Y_JhM&Ngu)@tUh8DQ?_^Kg!GC>|26Yl~8Vv)1f&V{& z71PVu@$h<{{pNKpx_@J)F&iTZ)V9=@YSdvl1JMEwF z<)wz`Q~1T4WrQV}i!O^8ZbDqJb1O@yr9Up7j58R zc{SQ_0{U1j$CvD7<^9W%!>~AgF5fTPN4`0q9VJ`XQoKsB*(vM~Rn(HD&*Ibax2T@? z5&;qIxk=N|#KsX8SJV)Lg;i%`*SCjgZD}RTlyO`2p!nw9Z6Dtec@YWh9PC6Tt3+t( z?#Mw=+6)R4a@hUThjd)CusXY9J#^@H;qmwH|lKjai$B#nDNS5SKkYcmjjb6F5BXrHUc?0VkVIzt0o9Hq!d*FA-Ju zT{_B~BP;o;^Z4DTa8+X+>1F9u7Ck3YxSzcATwGQgHD^CU3j6-%prQK=4O33@ZdoOH z6Vs_V^Vz5`{jTc-r!wcG6Dh6>Xu06MbX)y%zAH>OW@6A8aCu#KSFGYiLS;)F>p#WG z{pYD!w2rlpuTV}USHpHToT%lfr9nAUMD>4`Hf)yjOj+z~IdDU$)?n5diHi~SNRVb1 zo0dZXL_-278|J-s7qw`erO_df;^jp3;h^)yl6)HFT^{+CdRzAisj^*lu-#p7&5 jGyjS5bYR`v{2{;qN?XF@z<=Z<00000NkvXXu0mjfH3esc literal 0 HcmV?d00001 diff --git a/styles/images/clients/Deluge.png b/styles/images/clients/Deluge.png new file mode 100644 index 0000000000000000000000000000000000000000..938d30c760a2b4c0ee15e90425901998ff19a903 GIT binary patch literal 638 zcmV-^0)hRBP)^7?QBGP?Qd~kt@;?*9hNHJXe)&O*vIHJu#H%D;7vUJb zapxfu<3CO=E?IGruYZ|;|NgqxD#s@>7k@6rqmoh&ON#L5$a9{#_kG#6ljpBL zkdzYr%gpob!)FU69sxeipau(ur~m)}07*qoM6N<$f-Rdnp#T5? literal 0 HcmV?d00001 diff --git a/styles/images/clients/FakeUT.png b/styles/images/clients/FakeUT.png new file mode 100644 index 0000000000000000000000000000000000000000..329e0dbcdf7625b8dfdf267b4d0b750dc7594457 GIT binary patch literal 621 zcmV-z0+RiSP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;i7Ety%y80mey0 zK~z{r-Ip;=#4r#=Q*bII%3OgXL>z)cK*<&8fr^qYqM!s?prb*eU>AmblON5_+K!X; zE*MMJ?0QDF=jo5_R8_o5=SELyQ({x*D?Ub~ZC&pnMy-i0KKUF848RB{W)0*V>z6-A zUDssVS$mXy?%aD_n=dE8+vh6>!uI3qgHbSmI2YjZ=|nzm zD%Y2fja%#U^>P?n-0cfGW2}X57HADGrG!&d2#6NgwgDn}KqNfE_VC*8%fMaFs1IUD|GGE?)5<=4oWE>T#l^s&44KnJUXNjv=RpFDFFsFegLK7be} zJSx*F7qD$E{~jQe1Q5QG)t~?{78g>?uK>hms6wqaUm5EXj>$fB2HNpZ38PfuBSeDd zc?s)NAa7k>6g=B_S!|_*HNdg2k*VjO@8+et_~wHJ3|-oU!&m^br5{tFexmr`t@!&V z&qn8ExwmVt)4=?f!Nb|5a;00000NkvXX Hu0mjf>lgmM literal 0 HcmV?d00001 diff --git a/styles/images/clients/FlashGet.png b/styles/images/clients/FlashGet.png new file mode 100644 index 0000000000000000000000000000000000000000..86653d50de072758764c73d3ab63f8313c0ea508 GIT binary patch literal 2118 zcmV-M2)Xx(P);dD~sO z=R*i25UTt>UH4P>IsfzjpL6>55hE7V^Z&HW^BridV~*~KDpy*e%+%3USz|`}0)8|A zBEpU%_JmR^DA~NTZP&iG++;(DUlg)4>ZN3*-gf@U&n3Ba z53;Y3_r4I@T9j6XkU-Q{txvu!6ub ztqZT+N^a6AW&%td2#O@1NVr7e3LEqQX`wkO^or4^jI|cme@BjqUs@KnBNsk&(Np=2 zWK^CvVLR89t-Y|Rsaq+5tx>0NaD3i})%~r~rFD4LPAkiooorYGji5m#BEwWzY26W3 ziykSjTwcfQ1pu>d;JHO^;Rs>*0nhbpZ6?P%6v*;y1)XarXADAUfv3J=*$4ZtxTcI@e6dfCF&Lo858Yd#bFNq)LDclZ{_<$vBXlx=GM;B9fYWcis=v7#e^sm1>_`uw;uU711?09y?Ps65N zHH!5OS|B=N2$6hK)r=SRt=-xT1A>J>d&3A$xH>sC74;KAbRlBz7bEBFSRC!bl=SQB zXyJvG?A-t`^S2F9edk1i*_b{|i{`!R^Ljbyx`(5hQAPSFV#y*#R$#}Gik?oVsM5D$ znYNIBn8KA;(+jUY&2D(*@#0x?IEu)IxBgPQf}Owb<(WGO=OF|_;v`5hc;`*F{Dbgq zq`{NZDXPM=$tfkR2=M?vwsP|{CXQp~^!Gk(wnN3|jMC+SbylsQKoAz>2*wJ+Py@gnC3tXwAWKjvj0!R5;~VCs!tr_vAbjzT zW!v*2(6E{;sJW4N8^w?h!O-5r5jFV{9PPAf4rwlh3t{@b9Q=k%D1dvC3$GDVr->;w zV)|DvTm`fqAOkY0RxjE1&F-W5>88&-Ti`Gi);6^l!0L_Uz_^0f5A(p?o5)QN`93vBrtOP`>2!knE{+c}o9rDo{wyzO@ z4W-1e=(R5oL-)_*Kzbgf6{Ld?w!HSlUC;TR@s#6%Y_Bu3JV=Gw>uBCe0p!DF_tSj@ z?Giao&0WF%@{Oevh!Mw1!;t3`^lZUeYaBT>2=;LbVDhy32IQz1UxP4;fMgg=8_0?G zWmWtU7uGDSySlaRp3z8!WAaTCmEb_h1hNargCfJdZOI9c5QK$av$(d03FV47KP@K!6Q%%EK|5luFk|3@ zAo!v1q7f@cvw06DXfVKqOqkn9%RdRgm=T-4gRCIz!-Y%Ocz_SK>Xpx}@Dj`ErN(h{&_RgKQqW-+@%Bpbh30bN94Miay`CM{~{^rlnI; z41mQOzz>&g`SFMBuptH>9@9X2amwfM^6y~Mw58tqhqdGY0H+_Pc15i$tY&5>1fjp% zgr@4jHN19x1}}dF<3C+|%qp;;nwQr@`IjH|topq1PnlQ0{*Z=a&^HJWP|&rxftgS5 z-TKz{Ntb)D9|Sm{-`QZU+|#?`Aq~4B0hhl0*dfapM)28_meRT-qP6r(!*UXF?Zl*1 z+3A7Pb8Es?t$iXrIVoyu=|v-L5z3(z2yseR5Z_DtbrPgQXMhqP-&NVoNImqJ| w><_bq5QD(ajdGT|KF|Icv@@p4^CBny2Z)AHtG%>CApigX07*qoM6N<$f*J)h(f|Me literal 0 HcmV?d00001 diff --git a/styles/images/clients/Folx.png b/styles/images/clients/Folx.png new file mode 100644 index 0000000000000000000000000000000000000000..9209dce0f57231e0e1324db74705eff71f4c06fc GIT binary patch literal 2000 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 literal 0 HcmV?d00001 diff --git a/styles/images/clients/Freebox.png b/styles/images/clients/Freebox.png new file mode 100644 index 0000000000000000000000000000000000000000..de8dd1b7f9b631af3e9b53ebf2c11b5b3611f349 GIT binary patch literal 1497 zcmV;~1t$85P)&#b);M7C!x*3+GTD!!kUF3;JVYLYykV`^z2Cj>iPri^lg8MS`*H6%`<%Vk z-fOROd$`^1fag1$j)0ENfVS2EARs*aKaWKKKYNg%4zRP6)io%+!p?{OHg$7dP6cvv z`T9tPgfMBl`f;iH&!^Y5;qH+ax?yBlCw)%-mcDyG}uV3f=CKE$_Jq8cKm@({VS7WP{73IPp*4Oz` zYVK{iuk$4(?utsHity_8UAdem6qD2UK3CYQ7&}w5^8fVVr zwypg20<64Z%ZZaDEZnJ8gw4(PcoqkRv9OS} zwTz47q)Di%QUFrPgyjegl|W&$AuEt)`~lKIOc5(2*uAoVdY8|7eO4Am&4k<3Tv~9gQd$D7>G-k z^vj?xoPdinW->C8-)`o^4vpjbHG~i28>1CoP7e3(;i^?gImEkn+1SX@qcJp`XHFwO z&%J*?SAWG_yI51Bhoz@0eLjq1YpbW5)u)_~FBa1h1Tl+`rzH?4j;rr3{S1d45fSLq zm$z>jU85Td&a-Dvj2q`Y&2ywjXS$B3_pthwW*ayVQXE0(-KK0WEY$K&kE6ZQI0y?C zYTT)*f}GX{<+cPZyCm^RN$6qWx^=9&#)f)Ng5+$V)dn$(ibBM2G&GoEqxrOR$4>U^ z$HYXoxAV;?^zAFn*)?JXpO=TgAWWO)RTi+WjvF^}LW~mo@?}#X+S*iQ{Q@>r4vA|K z+?yr88G>oXWOs04EQh?xTasGu>r2DSo$CQtuzI`mV3%ph287=gAEc?rTGN^n1Ajd_ln4 z$gkH(pxUbo7g9hRgK3yQAEI*w1+d$-&eE}Rw@;nQR)aXJ(78m2oRot_OnVHN;$Hs5CVFSuaH6tfZVAM#wKNTXDqNc(ec@7=I$We?Q zFQQ{i`Uk8f6_x83!paI?ZOsb1Tq>KwSdWC5ls0?FB^cDHw;R1L8ix8die|FS`zEl3 z+mZs`s(FW-ahm2%r~KY^H8bVS?r9%W&%A$xGAZ`Pc=kPPo^EXv5yIz-G}%w&=f(eg zOtj3jWoGJaQC;o%V|wu+`V}qXzv%x4)QjgY>9W|xkoegN00000NkvXXu0mjfd??hD literal 0 HcmV?d00001 diff --git a/styles/images/clients/Halite.png b/styles/images/clients/Halite.png new file mode 100644 index 0000000000000000000000000000000000000000..f9e37f0ec726e30b73a3e4fe27e43772e1bbbbd3 GIT binary patch literal 1859 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 Hu0mjfRU-Mh literal 0 HcmV?d00001 diff --git a/styles/images/clients/Monsoon.png b/styles/images/clients/Monsoon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6af5732685770c377007513dec3ec401552f06f GIT binary patch literal 2211 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 literal 0 HcmV?d00001 diff --git a/styles/images/clients/Opera.png b/styles/images/clients/Opera.png new file mode 100644 index 0000000000000000000000000000000000000000..da963ea2086b41b7fd8221deca674614b29d8599 GIT binary patch literal 885 zcmV-*1B(2KP)IWd00004XF*Lt006JZ zHwB960000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzCQwXNMc?1w z;Nal?{{H3V<@fjZ^78Vk002b^2?z%VvH$_B008Rh>KF(JcLfGi2ndq^0-XT@{)T=H z4i5ZdT>qMty#WIL`ugrRHD(0`|ABee2@CygX8)Cu{e64lX=i8sM?L*> zaQ&j4|8;El*3{4j2h9QlFfcHgnVFsn4E~af;NRaX3JTB8&rc2z#KXh>gMj;je9_U- zz`nkPhK7Z6>FMe2?(VGs0ssI10002nR$n{-00GrWL_t(|+N_gjbDKaA zhKUVGAdpqvd$-ejkJF2tVuMgHcQ)Do|0nX^?jc3roEbl}>@8c~*+V0Tt{I1(-He+x zFdw&c5F{2|s<8iUrPtmqigTel5f$S=YySj}RQFA5mJ%R*BJ3#u$HZW#?hlKw?Bg z>)|j?lEJG(ZUJ1^6+h_U(k#fxj*DNq+o+lbDqKvEnJLUD5`OC!4=6uL1-c7n3}R zVqaIc6+!Lyy9@87++dre(Wu-71P6m@W?+DS)WHu8!Ek(Mt<~c4>M?q_jUVaflk>I) z!5bFGfq~m=ch+?X!7x-K!7`ZJUgi3z)tnrg(2K> literal 0 HcmV?d00001 diff --git a/styles/images/clients/PicoTorrent.png b/styles/images/clients/PicoTorrent.png new file mode 100644 index 0000000000000000000000000000000000000000..5af8e617085e088c0a35dc0f8d53fcdca43cbab1 GIT binary patch literal 1558 zcmV+x2I={UP)KLZ*U+R`sCEkzKl)gj5&q@hY_5?)@_euSf22N!q0z{yc?Q2YY_Kym8e z5Fvwu2%hQO!{u_psMvL#(bD64NQRTZj^-}DnS22ry9f-;mW=gZvQj}U-ZdMsK&I8^7~DvX`q=i4)oYkt})a=U1eiHy*8R~V9iZqze3E?4b@D}k^qi`sv}Qd&byl4IMxRM7Z!>HaQ1kA zL(p8l#&&WlT9kPUN<~v?naNr1ulLx>)sWQ6sHo~&u?Mtxl;5H6T`4cluDm+8VoRDh z)&~Fvg9v9+S4)MOJojiC01OR>le^7R7gBl>pzLdP!)u@K*qKY+R8%FTQ%Qe3I?%4d z0l=M*%J7Mw3hu{~R^;OE#ig=6HDYZw#JOJz?`1P@Kax`Hf=J44N3l<7U^jKc*i}h) z=2_gd-SOaqD}}1b@Ip4@Ncq;KWgEH9&>_+g1yLZ&U4t*N*_64DS53WRpI_hVhQX1+ zbAbTfInmDMTN?_@W*-4~Z{yy1uQ zYqu(nP0hM=H$*qv8e)h+*?q^U*@Xr}1kf42K9roiS^@%zkN`3`Td9*t;_-n{RA<-z zY22ujBY`mh1O|Yv1Oh-X8RjyPZ^@voN36(MnNK)sPwM`tG|L_h?HfCzw~0h~;mSBi~>q=ypvU)xT* zv4<^t(tS}r)MI>oyW+d~gcbfiUu*1V=)5`HJH5EkW8l970K4@Sb`vW(DF6Tf07*qo IM6N<$g3Jlom;e9( literal 0 HcmV?d00001 diff --git a/styles/images/clients/Tixati.png b/styles/images/clients/Tixati.png new file mode 100644 index 0000000000000000000000000000000000000000..b586e44c0d7180756f3246cceeaa8698cc2111bd GIT binary patch literal 1163 zcmV;61a$j}P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;u(kfL#Cp1LR3W zK~z{r?U>t7Q&|+o&uLFv3Wb(VtF&AysHo_0Q$*_x4Ha9cSIQt66*YpGhz2jAA}XYa zLeWHHybY1*Orj_n8gRU$(KtK|qGP-eO^hZcn)nC!yF%t|c;@u2!ObQ~Br-9*Q zgMPI8;p2_qbjdWv3fN4FH*z%8=_ZIGf8h6LS;$7E@a87gCiq{2=1US%ATy*5`g{eD zl8(u*ME?GESX<7avb`6rci&>|$sQCocVQ{n$h>v_gNQif?fL~phcAH%*YGB!oUs%; zI{T1htNhqDI2f!IsCM^5ol`;^5Evk<(4eTL6Q}-shso=kX&uggOtBP(pX`)_8-)kD zu&tvXC+@t#>f_hFxtSZ!B6{`;|MNLHmh3x?f~HO|VJe^B*A+;Ep30HPy%uZT3g?Yy zkdMv&JjPpDl)%C|7gim+6}Tl(~fI}W!Z{Feq zm^4{XLY@i`4A2uNLWP{_6WDwC864eDVcK;HtU@g)7Asd{QOkK0AMS=E-GUwN2S{DB z+gHs3;3wJkpy7|lkj70EfID=ZnBr_5di$K@x`S<0x7 zN@1)zf^BE}z{QLfw8nP`KYA-%SY(csIV-WSC9D6G^o$iHLKYmCI7LilTa1dCXb#p)!H`sQg z{^FycdSG$$c`Q3XCk&w?!o^L1zMxFlYvpO&q~K8*xzNrj1|#Na=JH7B=C49jdj6N7 zNPV@li=dieBcOiHk&%7E4C zjX|-Zr&{RQmJP1`&0~xJ1rwrj!@}niK<|A{8M+Gx{Vm|rUAUyJ2gVu~va8xc76b!h dwF@40{{qs0>r_XG6FdL_002ovPDHLkV1m-E7*zlO literal 0 HcmV?d00001 diff --git a/styles/images/clients/TorrentStream.png b/styles/images/clients/TorrentStream.png new file mode 100644 index 0000000000000000000000000000000000000000..9b13bd6121372ae90c333ebc11a052eb27f73d4c GIT binary patch literal 1640 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 literal 0 HcmV?d00001 diff --git a/styles/images/clients/Ttorrent.png b/styles/images/clients/Ttorrent.png new file mode 100644 index 0000000000000000000000000000000000000000..20d9b622857c02f7af59a17a219c075c370d8d47 GIT binary patch literal 1593 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 N002ovPDHLkV1kp4K+*sJ literal 0 HcmV?d00001 diff --git a/styles/images/clients/Xunlei.png b/styles/images/clients/Xunlei.png new file mode 100644 index 0000000000000000000000000000000000000000..68660a992e4319dd23788c20f3d96b62aca67cd2 GIT binary patch literal 1551 zcmV+q2JrcbP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy8FWQhbW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE;pxyoy-6L1!ze` zK~z{r-Bx)}RaG254=_`wY;oZsp@E8}j+&`7sZ6FenFdx9!HtI-=!F-HB%?$wz}NZR=Xu=weCXp1V@`MY=A7U6`@ZjY z&*2V(#yeJ;-|XVz>Efhe9h?~lts3US_ncz+vs*=T+5 zfW^Mxhoo}r!frCJI7#Z2Py=i9Nv?sr72khFHD>Or!KFp}W*5Z0p*EeEqel1>E zc^TSe<+5J*%zImPYrJ`$+Sh(uK*m*UD5`Jc3^AWpl&!*3ytawi_vgd5p2ND_3JWY5_bnz>@->^F7BC?SQ-swfN!SWt&;l8?qqV(xZCL=F_TL z^r=VBJIMvAEYd4IG>bIkqeq!fd~5IWptHUZx*N>(lb@vUO@&y`hxjhog{0lZ_~UF9 zb`<@IxShqA6qkdppKeB%kL|@Kt|gFOtS$Ssh6`A0F#pjWJa^YUxx|ZE{_zK79j$^B zKFT1TkaxaDl_PrOp&9fLXRV`tX!;2m_Mfli9{PW^1?<`BsnXD(ObnTofy5nWaI~xr z{NFuP+_;04dyGiie-Q@bRV>|p8bgCK(P`Q`hp}d#5d_Nci^-A?rpz1oO$PExsw^Ds zNl#j#BM<3B4(+XTlpZlhnL(bA_4#t9b$(mU=lR)2u&(}zQb)fO5XOaPB6`zNe7))b zhR#fvIT=$DF)(lgzWi=K0+X}RdFqOmp3ppCP2F=Exo1r(Ur?&~3wx1g(;QlbhSn*% zUqKpzvQJsUL%cGBYU&FQWzZweLbdWeXs^t&oY{_Zd3>}QtjilQQiq9gAUrm4DU!Aq zVWXi0+V@jru01e0;urZ4wz6ig+$Z-2%vde=Q+F21HF>BOUh0cIX_Q&k9;zu=jmZ#i^u_H8>3 zpSr^Hc01%%&U`C0UA|mL-k~)Qy<7i)B!@D4PL2iZFe>zJ5B*^OJO%-V=2ikMSI@>om`e<9O{Z zXwN}>?+IM{rq0RhZJkqJ|Nj6}`OHTH1I7o2{R>*p;n#q1wf_JB002ovPDHLkV1l$1 B@n--4 literal 0 HcmV?d00001 diff --git a/styles/images/clients/libTorrent.png b/styles/images/clients/libTorrent.png new file mode 100644 index 0000000000000000000000000000000000000000..21f4b99fe801cd0f6706530f876b35840fa47f26 GIT binary patch literal 218 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 literal 0 HcmV?d00001 diff --git a/styles/images/clients/uTorrent Web.png b/styles/images/clients/uTorrent Web.png new file mode 100644 index 0000000000000000000000000000000000000000..ef54ff6bdca2c167ca446009dcf088e57ef51416 GIT binary patch literal 2341 zcmV+=3EK9FP)6F#2W)U4 zic$(fH**U#B13o6)9W|i>71R9R@8jvCuV(|s#9m}wfC;G>zqYPnq~+#iB%w^)GXjL z3rJ052nsQ~T6shUSSTWZ4DBlchQR+P41j&|3cPS&N&qzviPzsPY?PkQAPs$|N4zdhJ_#Uzsy{ z(FLOxp6EKzmD?57F~IW8tk4l458-DKQ<=kk{YJX?Xm{G{&vgX8Rz^-(HY3DfCZPoZ zQHH_72}lT;6HvZnKpQG*vg1fwks&A(P>9L#{gm>uUO-X=23wv~em0rTQkwgePG_>5 z&*sxsf-|b$@r3J9$X7-IEm+DM2)ia;-;rTtfhAXGkK@WoN8ibgBPmR(Zj4jMIROi%BQak0v& z)mM!)YCE!DR@&q0N~YUJ-PyI5YkhKP!SJDx5p!x57h5smFlo`;yB$DX#q@T+Hzdjc z)D%w{T0RB9hA&nPwuVd|x}d6XTu)|Cr*{%SVLrI9Y+k8Vn927uYk)LhFxX+PiqrwP zvi`0Od!7^p6|e01?UI?V!psBar0VIzLgNqfvA1`vxV(PJn6l}64{b6+nY<}1QE}~r zdsPr5{5P&2f7d_u+OVoAy2xMAW6j?*Op#aMPrb zb8!v;)W`lcbIicxV zK0EU6wBeV`9`;iJJx*qF`J{=}7j*`@zHruUb62*VY8g@AF#6z}O!s~OORo5*DFEQU z_ipTUc1JA192S5GF==fAuwad-nQ1GzyZcku&j4|T4`9aF%WbRr&9=w7Q(a1*WFr;` zVwG2Z3P6wgI+aNRP@I5i0w^%cr`68hyzjXMFON9f-8^U9t$sQVVEKm&SA2RKfacD< z*F7_M=9rn8OlMp7W&k%f+?h*%1>njjiq`L20bt$E2LOD~`pjp?Ul+nQv~PyWw;g>B z!1WDF!TPf!f0=gXyvpdf4-Txlp>eTN&c*|)P9$0{JM+4*Sq5O~+FA3SGXTsRc3B^k z?HdAt02tCpWcLkB?1ItvW^p_wE0(@9x5sZMn4ZqBZT?$rxS}hYTm07KHLXt;vDDDw z+sDtNs=*=*K>FoG0)W;r0K%w%MqI}TL7?(D1h_F z-ZHFu#^YPA35=4E5^2LZnQ5(#)}3fS*q7)UC?K0`eRbQ?Tc$m|^e4+9qOHAKI-OPk z56=5^fUtT08!;mS2nN%VrbZ1N zS?<+@EjvNSq$sgE@2Wn-H6trIRO;Nzd|15jmr@A?dd5>Heysptv|Zv^{xb zeEG~H>FqhMD`r)Nwdt82Eoo{LniPzr|Mdto-aYR{0KZyu78l6I;z>6&zWD72j&(a9 zUVn6TiCq~XCqN`C{X$3HeD))6?0No3urVU5n0#Uafmi?>Z~)dsQj+|}S`4@V)&wF5 z1{8bDOe6#u0Mieg2{V|X!9tP*5rH&o&5FU_NI?UTBncE~U$GV-Aq;?-wc>yv1PLiD zL1I9gmNYdgL18zPH~TVf()8ucQ(kN7dUkimj&!DH#lmeR6yJ5~lUH}%al-2^u}ed0 zuy1CCHaLi6eBNm_^wap$FX=y8R$Y8;a$^_`QAt2*Um26k3KDAT~Gx;vbslA07S;?!RWzEI9Hl00000 LNkvXXu0mjf>Q7|F literal 0 HcmV?d00001 diff --git a/styles/images/clients/uTorrent.png b/styles/images/clients/uTorrent.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9966b2ba6f3988bd8ce711a4c30a5d22513369 GIT binary patch literal 310 zcmV-60m=S}P){T~?}RLlw`uvBPgXSI_$j%0OL$L7s>1_33;rA z+0~3Qs1X2y3MD2bjWa<7)EHFArYOOCfBzj`7gl13-0)O$%SS8Cak4PfNVa6Bc!sol zj;8X_q8x4AW6Wd*{5nk7|65`UK5y@%|KWyr_2IyIp1W%455zCE(|4%8J^%m!07*qo IM6N<$g5}tM>Hq)$ literal 0 HcmV?d00001 diff --git a/styles/templates/default/viewtopic_torrent.tpl b/styles/templates/default/viewtopic_torrent.tpl index 691eb6f93..a5e2288ca 100644 --- a/styles/templates/default/viewtopic_torrent.tpl +++ b/styles/templates/default/viewtopic_torrent.tpl @@ -154,6 +154,7 @@ ajax.callback.callseed = function (data) { {L_DL_PORT} + {L_DL_CLIENT} @@ -170,6 +171,7 @@ ajax.callback.callseed = function (data) { {sfull.srow.port.PORT} + {sfull.srow.PEER_ID} @@ -202,7 +204,8 @@ ajax.callback.callseed = function (data) { {L_DL_PORT} - + + {L_DL_CLIENT} @@ -219,6 +222,7 @@ ajax.callback.callseed = function (data) { {lfull.lrow.port.PORT} + {lfull.lrow.PEER_ID}