release 1.1.0

This commit is contained in:
Newcomer1989
2016-08-20 20:22:18 +02:00
parent 1611ea7c7a
commit 3d505a8682
88 changed files with 6442 additions and 4715 deletions

View File

@@ -1,7 +0,0 @@
# TSN-Ranksystem
![license: GPL v3](https://img.shields.io/badge/license-GPL%20v3-brightgreen.svg) ![forks](https://img.shields.io/github/forks/Newcomer1989/TSN-Ranksystem.svg) ![stars](https://img.shields.io/github/stars/Newcomer1989/TSN-Ranksystem.svg) [![GitHub issues](https://img.shields.io/github/issues/Newcomer1989/TSN-Ranksystem.svg)](https://github.com/Newcomer1989/TSN-Ranksystem/issues)
The TSN Ranksystem is an easy to handle Level System to automatically grant ranks (servergroups) to users on a TeamSpeaks3 Server for online time or online activity. You can create your own servergroups, with permissions, icons etc. of your choice, and define these for the Ranksystem. Its open source and so its free to use under the GNU license with version 3.
#### Official website: [TS-N.NET](http://ts-n.net/ranksystem.php)

File diff suppressed because one or more lines are too long

View File

@@ -147,14 +147,14 @@
<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5 l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5 t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf082;" d="M1536 160q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5v-960z" />
<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
@@ -169,7 +169,7 @@
<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf092;" d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4 q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4 t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16 q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
@@ -178,7 +178,7 @@
<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf09b;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24 q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5 t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12 q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
@@ -219,8 +219,8 @@
<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
<glyph unicode="&#xf0d4;" d="M829 318q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5zM755 863q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5 t-57.5 96.5t-17.5 106q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107zM861 1120l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95 q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83zM1152 672h128v64h-128v128h-64v-128 h-128v-64h128v-160h64v160zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M735 740q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4 q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65t-59.5 -61.5t-24.5 -66zM589 836q38 0 78 16.5t66 43.5q53 57 53 159q0 58 -17 125t-48.5 129.5 t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26zM591 -37q58 0 111.5 13t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2 q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5zM1401 839h213v-108h-213v-219h-105v219h-212v108h212v217h105v-217z" />
<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
@@ -275,7 +275,7 @@
<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M496 192q0 -60 -42.5 -102t-101.5 -42q-60 0 -102 42t-42 102t42 102t102 42q59 0 101.5 -42t42.5 -102zM928 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -66 -47 -113t-113 -47t-113 47t-47 113 t47 113t113 47t113 -47t47 -113zM1360 192q0 -46 -33 -79t-79 -33t-79 33t-33 79t33 79t79 33t79 -33t33 -79zM528 1088q0 -73 -51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5t51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5zM992 1280q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1536 640q0 -40 -28 -68t-68 -28t-68 28t-28 68t28 68t68 28t68 -28t28 -68zM1328 1088q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5z" />
<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
@@ -362,8 +362,8 @@
<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M928 135v-151l-707 -1v151zM1169 481v-701l-1 -35v-1h-1132l-35 1h-1v736h121v-618h928v618h120zM241 393l704 -65l-13 -150l-705 65zM309 709l683 -183l-39 -146l-683 183zM472 1058l609 -360l-77 -130l-609 360zM832 1389l398 -585l-124 -85l-399 584zM1285 1536 l121 -697l-149 -26l-121 697z" />
<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
<glyph unicode="&#xf16d;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270 q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5 t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317 q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
@@ -399,7 +399,7 @@
<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
<glyph unicode="&#xf194;" d="M1254 899q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69 t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237 q104 139 172.5 292.5t82.5 226.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
@@ -410,9 +410,9 @@
<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M981 197q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13t99 39t73 73t27.5 109zM864 1055 q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5q53 56 53 159zM752 1536h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5 t-59.5 -93t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5 t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="1984" d="M831 572q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98zM1292 711q56 0 96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96q0 57 41.5 98t97.5 41zM1984 722q0 -62 -31 -114t-83 -82q5 -33 5 -61 q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5 l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58q94 0 160 -66t66 -160zM1664 1459q-45 0 -77 -32t-32 -77t32 -77t77 -32t77 32t32 77t-32 77t-77 32z M77 722q0 -67 51 -111q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM1567 105q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5t59.5 -194 t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5zM1850 605q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28q131 -105 178 -238zM1258 237q11 11 27 11t27 -11t11 -27.5t-11 -27.5q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5 t11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77z" />
<glyph unicode="&#xf1a2;" d="M950 393q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18t8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51zM671 613q0 -37 -26 -64t-63 -27t-63 27t-26 64t26 63t63 26t63 -26t26 -63zM1214 1049q-29 0 -50 21t-21 50 q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21zM1216 1408q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227v894q0 133 94 227t226 94h896zM1321 596q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48 q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43q-51 0 -87 -36.5t-36 -87.5q0 -37 19.5 -67.5t52.5 -45.5 q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54zM971 702q37 0 63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64t26 63t63 26z" />
<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
@@ -438,7 +438,7 @@
<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf1bd;" d="M1397 1408q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5v1258q0 58 40.5 98.5t98.5 40.5h1258zM1465 11v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48 zM694 749l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16zM1397 1287q7 0 12.5 -5.5 t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137v560q0 7 5.5 12.5t12.5 5.5h1258zM286 387q-14 -3 -26 4.5t-14 21.5q-24 203 166 305l129 -270z" />
<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
@@ -454,12 +454,12 @@
<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5z" />
<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
<glyph unicode="&#xf1d4;" d="M825 547l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150l323 -589v-435h134v436zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
@@ -483,13 +483,13 @@
<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1ed;" horiz-adv-x="1792" d="M1112 1090q0 159 -237 159h-70q-32 0 -59.5 -21.5t-34.5 -52.5l-63 -276q-2 -5 -2 -16q0 -24 17 -39.5t41 -15.5h53q69 0 128.5 13t112.5 41t83.5 81.5t30.5 126.5zM1716 938q0 -265 -220 -428q-219 -161 -612 -161h-61q-32 0 -59 -21.5t-34 -52.5l-73 -316 q-8 -36 -40.5 -61.5t-69.5 -25.5h-213q-31 0 -53 20t-22 51q0 10 13 65h151q34 0 64 23.5t38 56.5l73 316q8 33 37.5 57t63.5 24h61q390 0 607 160t217 421q0 129 -51 207q183 -92 183 -335zM1533 1123q0 -264 -221 -428q-218 -161 -612 -161h-60q-32 0 -59.5 -22t-34.5 -53 l-73 -315q-8 -36 -40 -61.5t-69 -25.5h-214q-31 0 -52.5 19.5t-21.5 51.5q0 8 2 20l300 1301q8 36 40.5 61.5t69.5 25.5h444q68 0 125 -4t120.5 -15t113.5 -30t96.5 -50.5t77.5 -74t49.5 -103.5t18.5 -136z" />
<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M441 864q32 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640 q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M322 689h-15q-19 0 -19 18q0 28 19 85q5 15 15 19.5t28 4.5q77 0 77 -49q0 -41 -30.5 -59.5t-74.5 -18.5zM664 528q-47 0 -47 29q0 62 123 62l3 -3q-5 -88 -79 -88zM1438 687h-15q-19 0 -19 19q0 28 19 85q5 15 14.5 19t28.5 4q77 0 77 -49q0 -41 -30.5 -59.5 t-74.5 -18.5zM1780 527q-47 0 -47 30q0 62 123 62l3 -3q-5 -89 -79 -89zM373 894h-128q-8 0 -14.5 -4t-8.5 -7.5t-7 -12.5q-3 -7 -45 -190t-42 -192q0 -7 5.5 -12.5t13.5 -5.5h62q25 0 32.5 34.5l15 69t32.5 34.5q47 0 87.5 7.5t80.5 24.5t63.5 52.5t23.5 84.5 q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM719 798q-38 0 -74 -6q-2 0 -8.5 -1t-9 -1.5l-7.5 -1.5t-7.5 -2t-6.5 -3t-6.5 -4t-5 -5t-4.5 -7t-4 -9q-9 -29 -9 -39t9 -10q5 0 21.5 5t19.5 6q30 8 58 8q74 0 74 -36q0 -11 -10 -14q-8 -2 -18 -3t-21.5 -1.5t-17.5 -1.5 q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5q0 -38 26 -59.5t64 -21.5q24 0 45.5 6.5t33 13t38.5 23.5q-3 -7 -3 -15t5.5 -13.5t12.5 -5.5h56q1 1 7 3.5t7.5 3.5t5 3.5t5 5.5t2.5 8l45 194q4 13 4 30q0 81 -145 81zM1247 793h-74q-22 0 -39 -23q-5 -7 -29.5 -51 t-46.5 -81.5t-26 -38.5l-5 4q0 77 -27 166q-1 5 -3.5 8.5t-6 6.5t-6.5 5t-8.5 3t-8.5 1.5t-9.5 1t-9 0.5h-10h-8.5q-38 0 -38 -21l1 -5q5 -53 25 -151t25 -143q2 -16 2 -24q0 -19 -30.5 -61.5t-30.5 -58.5q0 -13 40 -13q61 0 76 25l245 415q10 20 10 26q0 9 -8 9zM1489 892 h-129q-18 0 -29 -23q-6 -13 -46.5 -191.5t-40.5 -190.5q0 -20 43 -20h7.5h9h9t9.5 1t8.5 2t8.5 3t6.5 4.5t5.5 6t3 8.5l21 91q2 10 10.5 17t19.5 7q47 0 87.5 7t80.5 24.5t63.5 52.5t23.5 84q0 36 -14.5 61t-41 36.5t-53.5 15.5t-62 4zM1835 798q-26 0 -74 -6 q-38 -6 -48 -16q-7 -8 -11 -19q-8 -24 -8 -39q0 -10 8 -10q1 0 41 12q30 8 58 8q74 0 74 -36q0 -12 -10 -14q-4 -1 -57 -7q-38 -4 -64.5 -10t-56.5 -19.5t-45.5 -39t-15.5 -62.5t26 -58.5t64 -21.5q24 0 45 6t34 13t38 24q-3 -15 -3 -16q0 -5 2 -8.5t6.5 -5.5t8 -3.5 t10.5 -2t9.5 -0.5h9.5h8q42 0 48 25l45 194q3 15 3 31q0 81 -145 81zM2157 889h-55q-25 0 -33 -40q-10 -44 -36.5 -167t-42.5 -190v-5q0 -16 16 -18h1h57q10 0 18.5 6.5t10.5 16.5l83 374h-1l1 5q0 7 -5.5 12.5t-13.5 5.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048 q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
@@ -513,8 +513,173 @@
<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
<glyph unicode="&#xf20d;" horiz-adv-x="1792" />
<glyph unicode="&#xf20e;" horiz-adv-x="1792" />
<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" />
<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" />
<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" />
<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" />
<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" />
<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" />
<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" />
<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " />
<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" />
<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5 q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96 q16 0 16 -16z" />
<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" />
<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
<glyph unicode="&#xf296;" horiz-adv-x="1792" d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
<glyph unicode="&#xf297;" horiz-adv-x="1792" d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111 q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
<glyph unicode="&#xf298;" d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14 t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
<glyph unicode="&#xf299;" horiz-adv-x="1792" d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57 q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285 q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
<glyph unicode="&#xf29a;" horiz-adv-x="1792" d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42 q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298 t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
<glyph unicode="&#xf29b;" d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300 l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
<glyph unicode="&#xf29c;" d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5 t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5 t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5 t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf29d;" horiz-adv-x="1408" d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457 q-67 -192 -92 -234q-16 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521 q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661 q3 -1 7 1t7 4l3 2q11 9 11 17z" />
<glyph unicode="&#xf29e;" horiz-adv-x="2304" d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10 t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5 t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5 h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96 t9.5 -70.5z" />
<glyph unicode="&#xf2a0;" horiz-adv-x="1408" d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5 q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127 l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272 t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249 q-18 -19 -45 -19z" />
<glyph unicode="&#xf2a1;" horiz-adv-x="2176" d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864 q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136 t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56 t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56 t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136 t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
<glyph unicode="&#xf2a2;" horiz-adv-x="1792" d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72 t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45 t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4 q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
<glyph unicode="&#xf2a3;" horiz-adv-x="2304" d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55 q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5 q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101 q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35 q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5 q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
<glyph unicode="&#xf2a4;" horiz-adv-x="1792" d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19 t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74 t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233 l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
<glyph unicode="&#xf2a5;" d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2 q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10 q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf2a6;" horiz-adv-x="1535" d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5 l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5 q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9 q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
<glyph unicode="&#xf2a7;" horiz-adv-x="1664" d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37 t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38 l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147l-4 -4t-5 -4q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148q-34 23 -76 23 q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26l-12 224 q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
<glyph unicode="&#xf2a8;" horiz-adv-x="1792" d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5 q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841 q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5 q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
<glyph unicode="&#xf2a9;" horiz-adv-x="1280" d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5 q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
<glyph unicode="&#xf2aa;" d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5 q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 43 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
<glyph unicode="&#xf2ab;" d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114 q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5 t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
<glyph unicode="&#xf2ac;" horiz-adv-x="1664" d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35 q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5 t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
<glyph unicode="&#xf2ad;" d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115 q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15 t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960 q119 0 203.5 -84.5t84.5 -203.5z" />
<glyph unicode="&#xf2ae;" horiz-adv-x="2304" d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7 q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158 q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
<glyph unicode="&#xf2b0;" d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104 q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108 l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
<glyph unicode="&#xf2b1;" horiz-adv-x="1664" d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5 t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
<glyph unicode="&#xf2b2;" horiz-adv-x="1792" d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5 t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114 q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50 q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5 t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46 q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5 q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177 t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
<glyph unicode="&#xf2b3;" d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110 h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
<glyph unicode="&#xf2b4;" d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5 q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
<glyph unicode="&#xf2b5;" horiz-adv-x="1792" />
<glyph unicode="&#xf2b6;" horiz-adv-x="1792" />
<glyph unicode="&#xf2b7;" horiz-adv-x="1792" />
<glyph unicode="&#xf2b8;" horiz-adv-x="1792" />
<glyph unicode="&#xf2b9;" horiz-adv-x="1792" />
<glyph unicode="&#xf2ba;" horiz-adv-x="1792" />
<glyph unicode="&#xf2bb;" horiz-adv-x="1792" />
<glyph unicode="&#xf2bc;" horiz-adv-x="1792" />
<glyph unicode="&#xf2bd;" horiz-adv-x="1792" />
<glyph unicode="&#xf2be;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 280 KiB

After

Width:  |  Height:  |  Size: 382 KiB

View File

@@ -0,0 +1,34 @@
// Animated Icons
// --------------------------
.@{fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
.@{fa-css-prefix}-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

View File

@@ -7,6 +7,15 @@
border-radius: .1em;
}
.@{fa-css-prefix}-pull-left { float: left; }
.@{fa-css-prefix}-pull-right { float: right; }
.@{fa-css-prefix} {
&.@{fa-css-prefix}-pull-left { margin-right: .3em; }
&.@{fa-css-prefix}-pull-right { margin-left: .3em; }
}
/* Deprecated as of 4.4.0 */
.pull-right { float: right; }
.pull-left { float: left; }

View File

@@ -3,9 +3,10 @@
.@{fa-css-prefix} {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

View File

@@ -1,5 +1,5 @@
/*!
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@@ -11,7 +11,8 @@
@import "fixed-width.less";
@import "list.less";
@import "bordered-pulled.less";
@import "spinning.less";
@import "animated.less";
@import "rotated-flipped.less";
@import "stacked.less";
@import "icons.less";
@import "screen-reader.less";

View File

@@ -158,10 +158,12 @@
.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
.@{fa-css-prefix}-facebook-f:before,
.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
.@{fa-css-prefix}-feed:before,
.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
@@ -397,7 +399,8 @@
.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
.@{fa-css-prefix}-female:before { content: @fa-var-female; }
.@{fa-css-prefix}-male:before { content: @fa-var-male; }
.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; }
.@{fa-css-prefix}-gittip:before,
.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; }
.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
@@ -435,7 +438,7 @@
.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }
.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }
.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }
.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; }
.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }
.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }
.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }
@@ -485,11 +488,14 @@
.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }
.@{fa-css-prefix}-ra:before,
.@{fa-css-prefix}-resistance:before,
.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }
.@{fa-css-prefix}-ge:before,
.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }
.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }
.@{fa-css-prefix}-git:before { content: @fa-var-git; }
.@{fa-css-prefix}-y-combinator-square:before,
.@{fa-css-prefix}-yc-square:before,
.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }
.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }
.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }
@@ -550,3 +556,178 @@
.@{fa-css-prefix}-sheqel:before,
.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; }
.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; }
.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; }
.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; }
.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; }
.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; }
.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; }
.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; }
.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; }
.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; }
.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; }
.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; }
.@{fa-css-prefix}-ship:before { content: @fa-var-ship; }
.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; }
.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; }
.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; }
.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; }
.@{fa-css-prefix}-venus:before { content: @fa-var-venus; }
.@{fa-css-prefix}-mars:before { content: @fa-var-mars; }
.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; }
.@{fa-css-prefix}-intersex:before,
.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; }
.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; }
.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; }
.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; }
.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; }
.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; }
.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; }
.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; }
.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; }
.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; }
.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; }
.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; }
.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; }
.@{fa-css-prefix}-server:before { content: @fa-var-server; }
.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; }
.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; }
.@{fa-css-prefix}-hotel:before,
.@{fa-css-prefix}-bed:before { content: @fa-var-bed; }
.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; }
.@{fa-css-prefix}-train:before { content: @fa-var-train; }
.@{fa-css-prefix}-subway:before { content: @fa-var-subway; }
.@{fa-css-prefix}-medium:before { content: @fa-var-medium; }
.@{fa-css-prefix}-yc:before,
.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; }
.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; }
.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
.@{fa-css-prefix}-battery-4:before,
.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
.@{fa-css-prefix}-battery-3:before,
.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
.@{fa-css-prefix}-battery-2:before,
.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; }
.@{fa-css-prefix}-battery-1:before,
.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; }
.@{fa-css-prefix}-battery-0:before,
.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; }
.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; }
.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; }
.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; }
.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; }
.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; }
.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; }
.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; }
.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; }
.@{fa-css-prefix}-clone:before { content: @fa-var-clone; }
.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; }
.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; }
.@{fa-css-prefix}-hourglass-1:before,
.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; }
.@{fa-css-prefix}-hourglass-2:before,
.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; }
.@{fa-css-prefix}-hourglass-3:before,
.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; }
.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; }
.@{fa-css-prefix}-hand-grab-o:before,
.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; }
.@{fa-css-prefix}-hand-stop-o:before,
.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; }
.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; }
.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; }
.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; }
.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; }
.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; }
.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; }
.@{fa-css-prefix}-registered:before { content: @fa-var-registered; }
.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; }
.@{fa-css-prefix}-gg:before { content: @fa-var-gg; }
.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; }
.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; }
.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; }
.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; }
.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; }
.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; }
.@{fa-css-prefix}-safari:before { content: @fa-var-safari; }
.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; }
.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; }
.@{fa-css-prefix}-opera:before { content: @fa-var-opera; }
.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; }
.@{fa-css-prefix}-tv:before,
.@{fa-css-prefix}-television:before { content: @fa-var-television; }
.@{fa-css-prefix}-contao:before { content: @fa-var-contao; }
.@{fa-css-prefix}-500px:before { content: @fa-var-500px; }
.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; }
.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; }
.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; }
.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; }
.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; }
.@{fa-css-prefix}-industry:before { content: @fa-var-industry; }
.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; }
.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; }
.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; }
.@{fa-css-prefix}-map:before { content: @fa-var-map; }
.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; }
.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; }
.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; }
.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; }
.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; }
.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; }
.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; }
.@{fa-css-prefix}-edge:before { content: @fa-var-edge; }
.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; }
.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; }
.@{fa-css-prefix}-modx:before { content: @fa-var-modx; }
.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; }
.@{fa-css-prefix}-usb:before { content: @fa-var-usb; }
.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; }
.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; }
.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; }
.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; }
.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; }
.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; }
.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; }
.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; }
.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; }
.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; }
.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; }
.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; }
.@{fa-css-prefix}-percent:before { content: @fa-var-percent; }
.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; }
.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; }
.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; }
.@{fa-css-prefix}-envira:before { content: @fa-var-envira; }
.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; }
.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; }
.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; }
.@{fa-css-prefix}-blind:before { content: @fa-var-blind; }
.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; }
.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; }
.@{fa-css-prefix}-braille:before { content: @fa-var-braille; }
.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; }
.@{fa-css-prefix}-asl-interpreting:before,
.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; }
.@{fa-css-prefix}-deafness:before,
.@{fa-css-prefix}-hard-of-hearing:before,
.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; }
.@{fa-css-prefix}-glide:before { content: @fa-var-glide; }
.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; }
.@{fa-css-prefix}-signing:before,
.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; }
.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; }
.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; }
.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; }
.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; }
.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; }
.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; }
.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; }
.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; }
.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; }
.@{fa-css-prefix}-google-plus-circle:before,
.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; }
.@{fa-css-prefix}-fa:before,
.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }

View File

@@ -3,23 +3,58 @@
.fa-icon() {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.fa-icon-rotate(@degrees, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
-webkit-transform: rotate(@degrees);
-ms-transform: rotate(@degrees);
transform: rotate(@degrees);
}
.fa-icon-flip(@horiz, @vert, @rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
-webkit-transform: scale(@horiz, @vert);
-ms-transform: scale(@horiz, @vert);
transform: scale(@horiz, @vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
.sr-only() {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
.sr-only-focusable() {
&:active,
&:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
}

View File

@@ -5,10 +5,11 @@
font-family: 'FontAwesome';
src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,5 @@
// Screen Readers
// -------------------------
.sr-only { .sr-only(); }
.sr-only-focusable { .sr-only-focusable(); }

View File

@@ -2,20 +2,25 @@
// --------------------------
@fa-font-path: "../fonts";
//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts"; // for referencing Bootstrap CDN font files directly
@fa-font-size-base: 14px;
@fa-line-height-base: 1;
//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly
@fa-css-prefix: fa;
@fa-version: "4.2.0";
@fa-version: "4.6.3";
@fa-border-color: #eee;
@fa-inverse: #fff;
@fa-li-width: (30em / 14);
@fa-var-500px: "\f26e";
@fa-var-adjust: "\f042";
@fa-var-adn: "\f170";
@fa-var-align-center: "\f037";
@fa-var-align-justify: "\f039";
@fa-var-align-left: "\f036";
@fa-var-align-right: "\f038";
@fa-var-amazon: "\f270";
@fa-var-ambulance: "\f0f9";
@fa-var-american-sign-language-interpreting: "\f2a3";
@fa-var-anchor: "\f13d";
@fa-var-android: "\f17b";
@fa-var-angellist: "\f209";
@@ -46,16 +51,31 @@
@fa-var-arrows-alt: "\f0b2";
@fa-var-arrows-h: "\f07e";
@fa-var-arrows-v: "\f07d";
@fa-var-asl-interpreting: "\f2a3";
@fa-var-assistive-listening-systems: "\f2a2";
@fa-var-asterisk: "\f069";
@fa-var-at: "\f1fa";
@fa-var-audio-description: "\f29e";
@fa-var-automobile: "\f1b9";
@fa-var-backward: "\f04a";
@fa-var-balance-scale: "\f24e";
@fa-var-ban: "\f05e";
@fa-var-bank: "\f19c";
@fa-var-bar-chart: "\f080";
@fa-var-bar-chart-o: "\f080";
@fa-var-barcode: "\f02a";
@fa-var-bars: "\f0c9";
@fa-var-battery-0: "\f244";
@fa-var-battery-1: "\f243";
@fa-var-battery-2: "\f242";
@fa-var-battery-3: "\f241";
@fa-var-battery-4: "\f240";
@fa-var-battery-empty: "\f244";
@fa-var-battery-full: "\f240";
@fa-var-battery-half: "\f242";
@fa-var-battery-quarter: "\f243";
@fa-var-battery-three-quarters: "\f241";
@fa-var-bed: "\f236";
@fa-var-beer: "\f0fc";
@fa-var-behance: "\f1b4";
@fa-var-behance-square: "\f1b5";
@@ -69,12 +89,17 @@
@fa-var-bitbucket: "\f171";
@fa-var-bitbucket-square: "\f172";
@fa-var-bitcoin: "\f15a";
@fa-var-black-tie: "\f27e";
@fa-var-blind: "\f29d";
@fa-var-bluetooth: "\f293";
@fa-var-bluetooth-b: "\f294";
@fa-var-bold: "\f032";
@fa-var-bolt: "\f0e7";
@fa-var-bomb: "\f1e2";
@fa-var-book: "\f02d";
@fa-var-bookmark: "\f02e";
@fa-var-bookmark-o: "\f097";
@fa-var-braille: "\f2a1";
@fa-var-briefcase: "\f0b1";
@fa-var-btc: "\f15a";
@fa-var-bug: "\f188";
@@ -83,10 +108,15 @@
@fa-var-bullhorn: "\f0a1";
@fa-var-bullseye: "\f140";
@fa-var-bus: "\f207";
@fa-var-buysellads: "\f20d";
@fa-var-cab: "\f1ba";
@fa-var-calculator: "\f1ec";
@fa-var-calendar: "\f073";
@fa-var-calendar-check-o: "\f274";
@fa-var-calendar-minus-o: "\f272";
@fa-var-calendar-o: "\f133";
@fa-var-calendar-plus-o: "\f271";
@fa-var-calendar-times-o: "\f273";
@fa-var-camera: "\f030";
@fa-var-camera-retro: "\f083";
@fa-var-car: "\f1b9";
@@ -98,9 +128,13 @@
@fa-var-caret-square-o-right: "\f152";
@fa-var-caret-square-o-up: "\f151";
@fa-var-caret-up: "\f0d8";
@fa-var-cart-arrow-down: "\f218";
@fa-var-cart-plus: "\f217";
@fa-var-cc: "\f20a";
@fa-var-cc-amex: "\f1f3";
@fa-var-cc-diners-club: "\f24c";
@fa-var-cc-discover: "\f1f2";
@fa-var-cc-jcb: "\f24b";
@fa-var-cc-mastercard: "\f1f1";
@fa-var-cc-paypal: "\f1f4";
@fa-var-cc-stripe: "\f1f5";
@@ -122,12 +156,14 @@
@fa-var-chevron-right: "\f054";
@fa-var-chevron-up: "\f077";
@fa-var-child: "\f1ae";
@fa-var-chrome: "\f268";
@fa-var-circle: "\f111";
@fa-var-circle-o: "\f10c";
@fa-var-circle-o-notch: "\f1ce";
@fa-var-circle-thin: "\f1db";
@fa-var-clipboard: "\f0ea";
@fa-var-clock-o: "\f017";
@fa-var-clone: "\f24d";
@fa-var-close: "\f00d";
@fa-var-cloud: "\f0c2";
@fa-var-cloud-download: "\f0ed";
@@ -136,19 +172,26 @@
@fa-var-code: "\f121";
@fa-var-code-fork: "\f126";
@fa-var-codepen: "\f1cb";
@fa-var-codiepie: "\f284";
@fa-var-coffee: "\f0f4";
@fa-var-cog: "\f013";
@fa-var-cogs: "\f085";
@fa-var-columns: "\f0db";
@fa-var-comment: "\f075";
@fa-var-comment-o: "\f0e5";
@fa-var-commenting: "\f27a";
@fa-var-commenting-o: "\f27b";
@fa-var-comments: "\f086";
@fa-var-comments-o: "\f0e6";
@fa-var-compass: "\f14e";
@fa-var-compress: "\f066";
@fa-var-connectdevelop: "\f20e";
@fa-var-contao: "\f26d";
@fa-var-copy: "\f0c5";
@fa-var-copyright: "\f1f9";
@fa-var-creative-commons: "\f25e";
@fa-var-credit-card: "\f09d";
@fa-var-credit-card-alt: "\f283";
@fa-var-crop: "\f125";
@fa-var-crosshairs: "\f05b";
@fa-var-css3: "\f13c";
@@ -157,11 +200,15 @@
@fa-var-cut: "\f0c4";
@fa-var-cutlery: "\f0f5";
@fa-var-dashboard: "\f0e4";
@fa-var-dashcube: "\f210";
@fa-var-database: "\f1c0";
@fa-var-deaf: "\f2a4";
@fa-var-deafness: "\f2a4";
@fa-var-dedent: "\f03b";
@fa-var-delicious: "\f1a5";
@fa-var-desktop: "\f108";
@fa-var-deviantart: "\f1bd";
@fa-var-diamond: "\f219";
@fa-var-digg: "\f1a6";
@fa-var-dollar: "\f155";
@fa-var-dot-circle-o: "\f192";
@@ -169,6 +216,7 @@
@fa-var-dribbble: "\f17d";
@fa-var-dropbox: "\f16b";
@fa-var-drupal: "\f1a9";
@fa-var-edge: "\f282";
@fa-var-edit: "\f044";
@fa-var-eject: "\f052";
@fa-var-ellipsis-h: "\f141";
@@ -177,6 +225,7 @@
@fa-var-envelope: "\f0e0";
@fa-var-envelope-o: "\f003";
@fa-var-envelope-square: "\f199";
@fa-var-envira: "\f299";
@fa-var-eraser: "\f12d";
@fa-var-eur: "\f153";
@fa-var-euro: "\f153";
@@ -185,16 +234,21 @@
@fa-var-exclamation-circle: "\f06a";
@fa-var-exclamation-triangle: "\f071";
@fa-var-expand: "\f065";
@fa-var-expeditedssl: "\f23e";
@fa-var-external-link: "\f08e";
@fa-var-external-link-square: "\f14c";
@fa-var-eye: "\f06e";
@fa-var-eye-slash: "\f070";
@fa-var-eyedropper: "\f1fb";
@fa-var-fa: "\f2b4";
@fa-var-facebook: "\f09a";
@fa-var-facebook-f: "\f09a";
@fa-var-facebook-official: "\f230";
@fa-var-facebook-square: "\f082";
@fa-var-fast-backward: "\f049";
@fa-var-fast-forward: "\f050";
@fa-var-fax: "\f1ac";
@fa-var-feed: "\f09e";
@fa-var-female: "\f182";
@fa-var-fighter-jet: "\f0fb";
@fa-var-file: "\f15b";
@@ -220,6 +274,8 @@
@fa-var-filter: "\f0b0";
@fa-var-fire: "\f06d";
@fa-var-fire-extinguisher: "\f134";
@fa-var-firefox: "\f269";
@fa-var-first-order: "\f2b0";
@fa-var-flag: "\f024";
@fa-var-flag-checkered: "\f11e";
@fa-var-flag-o: "\f11d";
@@ -232,6 +288,10 @@
@fa-var-folder-open: "\f07c";
@fa-var-folder-open-o: "\f115";
@fa-var-font: "\f031";
@fa-var-font-awesome: "\f2b4";
@fa-var-fonticons: "\f280";
@fa-var-fort-awesome: "\f286";
@fa-var-forumbee: "\f211";
@fa-var-forward: "\f04e";
@fa-var-foursquare: "\f180";
@fa-var-frown-o: "\f119";
@@ -242,45 +302,81 @@
@fa-var-ge: "\f1d1";
@fa-var-gear: "\f013";
@fa-var-gears: "\f085";
@fa-var-genderless: "\f22d";
@fa-var-get-pocket: "\f265";
@fa-var-gg: "\f260";
@fa-var-gg-circle: "\f261";
@fa-var-gift: "\f06b";
@fa-var-git: "\f1d3";
@fa-var-git-square: "\f1d2";
@fa-var-github: "\f09b";
@fa-var-github-alt: "\f113";
@fa-var-github-square: "\f092";
@fa-var-gitlab: "\f296";
@fa-var-gittip: "\f184";
@fa-var-glass: "\f000";
@fa-var-glide: "\f2a5";
@fa-var-glide-g: "\f2a6";
@fa-var-globe: "\f0ac";
@fa-var-google: "\f1a0";
@fa-var-google-plus: "\f0d5";
@fa-var-google-plus-circle: "\f2b3";
@fa-var-google-plus-official: "\f2b3";
@fa-var-google-plus-square: "\f0d4";
@fa-var-google-wallet: "\f1ee";
@fa-var-graduation-cap: "\f19d";
@fa-var-gratipay: "\f184";
@fa-var-group: "\f0c0";
@fa-var-h-square: "\f0fd";
@fa-var-hacker-news: "\f1d4";
@fa-var-hand-grab-o: "\f255";
@fa-var-hand-lizard-o: "\f258";
@fa-var-hand-o-down: "\f0a7";
@fa-var-hand-o-left: "\f0a5";
@fa-var-hand-o-right: "\f0a4";
@fa-var-hand-o-up: "\f0a6";
@fa-var-hand-paper-o: "\f256";
@fa-var-hand-peace-o: "\f25b";
@fa-var-hand-pointer-o: "\f25a";
@fa-var-hand-rock-o: "\f255";
@fa-var-hand-scissors-o: "\f257";
@fa-var-hand-spock-o: "\f259";
@fa-var-hand-stop-o: "\f256";
@fa-var-hard-of-hearing: "\f2a4";
@fa-var-hashtag: "\f292";
@fa-var-hdd-o: "\f0a0";
@fa-var-header: "\f1dc";
@fa-var-headphones: "\f025";
@fa-var-heart: "\f004";
@fa-var-heart-o: "\f08a";
@fa-var-heartbeat: "\f21e";
@fa-var-history: "\f1da";
@fa-var-home: "\f015";
@fa-var-hospital-o: "\f0f8";
@fa-var-hotel: "\f236";
@fa-var-hourglass: "\f254";
@fa-var-hourglass-1: "\f251";
@fa-var-hourglass-2: "\f252";
@fa-var-hourglass-3: "\f253";
@fa-var-hourglass-end: "\f253";
@fa-var-hourglass-half: "\f252";
@fa-var-hourglass-o: "\f250";
@fa-var-hourglass-start: "\f251";
@fa-var-houzz: "\f27c";
@fa-var-html5: "\f13b";
@fa-var-i-cursor: "\f246";
@fa-var-ils: "\f20b";
@fa-var-image: "\f03e";
@fa-var-inbox: "\f01c";
@fa-var-indent: "\f03c";
@fa-var-industry: "\f275";
@fa-var-info: "\f129";
@fa-var-info-circle: "\f05a";
@fa-var-inr: "\f156";
@fa-var-instagram: "\f16d";
@fa-var-institution: "\f19c";
@fa-var-internet-explorer: "\f26b";
@fa-var-intersex: "\f224";
@fa-var-ioxhost: "\f208";
@fa-var-italic: "\f033";
@fa-var-joomla: "\f1aa";
@@ -294,6 +390,7 @@
@fa-var-lastfm: "\f202";
@fa-var-lastfm-square: "\f203";
@fa-var-leaf: "\f06c";
@fa-var-leanpub: "\f212";
@fa-var-legal: "\f0e3";
@fa-var-lemon-o: "\f094";
@fa-var-level-down: "\f149";
@@ -318,32 +415,56 @@
@fa-var-long-arrow-left: "\f177";
@fa-var-long-arrow-right: "\f178";
@fa-var-long-arrow-up: "\f176";
@fa-var-low-vision: "\f2a8";
@fa-var-magic: "\f0d0";
@fa-var-magnet: "\f076";
@fa-var-mail-forward: "\f064";
@fa-var-mail-reply: "\f112";
@fa-var-mail-reply-all: "\f122";
@fa-var-male: "\f183";
@fa-var-map: "\f279";
@fa-var-map-marker: "\f041";
@fa-var-map-o: "\f278";
@fa-var-map-pin: "\f276";
@fa-var-map-signs: "\f277";
@fa-var-mars: "\f222";
@fa-var-mars-double: "\f227";
@fa-var-mars-stroke: "\f229";
@fa-var-mars-stroke-h: "\f22b";
@fa-var-mars-stroke-v: "\f22a";
@fa-var-maxcdn: "\f136";
@fa-var-meanpath: "\f20c";
@fa-var-medium: "\f23a";
@fa-var-medkit: "\f0fa";
@fa-var-meh-o: "\f11a";
@fa-var-mercury: "\f223";
@fa-var-microphone: "\f130";
@fa-var-microphone-slash: "\f131";
@fa-var-minus: "\f068";
@fa-var-minus-circle: "\f056";
@fa-var-minus-square: "\f146";
@fa-var-minus-square-o: "\f147";
@fa-var-mixcloud: "\f289";
@fa-var-mobile: "\f10b";
@fa-var-mobile-phone: "\f10b";
@fa-var-modx: "\f285";
@fa-var-money: "\f0d6";
@fa-var-moon-o: "\f186";
@fa-var-mortar-board: "\f19d";
@fa-var-motorcycle: "\f21c";
@fa-var-mouse-pointer: "\f245";
@fa-var-music: "\f001";
@fa-var-navicon: "\f0c9";
@fa-var-neuter: "\f22c";
@fa-var-newspaper-o: "\f1ea";
@fa-var-object-group: "\f247";
@fa-var-object-ungroup: "\f248";
@fa-var-odnoklassniki: "\f263";
@fa-var-odnoklassniki-square: "\f264";
@fa-var-opencart: "\f23d";
@fa-var-openid: "\f19b";
@fa-var-opera: "\f26a";
@fa-var-optin-monster: "\f23c";
@fa-var-outdent: "\f03b";
@fa-var-pagelines: "\f18c";
@fa-var-paint-brush: "\f1fc";
@@ -353,19 +474,24 @@
@fa-var-paragraph: "\f1dd";
@fa-var-paste: "\f0ea";
@fa-var-pause: "\f04c";
@fa-var-pause-circle: "\f28b";
@fa-var-pause-circle-o: "\f28c";
@fa-var-paw: "\f1b0";
@fa-var-paypal: "\f1ed";
@fa-var-pencil: "\f040";
@fa-var-pencil-square: "\f14b";
@fa-var-pencil-square-o: "\f044";
@fa-var-percent: "\f295";
@fa-var-phone: "\f095";
@fa-var-phone-square: "\f098";
@fa-var-photo: "\f03e";
@fa-var-picture-o: "\f03e";
@fa-var-pie-chart: "\f200";
@fa-var-pied-piper: "\f1a7";
@fa-var-pied-piper: "\f2ae";
@fa-var-pied-piper-alt: "\f1a8";
@fa-var-pied-piper-pp: "\f1a7";
@fa-var-pinterest: "\f0d2";
@fa-var-pinterest-p: "\f231";
@fa-var-pinterest-square: "\f0d3";
@fa-var-plane: "\f072";
@fa-var-play: "\f04b";
@@ -378,11 +504,13 @@
@fa-var-plus-square-o: "\f196";
@fa-var-power-off: "\f011";
@fa-var-print: "\f02f";
@fa-var-product-hunt: "\f288";
@fa-var-puzzle-piece: "\f12e";
@fa-var-qq: "\f1d6";
@fa-var-qrcode: "\f029";
@fa-var-question: "\f128";
@fa-var-question-circle: "\f059";
@fa-var-question-circle-o: "\f29c";
@fa-var-quote-left: "\f10d";
@fa-var-quote-right: "\f10e";
@fa-var-ra: "\f1d0";
@@ -390,14 +518,17 @@
@fa-var-rebel: "\f1d0";
@fa-var-recycle: "\f1b8";
@fa-var-reddit: "\f1a1";
@fa-var-reddit-alien: "\f281";
@fa-var-reddit-square: "\f1a2";
@fa-var-refresh: "\f021";
@fa-var-registered: "\f25d";
@fa-var-remove: "\f00d";
@fa-var-renren: "\f18b";
@fa-var-reorder: "\f0c9";
@fa-var-repeat: "\f01e";
@fa-var-reply: "\f112";
@fa-var-reply-all: "\f122";
@fa-var-resistance: "\f1d0";
@fa-var-retweet: "\f079";
@fa-var-rmb: "\f157";
@fa-var-road: "\f018";
@@ -410,13 +541,17 @@
@fa-var-rub: "\f158";
@fa-var-ruble: "\f158";
@fa-var-rupee: "\f156";
@fa-var-safari: "\f267";
@fa-var-save: "\f0c7";
@fa-var-scissors: "\f0c4";
@fa-var-scribd: "\f28a";
@fa-var-search: "\f002";
@fa-var-search-minus: "\f010";
@fa-var-search-plus: "\f00e";
@fa-var-sellsy: "\f213";
@fa-var-send: "\f1d8";
@fa-var-send-o: "\f1d9";
@fa-var-server: "\f233";
@fa-var-share: "\f064";
@fa-var-share-alt: "\f1e0";
@fa-var-share-alt-square: "\f1e1";
@@ -425,16 +560,27 @@
@fa-var-shekel: "\f20b";
@fa-var-sheqel: "\f20b";
@fa-var-shield: "\f132";
@fa-var-ship: "\f21a";
@fa-var-shirtsinbulk: "\f214";
@fa-var-shopping-bag: "\f290";
@fa-var-shopping-basket: "\f291";
@fa-var-shopping-cart: "\f07a";
@fa-var-sign-in: "\f090";
@fa-var-sign-language: "\f2a7";
@fa-var-sign-out: "\f08b";
@fa-var-signal: "\f012";
@fa-var-signing: "\f2a7";
@fa-var-simplybuilt: "\f215";
@fa-var-sitemap: "\f0e8";
@fa-var-skyatlas: "\f216";
@fa-var-skype: "\f17e";
@fa-var-slack: "\f198";
@fa-var-sliders: "\f1de";
@fa-var-slideshare: "\f1e7";
@fa-var-smile-o: "\f118";
@fa-var-snapchat: "\f2ab";
@fa-var-snapchat-ghost: "\f2ac";
@fa-var-snapchat-square: "\f2ad";
@fa-var-soccer-ball-o: "\f1e3";
@fa-var-sort: "\f0dc";
@fa-var-sort-alpha-asc: "\f15d";
@@ -467,11 +613,17 @@
@fa-var-step-backward: "\f048";
@fa-var-step-forward: "\f051";
@fa-var-stethoscope: "\f0f1";
@fa-var-sticky-note: "\f249";
@fa-var-sticky-note-o: "\f24a";
@fa-var-stop: "\f04d";
@fa-var-stop-circle: "\f28d";
@fa-var-stop-circle-o: "\f28e";
@fa-var-street-view: "\f21d";
@fa-var-strikethrough: "\f0cc";
@fa-var-stumbleupon: "\f1a4";
@fa-var-stumbleupon-circle: "\f1a3";
@fa-var-subscript: "\f12c";
@fa-var-subway: "\f239";
@fa-var-suitcase: "\f0f2";
@fa-var-sun-o: "\f185";
@fa-var-superscript: "\f12b";
@@ -483,6 +635,7 @@
@fa-var-tags: "\f02c";
@fa-var-tasks: "\f0ae";
@fa-var-taxi: "\f1ba";
@fa-var-television: "\f26c";
@fa-var-tencent-weibo: "\f1d5";
@fa-var-terminal: "\f120";
@fa-var-text-height: "\f034";
@@ -490,6 +643,7 @@
@fa-var-th: "\f00a";
@fa-var-th-large: "\f009";
@fa-var-th-list: "\f00b";
@fa-var-themeisle: "\f2b2";
@fa-var-thumb-tack: "\f08d";
@fa-var-thumbs-down: "\f165";
@fa-var-thumbs-o-down: "\f088";
@@ -506,10 +660,15 @@
@fa-var-toggle-on: "\f205";
@fa-var-toggle-right: "\f152";
@fa-var-toggle-up: "\f151";
@fa-var-trademark: "\f25c";
@fa-var-train: "\f238";
@fa-var-transgender: "\f224";
@fa-var-transgender-alt: "\f225";
@fa-var-trash: "\f1f8";
@fa-var-trash-o: "\f014";
@fa-var-tree: "\f1bb";
@fa-var-trello: "\f181";
@fa-var-tripadvisor: "\f262";
@fa-var-trophy: "\f091";
@fa-var-truck: "\f0d1";
@fa-var-try: "\f195";
@@ -517,26 +676,40 @@
@fa-var-tumblr: "\f173";
@fa-var-tumblr-square: "\f174";
@fa-var-turkish-lira: "\f195";
@fa-var-tv: "\f26c";
@fa-var-twitch: "\f1e8";
@fa-var-twitter: "\f099";
@fa-var-twitter-square: "\f081";
@fa-var-umbrella: "\f0e9";
@fa-var-underline: "\f0cd";
@fa-var-undo: "\f0e2";
@fa-var-universal-access: "\f29a";
@fa-var-university: "\f19c";
@fa-var-unlink: "\f127";
@fa-var-unlock: "\f09c";
@fa-var-unlock-alt: "\f13e";
@fa-var-unsorted: "\f0dc";
@fa-var-upload: "\f093";
@fa-var-usb: "\f287";
@fa-var-usd: "\f155";
@fa-var-user: "\f007";
@fa-var-user-md: "\f0f0";
@fa-var-user-plus: "\f234";
@fa-var-user-secret: "\f21b";
@fa-var-user-times: "\f235";
@fa-var-users: "\f0c0";
@fa-var-venus: "\f221";
@fa-var-venus-double: "\f226";
@fa-var-venus-mars: "\f228";
@fa-var-viacoin: "\f237";
@fa-var-viadeo: "\f2a9";
@fa-var-viadeo-square: "\f2aa";
@fa-var-video-camera: "\f03d";
@fa-var-vimeo: "\f27d";
@fa-var-vimeo-square: "\f194";
@fa-var-vine: "\f1ca";
@fa-var-vk: "\f189";
@fa-var-volume-control-phone: "\f2a0";
@fa-var-volume-down: "\f027";
@fa-var-volume-off: "\f026";
@fa-var-volume-up: "\f028";
@@ -544,17 +717,27 @@
@fa-var-wechat: "\f1d7";
@fa-var-weibo: "\f18a";
@fa-var-weixin: "\f1d7";
@fa-var-whatsapp: "\f232";
@fa-var-wheelchair: "\f193";
@fa-var-wheelchair-alt: "\f29b";
@fa-var-wifi: "\f1eb";
@fa-var-wikipedia-w: "\f266";
@fa-var-windows: "\f17a";
@fa-var-won: "\f159";
@fa-var-wordpress: "\f19a";
@fa-var-wpbeginner: "\f297";
@fa-var-wpforms: "\f298";
@fa-var-wrench: "\f0ad";
@fa-var-xing: "\f168";
@fa-var-xing-square: "\f169";
@fa-var-y-combinator: "\f23b";
@fa-var-y-combinator-square: "\f1d4";
@fa-var-yahoo: "\f19e";
@fa-var-yc: "\f23b";
@fa-var-yc-square: "\f1d4";
@fa-var-yelp: "\f1e9";
@fa-var-yen: "\f157";
@fa-var-yoast: "\f2b1";
@fa-var-youtube: "\f167";
@fa-var-youtube-play: "\f16a";
@fa-var-youtube-square: "\f166";

View File

@@ -0,0 +1,34 @@
// Spinning Icons
// --------------------------
.#{$fa-css-prefix}-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
.#{$fa-css-prefix}-pulse {
-webkit-animation: fa-spin 1s infinite steps(8);
animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}

View File

@@ -7,6 +7,15 @@
border-radius: .1em;
}
.#{$fa-css-prefix}-pull-left { float: left; }
.#{$fa-css-prefix}-pull-right { float: right; }
.#{$fa-css-prefix} {
&.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
&.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
}
/* Deprecated as of 4.4.0 */
.pull-right { float: right; }
.pull-left { float: left; }

View File

@@ -3,9 +3,10 @@
.#{$fa-css-prefix} {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

View File

@@ -158,10 +158,12 @@
.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
.#{$fa-css-prefix}-facebook-f:before,
.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
.#{$fa-css-prefix}-feed:before,
.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
@@ -397,7 +399,8 @@
.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; }
.#{$fa-css-prefix}-gittip:before,
.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
@@ -435,7 +438,7 @@
.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; }
.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
@@ -485,11 +488,14 @@
.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
.#{$fa-css-prefix}-ra:before,
.#{$fa-css-prefix}-resistance:before,
.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
.#{$fa-css-prefix}-ge:before,
.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
.#{$fa-css-prefix}-y-combinator-square:before,
.#{$fa-css-prefix}-yc-square:before,
.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
@@ -550,3 +556,178 @@
.#{$fa-css-prefix}-sheqel:before,
.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
.#{$fa-css-prefix}-intersex:before,
.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
.#{$fa-css-prefix}-hotel:before,
.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
.#{$fa-css-prefix}-yc:before,
.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
.#{$fa-css-prefix}-battery-4:before,
.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
.#{$fa-css-prefix}-battery-3:before,
.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
.#{$fa-css-prefix}-battery-2:before,
.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
.#{$fa-css-prefix}-battery-1:before,
.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
.#{$fa-css-prefix}-battery-0:before,
.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
.#{$fa-css-prefix}-hourglass-1:before,
.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
.#{$fa-css-prefix}-hourglass-2:before,
.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
.#{$fa-css-prefix}-hourglass-3:before,
.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
.#{$fa-css-prefix}-hand-grab-o:before,
.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
.#{$fa-css-prefix}-hand-stop-o:before,
.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
.#{$fa-css-prefix}-tv:before,
.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; }
.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; }
.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; }
.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; }
.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; }
.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; }
.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; }
.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; }
.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; }
.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; }
.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; }
.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; }
.#{$fa-css-prefix}-asl-interpreting:before,
.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; }
.#{$fa-css-prefix}-deafness:before,
.#{$fa-css-prefix}-hard-of-hearing:before,
.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; }
.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; }
.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; }
.#{$fa-css-prefix}-signing:before,
.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; }
.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; }
.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; }
.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; }
.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; }
.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; }
.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; }
.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; }
.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; }
.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; }
.#{$fa-css-prefix}-google-plus-circle:before,
.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; }
.#{$fa-css-prefix}-fa:before,
.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; }

View File

@@ -3,23 +3,58 @@
@mixin fa-icon() {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
font-size: inherit; // can't have font-size inherit on line above, so need to override
text-rendering: auto; // optimizelegibility throws things off #1094
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
@mixin fa-icon-rotate($degrees, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
-webkit-transform: rotate($degrees);
-ms-transform: rotate($degrees);
transform: rotate($degrees);
}
@mixin fa-icon-flip($horiz, $vert, $rotation) {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
-webkit-transform: scale($horiz, $vert);
-ms-transform: scale($horiz, $vert);
transform: scale($horiz, $vert);
}
// Only display content to screen readers. A la Bootstrap 4.
//
// See: http://a11yproject.com/posts/how-to-hide-content/
@mixin sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
border: 0;
}
// Use in conjunction with .sr-only to only display content when it's focused.
//
// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
//
// Credit: HTML5 Boilerplate
@mixin sr-only-focusable {
&:active,
&:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
}

View File

@@ -5,10 +5,11 @@
font-family: 'FontAwesome';
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
//src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
font-weight: normal;
font-style: normal;
}

View File

@@ -0,0 +1,5 @@
// Screen Readers
// -------------------------
.sr-only { @include sr-only(); }
.sr-only-focusable { @include sr-only-focusable(); }

View File

@@ -2,20 +2,25 @@
// --------------------------
$fa-font-path: "../fonts" !default;
//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts" !default; // for referencing Bootstrap CDN font files directly
$fa-font-size-base: 14px !default;
$fa-line-height-base: 1 !default;
//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly
$fa-css-prefix: fa !default;
$fa-version: "4.2.0" !default;
$fa-version: "4.6.3" !default;
$fa-border-color: #eee !default;
$fa-inverse: #fff !default;
$fa-li-width: (30em / 14) !default;
$fa-var-500px: "\f26e";
$fa-var-adjust: "\f042";
$fa-var-adn: "\f170";
$fa-var-align-center: "\f037";
$fa-var-align-justify: "\f039";
$fa-var-align-left: "\f036";
$fa-var-align-right: "\f038";
$fa-var-amazon: "\f270";
$fa-var-ambulance: "\f0f9";
$fa-var-american-sign-language-interpreting: "\f2a3";
$fa-var-anchor: "\f13d";
$fa-var-android: "\f17b";
$fa-var-angellist: "\f209";
@@ -46,16 +51,31 @@ $fa-var-arrows: "\f047";
$fa-var-arrows-alt: "\f0b2";
$fa-var-arrows-h: "\f07e";
$fa-var-arrows-v: "\f07d";
$fa-var-asl-interpreting: "\f2a3";
$fa-var-assistive-listening-systems: "\f2a2";
$fa-var-asterisk: "\f069";
$fa-var-at: "\f1fa";
$fa-var-audio-description: "\f29e";
$fa-var-automobile: "\f1b9";
$fa-var-backward: "\f04a";
$fa-var-balance-scale: "\f24e";
$fa-var-ban: "\f05e";
$fa-var-bank: "\f19c";
$fa-var-bar-chart: "\f080";
$fa-var-bar-chart-o: "\f080";
$fa-var-barcode: "\f02a";
$fa-var-bars: "\f0c9";
$fa-var-battery-0: "\f244";
$fa-var-battery-1: "\f243";
$fa-var-battery-2: "\f242";
$fa-var-battery-3: "\f241";
$fa-var-battery-4: "\f240";
$fa-var-battery-empty: "\f244";
$fa-var-battery-full: "\f240";
$fa-var-battery-half: "\f242";
$fa-var-battery-quarter: "\f243";
$fa-var-battery-three-quarters: "\f241";
$fa-var-bed: "\f236";
$fa-var-beer: "\f0fc";
$fa-var-behance: "\f1b4";
$fa-var-behance-square: "\f1b5";
@@ -69,12 +89,17 @@ $fa-var-birthday-cake: "\f1fd";
$fa-var-bitbucket: "\f171";
$fa-var-bitbucket-square: "\f172";
$fa-var-bitcoin: "\f15a";
$fa-var-black-tie: "\f27e";
$fa-var-blind: "\f29d";
$fa-var-bluetooth: "\f293";
$fa-var-bluetooth-b: "\f294";
$fa-var-bold: "\f032";
$fa-var-bolt: "\f0e7";
$fa-var-bomb: "\f1e2";
$fa-var-book: "\f02d";
$fa-var-bookmark: "\f02e";
$fa-var-bookmark-o: "\f097";
$fa-var-braille: "\f2a1";
$fa-var-briefcase: "\f0b1";
$fa-var-btc: "\f15a";
$fa-var-bug: "\f188";
@@ -83,10 +108,15 @@ $fa-var-building-o: "\f0f7";
$fa-var-bullhorn: "\f0a1";
$fa-var-bullseye: "\f140";
$fa-var-bus: "\f207";
$fa-var-buysellads: "\f20d";
$fa-var-cab: "\f1ba";
$fa-var-calculator: "\f1ec";
$fa-var-calendar: "\f073";
$fa-var-calendar-check-o: "\f274";
$fa-var-calendar-minus-o: "\f272";
$fa-var-calendar-o: "\f133";
$fa-var-calendar-plus-o: "\f271";
$fa-var-calendar-times-o: "\f273";
$fa-var-camera: "\f030";
$fa-var-camera-retro: "\f083";
$fa-var-car: "\f1b9";
@@ -98,9 +128,13 @@ $fa-var-caret-square-o-left: "\f191";
$fa-var-caret-square-o-right: "\f152";
$fa-var-caret-square-o-up: "\f151";
$fa-var-caret-up: "\f0d8";
$fa-var-cart-arrow-down: "\f218";
$fa-var-cart-plus: "\f217";
$fa-var-cc: "\f20a";
$fa-var-cc-amex: "\f1f3";
$fa-var-cc-diners-club: "\f24c";
$fa-var-cc-discover: "\f1f2";
$fa-var-cc-jcb: "\f24b";
$fa-var-cc-mastercard: "\f1f1";
$fa-var-cc-paypal: "\f1f4";
$fa-var-cc-stripe: "\f1f5";
@@ -122,12 +156,14 @@ $fa-var-chevron-left: "\f053";
$fa-var-chevron-right: "\f054";
$fa-var-chevron-up: "\f077";
$fa-var-child: "\f1ae";
$fa-var-chrome: "\f268";
$fa-var-circle: "\f111";
$fa-var-circle-o: "\f10c";
$fa-var-circle-o-notch: "\f1ce";
$fa-var-circle-thin: "\f1db";
$fa-var-clipboard: "\f0ea";
$fa-var-clock-o: "\f017";
$fa-var-clone: "\f24d";
$fa-var-close: "\f00d";
$fa-var-cloud: "\f0c2";
$fa-var-cloud-download: "\f0ed";
@@ -136,19 +172,26 @@ $fa-var-cny: "\f157";
$fa-var-code: "\f121";
$fa-var-code-fork: "\f126";
$fa-var-codepen: "\f1cb";
$fa-var-codiepie: "\f284";
$fa-var-coffee: "\f0f4";
$fa-var-cog: "\f013";
$fa-var-cogs: "\f085";
$fa-var-columns: "\f0db";
$fa-var-comment: "\f075";
$fa-var-comment-o: "\f0e5";
$fa-var-commenting: "\f27a";
$fa-var-commenting-o: "\f27b";
$fa-var-comments: "\f086";
$fa-var-comments-o: "\f0e6";
$fa-var-compass: "\f14e";
$fa-var-compress: "\f066";
$fa-var-connectdevelop: "\f20e";
$fa-var-contao: "\f26d";
$fa-var-copy: "\f0c5";
$fa-var-copyright: "\f1f9";
$fa-var-creative-commons: "\f25e";
$fa-var-credit-card: "\f09d";
$fa-var-credit-card-alt: "\f283";
$fa-var-crop: "\f125";
$fa-var-crosshairs: "\f05b";
$fa-var-css3: "\f13c";
@@ -157,11 +200,15 @@ $fa-var-cubes: "\f1b3";
$fa-var-cut: "\f0c4";
$fa-var-cutlery: "\f0f5";
$fa-var-dashboard: "\f0e4";
$fa-var-dashcube: "\f210";
$fa-var-database: "\f1c0";
$fa-var-deaf: "\f2a4";
$fa-var-deafness: "\f2a4";
$fa-var-dedent: "\f03b";
$fa-var-delicious: "\f1a5";
$fa-var-desktop: "\f108";
$fa-var-deviantart: "\f1bd";
$fa-var-diamond: "\f219";
$fa-var-digg: "\f1a6";
$fa-var-dollar: "\f155";
$fa-var-dot-circle-o: "\f192";
@@ -169,6 +216,7 @@ $fa-var-download: "\f019";
$fa-var-dribbble: "\f17d";
$fa-var-dropbox: "\f16b";
$fa-var-drupal: "\f1a9";
$fa-var-edge: "\f282";
$fa-var-edit: "\f044";
$fa-var-eject: "\f052";
$fa-var-ellipsis-h: "\f141";
@@ -177,6 +225,7 @@ $fa-var-empire: "\f1d1";
$fa-var-envelope: "\f0e0";
$fa-var-envelope-o: "\f003";
$fa-var-envelope-square: "\f199";
$fa-var-envira: "\f299";
$fa-var-eraser: "\f12d";
$fa-var-eur: "\f153";
$fa-var-euro: "\f153";
@@ -185,16 +234,21 @@ $fa-var-exclamation: "\f12a";
$fa-var-exclamation-circle: "\f06a";
$fa-var-exclamation-triangle: "\f071";
$fa-var-expand: "\f065";
$fa-var-expeditedssl: "\f23e";
$fa-var-external-link: "\f08e";
$fa-var-external-link-square: "\f14c";
$fa-var-eye: "\f06e";
$fa-var-eye-slash: "\f070";
$fa-var-eyedropper: "\f1fb";
$fa-var-fa: "\f2b4";
$fa-var-facebook: "\f09a";
$fa-var-facebook-f: "\f09a";
$fa-var-facebook-official: "\f230";
$fa-var-facebook-square: "\f082";
$fa-var-fast-backward: "\f049";
$fa-var-fast-forward: "\f050";
$fa-var-fax: "\f1ac";
$fa-var-feed: "\f09e";
$fa-var-female: "\f182";
$fa-var-fighter-jet: "\f0fb";
$fa-var-file: "\f15b";
@@ -220,6 +274,8 @@ $fa-var-film: "\f008";
$fa-var-filter: "\f0b0";
$fa-var-fire: "\f06d";
$fa-var-fire-extinguisher: "\f134";
$fa-var-firefox: "\f269";
$fa-var-first-order: "\f2b0";
$fa-var-flag: "\f024";
$fa-var-flag-checkered: "\f11e";
$fa-var-flag-o: "\f11d";
@@ -232,6 +288,10 @@ $fa-var-folder-o: "\f114";
$fa-var-folder-open: "\f07c";
$fa-var-folder-open-o: "\f115";
$fa-var-font: "\f031";
$fa-var-font-awesome: "\f2b4";
$fa-var-fonticons: "\f280";
$fa-var-fort-awesome: "\f286";
$fa-var-forumbee: "\f211";
$fa-var-forward: "\f04e";
$fa-var-foursquare: "\f180";
$fa-var-frown-o: "\f119";
@@ -242,45 +302,81 @@ $fa-var-gbp: "\f154";
$fa-var-ge: "\f1d1";
$fa-var-gear: "\f013";
$fa-var-gears: "\f085";
$fa-var-genderless: "\f22d";
$fa-var-get-pocket: "\f265";
$fa-var-gg: "\f260";
$fa-var-gg-circle: "\f261";
$fa-var-gift: "\f06b";
$fa-var-git: "\f1d3";
$fa-var-git-square: "\f1d2";
$fa-var-github: "\f09b";
$fa-var-github-alt: "\f113";
$fa-var-github-square: "\f092";
$fa-var-gitlab: "\f296";
$fa-var-gittip: "\f184";
$fa-var-glass: "\f000";
$fa-var-glide: "\f2a5";
$fa-var-glide-g: "\f2a6";
$fa-var-globe: "\f0ac";
$fa-var-google: "\f1a0";
$fa-var-google-plus: "\f0d5";
$fa-var-google-plus-circle: "\f2b3";
$fa-var-google-plus-official: "\f2b3";
$fa-var-google-plus-square: "\f0d4";
$fa-var-google-wallet: "\f1ee";
$fa-var-graduation-cap: "\f19d";
$fa-var-gratipay: "\f184";
$fa-var-group: "\f0c0";
$fa-var-h-square: "\f0fd";
$fa-var-hacker-news: "\f1d4";
$fa-var-hand-grab-o: "\f255";
$fa-var-hand-lizard-o: "\f258";
$fa-var-hand-o-down: "\f0a7";
$fa-var-hand-o-left: "\f0a5";
$fa-var-hand-o-right: "\f0a4";
$fa-var-hand-o-up: "\f0a6";
$fa-var-hand-paper-o: "\f256";
$fa-var-hand-peace-o: "\f25b";
$fa-var-hand-pointer-o: "\f25a";
$fa-var-hand-rock-o: "\f255";
$fa-var-hand-scissors-o: "\f257";
$fa-var-hand-spock-o: "\f259";
$fa-var-hand-stop-o: "\f256";
$fa-var-hard-of-hearing: "\f2a4";
$fa-var-hashtag: "\f292";
$fa-var-hdd-o: "\f0a0";
$fa-var-header: "\f1dc";
$fa-var-headphones: "\f025";
$fa-var-heart: "\f004";
$fa-var-heart-o: "\f08a";
$fa-var-heartbeat: "\f21e";
$fa-var-history: "\f1da";
$fa-var-home: "\f015";
$fa-var-hospital-o: "\f0f8";
$fa-var-hotel: "\f236";
$fa-var-hourglass: "\f254";
$fa-var-hourglass-1: "\f251";
$fa-var-hourglass-2: "\f252";
$fa-var-hourglass-3: "\f253";
$fa-var-hourglass-end: "\f253";
$fa-var-hourglass-half: "\f252";
$fa-var-hourglass-o: "\f250";
$fa-var-hourglass-start: "\f251";
$fa-var-houzz: "\f27c";
$fa-var-html5: "\f13b";
$fa-var-i-cursor: "\f246";
$fa-var-ils: "\f20b";
$fa-var-image: "\f03e";
$fa-var-inbox: "\f01c";
$fa-var-indent: "\f03c";
$fa-var-industry: "\f275";
$fa-var-info: "\f129";
$fa-var-info-circle: "\f05a";
$fa-var-inr: "\f156";
$fa-var-instagram: "\f16d";
$fa-var-institution: "\f19c";
$fa-var-internet-explorer: "\f26b";
$fa-var-intersex: "\f224";
$fa-var-ioxhost: "\f208";
$fa-var-italic: "\f033";
$fa-var-joomla: "\f1aa";
@@ -294,6 +390,7 @@ $fa-var-laptop: "\f109";
$fa-var-lastfm: "\f202";
$fa-var-lastfm-square: "\f203";
$fa-var-leaf: "\f06c";
$fa-var-leanpub: "\f212";
$fa-var-legal: "\f0e3";
$fa-var-lemon-o: "\f094";
$fa-var-level-down: "\f149";
@@ -318,32 +415,56 @@ $fa-var-long-arrow-down: "\f175";
$fa-var-long-arrow-left: "\f177";
$fa-var-long-arrow-right: "\f178";
$fa-var-long-arrow-up: "\f176";
$fa-var-low-vision: "\f2a8";
$fa-var-magic: "\f0d0";
$fa-var-magnet: "\f076";
$fa-var-mail-forward: "\f064";
$fa-var-mail-reply: "\f112";
$fa-var-mail-reply-all: "\f122";
$fa-var-male: "\f183";
$fa-var-map: "\f279";
$fa-var-map-marker: "\f041";
$fa-var-map-o: "\f278";
$fa-var-map-pin: "\f276";
$fa-var-map-signs: "\f277";
$fa-var-mars: "\f222";
$fa-var-mars-double: "\f227";
$fa-var-mars-stroke: "\f229";
$fa-var-mars-stroke-h: "\f22b";
$fa-var-mars-stroke-v: "\f22a";
$fa-var-maxcdn: "\f136";
$fa-var-meanpath: "\f20c";
$fa-var-medium: "\f23a";
$fa-var-medkit: "\f0fa";
$fa-var-meh-o: "\f11a";
$fa-var-mercury: "\f223";
$fa-var-microphone: "\f130";
$fa-var-microphone-slash: "\f131";
$fa-var-minus: "\f068";
$fa-var-minus-circle: "\f056";
$fa-var-minus-square: "\f146";
$fa-var-minus-square-o: "\f147";
$fa-var-mixcloud: "\f289";
$fa-var-mobile: "\f10b";
$fa-var-mobile-phone: "\f10b";
$fa-var-modx: "\f285";
$fa-var-money: "\f0d6";
$fa-var-moon-o: "\f186";
$fa-var-mortar-board: "\f19d";
$fa-var-motorcycle: "\f21c";
$fa-var-mouse-pointer: "\f245";
$fa-var-music: "\f001";
$fa-var-navicon: "\f0c9";
$fa-var-neuter: "\f22c";
$fa-var-newspaper-o: "\f1ea";
$fa-var-object-group: "\f247";
$fa-var-object-ungroup: "\f248";
$fa-var-odnoklassniki: "\f263";
$fa-var-odnoklassniki-square: "\f264";
$fa-var-opencart: "\f23d";
$fa-var-openid: "\f19b";
$fa-var-opera: "\f26a";
$fa-var-optin-monster: "\f23c";
$fa-var-outdent: "\f03b";
$fa-var-pagelines: "\f18c";
$fa-var-paint-brush: "\f1fc";
@@ -353,19 +474,24 @@ $fa-var-paperclip: "\f0c6";
$fa-var-paragraph: "\f1dd";
$fa-var-paste: "\f0ea";
$fa-var-pause: "\f04c";
$fa-var-pause-circle: "\f28b";
$fa-var-pause-circle-o: "\f28c";
$fa-var-paw: "\f1b0";
$fa-var-paypal: "\f1ed";
$fa-var-pencil: "\f040";
$fa-var-pencil-square: "\f14b";
$fa-var-pencil-square-o: "\f044";
$fa-var-percent: "\f295";
$fa-var-phone: "\f095";
$fa-var-phone-square: "\f098";
$fa-var-photo: "\f03e";
$fa-var-picture-o: "\f03e";
$fa-var-pie-chart: "\f200";
$fa-var-pied-piper: "\f1a7";
$fa-var-pied-piper: "\f2ae";
$fa-var-pied-piper-alt: "\f1a8";
$fa-var-pied-piper-pp: "\f1a7";
$fa-var-pinterest: "\f0d2";
$fa-var-pinterest-p: "\f231";
$fa-var-pinterest-square: "\f0d3";
$fa-var-plane: "\f072";
$fa-var-play: "\f04b";
@@ -378,11 +504,13 @@ $fa-var-plus-square: "\f0fe";
$fa-var-plus-square-o: "\f196";
$fa-var-power-off: "\f011";
$fa-var-print: "\f02f";
$fa-var-product-hunt: "\f288";
$fa-var-puzzle-piece: "\f12e";
$fa-var-qq: "\f1d6";
$fa-var-qrcode: "\f029";
$fa-var-question: "\f128";
$fa-var-question-circle: "\f059";
$fa-var-question-circle-o: "\f29c";
$fa-var-quote-left: "\f10d";
$fa-var-quote-right: "\f10e";
$fa-var-ra: "\f1d0";
@@ -390,14 +518,17 @@ $fa-var-random: "\f074";
$fa-var-rebel: "\f1d0";
$fa-var-recycle: "\f1b8";
$fa-var-reddit: "\f1a1";
$fa-var-reddit-alien: "\f281";
$fa-var-reddit-square: "\f1a2";
$fa-var-refresh: "\f021";
$fa-var-registered: "\f25d";
$fa-var-remove: "\f00d";
$fa-var-renren: "\f18b";
$fa-var-reorder: "\f0c9";
$fa-var-repeat: "\f01e";
$fa-var-reply: "\f112";
$fa-var-reply-all: "\f122";
$fa-var-resistance: "\f1d0";
$fa-var-retweet: "\f079";
$fa-var-rmb: "\f157";
$fa-var-road: "\f018";
@@ -410,13 +541,17 @@ $fa-var-rss-square: "\f143";
$fa-var-rub: "\f158";
$fa-var-ruble: "\f158";
$fa-var-rupee: "\f156";
$fa-var-safari: "\f267";
$fa-var-save: "\f0c7";
$fa-var-scissors: "\f0c4";
$fa-var-scribd: "\f28a";
$fa-var-search: "\f002";
$fa-var-search-minus: "\f010";
$fa-var-search-plus: "\f00e";
$fa-var-sellsy: "\f213";
$fa-var-send: "\f1d8";
$fa-var-send-o: "\f1d9";
$fa-var-server: "\f233";
$fa-var-share: "\f064";
$fa-var-share-alt: "\f1e0";
$fa-var-share-alt-square: "\f1e1";
@@ -425,16 +560,27 @@ $fa-var-share-square-o: "\f045";
$fa-var-shekel: "\f20b";
$fa-var-sheqel: "\f20b";
$fa-var-shield: "\f132";
$fa-var-ship: "\f21a";
$fa-var-shirtsinbulk: "\f214";
$fa-var-shopping-bag: "\f290";
$fa-var-shopping-basket: "\f291";
$fa-var-shopping-cart: "\f07a";
$fa-var-sign-in: "\f090";
$fa-var-sign-language: "\f2a7";
$fa-var-sign-out: "\f08b";
$fa-var-signal: "\f012";
$fa-var-signing: "\f2a7";
$fa-var-simplybuilt: "\f215";
$fa-var-sitemap: "\f0e8";
$fa-var-skyatlas: "\f216";
$fa-var-skype: "\f17e";
$fa-var-slack: "\f198";
$fa-var-sliders: "\f1de";
$fa-var-slideshare: "\f1e7";
$fa-var-smile-o: "\f118";
$fa-var-snapchat: "\f2ab";
$fa-var-snapchat-ghost: "\f2ac";
$fa-var-snapchat-square: "\f2ad";
$fa-var-soccer-ball-o: "\f1e3";
$fa-var-sort: "\f0dc";
$fa-var-sort-alpha-asc: "\f15d";
@@ -467,11 +613,17 @@ $fa-var-steam-square: "\f1b7";
$fa-var-step-backward: "\f048";
$fa-var-step-forward: "\f051";
$fa-var-stethoscope: "\f0f1";
$fa-var-sticky-note: "\f249";
$fa-var-sticky-note-o: "\f24a";
$fa-var-stop: "\f04d";
$fa-var-stop-circle: "\f28d";
$fa-var-stop-circle-o: "\f28e";
$fa-var-street-view: "\f21d";
$fa-var-strikethrough: "\f0cc";
$fa-var-stumbleupon: "\f1a4";
$fa-var-stumbleupon-circle: "\f1a3";
$fa-var-subscript: "\f12c";
$fa-var-subway: "\f239";
$fa-var-suitcase: "\f0f2";
$fa-var-sun-o: "\f185";
$fa-var-superscript: "\f12b";
@@ -483,6 +635,7 @@ $fa-var-tag: "\f02b";
$fa-var-tags: "\f02c";
$fa-var-tasks: "\f0ae";
$fa-var-taxi: "\f1ba";
$fa-var-television: "\f26c";
$fa-var-tencent-weibo: "\f1d5";
$fa-var-terminal: "\f120";
$fa-var-text-height: "\f034";
@@ -490,6 +643,7 @@ $fa-var-text-width: "\f035";
$fa-var-th: "\f00a";
$fa-var-th-large: "\f009";
$fa-var-th-list: "\f00b";
$fa-var-themeisle: "\f2b2";
$fa-var-thumb-tack: "\f08d";
$fa-var-thumbs-down: "\f165";
$fa-var-thumbs-o-down: "\f088";
@@ -506,10 +660,15 @@ $fa-var-toggle-off: "\f204";
$fa-var-toggle-on: "\f205";
$fa-var-toggle-right: "\f152";
$fa-var-toggle-up: "\f151";
$fa-var-trademark: "\f25c";
$fa-var-train: "\f238";
$fa-var-transgender: "\f224";
$fa-var-transgender-alt: "\f225";
$fa-var-trash: "\f1f8";
$fa-var-trash-o: "\f014";
$fa-var-tree: "\f1bb";
$fa-var-trello: "\f181";
$fa-var-tripadvisor: "\f262";
$fa-var-trophy: "\f091";
$fa-var-truck: "\f0d1";
$fa-var-try: "\f195";
@@ -517,26 +676,40 @@ $fa-var-tty: "\f1e4";
$fa-var-tumblr: "\f173";
$fa-var-tumblr-square: "\f174";
$fa-var-turkish-lira: "\f195";
$fa-var-tv: "\f26c";
$fa-var-twitch: "\f1e8";
$fa-var-twitter: "\f099";
$fa-var-twitter-square: "\f081";
$fa-var-umbrella: "\f0e9";
$fa-var-underline: "\f0cd";
$fa-var-undo: "\f0e2";
$fa-var-universal-access: "\f29a";
$fa-var-university: "\f19c";
$fa-var-unlink: "\f127";
$fa-var-unlock: "\f09c";
$fa-var-unlock-alt: "\f13e";
$fa-var-unsorted: "\f0dc";
$fa-var-upload: "\f093";
$fa-var-usb: "\f287";
$fa-var-usd: "\f155";
$fa-var-user: "\f007";
$fa-var-user-md: "\f0f0";
$fa-var-user-plus: "\f234";
$fa-var-user-secret: "\f21b";
$fa-var-user-times: "\f235";
$fa-var-users: "\f0c0";
$fa-var-venus: "\f221";
$fa-var-venus-double: "\f226";
$fa-var-venus-mars: "\f228";
$fa-var-viacoin: "\f237";
$fa-var-viadeo: "\f2a9";
$fa-var-viadeo-square: "\f2aa";
$fa-var-video-camera: "\f03d";
$fa-var-vimeo: "\f27d";
$fa-var-vimeo-square: "\f194";
$fa-var-vine: "\f1ca";
$fa-var-vk: "\f189";
$fa-var-volume-control-phone: "\f2a0";
$fa-var-volume-down: "\f027";
$fa-var-volume-off: "\f026";
$fa-var-volume-up: "\f028";
@@ -544,17 +717,27 @@ $fa-var-warning: "\f071";
$fa-var-wechat: "\f1d7";
$fa-var-weibo: "\f18a";
$fa-var-weixin: "\f1d7";
$fa-var-whatsapp: "\f232";
$fa-var-wheelchair: "\f193";
$fa-var-wheelchair-alt: "\f29b";
$fa-var-wifi: "\f1eb";
$fa-var-wikipedia-w: "\f266";
$fa-var-windows: "\f17a";
$fa-var-won: "\f159";
$fa-var-wordpress: "\f19a";
$fa-var-wpbeginner: "\f297";
$fa-var-wpforms: "\f298";
$fa-var-wrench: "\f0ad";
$fa-var-xing: "\f168";
$fa-var-xing-square: "\f169";
$fa-var-y-combinator: "\f23b";
$fa-var-y-combinator-square: "\f1d4";
$fa-var-yahoo: "\f19e";
$fa-var-yc: "\f23b";
$fa-var-yc-square: "\f1d4";
$fa-var-yelp: "\f1e9";
$fa-var-yen: "\f157";
$fa-var-yoast: "\f2b1";
$fa-var-youtube: "\f167";
$fa-var-youtube-play: "\f16a";
$fa-var-youtube-square: "\f166";

View File

@@ -1,5 +1,5 @@
/*!
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
* Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
@@ -11,7 +11,8 @@
@import "fixed-width";
@import "list";
@import "bordered-pulled";
@import "spinning";
@import "animated";
@import "rotated-flipped";
@import "stacked";
@import "icons";
@import "screen-reader";

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
/**
* @author zhixin wen <wenzhixin2010@gmail.com>
* https://github.com/wenzhixin/bootstrap-show-password
* version: 1.0.3
*/
!function(e){"use strict";var t=function(e){var t=arguments,s=!0,i=1;return e=e.replace(/%s/g,function(){var e=t[i++];return"undefined"==typeof e?(s=!1,""):e}),s?e:""},s=function(t,s){this.options=s,this.$element=e(t),this.isShown=!1,this.init()};s.DEFAULTS={placement:"after",white:!1,message:"Click here to show/hide password",eyeClass:"glyphicon",eyeOpenClass:"glyphicon-eye-open",eyeCloseClass:"glyphicon-eye-close"},s.prototype.init=function(){var s,i;"before"===this.options.placement?(s="insertBefore",i="input-prepend"):(this.options.placement="after",s="insertAfter",i="input-append"),this.$element.wrap(t('<div class="%s input-group" />',i)),this.$text=e('<input type="text" />')[s](this.$element).attr("class",this.$element.attr("class")).attr("style",this.$element.attr("style")).attr("placeholder",this.$element.attr("placeholder")).css("display",this.$element.css("display")).val(this.$element.val()).hide(),this.$element.prop("readonly")&&this.$text.prop("readonly",!0),this.$icon=e(['<span tabindex="100" title="'+this.options.message+'" class="add-on input-group-addon">','<i class="icon-eye-open'+(this.options.white?" icon-white":"")+" "+this.options.eyeClass+" "+this.options.eyeOpenClass+'"></i>',"</span>"].join(""))[s](this.$text).css("cursor","pointer"),this.$text.off("keyup").on("keyup",e.proxy(function(){this.isShown&&this.$element.val(this.$text.val()).trigger("change")},this)),this.$icon.off("click").on("click",e.proxy(function(){this.$text.val(this.$element.val()).trigger("change"),this.toggle()},this))},s.prototype.toggle=function(e){this[this.isShown?"hide":"show"](e)},s.prototype.show=function(t){var s=e.Event("show.bs.password",{relatedTarget:t});this.$element.trigger(s),this.isShown=!0,this.$element.hide(),this.$text.show(),this.$icon.find("i").removeClass("icon-eye-open "+this.options.eyeOpenClass).addClass("icon-eye-close "+this.options.eyeCloseClass),this.$text[this.options.placement](this.$element)},s.prototype.hide=function(t){var s=e.Event("hide.bs.password",{relatedTarget:t});this.$element.trigger(s),this.isShown=!1,this.$element.show(),this.$text.hide(),this.$icon.find("i").removeClass("icon-eye-close "+this.options.eyeCloseClass).addClass("icon-eye-open "+this.options.eyeOpenClass),this.$element[this.options.placement](this.$text)},s.prototype.val=function(e){return"undefined"==typeof e?this.$element.val():(this.$element.val(e).trigger("change"),this.$text.val(e),void 0)};var i=e.fn.password;e.fn.password=function(){var t,i=arguments[0],n=arguments,o=["show","hide","toggle","val"];return this.each(function(){var a=e(this),h=a.data("bs.password"),r=e.extend({},s.DEFAULTS,a.data(),"object"==typeof i&&i);if("string"==typeof i){if(e.inArray(i,o)<0)throw"Unknown method: "+i;t=h[i](n[1])}else h?h.init(r):(h=new s(a,r),a.data("bs.password",h))}),t?t:this},e.fn.password.Constructor=s,e.fn.password.noConflict=function(){return e.fn.password=i,this},e(function(){e('[data-toggle="password"]').password()})}(window.jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.bootstrap-touchspin .input-group-btn-vertical{position:relative;white-space:nowrap;width:1%;vertical-align:middle;display:table-cell}.bootstrap-touchspin .input-group-btn-vertical>.btn{display:block;float:none;width:100%;max-width:100%;padding:8px 10px;margin-left:-1px;position:relative}.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-up{border-radius:0;border-top-right-radius:4px}.bootstrap-touchspin .input-group-btn-vertical .bootstrap-touchspin-down{margin-top:-2px;border-radius:0;border-bottom-right-radius:4px}.bootstrap-touchspin .input-group-btn-vertical i{position:absolute;top:3px;left:5px;font-size:9px;font-weight:normal}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
/*!
* BootstrapValidator (http://bootstrapvalidator.com)
* The best jQuery plugin to validate form fields. Designed to use with Bootstrap 3
*
* @version v0.5.2, built on 2014-09-25 4:01:07 PM
* @author https://twitter.com/nghuuphuoc
* @copyright (c) 2013 - 2014 Nguyen Huu Phuoc
* @license MIT
*/
.bv-form .help-block{margin-bottom:0}.bv-form .tooltip-inner{text-align:left}.nav-tabs li.bv-tab-success>a{color:#3c763d}.nav-tabs li.bv-tab-error>a{color:#a94442}.bv-form .bv-icon-no-label{top:0}.bv-form .bv-icon-input-group{top:0;z-index:100}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
bootstrap/css/custom.css Normal file
View File

@@ -0,0 +1 @@
.required-field-block{position:relative}.required-field-block .required-icon{display:inline-block;vertical-align:middle;margin:-0.25em .25em 0;background-color:#ccc;border-color:#ccc;padding:0;color:rgba(0,0,0,0.65);text-transform:uppercase;font-weight:normal;border-radius:.325em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear;font-size:75%}.required-field-block .required-icon{background-color:transparent;position:absolute;top:0;right:0;z-index:10;margin:0;width:20px;height:20px;padding:0;text-align:center;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.required-field-block .required-icon:after{position:absolute;content:"";right:16px;top:1px;z-index:-1;width:0;height:0;border-top:0 solid transparent;border-right:20px solid transparent;border-bottom:20px solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .2s ease;-moz-transition:border-color .2s ease;transition:border-color .2s ease}.required-field-block .required-icon .text{color:#FFF;font-size:25px;margin:-5px 0 0 -22px}.required-field-block{position:relative}.required-field-block-spin .required-icon{display:inline-block;vertical-align:middle;margin:0 21px 0 0;background-color:#ccc;border-color:#ccc;padding:0;color:rgba(0,0,0,0.65);text-transform:uppercase;font-weight:normal;border-radius:.325em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:background .1s linear;-moz-transition:background .1s linear;transition:background .1s linear;font-size:75%}.required-field-block-spin .required-icon{background-color:transparent;position:absolute;top:0;right:0;z-index:10;margin:0 21px 0 0;width:20px;height:20px;padding:0;text-align:center;-webkit-transition:color .2s ease;-moz-transition:color .2s ease;transition:color .2s ease}.required-field-block-spin .required-icon:after{position:absolute;content:"";right:16px;top:1px;z-index:-1;width:0;height:0;border-top:0 solid transparent;border-right:20px solid transparent;border-bottom:20px solid transparent;border-left:0 solid transparent;border-right-color:inherit;-webkit-transition:border-color .2s ease;-moz-transition:border-color .2s ease;transition:border-color .2s ease}.required-field-block-spin .required-icon .text{color:#FFF;font-size:25px;margin:-5px 0 0 -22px}.divider{height:1px;width:100%;display:block;margin:5px 0;overflow:hidden;background-color:#111111}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="900" height="600">
<rect width="900" height="200" fill="#000"/>
<rect y="200" width="900" height="200" fill="#007a3d"/>
<rect y="400" width="900" height="200" fill="#fff"/>
<path d="M 0,0 L 300,300 L 0,600 z" fill="#ce1126"/>
<link xmlns="" id="lite-css-list"/></svg>

After

Width:  |  Height:  |  Size: 371 B

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

61
bootstrap/js/main.js Normal file
View File

@@ -0,0 +1,61 @@
(function() {
var $confirm;
$confirm = null;
$(function() {
var $createDestroy, $window, sectionTop;
$window = $(window);
sectionTop = $(".top").outerHeight() + 20;
$createDestroy = $("#switch-create-destroy");
hljs.initHighlightingOnLoad();
$("a[href*=\"#\"]").on("click", function(event) {
var $target;
event.preventDefault();
$target = $($(this).attr("href").slice("#"));
if ($target.length) {
return $window.scrollTop($target.offset().top - sectionTop);
}
});
$("input[type=\"checkbox\"], input[type=\"radio\"]").not("[data-switch-no-init]").bootstrapSwitch();
$("[data-switch-get]").on("click", function() {
var type;
type = $(this).data("switch-get");
return alert($("#switch-" + type).bootstrapSwitch(type));
});
$("[data-switch-set]").on("click", function() {
var type;
type = $(this).data("switch-set");
return $("#switch-" + type).bootstrapSwitch(type, $(this).data("switch-value"));
});
$("[data-switch-toggle]").on("click", function() {
var type;
type = $(this).data("switch-toggle");
return $("#switch-" + type).bootstrapSwitch("toggle" + type.charAt(0).toUpperCase() + type.slice(1));
});
$("[data-switch-set-value]").on("input", function(event) {
var type, value;
event.preventDefault();
type = $(this).data("switch-set-value");
value = $.trim($(this).val());
if ($(this).data("value") === value) {
return;
}
return $("#switch-" + type).bootstrapSwitch(type, value);
});
$("[data-switch-create-destroy]").on("click", function() {
var isSwitch;
isSwitch = $createDestroy.data("bootstrap-switch");
$createDestroy.bootstrapSwitch((isSwitch ? "destroy" : null));
return $(this).button((isSwitch ? "reset" : "destroy"));
});
return $confirm = $("#confirm").bootstrapSwitch({
size: "large",
onSwitchChange: function(event, state) {
event.preventDefault();
return console.log(state, event.isDefaultPrevented());
}
});
});
}).call(this);

View File

@@ -1,280 +1,526 @@
<!doctype html>
<?PHP
require_once('other/config.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>TS-N.NET Ranksystem - Installation</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="other/style.css.php" />
<script type="text/javascript" src="jquerylib/jquery.js"></script>
<script type="text/javascript">
function showpwd()
{
$('#pass')[0].type = 'text';
}
function hidepwd()
{
$('#pass')[0].type = 'password';
}
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="icons/rs.png">
<title>TS-N.NET Ranksystem</title>
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="bootstrap/css/custom.css" rel="stylesheet">
<link href="bootstrap/addons/sb-admin.css" rel="stylesheet">
<link href="bootstrap/addons/switch-master/bootstrap-switch.min.css" rel="stylesheet">
<link href="bootstrap/addons/touchspin-master/jquery.bootstrap-touchspin.css" rel="stylesheet">
<link href="bootstrap/addons/select/bootstrap-select.min.css" rel="stylesheet">
<link href="bootstrap/addons/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="bootstrap/flag_icon/css/flag-icon.min.css" rel="stylesheet">
<script src="jquerylib/jquery.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="bootstrap/js/highlight.js"></script>
<script src="bootstrap/js/main.js"></script>
<script src="bootstrap/addons/switch-master/bootstrap-switch.min.js"></script>
<script src="bootstrap/addons/touchspin-master/jquery.bootstrap-touchspin.js"></script>
<script src="bootstrap/addons/select/bootstrap-select.min.js"></script>
<script src="bootstrap/addons/show-password/bootstrap-show-password.min.js"></script>
<script src="bootstrap/addons/validator/validator.min.js"></script>
<script>
$(function() {
$('.required-icon').tooltip({
placement: 'left',
title: 'Required field'
});
});
$(function() {
$('#password').password().on('show.bs.password', function(e) {
$('#eventLog').text('On show event');
$('#methods').prop('checked', true);
}).on('hide.bs.password', function(e) {
$('#eventLog').text('On hide event');
$('#methods').prop('checked', false);
});
$('#methods').click(function() {
$('#password').password('toggle');
});
});
</script>
</head>
<body>
<?php
$language='en';
if(isset($_GET['lang']))
{
$language=$_GET['lang'];
}
if(!isset($language) || $language == "en") {
require_once('languages/core_en.php');
} elseif($language == "de") {
require_once('languages/core_de.php');
} elseif($language == "ru") {
require_once('languages/core_ru.php');
}
require_once('other/dbconfig.php');
if(isset($_POST['confweb'])) {
require_once('other/dbconfig.php');
$user=$_POST['user'];
$pass=$_POST['pass'];
$dbserver = $db['type'].':host='.$db['host'].';dbname='.$db['dbname'];
$logpath = addslashes(__DIR__."/logs/");
try {
$mysqlcon = new PDO($dbserver, $db['user'], $db['pass']);
} catch (PDOException $e) {
$sqlconerr = 'SQL Connection failed: '.$e->getMessage();
exit;
}
if($mysqlcon->exec("INSERT INTO config (webuser,webpass,tshost,tsquery,tsvoice,tsuser,language,queryname,queryname2,grouptime,resetbydbchange,msgtouser,upcheck,uniqueid,updateinfotime,currvers,exceptuuid,exceptgroup,dateformat,showexgrp,showexcld,showcolcld,showcoluuid,showcoldbid,showcolot,showcolit,showcolat,showcolnx,showcolsg,bgcolor,hdcolor,txcolor,hvcolor,ifcolor,wncolor,sccolor,showgen,showcolrg,showcolls,slowmode,cleanclients,cleanperiod,showhighest,boost,showcolas,defchid,timezone,logpath) VALUES ('$user','$pass','localhost','10011','9987','serveradmin','en','http://ts-n.net/ranksystem.php','www.ts-n.net/ranksystem.php','31536000=>47,31536060=>50','1','1','1','xrTKhT/HDl4ea0WoFDQH2zOpmKg=,9odBYAU7z2E2feUz965sL0/MyBom=','7200','1.0.2','xrTKhT/HDl4ea0WoFDQH2zOpmKg=','2,6','%a days, %h hours, %i mins, %s secs','1','1','1','1','1','1','1','1','1','1','#101010','#909090','#707070','#FFFFFF','#3366CC','#CC0000','#008000','1','1','1','0','1','86400','1','','1','','Europe/Berlin','$logpath')") === false) {
echo '<span class="wncolor">',$mysqlcon->errorCode(),'</span><br>';
<div id="wrapper">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">TSN Ranksystem - <?PHP echo $lang['install']; ?></a>
</div>
<ul class="nav navbar-right top-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-globe"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="?lang=ar"><span class="flag-icon flag-icon-arab"></span>&nbsp;&nbsp;AR - العربية</a>
</li>
<li>
<a href="?lang=de"><span class="flag-icon flag-icon-de"></span>&nbsp;&nbsp;DE - Deutsch</a>
</li>
<li>
<a href="?lang=en"><span class="flag-icon flag-icon-us"></span>&nbsp;&nbsp;EN - english</a>
</li>
<li>
<a href="?lang=it"><span class="flag-icon flag-icon-it"></span>&nbsp;&nbsp;IT - italiano</a>
</li>
<li>
<a href="?lang=ru"><span class="flag-icon flag-icon-ro"></span>&nbsp;&nbsp;RO - românesc</a>
</li>
<li>
<a href="?lang=ru"><span class="flag-icon flag-icon-ru"></span>&nbsp;&nbsp;RU - русский</a>
</li>
</ul>
</li>
</ul>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<?PHP
if (!isset($_POST['install']) && !isset($_POST['confweb'])) {
echo '<li class="active"><a>1. ',$lang['instdb'],'</a></li>';
} else {
echo'<span class="sccolor">'.$lang['isntwiusr'].'</span><br><br>';
echo'<span class="wncolor">'.sprintf($lang['isntwidel'],"<a href=\"webinterface.php\">webinterface.php</a>").'</span>';
echo '<li><a>1. ',$lang['instdb'],'</a></li>';
}
} else {
if(isset($_POST['installdb'])) {
$type=$_POST['type'];
$host=$_POST['host'];
$user=$_POST['user'];
$pass=$_POST['pass'];
if (isset($_POST['install'])) {
echo '<li class="active"><a>2. ',$lang['isntwiusrcr'],'</a></li>';
} else {
echo '<li><a>2. ',$lang['isntwiusrcr'],'</a></li>';
}
if (isset($_POST['confweb'])) {
echo '<li class="active"><a class="active">3. ',$lang['isntwicfg2'],'</a></li>';
} else {
echo '<li><a>3. ',$lang['isntwicfg2'],'</a></li>';
}
?>
</ul>
</div>
</nav>
<?PHP
if (isset($_POST['install'])) {
unset($err_msg);
$type=$_POST['dbtype'];
$host=$_POST['dbhost'];
$user=$_POST['dbuser'];
$pass=$_POST['dbpass'];
$dbname=$_POST['dbname'];
$dbserver = $type.':host='.$host.';dbname='.$dbname;
if ($type == 'mysql') {
$dboptions = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
PDO::ATTR_PERSISTENT => true
);
} else {
$dboptions = array();
}
$dbserver = $type.':host='.$host.'; dbname='.$dbname;
$dbserver2 = $type.':host='.$host;
try {
$mysqlcon = new PDO($dbserver, $user, $pass);
$mysqlcon = new PDO($dbserver, $user, $pass, $dboptions);
} catch (PDOException $e) {
try {
$mysqlcon = new PDO($dbserver2, $user, $pass);
$mysqlcon = new PDO($dbserver2, $user, $pass, $dboptions);
} catch (PDOException $e) {
$sqlconerr = 'SQL Connection failed: '.$e->getMessage();
$err_msg = $lang['dbconerr'].$e->getMessage(); $err_lvl = 1;
}
}
if(empty($host) || empty($user) || empty($pass) || empty($dbname) || isset($sqlconerr)) {
echo '<form name="form" method="post">
<table class="tabledefault">
<tr><td class="right" colspan="2">Language: <select name="lang" onchange="location.href=this.form.lang.options[this.form.lang.selectedIndex].value"><option>&nbsp;</option><option value="install.php?lang=en">english</option><option value="install.php?lang=de">deutsch</option><option value="install.php?lang=ru">русский</option></select></td></tr>
<tr><td class="center" colspan="2"><span class="size1"><b>'.$lang['instdb'].'</span></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td class="wncolor" colspan="2">'.$lang['isntwidberr'].'</td></tr>';
if(isset($sqlconerr)) {
echo '<tr><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td class="wncolor" colspan="2">'.$lang['isntwidbmsg'].$sqlconerr.'</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td></tr>';
if(!is_writeable('./other/dbconfig.php')) {
$err_msg = $lang['isntwicfg'];
$err_lvl = 2;
}
echo '<tr><td class="tdred">'.$lang['isntwidbtype'].'</td>
<td class="tdleft"><select name="type" style="width:35%">
<option value="cubrid">cubrid - Cubrid</option>
<option value="dblib">dblib - FreeTDS / Microsoft SQL Server / Sybase</option>
<option value="firebird">firebird - Firebird/Interbase 6</option>
<option value="ibm">ibm - IBM DB2</option>
<option value="informix">informix - IBM Informix Dynamic Server</option>
<option value="mysql" selected="selected">mysql - MySQL 3.x/4.x/5.x [recommend]</option>
<option value="oci">oci - Oracle Call Interface</option>
<option value="odbc">odbc - ODBC v3 (IBM DB2, unixODBC und win32 ODBC)</option>
<option value="pgsql">pgsql - PostgreSQL</option>
<option value="sqlite">sqlite - SQLite 3 und SQLite 2</option>
<option value="sqlsrv">sqlsrv - Microsoft SQL Server / SQL Azure</option>
<option value="4d">4d - 4D</option>
</select></td></tr>';
if(empty($host)) {
echo '<tr><td class="tdred">'.$lang['isntwidbhost'].'</td><td class="tdleft"><input type="text" name="host" value="',$host,'" style="width:35%"></td></tr>';
} else {
echo '<tr><td class="tdright">'.$lang['isntwidbhost'].'</td><td class="tdleft"><input type="text" name="host" value="',$host,'" style="width:35%"></td></tr>';
}
if(empty($user)) {
echo '<tr><td class="tdred">'.$lang['isntwidbusr'].'</td><td class="tdleft"><input type="text" name="user" value="',$user,'" style="width:35%;"></td></tr>';
} else {
echo '<tr><td class="tdright">'.$lang['isntwidbusr'].'</td><td class="tdleft"><input type="text" name="user" value="',$user,'" style="width:35%;"></td></tr>';
}
if(empty($pass)) {
echo '<tr><td class="tdred">'.$lang['isntwidbpass'].'</td><td class="tdleft"><input type="password" name="pass" id="pass" value="',$pass,'" ondblclick="showpwd()" onblur="hidepwd()" style="width:35%;"></td></tr>';
} else {
echo '<tr><td class="tdright">'.$lang['isntwidbpass'].'</td><td class="tdleft"><input type="password" name="pass" id="pass" value="',$pass,'" ondblclick="showpwd()" onblur="hidepwd()" style="width:35%;"></td></tr>';
}
if(empty($dbname)) {
echo '<tr><td class="tdred">'.$lang['isntwidbname'].'</td><td class="tdleft"><input type="text" name="dbname" value="',$dbname,'" style="width:35%"></td></tr>';
} else {
echo '<tr><td class="tdright">'.$lang['isntwidbname'].'</td><td class="tdleft"><input type="text" name="dbname" value="',$dbname,'" style="width:35%"></td></tr>';
}
echo '<tr><td>&nbsp;</td><td class="tdleft"><br><input type="submit" name="installdb" class="button" value="'.$lang['instdbsubm'].'" style="width:150px"></td></tr>
</table></form>';
} else {
if($err_msg == NULL) {
$newconfig='<?php
$db[\'type\']="'.$type.'";
$db[\'host\']="'.$host.'";
$db[\'user\']="'.$user.'";
$db[\'pass\']="'.$pass.'";
$db[\'dbname\']="'.$dbname.'";
?>';
?>';
$handle=fopen('./other/dbconfig.php','w');
if(!fwrite($handle,$newconfig)) {
echo $lang['isntwicfg'];
$err_msg = $lang['isntwicfg'];
$err_lvl = 2;
} else {
$count = 1;
echo '<br><br>'.$lang['instdb'].'<br>';
$mysqlcon->exec("DROP DATABASE $dbname");
if(($mysqlcon->exec("DROP DATABASE $dbname")) === false) { }
if($mysqlcon->exec("CREATE DATABASE $dbname") === false) {
echo $lang['instdberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'</span>';
} else {
echo'<span class="sccolor">'.sprintf($lang['instdbsuc'],$dbname).'</span>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
echo '<br><br>'.$lang['insttb'].'<br>';
if($mysqlcon->exec("CREATE TABLE $dbname.user (uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY,cldbid bigint(10) NOT NULL default '0',count bigint(11) NOT NULL default '0',ip bigint(10) NOT NULL default '0',name text CHARACTER SET utf8 COLLATE utf8_unicode_ci,lastseen bigint(11) NOT NULL default '0',grpid bigint(10) NOT NULL default '0',nextup bigint(11) NOT NULL default '0',idle bigint(11) NOT NULL default '0',cldgroup text CHARACTER SET utf8 COLLATE utf8_unicode_ci,online int(1) NOT NULL default '0',boosttime bigint(11) NOT NULL default '0', rank bigint(11) NOT NULL default '0', platform text default NULL, nation text default NULL, version text default NULL, firstcon bigint(11) NOT NULL default '0', except int(1) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'user').'</span><br>';
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.upcheck (timestamp bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span>';
} else {
if($mysqlcon->exec("INSERT INTO $dbname.upcheck SET timestamp='1'") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'upcheck').'</span><br>';
$count++;
}
}
if($mysqlcon->exec("CREATE TABLE $dbname.lastscan (timestamp bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'lastscan').'</span><br>';
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.cleanclients (timestamp bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.print_r($mysqlcon->errorInfo()).'.</span>';
$count++;
}
if($mysqlcon->exec("INSERT INTO $dbname.cleanclients SET timestamp='1'") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.print_r($mysqlcon->errorInfo()).'.</span>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.groups (sgid bigint(10) PRIMARY KEY,sgidname text CHARACTER SET utf8 COLLATE utf8_unicode_ci,iconid bigint(10) NOT NULL default '0',icondate bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'groups').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.config (webuser text CHARACTER SET utf8 COLLATE utf8_unicode_ci,webpass text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tshost text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tsquery int(5) NOT NULL default '0',tsvoice int(5) NOT NULL default '0',tsuser text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tspass text CHARACTER SET utf8 COLLATE utf8_unicode_ci,language text CHARACTER SET utf8 COLLATE utf8_unicode_ci,queryname text CHARACTER SET utf8 COLLATE utf8_unicode_ci,queryname2 text CHARACTER SET utf8 COLLATE utf8_unicode_ci,grouptime text CHARACTER SET utf8 COLLATE utf8_unicode_ci,resetbydbchange int(1) NOT NULL default '0',msgtouser int(1) NOT NULL default '0',upcheck int(1) NOT NULL default '0',uniqueid text CHARACTER SET utf8 COLLATE utf8_unicode_ci,updateinfotime int(8) NOT NULL default '0',currvers text CHARACTER SET utf8 COLLATE utf8_unicode_ci,substridle int(1) NOT NULL default '0',exceptuuid text CHARACTER SET utf8 COLLATE utf8_unicode_ci,exceptgroup text CHARACTER SET utf8 COLLATE utf8_unicode_ci,dateformat text CHARACTER SET utf8 COLLATE utf8_unicode_ci,showexgrp int(1) NOT NULL default '0',showexcld int(1) NOT NULL default '0',showcolcld int(1) NOT NULL default '0',showcoluuid int(1) NOT NULL default '0',showcoldbid int(1) NOT NULL default '0',showcolot int(1) NOT NULL default '0',showcolit int(1) NOT NULL default '0',showcolat int(1) NOT NULL default '0',showcolnx int(1) NOT NULL default '0',showcolsg int(1) NOT NULL default '0',bgcolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,hdcolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,txcolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,hvcolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,ifcolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,wncolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,sccolor text CHARACTER SET utf8 COLLATE utf8_unicode_ci,showgen int(1) NOT NULL default '0',showcolrg int(1) NOT NULL default '0',showcolls int(1) NOT NULL default '0',slowmode bigint(11) NOT NULL default '0',cleanclients int(1) NOT NULL default '0',cleanperiod bigint(11) NOT NULL default '0',showhighest int(1) NOT NULL default '0',boost text default NULL,showcolas int(1) NOT NULL default '0',defchid bigint(11) NOT NULL default '0',timezone varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci,logpath varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'config').'</span><br>';
if($mysqlcon->exec("CREATE TABLE $dbname.config (webuser text CHARACTER SET utf8 COLLATE utf8_unicode_ci,webpass text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tshost text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tsquery int(5) NOT NULL default '0',tsvoice int(5) NOT NULL default '0',tsuser text CHARACTER SET utf8 COLLATE utf8_unicode_ci,tspass text CHARACTER SET utf8 COLLATE utf8_unicode_ci,language text CHARACTER SET utf8 COLLATE utf8_unicode_ci,queryname text CHARACTER SET utf8 COLLATE utf8_unicode_ci,queryname2 text CHARACTER SET utf8 COLLATE utf8_unicode_ci,grouptime text CHARACTER SET utf8 COLLATE utf8_unicode_ci,resetbydbchange int(1) NOT NULL default '0',msgtouser int(1) NOT NULL default '0',upcheck int(1) NOT NULL default '0',uniqueid text CHARACTER SET utf8 COLLATE utf8_unicode_ci,updateinfotime int(8) NOT NULL default '0',currvers text CHARACTER SET utf8 COLLATE utf8_unicode_ci,substridle int(1) NOT NULL default '0',exceptuuid text CHARACTER SET utf8 COLLATE utf8_unicode_ci,exceptgroup text CHARACTER SET utf8 COLLATE utf8_unicode_ci,dateformat text CHARACTER SET utf8 COLLATE utf8_unicode_ci,showexcld int(1) NOT NULL default '0',showcolcld int(1) NOT NULL default '0',showcoluuid int(1) NOT NULL default '0',showcoldbid int(1) NOT NULL default '0',showcolot int(1) NOT NULL default '0',showcolit int(1) NOT NULL default '0',showcolat int(1) NOT NULL default '0',showcolnx int(1) NOT NULL default '0',showcolsg int(1) NOT NULL default '0',showcolrg int(1) NOT NULL default '0',showcolls int(1) NOT NULL default '0',slowmode bigint(11) NOT NULL default '0',cleanclients int(1) NOT NULL default '0',cleanperiod bigint(11) NOT NULL default '0',showhighest int(1) NOT NULL default '0',boost text default NULL,showcolas int(1) NOT NULL default '0',defchid bigint(11) NOT NULL default '0',timezone varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci,logpath varchar(200) CHARACTER SET utf8 COLLATE utf8_unicode_ci, advancemode int(1) NOT NULL default '0', count_access int(2) NOT NULL default '0', last_access bigint(11) NOT NULL default '0', ignoreidle bigint(11) NOT NULL default '0', exceptcid text CHARACTER SET utf8 COLLATE utf8_unicode_ci, rankupmsg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, boost_mode int(1) NOT NULL default '0', newversion varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) {
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.server_usage (timestamp bigint(11) NOT NULL default '0', clients bigint(11) NOT NULL default '0', channel bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'server_usage').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
if($mysqlcon->exec("CREATE INDEX serverusage_timestamp ON $dbname.server_usage (timestamp)") === false) {
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
}
if($mysqlcon->exec("CREATE TABLE $dbname.user_snapshot (timestamp bigint(11) NOT NULL default '0', uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci, count bigint(11) NOT NULL default '0', idle bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
if($mysqlcon->exec("CREATE INDEX snapshot_timestamp ON $dbname.user_snapshot (timestamp)") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.print_r($mysqlcon->errorInfo()).'.</span>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'user_snapshot').'</span><br>';
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.stats_server (total_user bigint(11) NOT NULL default '0', total_online_time bigint(13) NOT NULL default '0', total_online_month bigint(11) NOT NULL default '0', total_online_week bigint(11) NOT NULL default '0', total_active_time bigint(11) NOT NULL default '0', total_inactive_time bigint(11) NOT NULL default '0', country_nation_name_1 varchar(3) NOT NULL default '0', country_nation_name_2 varchar(3) NOT NULL default '0', country_nation_name_3 varchar(3) NOT NULL default '0', country_nation_name_4 varchar(3) NOT NULL default '0', country_nation_name_5 varchar(3) NOT NULL default '0', country_nation_1 bigint(11) NOT NULL default '0', country_nation_2 bigint(11) NOT NULL default '0', country_nation_3 bigint(11) NOT NULL default '0', country_nation_4 bigint(11) NOT NULL default '0', country_nation_5 bigint(11) NOT NULL default '0', country_nation_other bigint(11) NOT NULL default '0', platform_1 bigint(11) NOT NULL default '0', platform_2 bigint(11) NOT NULL default '0', platform_3 bigint(11) NOT NULL default '0', platform_4 bigint(11) NOT NULL default '0', platform_5 bigint(11) NOT NULL default '0', platform_other bigint(11) NOT NULL default '0', version_name_1 varchar(35) NOT NULL default '0', version_name_2 varchar(35) NOT NULL default '0', version_name_3 varchar(35) NOT NULL default '0', version_name_4 varchar(35) NOT NULL default '0', version_name_5 varchar(35) NOT NULL default '0', version_1 bigint(11) NOT NULL default '0', version_2 bigint(11) NOT NULL default '0', version_3 bigint(11) NOT NULL default '0', version_4 bigint(11) NOT NULL default '0', version_5 bigint(11) NOT NULL default '0', version_other bigint(11) NOT NULL default '0', server_status int(1) NOT NULL default '0', server_free_slots bigint(11) NOT NULL default '0', server_used_slots bigint(11) NOT NULL default '0', server_channel_amount bigint(11) NOT NULL default '0', server_ping bigint(11) NOT NULL default '0', server_packet_loss float (4,4), server_bytes_down bigint(11) NOT NULL default '0', server_bytes_up bigint(11) NOT NULL default '0', server_uptime bigint(11) NOT NULL default '0', server_id bigint(11) NOT NULL default '0', server_name text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_pass int(1) NOT NULL default '0', server_creation_date bigint(11) NOT NULL default '0', server_platform text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_weblist text CHARACTER SET utf8 COLLATE utf8_unicode_ci, server_version text CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'stats_server').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.stats_user (uuid varchar(29) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, removed int(1) NOT NULL default '0', rank bigint(11) NOT NULL default '0', total_connections bigint(11) NOT NULL default '0', count_week bigint(11) NOT NULL default '0', count_month bigint(11) NOT NULL default '0', idle_week bigint(11) NOT NULL default '0', idle_month bigint(11) NOT NULL default '0', achiev_count bigint(11) NOT NULL default '0', achiev_time bigint(11) NOT NULL default '0', achiev_connects bigint(11) NOT NULL default '0', achiev_battles bigint(11) NOT NULL default '0', achiev_time_perc int(3) NOT NULL default '0', achiev_connects_perc int(3) NOT NULL default '0', achiev_battles_perc int(3) NOT NULL default '0', battles_total bigint(11) NOT NULL default '0', battles_won bigint(11) NOT NULL default '0', battles_lost bigint(11) NOT NULL default '0', client_description text CHARACTER SET utf8 COLLATE utf8_unicode_ci, base64hash varchar(58) CHARACTER SET utf8 COLLATE utf8_unicode_ci, client_total_up bigint(15) NOT NULL default '0', client_total_down bigint(15) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'stats_user').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("INSERT INTO $dbname.stats_server SET total_user='9999'") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.print_r($mysqlcon->errorInfo()).'.</span>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.job_check (job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci PRIMARY KEY, timestamp bigint(11) NOT NULL default '0')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'job_check').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("INSERT INTO $dbname.job_check (job_name) VALUES ('calc_user_limit'),('calc_user_lastscan'),('check_update'),('check_clean')") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.print_r($mysqlcon->errorInfo()).'.</span>';
if($mysqlcon->exec("INSERT INTO $dbname.job_check (job_name) VALUES ('calc_user_limit'),('calc_user_lastscan'),('check_update'),('check_clean'),('get_version')") === false) {
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($mysqlcon->exec("CREATE TABLE $dbname.job_log (id bigint(11) AUTO_INCREMENT PRIMARY KEY, timestamp bigint(11) NOT NULL default '0', job_name varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci, status int(1) NOT NULL default '0', err_msg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, runtime float (4,4))") === false) {
echo $lang['insttberr'].'<span class="wncolor">'.$mysqlcon->errorCode().'.</span><br>';
} else {
echo '<span class="sccolor">'.sprintf($lang['insttbsuc'],'job_log').'</span><br>';
$err_msg .= $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true).'<br>'; $err_lvl = 2;
$count++;
}
if($count>1) {
echo '<form name="form" method="post">
<table class="tabledefault">
<tr><td class="center" colspan="2"><span class="size1">'.$lang['isntwiusrh'].'</span></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td class="center" colspan="2">'.$lang['isntwiusrdesc'].'</td></tr>
<tr><td class="tdright">'.$lang['user'].'</td><td class="tdleft"><input type="text" name="user" value="" style="width:35%"></td></tr>
<tr><td class="tdright">'.$lang['pass'].'</td><td class="tdleft"><input type="password" name="pass" id="pass" value="" ondblclick="showpwd()" onblur="hidepwd()" style="width:35%;"></td></tr>
<tr><td>&nbsp;</td><td class="tdleft"><br><input type="submit" name="confweb" class="button" value="'.$lang['isntwiusrcr'].'" style="width:150px"></td></tr>
</table></form>';
if($count == 1) {
$err_msg = sprintf($lang['instdbsuc'], $dbname); $err_lvl = NULL;
$install_webuser = 1;
}
}
fclose($handle);
}
} elseif (!is_writable('./other/dbconfig.php') || substr(sprintf('%o', fileperms('./icons/')), -4)!='0777' || substr(sprintf('%o', fileperms('./avatars/')), -4)!='0777') {
echo '<span class="wncolor">',$lang['isntwichm'],'</span>';
} else {
echo '<form name="form" method="post">
<table class="tabledefault">
<tr><td class="right" colspan="2">Language: <select name="lang" onchange="location.href=this.form.lang.options[this.form.lang.selectedIndex].value"><option>&nbsp;</option><option value="install.php?lang=en">english</option><option value="install.php?lang=de">deutsch</option><option value="install.php?lang=ru">русский</option></select></td></tr>
<tr><td class="center" colspan="2"><span class="size1">'.$lang['instdb'].'</span></td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td class="center" colspan="2">'.$lang['isntwidb'].'</td></tr>
<tr><td>&nbsp;</td><td>&nbsp;</td></tr>
<tr><td class="tdright">'.$lang['isntwidbtype'].'</td>
<td class="tdleft"><select name="type" style="width:35%">
<option value="cubrid">cubrid - Cubrid</option>
<option value="dblib">dblib - FreeTDS / Microsoft SQL Server / Sybase</option>
<option value="firebird">firebird - Firebird/Interbase 6</option>
<option value="ibm">ibm - IBM DB2</option>
<option value="informix">informix - IBM Informix Dynamic Server</option>
<option value="mysql" selected="selected">mysql - MySQL 3.x/4.x/5.x [recommend]</option>
<option value="oci">oci - Oracle Call Interface</option>
<option value="odbc">odbc - ODBC v3 (IBM DB2, unixODBC und win32 ODBC)</option>
<option value="pgsql">pgsql - PostgreSQL</option>
<option value="sqlite">sqlite - SQLite 3 und SQLite 2</option>
<option value="sqlsrv">sqlsrv - Microsoft SQL Server / SQL Azure</option>
<option value="4d">4d - 4D</option>
</select></td></tr>
<tr><td class="tdright">'.$lang['isntwidbhost'].'</td><td class="tdleft"><input type="text" name="host" value="" style="width:35%"></td></tr>
<tr><td class="tdright">'.$lang['isntwidbusr'].'</td><td class="tdleft"><input type="text" name="user" value="" style="width:35%;"></td></tr>
<tr><td class="tdright">'.$lang['isntwidbpass'].'</td><td class="tdleft"><input type="password" name="pass" id="pass" value="" ondblclick="showpwd()" onblur="hidepwd()" style="width:35%;"></td></tr>
<tr><td class="tdright">'.$lang['isntwidbname'].'</td><td class="tdleft"><input type="text" name="dbname" value="" style="width:35%"></td></tr>
<tr><td>&nbsp;</td><td class="tdleft"><br><input type="submit" name="installdb" class="button" value="'.$lang['instdbsubm'].'" style="width:150px"></td></tr>
</table></form>';
}
if(isset($_POST['confweb'])) {
require_once('other/dbconfig.php');
$user=$_POST['user'];
$pass=password_hash($_POST['pass'], PASSWORD_DEFAULT);
$logpath = addslashes(__DIR__."/logs/");
$dbserver = $db['type'].':host='.$db['host'].';dbname='.$db['dbname'];
$dbserver2 = $db['type'].':host='.$db['host'];
try {
$mysqlcon = new PDO($dbserver, $db['user'], $db['pass']);
} catch (PDOException $e) {
try {
$mysqlcon = new PDO($dbserver2, $db['user'], $db['pass']);
} catch (PDOException $e) {
$err_msg = $lang['dbconerr'].$e->getMessage(); $err_lvl = 1;
}
}
if($err_lvl != 1) {
if($mysqlcon->exec("INSERT INTO $dbname.config (webuser,webpass,tshost,tsquery,tsvoice,tsuser,language,queryname,queryname2,grouptime,resetbydbchange,msgtouser,upcheck,uniqueid,updateinfotime,currvers,exceptuuid,exceptgroup,dateformat,showexcld,showcolcld,showcoluuid,showcoldbid,showcolot,showcolit,showcolat,showcolnx,showcolsg,showcolrg,showcolls,slowmode,cleanclients,cleanperiod,showhighest,showcolas,defchid,timezone,logpath,ignoreidle,rankupmsg,newversion) VALUES ('$user','$pass','localhost','10011','9987','serveradmin','en','Ranksystem','RankSystem','31536000=>47,31536060=>50','1','1','1','xrTKhT/HDl4ea0WoFDQH2zOpmKg=,9odBYAU7z2E2feUz965sL0/Myom=','7200','1.1.0','xrTKhT/HDl4ea0WoFDQH2zOpmKg=','2,6','%a days, %h hours, %i mins, %s secs','1','1','1','1','1','1','1','1','1','1','1','0','1','86400','1','1','0','Europe/Berlin','$logpath','600','\\nHey, you got a rank up, cause you reached an activity of %s days, %s hours, %s minutes and %s seconds.','1.1.0')") === false) {
$err_msg = $lang['isntwidbmsg'].$mysqlcon->errorCode()." ".print_r($mysqlcon->errorInfo(), true); $err_lvl = 2;
} else {
$err_msg .= $lang['isntwiusr'].'<br><br>';
if(!unlink('./install.php')) {
$err_msg .= sprintf($lang['isntwidel'],"<a href=\"webinterface\\\">/webinterface/</a>");
}
$install_finished = 1;
}
}
}
if (!isset($_POST['install']) && !isset($_POST['confweb'])) {
unset($err_msg);
unset($err_lvl);
if(!is_writeable('./other/dbconfig.php')) {
$err_msg = $lang['isntwicfg'];
$err_lvl = 2;
}
}
function error_handling($msg,$type = NULL) {
switch ($type) {
case NULL: echo '<div class="alert alert-success alert-dismissible">'; break;
case 1: echo '<div class="alert alert-info alert-dismissible">'; break;
case 2: echo '<div class="alert alert-warning alert-dismissible">'; break;
case 3: echo '<div class="alert alert-danger alert-dismissible">'; break;
}
echo '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>',$msg,'</div>';
}
if ((!isset($_POST['install']) && !isset($_POST['confweb'])) || $err_lvl == 1 || $err_lvl == 2) {
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihldb']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="install" method="POST">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbtypedesc"><?php echo $lang['isntwidbtype']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="dbtype" required>
<option disabled value=""> -- select database -- </option>
<option data-subtext="Cubrid" value="cubrid">cubrid</option>
<option data-subtext="FreeTDS / Microsoft SQL Server / Sybase" value="dblib">dblib</option>
<option data-subtext="Firebird/Interbase 6" value="firebird">firebird</option>
<option data-subtext="IBM DB2" value="ibm">ibm</option>
<option data-subtext="IBM Informix Dynamic Server" value="informix">informix</option>
<option data-subtext="MySQL 3.x/4.x/5.x [recommend]" value="mysql" selected>mysql</option>
<option data-subtext="Oracle Call Interface" value="oci">oci</option>
<option data-subtext="ODBC v3 (IBM DB2, unixODBC und win32 ODBC)" value="odbc">odbc</option>
<option data-subtext="PostgreSQL" value="pgsql">pgsql</option>
<option data-subtext="SQLite 3 und SQLite 2" value="sqlite">sqlite</option>
<option data-subtext="Microsoft SQL Server / SQL Azure" value="sqlsrv">sqlsrv</option>
<option data-subtext="4D" value="4d">4d</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbhostdesc"><?php echo $lang['isntwidbhost']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbhost" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbnamedesc"><?php echo $lang['isntwidbname']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbname" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbusrdesc"><?php echo $lang['isntwidbusr']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbuser" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbpassdesc"><?php echo $lang['isntwidbpass']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="password" class="form-control" name="dbpass" data-toggle="password" data-placement="before" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="install"><?php echo $lang['instdb']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbtypedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbtype']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbtypedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbhostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbhost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbhostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbpassdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbpass']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbpassdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbnamedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbname']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbnamedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwiusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwiusrcr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwiusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<?PHP
} elseif(isset($install_webuser)) {
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['isntwiusrh']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="confweb" method="POST">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwiusrdesc"><?php echo $lang['user']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="user" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwiusrdesc"><?php echo $lang['pass']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="password" class="form-control" name="pass" data-toggle="password" data-placement="before" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="confweb"><?php echo $lang['isntwiusrcr']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<?PHP
} elseif(isset($install_finished)) {
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
</div>
</div>
</div>
</div>
<?PHP
}
?>
</body>

View File

@@ -44,6 +44,11 @@ function enter_logfile($logpath,$timezone,$loglevel,$logtext) {
require_once(substr(__DIR__,0,-4).'other/config.php');
if(version_compare(phpversion(), '5.5.0', '<')) {
enter_logfile($logpath,$timezone,1,"Your PHP version (".phpversion().") is below 5.5.0. Update of PHP needed! Shuttin down!\n\n");
exit;
}
enter_logfile($logpath,$timezone,5,"Initialize Bot...");
require_once(substr(__DIR__,0,-4).'ts3_lib/TeamSpeak3.php');
require_once(substr(__DIR__,0,-4).'jobs/calc_user.php');
@@ -54,7 +59,7 @@ require_once(substr(__DIR__,0,-4).'jobs/calc_userstats.php');
require_once(substr(__DIR__,0,-4).'jobs/clean.php');
require_once(substr(__DIR__,0,-4).'jobs/check_db.php');
function log_mysql($jobname,$mysqlcon,$timezone) {
function log_mysql($jobname,$mysqlcon,$timezone,$dbname) {
$timestamp = time();
if($mysqlcon->exec("INSERT INTO $dbname.job_log (timestamp,job_name,status) VALUES ('$timestamp','$jobname','9')") === false) {
enter_logfile($logpath,$timezone,2,print_r($mysqlcon->errorInfo()));
@@ -127,26 +132,24 @@ try {
if($defchid != 0) {
try { usleep($slowmode); $ts3->clientMove($whoami['client_id'],$defchid); } catch (Exception $e) {}
}
$jobid = log_mysql('calc_user',$mysqlcon,$timezone);
calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$showgen,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients,$logpath);
$jobid = log_mysql('calc_user',$mysqlcon,$timezone,$dbname);
calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients,$logpath,$rankupmsg,$ignoreidle,$exceptcid);
check_shutdown($timezone,$logpath); usleep($slowmode);
$jobid = log_mysql('get_avatars',$mysqlcon,$timezone);
$jobid = log_mysql('get_avatars',$mysqlcon,$timezone,$dbname);
get_avatars($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$logpath);
check_shutdown($timezone,$logpath); usleep($slowmode);
$jobid = log_mysql('update_groups',$mysqlcon,$timezone);
$jobid = log_mysql('update_groups',$mysqlcon,$timezone,$dbname);
update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo,$logpath);
check_shutdown($timezone,$logpath); usleep($slowmode);
$jobid = log_mysql('calc_serverstats',$mysqlcon,$timezone);
$jobid = log_mysql('calc_serverstats',$mysqlcon,$timezone,$dbname);
calc_serverstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$serverinfo,$substridle,$grouptime,$logpath);
check_shutdown($timezone,$logpath); usleep($slowmode);
$jobid = log_mysql('calc_userstats',$mysqlcon,$timezone);
$jobid = log_mysql('calc_userstats',$mysqlcon,$timezone,$dbname);
calc_userstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$logpath);
check_shutdown($timezone,$logpath); usleep($slowmode);
$jobid = log_mysql('clean',$mysqlcon,$timezone);
$jobid = log_mysql('clean',$mysqlcon,$timezone,$dbname);
clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleanclients,$cleanperiod,$logpath);
//check auf fehler in job_log
$looptime = microtime(true) - $starttime;
//echo DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u "),"Loop: ",$looptime,"\n";
}
}
catch (Exception $e) {

View File

@@ -212,14 +212,14 @@ function calc_serverstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezon
$server_bytes_up = $serverinfo['connection_bytes_sent_total'];
$server_uptime = $serverinfo['virtualserver_uptime'];
$server_id = $serverinfo['virtualserver_id'];
$server_name = str_replace('\\', '\\\\', htmlspecialchars($serverinfo['virtualserver_name'], ENT_QUOTES));
$server_name = $mysqlcon->quote($serverinfo['virtualserver_name'], ENT_QUOTES);
$server_pass = $serverinfo['virtualserver_flag_password'];
$server_creation_date = $serverinfo['virtualserver_created'];
$server_platform = $serverinfo['virtualserver_platform'];
$server_weblist = $serverinfo['virtualserver_weblist_enabled'];
$server_version = $serverinfo['virtualserver_version'];
if($mysqlcon->exec("UPDATE $dbname.stats_server SET total_user='$total_user', total_online_time='$total_online_time', total_online_month='$total_online_month', total_online_week='$total_online_week', total_active_time='$total_active_time', total_inactive_time='$total_inactive_time', country_nation_name_1='$country_nation_name_1', country_nation_name_2='$country_nation_name_2', country_nation_name_3='$country_nation_name_3', country_nation_name_4='$country_nation_name_4', country_nation_name_5='$country_nation_name_5', country_nation_1='$country_nation_1', country_nation_2='$country_nation_2', country_nation_3='$country_nation_3', country_nation_4='$country_nation_4', country_nation_5='$country_nation_5', country_nation_other='$country_nation_other', platform_1='$platform_1', platform_2='$platform_2', platform_3='$platform_3', platform_4='$platform_4', platform_5='$platform_5', platform_other='$platform_other', version_name_1='$version_name_1', version_name_2='$version_name_2', version_name_3='$version_name_3', version_name_4='$version_name_4', version_name_5='$version_name_5', version_1='$version_1', version_2='$version_2', version_3='$version_3', version_4='$version_4', version_5='$version_5', version_other='$version_other', version_name_1='$version_name_1', server_status='$server_status', server_free_slots='$server_free_slots', server_used_slots='$server_used_slots', server_channel_amount='$server_channel_amount', server_ping='$server_ping', server_packet_loss='$server_packet_loss', server_bytes_down='$server_bytes_down', server_bytes_up='$server_bytes_up', server_uptime='$server_uptime', server_id='$server_id', server_name='$server_name', server_pass='$server_pass', server_creation_date='$server_creation_date', server_platform='$server_platform', server_weblist='$server_weblist', server_version='$server_version'") === false) {
if($mysqlcon->exec("UPDATE $dbname.stats_server SET total_user='$total_user', total_online_time='$total_online_time', total_online_month='$total_online_month', total_online_week='$total_online_week', total_active_time='$total_active_time', total_inactive_time='$total_inactive_time', country_nation_name_1='$country_nation_name_1', country_nation_name_2='$country_nation_name_2', country_nation_name_3='$country_nation_name_3', country_nation_name_4='$country_nation_name_4', country_nation_name_5='$country_nation_name_5', country_nation_1='$country_nation_1', country_nation_2='$country_nation_2', country_nation_3='$country_nation_3', country_nation_4='$country_nation_4', country_nation_5='$country_nation_5', country_nation_other='$country_nation_other', platform_1='$platform_1', platform_2='$platform_2', platform_3='$platform_3', platform_4='$platform_4', platform_5='$platform_5', platform_other='$platform_other', version_name_1='$version_name_1', version_name_2='$version_name_2', version_name_3='$version_name_3', version_name_4='$version_name_4', version_name_5='$version_name_5', version_1='$version_1', version_2='$version_2', version_3='$version_3', version_4='$version_4', version_5='$version_5', version_other='$version_other', version_name_1='$version_name_1', server_status='$server_status', server_free_slots='$server_free_slots', server_used_slots='$server_used_slots', server_channel_amount='$server_channel_amount', server_ping='$server_ping', server_packet_loss='$server_packet_loss', server_bytes_down='$server_bytes_down', server_bytes_up='$server_bytes_up', server_uptime='$server_uptime', server_id='$server_id', server_name=$server_name, server_pass='$server_pass', server_creation_date='$server_creation_date', server_platform='$server_platform', server_weblist='$server_weblist', server_version='$server_version'") === false) {
enter_logfile($logpath,$timezone,2,"calc_serverstats 8:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;

View File

@@ -1,32 +1,61 @@
<?PHP
function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$showgen,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients,$logpath) {
function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$update,$grouptime,$boostarr,$resetbydbchange,$msgtouser,$uniqueid,$updateinfotime,$currvers,$substridle,$exceptuuid,$exceptgroup,$allclients,$logpath,$rankupmsg,$ignoreidle,$exceptcid) {
$starttime = microtime(true);
$nowtime = time();
$sqlmsg = '';
$sqlerr = 0;
if(($getversion = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='get_version'")) === false) {
enter_logfile($logpath,$timezone,2,"calc_user -3:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
} else {
$getversion = $getversion->fetchAll();
$updatetime = $nowtime - 43200;
if ($getversion[0]['timestamp'] < $updatetime) {
set_error_handler(function() { });
$newversion = file_get_contents('http://ts-n.net/ranksystem/version');
restore_error_handler();
if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='get_version'") === false) {
enter_logfile($logpath,$timezone,2,"calc_user -2:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
if($mysqlcon->exec("UPDATE $dbname.config SET newversion='$newversion'") === false) {
enter_logfile($logpath,$timezone,2,"calc_user -1:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
}
}
if ($update == 1) {
$updatetime = $nowtime - $updateinfotime;
if(($lastupdate = $mysqlcon->query("SELECT * FROM $dbname.job_check WHERE job_name='check_update'")) === false) {
enter_logfile($logpath,$timezone,2,"calc_user 1:".print_r($mysqlcon->errorInfo()));
enter_logfile($logpath,$timezone,2,"calc_user 0:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
$lastupdate = $lastupdate->fetchAll();
if ($lastupdate[0]['timestamp'] < $updatetime) {
set_error_handler(function() { });
$newversion = file_get_contents('http://ts-n.net/ranksystem/version');
restore_error_handler();
if (substr($newversion, 0, 4) != substr($currvers, 0, 4) && $newversion != '') {
if(($getversion = $mysqlcon->query("SELECT newversion FROM $dbname.config")) === false) {
enter_logfile($logpath,$timezone,2,"calc_user 1:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
}
$getversion = $getversion->fetchAll();
$newversion = $getversion[0];
if(version_compare(substr($newversion, 0, 5), substr($currvers, 0, 5), '>') && $newversion != '') {
enter_logfile($logpath,$timezone,4,$lang['upinf']);
foreach ($uniqueid as $clientid) {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
try {
$ts3->clientGetByUid($clientid)->message(sprintf($lang['upmsg'], $currvers, $newversion));
enter_logfile($logpath,$timezone,5," ".sprintf($lang['upusrinf'], $clientid));
enter_logfile($logpath,$timezone,4," ".sprintf($lang['upusrinf'], $clientid));
}
catch (Exception $e) {
enter_logfile($logpath,$timezone,2," ".sprintf($lang['upusrerr'], $clientid));
enter_logfile($logpath,$timezone,4," ".sprintf($lang['upusrerr'], $clientid));
$sqlmsg .= $e->getCode() . ': ' . $e->getMessage();
$sqlerr++;
}
@@ -80,7 +109,7 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
}
unset($uuids);
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
$yetonline[] = '';
$insertdata = '';
if(empty($grouptime)) {
@@ -103,8 +132,12 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
$nation=$client['client_country'];
$version=$client['client_version'];
$firstconnect=$client['client_created'];
$channel=$client['cid'];
if (!in_array($uid, $yetonline) && $client['client_version'] != "ServerQuery") {
$clientidle = floor($client['client_idle_time'] / 1000);
if(isset($ignoreidle) && $clientidle < $ignoreidle) {
$clientidle = 0;
}
$yetonline[] = $uid;
if(in_array($uid, $exceptuuid) || array_intersect($sgroups, $exceptgroup)) {
$except = 1;
@@ -130,7 +163,7 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
$boosttime = $nowtime;
} else {
if ($nowtime > $sqlhis[$uid]['boosttime'] + $boost['time']) {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
try {
$ts3->serverGroupClientDel($boost['group'], $cldbid);
$boosttime = 0;
@@ -173,10 +206,14 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
$grpcount=0;
foreach ($grouptime as $time => $groupid) {
$grpcount++;
if ($activetime > $time && !in_array($uid, $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) {
if(in_array($channel, $exceptcid)) {
$count = $sqlhis[$uid]['count'];
$idle = $sqlhis[$uid]['idle'];
$except = 1;
} elseif ($activetime > $time && !in_array($uid, $exceptuuid) && !array_intersect($sgroups, $exceptgroup)) {
if ($sqlhis[$uid]['grpid'] != $groupid) {
if ($sqlhis[$uid]['grpid'] != 0 && in_array($sqlhis[$uid]['grpid'], $sgroups)) {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
try {
$ts3->serverGroupClientDel($sqlhis[$uid]['grpid'], $cldbid);
enter_logfile($logpath,$timezone,5,sprintf($lang['sgrprm'], $sqlhis[$uid]['grpid'], $name, $uid, $cldbid));
@@ -188,7 +225,7 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
}
}
if (!in_array($groupid, $sgroups)) {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
try {
$ts3->serverGroupClientAdd($groupid, $cldbid);
enter_logfile($logpath,$timezone,5,sprintf($lang['sgrpadd'], $groupid, $name, $uid, $cldbid));
@@ -206,17 +243,8 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
$hours = $dtF->diff($dtT)->format('%h');
$mins = $dtF->diff($dtT)->format('%i');
$secs = $dtF->diff($dtT)->format('%s');
if ($substridle == 1) {
try {
$ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgactive'], $days, $hours, $mins, $secs));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"calc_user 11:".sprintf($lang['sgrprerr'], $name, $uid, $cldbid));
$sqlmsg .= $e->getCode() . ': ' . $e->getMessage();
$sqlerr++;
}
} else {
try {
$ts3->clientGetByUid($uid)->message(sprintf($lang['usermsgonline'], $days, $hours, $mins, $secs));
$ts3->clientGetByUid($uid)->message(sprintf($rankupmsg, $days, $hours, $mins, $secs));
} catch (Exception $e) {
enter_logfile($logpath,$timezone,2,"calc_user 12:".sprintf($lang['sgrprerr'], $name, $uid, $cldbid));
$sqlmsg .= $e->getCode() . ': ' . $e->getMessage();
@@ -224,7 +252,6 @@ function calc_user($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$show
}
}
}
}
if($grpcount == 1) {
$nextup = 0;
}

View File

@@ -117,7 +117,7 @@ function calc_userstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,
$count_month = 0;
$idle_month = 0;
}
$clientdesc = str_replace('\\', '\\\\', htmlspecialchars($clientinfo['client_description'], ENT_QUOTES));
$clientdesc = $mysqlcon->quote($clientinfo['client_description'], ENT_QUOTES);;
if(isset($uidarrstats[$userstats['uuid']])) {
$allupdateuuid = $allupdateuuid . "'" . $userstats['uuid'] . "',";
$allupdaterank = $allupdaterank . "WHEN '" . $userstats['uuid'] . "' THEN '" . $userstats['rank'] . "' ";
@@ -129,9 +129,9 @@ function calc_userstats($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,
$allupdatebase64 = $allupdatebase64 . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_base64HashClientUID'] . "' ";
$allupdatecldtup = $allupdatecldtup . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_total_bytes_uploaded'] . "' ";
$allupdatecldtdo = $allupdatecldtdo . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientinfo['client_total_bytes_downloaded'] . "' ";
$allupdateclddes = $allupdateclddes . "WHEN '" . $userstats['uuid'] . "' THEN '" . $clientdesc . "' ";
$allupdateclddes = $allupdateclddes . "WHEN '" . $userstats['uuid'] . "' THEN " . $clientdesc . " ";
} else {
$allinsertuserstats = $allinsertuserstats . "('" . $userstats['uuid'] . "', '" .$userstats['rank'] . "', '" . $count_week . "', '" . $count_month . "', '" . $idle_week . "', '" . $idle_month . "', '" . $clientinfo['client_totalconnections'] . "', '" . $clientinfo['client_base64HashClientUID'] . "', '" . $clientinfo['client_total_bytes_uploaded'] . "', '" . $clientinfo['client_total_bytes_downloaded'] . "', '" . $clientdesc . "'),";
$allinsertuserstats = $allinsertuserstats . "('" . $userstats['uuid'] . "', '" .$userstats['rank'] . "', '" . $count_week . "', '" . $count_month . "', '" . $idle_week . "', '" . $idle_month . "', '" . $clientinfo['client_totalconnections'] . "', '" . $clientinfo['client_base64HashClientUID'] . "', '" . $clientinfo['client_total_bytes_uploaded'] . "', '" . $clientinfo['client_total_bytes_downloaded'] . "', " . $clientdesc . "),";
}
} catch (Exception $e) {
//error would be, when client is missing in ts db

View File

@@ -1,6 +1,6 @@
<?PHP
function check_db($mysqlcon,$lang,$dbname,$timezone,$currvers,$logpath) {
$newversion = '1.0.2-dev';
$newversion = '1.1.0';
enter_logfile($logpath,$timezone,5,"Check Ranksystem database for updates.");
function set_new_version($mysqlcon,$dbname,$timezone,$newversion,$logpath) {
@@ -10,20 +10,20 @@ function check_db($mysqlcon,$lang,$dbname,$timezone,$currvers,$logpath) {
exit;
} else {
$currvers = $newversion;
enter_logfile($logpath,$timezone,5," Database successfully updated!");
enter_logfile($logpath,$timezone,4," Database successfully updated!");
return $currvers;
}
}
function check_chmod($timezone) {
if (substr(sprintf('%o', fileperms(substr(__DIR__,0,-4).'icons/')), -4)!='0777') {
enter_logfile($logpath,$timezone,2,"Write Permissions failed on folder \"icons\". Please give them a chmod 777 and try to start the Ranksystem again.");
enter_logfile($logpath,$timezone,2,sprintf($lang['isntwichm'],'icons'));
}
if (substr(sprintf('%o', fileperms(substr(__DIR__,0,-4).'logs/')), -4)!='0777') {
enter_logfile($logpath,$timezone,2,"Write Permissions failed on folder \"logs\". Please give them a chmod 777 and try to start the Ranksystem again.");
enter_logfile($logpath,$timezone,2,sprintf($lang['isntwichm'],'logs'));
}
if (substr(sprintf('%o', fileperms(substr(__DIR__,0,-4).'avatars/')), -4)!='0777') {
enter_logfile($logpath,$timezone,2,"Write Permissions failed on folder \"avatars\". Please give them a chmod 777 and try to start the Ranksystem again.");
enter_logfile($logpath,$timezone,2,sprintf($lang['isntwichm'],'avatars'));
}
}
@@ -88,6 +88,31 @@ function check_db($mysqlcon,$lang,$dbname,$timezone,$currvers,$logpath) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: jquerylib/thickbox-compressed.js");
}
}
if(is_file(substr(__DIR__,0,-4).'other/webinterface_list.php')) {
if(!unlink(substr(__DIR__,0,-4).'other/webinterface_list.php')) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: other/webinterface_list.php");
}
}
if(is_file(substr(__DIR__,0,-4).'other/webinterface_login.php')) {
if(!unlink(substr(__DIR__,0,-4).'other/webinterface_login.php')) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: other/webinterface_login.php");
}
}
if(is_file(substr(__DIR__,0,-4).'webinterface.php')) {
if(!unlink(substr(__DIR__,0,-4).'webinterface.php')) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: webinterface.php");
}
}
if(is_file(substr(__DIR__,0,-4).'other/style.css.php')) {
if(!unlink(substr(__DIR__,0,-4).'other/style.css.php')) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: other/style.css.php");
}
}
if(is_file(substr(__DIR__,0,-4).'bootstrap/js/_bootstrap.js')) {
if(!unlink(substr(__DIR__,0,-4).'bootstrap/js/_bootstrap.js')) {
enter_logfile($logpath,$timezone,4,"Unnecessary file, please delete it from your webserver: bootstrap/js/_bootstrap.js");
}
}
}
if($currvers==$newversion) {
@@ -95,7 +120,7 @@ function check_db($mysqlcon,$lang,$dbname,$timezone,$currvers,$logpath) {
old_files($timezone);
check_chmod($timezone);
} elseif($currvers=="0.13-beta") {
enter_logfile($logpath,$timezone,5," Update the Ranksystem Database to version 1.01.");
enter_logfile($logpath,$timezone,4," Update the Ranksystem Database to version 1.0.1");
$errcount=1;
@@ -230,6 +255,26 @@ function check_db($mysqlcon,$lang,$dbname,$timezone,$currvers,$logpath) {
}
} else {
if($mysqlcon->exec("CREATE INDEX serverusage_timestamp ON $dbname.server_usage (timestamp)") === false) { }
if($mysqlcon->exec("ALTER TABLE $dbname.config ADD (advancemode int(1) NOT NULL default '0', count_access int(2) NOT NULL default '0', last_access bigint(11) NOT NULL default '0', ignoreidle bigint(11) NOT NULL default '0', exceptcid text CHARACTER SET utf8 COLLATE utf8_unicode_ci, rankupmsg text CHARACTER SET utf8 COLLATE utf8_unicode_ci, boost_mode int(1) NOT NULL default '0', newversion varchar(25) CHARACTER SET utf8 COLLATE utf8_unicode_ci)") === false) { } else {
enter_logfile($logpath,$timezone,4," Adjusted table config successfully.");
}
if($mysqlcon->exec("UPDATE $dbname.config set ignoreidle='600', rankupmsg='\\nHey, you got a rank up, cause you reached an activity of %s days, %s hours, %s minutes and %s seconds.', newversion='1.1.0'") === false) { } else {
enter_logfile($logpath,$timezone,4," Set default values to new fields in table config.");
}
if($mysqlcon->exec("INSERT INTO $dbname.job_check (job_name) VALUES ('get_version')") === false) { } else {
enter_logfile($logpath,$timezone,4," Set new values to table job_check.");
}
if(($password = $mysqlcon->query("SELECT webpass FROM $dbname.config")) === false) { }
$password = $password->fetchAll();
if(strlen($password[0]['webpass']) != 60) {
$newwebpass = password_hash($password[0]['webpass'], PASSWORD_DEFAULT);
if($mysqlcon->exec("UPDATE $dbname.config set webpass='$newwebpass'") === false) { } else {
enter_logfile($logpath,$timezone,4," Encrypted password for the webinterface and wrote hash to database.");
}
}
if($mysqlcon->exec("ALTER TABLE $dbname.config DROP COLUMN showexgrp, DROP COLUMN showgen, DROP COLUMN bgcolor, DROP COLUMN hdcolor, DROP COLUMN txcolor, DROP COLUMN hvcolor, DROP COLUMN ifcolor, DROP COLUMN wncolor, DROP COLUMN sccolor") === false) { } else {
enter_logfile($logpath,$timezone,4," Delete old configs, which are no more needed.");
}
$currvers = set_new_version($mysqlcon,$dbname,$timezone,$newversion,$logpath);
old_files($timezone);
check_chmod($timezone);

View File

@@ -37,7 +37,7 @@ function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleancli
$countrs = $dbuserdata->rowCount();
$uuids = $dbuserdata->fetchAll();
if ($lastclean[0]['timestamp'] < $cleantime) {
enter_logfile($logpath,$timezone,5,$lang['clean']);
enter_logfile($logpath,$timezone,4,$lang['clean']);
$start=0;
$break=200;
$clientdblist=array();
@@ -50,7 +50,7 @@ function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleancli
if ($start == 100000 || $count_tsuser['count'] <= $start) {
break;
}
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
}
foreach($clientdblist as $uuidts) {
$single_uuid = $uuidts['client_unique_identifier']->toString();
@@ -68,8 +68,8 @@ function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleancli
}
unset($uidarrts);
enter_logfile($logpath,$timezone,5," ".sprintf($lang['cleants'], $countts, $count_tsuser['count']));
enter_logfile($logpath,$timezone,5," ".sprintf($lang['cleanrs'], $countrs));
enter_logfile($logpath,$timezone,4," ".sprintf($lang['cleants'], $countts, $count_tsuser['count']));
enter_logfile($logpath,$timezone,4," ".sprintf($lang['cleanrs'], $countrs));
if(isset($deleteuuids)) {
$alldeldata = '';
@@ -84,7 +84,7 @@ function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleancli
$sqlmsg .= print_r($mysqlcon->errorInfo());
$sqlerr++;
} else {
enter_logfile($logpath,$timezone,5," ".sprintf($lang['cleandel'], $countdel));
enter_logfile($logpath,$timezone,4," ".sprintf($lang['cleandel'], $countdel));
if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) {
enter_logfile($logpath,$timezone,2,"clean 6:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());
@@ -93,7 +93,7 @@ function clean($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$cleancli
}
}
} else {
enter_logfile($logpath,$timezone,2," ".$lang['cleanno']);
enter_logfile($logpath,$timezone,4," ".$lang['cleanno']);
if($mysqlcon->exec("UPDATE $dbname.job_check SET timestamp='$nowtime' WHERE job_name='check_clean'") === false) {
enter_logfile($logpath,$timezone,2,"clean 7:".print_r($mysqlcon->errorInfo()));
$sqlmsg .= print_r($mysqlcon->errorInfo());

View File

@@ -6,7 +6,7 @@ function get_avatars($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$lo
$count = 0;
try {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
$tsfilelist = $ts3->channelFileList($cid="0", $cpw="", $path="/");
} catch (Exception $e) {
if ($e->getCode() != 1281) {
@@ -29,7 +29,7 @@ function get_avatars($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$lo
if (!isset($fsfilelistarray[$uuidasbase16.'.png']) || $tsfile['datetime']>$fsfilelistarray[$uuidasbase16.'.png']) {
if (substr($tsfile['name'],0,7) == 'avatar_') {
try {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
$avatar = $ts3->transferInitDownload($clientftfid="5",$cid="0",$name=$fullfilename,$cpw="", $seekpos=0);
$transfer = TeamSpeak3::factory("filetransfer://" . $avatar["host"] . ":" . $avatar["port"]);
$tsfile = $transfer->download($avatar["ftkey"], $avatar["size"]);

View File

@@ -5,7 +5,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
$sqlerr = 0;
try {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
$iconlist = $ts3->channelFileList($cid="0", $cpw="", $path="/icons/");
} catch (Exception $e) {
if ($e->getCode() != 1281) {
@@ -21,7 +21,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
}
try {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
$ts3->serverGroupListReset();
$ts3groups = $ts3->serverGroupList();
} catch (Exception $e) {
@@ -56,7 +56,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
if (!isset($sqlhisgroup['0']) || $sqlhisgroup['0']['iconid'] != $sIconId || $iconarr["i".$sIconId] > $sqlhisgroup['0']['icondate']) {
if($sIconId > 600) {
try {
check_shutdown($timezone); usleep($slowmode);
check_shutdown($timezone,$logpath); usleep($slowmode);
enter_logfile($logpath,$timezone,5,"Download new ServerIcon");
$sIconFile = $ts3->iconDownload();
if(file_put_contents(substr(dirname(__FILE__),0,-4) . "icons/servericon.png", $sIconFile) === false) {
@@ -71,7 +71,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
if (!isset($sqlhisgroup['0'])) {
$insertgroups[] = array(
"sgid" => "0",
"sgidname" => "ServerIcon",
"sgidname" => $mysqlcon->quote("ServerIcon", ENT_QUOTES),
"iconid" => $sIconId,
"icon" => $sIconFile,
"icondate" => $iconarr["i".$sIconId]
@@ -79,7 +79,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
} else {
$updategroups[] = array(
"sgid" => "0",
"sgidname" => "ServerIcon",
"sgidname" => $mysqlcon->quote("ServerIcon", ENT_QUOTES),
"iconid" => $sIconId,
"icon" => $sIconFile,
"icondate" => $iconarr["i".$sIconId]
@@ -91,7 +91,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
foreach ($ts3groups as $servergroup) {
$tsgroupids[] = $servergroup['sgid'];
$sgid = $servergroup['sgid'];
$sgname = str_replace('\\', '\\\\', htmlspecialchars($servergroup['name'], ENT_QUOTES));
$sgname = $mysqlcon->quote($servergroup['name'], ENT_QUOTES);
$gefunden = 2;
$iconid = $servergroup['iconid'];
$iconid = ($iconid < 0) ? (pow(2, 32)) - ($iconid * -1) : $iconid;
@@ -148,7 +148,11 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
if (isset($insertgroups)) {
$allinsertdata = '';
foreach ($insertgroups as $insertarr) {
$allinsertdata = $allinsertdata . "('" . $insertarr['sgid'] . "', '" . $insertarr['sgidname'] . "', '" . $insertarr['iconid'] . "', '" . $insertarr['icondate'] . "'),";
if( $insertarr['iconid'] == 0) {
//enter_logfile($logpath,$timezone,6,"IconID is 0 for (servergroup) ".$insertarr['sgidname']." (".$insertarr['sgid'].")");
continue;
}
$allinsertdata = $allinsertdata . "('" . $insertarr['sgid'] . "', " . $insertarr['sgidname'] . ", '" . $insertarr['iconid'] . "', '" . $insertarr['icondate'] . "'),";
}
$allinsertdata = substr($allinsertdata, 0, -1);
if ($allinsertdata != '') {
@@ -167,7 +171,7 @@ function update_groups($ts3,$mysqlcon,$lang,$dbname,$slowmode,$jobid,$timezone,$
$allupdatedate = '';
foreach ($updategroups as $updatedata) {
$allsgids = $allsgids . "'" . $updatedata['sgid'] . "',";
$allupdatesgid = $allupdatesgid . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['sgidname'] . "' ";
$allupdatesgid = $allupdatesgid . "WHEN '" . $updatedata['sgid'] . "' THEN " . $updatedata['sgidname'] . " ";
$allupdateiconid = $allupdateiconid . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['iconid'] . "' ";
$allupdatedate = $allupdatedate . "WHEN '" . $updatedata['sgid'] . "' THEN '" . $updatedata['icondate'] . "' ";
}

364
languages/core_ar.php Normal file
View File

@@ -0,0 +1,364 @@
<?PHP
$lang = array();
$lang['adduser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is unknown -> added to the Ranksystem now.";
$lang['changedbid'] = "User %s (unique Client-ID: %s) got a new TeamSpeak Client-database-ID (%s). Update the old Client-database-ID (%s) and reset collected times!";
$lang['crawl'] = "البحث عن المستخدمين المتواجدين وحساب التفاعل";
$lang['clean'] = "البحث عن المستخدمين الذين من المفروض حذفهم";
$lang['cleanc'] = "تصفية المستخدمين";
$lang['cleancdesc'] = "With this function the old clients in the Ranksystem get deleted.<br><br>To this end, the Ranksystem sychronized with the TeamSpeak database. Clients, which do not exist in TeamSpeak, will be deleted from the Ranksystem.<br><br>This function is only enabled when the 'Slowmode' is deactivated!<br><br><br>For automatic adjustment of the TeamSpeak database the ClientCleaner can be used:<br>http://ts-n.net/clientcleaner.php";
$lang['cleandel'] = "There were %s clients deleted out of the Ranksystem database, cause they were no longer existing in the TeamSpeak database.";
$lang['cleanno'] = "ليس هناك شيء ليتم مسحه ";
$lang['cleanp'] = "مدى التصفية";
$lang['cleanpdesc'] = "Set a time that has to elapse before the 'clean clients' runs next.<br><br>Set a time in seconds.<br><br>Recommended is once a day, cause the client cleaning needs much time for bigger databases.";
$lang['cleanrs'] = "المستخدمون في قاعدة باينات نظام الرتب: %s";
$lang['cleants'] = "المستخدمين الذين تم العثور عليهم في قاعدة بايانات التيم سبيك: %s (of %s)";
$lang['days'] = "<small>المئوية</small> %d";
$lang['dbconerr'] = "فشل الدخول الى قاعدة بيانات قاعدة بيانات: ";
$lang['delcldgrpif'] = "خلل عند حذف المعلومات من مجموعات السيرفر: %s";
$lang['delcldgrpsc'] = "Knowledge about servergroups for %s User successfully removed.";
$lang['delclientsif'] = "%s Clients deleted out of the Ranksystem database!";
$lang['delclientssc'] = "%s Clients successfully deleted out of the Ranksystem database!";
$lang['errlogin'] = "اسم المستخدم او كلمة المرور خاطئة! حاول مجددا...";
$lang['errlogin2'] = "Brute force protection: Try it again in %s seconds!";
$lang['errlogin3'] = "Brute force protection: To much misstakes. Banned for 300 Seconds!";
$lang['error'] = "خلل ";
$lang['errremgrp'] = "Error while removing user with unique Client-ID %s out of the servergroup with servergroup-database-ID %s!";
$lang['errremdb'] = "Error while removing user with unique Client-ID %s out of the Ranksystem database!";
$lang['errsel'] = "Error while choosing the selections with<br>selected client: %s<br>option 'delete clients': %s<br>option 'sum. online time': %s";
$lang['errukwn'] = "حدث خلل غير معروف!";
$lang['errupcount'] = "Error while renewing the summary online time of %s by user with the unique Client-ID %s";
$lang['highest'] = "تم الوصول الى اعلى رتبة";
$lang['install'] = "Installation";
$lang['instdb'] = "تنصيب قاعدة البيانات";
$lang['instdbsuc'] = "قاعدة البيانات %s أنشات بنجاح.";
$lang['isntwicfg'] = "Can't save the database configuration! Please edit the 'other/dbconfig.php' with a chmod 0777 and try again after.";
$lang['isntwicfg2'] = "Configurate Webinterface";
$lang['isntwichm'] = "Write Permissions failed on folder \"%s\". Please give them a chmod 777 and try to start the Ranksystem again.";
$lang['isntwidbhost'] = "DB Hostaddress:";
$lang['isntwidbhostdesc'] = "عنوان خادم قاعدة البيانات<br>(IP or DNS)";
$lang['isntwidbmsg'] = "خلل في قاعدة البيانات: ";
$lang['isntwidbname'] = "DB Name:";
$lang['isntwidbnamedesc'] = "اسم قاعدة البيانات";
$lang['isntwidbpass'] = "DB Password:";
$lang['isntwidbpassdesc'] = "كلمة مرور قاعدة البيانات";
$lang['isntwidbtype'] = "DB Type:";
$lang['isntwidbtypedesc'] = "Database type<br><br>You have to install the needed PDO Driver.<br>For more informations have look at the requirements on http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "DB User:";
$lang['isntwidbusrdesc'] = "User to access the database";
$lang['isntwidel'] = "Please delete the file 'install.php' from your webserver and open the %s to configure the Ranksystem!";
$lang['isntwiusr'] = "المستخدم للوحة التحكم انشئ بنجاح";
$lang['isntwiusrcr'] = "Create Webinterface-User";
$lang['isntwiusrdesc'] = "ادخل الاسم وكلمة المرور للدخول الى لوحة التحكم . بإستخدام لوحة التحكم يمكنك التعديل على نظام الرتب";
$lang['isntwiusrh'] = "Access - Webinterface";
$lang['listacsg'] = "actual servergroup";
$lang['listcldbid'] = "Client-database-ID";
$lang['listexgrp'] = "Will not conside for the Ranksystem (servergroup exception).";
$lang['listexuid'] = "Will not conside for the Ranksystem (client exception).";
$lang['listip'] = "IP address";
$lang['listnick'] = "اسم المستخدم";
$lang['listnxsg'] = "الرتبة التالية";
$lang['listnxup'] = "الترفيع التالي";
$lang['listrank'] = "رتبة";
$lang['listseen'] = "اخر ظهور";
$lang['listsuma'] = "sum. وقت التفاعل";
$lang['listsumi'] = "sum. وقت عدم التواجد";
$lang['listsumo'] = "sum. وقت التواجد";
$lang['listuid'] = "unique Client-ID";
$lang['login'] = "Login";
$lang['nocount'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is a query-user or is several times online (only first connection counts) -> this will not count!";
$lang['noentry'] = "لم يتم العثور على اي مدخلات";
$lang['pass'] = "كلمة المرور";
$lang['queryname'] = "اسم البوت الاول قيد الاستخدام جاري المحاولة باسم البوت الثاني";
$lang['sccrmcld'] = "User with unique Client-ID %s successfull removed from the Ranksystem database.";
$lang['sccupcount'] = "User with the unique Client-ID %s successfull overwritten with a summary online time of %s.";
$lang['setontime'] = "sum. online time";
$lang['setontimedesc'] = "Enter a new summary online time, which should be set to the previous selected clients. With this the old summary online gets overwritten.<br><br>The entered summary online time will be considered for the rank up.";
$lang['sgrpadd'] = "Grant servergroup %s to user %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['sgrprerr'] = "It happened a problem with the servergroup of the user %s (unique Client-ID: %s; Client-database-ID %s)!";
$lang['sgrprm'] = "تم حذف مجموعة السيرفر %s من المستخدم %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['stix0001'] = "حالة السيرفر";
$lang['stix0002'] = "مجموع المستخدمين";
$lang['stix0003'] = "عرض التفاصيل";
$lang['stix0004'] = "مجموع وقت التواجد لكل المستخدمين";
$lang['stix0005'] = "اضهار الاول في كل الاوقات";
$lang['stix0006'] = "اضهار الاول لهذا الشهر";
$lang['stix0007'] = "اضهار الاول لهذا الاسبوع";
$lang['stix0008'] = "مدة استعمال السيرفر";
$lang['stix0009'] = "في اخر 7 ايام";
$lang['stix0010'] = "في اخر 30 يوم";
$lang['stix0011'] = "في اخر 24 ساعة";
$lang['stix0012'] = "حدد المدة";
$lang['stix0013'] = "قبل يوم";
$lang['stix0014'] = "قبل اسبوع";
$lang['stix0015'] = "قبل شهر";
$lang['stix0016'] = "Active / inactive time (of all clients)";
$lang['stix0017'] = "الاصدارات (كل المستخدمين)";
$lang['stix0018'] = "القوميات (لكل المستخدمين)";
$lang['stix0019'] = "Platforms (of all clients)";
$lang['stix0020'] = "Current statistics";
$lang['stix0023'] = "حالة السيرفر";
$lang['stix0024'] = "متواجد";
$lang['stix0025'] = "غير متواجد";
$lang['stix0026'] = " (Online / Max)";
$lang['stix0027'] = "عدد القنوات";
$lang['stix0028'] = "Average server ping";
$lang['stix0029'] = "Total bytes received";
$lang['stix0030'] = "Total bytes sent";
$lang['stix0031'] = "وقت عمل السيرفر";
$lang['stix0032'] = "قبل ايقاف التشغيل:";
$lang['stix0033'] = "Days <span id=\"days\">00</span>, Hours <span id=\"hours\">00</span>, Mins <span id=\"minutes\">00</span>, Secs <span id=\"seconds\">00</span>";
$lang['stix0034'] = "Average packet loss";
$lang['stix0035'] = "Overall statistics";
$lang['stix0036'] = "اسم الخادم";
$lang['stix0037'] = "عنوان الخادم (Host Address : Port)";
$lang['stix0038'] = "كلمة مرور الخادم";
$lang['stix0039'] = "لا (الخادم عام)";
$lang['stix0040'] = "نعم (الخادم خاص)";
$lang['stix0041'] = "Server ID";
$lang['stix0042'] = "Server platform";
$lang['stix0043'] = "اصدار السيرفر";
$lang['stix0044'] = "تاريخ انشاء الخادم (يوم/شهر/سنة)";
$lang['stix0045'] = "ابلاغ الى جدو السيرفر";
$lang['stix0046'] = "مفعل";
$lang['stix0047'] = "غير مفعل";
$lang['stix0048'] = "عدد غير كافي من المعلومات حتى الان";
$lang['stix0049'] = "وقت التواجد لكل المستخدمين / شهر";
$lang['stix0050'] = "وقت التواجد لكل المستخدمين / اسبوع";
$lang['stix0051'] = "لقد فشل التيم سبيك لذا لن يكون هناك عملية انشاء";
$lang['stmy0001'] = "حالتي";
$lang['stmy0002'] = "رتبة";
$lang['stmy0003'] = "Database ID:";
$lang['stmy0004'] = "Unique ID:";
$lang['stmy0005'] = "عدد مرات الدخول الى السيرفر:";
$lang['stmy0006'] = "تاريخ بدء الحالة:";
$lang['stmy0007'] = "المجموع الكلي لوقت التواجد:";
$lang['stmy0008'] = "وقت التواجد للايام الـ7 الاخيرة:";
$lang['stmy0009'] = "وقت التواجد للايام الـ30 الاخيرة:";
$lang['stmy0010'] = "اكملت الانجازات:";
$lang['stmy0011'] = "Time achievement progress";
$lang['stmy0012'] = "Time: Legendary";
$lang['stmy0013'] = "ساعات %s لانه لديك وقت تواجد";
$lang['stmy0014'] = "Progress completed";
$lang['stmy0015'] = "Time: Gold";
$lang['stmy0016'] = "Completed for Legendary %";
$lang['stmy0017'] = "Time: Silver";
$lang['stmy0018'] = "Completed for Gold %";
$lang['stmy0019'] = "Time: Bronze";
$lang['stmy0020'] = "Completed for Silver %";
$lang['stmy0021'] = "Time: Unranked";
$lang['stmy0022'] = "Completed for Bronze %";
$lang['stmy0023'] = "Connection achievement progress";
$lang['stmy0024'] = "Connects: اسطوري";
$lang['stmy0025'] = "مرات الى سيرفر التيم سبيك %s لانك قمت بالدخول";
$lang['stmy0026'] = "Connects: ذهبي";
$lang['stmy0027'] = "Connects: فضي";
$lang['stmy0028'] = "Connects: برونزي";
$lang['stmy0029'] = "Connects: لايوجد رتبة";
$lang['stmy0030'] = "Progress next servergroup";
$lang['stnv0001'] = "اخبار الخادم";
$lang['stnv0002'] = "اغلاق";
$lang['stnv0003'] = "انعاش معلومات المستخدم";
$lang['stnv0004'] = "Only use this refresh, when your TS3 information got changed, such as your TS3 username";
$lang['stnv0005'] = "يعمل عندما تكون داخل سيرفر الـتيمسبيك في نفس الوقت";
$lang['stnv0006'] = "إنعاش";
$lang['stnv0007'] = "منطقة النزال - مضمون الصفحة";
$lang['stnv0008'] = "يمكنك تحدي المستخدمين الاخرين في معركة بين اثنين او بين فريقين";
$lang['stnv0009'] = "في خلال المعركة سيتم حساب وقت التواجد للاعبين او للفريقين";
$lang['stnv0010'] = "عند انتهاء المعركة المستخدم او الفريق الذي لديه اعلى وقت تواحد سيعتبر الفائز";
$lang['stnv0011'] = "(الوقت الاعتيادي للمعركة هو 48 ساعة)";
$lang['stnv0012'] = "المستخدم او الفريق الفائز يحصل على مبلغ يمكنه استخدامه عندما يريد";
$lang['stnv0013'] = "سيتم اضهاره على لوحة <a href=\"my_stats.php\">My statistics</a> ";
$lang['stnv0014'] = "( يمكن ان يكون تسريع وقت تواجد لمدة 8 ساعات, زيادة وقت التواجد 4 ساعات اضافية , الخ ";
$lang['stnv0015'] = "يمكن استخدام هذه التسريعات للصعود على سبيل المثال فوق افضل المستخدمين للاسبوع";
$lang['stnv0016'] = "غير متوفر";
$lang['stnv0017'] = "You are not connected to the TS3 Server, so it can't display any data for you.";
$lang['stnv0018'] = "Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner.";
$lang['stnv0019'] = "My statistics - Page content";
$lang['stnv0020'] = "تحتوي هذا الصفحة على مختصر لحالتك الخاصة ومجموع وقت تواجدك على السيرفر";
$lang['stnv0021'] = "The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server.";
$lang['stnv0022'] = "This page receives its values out of a database. So the values might be delayed a bit.";
$lang['stnv0023'] = "The sum inside of the donut charts may differ to the amount of 'Total user'. The reason is that this data weren't collected with older versions of the Ranksystem.";
$lang['stnv0024'] = "نظام الرتب - الحالة";
$lang['stnv0025'] = "تحديد المدخلات";
$lang['stnv0026'] = "الكل";
$lang['stnv0027'] = "المعلومات على هذه الصفحة قد تكون منتهية الصلاحية! يبدو ان نظام الرتب لم يعد متصلا بسيرفر التيم سبيك";
$lang['stnv0028'] = "(انت غير متصل بسيرفر التيم سبيك!)";
$lang['stnv0029'] = "List Rankup";
$lang['stnv0030'] = "لغات نظام الرتب";
$lang['stnv0031'] = "About the search field you can search for pattern in clientname, unique Client-ID and Client-database-ID.";
$lang['stnv0032'] = "You can also use a view filter options (see below). Enter the filter also inside the search field.";
$lang['stnv0033'] = "Combination of filter and search pattern are possible. Enter first the filter(s) followed without any sign your search pattern.";
$lang['stnv0034'] = "Also it is possible to combine multiple filters. Enter this consecutively inside the search field.";
$lang['stnv0035'] = "<u>Example:</u><br>filter:nonexcepted:TeamSpeakUser";
$lang['stnv0036'] = "Show only clients, which are excepted (client, servergroup or channel exception).";
$lang['stnv0037'] = "Show only clients, which are not excepted.";
$lang['stnv0038'] = "Show only clients, which are online.";
$lang['stnv0039'] = "Show only clients, which are not online.";
$lang['stnv0040'] = "Show only clients, which are in defined group. Represent the actuel rank/level.<br>Replace <i>GROUPID</i> with the wished servergroup ID.";
$lang['stnv0041'] = "Show only clients, which are selected by lastseen.<br>Replace <i>OPERATOR</i> with '<' or '>' or '=' or '!='.<br>And replace <i>TIME</i> with a timestamp or date with format 'Y-m-d H-i' (example: 2016-06-18 20-25).<br>Full example: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Show only clients, which are from defined country.<br>Replace <i>TS3-COUNTRY-CODE</i> with the wished country.<br>For list of codes google for ISO 3166-1 alpha-2";
$lang['stri0001'] = "معلومات نظام الرتب";
$lang['stri0002'] = "ماهو نظام الرتب؟";
$lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site.";
$lang['stri0004'] = "من الذي اخترع نظام الرتب؟";
$lang['stri0005'] = "متى تم اطلاق نظام الرتب ؟";
$lang['stri0006'] = "اول اصدار اولي: 05/10/2014.";
$lang['stri0007'] = "اول اصدار تجريبي: 01/02/2015.";
$lang['stri0008'] = "يمكنك رؤية اخر اصدار على <a href=\"http://ts-n.net/ranksystem.php\" target=\"_blank\">Ranksystem Website</a>.";
$lang['stri0009'] = "كيف تم انشاء نظام الرتب ؟";
$lang['stri0010'] = "The Ranksystem is coded in";
$lang['stri0011'] = "It uses also the following libraries:";
$lang['stri0012'] = "شكر خاص الى:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - for russian translation";
$lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - for italian translation";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - for initialisation arabic translation";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - for initialisation romanian translation";
$lang['sttw0001'] = "افضل مستخدمين";
$lang['sttw0002'] = "لهذا الاسبوع";
$lang['sttw0003'] = "مع %s ساعات وقت تواجد";
$lang['sttw0004'] = "Top 10 compared";
$lang['sttw0005'] = "Hours (Defines 100 %)";
$lang['sttw0006'] = "%s hours (%s&#37;)";
$lang['sttw0007'] = "Top 10 Statistics";
$lang['sttw0008'] = "Top 10 vs others in online time";
$lang['sttw0009'] = "Top 10 vs others in active time";
$lang['sttw0010'] = "Top 10 vs others in inactive time";
$lang['sttw0011'] = "Top 10 (in hours)";
$lang['sttw0012'] = "(in hours) Other users %s";
$lang['sttw0013'] = "With %s hours active time";
$lang['sttm0001'] = "لهذا الشهر";
$lang['stta0001'] = "لكل الوقت";
$lang['upinf'] = "يتوفر اصدار جديد من نظام الرتب; ابلغ المستخدمين في السيرفر";
$lang['upmsg'] = "\nHey, a new version of the [B]Ranksystem[/B] is available!\n\ncurrent version: %s\n[B]new version: %s[/B]\n\nPlease check out our site for more informations [URL]http://ts-n.net/ranksystem.php[/URL].";
$lang['upsucc'] = "Database update successfully executed.";
$lang['upuser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s).";
$lang['upuserboost'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "The unique Client-ID %s couldn't reached on the TeamSpeak!";
$lang['upusrinf'] = "المستخدم %s المستخدمح";
$lang['user'] = "اسم المستخدم";
$lang['wiaction'] = "action";
$lang['wiboost'] = "boost";
$lang['wiboostdesc'] = "Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.<br>The higher the factor, the faster an user reaches the next higher rank.<br>Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.<br><br>servergroup ID => factor => time (in seconds)<br><br>Each entry have to separate from next with a comma.<br><br>Example:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on...";
$lang['wibot1'] = "Ranksystem Bot should be stopped. Check the log below for more information!";
$lang['wibot2'] = "Ranksystem Bot should be started. Check the log below for more information!";
$lang['wibot3'] = "Ranksystem Bot should be restarted. Check the log below for more information!";
$lang['wibot4'] = "Start / Stop Ranksystem Bot";
$lang['wibot5'] = "Start Bot";
$lang['wibot6'] = "Stop Bot";
$lang['wibot7'] = "Restart Bot";
$lang['wibot8'] = "Ranksystem log (extract):";
$lang['wibot9'] = "Fill out all mandatory fields before starting the Ranksystem Bot!";
$lang['wichdbid'] = "Client-database-ID reset";
$lang['wichdbiddesc'] = "Reset the online time of an user, if his TeamSpeak Client-database-ID changed.<br><br>Example:<br>If a clients gets removed from the TeamSpeak server, it gets a new Client-database-ID with the next connect to the server.";
$lang['wiconferr'] = "There is an error in the configuration of the Ranksystem. Please go to the webinterface and correct the Core Settings. Especially check the config 'rank up'!";
$lang['widaform'] = "نظام التاريخ";
$lang['widaformdesc'] = "اختر كيفية ضهور التاريخ.<br><br>Example:<br>%a ايام, %h ساعات, %i دقائق, %s ثوان";
$lang['widbcfgsuc'] = "تعديلات قاعدة البيانات حفظت بنجاح";
$lang['widbcfgerr'] = "'other/dbconfig.php'خلل عند حفظ تعديلات قاعدة البيانات فشل الاتصال مع ";
$lang['widelcld'] = "حذف المستخدمين";
$lang['widelcldgrp'] = "اعادة انشاء المجاميع";
$lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.<br><br>With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.<br>For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.<br><br>This function can be helpful, when user are not in the servergroup, they should be for the defined online time.<br><br>Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)";
$lang['widelclddesc'] = "Delete the before selected clients out of the Ranksystem database.<br><br>With this deletion are the clients on the TeamSpeak Server untouched.";
$lang['widelsg'] = "حذف من مجموعات السيرفر";
$lang['widelsgdesc'] = "Choose if the clients should also be removed out of the last known servergroup, when you delete clients out of the Ranksystem database.<br><br>It will only considered servergroups, which concerned the Ranksystem";
$lang['wideltime'] = "وقت الحذف";
$lang['wideltimedesc'] = "Clean old clients out of the Ranksystem database.<br>Entry a time in seconds which a client was not seen to delete it.<br><br>0 - deletes all clients out of the Ranksystem<br><br>The Userdatas on the TeamSpeak server are with this untouched!";
$lang['wiexcid'] = "Channel-Ausnahmen";
$lang['wiexciddesc'] = "A comma separated list of the channel-IDs that are not to participate in the Ranksystem.<br><br>Stay users in one of the listed channels, the time there will be completely ignored. There is neither the online time, yet the idle time counted.<br><br>Sense does this function only with the mode 'online time', cause here could be ignored AFK channels for example.<br>With the mode 'active time', this function is useless because as would be deducted the idle time in AFK rooms and thus not counted anyway.<br><br>Be a user in an excluded channel, it is noted for this period as 'excluded from the Ranksystem'. The user dows no longer appears in the list 'stats/list_rankup.php' unless excluded clients should not be displayed there (Stats Page - excepted client).";
$lang['wiexgrp'] = "servergroup exception";
$lang['wiexgrpdesc'] = "A comma seperated list of servergroup-IDs, which should not conside for the Ranksystem.<br>User in at least one of this servergroups IDs will be ignored for the rank up.";
$lang['wiexuid'] = "استثناء المستخدم";
$lang['wiexuiddesc'] = "A comma seperated list of unique Client-IDs, which should not conside for the Ranksystem.<br>User in this list will be ignored for the rank up.";
$lang['wigrptime'] = "ترفيع رتبة";
$lang['wigrptimedesc'] = "Define here after which time a user should get automatically a predefined servergroup.<br><br>time (seconds)=>servergroup ID<br><br>Important for this is the 'online time' or the 'active time' of an user, depending on setting of the mode.<br><br>Each entry have to separate from next with a comma.<br><br>The time must be entered cumulative<br><br>Example:<br>60=>9,120=>10,180=>11<br><br>On this a user get after 60 seconds the servergroup 9, in turn after 60 seconds the servergroup 10, and so on...";
$lang['wihladm'] = "List Rankup (Admin-Mode)";
$lang['wihlcfg'] = "خيارات النواة";
$lang['wihldb'] = "اعدادات قاعدة البيانات";
$lang['wihlmsg'] = "Message settings";
$lang['wihlsty'] = "Stats page settings";
$lang['wihlts'] = "TeamSpeak settings";
$lang['wihlvs'] = "Various settings";
$lang['wiignidle'] = "Ignoriere Idle";
$lang['wiignidledesc'] = "Define a period, up to which the idle time of an user will be ignored.<br><br>When a client does not do anything on the server (=idle), this time is noted by the Ranksystem. With this feature the idle time of an user will not be counted until the defined limit. Only when the defined limit is exceeded, it counts from that date for the Ranksystem as idle time.<br><br>This function plays only in conjunction with the mode 'active time' a role.<br><br>Meaning the function is e.g. to evaluate the time of listening in conversations as activity.<br><br>0 = disable the feature<br><br>Example:<br>Ignore idle = 600 (seconds)<br>A client has an idle of 8 minuntes<br>consequence:<br>8 minutes idle are ignored and he therefore receives this time as active time. If the idle time now increased to over 12 minutes so the time is over 10 minutes, and in this case 2 minutes would be counted as idle time.";
$lang['wilog'] = "Logpath";
$lang['wilogdesc'] = "Path of the log file of the Ranksystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Be sure, the webuser has the write-permissions to the logpath.";
$lang['wimsgmsg'] = "Message";
$lang['wimsgmsgdesc'] = "Define a message, which will be send to an user, when he rises the next higher rank.<br><br>This message will be send via TS3 private message. So every know bb-code could be used, which also works for a normal private message.<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Furthermore, the previously spent time can be expressed by arguments:<br>%1\$s - days<br>%2\$s - hours<br>%3\$s - minutes<br>%4\$s - seconds<br><br>Example:<br>Hey,\\nyou reached a higher rank, since you already connected for %1\$s days, %2\$s hours and %3\$s minutes to our TS3 server.[B]Keep it up![/B] ;-)";
$lang['wilogout'] = "تسجيل الخروج";
$lang['wimsgusr'] = "Rank up notification";
$lang['wimsgusrdesc'] = "Inform an user with a private text message about his rank up.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "Database";
$lang['winav3'] = "Core";
$lang['winav4'] = "Other";
$lang['winav5'] = "Message";
$lang['winav6'] = "Stats page";
$lang['winav7'] = "Administrate";
$lang['winav8'] = "Start / Stop Bot";
$lang['winav9'] = "Update available!";
$lang['winav10'] = "Please use the webinterface only via %s HTTPS%s An encryption is critical to ensure your privacy and security.%sTo be able to use HTTPS your webserver needs to support an SSL connection.";
$lang['wiselcld'] = "select clients";
$lang['wiselclddesc'] = "Select the clients by the last known username. For this you only have to start typing.<br>Multiple selections are comma separated, which does the system automatically.<br><br>With the selection you can choose with the next step an action.";
$lang['wishcolas'] = "actual servergroup";
$lang['wishcolasdesc'] = "Show column 'actual servergroup' in stats/list_rankup.php";
$lang['wishcolat'] = "active time";
$lang['wishcolatdesc'] = "Show column 'sum. active time' in stats/list_rankup.php";
$lang['wishcolcld'] = "Client-name";
$lang['wishcolclddesc'] = "Show column 'Client-name' in stats/list_rankup.php";
$lang['wishcoldbid'] = "database-ID";
$lang['wishcoldbiddesc'] = "Show column 'Client-database-ID' in stats/list_rankup.php";
$lang['wishcolit'] = "idle time";
$lang['wishcolitdesc'] = "Show column 'sum idle time' in stats/list_rankup.php";
$lang['wishcolls'] = "last seen";
$lang['wishcollsdesc'] = "Show column 'last seen' in stats/list_rankup.php";
$lang['wishcolnx'] = "next rank up";
$lang['wishcolnxdesc'] = "Show column 'next rank up' in stats/list_rankup.php";
$lang['wishcolot'] = "online time";
$lang['wishcolotdesc'] = "Show column 'sum. online time' in stats/list_rankup.php";
$lang['wishcolrg'] = "rank";
$lang['wishcolrgdesc'] = "Show column 'rank' in stats/list_rankup.php";
$lang['wishcolsg'] = "next servergroup";
$lang['wishcolsgdesc'] = "Show column 'next servergroup' in stats/list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Show column 'unique Client-ID' in stats/list_rankup.php";
$lang['wishexcld'] = "excepted client";
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excluded and therefore not participate in the Ranksystem.";
$lang['wishexgrp'] = "excepted groups";
$lang['wishexgrpdesc'] = "Show clients in list_rankup.php, which are in the list 'client exception' and shouldn't be conside for the Ranksystem.";
$lang['wishhicld'] = "Clients in highest Level";
$lang['wishhiclddesc'] = "Show clients in list_rankup.php, which reached the highest level in the Ranksystem.";
$lang['wisupidle'] = "Mode";
$lang['wisupidledesc'] = "There are two modes, as time can be counted and can then apply for a rank increase. 1) online time: Here the pure online time of the user is taken into account (see column 'sum. online time' in the 'stats/list_rankup.php') 2) active time: This will be deducted from the online time of a user, the inactive time (idle) (see column 'sum. active time' in the 'stats/list_rankup.php'). A change of mode with an already longer running database is not recommended, but may work.";
$lang['wisvconf'] = "save";
$lang['wisvsuc'] = "Changes successfully saved!";
$lang['wisvres'] = "You need to restart the Ranksystem before the changes will take effect!";
$lang['witime'] = "Timezone";
$lang['witimedesc'] = "Select the timezone the server is hosted.";
$lang['wits3dch'] = "Default Channel";
$lang['wits3dchdesc'] = "The channel-ID, the bot should connect with.<br><br>The Bot will join this channel after connecting to the TeamSpeak server.";
$lang['wits3host'] = "TS3 Hostaddress";
$lang['wits3hostdesc'] = "TeamSpeak 3 Server address<br>(IP oder DNS)";
$lang['wits3sm'] = "Slowmode";
$lang['wits3smdesc'] = "With the Slowmode you can reduce \"spam\" of query commands to the TeamSpeak server. This prevent bans in case of flood.<br>TeamSpeak Query commands get delayed with this function.<br><br>!!! ALSO IT REDUCE THE CPU USAGE !!!<br><br>The activation is not recommended, if not required. The delay increases the duration of the Bot, which makes it imprecisely.";
$lang['wits3qnm'] = "Botname";
$lang['wits3qnm2'] = "2nd Botname";
$lang['wits3qnm2desc'] = "A fallback Botname, if the first one is already in use.";
$lang['wits3qnmdesc'] = "The name, with this the query-connection will be established.<br>You can name it free.";
$lang['wits3querpw'] = "TS3 Query-Password";
$lang['wits3querpwdesc'] = "TeamSpeak 3 query password<br>Password for the query user.";
$lang['wits3querusr'] = "TS3 Query-User";
$lang['wits3querusrdesc'] = "TeamSpeak 3 query username<br>Default is serveradmin<br>Of course, you can also create an additional serverquery account only for the Ranksystem.<br>The needed permissions you find on:<br>http://ts-n.net/ranksystem.php";
$lang['wits3query'] = "TS3 Query-Port";
$lang['wits3querydesc'] = "TeamSpeak 3 query port<br>Default is 10011 (TCP)<br>If its not default, you should find it in your 'ts3server.ini'.";
$lang['wits3voice'] = "TS3 Voice-Port";
$lang['wits3voicedesc'] = "TeamSpeak 3 voice port<br>Default is 9987 (UDP)<br>This is the port, you uses also to connect with the TS3 Client.";
$lang['wiupcheck'] = "Update-Check";
$lang['wiupcheckdesc'] = "If the Update-Check is enable, the listed user gets a notification with a private text message, once an update is available.";
$lang['wiuptime'] = "Interval";
$lang['wiuptimedesc'] = "Enter here how much seconds have to gone till the Ranksystem should check for available updates.<br>Attention, for each check the listed user gets a notification. If no one of the listed users is online, the Ranksystem will try to notificate with the next interval.";
$lang['wiupuid'] = "Recipient";
$lang['wiupuiddesc'] = "A comma separate list of unique Client-IDs, which shoud be informed on the TeamSpeak via private message for available updates.";
$lang['wivlang'] = "Language";
$lang['wivlangdesc'] = "Language for the Ranksystem<br><br>de - Deutsch<br>en - english<br>it - italiano<br>ru - русский";
?>

View File

@@ -1,7 +1,6 @@
<?PHP
$lang = array();
$lang= array();
$lang['adduser'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID: %s) ist bisher unbekannt -> wurde nun zum Ranksystem hinzugefügt.";
$lang['alrup'] = "Das Ranksystem ist bereits up to date. Bitte lösche diese Datei von deinem Webserver!";
$lang['changedbid'] = "User %s (eindeutige Client-ID: %s) hat eine neue TeamSpeak Client-Datenbank-ID (%s). Ersetze die alte Client-Datenbank-ID (%s) und setze die gesammelte Zeiten zurück";
$lang['crawl'] = "Scanne nach verbundenen Usern und sammle die online Zeit...";
$lang['clean'] = "Scanne nach Usern, welche zu löschen sind...";
@@ -13,46 +12,42 @@ $lang['cleanp'] = "Löschintervall";
$lang['cleanpdesc'] = "Bestimme einen Intervall, wie oft die 'Clientlöschung' laufen soll.<br><br>Angabe der Zeit in Sekunden!<br><br>Empfohlen wird die Clientlöschung nur einmal am Tag laufen zu lassen, da für größere Datenbanken die Laufzeit extrem steigt.";
$lang['cleanrs'] = "Clients in der Ranksystem Datenbank: %s";
$lang['cleants'] = "Clients in der TeamSpeak Datenbank gefunden: %s (von %s)";
$lang['days'] = "Tage";
$lang['dbconerr'] = "Verbindung zur MySQL-Datenbank gescheitert: ";
$lang['days'] = "%s <small>Tage</small>";
$lang['dbconerr'] = "Verbindung zur Datenbank gescheitert: ";
$lang['delcldgrpif'] = "Fehler beim Löschen der Servergruppen aus der Datenbank: %s";
$lang['delcldgrpsc'] = "Knowledge der Servergruppen für %s User erfolgreich gelöscht.";
$lang['delclientsif'] = "%s Clients aus der Ranksystem Datenbank gelöscht!";
$lang['delclientssc'] = "%s Clients aus der Ranksystem Datenbank erfolgreich gelöscht!";
$lang['errlogin'] = "Benutzername und/oder Passwort sind falsch! Versuche es erneut...";
$lang['errlogin2'] = "Brute force Schutz: Bitte versuche es in %s Sekunden erneut!";
$lang['errlogin3'] = "Brute force Schutz: Zu viele Fehlversuche. Für 300 Sekunden gesperrt!";
$lang['error'] = "Fehler ";
$lang['errremgrp'] = "Fehler beim Entfernen des Users mit der eindeutigen Client-ID %s aus der Servergruppe mit der Servergruppen-Datenbank-ID %s!";
$lang['errremdb'] = "Fehler beim Löschen des Users mit der eindeutigen Client-ID %s aus der Ranksystem Datenbank!";
$lang['errsel'] = "Fehler bei der Auswahl der Bedingungen!<br>ausgewählte User: %s<br>Option 'lösche Clients': %s<br>Option 'ges. online Zeit': %s";
$lang['errukwn'] = "Unbekannter Fehler aufgetreten!";
$lang['errupcount'] = "Fehler beim Überschreiben der ges. online Zeit %s bei User mit der eindeutigen Client-ID %s!";
$lang['firstuse'] = "Scheint der erste Lauf zu sein. Starte loggen der Userhistorie...";
$lang['highest'] = "höchster Rang erreicht";
$lang['instdb'] = "Installiere Datenbank:";
$lang['instdberr'] = "Fehler beim Erstellen der Datenbank: ";
$lang['instdbsubm'] = "Datenbank einrichten";
$lang['install'] = "Installation";
$lang['instdb'] = "Installiere Datenbank";
$lang['instdbsuc'] = "Datenbank %s wurde erfolgreich angelegt.";
$lang['insttb'] = "Installiere Tabellen:";
$lang['insttberr'] = "Fehler beim Erstellen der Tabelle: ";
$lang['insttbsuc'] = "Tabelle %s wurde erfolgreich angelegt.";
$lang['isntwicfg'] = "Die Datenbankkonfigurationen konnten nicht gespeichert werden! Bitte versehe die 'other/dbconfig.php' mit einem chmod 0777 und versuche es anschließend erneut.";
$lang['isntwichm'] = "Bitte versehe die 'other/dbconfig.php' und die Ordner 'avatars/', 'icons/' und 'logs/' mit den nötigen Dateiberechtigungen. Hierfür je die Berechtigung auf einem chmod 0777 setzen. Anschließend versuche es erneut (Seite neu laden).";
$lang['isntwidb'] = "Trage deine Datenbank Einstellungen ein:";
$lang['isntwidberr'] = "Bitte überprüfe, ob alle Felder korrekt ausgefüllt wurden!";
$lang['isntwicfg2'] = "Konfiguriere Webinterface";
$lang['isntwichm'] = "Schreibrechte fehlen für Verzeichnis \"%s\". Bitte setze auf dieses einen chmod 777 und starte anschließend das Ranksystem erneut.";
$lang['isntwidbhost'] = "DB Hostadresse:";
$lang['isntwidbhostdesc'] = "Datenbank Server Adresse<br>(IP oder DNS)";
$lang['isntwidbhostdesc']= "Datenbank Server Adresse<br>(IP oder DNS)";
$lang['isntwidbmsg'] = "Datenbank-Fehler: ";
$lang['isntwidbname'] = "DB Name:";
$lang['isntwidbnamedesc'] = "Name der Datenbank";
$lang['isntwidbnamedesc']= "Name der Datenbank";
$lang['isntwidbpass'] = "DB Passwort:";
$lang['isntwidbpassdesc'] = "Passwort für die Datenbank";
$lang['isntwidbpassdesc']= "Passwort für die Datenbank";
$lang['isntwidbtype'] = "DB Typ:";
$lang['isntwidbtypedesc'] = "Datenbank Typ<br><br>Der benötigte PDO Treiber muss installiert sein.<br>Für mehr Informationen beachte die Anforderungen auf http://ts-n.net/ranksystem.php";
$lang['isntwidbtypedesc']= "Datenbank Typ<br><br>Der benötigte PDO Treiber muss installiert sein.<br>Für mehr Informationen beachte die Anforderungen auf http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "DB Benutzer:";
$lang['isntwidbusrdesc'] = "Username für die Datenbank";
$lang['isntwidbusrdesc']= "Username für die Datenbank";
$lang['isntwidel'] = "Bitte lösche noch die Datei 'install.php' vom Webserver und öffne danach das %s um das Ranksystem zu konfigurieren!";
$lang['isntwiusr'] = "Benutzer für das Webinterface wurde erfolgreich erstellt.";
$lang['isntwiusrcr'] = "erstelle Zugang";
$lang['isntwiusrcr'] = "Erstelle Webinterface-User";
$lang['isntwiusrdesc'] = "Gib einen frei wählbaren Benutzer und ein Passwort für das Webinterface ein. Mit dem Webinterface wird das Ranksystem konfiguriert.";
$lang['isntwiusrh'] = "Zugang - Webinterface";
$lang['listacsg'] = "atkuelle Servergruppe";
@@ -68,12 +63,11 @@ $lang['listseen'] = "zuletzt gesehen";
$lang['listsuma'] = "ges. aktive Zeit";
$lang['listsumi'] = "ges. idle Zeit";
$lang['listsumo'] = "ges. online Zeit";
$lang['listtime'] = "%s Tag(e), %s Std., %s Min., %s Sek.";
$lang['listuid'] = "eindeutige Client-ID";
$lang['new'] = "neu";
$lang['login'] = "Login";
$lang['nocount'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) ist ein Query-User oder ist mehrmals online (nur erste Verbindung z&auml;hlt) -> diese wird nicht gewertet!";
$lang['noentry'] = "Keine Einträge gefunden..";
$lang['pass'] = "Passwort: ";
$lang['pass'] = "Passwort";
$lang['queryname'] = "Erster Botname ist bereits in Verwendung. Versuche zweiten Botnamen zu nutzen...";
$lang['sccrmcld'] = "User mit der eindeutigen Client-ID %s wurde erfolgreich aus der Ranksystem Datenbank gelöscht.";
$lang['sccupcount'] = "User mit der eindeutigen Client-ID %s erhielt erfolgreich ein neue ges. online Zeit von %s.";
@@ -82,8 +76,6 @@ $lang['setontimedesc'] = "Gib eine neue ges. online Zeit ein, welche bei den
$lang['sgrpadd'] = "Servergruppe %s zu User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) hinzugefügt.";
$lang['sgrprerr'] = "Es ist ein Problem mit den Servergruppen des Users %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) aufgetreten!";
$lang['sgrprm'] = "Servergruppe %s von User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) entfernt.";
$lang['sitegen'] = "Seite generiert in %s Sekunden mit %s Clients.";
$lang['sitegenl'] = "Seite generiert in %s Sekunden mit %s Clients (davon %s angezeigt; %s betroffen von Ausnahmeregeln; %s im höchsten Rang).";
$lang['stix0001'] = "Server Statistiken";
$lang['stix0002'] = "Anzahl User";
$lang['stix0003'] = "zeige Liste aller User";
@@ -169,15 +161,15 @@ $lang['stnv0003'] = "Client Informationen aktualisieren";
$lang['stnv0004'] = "Benutze diese Funktion, wenn sich deine TS3 Daten geändert haben, wie z.B. dein Username.";
$lang['stnv0005'] = "Du musst hierfür mit dem TS3 Server verbunden sein!";
$lang['stnv0006'] = "Aktualisieren";
$lang['stnv0007'] = "Battle Area - Page Content";
$lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams.";
$lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted.";
$lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins.";
$lang['stnv0011'] = "(The regular battling time is 48 hours)";
$lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants.";
$lang['stnv0013'] = "It will be displayed on the <a href=\"my_stats.php\">My Statistics</a> tab.";
$lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc.";
$lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week.";
$lang['stnv0007'] = "Battle Area - Seiteninhalt";
$lang['stnv0008'] = "Du kannst dich mit anderen Usern battle.";
$lang['stnv0009'] = "So lange das Battle läuft, wird die online Zeit bzw. aktive Zeit gewertet.";
$lang['stnv0010'] = "Wenn das Battle abgeschlossen ist, gewinnt der User, welcher die höchste online Zeit bzw. aktive Zeit hat..";
$lang['stnv0011'] = "(Die Standard Battle Dauer ist 48 Stunden)";
$lang['stnv0012'] = "Der Sieger erhält einen Preis, welcher zu einem eigens bestimmten Zeitpunkt eingelöst werden kann.";
$lang['stnv0013'] = "Dieser wird auf der Seite <a href=\"my_stats.php\">Meine Statistiken</a> angezeigt.";
$lang['stnv0014'] = "(Kann sein ein Zeit Boost(2x) für 8 Stunden, instant online Zeit (4 Stunden), etc.";
$lang['stnv0015'] = "Diese Boosts können benutzt werden, um z.B. die Chancen auf den Top User der Woche zu erhöhen.";
$lang['stnv0016'] = "nicht verfügbar";
$lang['stnv0017'] = "Du bist nicht mit dem TS3 Server verbunden, daher können kein Daten angezeigt werden.";
$lang['stnv0018'] = "Bitte verbinde dich mit dem TS3 Server und aktualisiere anschließend die Session über den Aktualisierungs-Button oben rechts in der Ecke.";
@@ -193,10 +185,18 @@ $lang['stnv0027'] = "Die Informationen auf dieser Seite scheinen veralte
$lang['stnv0028'] = "(Du bist nicht zum TS3 verbunden!)";
$lang['stnv0029'] = "Rank-Liste";
$lang['stnv0030'] = "Ranksystem Info";
$lang['stnv0031'] = "DE - Deutsch";
$lang['stnv0032'] = "EN - English";
$lang['stnv0033'] = "RU - русский";
$lang['stnv0034'] = "IT - italiano";
$lang['stnv0031'] = "Über das Suchfeld können nach Teile im Clientnamen, der eindeutigen Client-ID und der Client-Datenbank-ID gesucht werden.";
$lang['stnv0032'] = "Es ist auch möglich bestimmte Filterregeln anzuwenden (siehe unterhalb). Der Filter wird auch im Suchfeld hinterlegt.";
$lang['stnv0033'] = "Kombinationen von Filter und einem Suchwert sind möglich. Trage hierfür den/die Filter gefolgt von dem Suchwert ein.";
$lang['stnv0034'] = "Auch ist es möglich mehrere Filter zu kombinieren. Trage diese einfach fortlaufend in das Suchfeld ein.";
$lang['stnv0035'] = "<u>Beispiel:</u><br>filter:nonexcepted:TeamSpeakUser";
$lang['stnv0036'] = "Zeigt nur Clients an, welche ausgeschlossen sind (Client, Severgruppen oder Channel-Ausnahme).";
$lang['stnv0037'] = "Zeigt nur Clients an, welche nicht ausgeschlossen sind.";
$lang['stnv0038'] = "Zeigt nur Clients an, welche online sind";
$lang['stnv0039'] = "Zeigt nur Clients an, welche nicht online sind";
$lang['stnv0040'] = "Zeigt nur Clients an, welche sich in einer bestimmten Servergruppe befinden. Stellt das aktuelle Level (Rang) dar.<br>Ersetze <i>GROUPID</i> mi der gewünschten Servergruppen ID.";
$lang['stnv0041'] = "Zeigt nur Clients an, welche dem ausgewählten 'zuletzt gesehen' Zeitraum entsprechen.<br>Ersetze <i>OPERATOR</i> mit '<' oder '>' oder '=' oder '!='.<br>Und ersetze <i>TIME</i> mit einem Zeitstempel (Timestamp) oder Datum mit im Format 'Y-m-d H-i' (Beispiel: 2016-06-18 20-25).<br>Vollständiges Beispiel: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Zeigt nur Clients an, welche sich im definierten Land befinden.<br>Ersetze <i>TS3-COUNTRY-CODE</i> mit dem gewünschten Land.<br>Für eine Liste der gültigen Ländercodes, bitte nach dem 'ISO 3166-1 alpha-2' googlen.";
$lang['stri0001'] = "Ranksystem Informationen";
$lang['stri0002'] = "Was ist das Ranksystem?";
$lang['stri0003'] = "Ein TS3 Bot, der automatisch Servergruppen an User für online Zeit oder aktive Zeit auf einem TeamSpeak 3 Server zuweist. Weiterhin sammelt es diverse Statistiken und stellt diese hier dar.";
@@ -209,9 +209,11 @@ $lang['stri0009'] = "Wie wurde das Ranksystem erstellt?";
$lang['stri0010'] = "Das Ranksystem basiert auf";
$lang['stri0011'] = "Es nutzt weiterhin die folgenden Programmbibliotheken:";
$lang['stri0012'] = "Ein spezieller Danke ergeht an:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a> - für die russische Übersetzung";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - für die russische Übersetzung";
$lang['stri0014'] = "Bejamin Frost - für die Initialisierung des Bootstrap Designs";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - für die italienische Übersetzung";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - für die Initiierung der arabischen Übersetzung";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - für die Initiierung der rumänischen Übersetzung";
$lang['sttw0001'] = "Top User";
$lang['sttw0002'] = "der Woche";
$lang['sttw0003'] = "mit %s Stunden online Zeit";
@@ -227,24 +229,26 @@ $lang['sttw0012'] = "Andere %s User (in Stunden)";
$lang['sttw0013'] = "mit %s Stunden aktive Zeit";
$lang['sttm0001'] = "des Monats";
$lang['stta0001'] = "aller Zeiten";
$lang['updb'] = "Das Update muss nur ausgeführt werden, wenn das Ranksystem bereits mit einer älteren Version als %s genutzt wird!<br><br>Führe das Update nur einmal aus und lösche danach die 'update_%s.php' sofort von deinem Webserver.<br><br><br>Update Datenbank:<br>";
$lang['updel'] = "Bitte lösche die folgenden Dateien vom Hauptverzeichnis des Ranksystems, sofern sie existieren:<br>%s";
$lang['upinf'] = "Eine neue Version des Ranksystems ist verfügbar. Informiere Clients auf dem Server...";
$lang['upmov'] = "Bitte verschiebe die Datei \'%s\' in das Unterverzeichnis \'%s\' und überschreibe dabei die dort vorhandene Datei!";
$lang['upmsg'] = "\nHey, eine neue Version des [B]Ranksystems[/B] ist verfügbar!\n\naktuelle Version: %s\n[B]neue Version: %s[/B]\n\nBitte schaue auf unsere Homepage für weitere Informationen [URL]http://ts-n.net/ranksystem.php[/URL].";
$lang['upsucc'] = "Datenbank-Update erfolgreich durchgeführt";
$lang['upuser'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s).";
$lang['upuserboost'] = "User %s (eindeutige Client-ID: %s; Client-Datenbank-ID %s) erhält eine neue ges. online Zeit von %s (davon aktiv: %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "Die eindeutige Client-ID %s konnte auf dem TeamSpeak nicht erreicht werden!";
$lang['upusrinf'] = "User %s wurde erfolgreich benachrichtigt.";
$lang['user'] = "Benutzername: ";
$lang['usermsgactive'] = "\nHey, du bist im Rang gestiegen, da du eine Aktivität von %s Tagen, %s Stunden, %s Minuten und %s Sekunden erreicht hast.";
$lang['usermsgonline'] = "\nHey, du bist im Rang gestiegen, da du bereits %s Tage, %s Stunden, %s Minuten und %s Sekunden online warst.";
$lang['user'] = "Benutzername";
$lang['wiaction'] = "ausführen";
$lang['wibgco'] = "Hintergrundfarbe:";
$lang['wibgcodesc'] = "Lege eine Hintergrundfarbe fest<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wiboost'] = "Boost";
$lang['wiboostdesc'] = "Gebe einen User auf dem TeamSpeak Server eine Servergruppe (ist manuell zu erstellen), welche hier für das Ranksystem als Boost Gruppe deklariert werden kann. Definiere hierfür noch einen Faktor (z.B. 2x) und eine Zeit, wie lange der Boost gewährt werden soll.<br>Umso höher der Faktor, umso schneller erreicht ein User den nächst höheren Rang.<br>Ist die Zeit abgelaufen, so wird dem betroffenen User die Servergruppe automatisch entfernt. Die Zeit beginnt in dem Moment zu laufen, in dem der User die Servergruppe erhält.<br><br>Servergruppen-ID => Faktor => Zeit (in Sekunden)<br><br>Beispiel:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>Hier werden den Usern in der Servergruppe mit der ID 12 dem Faktor 2 für 6000 Sekunden, den Usern in der Servergruppe 13 dem Faktor 3 für 2500 Sekunden gewährt, und so weiter...";
$lang['wiboostdesc'] = "Gebe einen User auf dem TeamSpeak Server eine Servergruppe (ist manuell zu erstellen), welche hier für das Ranksystem als Boost Gruppe deklariert werden kann. Definiere hierfür noch einen Faktor (z.B. 2x) und eine Zeit, wie lange der Boost gewährt werden soll.<br>Umso höher der Faktor, umso schneller erreicht ein User den nächst höheren Rang.<br>Ist die Zeit abgelaufen, so wird dem betroffenen User die Servergruppe automatisch entfernt. Die Zeit beginnt in dem Moment zu laufen, in dem der User die Servergruppe erhält.<br><br>Servergruppen-ID=> Faktor=> Zeit (in Sekunden)<br><br>Beispiel:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>Hier werden den Usern in der Servergruppe mit der ID 12 dem Faktor 2 für 6000 Sekunden, den Usern in der Servergruppe 13 dem Faktor 3 für 2500 Sekunden gewährt, und so weiter...";
$lang['wibot1'] = "Der Ranksystem Bot sollte gestoppt sein. Für mehr Informationen bitte die Log unterhalb prüfen!";
$lang['wibot2'] = "Der Ranksystem Bot sollte gestartet sein. Für mehr Informationen bitte die Log unterhalb prüfen!";
$lang['wibot3'] = "Der Ranksystem Bot sollte neu gestartet sein. Für mehr Informationen bitte die Log unterhalb prüfen!";
$lang['wibot4'] = "Start / Stop Ranksystem Bot";
$lang['wibot5'] = "Bot starten";
$lang['wibot6'] = "Bot stoppen";
$lang['wibot7'] = "Bot neustarten";
$lang['wibot8'] = "Ranksystem Log (Auszug):";
$lang['wibot9'] = "Bitte fülle alle erforderlichen Felder aus, bevor der Ranksystem Bot gestartet werden kann!";
$lang['wichdbid'] = "Client-Datenbank-ID Reset";
$lang['wichdbiddesc'] = "Setzt die online Zeit eines Users zurück, wenn sich seine TeamSpeak Client-Datenbank-ID ändert.<br><br>Beispiel:<br>Wird ein Client vom TeamSpeak Server gelöscht, so erhält er mit der nächsten Verbindung zum Server eine neue Client-Datenbank-ID.";
$lang['wiconferr'] = "Es ist ein Fehler in der Konfiguration des Ranksystems. Bitte prüfe im Webinterface die Kern-Einstellungen auf Richtigkeit. Besonders sollte die Einstellung 'Rangsteigerung' geprüft werden!";
@@ -254,75 +258,81 @@ $lang['widbcfgsuc'] = "Datenbank Einstellungen erfolgreich gespeichert.";
$lang['widbcfgerr'] = "Fehler beim Speichern der Datenbank Einstellungen! Verbindung zur Datenbank oder speichern der 'other/dbconfig.php' nicht möglich.";
$lang['widelcld'] = "lösche Clients";
$lang['widelcldgrp'] = "Servergruppen zurücksetzen";
$lang['widelcldgrpdesc'] = "Das Ranksystem merkt sich die vergebenen Servergruppen, sodass nicht mit jedem Lauf der worker.php diese nochmals überprüft bzw. vergeben werden.<br><br>Mit dieser Funktion ist es möglich, dieses Wissen einmalig zurückzusetzen. Dadurch versucht das Ranksystem alle User (welche auf dem TS3 Server online sind) in die aktuell gültige Servergruppe zu setzen.<br>Für jeden User, welcher eine Servergruppe erhält bzw. in der vorhanden verbleibt, wird die Wissensdatenbank wie zu Anfang beschrieben wieder aufgebaut.<br><br>Diese Funktion kann hilreich sein, wenn sich User nicht in der Servergruppe befinden, welche für die jeweilige online Zeit vorgesehen ist.<br><br>Achtung: Bitte diese Funktion in einem Moment ausführen, in dem für nächsten Minuten kein Rankup ansteht!!! Das Ranksystem kann dann nämlich die alten Gruppen entfernen, da es hiervon nichts mehr weiß ;-)";
$lang['widelcldgrpdesc']= "Das Ranksystem merkt sich die vergebenen Servergruppen, sodass nicht mit jedem Lauf der worker.php diese nochmals überprüft bzw. vergeben werden.<br><br>Mit dieser Funktion ist es möglich, dieses Wissen einmalig zurückzusetzen. Dadurch versucht das Ranksystem alle User (welche auf dem TS3 Server online sind) in die aktuell gültige Servergruppe zu setzen.<br>Für jeden User, welcher eine Servergruppe erhält bzw. in der vorhanden verbleibt, wird die Wissensdatenbank wie zu Anfang beschrieben wieder aufgebaut.<br><br>Diese Funktion kann hilreich sein, wenn sich User nicht in der Servergruppe befinden, welche für die jeweilige online Zeit vorgesehen ist.<br><br>Achtung: Bitte diese Funktion in einem Moment ausführen, in dem für nächsten Minuten kein Rankup ansteht!!! Das Ranksystem kann dann nämlich die alten Gruppen entfernen, da es hiervon nichts mehr weiß ;-)";
$lang['widelclddesc'] = "Lösche zuvor selektierte User aus der Ranksystem Datenbank.<br><br>Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!";
$lang['widelsg'] = "entferne aus Servergruppen";
$lang['widelsgdesc'] = "Wähle, ob Clients auch aus den Servergruppen entfernt werden sollen, wenn sie aus der Ranksystem Datenbank gelöscht werden.<br><br>Es werden nur Servergruppen beachtet, welche das Ranksystem betreffen!";
$lang['wideltime'] = "Löschzeitraum";
$lang['wideltimedesc'] = "Lösche alte Clients aus aus der Ranksystem Datenbank.<br>Gib eine Zeit in Sekunden ein, welche ein User nicht mehr online war, damit er gelöscht wird.<br><br>0 - löscht alle User aus dem Ranksystem<br><br>Hiermit bleiben die Userdaten auf dem TeamSpeak Server unberührt!";
$lang['wiexcid'] = "Channel-Ausnahmen";
$lang['wiexciddesc'] = "Eine mit Komma getrennte Liste von den Channel-IDs, die nicht am Ranksystem teilnehmen sollen.<br><br>Halten sich User in einem der aufgelisteten Channel auf, so wird die Zeit darin vollständig ignoriert. Es wird weder die online Zeit, noch die Idle Zeit gewertet.<br><br>Sinn macht diese Funktion mit dem Modus 'online Zeit', da hier z.B. AFK Räume ausgeschlossen werden können.<br>Mit dem Modus 'aktive Zeit' ist diese Funktion sinnlos, da z.B. in AFK Räumen die Idle-Zeit abgezogen und somit sowieso nicht gewertet würde.<br><br>Befindet sich ein User in einem ausgeschlossenen Channel, so wird er für diese Zeit als 'vom Ranksystem ausgeschlossen' vermerkt. Der User erscheint damit auch nicht mehr in der Liste 'stats/list_rankup.php', sofern ausgeschlossene Clients dort nicht angezeigt werden sollen (Statistik Seite - ausgeschl. Clients).";
$lang['wiexgrp'] = "Servergruppen-Ausnahmen";
$lang['wiexgrpdesc'] = "Eine mit Komma getrennte Liste von Servergruppen-IDs, welche nicht am Ranksystem teilnehmen sollen.<br><br>User in mindestens einer dieser Gruppen sind von Rangsteigerungen ausgenommen.";
$lang['wiexuid'] = "Client-Ausnahmen";
$lang['wiexuiddesc'] = "Eine mit Komma getrennte Liste von eindeutigen Client-IDs, welche nicht am Ranksystem teilnehmen sollen.<br><br>Aufgelistete User sind von Rangsteigerungen ausgenommen.";
$lang['wigrptime'] = "Rangsteigerung";
$lang['wigrptimedesc'] = "Definiere hier, nach welcher Zeit ein User automatisch in eine vorgegebene Servergruppe gelangen soll.<br><br>Zeit (Sekunden)=>Servergruppen ID<br><br>Entscheidend hierfür ist die online Zeit des User bzw. wenn 'Idlezeit' aktiv, dann die aktive Zeit.<br><br>Jeder Eintrag ist vom nächsten durch ein Komma zu separieren.<br><br>Die Zeiten sind kummulativ zu hinterlegen.<br><br>Beispiel:<br>60=>9,120=>10,180=>11<br><br>Hier werden die User nach 60 Sekunden in die Servergruppe 9, nach wiederum 60 Sekunden in die Servergruppe 10, usw..., hinzugefügt.";
$lang['wihdco'] = "Überschriftenfarbe:";
$lang['wihdcodesc'] = "Lege eine Überschriftenfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wihl'] = "Webinterface - Ranksystem";
$lang['wihladm'] = "Admin Liste";
$lang['wigrptime'] = "Rangsteigerung Definition";
$lang['wigrptimedesc'] = "Definiere hier, nach welcher Zeit ein User automatisch in eine vorgegebene Servergruppe gelangen soll.<br><br>Zeit (Sekunden)=>Servergruppen ID<br><br>Entscheidend hierfür ist die 'online Zeit' bzw. die 'aktive Zeit' des Users, je nach Einstellung des Modus.<br><br>Jeder Eintrag ist vom nächsten durch ein Komma zu separieren.<br><br>Die Zeiten sind kummulativ zu hinterlegen.<br><br>Beispiel:<br>60=>9,120=>10,180=>11<br><br>Hier werden die User nach 60 Sekunden in die Servergruppe 9, nach wiederum 60 Sekunden in die Servergruppe 10, usw..., hinzugefügt.";
$lang['wihladm'] = "List Rankup (Admin-Modus)";
$lang['wihlcfg'] = "Kern-Einstellungen";
$lang['wihlclg'] = "Clients editieren (Global)";
$lang['wihlcls'] = "Clients edidieren (Selektiv)";
$lang['wihldb'] = "Datenbank-Einstellungen";
$lang['wihlsty'] = "Style-Einstellungen";
$lang['wihlts'] = "TeamSpeak-Einstellungen";
$lang['wihvco'] = "Hoverfarbe:";
$lang['wihvcodesc'] = "Lege eine Hoverfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wiifco'] = "Infotextfarbe:";
$lang['wiifcodesc'] = "Lege eine Infotextfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wihldb'] = "Datenbank";
$lang['wihlmsg'] = "Benachrichtigungen";
$lang['wihlsty'] = "Statistik Seite";
$lang['wihlts'] = "TeamSpeak";
$lang['wihlvs'] = "Sonstiges";
$lang['wiignidle'] = "Ignoriere Idle";
$lang['wiignidledesc'] = "Lege eine Zeit fest, bis zu der die Idlezeit eines Users ignoriert werden soll.<br><br>Wenn ein Client nichts auf dem Server unternimmt (=Idle), wird diese Zeit vom Ranksystem notiert. Mit dieser Funktion wird die Idlezeit eines User bis zur definierten Grenze nicht als Idlezeit gewertet. Erst wenn der definierte Wert überschritten wird, zählt sie ab diesem Zeitpunkt für das Ranksystem auch als Idlezeit.<br><br>Diese Funktion spielt nur in Verbindung mit dem Modus 'aktive Zeit' eine Rolle.<br>Sinn der Funktion ist es z.B. die Zeit des Zuhörens bei Gesprächen als Aktivität zu werten.<br><br>0= Deaktivieren der Funktion<br><br>Beispiel:<br>Ignoriere Idle= 600 (Sekunden)<br>Ein Client hat einen Idle von 8 Minunten.<br>Folge:<br>Die 8 Minuten Idle werden ignoriert und er erhält demnach diese Zeit als aktive Zeit. Wenn sich die Idlezeit nun auf über 12 Minuten erhöht, so wird die Zeit über 10 Minuten, also 2 Minuten, auch als Idlezeit gewertet.";
$lang['wilogout'] = "Abmelden";
$lang['wilog'] = "Log-Pfad";
$lang['wilogdesc'] = "Pfad in dem das Logfile des Ranksystems geschrieben werden soll.<br><br>Beispiel:<br>/var/logs/ranksystem/<br><br>Beachte, dass der Webuser Schreibrechte in dem Verzeichnis hat.";
$lang['wimsgusr'] = "Benachrichtigung";
$lang['wimsgusrdesc'] = "Informiere den User per privater Textnachricht über seine Rangsteigerung.<br><br>Definiere die Nachricht in der 'lang.php'<br>(usermsgonline bzw. usermsgactive)";
$lang['wiscco'] = "Erfolgsmeldungsfarbe:";
$lang['wisccodesc'] = "Lege eine Erfolgsmeldungsfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wimsgmsg'] = "Nachricht";
$lang['wimsgmsgdesc'] = "Definiere eine Nachricht, welche ein User erhält, wenn er im Rang aufsteigt.<br><br>Die Nachricht wird über TS3 als private Text-Nachricht versendet. Daher können alle bekannten BB-Codes genutzt werden, die auch sonst in Text-Nachrichten funktionieren.<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Weiterhin kann die bisher verbrachte Zeit mittels Argumenten angegeben werden:<br>%1\$s - Tage<br>%2\$s - Stunden<br>%3\$s - Minuten<br>%4\$s - Sekunden<br><br>Beispiel:<br>Hey,\\ndu bist im Rang gestiegen, da du bereits %1\$s Tage, %2\$s Stunden und %3\$s Minuten mit unserem TS3 Server verbunden bist.[B]Weiter so![/B] ;-)";
$lang['wimsgusr'] = "Benachrichtigung Rangsteigerung";
$lang['wimsgusrdesc'] = "Informiere den User per privater Textnachricht über seine Rangsteigerung.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "Datenbank";
$lang['winav3'] = "Kern";
$lang['winav4'] = "Anderes";
$lang['winav5'] = "Benachrichtigung";
$lang['winav6'] = "Statistik Seite";
$lang['winav7'] = "Administration";
$lang['winav8'] = "Start / Stop Bot";
$lang['winav9'] = "Update verfügbar!";
$lang['winav10'] = "Bitte nutze das Webinterface nur via %s HTTPS%s Eine Verschlüsselung ist wichtig um die Privatsphäre und Sicherheit zu gewährleisten.%sUm HTTPS nutzen zu können, muss der Webserver eine SSL Verbindung unterstützen.";
$lang['wiselcld'] = "selektiere User";
$lang['wiselclddesc'] = "Wähle User anhand des letzt bekannten Usernamen aus. Hierfür einfach losschreiben.<br>Mehrfachselektionen sind kommagetrennt möglich, welche automatisch vorgenommen werden.<br><br>Mit den selektierten Usern kann im nächsten Schritt eine Aktion gewählt werden.";
$lang['wishcolas'] = "aktuelle Servergruppe";
$lang['wishcolasdesc'] = "Zeige Spalte 'aktuelle Servergruppe' in der list_rankup.php";
$lang['wishcolasdesc'] = "Zeige Spalte 'aktuelle Servergruppe' in der stats/list_rankup.php";
$lang['wishcolat'] = "aktive Zeit";
$lang['wishcolatdesc'] = "Zeige Spalte 'ges. aktive Zeit' in der list_rankup.php";
$lang['wishcolatdesc'] = "Zeige Spalte 'ges. aktive Zeit' in der stats/list_rankup.php";
$lang['wishcolcld'] = "Client-Name";
$lang['wishcolclddesc'] = "Zeige Spalte 'Client-Name' in der list_rankup.php";
$lang['wishcolclddesc'] = "Zeige Spalte 'Client-Name' in der stats/list_rankup.php";
$lang['wishcoldbid'] = "Datenbank-ID";
$lang['wishcoldbiddesc'] = "Zeige Spalte 'Client-Datenbank-ID' in der list_rankup.php";
$lang['wishcoldbiddesc']= "Zeige Spalte 'Client-Datenbank-ID' in der stats/list_rankup.php";
$lang['wishcolit'] = "idle Zeit";
$lang['wishcolitdesc'] = "Zeige Spalte 'ges. idle Zeit' in der list_rankup.php";
$lang['wishcolitdesc'] = "Zeige Spalte 'ges. idle Zeit' in der stats/list_rankup.php";
$lang['wishcolls'] = "zuletzt gesehen";
$lang['wishcollsdesc'] = "Zeige Spalte 'zuletzt gesehen' in der list_rankup.php";
$lang['wishcollsdesc'] = "Zeige Spalte 'zuletzt gesehen' in der stats/list_rankup.php";
$lang['wishcolnx'] = "nächster rank up";
$lang['wishcolnxdesc'] = "Zeige Spalte 'nächster Rang' in der list_rankup.php";
$lang['wishcolnxdesc'] = "Zeige Spalte 'nächster Rang' in der stats/list_rankup.php";
$lang['wishcolot'] = "online Zeit";
$lang['wishcolotdesc'] = "Zeige Spalte 'ges. online Zeit' in der list_rankup.php";
$lang['wishcolotdesc'] = "Zeige Spalte 'ges. online Zeit' in der stats/list_rankup.php";
$lang['wishcolrg'] = "Rang";
$lang['wishcolrgdesc'] = "Zeige Spalte 'Rang' in der list_rankup.php";
$lang['wishcolrgdesc'] = "Zeige Spalte 'Rang' in der stats/list_rankup.php";
$lang['wishcolsg'] = "nächste Servergruppe";
$lang['wishcolsgdesc'] = "Zeige Spalte 'nächste Servergruppe' in der list_rankup.php";
$lang['wishcolsgdesc'] = "Zeige Spalte 'nächste Servergruppe' in der stats/list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Zeige Spalte 'eindeutige Client-ID' in der list_rankup.php";
$lang['wishcoluuiddesc']= "Zeige Spalte 'eindeutige Client-ID' in der stats/list_rankup.php";
$lang['wishexcld'] = "ausgeschl. Clients";
$lang['wishexclddesc'] = "Zeige User in der list_rankup.php, welche über die 'Client-Ausnahmen' nicht am Ranksystem teilnehmen.";
$lang['wishexclddesc'] = "Zeige User in der list_rankup.php, welche ausgeschlossen sind und demnach nicht am Ranksystem teilnehmen.";
$lang['wishexgrp'] = "ausgeschl. Servergruppen";
$lang['wishexgrpdesc'] = "Zeige User in der list_rankup.php, welche über die 'Servergruppen-Ausnahmen' nicht am Ranksystem teilnehmen.";
$lang['wishgen'] = "Seitengenerierung";
$lang['wishgendesc'] = "Zeige die Zeit, welche zur Generierung der Seite benötigt wird, am Ende der Seite.";
$lang['wishhicld'] = "User in höchestem Rang";
$lang['wishhiclddesc'] = "Zeige User in der list_rankup.php, welche den höchsten Rang erreicht haben.";
$lang['wisupidle'] = "Idlezeit";
$lang['wisupidledesc'] = "Ist diese Funktion aktiv, wird die 'ges. idle Zeit' eines Users von der 'ges. online Zeit' abgezogen. Anstelle der 'ges. online Zeit' wird somit die vorgenannte Differenz für Rangsteigerungen herangezogen.";
$lang['wisupidle'] = "Modus";
$lang['wisupidledesc'] = "Es gibt zwei Ausprägungen, wie Zeiten gewertet werden können und dann für eine Rangsteigerung herangezogen werden.<br><br>1) online Zeit: Hier wird die reine online Zeit des Users beachtet (siehe Spalte 'ges. online Zeit' in der stats/list_rankup.php).<br>2) aktive Zeit: Hier wird von der online Zeit eines Users noch die inaktive Zeit (Idle) abgezogen (siehe Spalte 'ges. aktive Zeit' in der stats/list_rankup.php).<br><br><br>Eine Umstellung des Modus mit einer bereits länger laufenden Datenbank wird nicht empfohlen, kann aber funktionieren.";
$lang['wisvconf'] = "speichern";
$lang['wisvsuc'] = "Änderungen erfolgreich gesichert!";
$lang['wisvres'] = "Damit die Änderungen wirksam werden ist ein Neustart des Ranksystems erforderlich!";
$lang['witime'] = "Zeitzone";
$lang['witimedesc'] = "Wähle die Zeitzone, die für den Sever gilt.";
$lang['wits3dch'] = "Default Channel";
@@ -336,24 +346,19 @@ $lang['wits3qnm2'] = "2. Botname";
$lang['wits3qnm2desc'] = "Ein zweiter Botname, falls der erste bereits genutzt wird.";
$lang['wits3qnmdesc'] = "Der Name, mit dem die Query-Verbindung augebaut werden soll.<br>Der Name kann frei gewählt werden.";
$lang['wits3querpw'] = "TS3 Query-Passwort";
$lang['wits3querpwdesc'] = "TeamSpeak 3 Query Passwort<br>Passwort des Query Benutzers";
$lang['wits3querpwdesc']= "TeamSpeak 3 Query Passwort<br>Passwort des Query Benutzers";
$lang['wits3querusr'] = "TS3 Query-Benutzer";
$lang['wits3querusrdesc'] = "TeamSpeak 3 Query Benutzername<br>Standard ist serveradmin<br>Natürlich kann auch ein gesonderter Query-Benutzer erstellt und genutzt werden.<br>Die benötigten Rechte sind hier aufgelistet:<br>http://ts-n.net/ranksystem.php";
$lang['wits3querusrdesc']= "TeamSpeak 3 Query Benutzername<br>Standard ist serveradmin<br>Natürlich kann auch ein gesonderter Query-Benutzer erstellt und genutzt werden.<br>Die benötigten Rechte sind hier aufgelistet:<br>http://ts-n.net/ranksystem.php";
$lang['wits3query'] = "TS3 Query-Port";
$lang['wits3querydesc'] = "TeamSpeak 3 Query Port<br>Standard ist 10011 (TCP)<br>andere Werte sollten in der 'ts3server.ini' zu finden sein.";
$lang['wits3voice'] = "TS3 Voice-Port";
$lang['wits3voicedesc'] = "TeamSpeak 3 Voice Port<br>Standard ist 9987 (UDP)<br>Dieser Port wird zum Verbinden mit dem TS3 Client genutzt.";
$lang['witxco'] = "Textfarbe:";
$lang['witxcodesc'] = "Lege eine Textfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
$lang['wiupcheck'] = "Update-Prüfung";
$lang['wiupcheckdesc'] = "Ist die Update-Prüfung aktiv, werden nachfolgend genannte User mit einer privaten Textnachricht informiert, sobald ein Update verfügbar ist.";
$lang['wiuptime'] = "Prüfungsintervall";
$lang['wiupcheck'] = "Update Info";
$lang['wiupcheckdesc'] = "Ist die Update Info aktiv, werden nachfolgend genannte User mit einer privaten Textnachricht informiert, sobald ein Update verfügbar ist.";
$lang['wiuptime'] = "Intervall";
$lang['wiuptimedesc'] = "Gib an alle wie viel Sekunden das Ranksystem prüfen soll, ob ein Update verfügbar ist.<br>Beachte, bei jeder Prüfung werden die hinterlegten User über ein verfügbares Update benachrichtigt. Ist kein hinterlegter User online, wird mit dem nächsten Intervall versucht zu benachrichtigen.";
$lang['wiupuid'] = "Empfänger";
$lang['wiupuiddesc'] = "Eine Komma getrennte Liste von eindeutigen Client-IDs, welche via privater Textnachricht auf dem TeamSpeak über ein Update informiert werden sollen.";
$lang['wiversion'] = "(verwendete Version %s)";
$lang['wivlang'] = "Sprache";
$lang['wivlangdesc'] = "Sprache des Ranksystems<br><br>de - Deutsch<br>en - english<br>it - italiano<br>ru - русский";
$lang['wiwnco'] = "Warntextfarbe:";
$lang['wiwncodesc'] = "Lege eine Warntextfarbe fest.<br>(gültiger HTML Code; muss mit # beginnen)";
?>

View File

@@ -1,7 +1,6 @@
<?PHP
$lang = array();
$lang['adduser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is unknown -> added to the Ranksystem now.";
$lang['alrup'] = "You already updated your database. Please delete this file from your webspace!";
$lang['changedbid'] = "User %s (unique Client-ID: %s) got a new TeamSpeak Client-database-ID (%s). Update the old Client-database-ID (%s) and reset collected times!";
$lang['crawl'] = "Scan for connected user and count the activity...";
$lang['clean'] = "Scan for clients, which have to delete...";
@@ -13,46 +12,42 @@ $lang['cleanp'] = "clean period";
$lang['cleanpdesc'] = "Set a time that has to elapse before the 'clean clients' runs next.<br><br>Set a time in seconds.<br><br>Recommended is once a day, cause the client cleaning needs much time for bigger databases.";
$lang['cleanrs'] = "Clients in the Ranksystem database: %s";
$lang['cleants'] = "Clients found in the TeamSpeak database: %s (of %s)";
$lang['days'] = "days";
$lang['dbconerr'] = "Failed to connect to MySQL-Database: ";
$lang['days'] = "%s <small>days</small>";
$lang['dbconerr'] = "Failed to connect to Database: ";
$lang['delcldgrpif'] = "Error while removing the knowledge for servergroups: %s";
$lang['delcldgrpsc'] = "Knowledge about servergroups for %s User successfully removed.";
$lang['delclientsif'] = "%s Clients deleted out of the Ranksystem database!";
$lang['delclientssc'] = "%s Clients successfully deleted out of the Ranksystem database!";
$lang['errlogin'] = "Username and/or password are incorrect! Try again...";
$lang['errlogin2'] = "Brute force protection: Try it again in %s seconds!";
$lang['errlogin3'] = "Brute force protection: To much misstakes. Banned for 300 Seconds!";
$lang['error'] = "Error ";
$lang['errremgrp'] = "Error while removing user with unique Client-ID %s out of the servergroup with servergroup-database-ID %s!";
$lang['errremdb'] = "Error while removing user with unique Client-ID %s out of the Ranksystem database!";
$lang['errsel'] = "Error while choosing the selections with<br>selected client: %s<br>option 'delete clients': %s<br>option 'sum. online time': %s";
$lang['errukwn'] = "An unknown error has occurred!";
$lang['errupcount'] = "Error while renewing the summary online time of %s by user with the unique Client-ID %s";
$lang['firstuse'] = "Seems to be the first run. Start logging the Userhistory...";
$lang['highest'] = "highest rank reached";
$lang['instdb'] = "Install database:";
$lang['instdberr'] = "Error while creating the database: ";
$lang['instdbsubm'] = "Create database";
$lang['install'] = "Installation";
$lang['instdb'] = "Install database";
$lang['instdbsuc'] = "Database %s successfully created.";
$lang['insttb'] = "Install Tables:";
$lang['insttberr'] = "Error while creating table: ";
$lang['insttbsuc'] = "Table %s successfully created.";
$lang['isntwicfg'] = "Can't save the database configuration! Please edit the 'other/dbconfig.php' with a chmod 0777 and try again after.";
$lang['isntwichm'] = "Please edit the 'other/dbconfig.php', and the folders 'avatars/', 'icons/' and 'logs/' with the needed permissions. Therefore edit the chmod to 0777. After it try again (reload the page).";
$lang['isntwidb'] = "Enter your database settings:";
$lang['isntwidberr'] = "Please check if you filled out all fields correctly!";
$lang['isntwicfg2'] = "Configurate Webinterface";
$lang['isntwichm'] = "Write Permissions failed on folder \"%s\". Please give them a chmod 777 and try to start the Ranksystem again.";
$lang['isntwidbhost'] = "DB Hostaddress:";
$lang['isntwidbhostdesc'] = "Database server address<br>(IP or DNS)";
$lang['isntwidbhostdesc']= "Database server address<br>(IP or DNS)";
$lang['isntwidbmsg'] = "Database error: ";
$lang['isntwidbname'] = "DB Name:";
$lang['isntwidbnamedesc'] = "Name of database";
$lang['isntwidbnamedesc']= "Name of database";
$lang['isntwidbpass'] = "DB Password:";
$lang['isntwidbpassdesc'] = "Password to access the database";
$lang['isntwidbpassdesc']= "Password to access the database";
$lang['isntwidbtype'] = "DB Type:";
$lang['isntwidbtypedesc'] = "Database type<br><br>You have to install the needed PDO Driver.<br>For more informations have look at the requirements on http://ts-n.net/ranksystem.php";
$lang['isntwidbtypedesc']= "Database type<br><br>You have to install the needed PDO Driver.<br>For more informations have look at the requirements on http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "DB User:";
$lang['isntwidbusrdesc'] = "User to access the database";
$lang['isntwidel'] = "Please delete the file 'install.php' and all 'update_x-xx.php' files from your webserver and open the %s to configure the Ranksystem!";
$lang['isntwidbusrdesc']= "User to access the database";
$lang['isntwidel'] = "Please delete the file 'install.php' from your webserver and open the %s to configure the Ranksystem!";
$lang['isntwiusr'] = "User for the webinterface successfully created.";
$lang['isntwiusrcr'] = "create access";
$lang['isntwiusrcr'] = "Create Webinterface-User";
$lang['isntwiusrdesc'] = "Enter a username and password for access the webinterface. With the webinterface you can configurate the ranksytem.";
$lang['isntwiusrh'] = "Access - Webinterface";
$lang['listacsg'] = "actual servergroup";
@@ -68,12 +63,11 @@ $lang['listseen'] = "last seen";
$lang['listsuma'] = "sum. active time";
$lang['listsumi'] = "sum. idle time";
$lang['listsumo'] = "sum. online time";
$lang['listtime'] = "%s day(s), %s hour(s), %s min., %s sec.";
$lang['listuid'] = "unique Client-ID";
$lang['new'] = "new";
$lang['login'] = "Login";
$lang['nocount'] = "User %s (unique Client-ID: %s; Client-database-ID %s) is a query-user or is several times online (only first connection counts) -> this will not count!";
$lang['noentry'] = "No entries found..";
$lang['pass'] = "Password: ";
$lang['pass'] = "Password";
$lang['queryname'] = "First Botname already in use. Trying with second Botname...";
$lang['sccrmcld'] = "User with unique Client-ID %s successfull removed from the Ranksystem database.";
$lang['sccupcount'] = "User with the unique Client-ID %s successfull overwritten with a summary online time of %s.";
@@ -82,8 +76,6 @@ $lang['setontimedesc'] = "Enter a new summary online time, which should be se
$lang['sgrpadd'] = "Grant servergroup %s to user %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['sgrprerr'] = "It happened a problem with the servergroup of the user %s (unique Client-ID: %s; Client-database-ID %s)!";
$lang['sgrprm'] = "Removed servergroup %s from user %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['sitegen'] = "Site generated in %s seconds with %s clients.";
$lang['sitegenl'] = "Site generated in %s seconds with %s clients (thereof %s displayed; %s affected by exception rules; %s in highest rank).";
$lang['stix0001'] = "Server statistics";
$lang['stix0002'] = "Total users";
$lang['stix0003'] = "View details";
@@ -104,8 +96,6 @@ $lang['stix0017'] = "Versions (of all clients)";
$lang['stix0018'] = "Nationalities (of all clients)";
$lang['stix0019'] = "Platforms (of all clients)";
$lang['stix0020'] = "Current statistics";
$lang['stix0021'] = "Requested information";
$lang['stix0022'] = "Result";
$lang['stix0023'] = "Server status";
$lang['stix0024'] = "Online";
$lang['stix0025'] = "Offline";
@@ -195,10 +185,18 @@ $lang['stnv0027'] = "The informations on this site could be outdated! It
$lang['stnv0028'] = "(You are not connected to the TS3!)";
$lang['stnv0029'] = "List Rankup";
$lang['stnv0030'] = "Ranksystem info";
$lang['stnv0031'] = "DE - Deutsch";
$lang['stnv0032'] = "EN - english";
$lang['stnv0033'] = "RU - русский";
$lang['stnv0034'] = "IT - italiano";
$lang['stnv0031'] = "About the search field you can search for pattern in clientname, unique Client-ID and Client-database-ID.";
$lang['stnv0032'] = "You can also use a view filter options (see below). Enter the filter also inside the search field.";
$lang['stnv0033'] = "Combination of filter and search pattern are possible. Enter first the filter(s) followed without any sign your search pattern.";
$lang['stnv0034'] = "Also it is possible to combine multiple filters. Enter this consecutively inside the search field.";
$lang['stnv0035'] = "<u>Example:</u><br>filter:nonexcepted:TeamSpeakUser";
$lang['stnv0036'] = "Show only clients, which are excepted (client, servergroup or channel exception).";
$lang['stnv0037'] = "Show only clients, which are not excepted.";
$lang['stnv0038'] = "Show only clients, which are online.";
$lang['stnv0039'] = "Show only clients, which are not online.";
$lang['stnv0040'] = "Show only clients, which are in defined group. Represent the actuel rank/level.<br>Replace <i>GROUPID</i> with the wished servergroup ID.";
$lang['stnv0041'] = "Show only clients, which are selected by lastseen.<br>Replace <i>OPERATOR</i> with '<' or '>' or '=' or '!='.<br>And replace <i>TIME</i> with a timestamp or date with format 'Y-m-d H-i' (example: 2016-06-18 20-25).<br>Full example: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Show only clients, which are from defined country.<br>Replace <i>TS3-COUNTRY-CODE</i> with the wished country.<br>For list of codes google for ISO 3166-1 alpha-2";
$lang['stri0001'] = "Ranksystem information";
$lang['stri0002'] = "What is the Ranksystem?";
$lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site.";
@@ -211,9 +209,11 @@ $lang['stri0009'] = "How was the Ranksystem created?";
$lang['stri0010'] = "The Ranksystem is coded in";
$lang['stri0011'] = "It uses also the following libraries:";
$lang['stri0012'] = "Special Thanks To:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a> - for russian translation";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - for russian translation";
$lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - for italian translation";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - for initialisation arabic translation";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - for initialisation romanian translation";
$lang['sttw0001'] = "Top users";
$lang['sttw0002'] = "Of the week";
$lang['sttw0003'] = "With %s hours online time";
@@ -229,66 +229,75 @@ $lang['sttw0012'] = "Other %s users (in hours)";
$lang['sttw0013'] = "With %s hours active time";
$lang['sttm0001'] = "Of the month";
$lang['stta0001'] = "Of all time";
$lang['updb'] = "You only have to run this if you want to update the Ranksystem from an older version to %s!<br><br>Run this once time and delete the update_%s.php file after from your webserver.<br><br><br>Update Database:<br>";
$lang['updel'] = "Please remove the following files from the root directory of the ranksystem, if they are still existing:<br>%s";
$lang['upinf'] = "A new Version of the Ranksystem is available; Inform clients on server...";
$lang['upmov'] = "Please move the \'%s\' into the subfolder \'%s\' and overwrite the existing one!";
$lang['upmsg'] = "\nHey, a new version of the [B]Ranksystem[/B] is available!\n\ncurrent version: %s\n[B]new version: %s[/B]\n\nPlease check out our site for more informations [URL]http://ts-n.net/ranksystem.php[/URL].";
$lang['upsucc'] = "Database update successfully executed.";
$lang['upuser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s).";
$lang['upuserboost'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "The unique Client-ID %s couldn't reached on the TeamSpeak!";
$lang['upusrinf'] = "User %s was successfully informed.";
$lang['user'] = "Username: ";
$lang['usermsgactive'] = "\nHey, you got a rank up, cause you reached an activity of %s days, %s hours, %s minutes and %s seconds.";
$lang['usermsgonline'] = "\nHey, you got a rank up, cause you reached an online time of %s days, %s hours, %s minutes and %s seconds.";
$lang['user'] = "Username";
$lang['wiaction'] = "action";
$lang['wibgco'] = "Background color:";
$lang['wibgcodesc'] = "Define a background color.<br>(valid HTML Code; have to beginn with # )";
$lang['wiboost'] = "boost";
$lang['wiboostdesc'] = "Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.<br>The higher the factor, the faster an user reaches the next higher rank.<br>Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.<br><br>servergroup ID => factor => time (in seconds)<br><br>Each entry have to separate from next with a comma.<br><br>Example:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on...";
$lang['wibot1'] = "Ranksystem Bot should be stopped. Check the log below for more information!";
$lang['wibot2'] = "Ranksystem Bot should be started. Check the log below for more information!";
$lang['wibot3'] = "Ranksystem Bot should be restarted. Check the log below for more information!";
$lang['wibot4'] = "Start / Stop Ranksystem Bot";
$lang['wibot5'] = "Start Bot";
$lang['wibot6'] = "Stop Bot";
$lang['wibot7'] = "Restart Bot";
$lang['wibot8'] = "Ranksystem log (extract):";
$lang['wibot9'] = "Fill out all mandatory fields before starting the Ranksystem Bot!";
$lang['wichdbid'] = "Client-database-ID reset";
$lang['wichdbiddesc'] = "Reset the online time of an user, if his TeamSpeak Client-database-ID changed.<br><br>Example:<br>If a clients gets removed from the TeamSpeak server, it gets a new Client-database-ID with the next connect to the server.";
$lang['wiconferr'] = "There is an error in the configuration of the Ranksystem. Please go to the webinterface and correct the Core Settings. Especially check the config 'rank up'!";
$lang['widaform'] = "Date format";
$lang['widaformdesc'] = "Choose the showing date format.<br><br>Example:<br>%a days, %h hours, %i mins, %s secs";
$lang['widbcfgsuc'] = "Database configurations saved successfully.";
$lang['widbcfgerr'] = "Error by saving the database configurations! Connection failed or writeout error for 'other/dbconfig.php'";
$lang['widbcfgerr'] = "Error while saving the database configurations! Connection failed or writeout error for 'other/dbconfig.php'";
$lang['widelcld'] = "delete clients";
$lang['widelcldgrp'] = "renew groups";
$lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.<br><br>With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.<br>For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.<br><br>This function can be helpful, when user are not in the servergroup, they should be for the defined online time.<br><br>Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)";
$lang['widelcldgrpdesc']= "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.<br><br>With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.<br>For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.<br><br>This function can be helpful, when user are not in the servergroup, they should be for the defined online time.<br><br>Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause it can't remember ;-)";
$lang['widelclddesc'] = "Delete the before selected clients out of the Ranksystem database.<br><br>With this deletion are the clients on the TeamSpeak Server untouched.";
$lang['widelsg'] = "remove out of servergroups";
$lang['widelsgdesc'] = "Choose if the clients should also be removed out of the last known servergroup, when you delete clients out of the Ranksystem database.<br><br>It will only considered servergroups, which concerned the Ranksystem";
$lang['wideltime'] = "Deletiontime";
$lang['wideltimedesc'] = "Clean old clients out of the Ranksystem database.<br>Entry a time in seconds which a client was not seen to delete it.<br><br>0 - deletes all clients out of the Ranksystem<br><br>The Userdatas on the TeamSpeak server are with this untouched!";
$lang['wiexcid'] = "channel exception";
$lang['wiexciddesc'] = "A comma separated list of the channel-IDs that are not to participate in the Ranksystem.<br><br>Stay users in one of the listed channels, the time there will be completely ignored. There is neither the online time, yet the idle time counted.<br><br>Sense does this function only with the mode 'online time', cause here could be ignored AFK channels for example.<br>With the mode 'active time', this function is useless because as would be deducted the idle time in AFK rooms and thus not counted anyway.<br><br>Be a user in an excluded channel, it is noted for this period as 'excluded from the Ranksystem'. The user dows no longer appears in the list 'stats/list_rankup.php' unless excluded clients should not be displayed there (Stats Page - excepted client).";
$lang['wiexgrp'] = "servergroup exception";
$lang['wiexgrpdesc'] = "A comma seperated list of servergroup-IDs, which should not conside for the Ranksystem.<br>User in at least one of this servergroups IDs will be ignored for the rank up.";
$lang['wiexuid'] = "client exception";
$lang['wiexuiddesc'] = "A comma seperated list of unique Client-IDs, which should not conside for the Ranksystem.<br>User in this list will be ignored for the rank up.";
$lang['wigrptime'] = "rank up";
$lang['wigrptimedesc'] = "Define here after which time a user should get automatically a predefined servergroup.<br><br>time (seconds)=>servergroup ID<br><br>Important for this is the online time of an user or if 'Idletime' is active, the active time.<br><br>Each entry have to separate from next with a comma.<br><br>The time must be entered cumulative<br><br>Example:<br>60=>9,120=>10,180=>11<br><br>On this a user get after 60 seconds the servergroup 9, in turn after 60 seconds the servergroup 10, and so on...";
$lang['wihdco'] = "Headline color:";
$lang['wihdcodesc'] = "Define a headline color.<br>(valid HTML Code; have to beginn with # )";
$lang['wihl'] = "Webinterface - Ranksystem";
$lang['wihladm'] = "admin list";
$lang['wigrptime'] = "rank up definition";
$lang['wigrptimedesc'] = "Define here after which time a user should get automatically a predefined servergroup.<br><br>time (seconds)=>servergroup ID<br><br>Important for this is the 'online time' or the 'active time' of an user, depending on setting of the mode.<br><br>Each entry have to separate from next with a comma.<br><br>The time must be entered cumulative<br><br>Example:<br>60=>9,120=>10,180=>11<br><br>On this a user get after 60 seconds the servergroup 9, in turn after 60 seconds the servergroup 10, and so on...";
$lang['wihladm'] = "List Rankup (Admin-Mode)";
$lang['wihlcfg'] = "Core settings";
$lang['wihlclg'] = "Edit clients (global)";
$lang['wihlcls'] = "Edit clients (selective)";
$lang['wihldb'] = "Database settings";
$lang['wihlsty'] = "Style settings";
$lang['wihlmsg'] = "Message settings";
$lang['wihlsty'] = "Stats page settings";
$lang['wihlts'] = "TeamSpeak settings";
$lang['wihvco'] = "Hover color:";
$lang['wihvcodesc'] = "Define a hover color.<br>(valid HTML Code; have to beginn with # )";
$lang['wiifco'] = "Infotext color:";
$lang['wiifcodesc'] = "Define a info-text color.<br>(valid HTML Code; have to beginn with # )";
$lang['wihlvs'] = "Various settings";
$lang['wiignidle'] = "Ignore idle";
$lang['wiignidledesc'] = "Define a period, up to which the idle time of an user will be ignored.<br><br>When a client does not do anything on the server (=idle), this time is noted by the Ranksystem. With this feature the idle time of an user will not be counted until the defined limit. Only when the defined limit is exceeded, it counts from that date for the Ranksystem as idle time.<br><br>This function plays only in conjunction with the mode 'active time' a role.<br><br>Meaning the function is e.g. to evaluate the time of listening in conversations as activity.<br><br>0 = disable the feature<br><br>Example:<br>Ignore idle = 600 (seconds)<br>A client has an idle of 8 minuntes<br>consequence:<br>8 minutes idle are ignored and he therefore receives this time as active time. If the idle time now increased to over 12 minutes so the time is over 10 minutes, and in this case 2 minutes would be counted as idle time.";
$lang['wilog'] = "Logpath";
$lang['wilogdesc'] = "Path of the log file of the Ranksystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Be sure, the webuser has the write-permissions to the logpath.";
$lang['wilogout'] = "LogOut";
$lang['wimsgusr'] = "Notification";
$lang['wimsgusrdesc'] = "Inform an user with a private text message about his rank up.<br>Define the message in 'lang.php'<br>(usermsgonline or usermsgactive)";
$lang['wiscco'] = "Successtext color:";
$lang['wisccodesc'] = "Define a success-text color.<br>(valid HTML Code; have to beginn with # )";
$lang['wimsgmsg'] = "Message";
$lang['wimsgmsgdesc'] = "Define a message, which will be send to an user, when he rises the next higher rank.<br><br>This message will be send via TS3 private message. So every know bb-code could be used, which also works for a normal private message.<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Furthermore, the previously spent time can be expressed by arguments:<br>%1\$s - days<br>%2\$s - hours<br>%3\$s - minutes<br>%4\$s - seconds<br><br>Example:<br>Hey,\\nyou reached a higher rank, since you already connected for %1\$s days, %2\$s hours and %3\$s minutes to our TS3 server.[B]Keep it up![/B] ;-)";
$lang['wilogout'] = "Logout";
$lang['wimsgusr'] = "Rank up notification";
$lang['wimsgusrdesc'] = "Inform an user with a private text message about his rank up.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "Database";
$lang['winav3'] = "Core";
$lang['winav4'] = "Other";
$lang['winav5'] = "Message";
$lang['winav6'] = "Stats page";
$lang['winav7'] = "Administrate";
$lang['winav8'] = "Start / Stop Bot";
$lang['winav9'] = "Update available!";
$lang['winav10'] = "Please use the webinterface only via %s HTTPS%s An encryption is critical to ensure your privacy and security.%sTo be able to use HTTPS your webserver needs to support an SSL connection.";
$lang['wiselcld'] = "select clients";
$lang['wiselclddesc'] = "Select the clients by the last known username. For this you only have to start typing.<br>Multiple selections are comma separated, which does the system automatically.<br><br>With the selection you can choose with the next step an action.";
$lang['wishcolas'] = "actual servergroup";
@@ -298,7 +307,7 @@ $lang['wishcolatdesc'] = "Show column 'sum. active time' in list_rankup.php";
$lang['wishcolcld'] = "Client-name";
$lang['wishcolclddesc'] = "Show column 'Client-name' in list_rankup.php";
$lang['wishcoldbid'] = "database-ID";
$lang['wishcoldbiddesc'] = "Show column 'Client-database-ID' in list_rankup.php";
$lang['wishcoldbiddesc']= "Show column 'Client-database-ID' in list_rankup.php";
$lang['wishcolit'] = "idle time";
$lang['wishcolitdesc'] = "Show column 'sum idle time' in list_rankup.php";
$lang['wishcolls'] = "last seen";
@@ -312,19 +321,18 @@ $lang['wishcolrgdesc'] = "Show column 'rank' in list_rankup.php";
$lang['wishcolsg'] = "next servergroup";
$lang['wishcolsgdesc'] = "Show column 'next servergroup' in list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Show column 'unique Client-ID' in list_rankup.php";
$lang['wishcoluuiddesc']= "Show column 'unique Client-ID' in list_rankup.php";
$lang['wishexcld'] = "excepted client";
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excepted by his uniqueID.";
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excluded and therefore not participate in the Ranksystem.";
$lang['wishexgrp'] = "excepted groups";
$lang['wishexgrpdesc'] = "Show clients in list_rankup.php, which are in the list 'client exception' and shouldn't be conside for the Ranksystem.";
$lang['wishgen'] = "Sitegen";
$lang['wishgendesc'] = "Show the needed time for the generation of the site at the end of the site.";
$lang['wishhicld'] = "Clients in highest Level";
$lang['wishhiclddesc'] = "Show clients in list_rankup.php, which reached the highest level in the Ranksystem.";
$lang['wisupidle'] = "Idletime";
$lang['wisupidledesc'] = "If this function is active, the 'sum. idle time' will be substrate from the 'sum. online time'. Instead of the 'sum. online time', the previoused substration will consided for the rank up.";
$lang['wisupidle'] = "Mode";
$lang['wisupidledesc'] = "There are two modes, as time can be counted and can then apply for a rank increase. 1) online time: Here the pure online time of the user is taken into account (see column 'sum. online time' in the 'stats/list_rankup.php') 2) active time: This will be deducted from the online time of a user, the inactive time (idle) (see column 'sum. active time' in the 'stats/list_rankup.php'). A change of mode with an already longer running database is not recommended, but may work.";
$lang['wisvconf'] = "save";
$lang['wisvsuc'] = "Changes successfully saved!";
$lang['wisvres'] = "You need to restart the Ranksystem before the changes will take effect!";
$lang['witime'] = "Timezone";
$lang['witimedesc'] = "Select the timezone the server is hosted.";
$lang['wits3dch'] = "Default Channel";
@@ -338,24 +346,19 @@ $lang['wits3qnm2'] = "2nd Botname";
$lang['wits3qnm2desc'] = "A fallback Botname, if the first one is already in use.";
$lang['wits3qnmdesc'] = "The name, with this the query-connection will be established.<br>You can name it free.";
$lang['wits3querpw'] = "TS3 Query-Password";
$lang['wits3querpwdesc'] = "TeamSpeak 3 query password<br>Password for the query user.";
$lang['wits3querpwdesc']= "TeamSpeak 3 query password<br>Password for the query user.";
$lang['wits3querusr'] = "TS3 Query-User";
$lang['wits3querusrdesc'] = "TeamSpeak 3 query username<br>Default is serveradmin<br>Of course, you can also create an additional serverquery account only for the Ranksystem.<br>The needed permissions you find on:<br>http://ts-n.net/ranksystem.php";
$lang['wits3querusrdesc']= "TeamSpeak 3 query username<br>Default is serveradmin<br>Of course, you can also create an additional serverquery account only for the Ranksystem.<br>The needed permissions you find on:<br>http://ts-n.net/ranksystem.php";
$lang['wits3query'] = "TS3 Query-Port";
$lang['wits3querydesc'] = "TeamSpeak 3 query port<br>Default is 10011 (TCP)<br>If its not default, you should find it in your 'ts3server.ini'.";
$lang['wits3voice'] = "TS3 Voice-Port";
$lang['wits3voicedesc'] = "TeamSpeak 3 voice port<br>Default is 9987 (UDP)<br>This is the port, you uses also to connect with the TS3 Client.";
$lang['witxco'] = "Text color:";
$lang['witxcodesc'] = "Define a text color.<br>(valid HTML Code; have to beginn with # )";
$lang['wiupcheck'] = "Update-Check";
$lang['wiupcheckdesc'] = "If the Update-Check is enable, the listed user gets a notification with a private text message, once an update is available.";
$lang['wiuptime'] = "Checkinterval";
$lang['wiuptimedesc'] = "Enter here how much seconds have to gone till the Ranksystem should check for available updates.<br>Attention, for each check the listed user gets a notification. If no one of the listed users is online, the Ranksystem will try to notificate with the next interval.";
$lang['wiupcheck'] = "Update info";
$lang['wiupcheckdesc'] = "If the Update info is enable, the listed user gets a notification with a private text message, once an update is available.";
$lang['wiuptime'] = "Interval";
$lang['wiuptimedesc'] = "Enter here how much seconds have to gone till the Ranksystem should check for available updates.<br><br>Attention, for each check the listed user gets a notification. If no one of the listed users is online, the Ranksystem will try to notificate with the next interval.";
$lang['wiupuid'] = "Recipient";
$lang['wiupuiddesc'] = "A comma separate list of unique Client-IDs, which shoud be informed on the TeamSpeak via private message for available updates.";
$lang['wiversion'] = "(current version %s)";
$lang['wivlang'] = "Language";
$lang['wivlangdesc'] = "Language for the Ranksystem<br><br>de - Deutsch<br>en - english<br>it - italiano<br>ru - русский";
$lang['wiwnco'] = "Warntext color:";
$lang['wiwncodesc'] = "Define a warntext color.<br>(valid HTML Code; have to beginn with # )";
$lang['wivlangdesc'] = "Choose a default language for the Ranksystem.<br><br>The language is also selectable on the websites for the users and will be stored for the session.";
?>

View File

@@ -1,7 +1,6 @@
<?PHP
$lang = array();
$lang['adduser'] = "L'utente %s ( Client-ID: %s; Client-database-ID %s) non è presente nel database -> L'utente è stato aggiunto al sistema.";
$lang['alrup'] = "Hai già aggiornato il database. Per favore cancella questo file dalla web-space!";
$lang['changedbid'] = "L'utente %s (unique Client-ID: %s) ha ottenuto un nuovo database-ID (%s). Aggiorna il vecchio Client-database-ID (%s) e resetta il tempo raggiunto!";
$lang['crawl'] = "Scansione degli utenti connessi e conteggio delle attività...";
$lang['clean'] = "Scansione degli utenti che vanno eliminati...";
@@ -13,32 +12,28 @@ $lang['cleanp'] = "tempo di pulitura del database";
$lang['cleanpdesc'] = "Imposta il tempo che deve trascorrere alla prossima pulitura del database.<br><br>Imposta il tempo in secondi.<br><br>È consigliato eseguire la 'pulitura' del database almeno una volta al giorno, in quanto il tempo di 'pulitura' del database aumenta nel caso vi sia un database di grandi dimensioni.";
$lang['cleanrs'] = "Numero di utenti trovati nel database del Ranksystem: %s";
$lang['cleants'] = "Numero di utenti trovati nel database di TeamSpeak: %s (of %s)";
$lang['days'] = "giorni";
$lang['dbconerr'] = "Connessione al Database MySQL fallita: ";
$lang['days'] = "%s <small>giorni</small>";
$lang['dbconerr'] = "Connessione al Database fallita: ";
$lang['delcldgrpif'] = "Errore nella rimozione delle informazioni del servergroup: %s";
$lang['delcldgrpsc'] = "Informazioni su servergroup per l'utente %s cancellate correttamente.";
$lang['delclientsif'] = "%s Utenti cancellati dal database del Ranksystem!";
$lang['delclientssc'] = "%s Utenti correttamente cancellati dal database del Ranksystem!";
$lang['errlogin'] = "Nome utente e/o password errati! Riprova...";
$lang['errlogin2'] = "Protezione attacchi brute force: Riprova in %s secondi!";
$lang['errlogin3'] = "Protezione attacchi brute force: Hai commesso troppi errori. Sei stato bannato per 5 minuti!";
$lang['error'] = "Errore ";
$lang['errremgrp'] = "Errore nella rimozione dell'utente: %s (Client-ID) Dal server Group con il servergroup-database-ID: %s!";
$lang['errremdb'] = "Errore nella rimozione dell'utente: %s (Client-ID) dal database del RankSystem!";
$lang['errsel'] = "Errore nella selezione degli <br>Utenti: %s<br>opzione 'cancella utenti': %s<br>opzione 'somma del tempo online': %s";
$lang['errukwn'] = "È stato riscontrato un errore sconosciuto!";
$lang['errupcount'] = "Errore nel rinnovo della somma del tempo online dellutente %s con lId unico %s";
$lang['firstuse'] = "Sembra che questa sia la prima volta che lanci l'applicazione. Inizio del log degli utenti...";
$lang['highest'] = "È stato raggiunto il rank massimo";
$lang['install'] = "Installazione";
$lang['instdb'] = "Installa il database:";
$lang['instdberr'] = "Errore nella creazione del database: ";
$lang['instdbsubm'] = "Crea il database";
$lang['instdbsuc'] = "Il database %s è stato creato con successo.";
$lang['insttb'] = "Installazione delle tabelle del database:";
$lang['insttberr'] = "Errore nella creazione delle tabelle del database: ";
$lang['insttbsuc'] = "Le Tabelle del database %s sono state create con successo.";
$lang['isntwicfg'] = "Impossibile salvare la configurazione del database! Modifica il file 'other/dbconfig.php' dandogli i permessi 0777 (chmod 777 nomefile) e riprova.";
$lang['isntwichm'] = "Per favore modifica il file 'other/dbconfig.php', e la cartella 'avatars/', 'icons/' and 'logs/' con i permessi necessari: Modificali quindi dandogli chmod 0777 (chmod 777 nomefile) e riprova (ricarica la pagina).";
$lang['isntwidb'] = "Inserisci le informazioni del database:";
$lang['isntwidberr'] = "Per favore controlla di aver inserito tutti i campi correttamente!";
$lang['isntwicfg2'] = "Configurate Webinterface";
$lang['isntwichm'] = "Permessi di scrittura negati per la cartella \"%s\". Per favore dai i permessi chmod 777 e prova ad avviare il Ranksystem di nuovo.";
$lang['isntwidbhost'] = "Indirizzo host DB:";
$lang['isntwidbhostdesc'] = "L'indirizzo del server su cui si trova il database (Se il database è in locale basterà inserire 127.0.0.1)<br>(IP o DNS)";
$lang['isntwidbmsg'] = "Errore del Database: ";
@@ -50,12 +45,12 @@ $lang['isntwidbtype'] = "Tipo DB:";
$lang['isntwidbtypedesc'] = "Il tipo di Database<br><br>Dovrai installare i driver PDO.<br>Per maggiori informazioni sui requisiti guarda sulla pagina http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "Utente DB:";
$lang['isntwidbusrdesc'] = "Nome dell'utente che ha l'accesso al database";
$lang['isntwidel'] = "Per favore cancella il file 'install.php' e titti i file 'update_x-xx.php' dal tuo webserver e apri la %s per configurare il Ranksystem!";
$lang['isntwidel'] = "Per favore cancella il file 'install.php' dal tuo webserver e apri la %s per configurare il Ranksystem!";
$lang['isntwiusr'] = "L'utente dell'interfaccia Web è stato creato con successo.";
$lang['isntwiusrcr'] = "Creazione dell'accesso";
$lang['isntwiusrcr'] = "Create Webinterface-User";
$lang['isntwiusrdesc'] = "Inserisci nome utente e password per l'accesso all'interfaccia web. Con l'interfaccia web tu potrai configurare il Ranksystem.";
$lang['isntwiusrh'] = "Accesso - Interfaccia Web";
$lang['listacsg'] = "servergroup attuale";
$lang['listacsg'] = "Servergroup attuale";
$lang['listcldbid'] = "Client-database-ID";
$lang['listexgrp'] = "Non viene considerato dal Ranksystem (eccezione del servergroup).";
$lang['listexuid'] = "Non viene considerato dal Ranksystem (eccezione dell'utente).";
@@ -68,12 +63,11 @@ $lang['listseen'] = "Ultima volta online";
$lang['listsuma'] = "Somma del tempo di attività";
$lang['listsumi'] = "Somma del tempo in IDLE";
$lang['listsumo'] = "Somma del tempo Online";
$lang['listtime'] = "%s giorno(i), %s ora(e), %s min., %s sec.";
$lang['listuid'] = "unique Client-ID";
$lang['new'] = "Nuovo";
$lang['login'] = "Login";
$lang['nocount'] = "L'utente %s (unique Client-ID: %s; Client-database-ID %s) è una query oppure effettua molte connessioni (conterà solo la prima connessione) -> Non verrà contato!";
$lang['noentry'] = "Nessuna voce trovata..";
$lang['pass'] = "Password: ";
$lang['pass'] = "Password";
$lang['queryname'] = "Il primo nome del bot è già in uso. Sto riprovando con il secondo...";
$lang['sccrmcld'] = "L'utente con il Client-ID %s è stato correttamente cancellato dal database del ranksystem.";
$lang['sccupcount'] = "All'utente con il Client-ID %s è stato assegnato un tempo online di %s.";
@@ -82,8 +76,6 @@ $lang['setontimedesc'] = "Inserisci il nuovo tempo online, che verrà imposta
$lang['sgrpadd'] = "All'utente %s è stato assegnato il servergroup %s (Client-ID unico: %s; Client-database-ID %s).";
$lang['sgrprerr'] = "C'è stato un problema con l'aggiunta del servergroup all'utente %s (unique Client-ID: %s; Client-database-ID %s)!";
$lang['sgrprm'] = "All'utente %s è stato rimosso il servergroup %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['sitegen'] = "Sito generato in %s secondi con %s utenti.";
$lang['sitegenl'] = "Sito generato in %s secondi con %s utenti (di cui %s visualizzati; %s non considerati per le regole d'eccezione impostate; %s che hanno raggiunto il rank massimo).";
$lang['stix0001'] = "Statistiche del server";
$lang['stix0002'] = "Utenti totali";
$lang['stix0003'] = "Vedi dettagli";
@@ -104,8 +96,6 @@ $lang['stix0017'] = "Versioni (di tutti gli utenti)";
$lang['stix0018'] = "Nazionalità (di tutti gli utenti)";
$lang['stix0019'] = "Piattaforme (di tutti gli utenti)";
$lang['stix0020'] = "Statistiche correnti";
$lang['stix0021'] = "Informazioni richieste";
$lang['stix0022'] = "Risultato";
$lang['stix0023'] = "Stato del server";
$lang['stix0024'] = "Online";
$lang['stix0025'] = "Offline";
@@ -195,25 +185,35 @@ $lang['stnv0027'] = "Le informazioni su questo sito potrebbero NON esser
$lang['stnv0028'] = "(Non sei connesso al TS3!)";
$lang['stnv0029'] = "Lista dei Rank";
$lang['stnv0030'] = "Ranksystem info";
$lang['stnv0031'] = "DE - Deutsch";
$lang['stnv0032'] = "EN - english";
$lang['stnv0033'] = "RU - русский";
$lang['stnv0034'] = "IT - italiano";
$lang['stnv0031'] = "Nel campo di ricerca potrai inserire un nome utente, un Client-ID o un Client-database-ID.";
$lang['stnv0032'] = "Potrai inoltre filtrare i risultati (vedi sotto). Puoi inserire i filtri nel campo di ricerca.";
$lang['stnv0033'] = "La ricerca di utenti combinata a dei filtri è possible. Inserire prima il filtro e successivamente nome utente o ID.";
$lang['stnv0034'] = "È inoltre possibile combinare diversi filtri. Inseriscili consecutivamente nel campo di ricerca.";
$lang['stnv0035'] = "<u>Esempio:</u><br>filtro:non esclusi:Utente Teamspeak";
$lang['stnv0036'] = "Mostra solo gli utenti che sono esclusi (client, servergroup or channel exception).";
$lang['stnv0037'] = "Mostra solo gli utenti che non sono esclusi.";
$lang['stnv0038'] = "Mostra solo gli utenti online.";
$lang['stnv0039'] = "Mostra solo gli utenti offline";
$lang['stnv0040'] = "Mostra solo gli utenti che sono in un determinato Server Group. Rappresentano il rank attuale.<br>Sostituisci qui <i>GROUPID</i>.";
$lang['stnv0041'] = "Mostra solo gli utenti selezionati per ultima visita effettuata.<br>Replace <i>OPERATOR</i> con '<' or '>' or '=' or '!='.<br>E Sostituisci qui <i>TIME</i> con formato data 'Y-m-d H-i' (example: 2016-06-18 20-25).<br>Esempio: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Mostra solo gli utenti di un determinato paese.<br>Sostituisci qui <i>TS3-COUNTRY-CODE</i> e il codice del paese.<br>Per la lista dei codici google for ISO 3166-1 alpha-2";
$lang['stri0001'] = "Informazioni sul Ranksystem";
$lang['stri0002'] = "Che cos' è il ranksystem?";
$lang['stri0002'] = "Che cos'è il ranksystem?";
$lang['stri0003'] = "Un TS3 Bot, che automaticamente attribuisce i rank (servergroups) agli utenti su un TeamSpeak 3 per il tempo trascorso online o di attività online. Inoltre raccoglie info e statistiche sullutente e mostra i risultati sul sito.";
$lang['stri0004'] = "Chi ha creato il Ranksystem?";
$lang['stri0005'] = "Quando è stato creato?";
$lang['stri0006'] = "Prima alpha: 05/10/2014.";
$lang['stri0007'] = "Prima Beta: 01/02/2015.";
$lang['stri0008'] = "Puoi trovare l'ultima versione del Ranksystem alla pagina <a href=\"http://ts-n.net/ranksystem.php\" target=\"_blank\">Ranksystem Website</a>.";
$lang['stri0009'] = "Com' è stato creato il RankSystem?";
$lang['stri0009'] = "Com'è stato creato il RankSystem?";
$lang['stri0010'] = "Che linguaggio è stato utilizzato";
$lang['stri0011'] = "Utilizza inoltre le seguenti librerie:";
$lang['stri0012'] = "Un ringraziamento speciale a:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a> - for russian translation";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - for russian translation";
$lang['stri0014'] = "Bejamin Frost - for per i primi bootstrap design";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - for italian translation";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - per la traduzione italiana";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - per avviare la traduzione in arabo";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - per avviare la traduzione in rumeno";
$lang['sttw0001'] = "Top utenti";
$lang['sttw0002'] = "Della settimana";
$lang['sttw0003'] = "con %s ore di tempo online";
@@ -229,24 +229,26 @@ $lang['sttw0012'] = "Gli altri %s utenti (in ore)";
$lang['sttw0013'] = "con %s ore di tempo attivo";
$lang['sttm0001'] = "Del mese";
$lang['stta0001'] = "Di sempre";
$lang['updb'] = "Devi avviare questo file una sola volta per aggiornare il Ranksystem da una versione non aggiornate %s!<br><br>Dopo aver eseguito il file update_%s.php eliminalo dal tuo web server.<br><br><br>Database aggiornato:<br>";
$lang['updel'] = "Per favore cancella i seguenti file dalla cartella principale del Ranksystem (se non sono già stati eliminati):<br>%s";
$lang['upinf'] = "È stata trovato una versione piu recente del RankSystem (informazioni su come aggiornare qui: http://ts-n.net/ranksystem.php?artid=84#01id84); Informa gli utenti del server...";
$lang['upmov'] = "Per favore sposta \'%s\' nella sottocartella \'%s\' e sovrascrivi quella esistente!";
$lang['upmsg'] = "\nHey, Una nuova versione del [B]Ranksystem[/B] è disponibile!\n\nVersione corrente: %s\n[B]Nuova Versione: %s[/B]\n\nPer maggiori informazioni visita il nostro sito [URL]http://ts-n.net/ranksystem.php[/URL].";
$lang['upsucc'] = "Aggiornamento del database eseguito con successo.";
$lang['upuser'] = "L'utente %s (unique Client-ID: %s; Client-database-ID %s) ha ottenuto un nuovo conteggio (somma del tempo online) di %s (tempo di attività (rispetto al nuovo conteggio): %s).";
$lang['upuserboost'] = "L'utente %s (unique Client-ID: %s; Client-database-ID %s) ha ottenuto un nuovo conteggi (somma del tempo online) di %s (tempo di attività (rispetto al nuovo conteggio): %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "Il Client-ID unico %s non è raggiungibile dal sistema TeamSpeak!";
$lang['upusrinf'] = "L'utente %s è stato informato correttamente.";
$lang['user'] = "Nome Utente: ";
$lang['usermsgactive'] = "\nHey, Sei aumentato di livello in quanto hai raggiunto un tempo di attività di %s giorni, %s ore, %s minuti and %s secondi.";
$lang['usermsgonline'] = "\nHey, Sei aumentato di livello in quanto hai raggiunto un tempo online di %s giorni, %s ore, %s minuti and %s secondi.";
$lang['wiaction'] = "azione";
$lang['wibgco'] = "Colore di sfondo:";
$lang['wibgcodesc'] = "Imposta un colore di sfondo.<br>(utilizza un codice HTML valido, deve iniziare con #)";
$lang['wiboost'] = "boost";
$lang['user'] = "Nome Utente";
$lang['wiaction'] = "Azione";
$lang['wiboost'] = "Boost";
$lang['wiboostdesc'] = "Dai all'utente sul TS3 un servergroup (che dovrà essere creato manualmente), con il quale potrai definire il Boost. Definisci anche il fattore di moltiplicazione (per esempio 2x) e il (per quanto il boost durerà).<br>Più alto è il fattore, più velocemente l'utente raggiungerà il rank successivo.<br>Uno volta che il tempo impostato finirà il servergroup verrà rimosso in automatico dal RankSystem.Il tempo parte non appena viene assegnato il servergroup all'utente.<br><br>servergroup ID => fattore (2,3) => tempo (in secondi)<br><br>Per separare ogni voce utilizza la virgola.<br><br>Esempio:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>Nell'esempio il servergroup 12 per i successivi 6000 secondi gli verrà conteggiato il doppio del tempo online, al servergroup 13 verrà moltiplicato il tempo per 3 per 2500 secondi, e cosi via...";
$lang['wibot1'] = "Il Ranksystem Bot dovrebbe essere stoppato. Controlla il log qui sotto per maggiori informazioni!";
$lang['wibot2'] = "Il Ranksystem Bot dovrebbe essere avviato. Controlla il log qui sotto per maggiori informazioni!";
$lang['wibot3'] = "Il Ranksystem Bot dovrebbe essere riavviato. Controlla il log qui sotto per maggiori informazioni!";
$lang['wibot4'] = "Avvia / Ferma il Bot Ranksystem";
$lang['wibot5'] = "Avvia il Bot";
$lang['wibot6'] = "Ferma il Bot";
$lang['wibot7'] = "Riavvia il Bot";
$lang['wibot8'] = "Log del Ranksystem (estrai):";
$lang['wibot9'] = "Compila tutti i campi obbligatori prima di avviare il bot Ranksystem!";
$lang['wichdbid'] = "Client-database-ID reset";
$lang['wichdbiddesc'] = "Resetta il tempo online di un utente se il suo database-ID è cambiato.<br><br>Esempio:<br>Se un utente viene rimosso da TeamSpeak, gli viene assegnato un nuovo database-ID con la successiva connesione al server.";
$lang['wiconferr'] = "C'è un errore nella configurazione del RankSystem. Vai nell'interfaccia web i sistema le Impostazioni Principali. Specialmente la configurazione 'rank'!";
@@ -262,71 +264,77 @@ $lang['widelsg'] = "rimosso(i) dal servergroup";
$lang['widelsgdesc'] = "Scegli se agli utenti venga rimosso anche l'ultimo servergroup conosciuto, quando cancelli gli utenti dal database del Ranksystem.<br><br>Considererà solamente i servergroup riguardanti il Ranksystem";
$lang['wideltime'] = "Tempo di eliminazione";
$lang['wideltimedesc'] = "Cancella i 'vecchi utenti' dal database del Ranksystem.<br>Inserisci il tempo dopo cui un utente che non si connette al TeamSpeak verrà eliminato.<br><br>0 - Cancellerà gli utenti dal Ranksystem<br><br>I dati degli utenti su TeamSpeak non verranno toccati!";
$lang['wiexcid'] = "Eccezione Stanze";
$lang['wiexciddesc'] = "Inserisci gli ID delle stanze dove non verrà conteggiato il tempo del Rank.<br><br>Se un utente resta in uno dei canali elencati, il tempo non sarà completamente ignorato ma verrà conteggiato come tempo in IDLE.<br><br>Di conseguenza avrà senso solo se si utilizzerà la modalità 'Tempo di attività'.";
$lang['wiexgrp'] = "Eccezione dei servergroup";
$lang['wiexgrpdesc'] = "Lista dei servergroup ID che non verranno contati dal Ranksystem (separati da virgola. es. 9,10,11)<br>Gli utenti che avranno almeno uno di questi servergroup verranno ignorati.";
$lang['wiexuid'] = "Eccezione degli utenti";
$lang['wiexuiddesc'] = "Lista degli utenti (ID unico) che non verranno contati dal Ranksystem (separati da virgola. es 5GFxciykQMojlrvugWti835Wdto=,YQf+7x/4LJ2Tw5cuQGItsVEn+S4=)<br>Questi utentiverranno ignorati.";
$lang['wigrptime'] = "rank";
$lang['wigrptimedesc'] = "Definisci qui dopo quanto tempo un utente debba ottenere automaticamente un servergroup predefinito.<br><br>time (seconds)=>servergroup ID<br><br>Importante per questo è il tempo online di un utente o se \"Idletime\" è attivo, il tempo di attività.<br><br>Ogni voce deve essere separate dalla successive con una virgola. br><br>Dovrà essere inserito il tempo cumulativo<br><br>Esempio:<br>60=>9,120=>10,180=>11<br><br>Su queste basi un utente ottiene il servergroup 9 dopo 60 secondi, a sua volta il 10 dopo altri 60 secondi e così via...";
$lang['wihdco'] = "Colore titolo:";
$lang['wihdcodesc'] = "Definisci un colore del titolo.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
$lang['wihl'] = "Webinterface - Ranksystem";
$lang['wihladm'] = "lista utenti";
$lang['wigrptime'] = "rank up defintion";
$lang['wigrptimedesc'] = "Definisci qui dopo quanto tempo un utente debba ottenere automaticamente un servergroup predefinito.<br><br>time (seconds)=>servergroup ID<br><br>Important for this is the 'online time' or the 'active time' of an user, depending on setting of the mode.<br><br>Ogni voce deve essere separate dalla successive con una virgola. br><br>Dovrà essere inserito il tempo cumulativo<br><br>Esempio:<br>60=>9,120=>10,180=>11<br><br>Su queste basi un utente ottiene il servergroup 9 dopo 60 secondi, a sua volta il 10 dopo altri 60 secondi e così via...";
$lang['wihladm'] = "List Rankup (Admin-Mode)";
$lang['wihlcfg'] = "Impostazioni Principali";
$lang['wihlclg'] = "Modifica Utenti (globale)";
$lang['wihlcls'] = "Modifica Utenti (selezionati)";
$lang['wihldb'] = "Impostazioni Database";
$lang['wihlsty'] = "Impostazioni Stile";
$lang['wihlmsg'] = "Impostazioni Messaggi";
$lang['wihlsty'] = "Impostazione Pagina Statistiche";
$lang['wihlts'] = "Impostazioni Teamspeak";
$lang['wihvco'] = "Colore al passaggio del mouse:";
$lang['wihvcodesc'] = "Imposta colore al passaggio del mouse.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
$lang['wiifco'] = "Colore infotext:";
$lang['wiifcodesc'] = "Imposta il colore del testo delle informazioni.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
$lang['wihlvs'] = "Impostazione Varie";
$lang['wiignidle'] = "Ignora Idle";
$lang['wiignidledesc'] = "Definisci un periodo di tempo, fino a che il tempo di inattività di un utente verrà ignorato.<br><br>Quando un cliente non fa nulla sul server (=idle), questo tempo viene conteggiato dal Ranksystem. Grazie a questa funzione il tempo di inattività di un utente non sarà conteggiato fino al limite definito. Solo quando il limite definito viene superato, conta da tale data per il Ranksystem come il tempo di inattività.<br><br>Questà funzione è compatibile solo con il tempo di attività.<br><br>Significato La funzione è ad esempio per valutare il tempo di ascolto in conversazioni come l'attività.<br><br>0 = Disabilità la funzione<br><br>Esempio:<br>Ignore idle = 600 (seconds)<br>Un utente ha un idle di 8 minunti<br>Conseguenza:<br>8 minuti in IDLE verranno ignorati e poi il tempo successivo verrà conteggiato come tempo di attività. Se il tempo di inattività ora viene aumentato a oltre 12 minuti (quindi il tempo è più di 10 minuti) 2 minuti verrebbero conteggiati come tempo di inattività.";
$lang['wilog'] = "Path dei Log";
$lang['wilogdesc'] = "La path dei lod del RankSystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Assicurati che l'utente che hai assegnato (del web server) abbia i poteri per scrivere nella directory (oppure dai direttamente chmod 777 alla cartella log).";
$lang['wilogout'] = "LogOut";
$lang['wimsgusr'] = "Notifica";
$lang['wimsgusrdesc'] = "Informa un utente con un messaggio privato testuale sul suo aumento di rank.<br>Stabilisci il messaggio in 'lang.php'<br>(usermsgonline o usermsgactive)";
$lang['wiscco'] = "Colore di operazione avvenuta con successo";
$lang['wisccodesc'] = "Definisci un success-text color.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
$lang['wilogdesc'] = "La path dei log del RankSystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Assicurati che l'utente che hai assegnato (del web server) abbia i poteri per scrivere nella directory (oppure dai direttamente chmod 777 alla cartella log).";
$lang['wimsgmsg'] = "Messaggio";
$lang['wimsgmsgdesc'] = "Imposta un messaggio che verrà inviato come messaggio privato su TS3 per quando un utente raggiunge il Rank Successivo.<br><br>Potrete utilizzare i BB-code di un comunissimo messaggio .<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Inoltre il tempo trascorsco potrà essere espresso con la stringa:<br>%1\$s - days<br>%2\$s - hours<br>%3\$s - minutes<br>%4\$s - seconds<br><br>Esempio:<br>Hey,\\nComplimenti! hai raggiunto il Ranksuccessivo grazie al tuo tempo online di %1\$s days, %2\$s hours and %3\$s minutes. [B]Continua Così[/B] ;-)";
$lang['wilogout'] = "Logout";
$lang['wimsgusr'] = "Notifica di aumento di rank";
$lang['wimsgusrdesc'] = "Informa un utente con un messaggio privato testuale sul suo aumento di rank.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "Database";
$lang['winav3'] = "Core";
$lang['winav4'] = "Altri";
$lang['winav5'] = "Messaggio";
$lang['winav6'] = "Pagina delle Statistiche";
$lang['winav7'] = "Amministra";
$lang['winav8'] = "Avvia / Ferma il Bot";
$lang['winav9'] = "Aggiornamento disponibile!";
$lang['winav10'] = "Per favore utilizzare l'interfaccia solo attraverso %s HTTPS%s Una crittografia è fondamentale per garantire la privacy e la sicurezza.%sPer essere in grado di utilizzare HTTPS il vostro web server deve supportare una connessione SSL.";
$lang['wiselcld'] = "Seleziona utenti";
$lang['wiselclddesc'] = "seleziona i clients in base allultimo nickname noto. Per farlo devi solo scrivere.<br>Selezioni multiple vanno separate da una virgola, che il sistema fa automaticamente.<br><br>Con la selezione puoi scegliere unazione con il prossimo passaggio.";
$lang['wiselclddesc'] = "Seleziona gli utenti in base allultimo nickname noto. Per farlo devi solo scrivere.<br>Selezioni multiple vanno separate da una virgola, che il sistema fa automaticamente.<br><br>Con la selezione puoi scegliere unazione con il prossimo passaggio.";
$lang['wishcolas'] = "Servergroup attuale";
$lang['wishcolasdesc'] = "Show column 'actual servergroup' in list_rankup.php";
$lang['wishcolasdesc'] = "Mostra colonna 'Servergroup attuale' in stats/list_rankup.php";
$lang['wishcolat'] = "Tempo Attività";
$lang['wishcolatdesc'] = "Show column 'sum. active time' in list_rankup.php";
$lang['wishcolatdesc'] = "Mostra colonna 'Tempo Attività' in stats/list_rankup.php";
$lang['wishcolcld'] = "Nome Utente";
$lang['wishcolclddesc'] = "Show column 'Client-name' in list_rankup.php";
$lang['wishcolclddesc'] = "Mostra colonna 'Nome Utente' in stats/list_rankup.php";
$lang['wishcoldbid'] = "ID del database";
$lang['wishcoldbiddesc'] = "Show column 'Client-database-ID' in list_rankup.php";
$lang['wishcoldbiddesc'] = "Mostra colonna 'ID del database' in stats/list_rankup.php";
$lang['wishcolit'] = "tempo in IDLE";
$lang['wishcolitdesc'] = "Show column 'sum idle time' in list_rankup.php";
$lang['wishcolitdesc'] = "Mostra colonna 'tempo in IDLE' in stats/list_rankup.php";
$lang['wishcolls'] = "Ultimo volta online";
$lang['wishcollsdesc'] = "Show column 'last seen' in list_rankup.php";
$lang['wishcollsdesc'] = "Mostra colonna 'Ultimo volta online' in stats/list_rankup.php";
$lang['wishcolnx'] = "Prossimo Rank";
$lang['wishcolnxdesc'] = "Show column 'next rank up' in list_rankup.php";
$lang['wishcolnxdesc'] = "Mostra colonna 'Prossimo Rank' in stats/list_rankup.php";
$lang['wishcolot'] = "Tempo Online";
$lang['wishcolotdesc'] = "Show column 'sum. online time' in list_rankup.php";
$lang['wishcolotdesc'] = "Mostra colonna 'Tempo Online' in stats/list_rankup.php";
$lang['wishcolrg'] = "rank";
$lang['wishcolrgdesc'] = "Show column 'rank' in list_rankup.php";
$lang['wishcolsg'] = "next servergroup";
$lang['wishcolsgdesc'] = "Show column 'next servergroup' in list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Show column 'unique Client-ID' in list_rankup.php";
$lang['wishexcld'] = "excepted client";
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excepted by his uniqueID.";
$lang['wishexgrp'] = "excepted groups";
$lang['wishexgrpdesc'] = "Mostra i clients in list_rankup.php, che sono nella lista 'client exception' e non dovrebbero essere considerati per il Ranksystem.";
$lang['wishgen'] = "Sitegen";
$lang['wishgendesc'] = "Mostra il tempo richiesto per la generazione del sito al fondo del sito.";
$lang['wishhicld'] = "Clients in highest Level";
$lang['wishhiclddesc'] = "Mostra I clients in list_rankup.php, che hanno raggiunto il più elevato rank nel Ranksystem.";
$lang['wisupidle'] = "Idletime";
$lang['wisupidledesc'] = "Se la funzione è attivata, la somma del tempo in IDLE verrà sottratta alla somma del tempo online. Il tempo ricavato verrà utilizzato per l'avanzamento di rank.";
$lang['wisvconf'] = "salva";
$lang['wishcolrgdesc'] = "Mostra colonna 'rank' in stats/list_rankup.php";
$lang['wishcolsg'] = "Prossimo Servergroup";
$lang['wishcolsgdesc'] = "Mostra colonna 'Prossimo Servergroup' in stats/list_rankup.php";
$lang['wishcoluuid'] = "ID del Utente";
$lang['wishcoluuiddesc'] = "Mostra colonna 'ID del Utente' in stats/list_rankup.php";
$lang['wishexcld'] = "Eccetto gli utenti";
$lang['wishexclddesc'] = "Mostra gli utenti in list_rankup.php,<br>which are excluded and therefore not participate in the Ranksystem.";
$lang['wishexgrp'] = "Eccetto i Servergroups";
$lang['wishexgrpdesc'] = "Mostra gli utenti in list_rankup.php, che sono nella lista 'client exception' e non dovrebbero essere considerati per il Ranksystem.";
$lang['wishhicld'] = "Utenti col massimo rank";
$lang['wishhiclddesc'] = "Mostra gli utenti in list_rankup.php, che hanno raggiunto il più elevato rank nel Ranksystem.";
$lang['wisupidle'] = "Modalità";
$lang['wisupidledesc'] = "Ci sono due modalità di conteggio del tempo per applicare un aumento di rank. 1) Tempo Online: Tutto il tempo che l'utente passa in TS in IDLE o meno (Vedi colonna 'sum. online time' in the 'stats/list_rankup.php') 2) Tempo di attività: Al tempo online dell'utente viene sottratto il tempo in IDLE (AFK) (Vedi colonna 'sum. active time' in the 'stats/list_rankup.php'). Il cambiamento di modalità dopo lungo tempo non è consigliato ma dovrebbe funzionare comunque.";
$lang['wisvconf'] = "Salva";
$lang['wisvsuc'] = "Modifiche salvate con successo!";
$lang['witime'] = "Timezone";
$lang['witimedesc'] = "Select the timezone the server is hosted.";
$lang['wisvres'] = "Dovrai riavviare il Ranksystem affinché i cambiamenti vengano applicati!";
$lang['witime'] = "Fuso orario";
$lang['witimedesc'] = "Selezione il fuso orario di dove è hostato il server.";
$lang['wits3dch'] = "Canale di Default";
$lang['wits3dchdesc'] = "Il channel-ID cui il bot deve connettersi.<br><br>Il Bot entrerà in questo canale appena entrato nel TeamSpeak server.";
$lang['wits3host'] = "Indirizzo TS3";
@@ -344,18 +352,13 @@ $lang['wits3querusrdesc'] = "Il nome utente della Query scelta<br>Di default è
$lang['wits3query'] = "TS3 - Porta della Query";
$lang['wits3querydesc'] = "La porta per l'accesso delle query a Teamspeak<br>La porta di default è 10011 (TCP)<br>Se non è la porta di default e non sai che porta possa essere guarda all'interno del file 'ts3server.ini' nella directory principale del server Teamspeak dove troverai tutte le informazioni sul server.";
$lang['wits3voice'] = "TS3 - Voice-Port";
$lang['wits3voicedesc'] = "La voice port del vostro Teamspeak<br>Di default è 9987 (UDP)<br>Questa è inoltre la porta con cui ti connetti al TS3.";
$lang['witxco'] = "Colore del testo:";
$lang['witxcodesc'] = "Imposta un colore per il testo.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
$lang['wits3voicedesc'] = "La voice port del vostro Teamspeak<br>Di default è 9987 (UDP)<br>Questa è inoltre la porta con cui vi connettete al TS3.";
$lang['wiupcheck'] = "Controlla aggiornamenti";
$lang['wiupcheckdesc'] = "Se le funzione 'Controlla aggiornamenti', la lista di utenti inseriti (ID unico dell'utente) riceveranno una notifica su Teamspeak (come messaggio privato), quando sarà disponibile uin aggiornamento.";
$lang['wiuptime'] = "Intervallo di cotrollo aggiornamenti";
$lang['wiuptimedesc'] = "Inserisci qui ogni quanti secondi il Ranksystem verificherà se vi sono aggiornamenti disponibili.<br>Attenzione, Ogni utente inserito riceverà la notifica di aggiornamento attraverso un messaggio privato su Temaspeak. Se nessuno degli utenti inseriti sarà online, Il Ranksystem proverà ad inviare il messaggio nell'intervallo di tempo successivo.";
$lang['wiupuid'] = "Recipiente";
$lang['wiupuiddesc'] = "La lista di utenti (dovrà essere inserito l'ID unico dell'utente(i) es. YdicUS4yofeBEONN7J3FeLic8b4=,RiGqBf8hU1kbCV/vwfPL0rzAwZQ=), che verranno informati di eventuali aggiornamenti attraverso un messaggio privato su Teamspeak.";
$lang['wiversion'] = "(versione corrente %s)";
$lang['wivlang'] = "Lingua";
$lang['wivlangdesc'] = "Lingue disponibili per il Ranksystem<br><br>de - Deutsch<br>en - english<br>it - italiano<br>ru - Русский";
$lang['wiwnco'] = "Colore messggio d'avviso:";
$lang['wiwncodesc'] = "Definisci il colore del messaggio di avviso di aggiornamenti disponibili.<br>(Deve essere un codice HTML valido e deve iniziare con # )";
?>

364
languages/core_ro.php Normal file
View File

@@ -0,0 +1,364 @@
<?PHP
$lang = array();
$lang['adduser'] = "Userul %s (unique Client-ID: %s; Client-database-ID %s) este necunoscut -> adăugat la Ranksystem acum.";
$lang['changedbid'] = "Userul %s (unique Client-ID: %s) a primit un nouă identitate (%s). Actualizăm vechea identitate (%s) și resetăm timpul colectat!";
$lang['crawl'] = "Scanăm clientul conectat și contorizăm activitatea...";
$lang['clean'] = "Scanăm clienții care trebuie șterși...";
$lang['cleanc'] = "Utilizatori curați";
$lang['cleancdesc'] = "Cu aceasta funcție clienții vechi din Ranksystem se elimină.<br><br>La sfârșit, Ranksystem sincronizat cu baza de date TeamSpeak. Utilizatorii , care nu există în TeamSpeak, vor fi șterși din Ranksystem.<br><br>Această funcție este activată numai atunci când \"SlowMode\" este dezactivat!<br><br><br>Pentru reglarea automată a bazei de date TeamSpeak , ClientCleaner poate fi folosit:<br>http://ts-n.net/clientcleaner.php";
$lang['cleandel'] = "Au fost %s clienții eliminați din baza de date Ranksystem , pentru că ei nu mai erau existenți în baza de date TeamSpeak ";
$lang['cleanno'] = "Nu a fost nimic de eliminat...";
$lang['cleanp'] = "Perioada de curațare";
$lang['cleanpdesc'] = "Setați un timp care trebuie să treacă înainte de a se executa curățirea clienților.<br><br>Setați un timp în secunde.<br><br>Recomandat este o dată pe zi , deoarece curățarea clienților are nevoie de mult timp pentru baze de date mai mari.";
$lang['cleanrs'] = "Clienți in baza de date Ranksystem: %s";
$lang['cleants'] = "Clienți în baza de date TeamSpeak: %s (of %s)";
$lang['days'] = "%s <small>zile</small>";
$lang['dbconerr'] = "Nu a reușit să se conecteze la baza de date MySQL: ";
$lang['delcldgrpif'] = "Eroare la eliminarea cunoștințelor pentru servergroups: %s";
$lang['delcldgrpsc'] = "Cunoștințe despre servergroups pentru %s Utilizatorul a eliminat cu succes.";
$lang['delclientsif'] = "%s Clienții eliminați din baza de date Ranksystem!";
$lang['delclientssc'] = "%s Clienții eliminați cu succes din baza de date Ranksystem!";
$lang['errlogin'] = "Numele de utilizator și / sau parola sunt incorecte ! Încearcă din nou...";
$lang['errlogin2'] = "Protecție forță brută: încercați din nou în %s seconde!";
$lang['errlogin3'] = "Protecție forță brută: Prea multe greșeli. Banat pentru 300 de secunde!";
$lang['error'] = "Eroare ";
$lang['errremgrp'] = "Eroare la eliminarea utilizatorului cu identitatea %s din servergroup cu servergroup-database-ID %s!";
$lang['errremdb'] = "Eroare când eliminăm utilizatorului cu identitatea %s din baza de date Ranksystem!";
$lang['errsel'] = "Eroare când alegem selecțiile cu<br>Clientul selectat: %s<br>opțiune 'ștergeți clienții': %s<br>opțiune 'sum. online timp': %s";
$lang['errukwn'] = "A apărut o eroare necunoscută!";
$lang['errupcount'] = "Eroare în timp ce reînnoim timpul rezumat on-line de %s de către utilizator cu identitatea %s";
$lang['highest'] = "Cel mai înalt rang atins";
$lang['install'] = "Instalare";
$lang['instdb'] = "Instalăm baza de date:";
$lang['instdbsuc'] = "Baza de date %s a fost creată cu succes.";
$lang['insttb'] = "Instalăm tabelele:";
$lang['isntwicfg'] = "Nu se poate salva configurația bazei de date ! Vă rugăm să modificați 'other/dbconfig.php' cu acces chmod 0777 și incercați iar.";
$lang['isntwichm'] = "Vă rugăm să modificați 'other/dbconfig.php', și folderele 'avatars/', 'icons/' and 'logs/' cu permisiile necesare. Prin urmare, sa editați accesul chmod cu 0777. Apoi incercați iar (refresh la pagină).";
$lang['isntwidbhost'] = "Host-ul bazei de date:";
$lang['isntwidbhostdesc'] = "Server-ul DB<br>(IP sau DNS)";
$lang['isntwidbmsg'] = "Eroare DB: ";
$lang['isntwidbname'] = "Nume DB:";
$lang['isntwidbnamedesc'] = "Nume DB";
$lang['isntwidbpass'] = "Parolă DB:";
$lang['isntwidbpassdesc'] = "Parola pentru a accesa DB";
$lang['isntwidbtype'] = "Tipul DB:";
$lang['isntwidbtypedesc'] = "Tipul DB<br><br>Trebuie să instalați necesarul de PDO Driver.<br>Pentru mai multe informatii accesați http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "DB User:";
$lang['isntwidbusrdesc'] = "User-ul pentru acces la DB";
$lang['isntwidel'] = "Vă rugăm să ștergeți fișierul 'install.php' din webserver și deschideți %s să configurați Ranksystem!";
$lang['isntwiusr'] = "Utilizator pentru webinterface creat cu succes.";
$lang['isntwiusrcr'] = "Creare acces";
$lang['isntwiusrdesc'] = "Introduceți un nume de utilizator și o parolă pentru accesul webinterface. Cu webinterface vă puteți configura Ranksytem-ul.";
$lang['isntwiusrh'] = "Acces - Webinterface";
$lang['listacsg'] = "Servergroup actual";
$lang['listcldbid'] = "Client-database-ID";
$lang['listexgrp'] = "Nu va considera pentru Ranksystem (servergroup exception).";
$lang['listexuid'] = "Nu va considera pentru Ranksystem (client exception).";
$lang['listip'] = "Adresă IP";
$lang['listnick'] = "Nume Client";
$lang['listnxsg'] = "Următorul servergroup";
$lang['listnxup'] = "Următorul rank up";
$lang['listrank'] = "rank";
$lang['listseen'] = "Văzut ultima dată";
$lang['listsuma'] = "sum. timp activ";
$lang['listsumi'] = "sum. timpul de inactivitate";
$lang['listsumo'] = "sum. timp online";
$lang['listuid'] = "unique Client-ID";
$lang['login'] = "Logare";
$lang['nocount'] = "User-ul %s (Client-ID unic: %s; Client-database-ID %s) este un query-user sau este de mai multe ori on-line ( numai primul număr de conexiune ) - > acest lucru nu va conta !";
$lang['noentry'] = "Nu au gasit ..";
$lang['pass'] = "Parolă";
$lang['queryname'] = "În primul rând Botname deja în uz . Încerc cu al doilea Botname ...";
$lang['sccrmcld'] = "User-ul cu unic Client-ID %s scos cu success din baza de date Ranksystem .";
$lang['sccupcount'] = "User-ul cu unic Client-ID %s rescrise cu un succes timp rezumat on-line al %s.";
$lang['setontime'] = "sum. timp online";
$lang['setontimedesc'] = "Introduceți un timp on-line nou rezumat , care ar trebui să fie setat la clienții anteriori selectate . Cu acest vechi rezumat on-line va fi rescris .<br><br>Timpul de sinteză introdus on-line v-a fi luat în considerare pentru rangul sus.";
$lang['sgrpadd'] = "Aloca servergroup %s user-ului %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['sgrprerr'] = "S-a întâmplat o problemă cu servergroup utilizatorului %s (unique Client-ID: %s; Client-database-ID %s)!";
$lang['sgrprm'] = "S-a șters servergroup %s de la user-ul %s (unique Client-ID: %s; Client-database-ID %s).";
$lang['stix0001'] = "Statistică de server";
$lang['stix0002'] = "Numărul total de utilizatori";
$lang['stix0003'] = "Vezi detalii";
$lang['stix0004'] = "Timp on-line al tuturor utilizator / Total";
$lang['stix0005'] = "Vedere de sus din toate timpurile";
$lang['stix0006'] = "Vedere de sus a lunii";
$lang['stix0007'] = "Vedere de sus a săptămânii";
$lang['stix0008'] = "Utilizarea serverului";
$lang['stix0009'] = "În ultimele 7 zile";
$lang['stix0010'] = "În ultimele 30 de zile";
$lang['stix0011'] = "În ultimele 24 de ore";
$lang['stix0012'] = "Selectare perioadă";
$lang['stix0013'] = "Ultima zi";
$lang['stix0014'] = "Săptămâna trecută";
$lang['stix0015'] = "Luna trecută";
$lang['stix0016'] = "Timp activ / inactiv ( tuturor clienților )";
$lang['stix0017'] = "Versiunile ( tuturor clienților )";
$lang['stix0018'] = "Naționalitățile ( tuturor clienților )";
$lang['stix0019'] = "Platforme ( tuturor clienților )";
$lang['stix0020'] = "Statisticile curente";
$lang['stix0023'] = "Status server";
$lang['stix0024'] = "Online";
$lang['stix0025'] = "Offline";
$lang['stix0026'] = "Clienți (Online / Max)";
$lang['stix0027'] = "Număr de canale";
$lang['stix0028'] = "Ping mediu pe server";
$lang['stix0029'] = "Număr total de octeți primit";
$lang['stix0030'] = "Număr total de octeți trimiși";
$lang['stix0031'] = "Server uptime";
$lang['stix0032'] = "După offline:";
$lang['stix0033'] = "<span id=\"days\">00</span> Zile, <span id=\"hours\">00</span> Ore, <span id=\"minutes\">00</span> Minute, <span id=\"seconds\">00</span> Secunde";
$lang['stix0034'] = "Pierderea medie de pachete";
$lang['stix0035'] = "Statisticile generale";
$lang['stix0036'] = "Nume Server";
$lang['stix0037'] = "Adresa Server(Adresa Host : Port)";
$lang['stix0038'] = "Parola Server";
$lang['stix0039'] = "Nu (Server-ul este public)";
$lang['stix0040'] = "Da (Server este privat)";
$lang['stix0041'] = "Server ID";
$lang['stix0042'] = "Server platformă";
$lang['stix0043'] = "Server versiune";
$lang['stix0044'] = "Server creat in data (dd/mm/yyyy)";
$lang['stix0045'] = "Raport la lista de servere";
$lang['stix0046'] = "Activat";
$lang['stix0047'] = "Nu este activat";
$lang['stix0048'] = "Nu sunt suficiente date încă ...";
$lang['stix0049'] = "Timp on-line la toți utilizatorii / luna";
$lang['stix0050'] = "Timp on-line la toți utilizatorii / săptămână";
$lang['stix0051'] = "TeamSpeak nu a reușit , deci nici o data creată...";
$lang['stmy0001'] = "Statisticile mele";
$lang['stmy0002'] = "Rank";
$lang['stmy0003'] = "Database ID:";
$lang['stmy0004'] = "Unic ID:";
$lang['stmy0005'] = "Conexiuni totale la serverul:";
$lang['stmy0006'] = "Inceputul dății pentru statistici:";
$lang['stmy0007'] = "Timp total on-line:";
$lang['stmy0008'] = "Timp online ultimele 7 zile:";
$lang['stmy0009'] = "Timp online ultimele 30 zile:";
$lang['stmy0010'] = "Realizări finalizate:";
$lang['stmy0011'] = "Timp progres realizare";
$lang['stmy0012'] = "Ora: Legendarul";
$lang['stmy0013'] = "Pentru că ai un timp online %s ore.";
$lang['stmy0014'] = "Progres finalizat";
$lang['stmy0015'] = "Ora: Aur";
$lang['stmy0016'] = "% completat pentru Legendar";
$lang['stmy0017'] = "Ora: Argint";
$lang['stmy0018'] = "% completat pentru Aur";
$lang['stmy0019'] = "Ora: Bronz";
$lang['stmy0020'] = "% completat pentru Argint";
$lang['stmy0021'] = "Ora: Ne-rank-at";
$lang['stmy0022'] = "% completat pentru Bronz";
$lang['stmy0023'] = "Conexiune progres realizare";
$lang['stmy0024'] = "Connects: Legendary";
$lang['stmy0025'] = "Because You connected %s times to the server.";
$lang['stmy0026'] = "Connects: Gold";
$lang['stmy0027'] = "Connects: Silver";
$lang['stmy0028'] = "Connects: Bronze";
$lang['stmy0029'] = "Connects: Unranked";
$lang['stmy0030'] = "Progress next servergroup";
$lang['stnv0001'] = "Server news";
$lang['stnv0002'] = "Close";
$lang['stnv0003'] = "Refresh client information";
$lang['stnv0004'] = "Only use this refresh, when your TS3 information got changed, such as your TS3 username";
$lang['stnv0005'] = "It only works, when you are connected to the TS3 server at the same time";
$lang['stnv0006'] = "Refresh";
$lang['stnv0007'] = "Battle area - Page content";
$lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams.";
$lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted.";
$lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins.";
$lang['stnv0011'] = "(The regular battling time is 48 hours)";
$lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants.";
$lang['stnv0013'] = "It will be displayed on the <a href=\"my_stats.php\">My statistics</a> tab.";
$lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc.";
$lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week.";
$lang['stnv0016'] = "Not available";
$lang['stnv0017'] = "You are not connected to the TS3 Server, so it can't display any data for you.";
$lang['stnv0018'] = "Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner.";
$lang['stnv0019'] = "My statistics - Page content";
$lang['stnv0020'] = "This page contains a overall summary of your personal statistics and activity on the server.";
$lang['stnv0021'] = "The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server.";
$lang['stnv0022'] = "This page receives its values out of a database. So the values might be delayed a bit.";
$lang['stnv0023'] = "The sum inside of the donut charts may differ to the amount of 'Total user'. The reason is that this data weren't collected with older versions of the Ranksystem.";
$lang['stnv0024'] = "Ranksystem - Statistics";
$lang['stnv0025'] = "Limit entries";
$lang['stnv0026'] = "all";
$lang['stnv0027'] = "The informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak.";
$lang['stnv0028'] = "(You are not connected to the TS3!)";
$lang['stnv0029'] = "List Rankup";
$lang['stnv0030'] = "Ranksystem info";
$lang['stnv0031'] = "About the search field you can search for pattern in clientname, unique Client-ID and Client-database-ID.";
$lang['stnv0032'] = "You can also use a view filter options (see below). Enter the filter also inside the search field.";
$lang['stnv0033'] = "Combination of filter and search pattern are possible. Enter first the filter(s) followed without any sign your search pattern.";
$lang['stnv0034'] = "Also it is possible to combine multiple filters. Enter this consecutively inside the search field.";
$lang['stnv0035'] = "<u>Example:</u><br>filter:nonexcepted:TeamSpeakUser";
$lang['stnv0036'] = "Show only clients, which are excepted (client, servergroup or channel exception).";
$lang['stnv0037'] = "Show only clients, which are not excepted.";
$lang['stnv0038'] = "Show only clients, which are online.";
$lang['stnv0039'] = "Show only clients, which are not online.";
$lang['stnv0040'] = "Show only clients, which are in defined group. Represent the actuel rank/level.<br>Replace <i>GROUPID</i> with the wished servergroup ID.";
$lang['stnv0041'] = "Show only clients, which are selected by lastseen.<br>Replace <i>OPERATOR</i> with '<' or '>' or '=' or '!='.<br>And replace <i>TIME</i> with a timestamp or date with format 'Y-m-d H-i' (example: 2016-06-18 20-25).<br>Full example: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Show only clients, which are from defined country.<br>Replace <i>TS3-COUNTRY-CODE</i> with the wished country.<br>For list of codes google for ISO 3166-1 alpha-2";
$lang['stri0001'] = "Ranksystem information";
$lang['stri0002'] = "What is the Ranksystem?";
$lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site.";
$lang['stri0004'] = "Who created the Ranksystem?";
$lang['stri0005'] = "When the Ranksystem was Created?";
$lang['stri0006'] = "First alpha release: 05/10/2014.";
$lang['stri0007'] = "First beta release: 01/02/2015.";
$lang['stri0008'] = "You can see the newest version on the <a href=\"http://ts-n.net/ranksystem.php\" target=\"_blank\">Ranksystem Website</a>.";
$lang['stri0009'] = "How was the Ranksystem created?";
$lang['stri0010'] = "The Ranksystem is coded in";
$lang['stri0011'] = "It uses also the following libraries:";
$lang['stri0012'] = "Special Thanks To:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - for russian translation";
$lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - for italian translation";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - for initialisation arabic translation";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - for initialisation romanian translation";
$lang['sttw0001'] = "Top users";
$lang['sttw0002'] = "Of the week";
$lang['sttw0003'] = "With %s hours online time";
$lang['sttw0004'] = "Top 10 compared";
$lang['sttw0005'] = "Hours (Defines 100 %)";
$lang['sttw0006'] = "%s hours (%s&#37;)";
$lang['sttw0007'] = "Top 10 Statistics";
$lang['sttw0008'] = "Top 10 vs others in online time";
$lang['sttw0009'] = "Top 10 vs others in active time";
$lang['sttw0010'] = "Top 10 vs others in inactive time";
$lang['sttw0011'] = "Top 10 (in hours)";
$lang['sttw0012'] = "Other %s users (in hours)";
$lang['sttw0013'] = "With %s hours active time";
$lang['sttm0001'] = "Of the month";
$lang['stta0001'] = "Of all time";
$lang['upinf'] = "A new Version of the Ranksystem is available; Inform clients on server...";
$lang['upmsg'] = "\nHey, a new version of the [B]Ranksystem[/B] is available!\n\ncurrent version: %s\n[B]new version: %s[/B]\n\nPlease check out our site for more informations [URL]http://ts-n.net/ranksystem.php[/URL].";
$lang['upsucc'] = "Database update successfully executed.";
$lang['upuser'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s).";
$lang['upuserboost'] = "User %s (unique Client-ID: %s; Client-database-ID %s) gets a new count (sum. online time) of %s (thereof active %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "The unique Client-ID %s couldn't reached on the TeamSpeak!";
$lang['upusrinf'] = "User %s was successfully informed.";
$lang['user'] = "Username";
$lang['wiaction'] = "action";
$lang['wiboost'] = "boost";
$lang['wiboostdesc'] = "Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.<br>The higher the factor, the faster an user reaches the next higher rank.<br>Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.<br><br>servergroup ID => factor => time (in seconds)<br><br>Each entry have to separate from next with a comma.<br><br>Example:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on...";
$lang['wibot1'] = "Ranksystem Bot should be stopped. Check the log below for more information!";
$lang['wibot2'] = "Ranksystem Bot should be started. Check the log below for more information!";
$lang['wibot3'] = "Ranksystem Bot should be restarted. Check the log below for more information!";
$lang['wibot4'] = "Start / Stop Ranksystem Bot";
$lang['wibot5'] = "Start Bot";
$lang['wibot6'] = "Stop Bot";
$lang['wibot7'] = "Restart Bot";
$lang['wibot8'] = "Ranksystem log (extract):";
$lang['wibot9'] = "Fill out all mandatory fields before starting the Ranksystem Bot!";
$lang['wichdbid'] = "Client-database-ID reset";
$lang['wichdbiddesc'] = "Reset the online time of an user, if his TeamSpeak Client-database-ID changed.<br><br>Example:<br>If a clients gets removed from the TeamSpeak server, it gets a new Client-database-ID with the next connect to the server.";
$lang['wiconferr'] = "There is an error in the configuration of the Ranksystem. Please go to the webinterface and correct the Core Settings. Especially check the config 'rank up'!";
$lang['widaform'] = "Date format";
$lang['widaformdesc'] = "Choose the showing date format.<br><br>Example:<br>%a days, %h hours, %i mins, %s secs";
$lang['widbcfgsuc'] = "Database configurations saved successfully.";
$lang['widbcfgerr'] = "Error while saving the database configurations! Connection failed or writeout error for 'other/dbconfig.php'";
$lang['widelcld'] = "delete clients";
$lang['widelcldgrp'] = "renew groups";
$lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.<br><br>With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.<br>For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.<br><br>This function can be helpful, when user are not in the servergroup, they should be for the defined online time.<br><br>Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause it can't remember ;-)";
$lang['widelclddesc'] = "Delete the before selected clients out of the Ranksystem database.<br><br>With this deletion are the clients on the TeamSpeak Server untouched.";
$lang['widelsg'] = "remove out of servergroups";
$lang['widelsgdesc'] = "Choose if the clients should also be removed out of the last known servergroup, when you delete clients out of the Ranksystem database.<br><br>It will only considered servergroups, which concerned the Ranksystem";
$lang['wideltime'] = "Deletiontime";
$lang['wideltimedesc'] = "Clean old clients out of the Ranksystem database.<br>Entry a time in seconds which a client was not seen to delete it.<br><br>0 - deletes all clients out of the Ranksystem<br><br>The Userdatas on the TeamSpeak server are with this untouched!";
$lang['wiexcid'] = "channel exception";
$lang['wiexciddesc'] = "A comma separated list of the channel-IDs that are not to participate in the Ranksystem.<br><br>Stay users in one of the listed channels, the time there will be completely ignored. There is neither the online time, yet the idle time counted.<br><br>Sense does this function only with the mode 'online time', cause here could be ignored AFK channels for example.<br>With the mode 'active time', this function is useless because as would be deducted the idle time in AFK rooms and thus not counted anyway.<br><br>Be a user in an excluded channel, it is noted for this period as 'excluded from the Ranksystem'. The user dows no longer appears in the list 'stats/list_rankup.php' unless excluded clients should not be displayed there (Stats Page - excepted client).";
$lang['wiexgrp'] = "servergroup exception";
$lang['wiexgrpdesc'] = "A comma seperated list of servergroup-IDs, which should not conside for the Ranksystem.<br>User in at least one of this servergroups IDs will be ignored for the rank up.";
$lang['wiexuid'] = "client exception";
$lang['wiexuiddesc'] = "A comma seperated list of unique Client-IDs, which should not conside for the Ranksystem.<br>User in this list will be ignored for the rank up.";
$lang['wigrptime'] = "rank up definition";
$lang['wigrptimedesc'] = "Define here after which time a user should get automatically a predefined servergroup.<br><br>time (seconds)=>servergroup ID<br><br>Important for this is the 'online time' or the 'active time' of an user, depending on setting of the mode.<br><br>Each entry have to separate from next with a comma.<br><br>The time must be entered cumulative<br><br>Example:<br>60=>9,120=>10,180=>11<br><br>On this a user get after 60 seconds the servergroup 9, in turn after 60 seconds the servergroup 10, and so on...";
$lang['wihladm'] = "List Rankup (Admin-Mode)";
$lang['wihlcfg'] = "Core settings";
$lang['wihldb'] = "Database settings";
$lang['wihlmsg'] = "Message settings";
$lang['wihlsty'] = "Stats page settings";
$lang['wihlts'] = "TeamSpeak settings";
$lang['wihlvs'] = "Various settings";
$lang['wiignidle'] = "Ignore idle";
$lang['wiignidledesc'] = "Define a period, up to which the idle time of an user will be ignored.<br><br>When a client does not do anything on the server (=idle), this time is noted by the Ranksystem. With this feature the idle time of an user will not be counted until the defined limit. Only when the defined limit is exceeded, it counts from that date for the Ranksystem as idle time.<br><br>This function plays only in conjunction with the mode 'active time' a role.<br><br>Meaning the function is e.g. to evaluate the time of listening in conversations as activity.<br><br>0 = disable the feature<br><br>Example:<br>Ignore idle = 600 (seconds)<br>A client has an idle of 8 minuntes<br>consequence:<br>8 minutes idle are ignored and he therefore receives this time as active time. If the idle time now increased to over 12 minutes so the time is over 10 minutes, and in this case 2 minutes would be counted as idle time.";
$lang['wilog'] = "Logpath";
$lang['wilogdesc'] = "Path of the log file of the Ranksystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Be sure, the webuser has the write-permissions to the logpath.";
$lang['wimsgmsg'] = "Message";
$lang['wimsgmsgdesc'] = "Define a message, which will be send to an user, when he rises the next higher rank.<br><br>This message will be send via TS3 private message. So every know bb-code could be used, which also works for a normal private message.<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Furthermore, the previously spent time can be expressed by arguments:<br>%1\$s - days<br>%2\$s - hours<br>%3\$s - minutes<br>%4\$s - seconds<br><br>Example:<br>Hey,\\nyou reached a higher rank, since you already connected for %1\$s days, %2\$s hours and %3\$s minutes to our TS3 server.[B]Keep it up![/B] ;-)";
$lang['wilogout'] = "Logout";
$lang['wimsgusr'] = "Rank up notification";
$lang['wimsgusrdesc'] = "Inform an user with a private text message about his rank up.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "Database";
$lang['winav3'] = "Core";
$lang['winav4'] = "Other";
$lang['winav5'] = "Message";
$lang['winav6'] = "Stats page";
$lang['winav7'] = "Administrate";
$lang['winav8'] = "Start / Stop Bot";
$lang['winav9'] = "Update available!";
$lang['winav10'] = "Please use the webinterface only via %s HTTPS%s An encryption is critical to ensure your privacy and security.%sTo be able to use HTTPS your webserver needs to support an SSL connection.";
$lang['wiselcld'] = "select clients";
$lang['wiselclddesc'] = "Select the clients by the last known username. For this you only have to start typing.<br>Multiple selections are comma separated, which does the system automatically.<br><br>With the selection you can choose with the next step an action.";
$lang['wishcolas'] = "actual servergroup";
$lang['wishcolasdesc'] = "Show column 'actual servergroup' in list_rankup.php";
$lang['wishcolat'] = "active time";
$lang['wishcolatdesc'] = "Show column 'sum. active time' in list_rankup.php";
$lang['wishcolcld'] = "Client-name";
$lang['wishcolclddesc'] = "Show column 'Client-name' in list_rankup.php";
$lang['wishcoldbid'] = "database-ID";
$lang['wishcoldbiddesc'] = "Show column 'Client-database-ID' in list_rankup.php";
$lang['wishcolit'] = "idle time";
$lang['wishcolitdesc'] = "Show column 'sum idle time' in list_rankup.php";
$lang['wishcolls'] = "last seen";
$lang['wishcollsdesc'] = "Show column 'last seen' in list_rankup.php";
$lang['wishcolnx'] = "next rank up";
$lang['wishcolnxdesc'] = "Show column 'next rank up' in list_rankup.php";
$lang['wishcolot'] = "online time";
$lang['wishcolotdesc'] = "Show column 'sum. online time' in list_rankup.php";
$lang['wishcolrg'] = "rank";
$lang['wishcolrgdesc'] = "Show column 'rank' in list_rankup.php";
$lang['wishcolsg'] = "next servergroup";
$lang['wishcolsgdesc'] = "Show column 'next servergroup' in list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Show column 'unique Client-ID' in list_rankup.php";
$lang['wishexcld'] = "excepted client";
$lang['wishexclddesc'] = "Show clients in list_rankup.php,<br>which are excluded and therefore not participate in the Ranksystem.";
$lang['wishexgrp'] = "excepted groups";
$lang['wishexgrpdesc'] = "Show clients in list_rankup.php, which are in the list 'client exception' and shouldn't be conside for the Ranksystem.";
$lang['wishhicld'] = "Clients in highest Level";
$lang['wishhiclddesc'] = "Show clients in list_rankup.php, which reached the highest level in the Ranksystem.";
$lang['wisupidle'] = "Mode";
$lang['wisupidledesc'] = "There are two modes, as time can be counted and can then apply for a rank increase. 1) online time: Here the pure online time of the user is taken into account (see column 'sum. online time' in the 'stats/list_rankup.php') 2) active time: This will be deducted from the online time of a user, the inactive time (idle) (see column 'sum. active time' in the 'stats/list_rankup.php'). A change of mode with an already longer running database is not recommended, but may work.";
$lang['wisvconf'] = "save";
$lang['wisvsuc'] = "Changes successfully saved!";
$lang['wisvres'] = "You need to restart the Ranksystem before the changes will take effect!";
$lang['witime'] = "Timezone";
$lang['witimedesc'] = "Select the timezone the server is hosted.";
$lang['wits3dch'] = "Default Channel";
$lang['wits3dchdesc'] = "The channel-ID, the bot should connect with.<br><br>The Bot will join this channel after connecting to the TeamSpeak server.";
$lang['wits3host'] = "TS3 Hostaddress";
$lang['wits3hostdesc'] = "TeamSpeak 3 Server address<br>(IP oder DNS)";
$lang['wits3sm'] = "Slowmode";
$lang['wits3smdesc'] = "With the Slowmode you can reduce \"spam\" of query commands to the TeamSpeak server. This prevent bans in case of flood.<br>TeamSpeak Query commands get delayed with this function.<br><br>!!! ALSO IT REDUCE THE CPU USAGE !!!<br><br>The activation is not recommended, if not required. The delay increases the duration of the Bot, which makes it imprecisely.";
$lang['wits3qnm'] = "Botname";
$lang['wits3qnm2'] = "2nd Botname";
$lang['wits3qnm2desc'] = "A fallback Botname, if the first one is already in use.";
$lang['wits3qnmdesc'] = "The name, with this the query-connection will be established.<br>You can name it free.";
$lang['wits3querpw'] = "TS3 Query-Password";
$lang['wits3querpwdesc'] = "TeamSpeak 3 query password<br>Password for the query user.";
$lang['wits3querusr'] = "TS3 Query-User";
$lang['wits3querusrdesc'] = "TeamSpeak 3 query username<br>Default is serveradmin<br>Of course, you can also create an additional serverquery account only for the Ranksystem.<br>The needed permissions you find on:<br>http://ts-n.net/ranksystem.php";
$lang['wits3query'] = "TS3 Query-Port";
$lang['wits3querydesc'] = "TeamSpeak 3 query port<br>Default is 10011 (TCP)<br>If its not default, you should find it in your 'ts3server.ini'.";
$lang['wits3voice'] = "TS3 Voice-Port";
$lang['wits3voicedesc'] = "TeamSpeak 3 voice port<br>Default is 9987 (UDP)<br>This is the port, you uses also to connect with the TS3 Client.";
$lang['wiupcheck'] = "Update info";
$lang['wiupcheckdesc'] = "If the Update info is enable, the listed user gets a notification with a private text message, once an update is available.";
$lang['wiuptime'] = "Interval";
$lang['wiuptimedesc'] = "Enter here how much seconds have to gone till the Ranksystem should check for available updates.<br><br>Attention, for each check the listed user gets a notification. If no one of the listed users is online, the Ranksystem will try to notificate with the next interval.";
$lang['wiupuid'] = "Recipient";
$lang['wiupuiddesc'] = "A comma separate list of unique Client-IDs, which shoud be informed on the TeamSpeak via private message for available updates.";
$lang['wivlang'] = "Language";
$lang['wivlangdesc'] = "Choose a default language for the Ranksystem.<br><br>The language is also selectable on the websites for the users and will be stored for the session.";
?>

View File

@@ -1,361 +1,364 @@
<?PHP
$lang = array();
$lang['adduser'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) не известен -> добавлен к Ранг Системе.";
$lang['alrup'] = "Вы уже обновили свою базу данных. Пожалуйста, удалите этот файл из своего веб-сервера!";
$lang['changedbid'] = "Пользователь %s (Уникальный ID клиента: %s) получил новый TeamSpeak Client-database-ID (%s). Обновление старой Client-database-ID (%s) и сброс collected times!";
$lang['adduser'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) неизвестен -> добавлен к Ранг Системе.";
$lang['changedbid'] = "Пользователь %s (Уникальный ID клиента: %s) получил новый TeamSpeak Client-database-ID (%s). Обновление старой Client-database-ID (%s) и сбрасываем ему старое время!";
$lang['crawl'] = "Сканирование активности подключенных пользователей...";
$lang['clean'] = "Сканирование пользователей, которых должен удалить...";
$lang['cleanc'] = "чистка пользователей";
$lang['cleancdesc'] = "С включением этой функцией старые пользователи в Ranksystem будут удалены.<br><br>С этой целью, Ranksystem синхронизируется с базой данных TeamSpeak. Пользователи, которых не существует в TeamSpeak, будут удалены из Ranksystem.<br><br>Эта функция работает когда 'Slowmode' дезактивирован!<br><br><br>Для автоматического регулирования базы данных может использоваться TeamSpeak ClientCleaner:<br>http://ts-n.net/clientcleaner.php";
$lang['cleanc'] = "Чистка пользователей";
$lang['cleancdesc'] = "С включением этой функцией старые пользователи в Ranksystem будут удалены.<br><br>С этой целью, Ranksystem синхронизируется с базой данных TeamSpeak. Пользователи, которых не существует в базе данных TeamSpeak, будут удалены из Ranksystem.<br><br>Эта функция работает когда 'Slowmode' дезактивирован!<br><br><br>Для автоматического регулирования базы данных TeamSpeak 3 можете использоваться ClientCleaner:<br>http://ts-n.net/clientcleaner.php";
$lang['cleandel'] = "%s пользователя удаленны из базы данных Ranksystem, так как они больше не существуют в базе данных TeamSpeak.";
$lang['cleanno'] = "Никого не было, чтобы было что удалить...";
$lang['cleanp'] = "период отчистки";
$lang['cleanno'] = "Не найдены пользователи, которые подходили бы для удаления из базы данных.";
$lang['cleanp'] = "Период чистки БД RankSystem";
$lang['cleanpdesc'] = "Укажите время, которое должно пройти перед запуском 'чистка пользователей'.<br><br>Устанавливается в секундах.<br><br>Для больших баз данных рекомендуется использовать один раз в день.";
$lang['cleanrs'] = "Пользователи в базе данных Ranksystem: %s";
$lang['cleants'] = "Пользователи найдены в базе данных TeamSpeak: %s (at %s)";
$lang['days'] = "days";
$lang['dbconerr'] = "Ошибка подключения к базе данных MySQL: ";
$lang['delcldgrpif'] = "Ошибка by removing the knowledge for servergroups: %s";
$lang['days'] = "%s <small>Дней</small>";
$lang['dbconerr'] = "Ошибка подключения к базе данных: ";
$lang['delcldgrpif'] = "Ошибка удаления пользователя из группы сервера: %s";
$lang['delcldgrpsc'] = "Данные о сервер группах для пользователя %s успешно удалена.";
$lang['delclientsif'] = "%s Клиент(ов) удалено из базы данных Ранг Системы!";
$lang['delclientssc'] = "%s Клиент(ов) успешно удалено из базы данных Ранг Системы!";
$lang['errlogin'] = "Логин или пароль не верны! Попробуйте снова...";
$lang['errlogin'] = "Логин или пароль введены неверно! Попробуйте снова...";
$lang['errlogin2'] = "Brute force protection: Попробуйте повторить через %s секунд!";
$lang['errlogin3'] = "Brute force protection: Слишком много попыток. Вы были забанены на 300 секунд!";
$lang['error'] = "Ошибка ";
$lang['errremgrp'] = "Ошибка удаления пользователя с уникальным идентификатором UID: %s из сервер группы SID: %s!";
$lang['errremgrp'] = "Ошибка удаления пользователя с уникальным идентификатором UID: %s из группы сервера ID: %s!";
$lang['errremdb'] = "Ошибка удаления пользователя с уникальным идентификатором UID %s из базы данных Ранг Системы!";
$lang['errsel'] = "Error by choosing the selections with<br>selected client: %s<br>option 'delete clients': %s<br>option 'sum. online time': %s";
$lang['errsel'] = "Ошибка удаления пользователя с уникальным идентификатором UID: %s<br>параметр 'удаление клиентов': %s<br>По условию 'Суммарное время онлайна': %s";
$lang['errukwn'] = "Произошла неизвестная ошибка!";
$lang['errupcount'] = "Ошибка подсчета суммарного времени подключения %s пользователя с UCI %s";
$lang['firstuse'] = "Кажется это первый запуск. Начинаю вести Историю Пользователей...";
$lang['highest'] = "высокий Ранг достигнут";
$lang['instdb'] = "Установка Базы данных:";
$lang['instdberr'] = "Ошибка создания базы данных: ";
$lang['instdbsubm'] = "Создание Базы данных";
$lang['highest'] = "Достигнут высший ранг";
$lang['install'] = "Установка";
$lang['instdb'] = "Установка базы данных";
$lang['instdbsuc'] = "База данных %s успешно создана.";
$lang['insttb'] = "Установка Базы Данных:";
$lang['insttberr'] = "Ошибка при установке таблиц: ";
$lang['insttbsuc'] = "Таблица %s успешно создана.";
$lang['isntwicfg'] = "Не получилось записать настройки базы данных! Пожалуйста установите права на запись 'other/dbconfig.php' chmod 0777 и попробуйте снова.";
$lang['isntwichm'] = "Please edit the 'other/dbconfig.php', and the folders 'avatars/', 'icons/' and 'logs/' with the needed permissions. Therefore edit the chmod to 0777. After it try again (reload the page).";
$lang['isntwidb'] = "Укажите настройки для подключения к базе данных:";
$lang['isntwidberr'] = "Пожалуйста, проверьте, все ли поля были заполнены а так же корректность заполнения!";
$lang['isntwidbhost'] = "Адрес Базы Данных:";
$lang['isntwidbhostdesc'] = "Адрес сервера Базы Данных<br>(IP or DNS)";
$lang['isntwidbmsg'] = "Ошибка Данных: ";
$lang['isntwidbname'] = "Имя Базы Данных:";
$lang['isntwidbnamedesc'] = "Название Базы Данных";
$lang['isntwidbpass'] = "Пароль Базы Данных:";
$lang['isntwicfg'] = "Не получилось записать настройки базы данных! Пожалуйста, установите права на запись 'other/dbconfig.php' chmod 0777 и попробуйте снова.";
$lang['isntwicfg2'] = "Конфигурирование веб-интерфейса";
$lang['isntwichm'] = "Отсутствуют права на запись в папку \"%s\". Пожалуйста, установите на эту папку права chmod 0777 и повторите этот этап заново.";
$lang['isntwidbhost'] = "Адрес:";
$lang['isntwidbhostdesc'] = "Адрес сервера базы данных<br>(IP or DNS)";
$lang['isntwidbmsg'] = "Ошибка базы данных: ";
$lang['isntwidbname'] = "Имя:";
$lang['isntwidbnamedesc'] = "Название базы данных";
$lang['isntwidbpass'] = "Пароль:";
$lang['isntwidbpassdesc'] = "Пароль для подключения к базе данных";
$lang['isntwidbtype'] = "Тип Базы Данных:";
$lang['isntwidbtypedesc'] = "Тип Базы Данных<br><br>У вас должен быть установлен PDO Драйвер.<br>Для получения дополнительной информации см. http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "Пользователь Базы Данных:";
$lang['isntwidbusrdesc'] = "Пользователь с доступом к Базе Данных";
$lang['isntwidel'] = "Пожалуйста удалите файл 'install.php' и файлы 'update_x-xx.php' с вашего Веб-Сервера и откройте %s для настройки Ранг Системы!";
$lang['isntwidbtype'] = "Тип базы данных:";
$lang['isntwidbtypedesc'] = "Тип базы данных<br><br>Для корректной работы у вас должен быть установлен PDO-Драйвер.<br>Для получения дополнительной информации см. http://ts-n.net/ranksystem.php";
$lang['isntwidbusr'] = "Пользователь:";
$lang['isntwidbusrdesc'] = "Пользователь с доступом к базе данных";
$lang['isntwidel'] = "Пожалуйста, удалите файл 'install.php' Веб-Сервера в целях безопасности! После откройте %s для настройки Системы рангов(RankSystem)!";
$lang['isntwiusr'] = "Пользователь Веб-Панели успешно создан.";
$lang['isntwiusrcr'] = "создание доступа";
$lang['isntwiusrcr'] = "Создать создать аккаунт Администратора";
$lang['isntwiusrdesc'] = "Введите имя пользователя и пароль для доступа в Веб-Панель. С помощью Веб-Панели вы сможете настроить ранг систему.";
$lang['isntwiusrh'] = "Доступ - Веб-Панель";
$lang['listacsg'] = "ток сервер группа";
$lang['listacsg'] = "Текущая сервер группа";
$lang['listcldbid'] = "ID клиента в базе данных";
$lang['listexgrp'] = "Не учитывается Ранг Системой (исключения по сервергруппам).";
$lang['listexuid'] = "Не учитывается Ранг Системой (исключения по клиентам).";
$lang['listip'] = "IP адрес";
$lang['listnick'] = "Ник";
$lang['listnxsg'] = "Следующая сервер группа";
$lang['listexgrp'] = "Не учитывается Ранг Системой (исключение по группам сервера).";
$lang['listexuid'] = "Не учитывается Ранг Системой (исключение по клиентам).";
$lang['listip'] = "IP-адрес";
$lang['listnick'] = "Никнейм";
$lang['listnxsg'] = "Следующая группа ранга";
$lang['listnxup'] = "Следующий Ранг через";
$lang['listrank'] = "П\Н";
$lang['listseen'] = "последняя активность";
$lang['listrank'] = "Ранг";
$lang['listseen'] = "Последняя активность";
$lang['listsuma'] = "Сумм. время активности";
$lang['listsumi'] = "Сумм. время простоя";
$lang['listsumo'] = "Сумм. время подключения";
$lang['listtime'] = "%s день(й), %s час(ов), %s мин., %s сек.";
$lang['listuid'] = "Уникальный ID клиента";
$lang['new'] = "новый";
$lang['nocount'] = "Пользователь %s (Уникальный Клиент ID: %s; Клиент ID %s) это query-пользователь (постоянно первое подключение) -> не будет учитываться!";
$lang['listuid'] = "Уникальный ID клиента(UID)";
$lang['login'] = "Авторизоваться";
$lang['nocount'] = "Пользователь %s (Уникальный Клиент ID: %s; Клиент ID %s) является query-пользователем -> не будет учитываться!";
$lang['noentry'] = "Записей не найдено..";
$lang['pass'] = "Пароль: ";
$lang['queryname'] = "Первый Botname уже используется. Попробуйте вторым Botname...";
$lang['pass'] = "Пароль";
$lang['queryname'] = "Первый никнейм для бота уже занят другим пользователем. Пробуем использовать второй никнейм...";
$lang['sccrmcld'] = "Пользователь с уникальным ID %s успешно удален из базы данных Ранг Системы.";
$lang['sccupcount'] = "Пользователь с уникальным ID %s успешно переписан с итоговым временем онлайн %s.";
$lang['setontime'] = "сумм. время подключения";
$lang['setontimedesc'] = "Укажите новое суммарное время подключения для выбранных клиентов. С этим изминением пользователь получит указанное время подключения.<br><br>Указанное время подключения будет учтено Ранг Системой.";
$lang['setontime'] = "Правка накопленного времени";
$lang['setontimedesc'] = "Укажите новое время в секундах, которое нужно задать выбранным клиентам. <br><br>Указанное время подключения будет учтено Ранг Системой и пользователь будет награжден новым Рангом, если он достиг его.";
$lang['sgrpadd'] = "Выдана сервер группа %s пользователю %s (Уникальный ID клиента: %s; ID в базе данных: %s).";
$lang['sgrprerr'] = "Что то пошло не так, проблема с сервер группой пользователя %s (Уникальный ID клиента:: %s; ID в базе данных %s)!";
$lang['sgrprerr'] = "Что-то пошло не так, проблема с сервер группой пользователя %s (Уникальный ID клиента:: %s; ID в базе данных %s)!";
$lang['sgrprm'] = "С пользователя %s (Уникальный ID клиента: %s; ID в базе данных: %s) удалена сервер-группа %s.";
$lang['sitegen'] = "Страница генерирована за %s секунд. %s пользователей.";
$lang['sitegenl'] = "Страница генерирована за %s секунд с %s пользователями ( %s пользователей показанно; %s игнорируются по правилам исключения; %s высокого ранга).";
$lang['stix0001'] = "Server Statistics";
$lang['stix0002'] = "Total Users";
$lang['stix0003'] = "View Details";
$lang['stix0004'] = "Online Time Of All User / Total";
$lang['stix0005'] = "View Top Of All Time";
$lang['stix0006'] = "View Top Of The Month";
$lang['stix0007'] = "View Top Of The Week";
$lang['stix0008'] = "Server Usage";
$lang['stix0009'] = "In The Last 7 Days";
$lang['stix0010'] = "In The Last 30 Days";
$lang['stix0011'] = "In The Last 24 Hours";
$lang['stix0012'] = "select period";
$lang['stix0013'] = "Last Day";
$lang['stix0014'] = "Last Week";
$lang['stix0015'] = "Last Month";
$lang['stix0016'] = "Active / Inactive Time (Of All Clients)";
$lang['stix0017'] = "Versions (Of All Clients)";
$lang['stix0018'] = "Nationalities (Of All Clients)";
$lang['stix0019'] = "Platforms (Of All Clients)";
$lang['stix0020'] = "Current Statistics";
$lang['stix0021'] = "Requested Information";
$lang['stix0022'] = "Result";
$lang['stix0023'] = "Server Status";
$lang['stix0024'] = "Online";
$lang['stix0025'] = "Offline";
$lang['stix0026'] = "Clients (Online / Max)";
$lang['stix0027'] = "Amount Of Channels";
$lang['stix0028'] = "Average Server Ping";
$lang['stix0029'] = "Total Bytes Received";
$lang['stix0030'] = "Total Bytes Sent";
$lang['stix0031'] = "Server Uptime";
$lang['stix0032'] = "before offline:";
$lang['stix0033'] = "<span id=\"days\">00</span> Days, <span id=\"hours\">00</span> Hours, <span id=\"minutes\">00</span> Mins, <span id=\"seconds\">00</span> Secs";
$lang['stix0034'] = "Average Packet Loss";
$lang['stix0035'] = "Overall Statistics";
$lang['stix0036'] = "Server Name";
$lang['stix0037'] = "Server Address (Host Address : Port)";
$lang['stix0038'] = "Server Password";
$lang['stix0039'] = "No (Server is Public)";
$lang['stix0040'] = "Yes (Server Is Private)";
$lang['stix0041'] = "Server ID";
$lang['stix0042'] = "Server Platform";
$lang['stix0043'] = "Server Version";
$lang['stix0044'] = "Server Creation Date (dd/mm/yyyy)";
$lang['stix0045'] = "Report To Server List";
$lang['stix0046'] = "Activated";
$lang['stix0047'] = "Not Activated";
$lang['stix0048'] = "not enough data yet...";
$lang['stix0049'] = "Online Time Of All User / Last Month";
$lang['stix0050'] = "Online Time Of All User / Last Week";
$lang['stix0051'] = "TeamSpeak has failed, so no creation date...";
$lang['stmy0001'] = "My Statistics";
$lang['stmy0002'] = "Rank";
$lang['stmy0003'] = "Database ID:";
$lang['stmy0004'] = "Unique ID:";
$lang['stmy0005'] = "Total Connections To The Server:";
$lang['stmy0006'] = "Start Date For Statistics:";
$lang['stmy0007'] = "Total Online Time:";
$lang['stmy0008'] = "Online Time Last 7 Days:";
$lang['stmy0009'] = "Online Time Last 30 Days:";
$lang['stmy0010'] = "Achievements Completed:";
$lang['stmy0011'] = "Time Achievement Progress";
$lang['stmy0012'] = "Time: Legendary";
$lang['stmy0013'] = "Because You Have A Online Time Of %s hours.";
$lang['stmy0014'] = "Progress Completed";
$lang['stmy0015'] = "Time: Gold";
$lang['stmy0016'] = "% Completed For Legendary";
$lang['stmy0017'] = "Time: Silver";
$lang['stmy0018'] = "% Completed For Gold";
$lang['stmy0019'] = "Time: Bronze";
$lang['stmy0020'] = "% Completed For Silver";
$lang['stmy0021'] = "Time: Unranked";
$lang['stmy0022'] = "% Completed For Bronze";
$lang['stmy0023'] = "Connection Achievement Progress";
$lang['stmy0024'] = "Connects: Legendary";
$lang['stmy0025'] = "Because You Connected %s Times To The Server.";
$lang['stmy0026'] = "Connects: Gold";
$lang['stmy0027'] = "Connects: Silver";
$lang['stmy0028'] = "Connects: Bronze";
$lang['stmy0029'] = "Connects: Unranked";
$lang['stmy0030'] = "Progress next servergroup";
$lang['stnv0001'] = "Server News";
$lang['stnv0002'] = "Close";
$lang['stnv0003'] = "Refresh Client Information";
$lang['stnv0004'] = "Only use this Refresh, when your TS3 information got changed, such as your TS3 username";
$lang['stnv0005'] = "It only works, when you are connected to the TS3 Server at the same time";
$lang['stnv0006'] = "Refresh";
$lang['stnv0007'] = "Battle Area - Page Content";
$lang['stnv0008'] = "You can challenge other users in a battle between two users or two teams.";
$lang['stnv0009'] = "While the battle is active the online time of the teams/users will be counted.";
$lang['stnv0010'] = "When the battle ends the team/user with the highest online time wins.";
$lang['stnv0011'] = "(The regular battling time is 48 hours)";
$lang['stnv0012'] = "The winning team/user will recieve a price, which the user can use whenever the user wants.";
$lang['stnv0013'] = "It will be displayed on the <a href=\"my_stats.php\">My Statistics</a> tab.";
$lang['stnv0014'] = "(Could be online time boost(2x) for 8 hours, instant online time (4 hours), etc.";
$lang['stnv0015'] = "These boosts can be used for example to climb in the top users of the week.";
$lang['stnv0016'] = "Not available";
$lang['stnv0017'] = "You are not connected to the TS3 Server, so it cant display any data for you.";
$lang['stnv0018'] = "Please connect to the TS3 Server and then Refresh your Session by pressing the blue Refresh Button at the top-right corner.";
$lang['stnv0019'] = "My Statistics - Page Content";
$lang['stnv0020'] = "This page contains a overall summary of your personal statistics and activity on the server.";
$lang['stnv0021'] = "The informations are collected since the beginning of the Ranksystem, they are not since the beginning of the TeamSpeak server.";
$lang['stnv0022'] = "This page receives its values out of a database. So the values might be delayed a bit.";
$lang['stnv0023'] = "The sum inside of the donut charts may differ to the amount of 'Total user'. The reason is that this data weren't collected with older versions of the Ranksystem.";
$lang['stnv0024'] = "Ranksystem - Statistics";
$lang['stnv0025'] = "Limit entries";
$lang['stnv0026'] = "all";
$lang['stnv0027'] = "The Informations on this site could be outdated! It seems the Ranksystem is no more connected to the TeamSpeak.";
$lang['stnv0028'] = "(You are not connected to the TS3!)";
$lang['stnv0029'] = "List Rankup";
$lang['stnv0030'] = "Ranksystem Info";
$lang['stnv0031'] = "DE - Deutsch";
$lang['stnv0032'] = "EN - english";
$lang['stnv0033'] = "RU - русский";
$lang['stnv0034'] = "IT - italiano";
$lang['stri0001'] = "Ranksystem Information";
$lang['stri0002'] = "What Is The Ranksystem?";
$lang['stri0003'] = "A TS3 Bot, which automatically grant ranks (servergroups) to user on a TeamSpeak 3 Server for online time or online activity. It also gathers informations and statistics about the user and displays the result on this site.";
$lang['stri0004'] = "Who Created The Ranksystem?";
$lang['stri0005'] = "When Did The Ranksystem Created?";
$lang['stri0006'] = "First alpha release: 05/10/2014.";
$lang['stri0007'] = "First beta release: 01/02/2015.";
$lang['stri0008'] = "You can see the newest version on the <a href=\"http://ts-n.net/ranksystem.php\" target=\"_blank\">Ranksystem Website</a>.";
$lang['stri0009'] = "How Did The Ranksystem Created?";
$lang['stri0010'] = "The Ranksystem is coded in";
$lang['stri0011'] = "It uses also the following libraries:";
$lang['stri0012'] = "Special Thanks To:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a> - for russian translation";
$lang['stri0014'] = "Bejamin Frost - for initialisation the bootstrap design";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - for italian translation";
$lang['sttw0001'] = "Top Users";
$lang['sttw0002'] = "Of The Week";
$lang['sttw0003'] = "With %s Hours Online Time";
$lang['sttw0004'] = "Top 10 Compared";
$lang['sttw0005'] = "Hours (Defines 100 %)";
$lang['sttw0006'] = "%s Hours (%s&#37;)";
$lang['sttw0007'] = "Top 10 Statistics";
$lang['sttw0008'] = "Top 10 Vs Others In Online Time";
$lang['sttw0009'] = "Top 10 Vs Others In Active Time";
$lang['sttw0010'] = "Top 10 Vs Others In Inactive Time";
$lang['sttw0011'] = "Top 10 (in Hours)";
$lang['sttw0012'] = "Other %s Users (in Hours)";
$lang['sttw0013'] = "With %s hours active time";
$lang['sttm0001'] = "Of The Month";
$lang['stta0001'] = "Of All Time";
$lang['updb'] = "Запустите это, если вы хотите обновить Ranksystem с более старой версии до версии %s!<br><br>Запустите это один раз после чего удалите update_%s.php файлы с вашего вебсервера.<br><br><br>Обновление Базы данных:<br>";
$lang['updel'] = "Пожалуйста, удалите следующие файлы из корня ranksystem, если они все еще существуют:<br>%s";
$lang['stix0001'] = "Статистика сервера";
$lang['stix0002'] = "Пользователей зарегистрировано в базе RankSystem";
$lang['stix0003'] = "Посмотреть подробнее";
$lang['stix0004'] = "Общий накопленный онлайн за всё время";
$lang['stix0005'] = "Топ онлайна за всё время";
$lang['stix0006'] = "Топ онлайна за месяц";
$lang['stix0007'] = "Топ онлайна за неделю";
$lang['stix0008'] = "Активность сервера";
$lang['stix0009'] = "За последние 7 дней";
$lang['stix0010'] = "За последние 30 дней";
$lang['stix0011'] = "За последние 24 часа";
$lang['stix0012'] = "Выберите период";
$lang['stix0013'] = "За день";
$lang['stix0014'] = "За неделю";
$lang['stix0015'] = "За месяц";
$lang['stix0016'] = "Соотнош. активн./AFK";
$lang['stix0017'] = "Версии клиентов";
$lang['stix0018'] = "Рейтинг стран";
$lang['stix0019'] = "Популярные платформы";
$lang['stix0020'] = "Текущая статистика";
$lang['stix0023'] = "Статус сервера";
$lang['stix0024'] = "Активен";
$lang['stix0025'] = "Неактивен";
$lang['stix0026'] = "Пользователей (В сети / Вмещается)";
$lang['stix0027'] = "Количество каналов";
$lang['stix0028'] = "Средний пинг на сервере";
$lang['stix0029'] =" Всего байтов получено";
$lang['stix0030'] = "Всего байтов отправлено";
$lang['stix0031'] = "Сервер онлайн";
$lang['stix0032'] = "Находится в оффлайне:";
$lang['stix0033'] = "<span id=\"days\">00</span> Дней, <span id=\"hours\">00</span> Часов, <span id=\"minutes\">00</span> Мин., <span id=\"seconds\">00</span> Сек.";
$lang['stix0034'] = "Средняя потеря пакетов";
$lang['stix0035'] = "Информация о сервере";
$lang['stix0036'] = "Название сервера";
$lang['stix0037'] = "Адрес сервера (IP : Порт)";
$lang['stix0038'] = "Защищен паролем";
$lang['stix0039'] = "Нет (Публичный сервер)";
$lang['stix0040'] = "Да (Приватный сервер)";
$lang['stix0041'] = "ID сервера";
$lang['stix0042'] = "Серверная платформа";
$lang['stix0043'] = "Версия сервера";
$lang['stix0044'] = "Дата создания (dd/mm/yyyy)";
$lang['stix0045'] = "Видимость в глобал. списке";
$lang['stix0046'] = "Отображается";
$lang['stix0047'] = "Не отображается";
$lang['stix0048'] = "Нет информации...";
$lang['stix0049'] = "Общий накопленный онлайн за месяц";
$lang['stix0050'] = "Общий накопленный онлайн за неделю";
$lang['stix0051'] = "Ошибка при получении даты";
$lang['stmy0001'] = "Моя статистика";
$lang['stmy0002'] = "Ранг";
$lang['stmy0003'] = "ID в базе данных:";
$lang['stmy0004'] = "Уникальный ID(UID):";
$lang['stmy0005'] = "Всего подключений к серверу:";
$lang['stmy0006'] = "Занесён в базу статистики";
$lang['stmy0007'] = "Проведенное время на сервере:";
$lang['stmy0008'] = "Онлайн за 7 дней:";
$lang['stmy0009'] = "Онлайн за 30 дней:";
$lang['stmy0010'] = "Получено достижений:";
$lang['stmy0011'] = "Достижение за онлайн на сервере";
$lang['stmy0012'] = "Уровень: Легенда";
$lang['stmy0013'] = "Вы провели в онлайне на сервере %s часа(ов).";
$lang['stmy0014'] = "Полностью выполнена вся цепочка";
$lang['stmy0015'] = "Уровень: Золото";
$lang['stmy0016'] = "% завершено до получения уровня \"Легенда\"";
$lang['stmy0017'] = "Уровень: Серебро";
$lang['stmy0018'] = "% завершено до получения уровня \"Золото\"";
$lang['stmy0019'] = "Уровень: Бронза";
$lang['stmy0020'] = "% завершено до получения уровня \"Серебро\"";
$lang['stmy0021'] = "Уровень: Без достижений";
$lang['stmy0022'] = "% завершено до получения уровня \"Бронза\"";
$lang['stmy0023'] = "Достижение за количество подключений";
$lang['stmy0024'] = "Уровень: Легенда";
$lang['stmy0025'] = "Всего ваших подключений к серверу: %s раз.";
$lang['stmy0026'] = "Уровень: Золото";
$lang['stmy0027'] = "Уровень: Серебро";
$lang['stmy0028'] = "Уровень: Бронза";
$lang['stmy0029'] = "Уровень: Без достижений";
$lang['stmy0030'] = "Прогресс до следующего ранга на сервере";
$lang['stnv0001'] = "Наши новости";
$lang['stnv0002'] = "Закрыть";
$lang['stnv0003'] = "Обновление информации о клиенте";
$lang['stnv0004'] = "Используйте это, если хотите чтобы обновилась информация о вас. К примеру, вы зашли под другим аккаунтом на сервер TeamSpeak и хотите увидеть его статистику.";
$lang['stnv0005'] = "Это работает только если вы подключены к серверу TeamSpeak в данный момент.";
$lang['stnv0006'] = "Обновить";
$lang['stnv0007'] = "Battle area - Содержимое";
$lang['stnv0008'] = "Вы можете создать состязание между двумя пользователями или командами.";
$lang['stnv0009'] = "Во время \"Битвы\" подсчитывается время, проведенное на сервере у обеих команд или игроков.";
$lang['stnv0010'] = "Для победы необходимо набрать больше времени в онлайне, чем команда противника.";
$lang['stnv0011'] = "(Продолжительность \"Битвы\" - 48 часов)";
$lang['stnv0012'] = "Команда победителей получает приз, который пользователь может затем использовать.";
$lang['stnv0013'] = "Полученный приз будет отображаться в вкладке<a href=\"my_stats.php\">Моя статистика</a>.";
$lang['stnv0014'] = "(Это может быть множитель времени(2x) на 8 часов или же бонус, в виде прибавки к основному времени (4 часа), и т.д.";
$lang['stnv0015'] = "Также, \"множители времени\" можно использовать для поднятия себя в рейтинге пользователей за неделю/месяц";
$lang['stnv0016'] = "Недоступно";
$lang['stnv0017'] = "Для доступа к этим данным необходимо, чтобы вы подключились к серверу TeamSpeak";
$lang['stnv0018'] = "Пожалуйста, подключитесь к TeamSpeak серверу и обновите вашу сессию, путём нажатия синей кнопки в верхнем правом углу браузера.";
$lang['stnv0019'] = "Статистика сервера - содержимое";
$lang['stnv0020'] = "Эта страница содержит информацию о вашей статистике и активности на сервере.";
$lang['stnv0021'] = "Большинство этой информации было собрано с момента начального старта системы RankSystem, никак не с момента первого запуска TeamSpeak сервера.";
$lang['stnv0022'] = "Данная информация получена из базы данных RankSystem и может отличаться от той, которая хранится в базе данных TeamSpeak.";
$lang['stnv0023'] = "К тому же, информация внутри диаграмм может расходиться с реальными цифрами из базы данных TeamSpeak 3. Это связано с тем, что старые версии RankSystem не собирали часть той информации, которая используется сейчас.";
$lang['stnv0024'] = "RankSystem — статистика TeamSpeak 3 сервера";
$lang['stnv0025'] = "Ограничение списка";
$lang['stnv0026'] = "Все";
$lang['stnv0027'] = "Информация на сайте может быть устаревшей! Кажется,\"система рангов\" больше не подключена к TeamSpeak 3 серверу. Потеряно соединение?";
$lang['stnv0028'] = "(Вы не подключены к TS3!)";
$lang['stnv0029'] = "Общая статистика";
$lang['stnv0030'] = "О RankSystem";
$lang['stnv0031'] = "Поиск также поддерживает шаблоны: никнейм пользователя, уникальный ID(UID) и ID клиента в базе данных.";
$lang['stnv0032'] = "Вы также можете использовать фильтр запроса (смотрите ниже). Для этого введите его в поисковое поле.";
$lang['stnv0033'] = "Также допустимы комбинации шаблонов и фильтров. Для этого введите первым фильтр, за ним без пробелов шаблон.";
$lang['stnv0034'] = "Это позволяет комбинировать множество фильтров, вводить которые необходимо последовательно.";
$lang['stnv0035'] = "<u>Пример:</u><br>filter:nonexcepted:TeamSpeakUser";
$lang['stnv0036'] = "Показывать только клиентов находящихся в исключении (клиентов, групп сервера или исключение канала).";
$lang['stnv0037'] = "Показывать только клиентов не находящихся в исключении клиентов";
$lang['stnv0038'] = "Показывать только клиентов находящихся в онлайне";
$lang['stnv0039'] = "Показывать только клиентов не находящихся в онлайне";
$lang['stnv0040'] = "Показывать только клиентов в указанных группах, она же - выборка юзеров по рангам<br>Замените <i>GROUPID</i> на желаемые ID группы ранга.";
$lang['stnv0041'] = "Показать клиентов, удовлетворяющих поисковому запросу по дате последнего посещения сервера.<br>Замените <i>OPERATOR</i> на '<' или '>' или '=' или '!='.<br>Также замените <i>TIME</i> на желаемую дату поиска в формате 'Y-m-d H-i'(год-месяц-день час-минута) (пример: 2016-06-18 20-25).<br>Более подробный пример запроса: filter:lastseen:<:2016-06-18 20-25:";
$lang['stnv0042'] = "Показывать только клиентов из указанной страны.<br>Замените <i>TS3-COUNTRY-CODE</i> на желаемый код страны.<br>Коды стран вы можете взять <a href=\"https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\">Здесь(Википедия)</a>";
$lang['stri0001'] = "Информация о системе рангов";
$lang['stri0002'] = "Что такое TSN Ranksystem?";
$lang['stri0003'] = "Удобная система, позволяющая создать на сервере TeamSpeak 3 систему рангов-поощрений, основанную на времени, которое пользователи проводят на сервере. Ко всему прочему, она также занимается сбором информации о пользователях и последующим её отображением на сайте.";
$lang['stri0004'] = "Кто является её разработчиком?";
$lang['stri0005'] = "Когда была создана TSN Ranksystem?";
$lang['stri0006'] = "Альфа-релиз: 05/10/2014.";
$lang['stri0007'] = "Бета-релиз: 01/02/2015.";
$lang['stri0008'] = "Вы можете найти новую версию на сайте: <a href=\"http://ts-n.net/ranksystem.php\" target=\"_blank\">Ranksystem Website</a>.";
$lang['stri0009'] = "Как создавалась TSN Ranksystem?";
$lang['stri0010'] = "\"Система рангов\" разрабатывалась на языке";
$lang['stri0011'] = "При создании использовался следующий набор инструментов:";
$lang['stri0012'] = "Особая благодарность:";
$lang['stri0013'] = "<a href=\"http://nya-pw.ru/\" target=\"_blank\">sergey</a>, <a href=\"http://vk.com/akhachirov\" target=\"_blank\">Arselopster</a> & <a href=\"http://vk.com/zheez\" target=\"_blank\">DeviantUser</a> - За русскоязычный перевод текста.";
$lang['stri0014'] = "Bejamin Frost - За помощь в создании дизайна сайта с помощью Bootstrap.";
$lang['stri0015'] = "<a href=\"http://hydrake.eu/\" target=\"_blank\">ZanK</a> - За перевод интерфейса на итальянский.";
$lang['stri0016'] = "<a href=\"http://iraqgaming.net/\" target=\"_blank\">DeStRoYzR</a> & <a href=\"http://www.sagamer.net/\" target=\"_blank\">Jehad</a> - для инициирования перевода на арабский язык";
$lang['stri0017'] = "<a href=\"http://whitecs.ro/\" target=\"_blank\">SakaLuX</a> - для инициирования перевода румынский";
$lang['sttw0001'] = "Рейтинг пользователей";
$lang['sttw0002'] = "Лучшие за неделю";
$lang['sttw0003'] = "Набрал %s часов онлайна";
$lang['sttw0004'] = "Топ-10 в графике(Разрыв между участниками)";
$lang['sttw0005'] = "Часов (Представляет собой 100 %)";
$lang['sttw0006'] = "%s часов (%s&#37;)";
$lang['sttw0007'] = "Участники топ-10 в сравнении";
$lang['sttw0008'] = "Топ-10 Vs остальные по времени онлайн";
$lang['sttw0009'] = "Топ-10 Vs остальные по активности";
$lang['sttw0010'] = "Tоп-10 Vs остальные по времени оффлайн";
$lang['sttw0011'] = "Топ-10 в графике";
$lang['sttw0012'] = "Остальные %s клиенты (в часах)";
$lang['sttw0013'] = "С %s Часами аквтиности";
$lang['sttm0001'] = "Лучшие за месяц";
$lang['stta0001'] = "Лучшие за все время";
$lang['upinf'] = "Доступна новая версия Ранг Системы; Сообщаю Клиентам на Сервере...";
$lang['upmov'] = "Пожалуйста, переместите \'%s\' в подпапку \'%s\' и перепишите существующий!";
$lang['upmsg'] = "\nЭй, доступна новая версия [B]Ранг Системы[/B]!\n\nтекущая версия: %s\n[B]новая версия: %s[/B]\n\nПожалуйста посетите наш сайт [URL]http://ts-n.net/ranksystem.php[/URL] для получения более подробной информации.";
$lang['upmsg'] = "\nЭй, доступна новая версия [B]Ранг Системы[/B]!\n\nТекущая версия: %s\n[B]новая версия: %s[/B]\n\nПожалуйста, посетите наш сайт [URL]http://ts-n.net/ranksystem.php[/URL] для получения более подробной информации.";
$lang['upsucc'] = "Обновление базы данных успешно выполнено.";
$lang['upuser'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s).";
$lang['upuserboost'] = "Пользователь %s (Уникальный ID клиента: %s; ID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (thereof active %s) <b>[BOOST %sx]</b>.";
$lang['upuser'] = "Пользователь %s (Никнейм: %s; UID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (активное время онлайна %s).";
$lang['upuserboost'] = "Пользователь %s (Никнейм: %s; UID в базе данных: %s) получает новое количество (сумм. время подключения) из %s (активное время онлайна %s) <b>[BOOST %sx]</b>.";
$lang['upusrerr'] = "Пользователь с уникальным ID %s не был найден (не правильно указан Уникальный ID или пользователь в настоящий момент не подключен к серверу Teamspeak)!";
$lang['upusrinf'] = "Пользователь %s был успешно информирован.";
$lang['user'] = "Логин: ";
$lang['usermsgactive'] = "\nЭй, вы получили новый Ранг, так как были активны в течении %s дней, %s часов, %s минут и %s секунд.";
$lang['usermsgonline'] = "\nЭй, вы получили новый Ранг, так как были онлайн в течении %s дней, %s часов, %s минут и %s секунд.";
$lang['wiaction'] = "выполнить";
$lang['wibgco'] = "Цвет фона:";
$lang['wibgcodesc'] = "Укажите код цвета фона.<br>(только HTML код; должно начинаться с # )";
$lang['wiboost'] = "повышение";
$lang['wiboostdesc'] = "Give an user on your TeamSpeak server a servergroup (have to be created manually), which you can declare here as boost group. Define also a factor which should be used (for example 2x) and a time, how long the boost should be rated.<br>The higher the factor, the faster an user reaches the next higher rank.<br>Is the time expired, the boost servergroup get automatically removed from the concerned user. The time starts running as soon as the user gets the servergroup.<br><br>servergroup ID => factor => time (in seconds)<br><br>Each entry have to separate from next with a comma.<br><br>Example:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>On this an user in servergroup 12 get the factor 2 for the next 6000 seconds, an user in servergroup 13 get the factor 3 for 2500 seconds, and so on...";
$lang['user'] = "Логин";
$lang['wiaction'] = "Выполнить";
$lang['wiboost'] = "Бустер онлайна";
$lang['wiboostdesc'] = "Вы можете указать здесь ID групп сервера(Их необходимо создать на TeamSpeak сервере заранее), выступающие в роли множителя накапливаемого времени, которое получает пользователь за онлайн на сервере. Также вы должны указать на сколько должно умножаться время и период действия группы-множителя. Чем больше множитель времени, тем быстрее пользователь достигнет следующий ранг. По окончанию действия множителя, группа-множитель автоматически снимается с пользователя. Пример указания группы-множителя следующий: ID группы => множитель => время(В секундах). Если вы хотите сделать две такие группы, то просто разделите их между собой запятой.<br><br>Пример:<br>12=>2=>6000,13=>3=>2500,14=>5=>600<br><br>Из примера выше следует, что группа с ID 12 дает множитель времени х2 на 6000 секунд, а группа 13 имеет множитель х3 на 2500 секунд. 14 группа соответственно, имеет множитель х5 на 600 секунд.";
$lang['wibot1'] = "RankSystem был выключен. Более подробную информацию смотрите в логе ниже!";
$lang['wibot2'] = "RankSystem запущен. Более подробную информацию смотрите в логе ниже!";
$lang['wibot3'] = "RankSystem перезагружается. Более подробную информацию смотрите в логе ниже!";
$lang['wibot4'] = "Включить / Выключить бота RankSystem";
$lang['wibot5'] = "Запустить";
$lang['wibot6'] = "Остановить";
$lang['wibot7'] = "Перезапуститб";
$lang['wibot8'] = "Лог RankSystem:";
$lang['wibot9'] = "Заполните все обязательные поля перед запуском RankSystem!!";
$lang['wichdbid'] = "Client-database-ID reset";
$lang['wichdbiddesc'] = "Сбрасывает время онлайн пользователя, если его ID в базы данных клиента TeamSpeak изменился.<br><br>Пример:<br>Если пользователь удален из БД сервера TeamSpeak, то, новый ID базы данных клиента будет записан со следующим подключением к серверу.";
$lang['wiconferr'] = "Есть ошибка в конфигурации Ranksystem. Пожалуйста, зайдите в Веб Панель и проверте настройки раздела 'Настройка Ранг Системы'. Особенно проверьте 'Ранги'!";
$lang['wichdbiddesc'] = "Сбрасывает время онлайн пользователя, если его ID в базе данных клиента TeamSpeak изменился.<br><br>Пример:<br>Если пользователь удален из БД сервера TeamSpeak, то, новый ID в базе данных клиента будет записан со следующим подключением к серверу.";
$lang['wiconferr'] = "Есть ошибка в конфигурации Ranksystem. Пожалуйста, зайдите в Веб-Панель и проверьте настройки раздела 'Настройка Ранг Системы'. Особенно тщательно проверьте 'Ранги'!";
$lang['widaform'] = "Формат даты";
$lang['widaformdesc'] = "Выберите формат показа даты.<br><br>Пример:<br>%a дней, %h часов, %i минут, %s секунд";
$lang['widbcfgsuc'] = "Настройки Базы Данных успешно сохранены.";
$lang['widbcfgerr'] = "Ошибка сохранения настроек базы данных! Ошибка подключения, проверте на правильность настроек 'other/dbconfig.php'";
$lang['widbcfgerr'] = "Ошибка сохранения настроек в базе данных! Ошибка подключения, проверьте на правильность настройки 'other/dbconfig.php'";
$lang['widelcld'] = "удаление пользователей";
$lang['widelcldgrp'] = "renew groups";
$lang['widelcldgrpdesc'] = "The Ranksystem remember the given servergroups, so it don't need to give/check this with every run of the worker.php again.<br><br>With this function you can remove once time the knowledge of given servergroups. In effect the ranksystem try to give all clients (which are on the TS3 server online) the servergroup of the actual rank.<br>For each client, which gets the group or stay in group, the Ranksystem remember this like described at beginning.<br><br>This function can be helpful, when user are not in the servergroup, they should be for the defined online time.<br><br>Attention: Run this in a moment, where the next few minutes no rankups become due!!! The Ranksystem can't remove the old group, cause he can't remember ;-)";
$lang['widelclddesc'] = "Удаление выбранных клиентов из базы данных Ранг-Системы.<br><br>Клиент непосредственно на сервере Teamspeak не будет удален.";
$lang['widelsg'] = "удаление из сервер групп";
$lang['widelsgdesc'] = "Выберите, если клиенты должны также быть удалены из последней известной Сервер-группы, когда Вы удаляете клиентов из базы данных Ранг Системы.<br><br>Будет затронуты только те сервер группы, которые указанны в настройках Ранг Системы";
$lang['widelcldgrp'] = "Обновить группы";
$lang['widelcldgrpdesc'] = "RankSystem хранит текущие группы рангов пользователей в своей базе данных и после того, как вы отредактируете этих пользователей, то пройдет некоторое время, прежде чем бот уберёт затронутых пользователей из их прежних групп ранга.<br>Однако, этой функцией вы можете принудительно запустить процесс обновления групп ранга у всех пользователей, которые в данный момент подключены к серверу.";
$lang['widelclddesc'] = "Удаление выбранных клиентов из базы данных RankSystem.<br><br>Клиент непосредственно на сервере Teamspeak не будет удален.";
$lang['widelsg'] = "Удалить их также из групп сервера";
$lang['widelsgdesc'] = "Выберите, если клиенты должны также быть удалены из последней заработанной ими группы-ранга.";
$lang['wideltime'] = "Время удаления";
$lang['wideltimedesc'] = "Отчистка базы данных Ранг Системы от старых клиентов.<br>Entry a time in seconds which a client was not seen to delete it.<br><br>0 - deletes all clients out of the Ranksystem<br><br>При этом база данных пользователей на сервере TeamSpeak затронута не будет!";
$lang['wideltimedesc'] = "Очистка базы данных Ранг Системы от старых клиентов.<br>Введите время в секундах, достигнув которого, пользователь не будет удален из БД RankSystem.<br><br>0 - Удаление всех пользователей из БД RankSystem<br><br>При этом база данных пользователей на сервере TeamSpeak затронута не будет!";
$lang['wiexcid'] = "Исключения каналов";
$lang['wiexciddesc'] = "Через запятую должен будет указан список каналов, которые должна будет игнорировать система рангов<br><br>Находясь в этих каналах, пользователям не будет начислять время за онлайн на сервере. <br><br>Данную функция можно использовать к примеру, для AFK каналов.<br>При режиме 'активное время', эта функция становится бесполезной, т.к. в канале юзеру перестает вовсе начисляться время бездействия<br><br>Пользователи находящиеся в таких каналах, помечаются на этот период как 'исключение из списков RankSystem'. К тому же, данные пользователи перестают отображаться в 'stats/list_rankup.php' и становятся доступны только с фильтром поиска или с включенным отображением \"исключенных клиентов\"(Страница статистики - \"исключенный клиент\").";
$lang['wiexgrp'] = "Исключения сервер групп";
$lang['wiexgrpdesc'] = "Укажите через запятую какие сервер группы будут игнорироваться Ранг Системой.<br>Если пользователь находится хоты бы в одной из этих групп то Ранг Система будет игнорировать его.";
$lang['wiexuid'] = "Исключения CID";
$lang['wiexuiddesc'] = "Укажите через запятую уникальные идентификаторы клиентов (Client-IDs), которых будет игнорировать Ранг Система.<br>Пользователи в этом списке будет проигнорированы Ранг Системой.";
$lang['wigrptime'] = "Ранги";
$lang['wigrptimedesc'] = "Укажите через какой промежуток времени будет выданная сервер группа.<br><br>Время (в секундах)=>номер сервер группы SID<br><br>Важным условием для этого, является учет времени онлайн пользователя или если включен учет 'Время простоя'.<br><br>Каждый параметр должен разделяться запятой.<br><br>Так же время должно быть указанно по 'нарастающей'<br><br>Пример:<br>60=>9,120=>10,180=>11<br><br>По истечению 60 секунд пользователь получает сервер группу под SID 9, по истечению еще 120 секунд пользователь получает сервер группу SID 10, и так далее...";
$lang['wihdco'] = "Цвет заголовка:";
$lang['wihdcodesc'] = "Укажите код цвета заголовка.<br>(только HTML код; должно начинаться с # )";
$lang['wihl'] = "Веб Панель - Система Рангов";
$lang['wihladm'] = "Лист Администратора";
$lang['wihlcfg'] = "Настройка Ранг Системы";
$lang['wihlclg'] = "Редактирование клиентов (глобальное)";
$lang['wihlcls'] = "Редактирование клиентов (выборочное)";
$lang['wiexgrpdesc'] = "Укажите через запятую ID групп сервера, которые будут игнорироваться Ранг Системой.<br>Если пользователь находится хоты бы в одной из этих групп, то Ранг Система будет игнорировать его.(Также не будет начислять онлайн)";
$lang['wiexuid'] = "Исключение для пользователей";
$lang['wiexuiddesc'] = "Укажите через запятую уникальные идентификаторы клиентов (UID), которых будет игнорировать Ранг Система(RankSystem) и им не будет засчитываться время, проведенное на сервере.<br>";
$lang['wigrptime'] = "Настройка рангов";
$lang['wigrptimedesc'] = "Укажите через какой промежуток времени, будут выдаваться группы сервера.<br><br>Время (в секундах)=>номер группы сервера(ServerGroupID)<br><br>К тому же, от выбранного режима будет зависеть.<br><br>Каждый параметр должен разделяться запятой.<br><br>Так же время должно быть указано по 'нарастающей'<br><br>Пример:<br>60=>9,120=>10,180=>11<br><br>По истечению 60 секунд пользователь получает сервер группу под SGID 9, по истечению еще 120 секунд пользователь получает сервер группу SGID 10, и так далее...";
$lang['wihladm'] = "Список пользователей (Admin-Mode)";
$lang['wihlcfg'] = "Настройка RankSystem";
$lang['wihldb'] = "Настройки Базы Данных";
$lang['wihlsty'] = "Настройки стиля";
$lang['wihlts'] = "Настройка поключения к TeamSpeak";
$lang['wihvco'] = "Цвет Hover:";
$lang['wihvcodesc'] = "Укажите код цвета hover.<br>(только HTML код; должно начинаться с # )";
$lang['wiifco'] = "Цвет Текста оповещения:";
$lang['wiifcodesc'] = "Укажите код цвета Текста оповещения.<br>(только HTML код; должно начинаться с # )";
$lang['wihlmsg'] = "Настройка оповещения";
$lang['wihlsty'] = "Отображение пользователей на странице статистики";
$lang['wihlts'] = "Настройка подключения к TeamSpeak";
$lang['wihlvs'] = "Прочие настройки";
$lang['wiignidle'] = "Игнорировать время бездействия";
$lang['wiignidledesc'] = "Задать период, в течение которого время бездействия будет игнорироваться.<br><br>Время бездействия - если клиент не выполняет каких-либо действий на сервере (=idle/бездействует), также время учитывается системой рангов. Только когда установленный лимит будет достигнут, система начнет подсчитывать время бездействия.<br><br>Эта функция работает только при включенном режиме 'Подсчитывать активное время'(при высчитывании группы-ранга, когда время бездействия вычитается из \"активного\" времени).<br><br>Использование этой функции оправдано в том случае, если пользователь \"слушает\" говорящих людей и при этом ему зачисляется \"время бездействия\", которое обнуляется при любом его действии. <br><br>0 = отключить данную функцию<br><br>Пример:<br>Игнорировать бездействие = 600 (секунд)<br>Клиенту 8 минут простоя не будут засчитаны системой рангов и оно будет ему засчитано как \"активное время\". Если пользователь находился 12 минут в бездействии при \"игнорировании бездействия\" в 10 минут, то ему будет зачислены только 2 минуты простоя.";
$lang['wilogout'] = "Выход";
$lang['wilog'] = "Logpath";
$lang['wilogdesc'] = "Path of the log file of the Ranksystem.<br><br>Example:<br>/var/logs/ranksystem/<br><br>Be sure, the webuser has the write-permissions to the logpath.";
$lang['wimsgusr'] = "Уведомление";
$lang['wimsgusrdesc'] = "Сообщение пользователю о повышение ранга.<br>Отредактируйте сообщение в 'lang.php'<br>(usermsgonline или usermsgactive)";
$lang['wiscco'] = "Цвет Successtext:";
$lang['wisccodesc'] = "Укажите код цвета success-text.<br>(только HTML код; должно начинаться с # )";
$lang['wilog'] = "Папка логирования работы RankSystem";
$lang['wilogdesc'] = "Расположение логов Ranksystem на диске.<br><br>Пример:<br>/var/logs/ranksystem/<br><br>Убедитесь, что веб-пользователь имеет разрешение на редактирование этой папки/файлов(chmod).";
$lang['wimsgmsg'] = "Оповещение";
$lang['wimsgmsgdesc'] = "Задать сообщение, которое будет отправлено пользователю, при достижении высшего ранга.<br><br>Данное сообщение отправляется посредством личных сообщений на TeamSpeak 3 сервере. Текст поддерживает использование bb-кодов программы Teamspeak.<br>http://ts-n.net/lexicon.php?showid=97#lexindex<br><br>Кроме того, также поддерживаются следующие аргументы в сообщении:<br>%1\$s - дни<br>%2\$s - часы<br>%3\$s - минут<br>%4\$s - секунды<br><br>Пример:<br>Привет,\\nты достиг высший ранг, за время онлайн на сервере в течение %1\$s дней, %2\$s часов и %3\$s минут на нашем сервере.[B]Продолжай в том же духе![/B] ;-)";
$lang['wimsgusr'] = "Уведомление при повышении";
$lang['wimsgusrdesc'] = "Сообщение пользователю о повышение ранга.";
$lang['winav1'] = "TeamSpeak";
$lang['winav2'] = "База данных";
$lang['winav3'] = "Система";
$lang['winav4'] = "Прочее";
$lang['winav5'] = "Оповещения";
$lang['winav6'] = "Статистика";
$lang['winav7'] = "Администрирование";
$lang['winav8'] = "Запустить / Остановить бота";
$lang['winav9'] = "Доступно обновление!";
$lang['winav10'] = "Соединение с данным сайтом не защищено с помощью %s HTTPS%sЭто может повлечь за собой проблемы для вашей приватности и безопасности! %sДля использования HTTPS ваш веб-сервер должен поддерживать SSL-соединение.";
$lang['wiselcld'] = "Выбор клиентов";
$lang['wiselclddesc'] = "Выберите клиентов последним известным именем пользователя. Для этого Вы только должны начать печатать.<br>Выбор нескольких пользователей - отделенная запятая, которая ставится системой автоматически.<br><br>With the selection you can choose with the next step an action.";
$lang['wishcolas'] = "ток сервер группа";
$lang['wishcolasdesc'] = "Показ колонки 'ток сервер группа' в list_rankup.php";
$lang['wiselclddesc'] = "Выберите клиентов, путём ввода их последнего имени. В процессе ввода вы увидите подсказку<br>Для выбора нескольких пользователей нужно поставить запятую, которая поставится автоматически, после завершения ввода первого пользователя<br><br>После завершения ввода пользователей, выберите необходимое для них действие в селекторах ниже.";
$lang['wishcolas'] = "Текущая группа сервера";
$lang['wishcolasdesc'] = "Показ колонки 'Текущая группа сервера' в stats/list_rankup.php";
$lang['wishcolat'] = "Время активности";
$lang['wishcolatdesc'] = "Показ колонки 'суммарное время активности' в list_rankup.php";
$lang['wishcolatdesc'] = "Показ колонки 'Суммарное время активности' в stats/list_rankup.php";
$lang['wishcolcld'] = "Ник клиента";
$lang['wishcolclddesc'] = "Показ колонки 'Ник клиента' в list_rankup.php";
$lang['wishcolclddesc'] = "Показ колонки 'Ник клиента' в stats/list_rankup.php";
$lang['wishcoldbid'] = "ID в Базе данных";
$lang['wishcoldbiddesc'] = "Показ колонки 'ID в Базе данных' в list_rankup.php";
$lang['wishcolit'] = "Время простоя";
$lang['wishcolitdesc'] = "Показ колонки 'суммарное время простоя' в list_rankup.php";
$lang['wishcoldbiddesc'] = "Показ колонки 'ID в Базе данных' в stats/list_rankup.php";
$lang['wishcolit'] = "Учитывать время простоя";
$lang['wishcolitdesc'] = "Показ колонки 'суммарное время простоя' в stats/list_rankup.php";
$lang['wishcolls'] = "Последний раз замечен";
$lang['wishcollsdesc'] = "Показ колонки 'Последний раз замечен' в list_rankup.php";
$lang['wishcolnx'] = "Следующий Ранг";
$lang['wishcolnxdesc'] = "Показ колонки 'Следующий Ранг' в list_rankup.php";
$lang['wishcollsdesc'] = "Показ колонки 'Последний раз замечен' в stats/list_rankup.php";
$lang['wishcolnx'] = "Время до след. ранга";
$lang['wishcolnxdesc'] = "Показ колонки 'Следующий Ранг' в stats/list_rankup.php";
$lang['wishcolot'] = "Время подключения";
$lang['wishcolotdesc'] = "Показ колонки 'суммарное время подключения' в list_rankup.php";
$lang['wishcolrg'] = "П\Н";
$lang['wishcolrgdesc'] = "Показ колонки 'Порядковый номер' в list_rankup.php";
$lang['wishcolotdesc'] = "Показ колонки 'суммарное время подключения' в stats/list_rankup.php";
$lang['wishcolrg'] = "Ранг";
$lang['wishcolrgdesc'] = "Показ колонки 'Ранг' в stats/list_rankup.php";
$lang['wishcolsg'] = "Следующая сервер группа";
$lang['wishcolsgdesc'] = "Показ колонки 'следующая сервер группа' в list_rankup.php";
$lang['wishcolsgdesc'] = "Показ колонки 'следующая сервер группа' в stats/list_rankup.php";
$lang['wishcoluuid'] = "Client-ID";
$lang['wishcoluuiddesc'] = "Показ колонки 'уникальный ID клиента' в list_rankup.php";
$lang['wishcoluuiddesc'] = "Показ колонки 'уникальный ID клиента'(UID) в stats/list_rankup.php";
$lang['wishexcld'] = "Пользователи исключения";
$lang['wishexclddesc'] = "Показывать пользователий в list_rankup.php,<br>которые исключены по параметру uniqueID.";
$lang['wishexclddesc'] = "Показывать пользователей в list_rankup.php,<br>которые исключены и не участвуют в системе рангов.";
$lang['wishexgrp'] = "Группы исключения";
$lang['wishexgrpdesc'] = "Показывать пользователий в list_rankup.php, которые находятся в списке 'исключение клиента' и не должы учитываться Системой Рангов.";
$lang['wishgen'] = "Sitegen";
$lang['wishgendesc'] = "Показывать время генерации списка в конце страницы.";
$lang['wishhicld'] = "Пользователи с высоким рангом";
$lang['wishhiclddesc'] = "Показывать пользователий в list_rankup.php, который достиг высшего уровня в Ranksystem.";
$lang['wisupidle'] = "Время простоя";
$lang['wisupidledesc'] = "Если эта функция активна, 'сумм. время простоя' будет основанием от 'сумм. время подключения'. Вместо 'сумм. время подключения', предыдущая вычитание будет рассматриваться на повышение Ранга.";
$lang['wisvconf'] = "сохранить";
$lang['wishexgrpdesc'] = "Показывать пользователей в list_rankup.php, которые находятся в списке 'исключение клиента' и не должны учитываться RankSystem.";
$lang['wishhicld'] = "Пользователи с высшим рангом";
$lang['wishhiclddesc'] = "Показывать пользователей в list_rankup.php, который достиг высшего уровня в Ranksystem.";
$lang['wisupidle'] = "Режим";
$lang['wisupidledesc'] = "Предоставлены два режима, от которых будет высчиваться ранг пользователей. 1) Время подключения(Общее время): Общее время подключения на сервере, складывается из \"Активного времени\" и \"времени бездействия\"(колонка 'Сумм. время подключения' в 'stats/list_rankup.php') 2) Активное время(Время активности): Время, которое пользователь не находился в бездействии. Значение этого времени высчитывается путем вычитания \"времени бездействия из\" из \"Общего времени подключения на сервере\" (Колонка 'Сумм. время активности' в 'stats/list_rankup.php'). Не рекомендуется смена режима при уже отработавшем долгий срок старом, но допустимо.";
$lang['wisvconf'] = "Сохранить";
$lang['wisvsuc'] = "Изменения успешно сохранены!";
$lang['witime'] = "Timezone";
$lang['witimedesc'] = "Select the timezone the server is hosted.";
$lang['wits3dch'] = "Default Channel";
$lang['wits3dchdesc'] = "The channel-ID, the bot should connect with.<br><br>The Bot will join this channel after connecting to the TeamSpeak server.";
$lang['wits3host'] = "TS3 Hostaddress";
$lang['wisvres'] = "Для принятия внесенных правок вам необходимо перезагрузить RankSystem!";
$lang['witime'] = "Часовой пояс";
$lang['witimedesc'] = "Выбрать часовой пояс, в котором находится сервер.";
$lang['wits3dch'] = "Канал по умолчанию";
$lang['wits3dchdesc'] = "При подключении на сервер, бот будет пытаться войти в этот канал и останется там.";
$lang['wits3host'] = "TS3 адрес хоста";
$lang['wits3hostdesc'] = "Адрес TeamSpeak 3 Сервера<br>(IP или DNS)";
$lang['wits3sm'] = "Замедленный режим";
$lang['wits3smdesc'] = "With the Slowmode you can reduce \"spam\" of query commands to the TeamSpeak server. This prevent bans in case of flood.<br>TeamSpeak Query commands get delayed with this function.<br><br>!!! ALSO IT REDUCE THE CPU USAGE !!!<br><br>The activation is not recommended, if not required. The delay increases the duration of the Bot, which makes it imprecisely.";
$lang['wits3qnm'] = "Botname";
$lang['wits3qnm2'] = "2е Botname";
$lang['wits3qnm2desc'] = "Это Botname, будет использоваться если первое уже занято.";
$lang['wits3qnmdesc'] = "Имя, под которым будет сидеть Ранг система.<br>Убедитесь что оно не занято.";
$lang['wits3smdesc'] = "Замедленный режим позволяет предотвратить флуд query-командами на сервер, из-за которого RankSystem может получить временный бан со стороны TeamSpeak 3 сервера.<br><br>!!! Также это снижает нагрузку на ЦП и уменьшает расход трафика !!!<br><br>Однако, не включайте эту функцию, если нет в ней нужды, потому как с ней не работает очистка базы от неактивных пользователей. К тому же, замедленный режим значительно увеличивает время обработки разного рода процессов.";
$lang['wits3qnm'] = "Основн. ник бота";
$lang['wits3qnm2'] = "Запас. ник бота";
$lang['wits3qnm2desc'] = "Этот никнейм будет использоваться, если первый уже занят. Рекомендуется заполнить!";
$lang['wits3qnmdesc'] = "Никнейм, с которым будет авторизовываться Ранг система на сервере.<br>Убедитесь, что оно не занято кем-то другим.";
$lang['wits3querpw'] = "TS3 Query-Пароль";
$lang['wits3querpwdesc'] = "TeamSpeak 3 query Пароль<br>Ваш пароль от query пользователя.";
$lang['wits3querpwdesc'] = "TeamSpeak 3 query-Пароль<br>Ваш пароль от query-пользователя.";
$lang['wits3querusr'] = "TS3 Query-Логин";
$lang['wits3querusrdesc'] = "TeamSpeak 3 query Логин<br>По умолчанию: serveradmin<br>Конечно вы можете указать другой логин для Ranksystem.<br>Необходимые разрешения привилегий вы можете найти на:<br>http://ts-n.net/ranksystem.php";
$lang['wits3querusrdesc'] = "TeamSpeak 3 query-Логин<br>По умолчанию: serveradmin<br>Конечно вы можете указать другой логин для Ranksystem.<br>Необходимые разрешения привилегий вы можете найти на:<br>http://ts-n.net/ranksystem.php";
$lang['wits3query'] = "TS3 Query-Порт";
$lang['wits3querydesc'] = "TeamSpeak 3 query Порт<br>По умолчанию: 10011 (TCP)<br>Если порт изменен, то укажите его согласно настройкам из 'ts3server.ini'.";
$lang['wits3querydesc'] = "TeamSpeak 3 query-Порт<br>По умолчанию: 10011 (TCP)<br>Если порт изменен, то укажите его согласно настройкам из 'ts3server.ini'.";
$lang['wits3voice'] = "TS3 Voice-Порт";
$lang['wits3voicedesc'] = "TeamSpeak 3 voice Порт<br>По умолчанию: 9987 (UDP)<br>Этот порт используется Teamspeak3 клиентом для подключения к серверу.";
$lang['witxco'] = "Цвет текста:";
$lang['witxcodesc'] = "Укажите код цвета текста.<br>(только HTML код; должно начинаться с # )";
$lang['wits3voicedesc'] = "TeamSpeak 3 voice-Порт<br>По умолчанию: 9987 (UDP)<br>Этот порт используется Teamspeak 3 клиентом для подключения к серверу.";
$lang['wiupcheck'] = "Проверка обновлений";
$lang['wiupcheckdesc'] = "Если проверка обнолений включена, то пользователь получит приватное сообщение, когда обновление доступно.";
$lang['wiupcheckdesc'] = "Если проверка обновлений включена, то пользователь получит приватное сообщение, когда обновление доступно.";
$lang['wiuptime'] = "Интервал проверки";
$lang['wiuptimedesc'] = "Введите здесь через сколько секунд Ранг Система должна проверить наличие обновлений.<br>Внимание, после каждой проверки перечисленные пользователь получает уведомление. Если ни один из перечисленных пользователей не онлайн, Система Рангов будет пытаться уведомить пользователей со следующего интервала сканирования.";
$lang['wiupuid'] = "Получатель";
$lang['wiupuiddesc'] = "Укажите через запятую уникальные ID клиентов, которые будут проинформированы о доступных обновлениях посредством приватного сообщения через TeamSpeak.";
$lang['wiversion'] = "(текущая версия %s)";
$lang['wiuptimedesc'] = "Введите здесь через сколько секунд Ранг Система должна проверить наличие обновлений.<br>Внимание, после каждой проверки перечисленные пользователь получает уведомление. Если ни один из перечисленных пользователей не онлайн, Система Рангов будет пытаться уведомить пользователей при следующем сканировании.";
$lang['wiupuid'] = "Получатель обновлений";
$lang['wiupuiddesc'] = "Укажите через запятую уникальные ID(UID) клиентов, которые будут проинформированы о доступных обновлениях посредством приватного сообщения через TeamSpeak.";
$lang['wivlang'] = "Язык";
$lang['wivlangdesc'] = "Язык Ранг Системы<br><br>de - Deutsch<br>en - english<br>it - italiano<br>ru - Русский";
$lang['wiwnco'] = "Цвет текста предупреждений:";
$lang['wiwncodesc'] = "Укажите цвет текста предупреждения.<br>(только HTML код; должно начинаться с # )";
?>

View File

@@ -13,25 +13,14 @@ if ($db['type'] == 'mysql') {
} else {
$dboptions = array();
}
try {
$mysqlcon = new PDO($dbserver, $db['user'], $db['pass'], $dboptions);
} catch (PDOException $e) {
$sqlconerr = "SQL Connection failed: ".$e->getMessage()."\n";
echo $sqlconerr;
// open function mail here and try to ts3 msg (perhaps uuid out of text file; mysqlconf?)
exit;
$err_msg = "Database Connection failed: ".$e->getMessage()."\n"; $err_lvl = 3;
$language = "en";
}
if (($config = $mysqlcon->query("SELECT * FROM config")) === false) {
$bgcolor = '#101010';
$hdcolor = '#909090';
$txcolor = '#707070';
$hvcolor = '#FFFFFF';
$ifcolor = '#3366CC';
$wncolor = '#CC0000';
$sccolor = '#008000';
$showgen = '1';
} else {
if (isset($mysqlcon) && ($config = $mysqlcon->query("SELECT * FROM config"))) {
$config = $config->fetchAll();
$ts['host'] = $config[0]['tshost'];
$ts['query'] = $config[0]['tsquery'];
@@ -46,15 +35,21 @@ if (($config = $mysqlcon->query("SELECT * FROM config")) === false) {
} else {
$language = $config[0]['language'];
}
} elseif($_GET["lang"] == "ar") {
$language = "ar";
$_SESSION['language'] = "ar";
} elseif($_GET["lang"] == "de") {
$language = "de";
$_SESSION['language'] = "de";
} elseif($_GET["lang"] == "ru") {
$language = "ru";
$_SESSION['language'] = "ru";
} elseif($_GET["lang"] == "it") {
$language = "it";
$_SESSION['language'] = "it";
} elseif($_GET["lang"] == "ro") {
$language = "ro";
$_SESSION['language'] = "ro";
} elseif($_GET["lang"] == "ru") {
$language = "ru";
$_SESSION['language'] = "ru";
} else {
$language = "en";
$_SESSION['language'] = "en";
@@ -89,8 +84,8 @@ if (($config = $mysqlcon->query("SELECT * FROM config")) === false) {
$substridle = $config[0]['substridle'];
$exceptuuid = explode(',', $config[0]['exceptuuid']);
$exceptgroup = explode(',', $config[0]['exceptgroup']);
$exceptcid = explode(',', $config[0]['exceptcid']);
$timeformat = $config[0]['dateformat'];
$showexgrp = $config[0]['showexgrp'];
$showexcld = $config[0]['showexcld'];
$showhighest = $config[0]['showhighest'];
$showcolrg = $config[0]['showcolrg'];
@@ -104,14 +99,6 @@ if (($config = $mysqlcon->query("SELECT * FROM config")) === false) {
$showcolas = $config[0]['showcolas'];
$showcolnx = $config[0]['showcolnx'];
$showcolsg = $config[0]['showcolsg'];
$bgcolor = $config[0]['bgcolor'];
$hdcolor = $config[0]['hdcolor'];
$txcolor = $config[0]['txcolor'];
$hvcolor = $config[0]['hvcolor'];
$ifcolor = $config[0]['ifcolor'];
$wncolor = $config[0]['wncolor'];
$sccolor = $config[0]['sccolor'];
$showgen = $config[0]['showgen'];
$cleanclients = $config[0]['cleanclients'];
$cleanperiod = $config[0]['cleanperiod'];
$defchid = $config[0]['defchid'];
@@ -122,14 +109,24 @@ if (($config = $mysqlcon->query("SELECT * FROM config")) === false) {
$timezone = $config[0]['timezone'];
}
date_default_timezone_set($timezone);
$advancemode = $config[0]['advancemode'];
$count_access = $config[0]['count_access'];
$last_access = $config[0]['last_access'];
$ignoreidle = $config[0]['ignoreidle'];
$rankupmsg = $config[0]['rankupmsg'];
$newversion = $config[0]['newversion'];
}
if(!isset($language) || $language == "en") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_en.php');
} elseif($language == "ar") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_ar.php');
} elseif($language == "de") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_de.php');
} elseif($language == "ru") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_ru.php');
} elseif($language == "it") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_it.php');
} elseif($language == "ro") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_ro.php');
} elseif($language == "ru") {
require_once(substr(dirname(__FILE__),0,-5).'languages/core_ru.php');
}
?>

View File

@@ -1 +1,78 @@
<?php if(isset($_POST['refresh'])){$_SESSION=array();session_destroy();}function set_session_ts3($hpclientip,$voiceport,$mysqlcon,$dbname){$allclients=$mysqlcon->query("SELECT u.uuid,u.cldbid,u.name,u.ip,u.firstcon,s.total_connections FROM $dbname.user as u LEFT JOIN $dbname.stats_user as s ON u.uuid=s.uuid WHERE online='1';")->fetchAll();$_SESSION['connected']=0;$_SESSION['serverport']=$voiceport;foreach($allclients as $client){if($hpclientip==$client['ip']){$_SESSION['tsuid']=$client['uuid'];$_SESSION['tscldbid']=$client['cldbid'];$_SESSION['tsname']=$client['name'];if($client['firstcon']==0){$_SESSION['tscreated']="unkown";}else{$_SESSION['tscreated']=date('d-m-Y',$client['firstcon']);}if($client['total_connections']!=NULL){$_SESSION['tsconnections']=$client['total_connections'];}else{$_SESSION['tsconnections']=0;}$convert=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p');$uuidasbase16='';for($i=0;$i<20;$i++){$char=ord(substr(base64_decode($_SESSION['tsuid']),$i,1));$uuidasbase16.=$convert[($char & 0xF0)>> 4];$uuidasbase16.=$convert[$char & 0x0F];}if(is_file('../avatars/'.$uuidasbase16.'.png')){$_SESSION['tsavatar']=$uuidasbase16.'.png';}else{$_SESSION['tsavatar']="none";}$_SESSION['connected']=1;$_SESSION['language']=$language;break;}}}?>
<?PHP
if (isset($_POST['refresh'])) {
$_SESSION = array();
session_destroy();
}
function set_session_ts3($voiceport, $mysqlcon, $dbname)
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
$hpclientip = $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
$hpclientip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
$hpclientip = $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
$hpclientip = $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
$hpclientip = $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
$hpclientip = $_SERVER['REMOTE_ADDR'];
else
$hpclientip = 0;
$hpclientip = ip2long($hpclientip);
$allclients = $mysqlcon->query("SELECT u.uuid,u.cldbid,u.name,u.ip,u.firstcon,s.total_connections FROM $dbname.user as u LEFT JOIN $dbname.stats_user as s ON u.uuid=s.uuid WHERE online='1';")->fetchAll();
$_SESSION['connected'] = 0;
$_SESSION['serverport'] = $voiceport;
foreach ($allclients as $client) {
if ($hpclientip == $client['ip']) {
$_SESSION['tsuid'] = $client['uuid'];
$_SESSION['tscldbid'] = $client['cldbid'];
$_SESSION['tsname'] = $client['name'];
if ($client['firstcon'] == 0) {
$_SESSION['tscreated'] = "unkown";
} else {
$_SESSION['tscreated'] = date('d-m-Y', $client['firstcon']);
}
if ($client['total_connections'] != NULL) {
$_SESSION['tsconnections'] = $client['total_connections'];
} else {
$_SESSION['tsconnections'] = 0;
}
$convert = array(
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p'
);
$uuidasbase16 = '';
for ($i = 0; $i < 20; $i++) {
$char = ord(substr(base64_decode($_SESSION['tsuid']), $i, 1));
$uuidasbase16 .= $convert[($char & 0xF0) >> 4];
$uuidasbase16 .= $convert[$char & 0x0F];
}
if (is_file('../avatars/' . $uuidasbase16 . '.png')) {
$_SESSION['tsavatar'] = $uuidasbase16 . '.png';
} else {
$_SESSION['tsavatar'] = "none";
}
$_SESSION['connected'] = 1;
$_SESSION['language'] = $language;
break;
}
}
}
?>

View File

@@ -1 +0,0 @@
<?php header('Content-type: text/css');require_once('config.php');?> body{font-family:Century Gothic,sans-serif;font-size:15px;color:<?php echo $txcolor?>;background-color:<?php echo $bgcolor?>}a:link{text-decoration:none;color:<?php echo $txcolor?>}a:visited{text-decoration:none;color:<?php echo $txcolor?>}a:hover{text-decoration:none;color:<?php echo $hvcolor?>}.hdcolor{color:<?php echo $hdcolor?>}.ifcolor{color:<?php echo $ifcolor?>}.wncolor{color:<?php echo $wncolor?>}.sccolor{color:<?php echo $sccolor?>}.tabledefault{width:95%;top:10;left:10;border:1;text-align:center;font-family:Verdana;font-size:10pt;margin:0 auto}.tablefunction{max-width:500px;width:100%;top:10;left:10;border:0;text-align:center;font-family:Verdana;font-size:10pt;margin:0 auto}.tablelogin{position:fixed;top:50%;left:50%;margin-top:-40px;margin-left:-150px}.tdleft{width:55%;text-align:left}.tdlefth{width:50%;text-align:left;vertical-align:top}.tdred{width:45%;text-align:right;color:red}.tdright{width:45%;text-align:right}.tdrighth{width:50%;text-align:right;vertical-align:top}.tdheadline{text-align:center;background-color:#0a1b2a}.tdheadline:hover{text-align:center;background-color:#0b243b}.tdheadlineimp{text-align:center;background-color:#030}.tdheadlineimp:hover{text-align:center;background-color:#060}.center{text-align:center}.right{text-align:right}.opacity{opacity:.1}.size1{font-size:24px;font-weight:bold}.size2{font-size:16px;font-weight:bold}.width{width:95%;box-sizing:border-box}.elevated{vertical-align:super}th{font-weight:bold;text-align:center;color:<?php echo $hdcolor?>}img{margin-bottom:-3}select{width:140px}input.switch:empty{margin-left:-9999px}input.switch:empty ~ label{position:relative;float:left;line-height:1.3em;text-indent:4em;margin:.2em 0 0 90px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}input.switch:empty ~ label:before,input.switch:empty ~ label:after{position:absolute;display:block;top:0;bottom:0;left:0;content:'';width:3em;background-color:#c00;border-radius:1em;-webkit-transition:all 50ms ease-in;transition:all 50ms ease-in}input.switch:empty ~ label:after{width:1.2em;top:.1em;bottom:.1em;margin-left:.2em;background-color:#fff;border-radius:.8em}input.switch:checked ~ label:before{background-color:green}input.switch:checked ~ label:after{margin-left:1.5em}.tooltip{position:relative;display:inline}.tooltip span{width:350px;position:absolute;color:#000;background:#ccc;padding:10px 10px 10px 10px;line-height:16px;text-align:center;visibility:hidden;border-radius:5px;box-shadow:0 1px 2px #0b243b}.tooltip span:after{content:'';position:absolute;top:7px;left:100%;width:0;height:0;border-left:12px solid #ccc;border-top:12px solid transparent;border-bottom:12px solid transparent}.tooltip:hover span{visibility:visible;right:110%;margin-top:-10px;margin-right:15px;z-index:999}

View File

@@ -1,387 +0,0 @@
<?PHP
$configs = $mysqlcon->query("SELECT * FROM config");
$configs = $configs->fetch(PDO::FETCH_ASSOC);
echo '<table class="tabledefault">
<tr><td class="right"><a href="webinterface.php?logout=true">', $lang['wilogout'], '</a></td></tr>
<tr><td class="center size1">', $lang['wihl'], '</td></tr>
<tr><td class="center">', sprintf($lang['wiversion'], $configs['currvers']), '</td></tr>
<tr><td class="center"><div id="alert">', $alert, '</div></td></tr>
</table>
<table class="tablefunction">
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadlineimp size2">
<a href="javascript:void(0)" title="" onclick="toggle(0);" style="display:block;">', $lang['wihlts'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="updatets" method="post">
<input type="hidden" name="savesettings" value="true">
<table class="tabledefault">
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3host'], '<span>', $lang['wits3hostdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="tshost" value="', $configs['tshost'], '" class="width" tabindex="1"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3query'], '<span>', $lang['wits3querydesc'], '</span></td>
<td class="tdlefth"><input type="text" name="tsquery" value="', $configs['tsquery'], '" class="width" tabindex="2"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3voice'], '<span>', $lang['wits3voicedesc'], '</span></td>
<td class="tdlefth"><input type="text" name="tsvoice" value="', $configs['tsvoice'], '" class="width" tabindex="3"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3querusr'], '<span>', $lang['wits3querusrdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="tsuser" value="', $configs['tsuser'], '" class="width" tabindex="4"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3querpw'], '<span>', $lang['wits3querpwdesc'], '</span></td>
<td class="tdlefth"><input type="password" name="tspass" value="', $configs['tspass'], '" id="tspass" ondblclick="showpwd(\'tspass\')" onblur="hidepwd(\'tspass\')" class="width" tabindex="5"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3qnm'], '<span>', $lang['wits3qnmdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="queryname" value="', $configs['queryname'], '" class="width" maxlength="30" tabindex="6"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3qnm2'], '<span>', $lang['wits3qnm2desc'], '</span></td>
<td class="tdlefth"><input type="text" name="queryname2" value="', $configs['queryname2'], '" class="width" maxlength="30" tabindex="7"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3dch'], '<span>', $lang['wits3dchdesc'], '</span></td>
<td class="tdlefth"><input type="number" name="defchid" value="', $configs['defchid'], '" class="width" tabindex="8"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wits3sm'], '<span>', $lang['wits3smdesc'], '</span><em class="elevated wncolor">&nbsp;new</em></td>
<td class="tdlefth"><select name="slowmode" class="width" tabindex="9">';
echo '<option value="0"'; if($configs['slowmode']=="0") echo "selected=selected"; echo '">Realtime (deactivated) [recommended]</option>';
echo '<option value="200000"'; if($configs['slowmode']=="200000") echo "selected=selected"; echo '">Low delay (0,2s)</option>';
echo '<option value="500000"'; if($configs['slowmode']=="500000") echo "selected=selected"; echo '">Middle delay (0,5s)</option>';
echo '<option value="1000000"'; if($configs['slowmode']=="1000000") echo "selected=selected"; echo '">High delay (1s)</option>';
echo '</select></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">',$lang['witime'],'<span>', $lang['witimedesc'], '</span><em class="elevated wncolor">&nbsp;new</em></td>
<td class="tdlefth"><select name="timezone" class="width" tabindex="10">';
$timezonearr = DateTimeZone::listIdentifiers();
foreach ($timezonearr as $timez) {
if ($timez == $timezone) {
echo '<option value="'.$timezone,'" selected=selected>',$timezone,'</option>';
} else {
echo '<option value="',$timez,'">',$timez,'</option>';
}
}
echo '</select></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" name="updatets" value="', $lang['wisvconf'], '" tabindex="11"></td></tr>
</table></form>
</div>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadlineimp size2">
<a href="javascript:void(0)" title="" onclick="toggle(1);" style="display:block;">', $lang['wihldb'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="updatetdbsettings" method="post">
<input type="hidden" name="savesettings" value="true">
<table class="tabledefault">
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">',$lang['isntwidbtype'],'<span>', $lang['isntwidbtypedesc'], '</span></td>
<td class="tdlefth"><select name="dbtype" class="width" tabindex="1">';
echo '<option value="cubrid"'; if($db['type']=="cubrid") echo "selected=selected"; echo '">cubrid - Cubrid</option>';
echo '<option value="dblib"'; if($db['type']=="dblib") echo "selected=selected"; echo '">dblib - FreeTDS / Microsoft SQL Server / Sybase</option>';
echo '<option value="firebird"'; if($db['type']=="firebird") echo "selected=selected"; echo '">firebird - Firebird/Interbase 6</option>';
echo '<option value="ibm"'; if($db['type']=="ibm") echo "selected=selected"; echo '">ibm - IBM DB2</option>';
echo '<option value="informix"'; if($db['type']=="informix") echo "selected=selected"; echo '">informix - IBM Informix Dynamic Server</option>';
echo '<option value="mysql"'; if($db['type']=="mysql") echo "selected=selected"; echo '">mysql - MySQL 3.x/4.x/5.x [recommend]</option>';
echo '<option value="oci"'; if($db['type']=="oci") echo "selected=selected"; echo '">oci - Oracle Call Interface</option>';
echo '<option value="odbc"'; if($db['type']=="odbc") echo "selected=selected"; echo '">odbc - ODBC v3 (IBM DB2, unixODBC und win32 ODBC)</option>';
echo '<option value="pgsql"'; if($db['type']=="pgsql") echo "selected=selected"; echo '">pgsql - PostgreSQL</option>';
echo '<option value="sqlite"'; if($db['type']=="sqlite") echo "selected=selected"; echo '">sqlite - SQLite 3 und SQLite 2</option>';
echo '<option value="sqlsrv"'; if($db['type']=="sqlsrv") echo "selected=selected"; echo '">sqlsrv - Microsoft SQL Server / SQL Azure</option>';
echo '<option value="4d"'; if($db['type']=="4d") echo "selected=selected"; echo '">4d - 4D</option>';
echo '</select></td></tr>
<tr><td class="tdrighth tooltip">'.$lang['isntwidbhost'].'<span>', $lang['isntwidbhostdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="dbhost" value="', $db['host'], '" class="width" tabindex="2"></td></tr>
<tr><td class="tdrighth tooltip">'.$lang['isntwidbusr'].'<span>', $lang['isntwidbusrdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="dbuser" value="', $db['user'], '" class="width" tabindex="3"></td></tr>
<tr><td class="tdrighth tooltip">'.$lang['isntwidbpass'].'<span>', $lang['isntwidbpassdesc'], '</span></td>
<td class="tdlefth"><input type="password" name="dbpass" value="', $db['pass'], '" id="dbpass" ondblclick="showpwd(\'dbpass\')" onblur="hidepwd(\'dbpass\')" class="width" tabindex="4"></td></tr>
<tr><td class="tdrighth tooltip">'.$lang['isntwidbname'].'<span>', $lang['isntwidbnamedesc'], '</span></td>
<td class="tdlefth"><input type="text" name="dbname" value="', $db['dbname'], '" class="width" tabindex="5"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" name="updatetdbsettings" value="', $lang['wisvconf'], '" tabindex="6"></td></tr>
</table></form>
</div>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadlineimp size2">
<a href="javascript:void(0)" title="" onclick="toggle(2);" style="display:block;">', $lang['wihlcfg'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="updatecore" method="post">
<input type="hidden" name="savesettings" value="true">
<table class="tabledefault">
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wigrptime'], '<span>', $lang['wigrptimedesc'], '</span></td>
<td class="tdlefth"><textarea rows="2" cols="30" name="grouptime" class="width" tabindex="1">', $configs['grouptime'], '</textarea></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wisupidle'], '<span>', $lang['wisupidledesc'], '</span></td>';
if ($configs['substridle'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch201" name="substridle" class="switch" checked class="width" tabindex="2">
<label for="switch201">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch201" name="substridle" class="switch" class="width" tabindex="2">
<label for="switch201">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wimsgusr'], '<span>', $lang['wimsgusrdesc'], '</span></td>';
if ($configs['msgtouser'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch202" name="msgtouser" class="switch" checked class="width" tabindex="3">
<label for="switch202">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch202" name="msgtouser" class="switch" class="width" tabindex="3">
<label for="switch202">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wiexgrp'], '<span>', $lang['wiexgrpdesc'], '</span></td>
<td class="tdlefth"><textarea rows="1" cols="30" name="exceptgroup" class="width" tabindex="4">', $configs['exceptgroup'], '</textarea></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiexuid'], '<span>', $lang['wiexuiddesc'], '</span></td>
<td class="tdlefth"><textarea rows="2" cols="30" name="exceptuuid" class="width" tabindex="5">', $configs['exceptuuid'], '</textarea></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiboost'], '<span>', $lang['wiboostdesc'], '</span><em class="elevated wncolor">&nbsp;new</em></td>
<td class="tdlefth"><textarea rows="2" cols="30" name="boost" class="width" tabindex="6">', $configs['boost'], '</textarea></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wichdbid'], '<span>', $lang['wichdbiddesc'], '</span></td>';
if ($configs['resetbydbchange'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch203" name="resetbydbchange" class="switch" checked class="width" tabindex="7">
<label for="switch203">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch203" name="resetbydbchange" class="switch" class="width" tabindex="7">
<label for="switch203">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['cleanc'], '<span>', $lang['cleancdesc'], '</span></td>';
if ($configs['cleanclients'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch204" name="cleanclients" class="switch" checked class="width" tabindex="8">
<label for="switch204">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch204" name="cleanclients" class="switch" class="width" tabindex="8">
<label for="switch204">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['cleanp'], '<span>', $lang['cleanpdesc'], '</span></td>
<td class="tdlefth"><input type="number" name="cleanperiod" value="', $configs['cleanperiod'], '" class="width" tabindex="9"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">'.$lang['wilog'].'<span>', $lang['wilogdesc'], '</span><em class="elevated wncolor">&nbsp;new</em></td>
<td class="tdlefth"><input type="text" name="logpath" value="', $configs['logpath'], '" class="width" tabindex="10"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiupcheck'], '<span>', $lang['wiupcheckdesc'], '</span></td>';
if ($configs['upcheck'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch205" name="upcheck" class="switch" checked class="width" tabindex="11">
<label for="switch205">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch205" name="upcheck" class="switch" class="width" tabindex="11">
<label for="switch205">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wiupuid'], '<span>', $lang['wiupuiddesc'], '</span></td>
<td class="tdlefth"><textarea rows="2" cols="30" name="uniqueid" class="width" tabindex="12">', $configs['uniqueid'], '</textarea></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiuptime'], '<span>', $lang['wiuptimedesc'], '</span></td>
<td class="tdlefth"><input type="number" min="1800" name="updateinfotime" value="', $configs['updateinfotime'], '" class="width" tabindex="13" ></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" name="updatecore" value="', $lang['wisvconf'], '" tabindex="14"></td></tr>
</table></form>
</div>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadlineimp size2">
<a href="javascript:void(0)" title="" onclick="toggle(3);" style="display:block;">', $lang['wihlsty'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="updatestyle" method="post">
<table class="tabledefault">
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wivlang'], '<span>', sprintf($lang['wivlangdesc'], "<br>"), '</span></td>
<td class="tdlefth"><select name="languagedb" class="width" tabindex="1">';
echo ($language === 'de' ? '<option value="de" selected="selected">'.$lang['stnv0031'].'</option>' : '<option value="de">'.$lang['stnv0031'].'</option>');
echo ($language === 'en' ? '<option value="en" selected="selected">'.$lang['stnv0032'].'</option>' : '<option value="en">'.$lang['stnv0032'].'</option>');
echo ($language === 'it' ? '<option value="it" selected="selected">'.$lang['stnv0034'].'</option>' : '<option value="it">'.$lang['stnv0034'].'</option>');
echo ($language === 'ru' ? '<option value="ru" selected="selected">'.$lang['stnv0033'].'</option>' : '<option value="ru">'.$lang['stnv0033'].'</option>');
echo '</select></td></tr>
<tr><td class="tdrighth tooltip">', $lang['widaform'], '<span>', $lang['widaformdesc'], '</span></td>
<td class="tdlefth"><input type="text" name="dateformat" value="', $configs['dateformat'], '" class="width" tabindex="2"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wishexgrp'], '<span>', $lang['wishexgrpdesc'], '</span></td>';
if ($configs['showexgrp'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch301" name="showexgrp" class="switch" checked class="width" tabindex="3">
<label for="switch301">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch301" name="showexgrp" class="switch" class="width" tabindex="3">
<label for="switch301">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishexcld'], '<span>', $lang['wishexclddesc'], '</span></td>';
if ($configs['showexcld'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch302" name="showexcld" class="switch" checked class="width" tabindex="4">
<label for="switch302">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch302" name="showexcld" class="switch" class="width" tabindex="4">
<label for="switch302">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishhicld'], '<span>', $lang['wishhiclddesc'], '</span></td>';
if ($configs['showhighest'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch303" name="showhighest" class="switch" checked class="width" tabindex="5">
<label for="switch303">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch303" name="showhighest" class="switch" class="width" tabindex="5">
<label for="switch303">&nbsp;</label></div></td></tr>';
}
echo '<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wishcolrg'], '<span>', $lang['wishcolrgdesc'], '</span></td>';
if ($configs['showcolrg'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch304" name="showcolrg" class="switch" checked class="width" tabindex="6">
<label for="switch304">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch304" name="showcolrg" class="switch" class="width" tabindex="6">
<label for="switch304">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolcld'], '<span>', $lang['wishcolclddesc'], '</span></td>';
if ($configs['showcolcld'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch305" name="showcolcld" class="switch" checked class="width" tabindex="7">
<label for="switch305">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch305" name="showcolcld" class="switch" class="width" tabindex="7">
<label for="switch305">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcoluuid'], '<span>', $lang['wishcoluuiddesc'], '</span></td>';
if ($configs['showcoluuid'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch306" name="showcoluuid" class="switch" checked class="width" tabindex="8">
<label for="switch306">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch306" name="showcoluuid" class="switch" class="width" tabindex="8">
<label for="switch306">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcoldbid'], '<span>', $lang['wishcoldbiddesc'], '</span></td>';
if ($configs['showcoldbid'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch307" name="showcoldbid" class="switch" checked class="width" tabindex="9">
<label for="switch307">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch307" name="showcoldbid" class="switch" class="width" tabindex="9">
<label for="switch307">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolls'], '<span>', $lang['wishcollsdesc'], '</span></td>';
if ($configs['showcolls'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch308" name="showcolls" class="switch" checked class="width" tabindex="10">
<label for="switch308">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch308" name="showcolls" class="switch" class="width" tabindex="10">
<label for="switch308">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolot'], '<span>', $lang['wishcolotdesc'], '</span></td>';
if ($configs['showcolot'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch309" name="showcolot" class="switch" checked class="width" tabindex="11">
<label for="switch309">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch309" name="showcolot" class="switch" class="width" tabindex="11">
<label for="switch309">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolit'], '<span>', $lang['wishcolitdesc'], '</span></td>';
if ($configs['showcolit'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch310" name="showcolit" class="switch" checked class="width" tabindex="12">
<label for="switch310">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch310" name="showcolit" class="switch" class="width" tabindex="12">
<label for="switch310">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolat'], '<span>', $lang['wishcolatdesc'], '</span></td>';
if ($configs['showcolat'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch311" name="showcolat" class="switch" checked class="width" tabindex="13">
<label for="switch311">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch311" name="showcolat" class="switch" class="width" tabindex="13">
<label for="switch311">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolas'], '<span>', $lang['wishcolasdesc'], '</span></td>';
if ($configs['showcolas'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch312" name="showcolas" class="switch" checked class="width" tabindex="14">
<label for="switch312">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch312" name="showcolas" class="switch" class="width" abindex="14">
<label for="switch312">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolnx'], '<span>', $lang['wishcolnxdesc'], '</span></td>';
if ($configs['showcolnx'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch313" name="showcolnx" class="switch" checked class="width" tabindex="15">
<label for="switch313">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch313" name="showcolnx" class="switch" class="width" tabindex="15">
<label for="switch313">&nbsp;</label></div></td></tr>';
}
echo '<tr><td class="tdrighth tooltip">', $lang['wishcolsg'], '<span>', $lang['wishcolsgdesc'], '</span><em class="elevated wncolor">&nbsp;new</em></td>';
if ($configs['showcolsg'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch314" name="showcolsg" class="switch" checked class="width" tabindex="16">
<label for="switch314">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch314" name="showcolsg" class="switch" class="width" tabindex="16">
<label for="switch314">&nbsp;</label></div></td></tr>';
}
echo '<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wibgco'], '<span>', $lang['wibgcodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="bgcolor" value="', $configs['bgcolor'], '" class="width" tabindex="17"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wihdco'], '<span>', $lang['wihdcodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="hdcolor" value="', $configs['hdcolor'], '" class="width" tabindex="18"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['witxco'], '<span>', $lang['witxcodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="txcolor" value="', $configs['txcolor'], '" class="width" tabindex="19"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wihvco'], '<span>', $lang['wihvcodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="hvcolor" value="', $configs['hvcolor'], '" class="width" tabindex="20"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiifco'], '<span>', $lang['wiifcodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="ifcolor" value="', $configs['ifcolor'], '" class="width" tabindex="21"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiwnco'], '<span>', $lang['wiwncodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="wncolor" value="', $configs['wncolor'], '" class="width" tabindex="22"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['wiscco'], '<span>', $lang['wisccodesc'], '</span></td>
<td class="tdlefth"><input type="text" name="sccolor" value="', $configs['sccolor'], '" class="width" tabindex="23"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wishgen'], '<span>', $lang['wishgendesc'], '</span></td>';
if ($configs['showgen'] == 1) {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch315" name="showgen" class="switch" checked class="width" tabindex="24">
<label for="switch315">&nbsp;</label></div></td></tr>';
} else {
echo '<td class="tdlefth"><div><input type="checkbox" id="switch315" name="showgen" class="switch" class="width" tabindex="25">
<label for="switch315">&nbsp;</label></div></td></tr>';
}
echo '<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" name="updatestyle" value="', $lang['wisvconf'], '" tabindex="26"><input type="hidden" name="savesettings" value="true"></td></tr>
</table></form>
</div>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadline size2">
<a href="stats/list_rankup.php?admin=true" target="_blank" style="display:block;">', $lang['wihladm'], '</a>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadline size2">
<a href="javascript:void(0)" title="" onclick="toggle(4);" style="display:block;">', $lang['wihlcls'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="selectivclients" method="post">
<table class="tabledefault">
<tr><td class="tdrighth tooltip"><p>', $lang['wiselcld'], '<span>', $lang['wiselclddesc'], '</span></p></td><td class="tdlefth"><p><textarea rows="2" cols="30" id="clients" name="selectedclients" class="width" tabindex="1"></textarea></p><p><textarea class="opacity width" name="selecteduuids" rows="2" readonly></textarea></p></td></tr>
<tr><td colspan="2"><b><i>and choose</i></b></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['widelcld'], '<span>', $lang['widelclddesc'], '</span></td><td class="tdlefth"><div><input type="checkbox" id="switch401" name="delclients" class="switch" class="width" tabindex="2">
<label for="switch401">&nbsp;</label></div></td></tr>
<tr><td class="tdrighth tooltip">', $lang['widelsg'], '<span>', $lang['widelsgdesc'], '</span></td><td class="tdlefth"><div><input type="checkbox" id="switch402" name="delsrvgrp" class="switch" class="width" tabindex="3"><label for="switch402">&nbsp;</label></div></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><b><i>or</i></b></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['setontime'], '<span>', $lang['setontimedesc'], '</span></td><td class="tdlefth"><input type="text" name="counttime" value="0" class="width" tabindex="4"></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" value="', $lang['wiaction'], '" name="selectivclients" tabindex="5"></td></tr>
</table></form>
</div>
</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td class="tdheadline size2">
<a href="javascript:void(0)" title="" onclick="toggle(5);" style="display:block;">', $lang['wihlclg'], '</a>
</td></tr>
<tr><td class="center">
<div class="layers" style="display:none;">
<form name="globalclients" method="post">
<table class="tabledefault">
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['wideltime'], '<span>', $lang['wideltimedesc'], '</span></td><td class="tdlefth"><input type="text" name="cleantime" value="31536000" class="width" tabindex="1"></td></tr>
<tr><td class="tdrighth tooltip">', $lang['widelsg'], '<span>', $lang['widelsgdesc'], '</span></td><td class="tdlefth"><div><input type="checkbox" id="switch501" name="delsrvgrp" class="switch" class="width" tabindex="2">
<label for="switch501">&nbsp;</label></div></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td colspan="2"><b><i>or</i></b></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td class="tdrighth tooltip">', $lang['widelcldgrp'], '<span>', $lang['widelcldgrpdesc'], '</span></td><td class="tdlefth"><div><input type="checkbox" id="switch502" name="delcldgrps" class="switch" class="width" tabindex="3">
<label for="switch502">&nbsp;</label></div></td></tr>
<tr><td colspan="2">&nbsp;</td></tr>
<tr><td>&nbsp;</td><td class="tdlefth"><input type="submit" name="globalclients" value="', $lang['wiaction'], '" tabindex="4"></td></tr>
</table></form>
</div>
</td></tr>
</table>';
?>

View File

@@ -1 +0,0 @@
<?php echo '<form name="form" method="post"><table class="tablelogin">';if(isset($showerrlogin)){echo '<tr><td colspan="2" class="center">',$lang['errlogin'],'<br><br></td></tr>';}echo '<tr><td class="center">',$lang['user'],'</td><td class="center"><input type="text" name="username"></td></tr><tr><td class="center">',$lang['pass'],'</td><td class="center"><input type="password" name="password"></td></tr><tr><td class="center" colspan="2"><input type="submit" name="abschicken" class="button" value="login" style="width:50px"></td></tr></table></form><script type="text/javascript">document.forms["form"].elements["username"].focus();</script>';?>

View File

@@ -3,19 +3,22 @@ session_start();
require_once('../other/config.php');
require_once('../other/session.php');
if($language == "de") {
if($language == "ar") {
require_once('../languages/nations_en.php');
} elseif($language == "de") {
require_once('../languages/nations_de.php');
} elseif($language == "en") {
require_once('../languages/nations_en.php');
} elseif($language == "it") {
require_once('../languages/nations_it.php');
} elseif($language == "ro") {
require_once('../languages/nations_en.php');
} elseif($language == "ru") {
require_once('../languages/nations_ru.php');
}
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
function human_readable_size($bytes) {
@@ -54,7 +57,7 @@ require_once('nav.php');
<div class="col-lg-12">
<h1 class="page-header">
<?PHP echo $lang['stix0001']; ?>
<a href="#infoModal" data-toggle="modal" class="btn btn-primary">
<a href="#filteroptions" data-toggle="modal" class="btn btn-primary">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
</a>
</h1>
@@ -91,7 +94,7 @@ require_once('nav.php');
<i class="fa fa-clock-o fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge"><?PHP echo round(($sql_res[0]['total_online_time'] / 86400)). ' <small>'.$lang['days'].'</small>';?></div>
<div class="huge"><?PHP echo sprintf($lang['days'], round(($sql_res[0]['total_online_time'] / 86400))); ?></div>
<div><?PHP echo $lang['stix0004']; ?></div>
</div>
</div>
@@ -113,7 +116,7 @@ require_once('nav.php');
<i class="fa fa-clock-o fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge"><?PHP echo round(($sql_res[0]['total_online_month'] / 86400)). ' <small>'.$lang['days'].'</small>';?></div>
<div class="huge"><?PHP echo sprintf($lang['days'], round(($sql_res[0]['total_online_month'] / 86400))) ?></div>
<div><?PHP if($sql_res[0]['total_online_month'] == 0) { echo $lang['stix0048']; } else { echo $lang['stix0049']; } ?></div>
</div>
</div>
@@ -135,7 +138,7 @@ require_once('nav.php');
<i class="fa fa-clock-o fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge"><?PHP echo round(($sql_res[0]['total_online_week'] / 86400)). ' <small>'.$lang['days'].'</small>';?></div>
<div class="huge"><?PHP echo sprintf($lang['days'], round(($sql_res[0]['total_online_week'] / 86400))) ?></div>
<div><?PHP if ($sql_res[0]['total_online_week'] == 0) { echo $lang['stix0048']; } else { echo $lang['stix0050']; } ?></div>
</div>
</div>
@@ -318,7 +321,7 @@ require_once('nav.php');
</tr>
<tr>
<td><?PHP echo $lang['stix0045']; ?></td>
<td><?PHP if ($sql_res[0]['server_weblist'] == 1) { echo '<a href="https://www.planetteamspeak.com/serverlist/result/server/ip/'; if($ts['host']=='localhost') { echo $_SERVER['HTTP_HOST'];} else { echo $ts['host']; } echo ':'.$ts['voice'] .'" target="_blank">'.$lang['stix0046'].'</a>'; } else { echo $lang['stix0047']; } ?></td>
<td><?PHP if ($sql_res[0]['server_weblist'] == 1) { echo '<a href="https://www.planetteamspeak.com/serverlist/result/server/ip/'; if($ts['host']=='localhost' || $ts['host']=='127.0.0.1') { echo $_SERVER['HTTP_HOST'];} else { echo $ts['host']; } echo ':'.$ts['voice'] .'" target="_blank">'.$lang['stix0046'].'</a>'; } else { echo $lang['stix0047']; } ?></td>
</tr>
</tbody>
</table>

View File

@@ -1,4 +1,4 @@
<?PHP
<?PHP
session_start();
$starttime = microtime(true);
@@ -6,16 +6,13 @@ require_once('../other/config.php');
require_once('../other/session.php');
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
require_once('nav.php');
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, 3); ?>
<div class="container-fluid">
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
@@ -33,7 +30,7 @@ require_once('nav.php');
<div class="row">
<div class="col-lg-12">
<h4><strong><span class="text-success"><?PHP echo $lang['stri0004']; ?></span></strong></h4>
<p>The <a href="http://ts-n.net/ranksystem.php" target="_blank">Ranksystem</a> was coded by <strong>Newcomer1989</strong> Copyright &copy; 2009-2016 <a href="http://ts-n.net/" target="_blank">TeamSpeak Sponsoring TS-N.NET</a>. All rights reserved.</p>
<p>The <a href="//ts-n.net/ranksystem.php" target="_blank">Ranksystem</a> was coded by <strong>Newcomer1989</strong> Copyright &copy; 2009-2016 <a href="//ts-n.net/" target="_blank">TeamSpeak Sponsoring TS-N.NET</a>. All rights reserved.</p>
<br>
</div>
</div>
@@ -50,18 +47,22 @@ require_once('nav.php');
<div class="col-lg-12">
<h4><strong><span class="text-danger"><?PHP echo $lang['stri0009']; ?></span></strong></h4>
<p><?PHP echo $lang['stri0010']; ?></p>
<p><a href="http://php.net/" target="_blank">PHP</a> - Copyright &copy; 2001-2016 the <a href="https://secure.php.net/credits.php" target="_blank">PHP Group</a></p><br>
<p><a href="//php.net/" target="_blank">PHP</a> - Copyright &copy; 2001-2016 the <a href="//secure.php.net/credits.php" target="_blank">PHP Group</a></p><br>
<p><?PHP echo $lang['stri0011']; ?></p>
<p><a href="http://jquery.com/" target="_blank">jQuery v2.2.0</a> - Copyright &copy; 2016 The jQuery Foundation</p>
<p><a href="//jquery.com/" target="_blank">jQuery v2.2.0</a> - Copyright &copy; 2016 The jQuery Foundation</p>
<p>jQuery Autocomplete plugin 1.1 - Copyright &copy; 2009 J&ouml;rn Zaefferer</p>
<p><a href="http://fontawesome.io" target="_blank">Font Awesome 4.2.0</a> - Copyright &copy; davegandy</p>
<p><a href="http://flag-icon-css.lip.is/" target="_blank">flag-icon-css</a> - Copyright &copy; 2016 lipis</p>
<p><a href="http://jquery.com/plugins/project/ajaxqueue" target="_blank">Ajax Queue Plugin</a> - Copyright &copy; 2013 Corey Frang</p>
<p><a href="http://planetteamspeak.com/" target="_blank">TeamSpeak 3 PHP Framework 1.1.23</a> - Copyright &copy; 2010 Planet TeamSpeak</p>
<p><a href="http://getbootstrap.com/" target="_blank">Bootstrap 3.3.6</a> - Copyright &copy; 2011-2016 Twitter, Inc.</p>
<p><a href="http://morrisjs.github.io/morris.js/" target="_blank">morris.js</a> - Copyright &copy; 2013 Olly Smith</p>
<p><a href="http://raphaeljs.com" target="_blank">Rapha&euml;l 2.1.4 - JavaScript Vector Library</a> - Copyright &copy; 2008-2012 Dmitry Baranovskiy</p>
<p><a href="http://startbootstrap.com" target="_blank">SB Admin Bootstrap Admin Template</a> - Copyright &copy; 2013-2016 Blackrock Digital LLC.</p>
<p><a href="//fontawesome.io" target="_blank">Font Awesome 4.6.3</a> - Copyright &copy; davegandy</p>
<p><a href="//flag-icon-css.lip.is/" target="_blank">flag-icon-css</a> - Copyright &copy; 2016 lipis</p>
<p><a href="//jquery.com/plugins/project/ajaxqueue" target="_blank">Ajax Queue Plugin</a> - Copyright &copy; 2013 Corey Frang</p>
<p><a href="//planetteamspeak.com/" target="_blank">TeamSpeak 3 PHP Framework 1.1.23</a> - Copyright &copy; 2010 Planet TeamSpeak</p>
<p><a href="//getbootstrap.com/" target="_blank">Bootstrap 3.3.7</a> - Copyright &copy; 2011-2016 Twitter, Inc.</p>
<p><a href="//morrisjs.github.io/morris.js/" target="_blank">morris.js</a> - Copyright &copy; 2013 Olly Smith</p>
<p><a href="//raphaeljs.com" target="_blank">Rapha&euml;l 2.1.4 - JavaScript Vector Library</a> - Copyright &copy; 2008-2012 Dmitry Baranovskiy</p>
<p><a href="//startbootstrap.com" target="_blank">SB Admin Bootstrap Admin Template</a> - Copyright &copy; 2013-2016 Blackrock Digital LLC.</p>
<p><a href="//www.bootstrap-switch.org" target="_blank">Bootstrap Switch</a> - Copyright &copy; 2013-2015 Mattia Larentis</p>
<p><a href="//www.virtuosoft.eu/code/bootstrap-touchspin" target="_blank">Bootstrap TouchSpin</a> - Copyright &copy; 2013-2016 István Ujj-Mészáros</p>
<p><a href="//silviomoreto.github.io/bootstrap-select" target="_blank">bootstrap-select</a> - Copyright &copy; 2013-2015 Silvio Moreto a.o.</p>
<p><a href="//wenzhixin.net.cn/" target="_blank">Bootstrap Show Password</a> - Copyright &copy; 2014 zhixin wen</p>
<br>
</div>
</div>
@@ -71,14 +72,13 @@ require_once('nav.php');
<p><?PHP echo $lang['stri0013']; ?></p>
<p><?PHP echo $lang['stri0014']; ?></p>
<p><?PHP echo $lang['stri0015']; ?></p>
<p><?PHP echo $lang['stri0016']; ?></p>
<p><?PHP echo $lang['stri0017']; ?></p>
<br>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
</body>
</html>

View File

@@ -5,9 +5,25 @@ $starttime = microtime(true);
require_once('../other/config.php');
require_once('../other/session.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
if(isset($_POST['username'])) {
@@ -31,6 +47,9 @@ if(isset($getstring) && strstr($getstring, 'filter:excepted:')) {
$filter .= " AND except='0'";
} else {
$searchstring = $getstring;
if($showexcld == 0) {
$filter .= " AND except='0'";
}
}
if(isset($getstring) && strstr($getstring, 'filter:online:')) {
$searchstring = preg_replace('/filter\:online\:/','',$searchstring);
@@ -44,6 +63,32 @@ if(isset($getstring) && strstr($getstring, 'filter:actualgroup:')) {
$searchstring = preg_replace('/filter\:actualgroup\:(.*)\:/','',$searchstring);
$filter .= " AND grpid='".$grpvalue[1]."'";
}
if(isset($getstring) && strstr($getstring, 'filter:country:')) {
preg_match('/filter\:country\:(.*)\:/',$searchstring,$grpvalue);
$searchstring = preg_replace('/filter\:country\:(.*)\:/','',$searchstring);
$filter .= " AND nation='".$grpvalue[1]."'";
}
if(isset($getstring) && strstr($getstring, 'filter:lastseen:')) {
preg_match('/filter\:lastseen\:(.*)\:(.*)\:/',$searchstring,$seenvalue);
$searchstring = preg_replace('/filter\:lastseen\:(.*)\:(.*)\:/','',$searchstring);
if(is_numeric($seenvalue[2])) {
$lastseen = $seenvalue[2];
} else {
$r = date_parse_from_format("Y-m-d H-i",$seenvalue[2]);
$d = mktime($r['hour'], $r['minute'], $r['second'], $r['month'], $r['day'], $r['year']);
$lastseen = $d;
}
if($seenvalue[1] == '&lt;') {
$operator = '<';
} elseif($seenvalue[1] == '&gt;') {
$operator = '>';
} elseif($seenvalue[1] == '!=') {
$operator = '!=';
} else {
$operator = '=';
}
$filter .= " AND lastseen".$operator."'".$lastseen."'";
}
if(isset($getstring)) {
$dbdata_full = $mysqlcon->prepare("SELECT COUNT(*) FROM $dbname.user WHERE (uuid LIKE :searchvalue OR cldbid LIKE :searchvalue OR name LIKE :searchvalue)$filter");
@@ -73,7 +118,7 @@ if (isset($_GET['order'])) {
}
$keyorder = ($keyorder == 'desc' ? 'desc' : 'asc');
if (isset($_GET['admin'])) {
if($_GET['admin'] == "true" && isset($_SESSION['username'])) {
if($_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$adminlogin = 1;
}
}
@@ -267,14 +312,6 @@ if($adminlogin == 1) {
$countallsum++;
foreach ($grouptime as $time => $groupid) {
$grpcount++;
if (array_intersect($sgroups, $exceptgroup) && $showexgrp != 1 && $adminlogin != 1) {
$exceptgrp++;
break;
}
if (in_array($uid, $exceptuuid) && $showexcld != 1 && $adminlogin != 1) {
$exceptcld++;
break;
}
if ($activetime < $time || $grpcount == $countgrp && $nextup == 0 && $showhighest == 1 || $grpcount == $countgrp && $nextup == 0 && $adminlogin == 1) {
if($nextup == 0 && $grpcount == $countgrp) {
$neededtime = 0;
@@ -382,32 +419,10 @@ if($adminlogin == 1) {
if($user_pro_seite != "all") {
pagination($keysort,$keyorder,$user_pro_seite,$seiten_anzahl_gerundet,$seite,$getstring);
}
if ($showgen == 1 || $adminlogin == 1) {
$except = $exceptgrp + $exceptcld;
$notvisible = 0;
if ($showexgrp != 1) { $notvisible = $exceptgrp; }
if ($showexcld != 1) { $notvisible = $notvisible + $exceptcld; }
if ($showhighest != 1) { $notvisible = $notvisible + $highest; }
$displayed = $countallsum - $notvisible;
$buildtime = microtime(true) - $starttime;
?>
<nav>
<ul class="pager">
<li class="previous"><span class="glyphicon glyphicon-chevron-up up scrollMore" aria-hidden="true"></span></li>
<li class="next"><span class="glyphicon glyphicon-chevron-up up scrollMore" aria-hidden="true"></span></li>
</ul>
</nav>
<?PHP
}
?>
</div>
<!-- /.container-fluid -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<script src="../jquerylib/jquery.js"></script>
<script type="text/javascript">
;(function($) {

View File

@@ -4,8 +4,7 @@ require_once('../other/config.php');
require_once('../other/session.php');
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
$getstring = $_SESSION['tsuid'];

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
@@ -9,28 +9,17 @@
<title>TS-N.NET Ranksystem</title>
<!-- Bootstrap Core CSS -->
<link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../bootstrap/addons/sb-admin.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="../bootstrap/addons/morris/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="../bootstrap/addons/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- Flag icon css -->
<link href="../bootstrap/flag_icon/css/flag-icon.min.css" rel="stylesheet">
<!-- jQuery -->
<script src="../jquerylib/jquery.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="../bootstrap/js/bootstrap.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="../bootstrap/addons/morris/raphael.min.js"></script>
<script src="../bootstrap/addons/morris/morris.min.js"></script>
<script src="../bootstrap/addons/morris/morris-data.js"></script>
@@ -132,18 +121,56 @@
</div>
</div>
</div>
<div id="filteroptions" class="modal fade">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title">Filter options - Search function</h4>
</div>
<div class="modal-body">
<p><?PHP echo $lang['stnv0031']; ?></p>
<p><?PHP echo $lang['stnv0032']; ?></p>
<p><?PHP echo $lang['stnv0033']; ?></p>
<p><?PHP echo $lang['stnv0034']; ?></p>
<p><?PHP echo $lang['stnv0035']; ?></p>
<p><br></p>
<p><b>filter:excepted:</b></p>
<p><?PHP echo $lang['stnv0036']; ?></p>
<p><b>filter:nonexcepted:</b></p>
<p><?PHP echo $lang['stnv0037']; ?></p>
<p><b>filter:online:</b></p>
<p><?PHP echo $lang['stnv0038']; ?></p>
<p><b>filter:nononline:</b></p>
<p><?PHP echo $lang['stnv0039']; ?></p>
<p><b>filter:actualgroup:<i>GROUPID</i>:</b></p>
<p><?PHP echo $lang['stnv0040']; ?></p>
<p><b>filter:country:<i>TS3-COUNTRY-CODE</i>:</b></p>
<p><?PHP echo $lang['stnv0042']; ?></p>
<p><b>filter:lastseen:<i>OPERATOR</i>:<i>TIME</i>:</b></p>
<p><?PHP echo $lang['stnv0041']; ?></p>
<br>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div id="wrapper">
<!-- Navigation -->
<nav class="navbar navbar-inverse navbar-fixed-top">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<a class="navbar-brand" href="index.php"><?PHP echo $lang['stnv0024']; ?></a>
</div>
<!-- Top Menu Items -->
<?PHP if(basename($_SERVER['SCRIPT_NAME']) == "list_rankup.php") { ?>
<ul class="nav navbar-left top-nav">
<li class="navbar-form navbar-left dropdown">
<div class="btn-group">
<a href="#filteroptions" data-toggle="modal" class="btn btn-primary">
<span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>
</a>
</div>
</li>
<li class="navbar-form navbar-right dropdown">
<button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<?PHP echo $lang['stnv0025']; ?>
@@ -199,21 +226,26 @@
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-globe"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="?lang=de" data-toggle="modal"><span class="flag-icon flag-icon-de"></span>&nbsp;&nbsp;<?PHP echo $lang['stnv0031']; ?></a>
<a href="?lang=ar"><span class="flag-icon flag-icon-arab"></span>&nbsp;&nbsp;AR - العربية</a>
</li>
<li>
<a href="?lang=en" data-toggle="modal"><span class="flag-icon flag-icon-us"></span>&nbsp;&nbsp;<?PHP echo $lang['stnv0032']; ?></a>
<a href="?lang=de"><span class="flag-icon flag-icon-de"></span>&nbsp;&nbsp;DE - Deutsch</a>
</li>
<li>
<a href="?lang=it" data-toggle="modal"><span class="flag-icon flag-icon-it"></span>&nbsp;&nbsp;<?PHP echo $lang['stnv0034']; ?></a>
<a href="?lang=en"><span class="flag-icon flag-icon-us"></span>&nbsp;&nbsp;EN - english</a>
</li>
<li>
<a href="?lang=ru" data-toggle="modal"><span class="flag-icon flag-icon-ru"></span>&nbsp;&nbsp;<?PHP echo $lang['stnv0033']; ?></a>
<a href="?lang=it"><span class="flag-icon flag-icon-it"></span>&nbsp;&nbsp;IT - italiano</a>
</li>
<li>
<a href="?lang=ro"><span class="flag-icon flag-icon-ro"></span>&nbsp;&nbsp;RO - românesc</a>
</li>
<li>
<a href="?lang=ru"><span class="flag-icon flag-icon-ru"></span>&nbsp;&nbsp;RU - русский</a>
</li>
</ul>
</li>
</ul>
<!-- Sidebar Menu Items - These collapse to the responsive navigation menu on small screens -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "index.php" ? ' class="active">' : '>'); ?>
@@ -248,7 +280,6 @@
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</nav>
<?PHP
function error_handling($msg,$type = NULL) {

View File

@@ -6,8 +6,7 @@ require_once('../other/config.php');
require_once('../other/session.php');
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
if ($substridle == 1) {

View File

@@ -6,8 +6,7 @@ require_once('../other/config.php');
require_once('../other/session.php');
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
if ($substridle == 1) {

View File

@@ -6,8 +6,7 @@ require_once('../other/config.php');
require_once('../other/session.php');
if(!isset($_SESSION['tsuid'])) {
$hpclientip = ip2long($_SERVER['REMOTE_ADDR']);
set_session_ts3($hpclientip, $ts['voice'], $mysqlcon, $dbname);
set_session_ts3($ts['voice'], $mysqlcon, $dbname);
}
if ($substridle == 1) {

View File

@@ -1,346 +0,0 @@
<?PHP
session_start();
?>
<!doctype html>
<html>
<head>
<title>TS-N.NET Ranksystem - Webinterface</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="other/style.css.php" />
<link rel="stylesheet" type="text/css" href="jquerylib/jquery.autocomplete.css" />
<script type="text/javascript" src="jquerylib/jquery-1.2.6.pack.js"></script>
<script type='text/javascript' src='jquerylib/jquery.autocomplete.pack.js'></script>
<script type="text/javascript">
function disablediv(div)
{
var objDiv = document.getElementById(div);
objDiv.innerHTML="&nbsp;";
}
window.setTimeout("disablediv('alert')",10000);
function showpwd(fieldid)
{
document.getElementById(fieldid).type = 'text';
}
function hidepwd(fieldid)
{
document.getElementById(fieldid).type = 'password';
}
var toggle = function (number) {
var layers = document.getElementsByClassName('layers');
for(var i = 0; i < layers.length; ++i)
{
if(i == number)
{
layers[i].style.display = 'block';
}
else
{
layers[i].style.display = 'none';
}
}
}
$().ready(function() {
function log(event, data, formatted) {
$("<li>").html( !data ? "No match!" : "Selected: " + formatted).appendTo("#result");
}
function formatItem(row) {
return row[0] + " (<i>uuid: " + row[1] + "</i>)";
}
function formatResult(row) {
return row[0].replace(/(<.+?>)/gi, '');
}
$("#clients").autocomplete('other/search.php', {
width: 420,
scrollHeight: 300,
max: 999,
multiple: true,
matchContains: true,
formatItem: formatItem,
formatResult: formatResult
});
$(":text, textarea").result(log).next().click(function() {
$(this).prev().search();
});
$("#clients").result(function(event, data, formatted) {
var hidden = $(this).parent().next().find(">:input");
hidden.val( (hidden.val() ? hidden.val() + "," : hidden.val()) + data[1]);
});
});
</script>
<?PHP
echo '</head><body>';
$starttime = microtime(true);
require_once('other/config.php');
$alert = "&nbsp;";
if (isset($_POST['changeclients'])) {
$selectedclients = $_POST['selectedclients'];
echo $selectedclients;
echo '<br>';
$selecteduuids = $_POST['selecteduuids'];
echo $selecteduuids;
}
if (isset($_POST['updatets'])) {
$tshost = $_POST['tshost'];
$tsquery = $_POST['tsquery'];
$tsvoice = $_POST['tsvoice'];
$tsuser = $_POST['tsuser'];
$tspass = $_POST['tspass'];
$queryname = $_POST['queryname'];
$queryname2 = $_POST['queryname2'];
$defchid = $_POST['defchid'];
$timezone = $_POST['timezone'];
$slowmode = $_POST['slowmode'];
if ($mysqlcon->exec("UPDATE $dbname.config set tshost='$tshost',tsquery='$tsquery',tsvoice='$tsvoice',tsuser='$tsuser',tspass='$tspass',queryname='$queryname',queryname2='$queryname2',slowmode='$slowmode',defchid='$defchid',timezone='$timezone'") === false) {
$alert = '<span class="wncolor">' . $mysqlcon->errorCode() . '</span><br>';
} else {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".__DIR__."\worker.php restart", 0, false);
} else {
exec("php ".__DIR__."/worker.php restart");
}
$alert = '<span class="sccolor">' . $lang['wisvsuc'] . '</span>';
}
require_once('other/webinterface_list.php');
}
if (isset($_POST['updatecore'])) {
$grouptime = $_POST['grouptime'];
if (isset($_POST['resetbydbchange'])) $resetbydbchange = 1; else $resetbydbchange = 0;
if (isset($_POST['msgtouser'])) $msgtouser = 1; else $msgtouser = 0;
if (isset($_POST['cleanclients'])) $cleanclients = 1; else $cleanclients = 0;
if (isset($_POST['upcheck'])) $upcheck = 1; else $upcheck = 0;
$cleanperiod = $_POST['cleanperiod'];
$uniqueid = $_POST['uniqueid'];
$boost = $_POST['boost'];
$updateinfotime = $_POST['updateinfotime'];
$logpath = addslashes($_POST['logpath']);
if (isset($_POST['substridle'])) $substridle = 1; else $substridle = 0;
$exceptuuid = $_POST['exceptuuid'];
$exceptgroup = $_POST['exceptgroup'];
if ($mysqlcon->exec("UPDATE $dbname.config set grouptime='$grouptime',resetbydbchange='$resetbydbchange',msgtouser='$msgtouser',cleanclients='$cleanclients',cleanperiod='$cleanperiod',upcheck='$upcheck',uniqueid='$uniqueid',updateinfotime='$updateinfotime',substridle='$substridle',exceptuuid='$exceptuuid',exceptgroup='$exceptgroup',boost='$boost',logpath='$logpath'") === false) {
$alert = '<span class="wncolor">' . $mysqlcon->errorCode() . '</span><br>';
} else {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".__DIR__."\worker.php restart", 0, false);
} else {
exec("php ".__DIR__."/worker.php restart");
}
$alert = '<span class="sccolor">' . $lang['wisvsuc'] . '</span>';
}
require_once('other/webinterface_list.php');
}
if (isset($_POST['updatestyle'])) {
$language = $_POST['languagedb'];
$dateformat = $_POST['dateformat'];
if (isset($_POST['showexgrp'])) $showexgrp = 1; else $showexgrp = 0;
if (isset($_POST['showexcld'])) $showexcld = 1; else $showexcld = 0;
if (isset($_POST['showhighest'])) $showhighest = 1; else $showhighest = 0;
if (isset($_POST['showcolrg'])) $showcolrg = 1; else $showcolrg = 0;
if (isset($_POST['showcolcld'])) $showcolcld = 1; else $showcolcld = 0;
if (isset($_POST['showcoluuid'])) $showcoluuid = 1; else $showcoluuid = 0;
if (isset($_POST['showcoldbid'])) $showcoldbid = 1; else $showcoldbid = 0;
if (isset($_POST['showcolls'])) $showcolls = 1; else $showcolls = 0;
if (isset($_POST['showcolot'])) $showcolot = 1; else $showcolot = 0;
if (isset($_POST['showcolit'])) $showcolit = 1; else $showcolit = 0;
if (isset($_POST['showcolat'])) $showcolat = 1; else $showcolat = 0;
if (isset($_POST['showcolas'])) $showcolas = 1; else $showcolas = 0;
if (isset($_POST['showcolnx'])) $showcolnx = 1; else $showcolnx = 0;
if (isset($_POST['showcolsg'])) $showcolsg = 1; else $showcolsg = 0;
$bgcolor = $_POST['bgcolor'];
$hdcolor = $_POST['hdcolor'];
$txcolor = $_POST['txcolor'];
$hvcolor = $_POST['hvcolor'];
$ifcolor = $_POST['ifcolor'];
$wncolor = $_POST['wncolor'];
$sccolor = $_POST['sccolor'];
if (isset($_POST['showgen'])) $showgen = 1; else $showgen = 0;
include('lang.php');
if ($mysqlcon->exec("UPDATE $dbname.config set language='$language',dateformat='$dateformat',showexgrp='$showexgrp',showexcld='$showexcld',showhighest='$showhighest',showcolrg='$showcolrg',showcolcld='$showcolcld',showcoluuid='$showcoluuid',showcoldbid='$showcoldbid',showcolls='$showcolls',showcolot='$showcolot',showcolit='$showcolit',showcolat='$showcolat',showcolas='$showcolas',showcolnx='$showcolnx',showcolsg='$showcolsg',bgcolor='$bgcolor',hdcolor='$hdcolor',txcolor='$txcolor',hvcolor='$hvcolor',ifcolor='$ifcolor',wncolor='$wncolor',sccolor='$sccolor',showgen='$showgen'") === false) {
$alert = '<span class="wncolor">' . $mysqlcon->errorCode() . '</span><br>';
} else {
$alert = '<span class="sccolor">' . $lang['wisvsuc'] . '</span>';
}
require_once('other/webinterface_list.php');
}
if (isset($_POST['selectivclients'])) {
$seluuid = $_POST['selecteduuids'];
$uuidarr = explode(',', $seluuid);
$counttime = $_POST['counttime'];
if (isset($_POST['delclients']) && $seluuid != '' && $counttime == 0) {
require_once('ts3_lib/TeamSpeak3.php');
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $ts['user'] . ":" . $ts['pass'] . "@" . $ts['host'] . ":" . $ts['query'] . "/?server_port=" . $ts['voice']);
try {
$ts3_VirtualServer->selfUpdate(array(
'client_nickname' => $queryname
));
}
catch (Exception $e) {
try {
$ts3_VirtualServer->selfUpdate(array(
'client_nickname' => $queryname2
));
}
catch (Exception $e) {
echo $lang['error'], $e->getCode(), ': ', $e->getMessage();
}
}
foreach ($uuidarr as $uuid) {
if (isset($_POST['delsrvgrp'])) {
$dbremsgrp = $mysqlcon->query("SELECT cldbid,grpid from $dbname.user where uuid='$uuid'");
while ($remsgrp = $dbremsgrp->fetch(PDO::FETCH_ASSOC)) {
if ($remsgrp['grpid'] != 0) {
try {
$ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'], $remsgrp['cldbid']);
}
catch (Exception $e) {
$alert = $alert . '<span class="wncolor">' . sprintf($lang['errremgrp'], $uuid, $remsgrp['grpid']) . $e->getCode() . ': ' . $e->getMessage() . '</span><br>';
}
}
}
}
if ($mysqlcon->exec("DELETE FROM $dbname.user WHERE uuid='$uuid'") === false) {
$alert = $alert . '<span class="wncolor">' . sprintf($lang['errremdb'], $uuid) . $mysqlcon->errorCode() . '</span><br>';
} else {
$alert = $alert . '<span class="sccolor">' . sprintf($lang['sccrmcld'], $uuid) . '</span><br>';
}
}
} elseif ($_POST['delclients'] == "" && $seluuid != '' && $counttime != 0) {
$dtF = new DateTime("@0");
$dtT = new DateTime("@$counttime");
$timecount = $dtF->diff($dtT)->format($timeformat);
foreach ($uuidarr as $uuid) {
if ($mysqlcon->exec("UPDATE $dbname.user SET count='$counttime' WHERE uuid='$uuid'") === false) {
$alert = $alert . '<span class="wncolor">' . sprintf($lang['errupcount'], $timecount, $uuid) . $mysqlcon->errorCode() . '</span><br>';
} else {
$alert = $alert . '<span class="sccolor">' . sprintf($lang['sccupcount'], $uuid, $timecount) . '</span><br>';
}
}
} else {
echo $_POST['delclients'];
$alert = '<span class="wncolor">' . sprintf($lang['errsel'], $seluuid, $_POST['delclients'], $counttime) . '</span>';
}
require_once('other/webinterface_list.php');
}
if (isset($_POST['globalclients'])) {
if(isset($_POST['delcldgrps'])) {
$selectbefore = $mysqlcon->query("SELECT * FROM $dbname.user WHERE grpid!='0'");
$before = $selectbefore->rowCount();
if($mysqlcon->exec("UPDATE $dbname.user SET grpid='0'") && $selectbefore->rowCount() != 0) {
$alert = '<span class="sccolor">' . sprintf($lang['delcldgrpsc'], $before) . '</span>';
} elseif($selectbefore->rowCount() == 0) {
$alert = '<span class="ifcolor">' . sprintf($lang['delcldgrpsc'], $before) . '</span>';
} else {
$alert = '<span class="wncolor">' . sprintf($lang['delcldgrpif'], $selectbefore->errorCode()) . '</span>';
}
} else {
$selectbefore = $mysqlcon->query("SELECT * FROM $dbname.user");
$before = $selectbefore->rowCount();
$cleantime = time() - $_POST['cleantime'];
if (isset($_POST['delsrvgrp'])) {
require_once('ts3_lib/TeamSpeak3.php');
$ts3_VirtualServer = TeamSpeak3::factory("serverquery://" . $ts['user'] . ":" . $ts['pass'] . "@" . $ts['host'] . ":" . $ts['query'] . "/?server_port=" . $ts['voice']);
try {
$ts3_VirtualServer->selfUpdate(array(
'client_nickname' => $queryname
));
}
catch (Exception $e) {
try {
$ts3_VirtualServer->selfUpdate(array(
'client_nickname' => $queryname2
));
}
catch (Exception $e) {
echo $lang['error'], $e->getCode(), ': ', $e->getMessage();
}
}
$dbremsgrp = $mysqlcon->query("SELECT cldbid,grpid from $dbname.user where lastseen<'$cleantime'");
$dbremsgrp = $dbremsgrp->fetchAll();
foreach ($dbremsgrp as $remsgrp) {
if ($remsgrp['grpid'] != 0) {
$ts3_VirtualServer->serverGroupClientDel($remsgrp['grpid'], $remsgrp['cldbid']);
}
}
}
if ($_POST['cleantime'] < 1) {
$dbcount = $mysqlcon->exec("DELETE from $dbname.user");
} else {
$dbcount = $mysqlcon->exec("DELETE from $dbname.user where lastseen<'$cleantime'");
}
$selectafter = $mysqlcon->query("SELECT * from $dbname.user");
$after = $selectafter->rowCount();
$countdel = $before - $after;
if ($countdel == 0) {
$alert = '<span class="ifcolor">' . sprintf($lang['delclientsif'], $countdel) . '</span>';
} else {
$alert = '<span class="sccolor">' . sprintf($lang['delclientssc'], $countdel) . '</span>';
}
}
require_once('other/webinterface_list.php');
}
if (isset($_POST['updatetdbsettings'])) {
$newconfig='<?php
$db[\'type\']="'.$_POST['dbtype'].'";
$db[\'host\']="'.$_POST['dbhost'].'";
$db[\'user\']="'.$_POST['dbuser'].'";
$db[\'pass\']="'.$_POST['dbpass'].'";
$db[\'dbname\']="'.$_POST['dbname'].'";
?>';
$dbserver = $_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname'];
try {
$mysqlcon = new PDO($dbserver, $_POST['dbuser'], $_POST['dbpass']);
$handle=fopen('./other/dbconfig.php','w');
if(!fwrite($handle,$newconfig))
{
$alert = '<span class="wncolor">' . sprintf($lang['widbcfgerr']) . '</span>';
} else {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".__DIR__."\worker.php restart", 0, false);
} else {
exec("php ".__DIR__."/worker.php restart");
}
$alert = '<span class="sccolor">' . sprintf($lang['widbcfgsuc']) . '</span>';
}
fclose($handle);
} catch (PDOException $e) {
$alert = '<span class="wncolor">' . sprintf($lang['widbcfgerr']) . '</span>';
}
require_once('other/webinterface_list.php');
}
if (file_exists('install.php') || file_exists('update_0-02.php') || file_exists('update_0-10.php')) {
echo sprintf($lang['isntwidel'], "<a href=\"webinterface.php\">webinterface.php</a>");
} else {
if (isset($_GET['logout']) == "true") {
session_destroy();
header("location:webinterface.php");
} elseif (isset($_POST['abschicken']) || isset($_SESSION['username'])) {
if (isset($_SESSION['username']) || ($_POST['username'] == $webuser && $_POST['password'] == $webpass)) {
$_SESSION['username'] = $webuser;
set_error_handler(function() { });
$newversion = file_get_contents('http://ts-n.net/ranksystem/version');
restore_error_handler();
if (substr($newversion, 0, 4) != substr($currvers, 0, 4) && $newversion != '') {
$alert = '<a href="http://ts-n.net/ranksystem.php" target="_blank"><span class="ifcolor">Update available!</span></a>';
}
require_once('other/webinterface_list.php');
} else {
$showerrlogin = 1;
require_once('other/webinterface_login.php');
}
} else {
session_destroy();
require_once('other/webinterface_login.php');
}
}
?>

74
webinterface/admin.php Normal file
View File

@@ -0,0 +1,74 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
echo "logout";
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<!-- Page Heading -->
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
Special Functions
</h1>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
The functions (delete clients/ clear Ranksystem/ edit clients online time) will come back with one of the next releases...
</div>
</div>
<div class="row">&nbsp;</div>
</div>
</div>
</div>
</body>
</html>

204
webinterface/bot.php Normal file
View File

@@ -0,0 +1,204 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
function getlog($logpath,$number_lines) {
$lines=array();
if(file_exists($logpath."ranksystem.log")) {
$fp = fopen($logpath."ranksystem.log", "r");
while(!feof($fp)) {
$line = fgets($fp, 4096);
array_push($lines, $line);
if (count($lines)>$number_lines) array_shift($lines);
}
fclose($fp);
} else {
$lines[] = "No log entry found...\n";
$lines[] = "The logfile will be created with next startup.\n";
}
return $lines;
}
$number_lines = 20;
if (isset($_POST['number'])) {
if($_POST['number'] == 20) {
$number_lines = 20;
} elseif($_POST['number'] == 50) {
$number_lines = 50;
} elseif($_POST['number'] == 100) {
$number_lines = 100;
} elseif($_POST['number'] == 200) {
$number_lines = 200;
} elseif($_POST['number'] == 500) {
$number_lines = 500;
} elseif($_POST['number'] == 9999) {
$number_lines = 9999;
} else {
$number_lines = 20;
}
}
if (isset($_POST['logout'])) {
echo "logout";
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
$logoutput = getlog($logpath,$number_lines);
if (isset($_POST['start']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".substr(__DIR__,0,-12)."\worker.php start", 0, false);
} else {
exec("php ".substr(__DIR__,0,-12)."worker.php start");
}
$err_msg = $lang['wibot2'];
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($logpath,$number_lines);
}
if (isset($_POST['stop']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".substr(__DIR__,0,-12)."\worker.php stop", 0, false);
} else {
exec("php ".substr(__DIR__,0,-12)."worker.php stop");
}
$err_msg = $lang['wibot1'];
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($logpath,$number_lines);
}
if (isset($_POST['restart']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
if (substr(php_uname(), 0, 7) == "Windows") {
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".substr(__DIR__,0,-12)."\worker.php restart", 0, false);
} else {
exec("php ".substr(__DIR__,0,-12)."worker.php restart");
}
$err_msg = $lang['wibot3'];
$err_lvl = 1;
usleep(80000);
$logoutput = getlog($logpath,$number_lines);
}
$disabled = '';
if($ts['host'] == NULL || $ts['query'] == NULL || $ts['voice'] == NULL || $ts['user'] == NULL || $ts['pass'] == NULL || $queryname == NULL || $queryname2 == NULL || $grouptime == NULL || $logpath == NULL) {
$disabled = 1;
$err_msg = $lang['wibot9'];
$err_lvl = 2;
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?PHP echo $lang['wibot4']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="start" method="POST">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="start"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fa fa-fw fa-power-off"></i>&nbsp;<?PHP echo $lang['wibot5']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal" name="stop" method="POST">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="stop">
<i class="fa fa-fw fa-close"></i>&nbsp;<?PHP echo $lang['wibot6']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<form class="form-horizontal" name="restart" method="POST">
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="restart"<?PHP if($disabled == 1) echo " disabled"; ?>>
<i class="fa fa-fw fa-refresh"></i>&nbsp;<?PHP echo $lang['wibot7']; ?>
</button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
<div class="row">&nbsp;</div>
<div class="row">
<div class="col-lg-10">
<h4>
<?PHP echo $lang['wibot8']; ?>
</h4>
</div>
<div class="col-lg-2">
<form class="form-horizontal" name="lines" method="POST">
<div class="col-sm-8 pull-right">
<select class="selectpicker show-tick form-control" id="number" name="number" onchange="this.form.submit();">
<?PHP
echo '<option value="20"'; if($number_lines=="20") echo " selected=selected"; echo '>20</option>';
echo '<option value="50"'; if($number_lines=="50") echo " selected=selected"; echo '>50</option>';
echo '<option value="100"'; if($number_lines=="100") echo " selected=selected"; echo '>100</option>';
echo '<option value="200"'; if($number_lines=="200") echo " selected=selected"; echo '>200</option>';
echo '<option value="500"'; if($number_lines=="500") echo " selected=selected"; echo '>500</option>';
echo '<option value="9999"'; if($number_lines=="9999") echo " selected=selected"; echo '>9999</option>';
?>
</select>
</div>
</form>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<pre><?PHP krsort($logoutput); foreach ($logoutput as $line) { echo $line; } ?></pre>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

377
webinterface/core.php Normal file
View File

@@ -0,0 +1,377 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$substridle = $_POST['substridle'];
$exceptuuid = $_POST['exceptuuid'];
$exceptgroup = $_POST['exceptgroup'];
$exceptcid = $_POST['exceptcid'];
$grouptime = $_POST['grouptime'];
$ignoreidle = $_POST['ignoreidle'];
if (isset($_POST['resetbydbchange'])) $resetbydbchange = 1; else $resetbydbchange = 0;
if (isset($_POST['cleanclients'])) $cleanclients = 1; else $cleanclients = 0;
$cleanperiod = $_POST['cleanperiod'];
$boost = $_POST['boost'];
if ($mysqlcon->exec("UPDATE $dbname.config set substridle='$substridle',exceptuuid='$exceptuuid',exceptgroup='$exceptgroup',exceptcid='$exceptcid',grouptime='$grouptime',ignoreidle='$ignoreidle',resetbydbchange='$resetbydbchange',cleanclients='$cleanclients',cleanperiod='$cleanperiod',boost='$boost'") === false) {
$err_msg = print_r($mysqlcon->errorInfo());
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".$lang['wisvres'];
$err_lvl = NULL;
}
$config[0]['grouptime'] = $_POST['grouptime'];
$config[0]['exceptuuid'] = $_POST['exceptuuid'];
$config[0]['exceptgroup'] = $_POST['exceptgroup'];
$config[0]['exceptcid'] = $_POST['exceptcid'];
$config[0]['boost'] = $_POST['boost'];
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header"><?php echo $lang['wihlcfg']; ?></h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wisupidledesc"><?php echo $lang['wisupidle']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="substridle">
<?PHP
echo '<option value="0"'; if($substridle=="0") echo " selected=selected"; echo '>',$lang['wishcolot'],'</option>';
echo '<option value="1"'; if($substridle=="1") echo " selected=selected"; echo '>',$lang['wishcolat'],'</option>';
?>
</select>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexuiddesc"><?php echo $lang['wiexuid']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([A-Za-z0-9\\\/\+]{27}=,)*([A-Za-z0-9\\\/\+]{27}=)$" data-error="Check all unique IDs are correct and your list do not ends with a comma!" rows="1" name="exceptuuid"><?php echo $config[0]['exceptuuid']; ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexgrpdesc"><?php echo $lang['wiexgrp']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]+,)*[0-9]+$" data-error="Only use digits separated with a comma! Also must the first and last value be digit!" rows="1" name="exceptgroup"><?php echo $config[0]['exceptgroup']; ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiexciddesc"><?php echo $lang['wiexcid']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]+,)*[0-9]+$" data-error="Only use digits separated with a comma! Also must the first and last value be digit!" rows="1" name="exceptcid"><?php echo $config[0]['exceptcid']; ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group required-field-block">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wigrptimedesc"><?php echo $lang['wigrptime']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]+=>[0-9]+,)*[0-9]+=>[0-9]+$" data-error="Wrong definition, please look at description for more details. No comma at ending!" rows="5" name="grouptime" required><?php echo $config[0]['grouptime']; ?></textarea>
<div class="required-icon"><div class="text">*</div></div>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
<div class="col-md-6 ">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiignidledesc"><?php echo $lang['wiignidle']; ?></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="ignoreidle" value="<?php echo $ignoreidle; ?>">
<script>
$("input[name='ignoreidle']").TouchSpin({
min: 0,
max: 9223372036854775807,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wichdbiddesc"><?php echo $lang['wichdbid']; ?></label>
<div class="col-lg-8">
<?PHP if ($resetbydbchange == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="resetbydbchange" value="',$resetbydbchange,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="resetbydbchange" value="',$resetbydbchange,'">';
} ?>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#cleancdesc"><?php echo $lang['cleanc']; ?></label>
<div class="col-sm-8">
<?PHP if ($cleanclients == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="cleanclients" value="',$cleanclients,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="cleanclients" value="',$cleanclients,'">';
} ?>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#cleanpdesc"><?php echo $lang['cleanp']; ?></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="cleanperiod" value="<?php echo $cleanperiod; ?>">
<script>
$("input[name='cleanperiod']").TouchSpin({
min: 0,
max: 9223372036854775807,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiboostdesc"><?php echo $lang['wiboost']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([0-9]+=>[1-9][0-9]{0,9}=>[0-9]+,)*[0-9]+=>[1-9][0-9]{0,9}=>[0-9]+$" data-error="Wrong definition, please look at description for more details. No comma at ending! rows="5" name="boost"><?php echo $config[0]['boost']; ?></textarea>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wisupidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wisupidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wisupidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexuiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexgrpdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexgrp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexgrpdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiexciddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiexcid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiexciddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wigrptimedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wigrptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wigrptimedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiignidledesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiignidle']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiignidledesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wichdbiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wichdbid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wichdbiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="cleancdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['cleanc']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['cleancdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="cleanpdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['cleanp']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['cleanpdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiboostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiboost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiboostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
</script>
</body>
</html>

246
webinterface/db.php Normal file
View File

@@ -0,0 +1,246 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$newconfig='<?php
$db[\'type\']="'.$_POST['dbtype'].'";
$db[\'host\']="'.$_POST['dbhost'].'";
$db[\'user\']="'.$_POST['dbuser'].'";
$db[\'pass\']="'.$_POST['dbpass'].'";
$db[\'dbname\']="'.$_POST['dbname'].'";
?>';
$dbserver = $_POST['dbtype'].':host='.$_POST['dbhost'].';dbname='.$_POST['dbname'];
try {
$mysqlcon = new PDO($dbserver, $_POST['dbuser'], $_POST['dbpass']);
$handle=fopen('../other/dbconfig.php','w');
if(!fwrite($handle,$newconfig))
{
$err_msg = sprintf($lang['widbcfgerr']);
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".$lang['wisvres'];
$err_lvl = 0;
}
fclose($handle);
} catch (PDOException $e) {
$err_msg = sprintf($lang['widbcfgerr']);
$err_lvl = 3;
}
$db['type'] = $_POST['dbtype'];
$db['host'] = $_POST['dbhost'];
$dbname = $_POST['dbname'];
$db['user'] = $_POST['dbuser'];
$db['pass'] = $_POST['dbpass'];
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihldb']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbtypedesc"><?php echo $lang['isntwidbtype']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="dbtype" required>
<option disabled value=""> -- select database -- </option>
<?PHP
echo '<option data-subtext="Cubrid" value="cubrid"'; if($db['type']=="cubrid") echo " selected=selected"; echo '>cubrid</option>';
echo '<option data-subtext="FreeTDS / Microsoft SQL Server / Sybase" value="dblib"'; if($db['type']=="dblib") echo " selected=selected"; echo '>dblib</option>';
echo '<option data-subtext="Firebird/Interbase 6" value="firebird"'; if($db['type']=="firebird") echo " selected=selected"; echo '>firebird</option>';
echo '<option data-subtext="IBM DB2" value="ibm"'; if($db['type']=="ibm") echo " selected=selected"; echo '>ibm</option>';
echo '<option data-subtext="IBM Informix Dynamic Server" value="informix"'; if($db['type']=="informix") echo " selected=selected"; echo '>informix</option>';
echo '<option data-subtext="MySQL 3.x/4.x/5.x [recommend]" value="mysql"'; if($db['type']=="mysql") echo " selected=selected"; echo '>mysql</option>';
echo '<option data-subtext="Oracle Call Interface" value="oci"'; if($db['type']=="oci") echo " selected=selected"; echo '>oci</option>';
echo '<option data-subtext="ODBC v3 (IBM DB2, unixODBC und win32 ODBC)" value="odbc"'; if($db['type']=="odbc") echo " selected=selected"; echo '>odbc</option>';
echo '<option data-subtext="PostgreSQL" value="pgsql"'; if($db['type']=="pgsql") echo " selected=selected"; echo '>pgsql</option>';
echo '<option data-subtext="SQLite 3 und SQLite 2" value="sqlite"'; if($db['type']=="sqlite") echo " selected=selected"; echo '>sqlite</option>';
echo '<option data-subtext="Microsoft SQL Server / SQL Azure" value="sqlsrv"'; if($db['type']=="sqlsrv") echo " selected=selected"; echo '>sqlsrv</option>';
echo '<option data-subtext="4D" value="4d"'; if($db['type']=="4d") echo " selected=selected"; echo '>4d</option>';
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbhostdesc"><?php echo $lang['isntwidbhost']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbhost" value="<?php echo $db['host']; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbnamedesc"><?php echo $lang['isntwidbname']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbname" value="<?php echo $dbname; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbusrdesc"><?php echo $lang['isntwidbusr']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="dbuser" value="<?php echo $db['user']; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#isntwidbpassdesc"><?php echo $lang['isntwidbpass']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="password" class="form-control" name="dbpass" value="<?php echo $db['pass']; ?>" data-toggle="password" data-placement="before" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbtypedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbtype']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbtypedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbhostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbhost']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbhostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbpassdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbpass']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbpassdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="isntwidbnamedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['isntwidbname']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['isntwidbnamedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>

133
webinterface/index.php Normal file
View File

@@ -0,0 +1,133 @@
<?PHP
session_start();
require_once('../other/config.php');
function enter_logfile($logpath,$timezone,$loglevel,$logtext) {
$file = $logpath.'ranksystem.log';
if ($loglevel == 1) {
$loglevel = " CRITICAL ";
} elseif ($loglevel == 2) {
$loglevel = " ERROR ";
} elseif ($loglevel == 3) {
$loglevel = " WARNING ";
} elseif ($loglevel == 4) {
$loglevel = " NOTICE ";
} elseif ($loglevel == 5) {
$loglevel = " INFO ";
}
$input = DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u ").$loglevel.$logtext."\n";
$loghandle = fopen($file, 'a');
fwrite($loghandle, $input);
if (filesize($file) > 5242880) {
fwrite($loghandle, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u ")." NOTICE Logfile filesie of 5 MiB reached.. Rotate logfile.\n");
fwrite($loghandle, DateTime::createFromFormat('U.u', number_format(microtime(true), 6, '.', ''))->setTimeZone(new DateTimeZone($timezone))->format("Y-m-d H:i:s.u ")." NOTICE Restart Bot to continue with new log file...\n");
fclose($loghandle);
$file2 = "$file.old";
if (file_exists($file2)) unlink($file2);
rename($file, $file2);
if (substr(php_uname(), 0, 7) == "Windows") {
exec("del /F ".substr(__DIR__,0,-12).'logs/pid');
$WshShell = new COM("WScript.Shell");
$oExec = $WshShell->Run("cmd /C php ".substr(__DIR__,0,-12)."worker.php start", 0, false);
exit;
} else {
exec("rm -f ".substr(__DIR__,0,-12).'logs/pid');
exec("php ".substr(__DIR__,0,-12)."worker.php start");
exit;
}
}
}
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if(($last_access = $mysqlcon->query("SELECT last_access,count_access FROM $dbname.config")) === false) {
$sqlmsg .= print_r($mysqlcon->errorInfo());
}
$last_access = $last_access->fetchAll();
if(($last_access[0]['last_access'] + 1) >= time()) {
$again = $last_access[0]['last_access'] + 2 - time();
$err_msg = sprintf($lang['errlogin2'],$again);
$err_lvl = 3;
} elseif ($last_access[0]['count_access'] >= 10) {
enter_logfile($logpath,$timezone,3,"Much incorrect logins detected on the webinterface. Blocked login for 300 seconds! Last access from IP ".getclientip().".");
$err_msg = $lang['errlogin3'];
$err_lvl = 3;
$bantime = time() + 299;
if($mysqlcon->exec("UPDATE $dbname.config SET last_access='$bantime', count_access='0'") === false) { }
} elseif (isset($_POST['username']) && $_POST['username'] == $webuser && password_verify($_POST['password'], $webpass)) {
$_SESSION['username'] = $webuser;
$_SESSION['password'] = $webpass;
$_SESSION['clientip'] = getclientip();
$_SESSION['newversion'] = $newversion;
if($mysqlcon->exec("UPDATE $dbname.config SET count_access='0'") === false) { }
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/ts.php");
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."/ts.php");
}
exit;
} elseif(isset($_POST['username'])) {
$nowtime = time();
if($mysqlcon->exec("UPDATE $dbname.config SET last_access='$nowtime', count_access = count_access + 1") === false) { }
$err_msg = $lang['errlogin'];
$err_lvl = 3;
}
require_once('nav.php');
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div id="login-overlay" class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title" id="myModalLabel"><?PHP echo $lang['isntwiusrh']; ?></h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-xs-12">
<form id="loginForm" method="POST">
<div class="form-group">
<label for="username" class="control-label"><?PHP echo $lang['user']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<input type="text" class="form-control" name="username" placeholder="" autofocus>
</div>
</div>
<div class="form-group">
<label for="password" class="control-label"><?PHP echo $lang['pass']; ?>:</label>
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
<input type="password" class="form-control" name="password" placeholder="<?PHP echo $lang['pass']; ?>">
</div>
</div>
<br>
<button type="submit" class="btn btn-success btn-block"><?PHP echo $lang['login']; ?></button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

140
webinterface/msg.php Normal file
View File

@@ -0,0 +1,140 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$rankupmsg = addslashes($_POST['rankupmsg']);
if (isset($_POST['msgtouser'])) $msgtouser = 1; else $msgtouser = 0;
if ($mysqlcon->exec("UPDATE $dbname.config set msgtouser='$msgtouser',rankupmsg='$rankupmsg'") === false) {
$err_msg = print_r($mysqlcon->errorInfo());
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".$lang['wisvres'];
$err_lvl = NULL;
}
$rankupmsg = $_POST['rankupmsg'];
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihlmsg']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgusrdesc"><?php echo $lang['wimsgusr']; ?></label>
<div class="col-sm-8">
<?PHP if ($msgtouser == 1) {
echo '<input id="switch-animate" type="checkbox" checked data-size="mini" name="msgtouser" value="',$msgtouser,'">';
} else {
echo '<input id="switch-animate" type="checkbox" data-size="mini" name="msgtouser" value="',$msgtouser,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wimsgmsgdesc"><?php echo $lang['wimsgmsg']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" name="rankupmsg"><?php echo $rankupmsg; ?></textarea>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" name="update" class="btn btn-primary"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wimsgusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wimsgmsgdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wimsgmsg']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wimsgmsgdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>

147
webinterface/nav.php Normal file
View File

@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="version" content="<?PHP echo $currvers; ?>">
<link rel="icon" href="../icons/rs.png">
<title>TS-N.NET Ranksystem</title>
<link href="../bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="../bootstrap/css/custom.css" rel="stylesheet">
<link href="../bootstrap/addons/sb-admin.css" rel="stylesheet">
<link href="../bootstrap/addons/switch-master/bootstrap-switch.min.css" rel="stylesheet">
<link href="../bootstrap/addons/touchspin-master/jquery.bootstrap-touchspin.css" rel="stylesheet">
<link href="../bootstrap/addons/select/bootstrap-select.min.css" rel="stylesheet">
<link href="../bootstrap/addons/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link href="../bootstrap/flag_icon/css/flag-icon.min.css" rel="stylesheet">
<script src="../jquerylib/jquery.js"></script>
<script src="../bootstrap/js/bootstrap.min.js"></script>
<script src="../bootstrap/js/highlight.js"></script>
<script src="../bootstrap/js/main.js"></script>
<script src="../bootstrap/addons/switch-master/bootstrap-switch.min.js"></script>
<script src="../bootstrap/addons/touchspin-master/jquery.bootstrap-touchspin.js"></script>
<script src="../bootstrap/addons/select/bootstrap-select.min.js"></script>
<script src="../bootstrap/addons/show-password/bootstrap-show-password.min.js"></script>
<script src="../bootstrap/addons/validator/validator.min.js"></script>
<script>
$(function() {
$('.required-icon').tooltip({
placement: 'left',
title: 'Required field'
});
});
$(function() {
$('#password').password().on('show.bs.password', function(e) {
$('#eventLog').text('On show event');
$('#methods').prop('checked', true);
}).on('hide.bs.password', function(e) {
$('#eventLog').text('On hide event');
$('#methods').prop('checked', false);
});
$('#methods').click(function() {
$('#password').password('toggle');
});
});
</script>
</head>
<body>
<div id="wrapper">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-header">
<a class="navbar-brand" href="index.php">TSN Ranksystem - Webinterface <?PHP echo $currvers;?></a>
</div>
<?PHP if(basename($_SERVER['SCRIPT_NAME']) == "stats.php") { ?>
<ul class="nav navbar-left top-nav">
<li class="navbar-form navbar-right">
<button onclick="window.location.href='../stats/list_rankup.php?admin=true'; return false;" class="btn btn-primary" name="restart">
<i class="fa fa-fw fa-list"></i>&nbsp;<?PHP echo $lang['wihladm']; ?>
</button>
</li>
</ul>
<?PHP } ?>
<ul class="nav navbar-right top-nav">
<?PHP if(isset($_SESSION['username']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass) { ?>
<li>
<form class="navbar-form navbar-center" method="post">
<div class="form-group">
<button type="submit" name="logout" class="btn btn-primary"><?PHP echo $lang['wilogout']; ?>&nbsp;<span class="glyphicon glyphicon-log-out" aria-hidden="true"></span></button>
</div>
</form>
</li>
<?PHP } ?>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-globe"></i>&nbsp;<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="?lang=ar"><span class="flag-icon flag-icon-arab"></span>&nbsp;&nbsp;AR - العربية</a>
</li>
<li>
<a href="?lang=de"><span class="flag-icon flag-icon-de"></span>&nbsp;&nbsp;DE - Deutsch</a>
</li>
<li>
<a href="?lang=en"><span class="flag-icon flag-icon-us"></span>&nbsp;&nbsp;EN - english</a>
</li>
<li>
<a href="?lang=it"><span class="flag-icon flag-icon-it"></span>&nbsp;&nbsp;IT - italiano</a>
</li>
<li>
<a href="?lang=ro"><span class="flag-icon flag-icon-ro"></span>&nbsp;&nbsp;RO - românesc</a>
</li>
<li>
<a href="?lang=ru"><span class="flag-icon flag-icon-ru"></span>&nbsp;&nbsp;RU - русский</a>
</li>
</ul>
</li>
</ul>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav side-nav">
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "ts.php" ? ' class="active">' : '>'); ?>
<a href="ts.php"><i class="fa fa-fw fa-headphones"></i>&nbsp;<?PHP echo $lang['winav1']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "db.php" ? ' class="active">' : '>'); ?>
<a href="db.php"><i class="fa fa-fw fa-database"></i>&nbsp;<?PHP echo $lang['winav2']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "core.php" ? ' class="active">' : '>'); ?>
<a href="core.php"><i class="fa fa-fw fa-cogs"></i>&nbsp;<?PHP echo $lang['winav3']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "other.php" ? ' class="active">' : '>'); ?>
<a href="other.php"><i class="fa fa-fw fa-wrench"></i>&nbsp;<?PHP echo $lang['winav4']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "msg.php" ? ' class="active">' : '>'); ?>
<a href="msg.php"><i class="fa fa-fw fa-envelope"></i>&nbsp;<?PHP echo $lang['winav5']; ?></a>
</li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "stats.php" ? ' class="active">' : '>'); ?>
<a href="stats.php"><i class="fa fa-fw fa-bar-chart"></i>&nbsp;<?PHP echo $lang['winav6']; ?></a>
</li>
<li class="divider"></li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "admin.php" ? ' class="active">' : '>'); ?>
<a href="admin.php"><i class="fa fa-fw fa-users"></i>&nbsp;<?PHP echo $lang['winav7']; ?></a>
</li>
<li class="divider"></li>
<?PHP echo '<li'.(basename($_SERVER['SCRIPT_NAME']) == "bot.php" ? ' class="active">' : '>'); ?>
<a href="bot.php"><i class="fa fa-fw fa-power-off"></i>&nbsp;<?PHP echo $lang['winav8']; ?></a>
</li>
</ul>
</div>
</nav>
<?PHP
if(isset($_SESSION['newversion']) && version_compare(substr($_SESSION['newversion'], 0, 5), substr($currvers, 0, 5), '>') && $_SESSION['newversion'] != '') {
$err_msg = '<a href="http://ts-n.net/ranksystem.php" target="_blank"><span class="ifcolor">'.$lang['winav9'].'</span></a>'; $err_lvl = 1;
}
if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") {
$host = "<a href=\"https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\')."\">";
$err_msg = sprintf($lang['winav10'], $host,'</a>!<br>', '<br>'); $err_lvl = 2;
}
function error_handling($msg,$type = NULL) {
switch ($type) {
case NULL: echo '<div class="alert alert-success alert-dismissible">'; break;
case 1: echo '<div class="alert alert-info alert-dismissible">'; break;
case 2: echo '<div class="alert alert-warning alert-dismissible">'; break;
case 3: echo '<div class="alert alert-danger alert-dismissible">'; break;
}
echo '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>',$msg,'</div>';
}
?>

299
webinterface/other.php Normal file
View File

@@ -0,0 +1,299 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$timezone = $_POST['timezone'];
$dateformat = $_POST['dateformat'];
$logpath = addslashes($_POST['logpath']);
$language = $_POST['languagedb'];
if (isset($_POST['upcheck'])) $upcheck = 1; else $upcheck = 0;
$updateinfotime = $_POST['updateinfotime'];
$uniqueid = $_POST['uniqueid'];
if ($mysqlcon->exec("UPDATE $dbname.config set timezone='$timezone',dateformat='$dateformat',logpath='$logpath',language='$language',upcheck='$upcheck',updateinfotime='$updateinfotime',uniqueid='$uniqueid'") === false) {
$err_msg = print_r($mysqlcon->errorInfo());
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".$lang['wisvres'];
$err_lvl = NULL;
}
$logpath = $_POST['logpath'];
$config[0]['uniqueid'] = $_POST['uniqueid'];
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihlvs']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" data-toggle="validator" name="update" method="POST">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#witimedesc"><?php echo $lang['witime']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" data-live-search="true" name="timezone">
<?PHP
$timezonearr = DateTimeZone::listIdentifiers();
foreach ($timezonearr as $timez) {
if ($timez == $timezone) {
echo '<option value="'.$timezone,'" selected=selected>',$timezone,'</option>';
} else {
echo '<option value="',$timez,'">',$timez,'</option>';
}
}
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#widaformdesc"><?php echo $lang['widaform']; ?></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="dateformat" value="<?php echo $timeformat; ?>">
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wivlangdesc"><?php echo $lang['wilog']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="logpath" value="<?php echo $logpath; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wivlangdesc"><?php echo $lang['wivlang']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" name="languagedb">
<?PHP
echo '<option data-subtext="العربية" value="ar"'.($language === 'ar' ? ' selected="selected"' : '').'>AR</option>';
echo '<option data-subtext="Deutsch" value="de"'.($language === 'de' ? ' selected="selected"' : '').'>DE</option>';
echo '<option data-subtext="english" value="en"'.($language === 'en' ? ' selected="selected"' : '').'>EN</option>';
echo '<option data-subtext="italiano" value="it"'.($language === 'it' ? ' selected="selected"' : '').'>IT</option>';
echo '<option data-subtext="русский" value="ru"'.($language === 'ru' ? ' selected="selected"' : '').'>RU</option>';
?>
</select>
</div>
</div>
</div>
<div class="col-md-6 ">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiupcheckdesc"><?php echo $lang['wiupcheck']; ?></label>
<div class="col-sm-8">
<?PHP if ($update == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="upcheck" value="',$update,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="upcheck" value="',$update,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiuptimedesc"><?php echo $lang['wiuptime']; ?></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="updateinfotime" value="<?php echo $updateinfotime; ?>">
<script>
$("input[name='updateinfotime']").TouchSpin({
min: 0,
max: 9223372036854775807,
verticalbuttons: true,
prefix: 'Sec.:'
});
</script>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wiupuiddesc"><?php echo $lang['wiupuid']; ?></label>
<div class="col-sm-8">
<textarea class="form-control" data-pattern="^([A-Za-z0-9\\\/\+]{27}=,)*([A-Za-z0-9\\\/\+]{27}=)$" data-error="Check all unique IDs are correct and your list do not ends with a comma!" rows="1" name="uniqueid"><?php echo $config[0]['uniqueid']; ?></textarea>
<div class="help-block with-errors"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" name="update" class="btn btn-primary"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="witimedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['witime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['witimedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="widaformdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['widaform']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['widaformdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wilogdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wilog']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wilogdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wivlangdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wivlang']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wivlangdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiupcheckdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiupcheck']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiupcheckdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiuptimedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiuptime']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiuptimedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wiupuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wiupuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wiupuiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<script>
$('form[data-toggle="validator"]').validator({
custom: {
pattern: function ($el) {
var pattern = new RegExp($el.data('pattern'));
return pattern.test($el.val());
}
},
delay: 100,
errors: {
pattern: "There should be an error in your value, please check all could be right!"
}
});
</script>
</body>
</html>

442
webinterface/stats.php Normal file
View File

@@ -0,0 +1,442 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
if (isset($_POST['showexcld'])) $showexcld = 1; else $showexcld = 0;
if (isset($_POST['showcolrg'])) $showcolrg = 1; else $showcolrg = 0;
if (isset($_POST['showcolcld'])) $showcolcld = 1; else $showcolcld = 0;
if (isset($_POST['showcoluuid'])) $showcoluuid = 1; else $showcoluuid = 0;
if (isset($_POST['showcoldbid'])) $showcoldbid = 1; else $showcoldbid = 0;
if (isset($_POST['showcolls'])) $showcolls = 1; else $showcolls = 0;
if (isset($_POST['showcolot'])) $showcolot = 1; else $showcolot = 0;
if (isset($_POST['showcolit'])) $showcolit = 1; else $showcolit = 0;
if (isset($_POST['showcolat'])) $showcolat = 1; else $showcolat = 0;
if (isset($_POST['showcolas'])) $showcolas = 1; else $showcolas = 0;
if (isset($_POST['showcolnx'])) $showcolnx = 1; else $showcolnx = 0;
if (isset($_POST['showcolsg'])) $showcolsg = 1; else $showcolsg = 0;
if (isset($_POST['showhighest'])) $showhighest = 1; else $showhighest = 0;
if ($mysqlcon->exec("UPDATE $dbname.config set showexcld='$showexcld',showcolrg='$showcolrg',showcolcld='$showcolcld',showcoluuid='$showcoluuid',showcoldbid='$showcoldbid',showcolls='$showcolls',showcolot='$showcolot',showcolit='$showcolit',showcolat='$showcolat',showcolas='$showcolas',showcolnx='$showcolnx',showcolsg='$showcolsg',showhighest='$showhighest'") === false) {
$err_msg = print_r($mysqlcon->errorInfo());
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc'];
$err_lvl = NULL;
}
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihlsty']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishexclddesc"><?php echo $lang['wishexcld']; ?></label>
<div class="col-sm-8">
<?PHP if ($showexcld == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showexcld" value="',$showexcld,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showexcld" value="',$showexcld,'">';
} ?>
</div>
</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolrgdesc"><?php echo $lang['wishcolrg']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolrg == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolrg" value="',$showcolrg,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolrg" value="',$showcolrg,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolclddesc"><?php echo $lang['wishcolcld']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolcld == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolcld" value="',$showcolcld,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolcld" value="',$showcolcld,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoluuiddesc"><?php echo $lang['wishcoluuid']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcoluuid == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcoluuid" value="',$showcoluuid,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcoluuid" value="',$showcoluuid,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcoldbiddesc"><?php echo $lang['wishcoldbid']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcoldbid == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcoldbid" value="',$showcoldbid,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcoldbid" value="',$showcoldbid,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcollsdesc"><?php echo $lang['wishcolls']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolls == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolls" value="',$showcolls,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolls" value="',$showcolls,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolotdesc"><?php echo $lang['wishcolot']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolot == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolot" value="',$showcolot,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolot" value="',$showcolot,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolitdesc"><?php echo $lang['wishcolit']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolit == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolit" value="',$showcolit,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolit" value="',$showcolit,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolatdesc"><?php echo $lang['wishcolat']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolat == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolat" value="',$showcolat,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolat" value="',$showcolat,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolasdesc"><?php echo $lang['wishcolas']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolas == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolas" value="',$showcolas,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolas" value="',$showcolas,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolnxdesc"><?php echo $lang['wishcolnx']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolnx == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolnx" value="',$showcolnx,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolnx" value="',$showcolnx,'">';
} ?>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishcolsgdesc"><?php echo $lang['wishcolsg']; ?></label>
<div class="col-sm-8">
<?PHP if ($showcolsg == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showcolsg" value="',$showcolsg,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showcolsg" value="',$showcolsg,'">';
} ?>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wishhiclddesc"><?php echo $lang['wishhicld']; ?></label>
<div class="col-sm-8">
<?PHP if ($showhighest == 1) {
echo '<input class="switch-animate" type="checkbox" checked data-size="mini" name="showhighest" value="',$showhighest,'">';
} else {
echo '<input class="switch-animate" type="checkbox" data-size="mini" name="showhighest" value="',$showhighest,'">';
} ?>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" name="update" class="btn btn-primary"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wishexclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishexcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishexclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolrgdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolrg']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolrgdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolcld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcoluuiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcoluuid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcoluuiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcoldbiddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcoldbid']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcoldbiddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcollsdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolls']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcollsdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolotdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolot']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolotdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolitdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolit']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolitdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolatdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolat']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolatdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolasdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolas']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolasdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolnxdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolnx']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolnxdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishcolsgdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishcolsg']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishcolsgdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wishhiclddesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wishhicld']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wishhiclddesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>

350
webinterface/ts.php Normal file
View File

@@ -0,0 +1,350 @@
<?PHP
session_start();
require_once('../other/config.php');
function getclientip() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_X_FORWARDED']))
return $_SERVER['HTTP_X_FORWARDED'];
elseif(!empty($_SERVER['HTTP_FORWARDED_FOR']))
return $_SERVER['HTTP_FORWARDED_FOR'];
elseif(!empty($_SERVER['HTTP_FORWARDED']))
return $_SERVER['HTTP_FORWARDED'];
elseif(!empty($_SERVER['REMOTE_ADDR']))
return $_SERVER['REMOTE_ADDR'];
else
return false;
}
if (isset($_POST['logout'])) {
$_SESSION = array();
session_destroy();
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
if (!isset($_SESSION['username']) || $_SESSION['username'] != $webuser || $_SESSION['password'] != $webpass || $_SESSION['clientip'] != getclientip()) {
if($_SERVER['HTTPS'] == "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
} else {
header("Location: http://".$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['PHP_SELF']), '/\\'));
}
exit;
}
require_once('nav.php');
if (isset($_POST['update']) && $_SESSION['username'] == $webuser && $_SESSION['password'] == $webpass && $_SESSION['clientip'] == getclientip()) {
$tshost = $_POST['tshost'];
$tsquery = $_POST['tsquery'];
$tsvoice = $_POST['tsvoice'];
$tsuser = $_POST['tsuser'];
$tspass = $_POST['tspass'];
$queryname = $_POST['queryname'];
$queryname2 = $_POST['queryname2'];
$defchid = $_POST['defchid'];
$slowmode = $_POST['slowmode'];
if ($mysqlcon->exec("UPDATE $dbname.config set tshost='$tshost',tsquery='$tsquery',tsvoice='$tsvoice',tsuser='$tsuser',tspass='$tspass',queryname='$queryname',queryname2='$queryname2',slowmode='$slowmode',defchid='$defchid'") === false) {
$err_msg = print_r($mysqlcon->errorInfo());
$err_lvl = 3;
} else {
$err_msg = $lang['wisvsuc']." ".$lang['wisvres'];
$err_lvl = NULL;
}
$ts['host'] = $_POST['tshost'];
$ts['query'] = $_POST['tsquery'];
$ts['voice'] = $_POST['tsvoice'];
$ts['user'] = $_POST['tsuser'];
$ts['pass'] = $_POST['tspass'];
}
?>
<div id="page-wrapper">
<?PHP if(isset($err_msg)) error_handling($err_msg, $err_lvl); ?>
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">
<?php echo $lang['wihlts']; ?>
</h1>
</div>
</div>
<form class="form-horizontal" name="update" method="POST">
<div class="row">
<div class="col-md-6">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3hostdesc"><?php echo $lang['wits3host']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="tshost" value="<?php echo $ts['host']; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querydesc"><?php echo $lang['wits3query']; ?></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control" name="tsquery" value="<?php echo $ts['query']; ?>" required>
<script>
$("input[name='tsquery']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'TCP:'
});
</script>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3voicedesc"><?php echo $lang['wits3voice']; ?></label>
<div class="col-sm-8 required-field-block-spin">
<input type="text" class="form-control" name="tsvoice" value="<?php echo $ts['voice']; ?>" required>
<script>
$("input[name='tsvoice']").TouchSpin({
min: 0,
max: 65535,
verticalbuttons: true,
prefix: 'UDP:'
});
</script>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querusrdesc"><?php echo $lang['wits3querusr']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="tsuser" value="<?php echo $ts['user']; ?>" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3querpwdesc"><?php echo $lang['wits3querpw']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="password" class="form-control" name="tspass" id="tspass" value="<?php echo $ts['pass']; ?>" data-toggle="password" data-placement="before" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6 ">
<div class="panel panel-default">
<div class="panel-body">
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3qnmdesc"><?php echo $lang['wits3qnm']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="queryname" value="<?php echo $queryname; ?>" maxlength="30" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3qnm2desc"><?php echo $lang['wits3qnm2']; ?></label>
<div class="col-sm-8 required-field-block">
<input type="text" class="form-control" name="queryname2" value="<?php echo $queryname2; ?>" maxlength="30" required>
<div class="required-icon"><div class="text">*</div></div>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3dchdesc"><?php echo $lang['wits3dch']; ?></label>
<div class="col-sm-8">
<input type="text" class="form-control" name="defchid" value="<?php echo $defchid; ?>">
<script>
$("input[name='defchid']").TouchSpin({
min: 0,
max: 9223372036854775807,
verticalbuttons: true,
prefix: 'ID:'
});
</script>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="form-group">
<label class="col-sm-4 control-label" data-toggle="modal" data-target="#wits3smdesc"><?php echo $lang['wits3sm']; ?></label>
<div class="col-sm-8">
<select class="selectpicker show-tick form-control" id="basic" name="slowmode">
<?PHP
echo '<option data-subtext="[recommended]" value="0"'; if($slowmode=="0") echo ' selected="selected"'; echo '>Realtime (deactivated)</option>';
echo '<option data-divider="true">&nbsp;</option>';
echo '<option data-subtext="(0,2 seconds)" value="200000"'; if($slowmode=="200000") echo ' selected="selected"'; echo '>Low delay</option>';
echo '<option data-subtext="(0,5 seconds)" value="500000"'; if($slowmode=="500000") echo ' selected="selected"'; echo '>Middle delay</option>';
echo '<option data-subtext="(1,0 seconds)" value="1000000"'; if($slowmode=="1000000") echo ' selected="selected"'; echo '>High delay</option>';
?>
</select>
</div>
</div>
</div>
</div>
<div class="row">&nbsp;</div>
<div class="row">
<div class="text-center">
<button type="submit" class="btn btn-primary" name="update"><?php echo $lang['wisvconf']; ?></button>
</div>
</div>
<div class="row">&nbsp;</div>
</form>
</div>
</div>
</div>
<div class="modal fade" id="wits3hostdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3host']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3hostdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querydesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3query']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querydesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3voicedesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3voice']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3voicedesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querusrdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querusr']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querusrdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3querpwdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3querpw']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3querpwdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3qnmdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3qnm']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3qnmdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3qnm2desc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3qnm2']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3qnm2desc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3dchdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3dch']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3dchdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="wits3smdesc" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title"><?php echo $lang['wits3sm']; ?></h4>
</div>
<div class="modal-body">
<?php echo $lang['wits3smdesc']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal"><?PHP echo $lang['stnv0002']; ?></button>
</div>
</div>
</div>
</div>
</body>
</html>