Merge branch '2.4' of github.com:MISP/MISP into galaxyMatrixImprovements

pull/4635/head
mokaddem 2019-06-11 15:56:10 +02:00
commit 52ae153c0e
81 changed files with 4482 additions and 1181 deletions

View File

@ -24,11 +24,11 @@
# 1/ For other Debian based Linux distributions, download script and run as **unprivileged** user |
#-------------------------------------------------------------------------------------------------|
#
# The following installs only MISP-core:
# $ curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s -- -c
# The following installs only MISP Core:
# $ wget --no-cache -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh ; bash /tmp/INSTALL.sh -c
#
# This will install MISP Core and misp-modules (recommended)
# $ curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s -- -c -M
# This will install MISP Core and misp-modules
# $ wget --no-cache -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh ; bash /tmp/INSTALL.sh -c -M
#
#
#-------------------------------------------------------|
@ -36,7 +36,7 @@
#-------------------------------------------------------|
#
# To install MISP on Kali copy paste the following to your r00t shell:
# # wget -O /tmp/misp-kali.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh && bash /tmp/misp-kali.sh
# # wget --no-cache -O /tmp/misp-kali.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh && bash /tmp/misp-kali.sh
# /!\ Please read the installer script before randomly doing the above.
# The script is tested on a plain vanilla Kali Linux Boot CD and installs quite a few dependencies.
#
@ -71,7 +71,7 @@ MISPvars () {
debug "Setting generic ${LBLUE}MISP${NC} variables shared by all flavours" 2> /dev/null
# Local non-root MISP user
MISP_USER='misp'
MISP_PASSWORD='Password1234'
MISP_PASSWORD="$(openssl rand -hex 32)"
# The web server user
# RHEL/CentOS
@ -123,7 +123,7 @@ MISPvars () {
GPG_COMMENT='WARNING: MISP AutoGenerated Key consider this Key VOID!'
GPG_EMAIL_ADDRESS='admin@admin.test'
GPG_KEY_LENGTH='2048'
GPG_PASSPHRASE='Password1234'
GPG_PASSPHRASE="$(openssl rand -hex 32)"
# debug alias to make sure people are not confused when blindly copy pasting blobs of code
alias debug="echo -e"
@ -268,6 +268,28 @@ checkFlavour () {
fi
}
checkInstaller () {
# TODO: Implement $FLAVOUR checks and install depending on the platform we are on
if [[ $(which shasum > /dev/null 2>&1 ; echo $?) != 0 ]]; then
sudo apt install libdigest-sha-perl -qyy
fi
# SHAsums to be computed, not the -- notatiation is for ease of use with rhash
SHA_SUMS="--sha1 --sha256 --sha384 --sha512"
for sum in $(echo ${SHA_SUMS} |sed 's/--sha//g'); do
/usr/bin/wget --no-cache -q -O /tmp/INSTALL.sh.sha${sum} https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh.sha${sum}
INSTsum=$(shasum -a ${sum} ${0} | cut -f1 -d\ )
chsum=$(cat /tmp/INSTALL.sh.sha${sum} | cut -f1 -d\ )
if [[ "${chsum}" == "${INSTsum}" ]]; then
echo "sha${sum} matches"
else
echo "sha${sum}: ${chsum} does not match the installer sum of: ${INSTsum}"
echo "Delete installer, re-download and please run again."
exit 1
fi
done
}
# Extract manufacturer
checkManufacturer () {
if [ -z $(which dmidecode) ]; then
@ -502,7 +524,7 @@ setBaseURL () {
CONN=$(ip -br -o -4 a |grep UP |head -1 |tr -d "UP")
IFACE=`echo $CONN |awk {'print $1'}`
IP=`echo $CONN |awk {'print $2'}| cut -f1 -d/`
if [[ $(checkManufacturer) != "innotek GmbH" ]]; then
if [[ "$(checkManufacturer)" != "innotek GmbH" ]] && [[ "$(checkManufacturer)" != "VMware, Inc." ]]; then
debug "We guess that this is a physical machine and cannot possibly guess what the MISP_BASEURL might be."
if [[ "$UNATTENDED" != "1" ]]; then
echo "You can now enter your own MISP_BASEURL, if you wish to NOT do that, the MISP_BASEURL will be empty, which will work, but ideally you configure it afterwards."
@ -890,6 +912,8 @@ theEnd () {
echo "User: ${MISP_USER}"
echo "Password: ${MISP_PASSWORD} # Or the password you used of your custom user"
space
echo "GnuPG Passphrase is: ${GPG_PASSPHRASE}"
space
echo "To enable outgoing mails via postfix set a permissive SMTP server for the domains you want to contact:"
echo
echo "sudo postconf -e 'relayhost = example.com'"
@ -1019,15 +1043,21 @@ installDepsPhp70 () {
prepareDB () {
if [[ ! -e /var/lib/mysql/misp/users.ibd ]]; then
debug "Setting up database"
# FIXME: If user 'misp' exists, and has a different password, the below WILL fail.
# Add your credentials if needed, if sudo has NOPASS, comment out the relevant lines
pw=$MISP_PASSWORD
if [[ "${PACKER}" == "1" ]]; then
pw="Password1234"
else
pw=${MISP_PASSWORD}
fi
expect -f - <<-EOF
set timeout 10
spawn sudo -k mysql_secure_installation
expect "*?assword*"
send -- "$pw\r"
send -- "${pw}\r"
expect "Enter current password for root (enter for none):"
send -- "\r"
expect "Set root password?"
@ -1049,19 +1079,25 @@ EOF
sudo apt-get purge -y expect ; sudo apt autoremove -qy
fi
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE DATABASE ${DBNAME};"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE USER '${DBUSER_MISP}'@'localhost' IDENTIFIED BY '${DBPASSWORD_MISP}';"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* to ${DBNAME}@localhost;"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT ALL PRIVILEGES on ${DBNAME}.* to '${DBUSER_MISP}'@'localhost';"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "FLUSH PRIVILEGES;"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "CREATE DATABASE ${DBNAME};"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "CREATE USER '${DBUSER_MISP}'@'localhost' IDENTIFIED BY '${DBPASSWORD_MISP}';"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "GRANT USAGE ON *.* to ${DBUSER_MISP}@localhost;"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "GRANT ALL PRIVILEGES on ${DBNAME}.* to '${DBUSER_MISP}'@'localhost';"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "FLUSH PRIVILEGES;"
# Import the empty MISP database from MYSQL.sql
$SUDO_WWW cat ${PATH_TO_MISP}/INSTALL/MYSQL.sql | mysql -u ${DBUSER_MISP} -p${DBPASSWORD_MISP} ${DBNAME}
${SUDO_WWW} cat ${PATH_TO_MISP}/INSTALL/MYSQL.sql | mysql -u ${DBUSER_MISP} -p${DBPASSWORD_MISP} ${DBNAME}
}
apacheConfig () {
debug "Generating Apache config"
sudo cp ${PATH_TO_MISP}/INSTALL/apache.24.misp.ssl /etc/apache2/sites-available/misp-ssl.conf
if [[ ! -z ${MISP_BASEURL} ]] && [[ "$(echo $MISP_BASEURL|cut -f 1 -d :)" == "http" || "$(echo $MISP_BASEURL|cut -f 1 -d :)" == "https" ]]; then
echo "Potentially replacing misp.local with $MISP_BASEURL in misp-ssl.conf"
fi
# If a valid SSL certificate is not already created for the server,
# create a self-signed certificate:
sudo openssl req -newkey rsa:4096 -days 365 -nodes -x509 \
@ -1232,6 +1268,9 @@ coreCAKE () {
# The default install is Python >=3.6 in a virtualenv, setting accordingly
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "MISP.python_bin" "${PATH_TO_MISP}/venv/bin/python"
# Set default role
$SUDO_WWW $RUN_PHP -- $CAKE setDefaultRole 3
# Tune global time outs
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "Session.autoRegenerate" 0
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "Session.timeout" 600
@ -1344,10 +1383,9 @@ coreCAKE () {
updateGOWNT () {
# AUTH_KEY Place holder in case we need to **curl** somehing in the future
#
# AUTH_KEY=$(mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e "SELECT authkey FROM users;" | tail -1)
# RHEL/CentOS
# AUTH_KEY=$(scl enable rh-mariadb102 "mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e 'SELECT authkey FROM users;' | tail -1")
#
$SUDO_WWW $RUN_MYSQL -- mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e "SELECT authkey FROM users;" | tail -1 > /tmp/auth.key
AUTH_KEY=$(cat /tmp/auth.key)
rm /tmp/auth.key
debug "Updating Galaxies, ObjectTemplates, Warninglists, Noticelists and Templates"
# Update the galaxies…
@ -1399,6 +1437,7 @@ backgroundWorkers () {
debug "Setting up background workers"
# To make the background workers start on boot
sudo chmod +x $PATH_TO_MISP/app/Console/worker/start.sh
if [ ! -e /etc/rc.local ]
then
echo '#!/bin/sh -e' | sudo tee -a /etc/rc.local
@ -1406,14 +1445,28 @@ backgroundWorkers () {
sudo chmod u+x /etc/rc.local
fi
# Start the workers
$SUDO_WWW bash $PATH_TO_MISP/app/Console/worker/start.sh
echo "[Unit]
Description=MISP background workers
After=network.target
[Service]
Type=forking
User=${WWW_USER}
Group=${WWW_USER}
ExecStart=${PATH_TO_MISP}/app/Console/worker/start.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target" | sudo tee /etc/systemd/system/misp-workers.service
sudo systemctl daemon-reload
sudo systemctl enable --now misp-workers
# Add the following lines before the last line (exit 0). Make sure that you replace www-data with your apache user:
sudo sed -i -e '$i \echo never > /sys/kernel/mm/transparent_hugepage/enabled\n' /etc/rc.local
sudo sed -i -e '$i \echo 1024 > /proc/sys/net/core/somaxconn\n' /etc/rc.local
sudo sed -i -e '$i \sysctl vm.overcommit_memory=1\n' /etc/rc.local
sudo sed -i -e '$i \sudo -u www-data bash ${PATH_TO_MISP}/app/Console/worker/start.sh > /tmp/worker_start_rc.local.log\n' /etc/rc.local
}
# Main MISP Modules install function
@ -2102,7 +2155,7 @@ installMISPonKali () {
expect eof" | expect -f -
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE DATABASE $DBNAME;"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* TO $DBNAME@localhost IDENTIFIED BY '$DBPASSWORD_MISP';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* TO $DBUSER_MISP@localhost IDENTIFIED BY '$DBPASSWORD_MISP';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT ALL PRIVILEGES ON $DBNAME.* TO '$DBUSER_MISP'@'localhost';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "FLUSH PRIVILEGES;"
@ -2211,6 +2264,9 @@ if [[ "$0" == "./INSTALL.tpl.sh" || "$(echo $0 |grep -o -e 'INSTALL.tpl.sh')" ==
generateInstaller
fi
debug "Checking if we are uptodate and checksums match"
checkInstaller
space
debug "Setting MISP variables"
MISPvars

View File

@ -1,5 +1,5 @@
; Generated by RHash v1.3.8 on 2019-05-13 at 12:39.27
; Generated by RHash v1.3.8 on 2019-05-30 at 14:36.25
; Written by Kravchenko Aleksey (Akademgorodok) - http://rhash.sf.net/
;
; 92095 12:39.27 2019-05-13 INSTALL.sh
INSTALL.sh 9D2AEB7536F7E08CCB2EED394568342ABBC8565B 17F8C85181E40081ACFA3A530C2B804855A984B65BCFF08C640283D9EADEB8B4 6F6E15CBD9E005C216422D197AC1A307EDCEB76B5D91C878E450BCC5177448E17CD34778E40ED5F0C5DD1B9FC528AD1E D00EB5FBF6E002C9ABC8C24AF962C77CD4801A0A5504273B1377F63FC24A838D408EE01FE3771C914A0368B54B3D43DA77F03134CADDF61D5E0DA24DF2909AFF
; 93871 14:36.25 2019-05-30 INSTALL.sh
INSTALL.sh DE23B5D224757A8AB2941D8E15D73F10872D5106 ABEE81992478478406197EEC1891FA7CBDC5B32575447DD6865511B1DE48EC6F D7B9CA78779343C0CD47C9184DCA17DEFA24FA1B6BB35441F574AC40ED5A5AD68738BA91676E528AFC2488B44EC935C6 1FFDD293EF9FD53F80813B33839187ECF00B68FDDECA11327508ACABB99B45F45017CFF4AF2B70CF82D27B4AEEB75C34434B3AA00AD52D3AFC8405E77B8CF348

View File

@ -1 +1 @@
9d2aeb7536f7e08ccb2eed394568342abbc8565b INSTALL.sh
de23b5d224757a8ab2941d8e15d73f10872d5106 INSTALL.sh

View File

@ -1 +1 @@
17f8c85181e40081acfa3a530c2b804855a984b65bcff08c640283d9eadeb8b4 INSTALL.sh
abee81992478478406197eec1891fa7cbdc5b32575447dd6865511b1de48ec6f INSTALL.sh

View File

@ -1 +1 @@
6f6e15cbd9e005c216422d197ac1a307edceb76b5d91c878e450bcc5177448e17cd34778e40ed5f0c5dd1b9fc528ad1e INSTALL.sh
d7b9ca78779343c0cd47c9184dca17defa24fa1b6bb35441f574ac40ed5a5ad68738ba91676e528afc2488b44ec935c6 INSTALL.sh

View File

@ -1 +1 @@
d00eb5fbf6e002c9abc8c24af962c77cd4801a0a5504273b1377f63fc24a838d408ee01fe3771c914a0368b54b3d43da77f03134caddf61d5e0da24df2909aff INSTALL.sh
1ffdd293ef9fd53f80813b33839187ecf00b68fddeca11327508acabb99b45f45017cff4af2b70cf82d27b4aeeb75c34434b3aa00ad52d3afc8405e77b8cf348 INSTALL.sh

View File

@ -24,11 +24,11 @@
# 1/ For other Debian based Linux distributions, download script and run as **unprivileged** user |
#-------------------------------------------------------------------------------------------------|
#
# The following installs only MISP-core:
# $ curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s -- -c
# The following installs only MISP Core:
# $ wget --no-cache -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh ; bash /tmp/INSTALL.sh -c
#
# This will install MISP Core and misp-modules (recommended)
# $ curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s -- -c -M
# This will install MISP Core and misp-modules
# $ wget --no-cache -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh ; bash /tmp/INSTALL.sh -c -M
#
#
#-------------------------------------------------------|
@ -36,7 +36,7 @@
#-------------------------------------------------------|
#
# To install MISP on Kali copy paste the following to your r00t shell:
# # wget -O /tmp/misp-kali.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh && bash /tmp/misp-kali.sh
# # wget --no-cache -O /tmp/misp-kali.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh && bash /tmp/misp-kali.sh
# /!\ Please read the installer script before randomly doing the above.
# The script is tested on a plain vanilla Kali Linux Boot CD and installs quite a few dependencies.
#
@ -507,7 +507,7 @@ installMISPonKali () {
expect eof" | expect -f -
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE DATABASE $DBNAME;"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* TO $DBNAME@localhost IDENTIFIED BY '$DBPASSWORD_MISP';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* TO $DBUSER_MISP@localhost IDENTIFIED BY '$DBPASSWORD_MISP';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT ALL PRIVILEGES ON $DBNAME.* TO '$DBUSER_MISP'@'localhost';"
mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "FLUSH PRIVILEGES;"
@ -616,6 +616,9 @@ if [[ "$0" == "./INSTALL.tpl.sh" || "$(echo $0 |grep -o -e 'INSTALL.tpl.sh')" ==
generateInstaller
fi
debug "Checking if we are uptodate and checksums match"
checkInstaller
space
debug "Setting MISP variables"
MISPvars

View File

@ -1269,13 +1269,13 @@ INSERT INTO `roles` (`id`, `name`, `created`, `modified`, `perm_add`, `perm_modi
VALUES (2, 'Org Admin', NOW(), NOW(), 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0);
INSERT INTO `roles` (`id`, `name`, `created`, `modified`, `perm_add`, `perm_modify`, `perm_modify_org`, `perm_publish`, `perm_publish_zmq`, `perm_publish_kafka`, `perm_sync`, `perm_admin`, `perm_audit`, `perm_full`, `perm_auth`, `perm_regexp_access`, `perm_tagger`, `perm_site_admin`, `perm_template`, `perm_sharing_group`, `perm_tag_editor`, `perm_delegate`, `perm_sighting`, `perm_object_template`, `default_role`)
VALUES (3, 'User', NOW(), NOW(), 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1);
VALUES (3, 'User', NOW(), NOW(), 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1);
INSERT INTO `roles` (`id`, `name`, `created`, `modified`, `perm_add`, `perm_modify`, `perm_modify_org`, `perm_publish`, `perm_publish_zmq`, `perm_publish_kafka`, `perm_sync`, `perm_admin`, `perm_audit`, `perm_full`, `perm_auth`, `perm_regexp_access`, `perm_tagger`, `perm_site_admin`, `perm_template`, `perm_sharing_group`, `perm_tag_editor`, `perm_delegate`, `perm_sighting`, `perm_object_template`, `default_role`)
VALUES (4, 'Publisher', NOW(), NOW(), 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0);
VALUES (4, 'Publisher', NOW(), NOW(), 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0);
INSERT INTO `roles` (`id`, `name`, `created`, `modified`, `perm_add`, `perm_modify`, `perm_modify_org`, `perm_publish`, `perm_publish_zmq`, `perm_publish_kafka`, `perm_sync`, `perm_admin`, `perm_audit`, `perm_full`, `perm_auth`, `perm_regexp_access`, `perm_tagger`, `perm_site_admin`, `perm_template`, `perm_sharing_group`, `perm_tag_editor`, `perm_delegate`, `perm_sighting`, `perm_object_template`, `default_role`)
VALUES (5, 'Sync user', NOW(), NOW(), 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0);
VALUES (5, 'Sync user', NOW(), NOW(), 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0);
INSERT INTO `roles` (`id`, `name`, `created`, `modified`, `perm_add`, `perm_modify`, `perm_modify_org`, `perm_publish`, `perm_publish_zmq`, `perm_publish_kafka`, `perm_sync`, `perm_admin`, `perm_audit`, `perm_full`, `perm_auth`, `perm_regexp_access`, `perm_tagger`, `perm_site_admin`, `perm_template`, `perm_sharing_group`, `perm_tag_editor`, `perm_delegate`, `perm_sighting`, `perm_object_template`, `default_role`)
VALUES (6, 'Read Only', NOW(), NOW(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

2
PyMISP

@ -1 +1 @@
Subproject commit e8bba395bc67bf56e41ddd022ebae670c5b0d64b
Subproject commit 583fb6592495ea358aad47a8a1ec92d43c13348a

View File

@ -1 +1 @@
{"major":2, "minor":4, "hotfix":106}
{"major":2, "minor":4, "hotfix":108}

View File

@ -468,7 +468,10 @@ class AdminShell extends AppShell
$logs = $this->Log->find('all', array(
'conditions' => array(
'action' => 'update_database',
'title LIKE ' => 'Successfuly executed the SQL query for %'
'title LIKE ' => array(
'Successfuly executed the SQL query for %',
'Issues executing the SQL query for %'
)
),
'order' => 'id DESC'
));

View File

@ -46,10 +46,11 @@ class AppController extends Controller
public $helpers = array('Utility', 'OrgImg', 'FontAwesome');
private $__queryVersion = '69';
private $__queryVersion = '73';
public $pyMispVersion = '2.4.106';
public $phpmin = '7.0';
public $phprec = '7.2';
public $isApiAuthed = false;
public $baseurl = '';
public $sql_dump = false;
@ -251,6 +252,7 @@ class AppController extends Controller
}
$this->Session->renew();
$this->Session->write(AuthComponent::$sessionKey, $user['User']);
$this->isApiAuthed = true;
} else {
// User not authenticated correctly
// reset the session information
@ -444,6 +446,28 @@ class AppController extends Controller
$this->set('isAclZmq', isset($role['perm_publish_zmq']) ? $role['perm_publish_zmq'] : false);
$this->set('isAclKafka', isset($role['perm_publish_kafka']) ? $role['perm_publish_kafka'] : false);
$this->userRole = $role;
if (Configure::read('MISP.log_paranoid')) {
$this->Log = ClassRegistry::init('Log');
$this->Log->create();
$change = 'HTTP method: ' . $_SERVER['REQUEST_METHOD'] . PHP_EOL . 'Target: ' . $this->here;
if (($this->request->is('post') || $this->request->is('put')) && !empty(Configure::read('MISP.log_paranoid_include_post_body'))) {
$payload = $this->request->data;
if (!empty($payload['_Token'])) {
unset($payload['_Token']);
}
$change .= PHP_EOL . 'Request body: ' . json_encode($payload);
}
$log = array(
'org' => $this->Auth->user('Organisation')['name'],
'model' => 'User',
'model_id' => $this->Auth->user('id'),
'email' => $this->Auth->user('email'),
'action' => 'request',
'title' => 'Paranoid log entry',
'change' => $change,
);
$this->Log->save($log);
}
} else {
$this->set('me', false);
}
@ -480,6 +504,9 @@ class AppController extends Controller
$this->Log = ClassRegistry::init('Log');
echo json_encode($this->Log->getDataSource()->getLog(false, false), JSON_PRETTY_PRINT);
}
if ($this->isApiAuthed && $this->_isRest()) {
session_destroy();
}
}
public function queryACL($debugType='findMissingFunctionNames', $content = false)

View File

@ -2005,7 +2005,7 @@ class AttributesController extends AppController
'value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp',
'timestamp', 'enforceWarninglist', 'to_ids', 'deleted', 'includeEventUuid', 'event_timestamp', 'threat_level_id', 'includeEventTags',
'includeProposals', 'returnFormat', 'published', 'limit', 'page', 'requested_attributes', 'includeContext', 'headerless',
'includeWarninglistHits', 'attackGalaxy'
'includeWarninglistHits', 'attackGalaxy', 'object_relation'
);
$filterData = array(
'request' => $this->request,

View File

@ -96,6 +96,7 @@ class ACLComponent extends Component
'create_dummy_event' => array(),
'create_massive_dummy_events' => array(),
'csv' => array('*'),
'cullEmptyEvents' => array(),
'delegation_index' => array('*'),
'delete' => array('perm_add'),
'deleteNode' => array('*'),
@ -327,6 +328,7 @@ class ACLComponent extends Component
'add' => array(),
'cache' => array('perm_site_admin'),
'checkout' => array(),
'createSync' => array('perm_sync'),
'delete' => array(),
'deleteFile' => array(),
'edit' => array(),
@ -339,6 +341,7 @@ class ACLComponent extends Component
'getSubmodulesStatus' => array('perm_site_admin'),
'getSubmoduleQuickUpdateForm' => array('perm_site_admin'),
'getVersion' => array('*'),
'import' => ('perm_site_admin'),
'index' => array('OR' => array('perm_sync', 'perm_admin')),
'ondemandAction' => array(),
'postTest' => array('perm_sync'),

View File

@ -47,7 +47,7 @@ class RestResponseComponent extends Component
Besides the parameters listed, other, format specific ones can be passed along (for example: requested_attributes and includeContext for the CSV export).
This API allows pagination via the page and limit parameters.",
'mandatory' => array('returnFormat'),
'optional' => array('page', 'limit', 'value' , 'type', 'category', 'org', 'tags', 'from', 'to', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'to_ids', 'deleted', 'includeEventUuid', 'includeEventTags', 'event_timestamp', 'threat_level_id', 'eventinfo', 'includeProposals'),
'optional' => array('page', 'limit', 'value' , 'type', 'category', 'org', 'tags', 'date', 'last', 'eventid', 'withAttachments', 'uuid', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'to_ids', 'deleted', 'includeEventUuid', 'includeEventTags', 'event_timestamp', 'threat_level_id', 'eventinfo', 'includeProposals'),
'params' => array()
)
),
@ -75,7 +75,7 @@ class RestResponseComponent extends Component
Besides the parameters listed, other, format specific ones can be passed along (for example: requested_attributes and includeContext for the CSV export).
This API allows pagination via the page and limit parameters.",
'mandatory' => array('returnFormat'),
'optional' => array('page', 'limit', 'value', 'type', 'category', 'org', 'tag', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments', 'metadata', 'uuid', 'published', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'sgReferenceOnly', 'eventinfo'),
'optional' => array('page', 'limit', 'value', 'type', 'category', 'org', 'tag', 'tags', 'searchall', 'date', 'last', 'eventid', 'withAttachments', 'metadata', 'uuid', 'published', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'sgReferenceOnly', 'eventinfo'),
'params' => array()
)
),
@ -228,6 +228,10 @@ class RestResponseComponent extends Component
'mandatory' => array('event', 'tag'),
'params' => array('tag_id')
),
'attachTagToObject' => array(
'description' => "Attach a Tag to an object, refenced by an UUID. Tag can either be a tag id or a tag name.",
'mandatory' => array('uuid', 'tag'),
)
),
'User' => array(
'admin_add' => array(
@ -421,10 +425,14 @@ class RestResponseComponent extends Component
} elseif (strtolower($format) == 'csv') {
$type = 'csv';
} else {
if (empty($format)) {
$type = 'json';
} else {
$type = $format;
}
if (!$raw) {
$response = json_encode($response, JSON_PRETTY_PRINT);
}
$type = 'json';
}
$cakeResponse = new CakeResponse(array('body'=> $response, 'status' => $code, 'type' => $type));
@ -671,6 +679,7 @@ class RestResponseComponent extends Component
'todayHighlight' => true,
'autoclose' => true
),
'help' => 'The user set date field on the event level. If you are using restSearch, you can use any of the valid time related filters (examples: 7d, timestamps, [14d, 7d] for ranges, etc.)'
),
'datefrom' => array(
'type' => 'date',
@ -830,7 +839,7 @@ class RestResponseComponent extends Component
'autoclose' => true
),
'help' => 'The date from which the event was published'
),
),
'gpgkey' => array(
'input' => 'text',
'type' => 'string',
@ -1529,6 +1538,7 @@ class RestResponseComponent extends Component
break;
}
}
private function __overwriteCategory($scope, &$field) {
$field['values'] = array_keys(ClassRegistry::init("Attribute")->categoryDefinitions);
}

View File

@ -1057,7 +1057,7 @@ class EventsController extends AppController
$conditions['overrideLimit'] = 1;
}
if (isset($filters['deleted'])) {
$conditions['deleted'] = $filters['deleted'] == 2 ? 0 : 1;
$conditions['deleted'] = $filters['deleted'] == 2 ? 0 : [0, 1];
}
if (isset($filters['toIDS']) && $filters['toIDS'] != 0) {
$conditions['to_ids'] = $filters['toIDS'] == 2 ? 0 : 1;
@ -1191,7 +1191,11 @@ class EventsController extends AppController
$cortex_modules = $this->Module->getEnabledModules($this->Auth->user(), false, 'Cortex');
$this->set('cortex_modules', $cortex_modules);
}
$this->set('deleted', isset($filters['deleted']) ? ($filters['deleted'] == 2 ? 0 : 1) : 0);
$deleted = 0;
if (isset($filters['deleted'])) {
$deleted = $filters['deleted'] == 2 ? array(0, 1) : $filters['deleted'];
}
$this->set('deleted', $deleted);
$this->set('typeGroups', array_keys($this->Event->Attribute->typeGroupings));
$this->set('attributeFilter', isset($filters['attributeFilter']) ? $filters['attributeFilter'] : 'all');
$this->set('filters', $filters);
@ -1394,7 +1398,6 @@ class EventsController extends AppController
$sightingsData = $this->Event->getSightingData($event);
$this->set('sightingsData', $sightingsData);
$params = $this->Event->rearrangeEventForView($event, $filters, false, $sightingsData);
$this->params->params['paging'] = array($this->modelClass => $params);
$this->set('event', $event);
$dataForView = array(
@ -1462,7 +1465,13 @@ class EventsController extends AppController
$attributeUri = '/events/viewEventAttributes/' . $event['Event']['id'];
foreach ($this->params->named as $k => $v) {
if (!is_numeric($k)) {
$attributeUri .= '/' . $v;
if (is_array($v)) {
foreach ($v as $value) {
$attributeUri .= sprintf('/%s[]:%s', $k, $value);
}
} else {
$attributeUri .= sprintf('/%s:%s', $k, $v);
}
}
}
$orgTable = $this->Event->Orgc->find('list', array(
@ -1509,7 +1518,12 @@ class EventsController extends AppController
$conditions['includeAttachments'] = true;
}
if (isset($this->params['named']['deleted'])) {
$conditions['deleted'] = $this->params['named']['deleted'] == 2 ? 0 : 1;
// workaround for old instances trying to pull events with both deleted / non deleted data
if (($this->userRole['perm_sync'] && $this->_isRest() && !$this->userRole['perm_site_admin']) && $this->params['named']['deleted'] == 1) {
$conditions['deleted'] = array(0,1);
} else {
$conditions['deleted'] = $this->params['named']['deleted'] == 2 ? array(0,1) : $this->params['named']['deleted'];
}
}
if (isset($this->params['named']['toIDS']) && $this->params['named']['toIDS'] != 0) {
$conditions['to_ids'] = $this->params['named']['toIDS'] == 2 ? 0 : 1;
@ -1996,7 +2010,7 @@ class EventsController extends AppController
throw new UnauthorizedException(__('You do not have permission to do that.'));
}
if ($this->request->is('post')) {
$original_file = !empty($this->data['Event']['original_file']) ? $this->data['Event']['stix']['name'] : None;
$original_file = !empty($this->data['Event']['original_file']) ? $this->data['Event']['stix']['name'] : '';
if ($this->_isRest()) {
$randomFileName = $this->Event->generateRandomFileName();
$tmpDir = APP . "files" . DS . "scripts" . DS . "tmp";
@ -2009,7 +2023,7 @@ class EventsController extends AppController
} elseif (is_numeric($result)) {
$event = $this->Event->fetchEvent($this->Auth->user(), array('eventid' => $result));
if (!empty($event)) {
return $this->RestResponse->viewData($event[0], $this->response->type());
return $this->RestResponse->viewData($event[0], 'json');
} else {
return $this->RestResponse->saveFailResponse('Events', 'upload_stix', false, 'Could not read saved event.', $this->response->type());
}
@ -3284,9 +3298,9 @@ class EventsController extends AppController
$sgReferenceOnly = false
) {
$paramArray = array(
'value', 'type', 'category', 'org', 'tag', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments',
'value', 'type', 'category', 'object_relation', 'org', 'tag', 'tags', 'searchall', 'from', 'to', 'last', 'eventid', 'withAttachments',
'metadata', 'uuid', 'published', 'publish_timestamp', 'timestamp', 'enforceWarninglist', 'sgReferenceOnly', 'returnFormat',
'limit', 'page', 'requested_attributes', 'includeContext', 'headerless', 'includeWarninglistHits', 'attackGalaxy'
'limit', 'page', 'requested_attributes', 'includeContext', 'headerless', 'includeWarninglistHits', 'attackGalaxy', 'deleted'
);
$filterData = array(
'request' => $this->request,
@ -5678,7 +5692,7 @@ class EventsController extends AppController
$this->layout = false;
$this->render('/Events/ajax/event_lock');
} else {
return $this->RestResponse->viewData('', $this->response->type());
return $this->RestResponse->viewData('', $this->response->type(), false, true);
}
}
@ -5862,4 +5876,34 @@ class EventsController extends AppController
$this->redirect('/events/view/' . $eventId);
}
}
public function cullEmptyEvents()
{
$eventIds = $this->Event->find('list', array(
'conditions' => array('Event.published' => 1),
'fields' => array('Event.id', 'Event.uuid'),
'recursive' => -1
));
$count = 0;
$this->Event->skipBlacklist = true;
foreach ($eventIds as $eventId => $eventUuid) {
$result = $this->Event->Attribute->find('first', array(
'conditions' => array('Attribute.event_id' => $eventId),
'recursive' => -1,
'fields' => array('Attribute.id', 'Attribute.event_id')
));
if (empty($result)) {
$this->Event->delete($eventId);
$count++;
}
}
$this->Event->skipBlacklist = null;
$message = __('%s event(s) deleted.', $count);
if ($this->_isRest()) {
return $this->RestResponse->viewData($message, $this->response->type());
} else {
$this->Flash->success($message);
$this->redirect($this->referer());
}
}
}

View File

@ -159,6 +159,8 @@ class LogsController extends AppController
'eventid' => $id,
'includeAllTags' => 1,
'sgReferenceOnly' => 1,
'deleted' => 1,
'deleted_proposals' => 1
));
$conditions = array(
'OR' => array(
@ -341,7 +343,11 @@ class LogsController extends AppController
'conditions' => $conditions,
'order' => array('Log.id' => 'DESC')
);
$this->set('list', $this->paginate());
$list = $this->paginate();
if (empty($this->Auth->user('Role')['perm_site_admin'])) {
$list = $this->Log->filterSiteAdminSensitiveLogs($list);
}
$this->set('list', $list);
// and store into session
$this->Session->write('paginate_conditions_log', $this->paginate);
@ -392,7 +398,11 @@ class LogsController extends AppController
}
$conditions = $this->__buildSearchConditions($filters);
$this->paginate['conditions'] = $conditions;
$this->set('list', $this->paginate());
$list = $this->paginate();
if (empty($this->Auth->user('Role')['perm_site_admin'])) {
$list = $this->Log->filterSiteAdminSensitiveLogs($list);
}
$this->set('list', $list);
// set the same view as the index page
$this->render('admin_index');

View File

@ -1904,4 +1904,85 @@ misp.direct_call(relative_path, body)
$results = $this->Server->updateJSON();
return $this->RestResponse->viewData($results, $this->response->type());
}
public function createSync()
{
if ($this->_isSiteAdmin()) {
throw new MethodNotAllowedException('Site admin accounts cannot be used to create server sync configurations.');
}
$baseurl = Configure::read('MISP.external_baseurl');
if (empty($baseurl)) {
$baseurl = Configure::read('MISP.baseurl');
if (empty($baseurl)) {
$baseurl = Router::url('/', true);
}
}
$server = array(
'Server' => array(
'url' => $baseurl,
'uuid' => Configure::read('MISP.uuid'),
'authkey' => $this->Auth->user('authkey'),
'Organisation' => array(
'name' => $this->Auth->user('Organisation')['name'],
'uuid' => $this->Auth->user('Organisation')['uuid']
)
)
);
if ($this->_isRest()) {
return $this->RestResponse->viewData($server, $this->response->type());
} else {
$this->set('server', $server);
}
}
public function import()
{
if ($this->request->is('post')) {
$server = $this->request->data;
if (isset($server['Server'])) {
$server = $server['Server'];
}
if (isset($server['json'])) {
$server = json_decode($server['json'], true)['Server'];
}
$this->loadModel('Organisation');
$org_id = $this->Organisation->captureOrg($server['Organisation'], $this->Auth->user());
$toSave = array(
'push' => 0,
'pull' => 0,
'caching_enabled' => 0,
'json' => '[]',
'push_rules' => '[]',
'pull_rules' => '[]',
'self_signed' => 0,
'org_id' => $this->Auth->user('org_id'),
'remote_org_id' => $org_id,
'name' => empty($server['name']) ? $server['url'] : $server['name'],
'url' => $server['url'],
'uuid' => $server['uuid'],
'authkey' => $server['authkey']
);
$this->Server->create();
$result = $this->Server->save($toSave);
if ($result) {
if ($this->_isRest()) {
$server = $this->Server->find('first', array(
'conditions' => array('Server.id' => $this->Server->id),
'recursive' => -1
));
return $this->RestResponse->viewData($server, $this->response->type());
} else {
$this->Flash->success(__('The server has been saved'));
$this->redirect(array('action' => 'index', $this->Server->id));
}
} else {
if ($this->_isRest()) {
return $this->RestResponse->saveFailResponse('Servers', 'addFromJson', false, $this->Server->validationErrors, $this->response->type());
} else {
$this->Flash->error(__('Could not save the server. Error: %s', json_encode($this->Server->validationErrors, true)));
$this->redirect(array('action' => 'index'));
}
}
}
}
}

View File

@ -19,7 +19,7 @@ class UsersController extends AppController
),
'contain' => array(
'Organisation' => array('id', 'name'),
'Role' => array('id', 'name', 'perm_auth')
'Role' => array('id', 'name', 'perm_auth', 'perm_site_admin')
)
);
@ -350,11 +350,16 @@ class UsersController extends AppController
),
'contain' => array(
'Organisation' => array('id', 'name'),
'Role' => array('id', 'name', 'perm_auth')
'Role' => array('id', 'name', 'perm_auth', 'perm_site_admin')
)
));
foreach ($users as $key => $value) {
unset($users['User']['password']);
if (empty($this->Auth->user('Role')['perm_site_admin'])) {
if ($value['Role']['perm_site_admin']) {
$users[$key]['User']['authkey'] = __('Redacted');
}
}
unset($users[$key]['User']['password']);
}
return $this->RestResponse->viewData($users, $this->response->type());
} else {
@ -366,7 +371,13 @@ class UsersController extends AppController
} else {
$conditions['User.org_id'] = $this->Auth->user('org_id');
$this->paginate['conditions']['AND'][] = $conditions;
$this->set('users', $this->paginate());
$users = $this->paginate();
foreach ($users as $key => $value) {
if ($value['Role']['perm_site_admin']) {
$users[$key]['User']['authkey'] = __('Redacted');
}
}
$this->set('users', $users);
}
if ($this->request->is('ajax')) {
$this->autoRender = false;
@ -462,6 +473,9 @@ class UsersController extends AppController
$user['User']['fingerprint'] = !empty($pgpDetails[4]) ? $pgpDetails[4] : 'N/A';
}
$user['User']['orgAdmins'] = $this->User->getOrgAdminsForOrg($user['User']['org_id'], $user['User']['id']);
if (empty($this->Auth->user('Role')['perm_site_admin']) && !(empty($user['Role']['perm_site_admin']))) {
$user['User']['authkey'] = __('Redacted');
}
$this->set('user', $user);
if (!$this->_isSiteAdmin() && !($this->_isAdmin() && $this->Auth->user('org_id') == $user['User']['org_id'])) {
throw new MethodNotAllowedException();
@ -694,9 +708,10 @@ class UsersController extends AppController
$params = array();
$allowedRole = '';
$userToEdit = $this->User->find('first', array(
'conditions' => array('id' => $id),
'conditions' => array('User.id' => $id),
'recursive' => -1,
'fields' => array('id', 'role_id', 'email', 'org_id'),
'fields' => array('User.id', 'User.role_id', 'User.email', 'User.org_id', 'Role.perm_site_admin'),
'contain' => array('Role')
));
if (!$this->_isSiteAdmin()) {
// Org admins should be able to select the role that is already assigned to an org user when editing them.
@ -706,8 +721,8 @@ class UsersController extends AppController
// MISP automatically chooses the first available option for the user as the selected setting (usually user)
// Org admin is downgraded to a user
// Now we make an exception for the already assigned role, both in the form and the actual edit.
if ($userToEdit['User']['org_id'] != $this->Auth->user('org_id')) {
throw new Exception('Invalid user');
if ($userToEdit['User']['org_id'] != $this->Auth->user('org_id') || !empty($userToEdit['Role']['perm_site_admin'])) {
throw new NotFoundException(__('Invalid user'));
}
$allowedRole = $userToEdit['User']['role_id'];
$params = array('conditions' => array(

View File

@ -344,7 +344,7 @@ class NidsExport
{
$overruled = $this->checkWhitelist($attribute['value']);
$attribute['value'] = NidsExport::replaceIllegalChars($attribute['value']); // substitute chars not allowed in rule
$content = 'content:"|01 00 00 01 00 00 00 00 00 00|"; depth:10; offset:2; content:"' . NidsExport::dnsNameToRawFormat($attribute['value'], 'hostname') . '"; fast_pattern; nocase;';
$content = 'content:"|01 00 00 01 00 00 00 00 00 01|"; depth:10; offset:2; content:"' . NidsExport::dnsNameToRawFormat($attribute['value'], 'hostname') . '"; fast_pattern; nocase;';
$this->rules[] = sprintf(
$ruleFormat,
($overruled) ? '#OVERRULED BY WHITELIST# ' : '',
@ -400,7 +400,7 @@ class NidsExport
{
$overruled = $this->checkWhitelist($attribute['value']);
$attribute['value'] = NidsExport::replaceIllegalChars($attribute['value']); // substitute chars not allowed in rule
$content = 'content:"|01 00 00 01 00 00 00 00 00 00|"; depth:10; offset:2; content:"' . NidsExport::dnsNameToRawFormat($attribute['value']) . '"; fast_pattern; nocase;';
$content = 'content:"|01 00 00 01 00 00 00 00 00 01|"; depth:10; offset:2; content:"' . NidsExport::dnsNameToRawFormat($attribute['value']) . '"; fast_pattern; nocase;';
$this->rules[] = sprintf(
$ruleFormat,
($overruled) ? '#OVERRULED BY WHITELIST# ' : '',
@ -565,7 +565,7 @@ class NidsExport
/**
* Converts a DNS name to a raw format usable in NIDS like Snort.
* example host: foobar.com becomes |00||06|foobar|03|com|00|
* example host: foobar.com becomes |01||06|foobar|03|com|00|
* example domain: foobar.com becomes |06|foobar|03|com|00|
* @param string $name dns name to be converted
* @param string $type the type of dns name - domain (default) or hostname
@ -575,7 +575,7 @@ class NidsExport
{
$rawName = "";
if ('hostname' == $type) {
$rawName = '|00|';
$rawName = '|01|';
}
// explode using the dot
$explodedNames = explode('.', $name);

View File

@ -129,7 +129,8 @@ class YaraExport
$out2 = $this->__yara_file_asis->path;
$logging = $this->__end_of_cmd;
$raw_flag = $this->__raw_mode ? '--raw' : '';
$result = shell_exec($this->getPythonVersion() . " $pythonScript --input $in --out-generated $out1 --out-asis $out2 $raw_flag $logging");
$my_server = ClassRegistry::init('Server');
$result = shell_exec($my_server->getPythonVersion() . " $pythonScript --input $in --out-generated $out1 --out-asis $out2 $raw_flag $logging");
$this->__curr_input_file->close();
$this->__curr_input_file->delete();
$this->__n_attributes = 0;

View File

@ -75,7 +75,7 @@ class AppModel extends Model
13 => false, 14 => false, 15 => false, 18 => false, 19 => false, 20 => false,
21 => false, 22 => false, 23 => false, 24 => false, 25 => false, 26 => false,
27 => false, 28 => false, 29 => false, 30 => false, 31 => false, 32 => false,
33 => false, 34 => false
33 => false, 34 => false, 35 => false
);
public $advanced_updates_description = array(
@ -1183,6 +1183,17 @@ class AppModel extends Model
case 33:
$sqlArray[] = "ALTER TABLE `roles` ADD `perm_publish_kafka` tinyint(1) NOT NULL DEFAULT 0;";
break;
case 35:
$sqlArray[] = "CREATE TABLE IF NOT EXISTS `notification_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`org_id` int(11) NOT NULL,
`type` varchar(255) COLLATE utf8_bin NOT NULL,
`timestamp` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `org_id` (`org_id`),
KEY `type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;";
break;
case 'fixNonEmptySharingGroupID':
$sqlArray[] = 'UPDATE `events` SET `sharing_group_id` = 0 WHERE `distribution` != 4;';
$sqlArray[] = 'UPDATE `attributes` SET `sharing_group_id` = 0 WHERE `distribution` != 4;';

View File

@ -390,7 +390,7 @@ class Attribute extends AppModel
'text' => array('txt', 'TextExport', 'txt'),
'yara' => array('txt', 'YaraExport', 'yara'),
'yara-json' => array('json', 'YaraExport', 'json'),
'rpz' => array('rpz', 'RPZExport', 'rpz'),
'rpz' => array('txt', 'RPZExport', 'rpz'),
'csv' => array('csv', 'CsvExport', 'csv'),
'cache' => array('txt', 'CacheExport', 'cache')
);
@ -2218,9 +2218,8 @@ class Attribute extends AppModel
}
$tag = ClassRegistry::init('Tag');
$params['tags'] = $this->dissectArgs($params['tags']);
$tagArray = $tag->fetchTagIds($params['tags'][0], $params['tags'][1]);
if (!empty($params['tags'][0]) && empty($tagArray[0]) && empty($params['lax_tags'])) {
$tagArray[0] = array(-1);
foreach (array(0, 1, 2) as $tag_operator) {
$tagArray[$tag_operator] = $tag->fetchTagIdsSimple($params['tags'][$tag_operator]);
}
$temp = array();
if (!empty($tagArray[0])) {
@ -2285,6 +2284,45 @@ class Attribute extends AppModel
$conditions['AND'][] = array_merge($temp, $this->subQueryGenerator($tag->AttributeTag, $subquery_options, $lookup_field, 1));
}
}
$temp = array();
if (!empty($tagArray[2])) {
if ($tagArray[2][0] === -1) {
$conditions[] = array('Event.id' => -1);
} else {
foreach ($tagArray[2] as $k => $anded_tag) {
$subquery_options = array(
'conditions' => array(
'tag_id' => $anded_tag
),
'fields' => array(
'event_id'
)
);
$lookup_field = ($options['scope'] === 'Event') ? 'Event.id' : 'Attribute.event_id';
$temp[$k]['OR'] = array();
$temp[$k]['OR'] = array_merge(
$temp[$k]['OR'],
$this->subQueryGenerator($tag->EventTag, $subquery_options, $lookup_field)
);
$subquery_options = array(
'conditions' => array(
'tag_id' => $anded_tag
),
'fields' => array(
$options['scope'] === 'Event' ? 'Event.id' : 'attribute_id'
)
);
$lookup_field = $options['scope'] === 'Event' ? 'Event.id' : 'Attribute.id';
$temp[$k]['OR'] = array_merge(
$temp[$k]['OR'],
$this->subQueryGenerator($tag->AttributeTag, $subquery_options, $lookup_field)
);
}
}
}
if (!empty($temp)) {
$conditions['AND'][] = array('AND' => $temp);
}
$params['tags'] = array();
if (!empty($tagArray[0]) && empty($options['pop'])) {
$params['tags']['OR'] = $tagArray[0];
@ -2292,6 +2330,9 @@ class Attribute extends AppModel
if (!empty($tagArray[1])) {
$params['tags']['NOT'] = $tagArray[1];
}
if (!empty($tagArray[2]) && empty($options['pop'])) {
$params['tags']['AND'] = $tagArray[2];
}
if (empty($params['tags'])) {
unset($params['tags']);
}
@ -2603,12 +2644,12 @@ class Attribute extends AppModel
public function dissectArgs($args)
{
if (empty($args)) {
return array(0 => array(), 1 => array());
return array(0 => array(), 1 => array(), 2 => array());
}
if (!is_array($args)) {
$args = explode('&&', $args);
}
$result = array(0 => array(), 1 => array());
$result = array(0 => array(), 1 => array(), 2 => array());
if (isset($args['OR']) || isset($args['NOT']) || isset($args['AND'])) {
if (!empty($args['OR'])) {
$result[0] = $args['OR'];
@ -2616,6 +2657,9 @@ class Attribute extends AppModel
if (!empty($args['NOT'])) {
$result[1] = $args['NOT'];
}
if (!empty($args['AND'])) {
$result[2] = $args['AND'];
}
} else {
foreach ($args as $arg) {
if (substr($arg, 0, 1) == '!') {
@ -3016,6 +3060,11 @@ class Attribute extends AppModel
}
if (!$user['Role']['perm_sync'] || !isset($options['deleted']) || !$options['deleted']) {
$params['conditions']['AND']['(Attribute.deleted + 0)'] = 0;
} else {
if ($options['deleted'] === "only") {
$options['deleted'] = 1;
}
$params['conditions']['AND']['(Attribute.deleted + 0)'] = $options['deleted'];
}
if (isset($options['group'])) {
$params['group'] = empty($options['group']) ? $options['group'] : false;
@ -3422,7 +3471,7 @@ class Attribute extends AppModel
return $conditions;
}
public function setTimestampConditions($timestamp, $conditions, $scope = 'Event.timestamp')
public function setTimestampConditions($timestamp, $conditions, $scope = 'Event.timestamp', $returnRaw = false)
{
if (is_array($timestamp)) {
$timestamp[0] = intval($this->Event->resolveTimeDelta($timestamp[0]));
@ -3438,6 +3487,9 @@ class Attribute extends AppModel
$timestamp = intval($this->Event->resolveTimeDelta($timestamp));
$conditions['AND'][] = array($scope . ' >=' => $timestamp);
}
if ($returnRaw) {
return $timestamp;
}
return $conditions;
}
@ -3893,6 +3945,7 @@ class Attribute extends AppModel
'value' => array('function' => 'set_filter_value'),
'category' => array('function' => 'set_filter_simple_attribute'),
'type' => array('function' => 'set_filter_simple_attribute'),
'object_relation' => array('function' => 'set_filter_simple_attribute'),
'tags' => array('function' => 'set_filter_tags', 'pop' => true),
'uuid' => array('function' => 'set_filter_uuid'),
'deleted' => array('function' => 'set_filter_deleted'),
@ -3906,6 +3959,7 @@ class Attribute extends AppModel
'ignore' => array('function' => 'set_filter_ignore'),
'from' => array('function' => 'set_filter_timestamp'),
'to' => array('function' => 'set_filter_timestamp'),
'date' => array('function' => 'set_filter_date'),
'tags' => array('function' => 'set_filter_tags'),
'last' => array('function' => 'set_filter_timestamp', 'pop' => true),
'timestamp' => array('function' => 'set_filter_timestamp', 'pop' => true),
@ -3994,12 +4048,8 @@ class Attribute extends AppModel
if (isset($filters['page'])) {
$params['page'] = $filters['page'];
}
if (!empty($filtes['deleted'])) {
$params['deleted'] = 1;
if ($params['deleted'] === 'only') {
$params['conditions']['AND'][] = array('Attribute.deleted' => 1);
$params['conditions']['AND'][] = array('Object.deleted' => 1);
}
if (!empty($filters['deleted'])) {
$params['deleted'] = $filters['deleted'];
}
if ($paramsOnly) {
return $params;
@ -4034,10 +4084,10 @@ class Attribute extends AppModel
$this->__iteratedFetch($user, $params, $loop, $tmpfile, $exportTool, $exportToolParams, $elementCounter);
fwrite($tmpfile, $exportTool->footer($exportToolParams));
fseek($tmpfile, 0);
if (fstat($tmpfile)['size'] === 0) {
$final = '{}';
} else {
if (fstat($tmpfile)['size']) {
$final = fread($tmpfile, fstat($tmpfile)['size']);
} else {
$final = '';
}
fclose($tmpfile);
return $final;

View File

@ -171,7 +171,7 @@ class Event extends AppModel
'xml' => array('xml', 'XmlExport', 'xml'),
'suricata' => array('txt', 'NidsSuricataExport', 'rules'),
'snort' => array('txt', 'NidsSnortExport', 'rules'),
'rpz' => array('rpz', 'RPZExport', 'rpz'),
'rpz' => array('txt', 'RPZExport', 'rpz'),
'text' => array('text', 'TextExport', 'txt'),
'csv' => array('csv', 'CsvExport', 'csv'),
'stix' => array('xml', 'Stix1Export', 'xml'),
@ -479,7 +479,7 @@ class Event extends AppModel
public function beforeDelete($cascade = true)
{
// blacklist the event UUID if the feature is enabled
if (Configure::read('MISP.enableEventBlacklisting') !== false) {
if (Configure::read('MISP.enableEventBlacklisting') !== false && empty($this->skipBlacklist)) {
$this->EventBlacklist = ClassRegistry::init('EventBlacklist');
$this->EventBlacklist->create();
$orgc = $this->Orgc->find('first', array('conditions' => array('Orgc.id' => $this->data['Event']['orgc_id']), 'recursive' => -1, 'fields' => array('Orgc.name')));
@ -1367,7 +1367,7 @@ class Event extends AppModel
$url = $server['Server']['url'];
$HttpSocket = $this->setupHttpSocket($server, $HttpSocket);
$request = $this->setupSyncRequest($server);
$uri = $url . '/events/view/' . $eventId . '/deleted:1/excludeGalaxy:1';
$uri = $url . '/events/view/' . $eventId . '/deleted[]:0/deleted[]:1/excludeGalaxy:1';
$response = $HttpSocket->get($uri, $data = '', $request);
if ($response->isOk()) {
return json_decode($response->body, true);
@ -1590,6 +1590,7 @@ class Event extends AppModel
'tags' => array('function' => 'set_filter_tags'),
'from' => array('function' => 'set_filter_timestamp', 'pop' => true),
'to' => array('function' => 'set_filter_timestamp', 'pop' => true),
'date' => array('function' => 'set_filter_date', 'pop' => true),
'last' => array('function' => 'set_filter_timestamp', 'pop' => true),
'timestamp' => array('function' => 'set_filter_timestamp', 'pop' => true),
'event_timestamp' => array('function' => 'set_filter_timestamp', 'pop' => true),
@ -1606,6 +1607,7 @@ class Event extends AppModel
'value' => array('function' => 'set_filter_value'),
'category' => array('function' => 'set_filter_simple_attribute'),
'type' => array('function' => 'set_filter_simple_attribute'),
'object_relation' => array('function' => 'set_filter_simple_attribute'),
'tags' => array('function' => 'set_filter_tags', 'pop' => true),
'ignore' => array('function' => 'set_filter_ignore'),
'uuid' => array('function' => 'set_filter_uuid'),
@ -1918,20 +1920,55 @@ class Event extends AppModel
$conditionsAttributes['AND'][] = array('Attribute.to_ids' => 1);
}
$softDeletables = array('Attribute', 'Object', 'ObjectReference');
if (isset($options['deleted']) && $options['deleted']) {
if (isset($options['deleted'])) {
if (!is_array($options['deleted'])) {
$options['deleted'] = array($options['deleted']);
}
foreach ($options['deleted'] as $deleted_key => $deleted_value) {
if ($deleted_value === 'only') {
$deleted_value = 1;
}
$options['deleted'][$deleted_key] = intval($deleted_value);
}
if (!$user['Role']['perm_sync']) {
foreach ($softDeletables as $softDeletable) {
if (in_array(0, $options['deleted'])) {
$deletion_subconditions = array(
sprintf('%s.deleted', $softDeletable) => 0
);
} else {
$deletion_subconditions = array(
'1=0'
);
}
${'conditions' . $softDeletable . 's'}['AND'][] = array(
'OR' => array(
'(SELECT events.org_id FROM events WHERE events.id = ' . $softDeletable . '.event_id)' => $user['org_id'],
$softDeletable . '.deleted LIKE' => 0
'AND' => array(
sprintf('(SELECT events.org_id FROM events WHERE events.id = %s.event_id)', $softDeletable) => $user['org_id'],
sprintf('%s.deleted', $softDeletable) => $options['deleted']
),
$deletion_subconditions
)
);
}
} else {
foreach ($softDeletables as $softDeletable) {
${'conditions' . $softDeletable . 's'}['AND'][] = array(
sprintf('%s.deleted', $softDeletable) => $options['deleted']
);
}
}
} else {
foreach ($softDeletables as $softDeletable) {
${'conditions' . $softDeletable . 's'}['AND'][$softDeletable . '.deleted LIKE'] = 0;
${'conditions' . $softDeletable . 's'}['AND'][$softDeletable . '.deleted'] = 0;
}
}
$proposal_conditions = array('OR' => array('ShadowAttribute.deleted' => 0));
if (isset($options['deleted_proposals'])) {
if ($isSiteAdmin) {
$proposal_conditions = array('OR' => array('ShadowAttribute.deleted' => 1));
} else {
$proposal_conditions['OR'][] = array('(SELECT events.org_id FROM events WHERE events.id = ShadowAttribute.event_id)' => $user['org_id']);
}
}
if ($options['idList'] && !$options['tags']) {
@ -1995,7 +2032,7 @@ class Event extends AppModel
),
'ShadowAttribute' => array(
'fields' => $fieldsShadowAtt,
'conditions' => array('deleted' => 0),
'conditions' => $proposal_conditions,
'Org' => array('fields' => $fieldsOrg),
'order' => false
),
@ -2601,6 +2638,18 @@ class Event extends AppModel
return $conditions;
}
public function set_filter_date(&$params, $conditions, $options)
{
$timestamp = $this->Attribute->setTimestampConditions($params[$options['filter']], $conditions, 'Event.date', true);
if (!is_array($timestamp)) {
$conditions['AND']['Event.date >='] = date('Y-m-d', $timestamp);
} else {
$conditions['AND']['Event.date >='] = date('Y-m-d', $timestamp[0]);
$conditions['AND']['Event.date <='] = date('Y-m-d', $timestamp[1]);
}
return $conditions;
}
public function csv($user, $params, $search = false, &$continue = true)
{
$conditions = array();
@ -2610,6 +2659,7 @@ class Event extends AppModel
'tags' => array('function' => 'set_filter_tags'),
'category' => array('function' => 'set_filter_simple_attribute'),
'type' => array('function' => 'set_filter_simple_attribute'),
'object_relation' => array('function' => 'set_filter_simple_attribute'),
'from' => array('function' => 'set_filter_timestamp'),
'to' => array('function' => 'set_filter_timestamp'),
'last' => array('function' => 'set_filter_timestamp'),
@ -2808,6 +2858,15 @@ class Event extends AppModel
public function sendAlertEmail($id, $senderUser, $oldpublish = null, $processId = null)
{
$event = $this->fetchEvent($senderUser, array('eventid' => $id, 'includeAllTags' => true));
$this->NotificationLog = ClassRegistry::init('NotificationLog');
if (!$this->NotificationLog->check($event[0]['Event']['orgc_id'], 'publish')) {
if ($processId) {
$this->Job->id = $processId;
$this->Job->saveField('progress', 100);
$this->Job->saveField('message', 'Mails blocked by org alert threshold.');
}
return true;
}
if (empty($event)) {
throw new MethodNotFoundException('Invalid Event.');
}
@ -3959,7 +4018,7 @@ class Event extends AppModel
'eventid' => $id,
'includeAttachments' => true,
'includeAllTags' => true,
'deleted' => true,
'deleted' => array(0,1),
'excludeGalaxy' => 1
));
$event = $this->fetchEvent($elevatedUser, $params);
@ -4580,15 +4639,6 @@ class Event extends AppModel
$include = $include && ($filterType['correlation'] == 2);
}
/* deleted */
if ($filterType['deleted'] == 0) { // `both`
// pass, do not consider as `both` is selected
} else if ($attribute['deleted'] == 1) { // `include only`
$include = $include && ($filterType['deleted'] == 1);
} else { // `exclude`
$include = $include && ($filterType['deleted'] == 2);
}
/* feed */
if ($filterType['feed'] == 0) { // `both`
// pass, do not consider as `both` is selected
@ -5877,9 +5927,9 @@ class Event extends AppModel
}
$attribute['event_id'] = $id;
if ($objectType == 'ShadowAttribute') {
$attribute['org_id'] = $user['Role']['org_id'];
$attribute['org_id'] = $user['org_id'];
$attribute['event_org_id'] = $event['Event']['orgc_id'];
$attribute['email'] = $user['Role']['email'];
$attribute['email'] = $user['email'];
$attribute['event_uuid'] = $event['Event']['uuid'];
}
// adhere to the warninglist

View File

@ -45,6 +45,7 @@ class Log extends AppModel
'pull',
'push',
'remove_dead_workers',
'request',
'request_delegation',
'reset_auth_key',
'serverSettingsEdit',
@ -115,6 +116,9 @@ class Log extends AppModel
}
}
$this->logData($this->data);
if ($this->data['Log']['action'] === 'request' && !empty(Configure::read('MISP.log_paranoid_skip_db'))) {
return false;
}
return true;
}
@ -291,4 +295,31 @@ class Log extends AppModel
}
return true;
}
public function filterSiteAdminSensitiveLogs($list)
{
$this->User = ClassRegistry::init('User');
$site_admin_roles = $this->User->Role->find('list', array(
'recursive' => -1,
'conditions' => array('Role.perm_site_admin' => 1),
'fields' => array('Role.id', 'Role.id')
));
$site_admins = $this->User->find('list', array(
'recursive' => -1,
'conditions' => array(
'User.role_id' => array_values($site_admin_roles)
),
'fields' => array('User.id', 'User.id')
));
foreach ($list as $k => $v) {
if (
$v['Log']['model'] === 'User' &&
in_array($v['Log']['model_id'], array_values($site_admins)) &&
in_array($v['Log']['action'], array('add', 'edit', 'reset_auth_key'))
) {
$list[$k]['Log']['change'] = __('Redacted');
}
}
return $list;
}
}

View File

@ -0,0 +1,62 @@
<?php
App::uses('AppModel', 'Model');
class NotificationLog extends AppModel
{
public $useTable = 'notification_logs';
public $displayField = 'name';
public $actsAs = array(
'Trim'
);
private $__counter = 0;
public function addEntry($org_id, $type)
{
$this->cleanup();
$notification = array(
'org_id' => $org_id,
'type' => $type,
'timestamp' => time()
);
$this->create();
$this->save($notification);
return true;
}
public function cleanup()
{
if ($this->__counter%100 === 0) {
$time_limit = time() - 86400;
$this->deleteAll(
array(
'NotificationLog.timestamp <' => $time_limit
)
);
}
$this->__counter++;
return true;
}
public function check($org_id, $type)
{
$this->addEntry($org_id, $type);
$this->cleanup();
if (!empty(Configure::read('MISP.org_alert_threshold'))) {
$count = $this->find('count', array(
'conditions' => array(
'org_id' => $org_id,
'type' => $type
)
));
if ((int)Configure::read('MISP.org_alert_threshold') <= ($count)) {
return false;
}
}
return true;
}
}

View File

@ -712,6 +712,33 @@ class Server extends AppModel
'test' => 'testBool',
'type' => 'boolean',
),
'log_paranoid' => array(
'level' => 0,
'description' => __('If this functionality is enabled all page requests will be logged. Keep in mind this is extremely verbose and will become a burden to your database.'),
'value' => false,
'errorMessage' => '',
'test' => 'testBoolFalse',
'type' => 'boolean',
'null' => true
),
'log_paranoid_skip_db' => array(
'level' => 0,
'description' => __('You can decide to skip the logging of the paranoid logs to the database.'),
'value' => false,
'errorMessage' => '',
'test' => 'testParanoidSkipDb',
'type' => 'boolean',
'null' => true
),
'log_paranoid_include_post_body' => array(
'level' => 0,
'description' => __('If paranoid logging is enabled, include the POST body in the entries.'),
'value' => false,
'errorMessage' => '',
'test' => 'testBool',
'type' => 'boolean',
'null' => true
),
'delegation' => array(
'level' => 1,
'description' => __('This feature allows users to create org only events and ask another organisation to take ownership of the event. This allows organisations to remain anonymous by asking a partner to publish an event for them.'),
@ -785,6 +812,15 @@ class Server extends AppModel
'type' => 'string',
'null' => false,
),
'org_alert_threshold' => array(
'level' => 1,
'description' => __('Set a value to limit the number of email alerts that events can generate per creator organisation (for example, if an organisation pushes out 2000 events in one shot, only alert on the first 20).'),
'value' => 0,
'errorMessage' => '',
'test' => 'testForNumeric',
'type' => 'numeric',
'null' => true,
),
'block_old_event_alert' => array(
'level' => 1,
'description' => __('Enable this setting to start blocking alert e-mails for old events. The exact timing of what constitutes an old event is defined by MISP.block_old_event_alert_age.'),
@ -2166,6 +2202,31 @@ class Server extends AppModel
return $event;
}
private function __checkIfEventSaveAble($event) {
if (!empty($event['Event']['Attribute'])) {
foreach ($event['Event']['Attribute'] as $attribute) {
if (empty($attribute['deleted'])) {
return true;
}
}
}
if (!empty($event['Event']['Object'])) {
foreach ($event['Event']['Object'] as $object) {
if (!empty($object['deleted'])) {
continue;
}
if (!empty($object['Attribute'])) {
foreach ($object['Attribute'] as $attribute) {
if (empty($attribute['deleted'])) {
return true;
}
}
}
}
}
return false;
}
private function __checkIfPulledEventExistsAndAddOrUpdate($event, $eventId, &$successes, &$fails, $eventModel, $server, $user, $jobId)
{
// check if the event already exist (using the uuid)
@ -2207,7 +2268,11 @@ class Server extends AppModel
return false;
}
$event = $this->__updatePulledEventBeforeInsert($event, $server, $user);
$this->__checkIfPulledEventExistsAndAddOrUpdate($event, $eventId, $successes, $fails, $eventModel, $server, $user, $jobId);
if (!$this->__checkIfEventSaveAble($event)) {
$fails[$eventId] = __('Empty event detected.');
} else {
$this->__checkIfPulledEventExistsAndAddOrUpdate($event, $eventId, $successes, $fails, $eventModel, $server, $user, $jobId);
}
} else {
// error
$fails[$eventId] = __('failed downloading the event');
@ -2584,7 +2649,7 @@ class Server extends AppModel
'event_uuid' => $eventUuid,
'includeAttachments' => true,
'includeAllTags' => true,
'deleted' => true,
'deleted' => array(0,1),
'excludeGalaxy' => 1
));
$event = $this->Event->fetchEvent($user, $params);
@ -3184,6 +3249,14 @@ class Server extends AppModel
}
}
public function testParanoidSkipDb($value)
{
if (!empty(Configure::read('MISP.log_paranoid')) && empty($value)) {
return 'Perhaps consider skipping the database when using paranoid mode. A great number of entries will be added to your log database otherwise that will lead to performance degradation.';
}
return true;
}
public function testSalt($value)
{
if ($this->testForEmpty($value) !== true) {
@ -3793,6 +3866,22 @@ class Server extends AppModel
return array('status' => 6);
}
}
$this->Log = ClassRegistry::init('Log');
$this->Log->create();
$this->Log->save(array(
'org' => 'SYSTEM',
'model' => 'Server',
'model_id' => $id,
'email' => 'SYSTEM',
'action' => 'error',
'user_id' => 0,
'title' => 'Error: Connection test failed. Returned data is in the change field.',
'change' => sprintf(
'response () => (%s), response-code () => (%s)',
$response->body,
$response->code
)
));
return array('status' => 3);
}
}
@ -4631,7 +4720,11 @@ class Server extends AppModel
$submodule_name=end($submodule_name);
$submoduleRemote=exec('cd ' . $path . '; git config --get remote.origin.url');
exec(sprintf('cd %s; git rev-parse HEAD', $path), $submodule_current_commit_id);
$submodule_current_commit_id = $submodule_current_commit_id[0];
if (!empty($submodule_current_commit_id[0])) {
$submodule_current_commit_id = $submodule_current_commit_id[0];
} else {
$submodule_current_commit_id = null;
}
$status = array(
'moduleName' => $submodule_name,
'current' => $submodule_current_commit_id,

View File

@ -195,6 +195,19 @@ class Tag extends AppModel
return array($acceptIds, $rejectIds);
}
// find all of the tag Ids that belong to the accepted tags and the rejected tags
public function fetchTagIdsSimple($tags = array())
{
$results = array();
if (!empty($tags)) {
$results = $this->findTagIdsByTagNames($tags);
if (empty($results)) {
$results[] = -1;
}
}
return $results;
}
// find all of the tag Ids that belong to the accepted tags and the rejected tags
public function fetchTagIds($accept = array(), $reject = array())
{

View File

@ -58,6 +58,7 @@
'class' => 'Attribute_value_select',
'style' => 'width:414px;margin-bottom:0px;',
'options' => array_combine($list, $list),
'empty' => __('-- Select an option --'),
'label' => false,
'div' => false,
'value' => $choice

View File

@ -503,6 +503,18 @@
break;
case 'sync':
if ($me['Role']['perm_sync']) {
echo $this->element('/genericElements/SideMenu/side_menu_link', array(
'url' => '/servers/createSync',
'text' => __('Create Sync Config')
));
}
if ($menuItem === 'import' && ($me['Role']['perm_site_admin'])) {
echo $this->element('/genericElements/SideMenu/side_menu_link', array(
'url' => '/servers/import',
'text' => __('Import Server Settings')
));
}
if ($menuItem === 'previewEvent' && ($isSiteAdmin || $hostOrg)) {
echo $this->element('/genericElements/SideMenu/side_menu_link', array(
'url' => sprintf(

View File

@ -212,6 +212,16 @@
'text' => __('Sync Actions'),
'requirement' => ($isAclSync || $isAdmin || $hostOrgUser),
'children' => array(
array(
'text' => __('Create Sync Config'),
'url' => '/servers/createSync',
'requirement' => ($isAclSync && !$isSiteAdmin)
),
array(
'text' => __('Import Server Settings'),
'url' => '/servers/import',
'requirement' => ($isSiteAdmin)
),
array(
'text' => __('List Servers'),
'url' => '/servers/index',

View File

@ -70,10 +70,11 @@
</div>
<h3><?php echo __('Submodules version');?>
<it id="refreshSubmoduleStatus" class="fas fa-sync useCursorPointer" style="font-size: small; margin-left: 5px;" title="<?php echo __('Refresh submodules version.'); ?>"></it>
<it id="updateAllJson" class="fas fa-file-upload useCursorPointer" style="font-size: small; margin-left: 5px;" title="<?php echo __('Load all JSON into the database.'); ?>"></it>
</h3>
<div id="divSubmoduleVersions" style="background-color:#f7f7f9;">
</div>
<div id="divSubmoduleVersions" style="background-color:#f7f7f9;"></div>
<span id="updateAllJson" class="btn btn-inverse" title="<?php echo __('Load all JSON into the database.'); ?>">
<it class="fas fa-file-upload"></it> <?php echo __("Load JSON into database"); ?>
</span>
<h3><?php echo __('Writeable Directories and files');?></h3>
<p><?php echo __('The following directories and files have to be writeable for MISP to function properly. Make sure that the apache user has write privileges for the directories below.');?></p>
@ -368,6 +369,7 @@
</div><br />
<span class="btn btn-inverse" role="button" tabindex="0" aria-label="<?php echo __('Check for orphaned attribute');?>" title="<?php echo __('Check for orphaned attributes');?>" style="padding-top:1px;padding-bottom:1px;" onClick="checkOrphanedAttributes();"><?php echo __('Check for orphaned attributes');?></span><br /><br />
<?php echo $this->Form->postButton(__('Remove orphaned attributes'), $baseurl . '/attributes/pruneOrphanedAttributes', $options = array('class' => 'btn btn-primary', 'style' => 'padding-top:1px;padding-bottom:1px;')); ?>
<?php echo $this->Form->postButton(__('Remove published empty events'), $baseurl . '/events/cullEmptyEvents', $options = array('class' => 'btn btn-primary', 'style' => 'padding-top:1px;padding-bottom:1px;')); ?>
<h3><?php echo __('Administrator On-demand Action');?></h3>
<p><?php echo __('Click the following button to go to the Administrator On-demand Action page.');?></p>
<span class="btn btn-inverse" style="padding-top:1px;padding-bottom:1px;" onClick="location.href = '<?php echo $baseurl; ?>/servers/ondemandAction/';"><?php echo __('Administrator On-demand Action');?></span>

View File

@ -49,7 +49,6 @@
<?php
endif;
$title = h($event['Event']['info']);
if (strlen($title) > 58) $title = substr($title, 0, 55) . '...';
$table_data = array();
$table_data[] = array('key' => __('Event ID'), 'value' => $event['Event']['id']);
$table_data[] = array(
@ -327,7 +326,7 @@
?>
<div class="row-fluid">
<div class="span8">
<h2><?php echo ($extended ? '[' . __('Extended view') . '] ' : '') . nl2br($title); ?></h2>
<h2 class="ellipsis-overflow"><?php echo ($extended ? '[' . __('Extended view') . '] ' : '') . nl2br($title); ?></h2>
<?php echo $this->element('genericElements/viewMetaTable', array('table_data' => $table_data)); ?>
</div>
<div class="related span4">

View File

@ -317,8 +317,9 @@
var rows = <?php echo json_encode($row_list, true); ?>;
$(document).ready(function() {
enableDisableObjectRows(rows);
$(".Attribute_value_select").each(function() {
$(".Attribute_value_select").each(function() {
checkAndEnable($(this).parent().find('.Attribute_value'), $(this).val() == '<?php echo __('Enter value manually');?>');
$(this).find('option:first').attr('disabled', true);
});
$(".Attribute_distribution_select").change(function() {
checkAndEnable($(this).parent().find('.Attribute_sharing_group_id_select'), $(this).val() == 4);

View File

@ -174,11 +174,11 @@ endforeach; ?>
runIndexFilter(this);
});
$('#quickFilterButton').click(function() {
runIndexQuickFilter();
runIndexQuickFilter('/scope:<?php echo h($scope); ?>');
});
$('#quickFilterField').on('keypress', function (e) {
if(e.which === 13) {
runIndexQuickFilter();
runIndexQuickFilter('/scope:<?php echo h($scope); ?>');
}
});
});

View File

@ -19,7 +19,7 @@
$domains[$k] = h($domain);
}
$domains = implode("<br />", $domains);
$table_data[] = array('key' => __('Domain restrictions'), 'value' => $domains);
$table_data[] = array('key' => __('Domain restrictions'), 'html' => $domains);
}
$table_data[] = array('key' => __('UUID'), 'value' => !empty(trim($org['Organisation']['uuid'])) ? $org['Organisation']['uuid'] : '');
if ($isSiteAdmin) {
@ -29,7 +29,7 @@
}
foreach (array('sector' => __('Sector'), 'nationality' => __('Nationality'), 'type' => __('Organisation type'), 'contacts' => __('Contact information')) as $k => $field) {
if (!empty(trim($org['Organisation'][$k]))) {
$table_data[] = array('key' => $field, 'value' => trim(h($org['Organisation'][$k])));
$table_data[] = array('key' => $field, 'html' => nl2br(trim(h($org['Organisation'][$k]))));
}
}
echo sprintf(
@ -67,6 +67,12 @@
<button id="button_events_active" style="display:none;" class="btn btn-primary toggle-right qet orgViewButtonActive" onClick="organisationViewContent('events', '<?php echo $id;?>');"><?php echo __('Events');?></button>
<br /><br />
<?php endif;?>
<?php
echo $this->Html->script('vis');
echo $this->Html->css('vis');
echo $this->Html->css('distribution-graph');
echo $this->Html->script('network-distribution-graph');
?>
<div id="ajaxContent" style="width:100%;"></div>
</div>
<?php

View File

@ -0,0 +1,11 @@
<?php
echo sprintf(
'<div class="index"><h4>%s</h4>%s</div>',
__('Server configuration'),
sprintf(
'<pre style="width:600px;">%s</pre>',
json_encode($server, JSON_PRETTY_PRINT)
)
);
echo $this->element('/genericElements/SideMenu/side_menu', array('menuList' => 'sync', 'menuItem' => 'createSync'));
?>

View File

@ -0,0 +1,25 @@
<div class="feed form">
<?php echo $this->Form->create('Server');?>
<fieldset>
<legend><?php echo __('Paste server data');?></legend>
<p><?php echo __('Paste a MISP server metadata JSON below to add sync connections.');?></p>
<div>
<?php
echo $this->Form->input('json', array(
'div' => 'input clear',
'label' => __('JSON'),
'placeholder' => __('Server metadata JSON'),
'class' => 'form-control span6',
'type' => 'textarea',
'rows' => 18
));
?>
</div>
</fieldset>
<?php
echo $this->Form->button(__('Add'), array('class' => 'btn btn-primary'));
echo $this->Form->end();
?>
</div>
<?php
echo $this->element('/genericElements/SideMenu/side_menu', array('menuList' => 'sync', 'menuItem' => 'import'));

View File

@ -65,7 +65,7 @@ $disabledBtnText = $updateLocked ? 'title="' . __('An action is already in progr
<?php endforeach; ?>
</div>
<?php
echo $this->element('side_menu', array('menuList' => 'admin', 'menuItem' => 'adminTools'));
echo $this->element('/genericElements/SideMenu/side_menu', array('menuList' => 'admin', 'menuItem' => 'adminTools'));
?>
<script type="text/javascript">

View File

@ -298,7 +298,7 @@
"event_id": "5655",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"\",\"delimiter\":\"\"},\"common\":{\"excluderegex\":\"\\\/^http:\\\\\\\/\\\\\\\/www.phishtank.com\\\/i\"}}",
"settings": "{\"csv\":{\"value\":\"\",\"delimiter\":\"\"},\"common\":{\"excluderegex\":\"\\/^http:\\\\\\/\\\\\\/www.phishtank.com\\/i\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": false,
@ -566,7 +566,7 @@
"id": "30",
"name": "Feodo IP Blocklist",
"provider": "abuse.ch",
"url": "https://feodotracker.abuse.ch/blocklist/?download=ipblocklist",
"url": "https://feodotracker.abuse.ch/downloads/ipblocklist.csv",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": true,
"distribution": "3",
@ -579,7 +579,7 @@
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"settings": "{\"csv\":{\"value\":\"2\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
@ -1519,54 +1519,111 @@
},
{
"Feed": {
"id": "77",
"name": "malsilo.url",
"provider": "MalSilo",
"url": "https:\/\/malsilo.gitlab.io\/feeds\/dumps\/url_list.txt",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": false,
"distribution": "3",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "csv",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"3\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true
"id": "77",
"name": "malsilo.url",
"provider": "MalSilo",
"url": "https://malsilo.gitlab.io/feeds/dumps/url_list.txt",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": false,
"distribution": "3",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "csv",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"3\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true
}
},
{
"Feed": {
"id": "78",
"name": "malsilo.ipv4",
"provider": "MalSilo",
"url": "https:\/\/malsilo.gitlab.io\/feeds\/dumps\/ip_list.txt",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": false,
"distribution": "3",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "csv",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"3\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true
"id": "78",
"name": "malsilo.ipv4",
"provider": "MalSilo",
"url": "https://malsilo.gitlab.io/feeds/dumps/ip_list.txt",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": false,
"distribution": "3",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "csv",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"3\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true
}
}
},
{
"Feed": {
"id": "87",
"name": "malshare.com - current all",
"provider": "malshare.com",
"url": "https://malshare.com/daily/malshare.current.all.txt",
"rules": "",
"enabled": false,
"distribution": "3",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "freetext",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"\",\"delimiter\":\",\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true,
"force_to_ids": false,
"cached_elements": 3936
}
},
{
"Feed": {
"id": "89",
"name": "Benkow.cc RAT",
"provider": "benkow.cc",
"url": "http://benkow.cc/export_rat.php",
"rules": "{\"tags\":{\"OR\":[],\"NOT\":[]},\"orgs\":{\"OR\":[],\"NOT\":[]}}",
"enabled": false,
"distribution": "0",
"sharing_group_id": "0",
"tag_id": "0",
"default": false,
"source_format": "csv",
"fixed_event": true,
"delta_merge": false,
"event_id": "0",
"publish": false,
"override_ids": false,
"settings": "{\"csv\":{\"value\":\"3,4\",\"delimiter\":\";\"},\"common\":{\"excluderegex\":\"\"}}",
"input_source": "network",
"delete_local_file": false,
"lookup_visible": true,
"headers": "",
"caching_enabled": true,
"force_to_ids": false,
"cached_elements": 2531,
"coverage_by_other_feeds": "11.62%"
}
}
]

View File

@ -5,7 +5,7 @@
"defs": {
"feed": {
"type": "object",
"additionalProperties": false,
"additionalProperties": true,
"properties": {
"id": {
"type": "string"

@ -1 +1 @@
Subproject commit 678b2a56219906b17a40b84b4c5ab6bc4c262a72
Subproject commit 8c69da1fd9c0be2ec742370f4918f0f88554644f

@ -1 +1 @@
Subproject commit 53e67b013122d658ff0f07e94ba34db81f69277b
Subproject commit e7bb12af7daa0d771dd558bf7707610d7e9b46ed

View File

@ -24,7 +24,6 @@ import uuid
import io
import re
import stix2
from base64 import b64encode
from stix2misp_mapping import *
from collections import defaultdict
@ -982,7 +981,8 @@ class ExternalStixParser(StixParser):
('x509-certificate',): self.parse_x509_observable,
('url',): self.parse_url_observable,
('windows-registry-key',): self.parse_regkey_observable}
self.pattern_mapping = {('domain-name', 'ipv4-addr', 'url'): self.parse_domain_ip_port_pattern,
self.pattern_mapping = {('domain-name',): self.parse_domain_ip_port_pattern,
('domain-name', 'ipv4-addr', 'url'): self.parse_domain_ip_port_pattern,
('domain-name', 'ipv6-addr', 'url'): self.parse_domain_ip_port_pattern,
('file',): self.parse_file_pattern,
('ipv4-addr',): self.parse_ip_address_pattern,
@ -990,7 +990,8 @@ class ExternalStixParser(StixParser):
('network-traffic',): self.parse_network_traffic_pattern,
('process',): self.parse_process_pattern,
('url',): self.parse_url_pattern,
('windows-registry-key',): self.parse_regkey_pattern}
('windows-registry-key',): self.parse_regkey_pattern,
('x509-certificate',): self.parse_x509_pattern}
self.pattern_forbidden_relations = (' LIKE ', ' FOLLOWEDBY ', ' MATCHES ', ' ISSUBSET ', ' ISSUPERSET ', ' REPEATS ')
def handler(self):
@ -1305,6 +1306,11 @@ class ExternalStixParser(StixParser):
attributes = self.attributes_from_x509_observable(objects)
self.handle_import_case(attributes, 'x509', marking, uuid)
def parse_x509_pattern(self, pattern, marking=None, uuid=None):
pattern_types, attribute_types = self.get_types_and_values_from_pattern(pattern)
attributes = self.fill_pattern_attributes(pattern_types, attribute_types, x509_mapping)
self.handle_import_case(attributes, 'x509', marking, uuid)
################################################################################
## UTILITY FUNCTIONS. ##
################################################################################
@ -1352,7 +1358,10 @@ class ExternalStixParser(StixParser):
types = []
values = []
for p in pattern:
type_, value = p.split('=')
try:
type_, value = p.split('=')
except ValueError:
type_, value = p.split(' = ')
types.append(type_.strip())
values.append(value.strip().strip('\''))
return types, values
@ -1411,7 +1420,7 @@ def main(args):
object_type = 'galaxy'
elif object_type == 'marking-definition':
parsed_object = {'object': parsed_object, 'used': False}
object_type = object_type
# object_type = object_type
stix_event[object_type][uuid] = parsed_object
if not stix_event:
print(json.dumps({'success': 0, 'message': 'There is no valid STIX object to import'}))

View File

@ -274,14 +274,24 @@ class StixParser():
else:
attributes = []
if properties.attachments:
attributes.append(self.handle_email_attachment(properties.parent))
attributes.extend(self.handle_email_attachment(properties))
return attributes[0] if len(attributes) == 1 else ("email", self.return_attributes(attributes), "")
# Return type & value of an email attachment
@staticmethod
def handle_email_attachment(indicator_object):
properties = indicator_object.related_objects[0].properties
return ["email-attachment", properties.file_name.value, "attachment"]
def handle_email_attachment(self, properties):
attributes = []
related_objects = {}
if properties.parent.related_objects:
related_objects = {related.id_: related.properties for related in properties.parent.related_objects}
for attachment in (attachment.object_reference for attachment in properties.attachments):
if attachment in related_objects:
attributes.append(["email-attachment", related_objects[attachment].file_name.value, "attachment"])
else:
parent_id = self.fetch_uuid(properties.parent.id_)
referenced_id = self.fetch_uuid(attachment)
self.references[parent_id].append({'idref': referenced_id,
'relationship': 'attachment'})
return attributes
# Return type & attributes of a file object
def handle_file(self, properties, is_object):
@ -764,6 +774,8 @@ class StixFromMISPParser(StixParser):
# if ttp.handling:
# self.parse_tlp_marking(ttp.handling)
self.set_event_fields()
if self.references:
self.build_references()
# Return type & attributes (or value) of a Custom Object
def handle_custom(self, properties):

@ -1 +1 @@
Subproject commit 3d2b8b1fcf26d9a3b36bb42aec42b093713a88b2
Subproject commit b82ab8bfd5e3b8e29b7b147053935cfc2d5868bc

@ -1 +1 @@
Subproject commit a05fbf34805df3f95e777840440dad3057a1b7b2
Subproject commit 2b571d2af3b61b5ab6d12d420fb9e4da38efa2f8

View File

@ -1,3 +1,7 @@
/*!
* Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
*/
.fa,
.fas,
.far,
@ -223,6 +227,9 @@ readers do not read off random characters that represent icons */
.fa-air-freshener:before {
content: "\f5d0"; }
.fa-airbnb:before {
content: "\f834"; }
.fa-algolia:before {
content: "\f36c"; }
@ -475,6 +482,9 @@ readers do not read off random characters that represent icons */
.fa-battery-three-quarters:before {
content: "\f241"; }
.fa-battle-net:before {
content: "\f835"; }
.fa-bed:before {
content: "\f236"; }
@ -586,6 +596,9 @@ readers do not read off random characters that represent icons */
.fa-bookmark:before {
content: "\f02e"; }
.fa-bootstrap:before {
content: "\f836"; }
.fa-bowling-ball:before {
content: "\f436"; }
@ -625,6 +638,9 @@ readers do not read off random characters that represent icons */
.fa-btc:before {
content: "\f15a"; }
.fa-buffer:before {
content: "\f837"; }
.fa-bug:before {
content: "\f188"; }
@ -889,6 +905,9 @@ readers do not read off random characters that represent icons */
.fa-chrome:before {
content: "\f268"; }
.fa-chromecast:before {
content: "\f838"; }
.fa-church:before {
content: "\f51d"; }
@ -1402,6 +1421,9 @@ readers do not read off random characters that represent icons */
.fa-euro-sign:before {
content: "\f153"; }
.fa-evernote:before {
content: "\f839"; }
.fa-exchange-alt:before {
content: "\f362"; }
@ -1738,6 +1760,9 @@ readers do not read off random characters that represent icons */
.fa-git:before {
content: "\f1d3"; }
.fa-git-alt:before {
content: "\f841"; }
.fa-git-square:before {
content: "\f1d2"; }
@ -2182,6 +2207,9 @@ readers do not read off random characters that represent icons */
.fa-italic:before {
content: "\f033"; }
.fa-itch-io:before {
content: "\f83a"; }
.fa-itunes:before {
content: "\f3b4"; }
@ -3142,6 +3170,9 @@ readers do not read off random characters that represent icons */
.fa-safari:before {
content: "\f267"; }
.fa-salesforce:before {
content: "\f83b"; }
.fa-sass:before {
content: "\f41e"; }
@ -3421,6 +3452,9 @@ readers do not read off random characters that represent icons */
.fa-speakap:before {
content: "\f3f3"; }
.fa-speaker-deck:before {
content: "\f83c"; }
.fa-spider:before {
content: "\f717"; }
@ -3454,6 +3488,9 @@ readers do not read off random characters that represent icons */
.fa-stack-overflow:before {
content: "\f16c"; }
.fa-stackpath:before {
content: "\f842"; }
.fa-stamp:before {
content: "\f5bf"; }
@ -3586,6 +3623,9 @@ readers do not read off random characters that represent icons */
.fa-swimming-pool:before {
content: "\f5c5"; }
.fa-symfony:before {
content: "\f83d"; }
.fa-synagogue:before {
content: "\f69b"; }
@ -4093,6 +4133,12 @@ readers do not read off random characters that represent icons */
.fa-water:before {
content: "\f773"; }
.fa-wave-square:before {
content: "\f83e"; }
.fa-waze:before {
content: "\f83f"; }
.fa-weebly:before {
content: "\f5cc"; }
@ -4204,6 +4250,9 @@ readers do not read off random characters that represent icons */
.fa-yahoo:before {
content: "\f19e"; }
.fa-yammer:before {
content: "\f840"; }
.fa-yandex:before {
content: "\f413"; }
@ -4251,7 +4300,8 @@ readers do not read off random characters that represent icons */
overflow: visible;
position: static;
width: auto; }
@font-face {
@font-face {
font-family: 'Font Awesome 5 Brands';
font-style: normal;
font-weight: normal;

View File

@ -37,6 +37,13 @@ pre {
font-size: 11px;
}
.ellipsis-overflow {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.nav-list {
padding-right: 5px;
}

View File

@ -711,7 +711,7 @@ class EventGraph {
mass: 5,
icon: {
color: stringToRGB(label),
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: that.get_FA_icon(node['meta-category']),
}
};
@ -2270,7 +2270,7 @@ var network_options = {
object: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
size: 50
},
font: {
@ -2328,7 +2328,7 @@ var network_options = {
rootNodeObject: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: '\uf00a',
},
font: {
@ -2341,7 +2341,7 @@ var network_options = {
rootNodeAttribute: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: '\uf1c0',
},
font: {
@ -2354,7 +2354,7 @@ var network_options = {
rootNodeKeyType: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: '\uf111',
},
font: {
@ -2367,7 +2367,7 @@ var network_options = {
rootNodeTag: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: '\uf02b',
},
font: {
@ -2380,7 +2380,7 @@ var network_options = {
clustered_object: {
shape: 'icon',
icon: {
face: 'FontAwesome',
face: '"Font Awesome 5 Free"',
code: '\uf009',
},
font: {

View File

@ -604,105 +604,105 @@ function submitForm(type, id, field, context) {
function quickSubmitTagForm(selected_tag_ids, addData) {
var event_id = addData.id;
var formData = fetchFormDataAjax("/events/addTag/" + event_id);
$('#temp').html(formData);
$('#EventTag').val(JSON.stringify(selected_tag_ids));
$.ajax({
data: $('#EventAddTagForm').serialize(),
cache: false,
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
loadEventTags(event_id);
loadGalaxies(event_id, 'event');
handleGenericAjaxResponse(data);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadEventTags(event_id);
loadGalaxies(event_id, 'event');
},
complete:function() {
$('#temp').empty();
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
},
type:"post",
url:"/events/addTag/" + event_id
fetchFormDataAjax("/events/addTag/" + event_id, function(formData) {
$('body').append($('<div id="temp"/>').html(formData));
$('#temp #EventTag').val(JSON.stringify(selected_tag_ids));
$.ajax({
data: $('#EventAddTagForm').serialize(),
cache: false,
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
loadEventTags(event_id);
loadGalaxies(event_id, 'event');
handleGenericAjaxResponse(data);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadEventTags(event_id);
loadGalaxies(event_id, 'event');
},
complete:function() {
$('#temp').remove();
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
$('#temp').remove();
},
type:"post",
url:"/events/addTag/" + event_id
});
});
$('#temp').remove();
return false;
}
function quickSubmitAttributeTagForm(selected_tag_ids, addData) {
var attribute_id = addData.id;
var formData = fetchFormDataAjax("/attributes/addTag/" + attribute_id);
$('#temp').html(formData);
$('#AttributeTag').val(JSON.stringify(selected_tag_ids));
if (attribute_id == 'selected') {
$('#AttributeAttributeIds').val(getSelected());
}
$.ajax({
data: $('#AttributeAddTagForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
if (attribute_id == 'selected') {
updateIndex(0, 'event');
} else {
fetchFormDataAjax("/attributes/addTag/" + attribute_id, function(formData) {
$('body').append($('<div id="temp"/>').html(formData));
$('#temp #AttributeTag').val(JSON.stringify(selected_tag_ids));
if (attribute_id == 'selected') {
$('#AttributeAttributeIds').val(getSelected());
}
$.ajax({
data: $('#AttributeAddTagForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
if (attribute_id == 'selected') {
updateIndex(0, 'event');
} else {
loadAttributeTags(attribute_id);
loadGalaxies(attribute_id, 'attribute');
}
handleGenericAjaxResponse(data);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadAttributeTags(attribute_id);
loadGalaxies(attribute_id, 'attribute');
}
handleGenericAjaxResponse(data);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadAttributeTags(attribute_id);
loadGalaxies(attribute_id, 'attribute');
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
},
type:"post",
url:"/attributes/addTag/" + attribute_id
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
$('#temp').remove();
},
type:"post",
url:"/attributes/addTag/" + attribute_id
});
});
$('#temp').remove();
return false;
}
function quickSubmitTagCollectionTagForm(selected_tag_ids, addData) {
var tag_collection_id = addData.id;
var formData = fetchFormDataAjax("/tag_collections/addTag/" + tag_collection_id);
$('#temp').html(formData);
$('#TagCollectionTag').val(JSON.stringify(selected_tag_ids));
$.ajax({
data: $('#TagCollectionAddTagForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
handleGenericAjaxResponse(data);
refreshTagCollectionRow(tag_collection_id);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadTagCollectionTags(tag_collection_id);
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
},
type:"post",
url:"/tag_collections/addTag/" + tag_collection_id
fetchFormDataAjax("/tag_collections/addTag/" + tag_collection_id, function(formData) {
$('body').append($('<div id="temp"/>').html(formData));
$('#temp #TagCollectionTag').val(JSON.stringify(selected_tag_ids));
$.ajax({
data: $('#TagCollectionAddTagForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
handleGenericAjaxResponse(data);
refreshTagCollectionRow(tag_collection_id);
},
error:function() {
showMessage('fail', 'Could not add tag.');
loadTagCollectionTags(tag_collection_id);
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
$('#temp').remove();
},
type:"post",
url:"/tag_collections/addTag/" + tag_collection_id
});
});
$('#temp').remove();
return false;
}
function refreshTagCollectionRow(tag_collection_id) {
@ -3643,43 +3643,43 @@ function addGalaxyListener(id) {
function quickSubmitGalaxyForm(cluster_ids, additionalData) {
var target_id = additionalData['target_id'];
var scope = additionalData['target_type'];
var formData = fetchFormDataAjax("/galaxies/attachMultipleClusters/" + target_id + "/" + scope);
$('#temp').html(formData);
$('#temp #GalaxyTargetIds').val(JSON.stringify(cluster_ids));
if (target_id == 'selected') {
$('#AttributeAttributeIds').val(getSelected());
}
$.ajax({
data: $('#GalaxyAttachMultipleClustersForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
if (target_id === 'selected') {
location.reload();
} else {
if (scope == 'tag_collection') {
fetchFormDataAjax("/galaxies/attachMultipleClusters/" + target_id + "/" + scope, function(formData) {
$('body').append($('<div id="temp"/>').html(formData));
$('#temp #GalaxyTargetIds').val(JSON.stringify(selected_tag_ids));
if (target_id == 'selected') {
$('#AttributeAttributeIds, #GalaxyAttributeIds').val(getSelected());
}
$.ajax({
data: $('#GalaxyAttachMultipleClustersForm').serialize(),
beforeSend: function (XMLHttpRequest) {
$(".loading").show();
},
success:function (data, textStatus) {
if (target_id === 'selected') {
location.reload();
} else {
loadGalaxies(target_id, scope);
handleGenericAjaxResponse(data);
if (scope == 'tag_collection') {
location.reload();
} else {
loadGalaxies(target_id, scope);
handleGenericAjaxResponse(data);
}
}
}
},
error:function() {
showMessage('fail', 'Could not add cluster.');
loadGalaxies(target_id, scope);
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
},
type:"post",
url: "/galaxies/attachMultipleClusters/" + target_id + "/" + scope
},
error:function() {
showMessage('fail', 'Could not add cluster.');
loadGalaxies(target_id, scope);
},
complete:function() {
$("#popover_form").fadeOut();
$("#gray_out").fadeOut();
$(".loading").hide();
$('#temp').remove();
},
type:"post",
url: "/galaxies/attachMultipleClusters/" + target_id + "/" + scope
});
});
$('#temp').remove();
return false;
}
function checkAndSetPublishedInfo(skip_reload) {
@ -3715,6 +3715,7 @@ $(document).keyup(function(e){
});
function closeScreenshot() {
$("#popover_box").fadeOut();
$("#screenshot_box").fadeOut();
$("#gray_out").fadeOut();
}
@ -3836,7 +3837,10 @@ function checkAndEnableCheckbox(id, enable) {
function enableDisableObjectRows(rows) {
rows.forEach(function(i) {
if ($("#Attribute" + i + "ValueSelect").length != 0) {
checkAndEnableCheckbox("#Attribute" + i + "Save", true);
checkAndEnableCheckbox("#Attribute" + i + "Save", $("#Attribute" + i + "ValueSelect").val() != "");
$("#Attribute" + i + "ValueSelect").bind('input propertychange', function() {
checkAndEnableCheckbox("#Attribute" + i + "Save", $(this).val() != "");
})
} else if ($("#Attribute" + i + "Attachment").length != 0) {
checkAndEnableCheckbox("#Attribute" + i + "Save", $("#Attribute" + i + "Attachment").val() != "");
} else {
@ -4078,6 +4082,8 @@ $(document).ready(function() {
url = "/objects/get_row/" + template_id + "/" + object_relation + "/" + k;
$.get(url, function(data) {
$('#row_' + object_relation + '_expand').before($(data).fadeIn()).html();
var $added_row = $('#row_' + object_relation + '_expand').prev().prev();
$added_row.find('select.Attribute_value_select option:first').attr('disabled', true);
});
});
$('.quickToggleCheckbox').toggle(function() {
@ -4269,30 +4275,30 @@ function submit_feed_overlap_tool(feedId) {
function changeTaxonomyRequiredState(checkbox) {
var checkbox_state = $(checkbox).is(":checked");
var taxonomy_id = $(checkbox).data('taxonomy-id');
var formData = fetchFormDataAjax('/taxonomies/toggleRequired/' + taxonomy_id);
$.ajax({
data: $(formData).serialize(),
success:function (data, textStatus) {
handleGenericAjaxResponse({'saved':true, 'success':['Taxonomy\'s required state toggled.']});
},
error:function() {
$(checkbox).prop('checked', !$(checkbox).prop('checked'));
handleGenericAjaxResponse({'saved':false, 'errors':['Could not toggle the required state of the taxonomy.']});
},
async:"false",
type:"post",
cache: false,
url: '/taxonomies/toggleRequired/' + taxonomy_id,
fetchFormDataAjax('/taxonomies/toggleRequired/' + taxonomy_id, function(formData) {
$.ajax({
data: $(formData).serialize(),
success:function (data, textStatus) {
handleGenericAjaxResponse({'saved':true, 'success':['Taxonomy\'s required state toggled.']});
},
error:function() {
$(checkbox).prop('checked', !$(checkbox).prop('checked'));
handleGenericAjaxResponse({'saved':false, 'errors':['Could not toggle the required state of the taxonomy.']});
},
async:"false",
type:"post",
cache: false,
url: '/taxonomies/toggleRequired/' + taxonomy_id,
});
});
formData = false;
}
function fetchFormDataAjax(url) {
function fetchFormDataAjax(url, callback) {
var formData = false;
$.ajax({
data: '[]',
success:function (data, textStatus) {
formData = data;
callback(data);
},
error:function() {
handleGenericAjaxResponse({'saved':false, 'errors':['Request failed due to an unexpected error.']});
@ -4302,7 +4308,6 @@ function fetchFormDataAjax(url) {
cache: false,
url: url
});
return formData;
}
(function(){

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 644 KiB

After

Width:  |  Height:  |  Size: 676 KiB

View File

@ -1,8 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190112 at Tue Feb 12 10:24:59 2019
Created by FontForge 20190112 at Tue May 7 11:33:43 2019
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@ -54,7 +58,7 @@ d="M336 448c26.5098 0 48 -21.4902 48 -48v-464l-192 112l-192 -112v464c0 26.5098 2
d="M464 384c26.5098 0 48 -21.4902 48 -48v-288c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h416zM458 48c3.31152 0 6 2.68848 6 6v276c0 3.31152 -2.68848 6 -6 6h-404c-3.31152 0 -6 -2.68848 -6 -6v-276
c0 -3.31152 2.68848 -6 6 -6h404zM128 296c22.0908 0 40 -17.9092 40 -40s-17.9092 -40 -40 -40s-40 17.9092 -40 40s17.9092 40 40 40zM96 96v48l39.5137 39.5146c4.6875 4.68652 12.2852 4.68652 16.9717 0l39.5146 -39.5146l119.514 119.515
c4.6875 4.68652 12.2852 4.68652 16.9717 0l87.5146 -87.5146v-80h-320z" />
<glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="575"
<glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="576"
d="M402.3 103.1l32 32c5 5 13.7002 1.5 13.7002 -5.69922v-145.4c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h273.5c7.09961 0 10.7002 -8.59961 5.7002 -13.7002l-32 -32c-1.5 -1.5 -3.5 -2.2998 -5.7002 -2.2998h-241.5v-352h352
v113.5c0 2.09961 0.799805 4.09961 2.2998 5.59961zM558.9 304.9l-262.601 -262.601l-90.3994 -10c-26.2002 -2.89941 -48.5 19.2002 -45.6006 45.6006l10 90.3994l262.601 262.601c22.8994 22.8994 59.8994 22.8994 82.6992 0l43.2002 -43.2002
c22.9004 -22.9004 22.9004 -60 0.100586 -82.7998zM460.1 274l-58.0996 58.0996l-185.8 -185.899l-7.2998 -65.2998l65.2998 7.2998zM524.9 353.7l-43.2002 43.2002c-4.10059 4.09961 -10.7998 4.09961 -14.7998 0l-30.9004 -30.9004l58.0996 -58.0996l30.9004 30.8994
@ -97,7 +101,7 @@ l20.6006 -21.7998l-10.6006 -28.0996c-5.5 -14.5 -12.5996 -28.1006 -19.8994 -40.20
<glyph glyph-name="folder" unicode="&#xf07b;"
d="M464 320c26.5098 0 48 -21.4902 48 -48v-224c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v288c0 26.5098 21.4902 48 48 48h146.74c8.49023 0 16.6299 -3.37012 22.6299 -9.37012l54.6299 -54.6299h192zM464 48v224h-198.62
c-8.49023 0 -16.6299 3.37012 -22.6299 9.37012l-54.6299 54.6299h-140.12v-288h416z" />
<glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="575"
<glyph glyph-name="folder-open" unicode="&#xf07c;" horiz-adv-x="576"
d="M527.9 224c37.6992 0 60.6992 -41.5 40.6992 -73.4004l-79.8994 -128c-8.7998 -14.0996 -24.2002 -22.5996 -40.7002 -22.5996h-400c-26.5 0 -48 21.5 -48 48v288c0 26.5 21.5 48 48 48h160l64 -64h160c26.5 0 48 -21.5 48 -48v-48h47.9004zM48 330v-233.4l62.9004 104.2
c8.69922 14.4004 24.2998 23.2002 41.0996 23.2002h280v42c0 3.2998 -2.7002 6 -6 6h-173.9l-64 64h-134.1c-3.2998 0 -6 -2.7002 -6 -6zM448 48l80 128h-378.8l-77.2002 -128h376z" />
<glyph glyph-name="chart-bar" unicode="&#xf080;"
@ -113,7 +117,7 @@ c0.400391 0.399414 22.4004 24.1992 37.7002 54.8994c-27.5 27.2002 -44 61.2002 -44
l19.7998 -4.5c16 -3.69922 32.5 -5.59961 49 -5.59961c86.7002 0 160 51.2998 160 112s-73.2998 112 -160 112s-160 -51.2998 -160 -112c0 -28.7002 16.2002 -50.5996 29.7002 -64l24.7998 -24.5l-15.5 -31.0996c-2.59961 -5.10059 -5.2998 -10.1006 -8 -14.8008
c14.5996 5.10059 29 12.3008 43.0996 21.4004zM498.3 96c13.5 13.4004 29.7002 35.2998 29.7002 64c0 49.2002 -48.2998 91.5 -112.7 106c0.299805 -3.2998 0.700195 -6.59961 0.700195 -10c0 -80.9004 -78 -147.5 -179.3 -158.3
c29.0996 -29.6006 77.2998 -49.7002 131.3 -49.7002c16.5 0 33 1.90039 49 5.59961l19.9004 4.60059l17.0996 -11.1006c14.0996 -9.09961 28.5 -16.2998 43.0996 -21.3994c-2.69922 4.7002 -5.39941 9.7002 -8 14.7998l-15.5 31.0996z" />
<glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="308"
<glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="576"
d="M288 62.7002v-54.2998l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998v-68.0996l-62.2002 -126
l-139 -20.2002l100.601 -98l-23.7002 -138.4z" />
<glyph glyph-name="lemon" unicode="&#xf094;"
@ -137,7 +141,7 @@ c8.58398 0 16.373 -3.04785 22.1201 -8h2.67871c6.96387 0 14.8623 6.19336 30.1816
v-0.0839844c0 -6.21777 -0.974609 -16.2148 -2.17578 -22.3154h86.1768zM428.8 192c18.9756 0 35.2002 16.2246 35.2002 35.2002c0 18.7002 -16.7754 35.2002 -35.2002 35.2002h-158.399c0 17.3242 26.3994 35.1992 26.3994 70.3994c0 26.4004 -20.625 35.2002 -44 35.2002
c-8.79395 0 -20.4443 -32.7119 -34.9258 -56.0996c-9.07422 -14.5752 -19.5244 -27.2256 -30.7988 -39.875c-16.1094 -18.374 -33.8359 -36.6328 -59.0752 -39.5967v-176.753c42.79 -3.7627 74.5088 -39.6758 120 -39.6758h21.2988
c40.5244 0 57.124 22.1973 50.6006 61.3252c14.6113 8.00098 24.1514 33.9785 12.9248 53.625c19.3652 18.2246 17.7871 46.3809 4.9502 61.0498h91.0254zM88 64c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
<glyph glyph-name="hand-point-left" unicode="&#xf0a5;" horiz-adv-x="511"
<glyph glyph-name="hand-point-left" unicode="&#xf0a5;"
d="M0 227.2c0 45.0986 38.1006 83.2002 83.2002 83.2002h86.1758c-1.3623 6.91016 -2.17578 14.374 -2.17578 22.3994c0 47.9141 35.0723 83.2002 92 83.2002c45.3135 0 57.002 -48.5371 75.7061 -78.7852c7.73438 -12.4121 16.9951 -23.3154 25.8506 -33.2529
l0.130859 -0.145508l0.128906 -0.148438c15.3213 -17.4746 23.2197 -23.668 30.1836 -23.668h2.67871c5.74707 4.95215 13.5361 8 22.1201 8h64c17.6729 0 32 -12.8936 32 -28.7998v-230.4c0 -15.9062 -14.3271 -28.7998 -32 -28.7998h-64
c-8.58398 0 -16.373 3.04785 -22.1201 8h-2.67871c-28.6885 0 -67.1367 -40 -127.2 -40h-21.2988c-62.542 0 -98.8008 38.6582 -99.9404 91.1445c-12.4814 17.8135 -18.4922 40.7852 -15.9844 62.791c-2.96094 5.8125 -6.51367 15.6973 -7.92969 22.0645h-35.6465
@ -261,14 +265,14 @@ h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416z" />
d="M288 200v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v28c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM276 128c6.59961 0 12 -5.40039 12 -12v-28c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12
v28c0 6.59961 5.40039 12 12 12h168zM384 316.1v-332.1c0 -26.5 -21.5 -48 -48 -48h-288c-26.5 0 -48 21.5 -48 48v416c0 26.5 21.5 48 48 48h204.1c12.7002 0 24.9004 -5.09961 33.9004 -14.0996l83.9004 -83.9004c9 -8.90039 14.0996 -21.2002 14.0996 -33.9004z
M256 396.1v-76.0996h76.0996zM336 -16v288h-104c-13.2998 0 -24 10.7002 -24 24v104h-160v-416h288z" />
<glyph glyph-name="thumbs-up" unicode="&#xf164;" horiz-adv-x="480"
<glyph glyph-name="thumbs-up" unicode="&#xf164;"
d="M466.27 161.31c4.6748 -22.6465 0.864258 -44.5371 -8.98926 -62.9893c2.95898 -23.8682 -4.02148 -48.5654 -17.3398 -66.9902c-0.954102 -55.9072 -35.8232 -95.3301 -112.94 -95.3301c-7 0 -15 0.00976562 -22.2197 0.00976562
c-102.742 0 -133.293 38.9395 -177.803 39.9404c-3.56934 -13.7764 -16.085 -23.9502 -30.9775 -23.9502h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h98.7598c19.1455 16.9531 46.0137 60.6533 68.7598 83.4004
c13.667 13.667 10.1533 108.6 71.7607 108.6c57.5801 0 95.2695 -31.9355 95.2695 -104.73c0 -18.4092 -3.92969 -33.7295 -8.84961 -46.5391h36.4795c48.6025 0 85.8203 -41.5654 85.8203 -85.5801c0 -19.1504 -4.95996 -34.9902 -13.7305 -49.8408zM404.52 107.48
c21.5811 20.3838 18.6992 51.0645 5.21094 65.6191c9.44922 0 22.3594 18.9102 22.2695 37.8105c-0.0898438 18.9102 -16.71 37.8203 -37.8203 37.8203h-103.989c0 37.8193 28.3594 55.3691 28.3594 94.5391c0 23.75 0 56.7305 -47.2695 56.7305
c-18.9102 -18.9102 -9.45996 -66.1797 -37.8203 -94.54c-26.5596 -26.5703 -66.1797 -97.46 -94.54 -97.46h-10.9199v-186.17c53.6113 0 100.001 -37.8203 171.64 -37.8203h37.8203c35.5117 0 60.8203 17.1201 53.1201 65.9004
c15.2002 8.16016 26.5 36.4395 13.9395 57.5703zM88 16c0 13.2549 -10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24s24 10.7451 24 24z" />
<glyph glyph-name="thumbs-down" unicode="&#xf165;" horiz-adv-x="480"
<glyph glyph-name="thumbs-down" unicode="&#xf165;"
d="M466.27 222.69c8.77051 -14.8506 13.7305 -30.6904 13.7305 -49.8408c0 -44.0146 -37.2178 -85.5801 -85.8203 -85.5801h-36.4795c4.91992 -12.8096 8.84961 -28.1299 8.84961 -46.5391c0 -72.7949 -37.6895 -104.73 -95.2695 -104.73
c-61.6074 0 -58.0938 94.9326 -71.7607 108.6c-22.7461 22.7471 -49.6133 66.4473 -68.7598 83.4004h-7.05176c-5.5332 -9.56152 -15.8662 -16 -27.708 -16h-64c-17.6729 0 -32 14.3271 -32 32v240c0 17.6729 14.3271 32 32 32h64c8.11328 0 15.5146 -3.02539 21.1553 -8
h10.8447c40.9971 0 73.1953 39.9902 176.78 39.9902c7.21973 0 15.2197 0.00976562 22.2197 0.00976562c77.1172 0 111.986 -39.4229 112.94 -95.3301c13.3184 -18.4248 20.2979 -43.1221 17.3398 -66.9902c9.85352 -18.4521 13.6641 -40.3428 8.98926 -62.9893zM64 152
@ -282,7 +286,7 @@ c-11.0996 7.5 -17.7998 20 -17.7998 33.5s6.59961 26 17.7998 33.5996l59.7998 40.5l
l40.4004 -59.8994l70.8994 13.6992c13 2.60059 26.6006 -1.59961 36.2002 -11.0996c9.5 -9.59961 13.7002 -23.2002 11.0996 -36.4004l-13.6992 -71zM381.3 140.5l76.7998 52.0996l-76.7998 52l17.6006 91.1006l-91 -17.6006l-51.9004 76.9004l-51.7998 -76.7998
l-91 17.5996l17.5996 -91.2002l-76.7998 -52l76.7998 -52l-17.5996 -91.1992l90.8994 17.5996l51.9004 -77l51.9004 76.9004l91 -17.6006zM256 296c57.2998 0 104 -46.7002 104 -104s-46.7002 -104 -104 -104s-104 46.7002 -104 104s46.7002 104 104 104zM256 136
c30.9004 0 56 25.0996 56 56s-25.0996 56 -56 56s-56 -25.0996 -56 -56s25.0996 -56 56 -56z" />
<glyph glyph-name="moon" unicode="&#xf186;" horiz-adv-x="511"
<glyph glyph-name="moon" unicode="&#xf186;"
d="M279.135 -64c-141.424 0 -256 114.64 -256 256c0 141.425 114.641 256 256 256c13.0068 -0.00195312 33.9443 -1.91797 46.7354 -4.27734c44.0205 -8.13086 53.7666 -66.8691 15.0215 -88.9189c-41.374 -23.5439 -67.4336 -67.4121 -67.4336 -115.836
c0 -83.5234 75.9238 -146.475 158.272 -130.792c43.6904 8.32129 74.5186 -42.5693 46.248 -77.4004c-47.8613 -58.9717 -120.088 -94.7754 -198.844 -94.7754zM279.135 400c-114.875 0 -208 -93.125 -208 -208s93.125 -208 208 -208
c65.2314 0 123.439 30.0361 161.575 77.0244c-111.611 -21.2568 -215.252 64.0957 -215.252 177.943c0 67.5127 36.9326 126.392 91.6934 157.555c-12.3271 2.27637 -25.0312 3.47754 -38.0166 3.47754z" />
@ -730,7 +734,7 @@ c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2
c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM328 296
c23.7998 0 52.7002 -29.2998 55.7998 -71.4004c0.299805 -3.7998 -2 -7.19922 -5.59961 -8.2998c-3.10059 -1 -7.2002 0 -9.2998 3.7002l-9.5 17c-7.7002 13.7002 -19.2002 21.5996 -31.5 21.5996c-12.3008 0 -23.8008 -7.89941 -31.5 -21.5996l-9.5 -17
c-1.80078 -3.2002 -5.80078 -4.7002 -9.30078 -3.7002c-3.59961 1.10059 -5.89941 4.60059 -5.59961 8.2998c3.2998 42.1006 32.2002 71.4004 56 71.4004z" />
<glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="503"
<glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="504"
d="M304 139.5c0 -13 -13.4004 -27.2998 -35.0996 -36.4004c21.7998 -8.69922 35.1992 -23 35.1992 -36c0 -19.1992 -28.6992 -41.5 -71.5 -44h-0.5c-3.69922 0 -7 2.60059 -7.7998 6.2002c-0.899414 3.7998 1.10059 7.7002 4.7002 9.2002l17 7.2002
c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.2002c-6 2.59961 -5.7002 12.3994 0 14.7998l17 7.2002c12.9004 5.5 20.7002 13.5 20.7002 21.5s-7.7998 16 -20.7998 21.5l-16.9004 7.19922c-3.59961 1.5 -5.59961 5.40039 -4.7002 9.2002
c0.799805 3.7998 4.40039 6.60059 8.2002 6.2002c42.7002 -2.5 71.5 -24.7998 71.5 -44zM374.5 223c-14.7998 13.2002 -46.2002 13.2002 -61 0l-9.5 -8.5c-2.5 -2.2998 -7.90039 -4.7002 -13.7002 -1.59961c-4.39941 2.39941 -6.89941 7.39941 -6.09961 12.3994

Before

Width:  |  Height:  |  Size: 141 KiB

After

Width:  |  Height:  |  Size: 141 KiB

View File

@ -1,8 +1,12 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.8.2 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20190112 at Tue Feb 12 10:24:59 2019
Created by FontForge 20190112 at Tue May 7 11:33:44 2019
By Robert Madole
Copyright (c) Font Awesome
</metadata>
@ -19,7 +23,7 @@ Copyright (c) Font Awesome
bbox="-0.983398 -64.9834 640.104 448.427"
underline-thickness="25"
underline-position="-51"
unicode-range="U+0020-F82F"
unicode-range="U+0020-F83E"
/>
<missing-glyph />
<glyph glyph-name="glass-martini" unicode="&#xf000;"
@ -28,7 +32,7 @@ c30.0498 0 45.0996 -36.3398 23.8496 -57.5996z" />
<glyph glyph-name="music" unicode="&#xf001;"
d="M511.99 415.99l0.00976562 -351.99c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64c11.2803 0 21.9502 -1.54004 32 -3.91992v184.63l-256 -75.0195v-233.69c0 -35.3496 -42.9805 -64 -96 -64s-96 28.6504 -96 64s42.9805 64 96 64
c11.2803 0 21.9502 -1.54004 32 -3.91992v261.42c0 14 9.09961 26.2998 22.4004 30.5l319.989 94.5c20.5 6.5 41.6006 -8.7998 41.6006 -30.5098z" />
<glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="511"
<glyph glyph-name="search" unicode="&#xf002;"
d="M505 5.2998c9.2998 -9.39941 9.2998 -24.5996 -0.0996094 -34l-28.3008 -28.2998c-9.2998 -9.40039 -24.5 -9.40039 -33.8994 0l-99.7002 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208
s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7zM208 112c70.7998 0 128 57.2998 128 128c0 70.7998 -57.2998 128 -128 128c-70.7998 0 -128 -57.2998 -128 -128c0 -70.7998 57.2998 -128 128 -128z
" />
@ -72,16 +76,16 @@ c9.99707 -9.99707 9.99707 -26.2061 0 -36.2041l-294.4 -294.401c-9.99805 -9.99707
d="M242.72 192l100.07 -100.07c12.2803 -12.29 12.2803 -32.1992 0 -44.4795l-22.2402 -22.2402c-12.2803 -12.2803 -32.2002 -12.2803 -44.4795 0l-100.07 100.07l-100.07 -100.07c-12.2793 -12.2803 -32.1992 -12.2803 -44.4795 0l-22.2402 22.2402
c-12.2803 12.29 -12.2803 32.2002 0 44.4795l100.07 100.07l-100.07 100.07c-12.2803 12.29 -12.2803 32.1992 0 44.4795l22.2402 22.2402c12.29 12.2803 32.2002 12.2803 44.4795 0l100.07 -100.07l100.07 100.07c12.29 12.2803 32.1992 12.2803 44.4795 0
l22.2402 -22.2402c12.2803 -12.29 12.2803 -32.2002 0 -44.4795z" />
<glyph glyph-name="search-plus" unicode="&#xf00e;" horiz-adv-x="511"
<glyph glyph-name="search-plus" unicode="&#xf00e;"
d="M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-56v-56c0 -6.59961 -5.40039 -12 -12 -12h-32c-6.59961 0 -12 5.40039 -12 12v56h-56c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h56v56c0 6.59961 5.40039 12 12 12h32c6.59961 0 12 -5.40039 12 -12
v-56h56c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208
s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136
s60.7998 -136 136 -136s136 60.7998 136 136z" />
<glyph glyph-name="search-minus" unicode="&#xf010;" horiz-adv-x="511"
<glyph glyph-name="search-minus" unicode="&#xf010;"
d="M304 256v-32c0 -6.59961 -5.40039 -12 -12 -12h-168c-6.59961 0 -12 5.40039 -12 12v32c0 6.59961 5.40039 12 12 12h168c6.59961 0 12 -5.40039 12 -12zM505 -28.7002l-28.2998 -28.2998c-9.40039 -9.40039 -24.6006 -9.40039 -33.9004 0l-99.7998 99.7002
c-4.5 4.5 -7 10.5996 -7 17v16.2998c-35.2998 -27.5996 -79.7002 -44 -128 -44c-114.9 0 -208 93.0996 -208 208s93.0996 208 208 208s208 -93.0996 208 -208c0 -48.2998 -16.4004 -92.7002 -44 -128h16.2998c6.40039 0 12.5 -2.5 17 -7l99.7002 -99.7002
c9.2998 -9.39941 9.2998 -24.5996 0 -34zM344 240c0 75.2002 -60.7998 136 -136 136s-136 -60.7998 -136 -136s60.7998 -136 136 -136s136 60.7998 136 136z" />
<glyph glyph-name="power-off" unicode="&#xf011;" horiz-adv-x="511"
<glyph glyph-name="power-off" unicode="&#xf011;"
d="M400 393.9c63 -45 104 -118.601 104 -201.9c0 -136.8 -110.8 -247.7 -247.5 -248c-136.5 -0.299805 -248.3 111 -248.5 247.6c-0.0996094 83.3008 40.9004 157.101 103.8 202.2c11.7002 8.2998 28 4.7998 35 -7.7002l15.7998 -28.0996
c5.90039 -10.5 3.10059 -23.7998 -6.59961 -31c-41.5 -30.7998 -68 -79.5996 -68 -134.9c-0.0996094 -92.2998 74.5 -168.1 168 -168.1c91.5996 0 168.6 74.2002 168 169.1c-0.299805 51.8008 -24.7002 101.801 -68.0996 134c-9.7002 7.2002 -12.4004 20.5 -6.5 30.9004
l15.7998 28.0996c7 12.4004 23.2002 16.1006 34.7998 7.80078zM296 184c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v240c0 13.2998 10.7002 24 24 24h32c13.2998 0 24 -10.7002 24 -24v-240z" />
@ -119,17 +123,18 @@ s9 -20 20 -20s20 9 20 20zM452 -16c0 11 -9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20s
<glyph glyph-name="inbox" unicode="&#xf01c;" horiz-adv-x="576"
d="M567.938 204.092c4.4502 -6.6748 8.06152 -18.6025 8.06152 -26.624v-0.000976562v-129.467c0 -26.5098 -21.4902 -48 -48 -48h-480c-26.5098 0 -48 21.4902 -48 48v129.467v0.000976562c0 8.02148 3.61133 19.9492 8.06152 26.624l105.689 158.534
c7.86621 11.7988 25.7578 21.374 39.9385 21.374h268.621c14.1807 0 32.0732 -9.57617 39.9395 -21.374zM162.252 320l-85.334 -128h123.082l32 -64h112l32 64h123.082l-85.333 128h-251.497z" />
<glyph glyph-name="redo" unicode="&#xf01e;" horiz-adv-x="520"
d="M500.333 448c6.62695 0 12 -5.37305 12 -12v-200.332c0 -6.62695 -5.37305 -12 -12 -12h-200.333c-6.62695 0 -12 5.37305 -12 12v47.4111c0 6.85254 5.72852 12.3135 12.5742 11.9863l101.524 -4.86523c-31.5928 46.9414 -85.207 77.7998 -146.099 77.7998
c-97.2842 0 -176 -78.7334 -176 -176c0 -97.2842 78.7334 -176 176 -176c44.6064 0 85.3076 16.5518 116.309 43.8555c4.74023 4.17383 11.9141 3.92285 16.3809 -0.543945l33.9707 -33.9707c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326
c-43.9756 -39.7217 -102.252 -63.9082 -166.178 -63.9082c-136.904 0 -247.899 110.932 -248 247.813c-0.100586 136.66 111.34 248.187 248.001 248.187c75.6709 0 143.415 -33.8994 188.901 -87.333l-3.9668 82.7588c-0.327148 6.8457 5.13379 12.5742 11.9863 12.5742
h47.4111z" />
<glyph glyph-name="redo" unicode="&#xf01e;"
d="M500.33 448c6.62402 0 12 -5.37598 12 -12v-200.34c0 -6.62402 -5.37598 -12 -12 -12h-200.33c-6.62402 0 -12 5.37598 -12 12v47.4102v0.0136719c0 6.62402 5.37598 12 12 12c0.157227 0 0.413086 -0.00683594 0.570312 -0.0136719l101.529 -4.87012
c-28.8721 42.9609 -94.3145 77.8281 -146.076 77.8281c-97.1514 0 -176 -78.8486 -176 -176c0 -97.1523 78.8486 -176 176 -176c36.6543 0 88.7373 19.6504 116.257 43.8613c1.87207 1.63672 5.40918 2.96387 7.89551 2.96387c2.74316 0 6.54395 -1.57422 8.48438 -3.51367
l34 -34c1.94141 -1.94043 3.51758 -5.74316 3.51758 -8.48828c0 -2.96094 -1.79102 -6.9668 -3.99805 -8.94141c-38.9707 -35.2783 -113.264 -63.9102 -165.831 -63.9102h-0.348633c-136.9 0 -247.9 110.93 -248 247.81c-0.0996094 136.66 111.34 248.19 248 248.19
h0.272461c63.2246 0 147.739 -39.124 188.647 -87.3301l-4 82.7598c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62402 5.37598 12 12 12h0.0136719h47.4102z" />
<glyph glyph-name="sync" unicode="&#xf021;"
d="M440.935 435.426c-0.327148 6.8457 5.13477 12.5742 11.9873 12.5742h47.4111c6.62695 0 12 -5.37305 12 -12v-200.333c0 -6.62695 -5.37305 -12 -12 -12h-200.333c-6.62695 0 -12 5.37305 -12 12v47.4111c0 6.85254 5.72852 12.3135 12.5742 11.9863l101.529 -4.86523
c-31.5918 46.9443 -85.2109 77.8008 -146.104 77.8008c-83.0693 0 -152.593 -57.4082 -171.137 -134.741c-1.29883 -5.41699 -6.10645 -9.25879 -11.6768 -9.25879h-49.084c-7.49902 0 -13.1943 6.80664 -11.8066 14.1758c21.6367 114.9 122.518 201.824 243.704 201.824
c75.6738 0 143.416 -33.9043 188.901 -87.3398zM256 16c83.0693 0 152.593 57.4082 171.137 134.741c1.29883 5.41699 6.10645 9.25879 11.6768 9.25879h49.084c7.49902 0 13.1943 -6.80664 11.8066 -14.1758c-21.6367 -114.9 -122.518 -201.824 -243.704 -201.824
c-75.5947 0 -143.275 33.834 -188.759 87.1738l4.12891 -82.5752c0.342773 -6.85352 -5.12207 -12.5986 -11.9854 -12.5986h-47.3848c-6.62695 0 -12 5.37305 -12 12v200.332c0 6.62695 5.37305 12 12 12h200.332c6.62695 0 12 -5.37305 12 -12v-47.4121
c0 -6.85156 -5.72852 -12.3125 -12.5732 -11.9863l-101.868 4.87109c31.5928 -46.9463 85.2148 -77.8047 146.109 -77.8047z" />
d="M440.65 435.43c-0.0078125 0.157227 -0.0136719 0.413086 -0.0136719 0.570312c0 6.62012 5.37305 11.9961 11.9932 12h47.3701c6.62402 0 12 -5.37598 12 -12v-200.35c0 -6.62402 -5.37598 -12 -12 -12h-200.22c-6.62402 0 -12 5.37598 -12 12v47.4092v0.0136719
c0 6.62402 5.37598 12 12 12c0.157227 0 0.412109 -0.00585938 0.569336 -0.0136719l101.46 -4.85938c-28.8584 42.9248 -94.2598 77.7627 -145.984 77.7627c-76.4834 0 -153.099 -60.3467 -171.016 -134.703c-1.19727 -5.10547 -6.4248 -9.25391 -11.6699 -9.25977
h-49.0498c-6.62402 0 -12 5.37598 -12 12c0 0.606445 0.0898438 1.58301 0.200195 2.17969c21.6201 114.9 122.44 201.82 243.54 201.82h0.28418c63.2031 0 147.667 -39.1279 188.536 -87.3398zM255.83 16c76.4971 0 153.144 60.3633 171.03 134.74
c1.19727 5.10547 6.4248 9.25391 11.6699 9.25977h49.0498c6.62402 0 12 -5.37598 12 -12c0 -0.606445 -0.0898438 -1.58301 -0.200195 -2.17969c-21.6201 -114.9 -122.439 -201.82 -243.55 -201.82h-0.234375c-63.1289 0 -147.53 39.0518 -188.396 87.1699
l4.14941 -82.5703c0.00878906 -0.165039 0.015625 -0.433594 0.015625 -0.599609c0 -6.62402 -5.37598 -12 -12 -12h-0.015625h-47.3496c-6.62402 0 -12 5.37598 -12 12v200.33c0 6.62402 5.37598 12 12 12h200.2c6.62402 0 12 -5.37598 12 -12v-47.4004v-0.0136719
c0 -6.62402 -5.37598 -12 -12 -12c-0.157227 0 -0.413086 0.00683594 -0.570312 0.0136719l-101.8 4.87012c28.7998 -42.9453 94.1406 -77.7998 145.85 -77.7998h0.150391z" />
<glyph glyph-name="list-alt" unicode="&#xf022;"
d="M464 -32h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48zM128 328c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 232
c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM128 136c-22.0908 0 -40 -17.9092 -40 -40s17.9092 -40 40 -40s40 17.9092 40 40s-17.9092 40 -40 40zM416 272v32c0 6.62695 -5.37305 12 -12 12h-200
@ -138,7 +143,7 @@ c0 6.62695 -5.37305 12 -12 12h-200c-6.62695 0 -12 -5.37305 -12 -12v-32c0 -6.6269
<glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="448"
d="M400 224c26.5 0 48 -21.5 48 -48v-192c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v192c0 26.5 21.5 48 48 48h24v72c0 83.7998 68.2002 152 152 152s152 -68.2002 152 -152v-72h24zM296 224v72c0 39.7002 -32.2998 72 -72 72s-72 -32.2998 -72 -72v-72h144
z" />
<glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="520"
<glyph glyph-name="flag" unicode="&#xf024;"
d="M349.565 349.217c40.4951 0 82.6113 15.9062 116.949 31.8545c21.2168 9.85352 45.4854 -5.62305 45.4854 -29.0166v-243.1c0 -10.5264 -5.16016 -20.4072 -13.8428 -26.3584c-35.8379 -24.5635 -74.3359 -40.8574 -122.505 -40.8574
c-67.373 0 -111.629 34.7832 -165.218 34.7832c-50.8525 0 -86.124 -10.0586 -114.435 -22.1221v-94.4004c0 -13.2549 -10.7451 -24 -24 -24h-16c-13.2549 0 -24 10.7451 -24 24v386.055c-14.5029 10.1201 -24 26.9189 -24 45.9453
c0 31.7041 26.3447 57.2539 58.3379 55.9521c28.4678 -1.1582 51.7793 -23.9668 53.5508 -52.4033c0.0625 -0.980469 0.113281 -2.57324 0.113281 -3.55566c0 -5.71094 -1.65723 -14.6738 -3.69922 -20.0059c20.7363 7.62891 43.0898 12.0127 68.0449 12.0127
@ -147,8 +152,8 @@ c67.373 0 111.63 -34.7832 165.218 -34.7832z" />
d="M256 416c141.504 0 256 -114.521 256 -256v-48c0 -10.917 -7.9248 -23.7402 -17.6904 -28.6221l-14.3818 -7.19141c-2.01074 -60.0889 -51.3486 -108.187 -111.928 -108.187h-24c-13.2549 0 -24 10.7451 -24 24v176c0 13.2549 10.7451 24 24 24h24
c31.3418 0 59.6709 -12.8789 80 -33.627v1.62695c0 105.869 -86.1309 192 -192 192s-192 -86.1309 -192 -192v-1.62695c20.3291 20.748 48.6582 33.627 80 33.627h24c13.2549 0 24 -10.7451 24 -24v-176c0 -13.2549 -10.7451 -24 -24 -24h-24
c-60.5791 0 -109.917 48.0967 -111.928 108.187l-14.3828 7.19141c-9.76465 4.88184 -17.6895 17.7051 -17.6895 28.6221v0v48c0 141.504 114.52 256 256 256z" />
<glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="258"
d="M216.36 376.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06z" />
<glyph glyph-name="volume-off" unicode="&#xf026;" horiz-adv-x="256"
d="M215 377c15 15 41 4.46973 41 -17v-336c0 -21.4697 -26 -32 -41 -17l-88.9404 89h-102.06c-13.248 0 -24 10.752 -24 24v144c0 13.248 10.752 24 24 24h102z" />
<glyph glyph-name="volume-down" unicode="&#xf027;" horiz-adv-x="384"
d="M215.03 375.96c15.0098 15 40.9697 4.49023 40.9697 -16.9795v-335.961c0 -21.4395 -25.9404 -32 -40.9697 -16.9697l-88.9707 88.9502h-102.06c-13.2598 0 -24 10.75 -24 24v144c0 13.2598 10.7402 24 24 24h102.06zM338.23 267.88
c28.2393 -15.5498 45.7793 -44.9902 45.7793 -76.8701s-17.54 -61.3301 -45.7695 -76.8799c-11.5605 -6.34961 -26.1807 -2.20996 -32.6104 9.4502c-6.38965 11.6104 -2.16016 26.2002 9.4502 32.6104c12.9004 7.08984 20.9199 20.4297 20.9199 34.8096
@ -166,10 +171,10 @@ d="M0 224v192h192v-192h-192zM64 352v-64h64v64h-64zM256 416h192v-192h-192v192zM38
d="M0 0v384h18v-384h-18zM26.8574 0.273438v383.727h9.14258v-383.727h-9.14258zM54 0.273438v383.727h8.85742v-383.727h-8.85742zM98.8574 0.273438v383.727h8.85645v-383.727h-8.85645zM134.857 0.273438v383.727h17.7139v-383.727h-17.7139zM179.714 0.273438v383.727
h8.85742v-383.727h-8.85742zM197.714 0.273438v383.727h8.85742v-383.727h-8.85742zM215.714 0.273438v383.727h8.85742v-383.727h-8.85742zM251.429 0.273438v383.727h18v-383.727h-18zM296.286 0.273438v383.727h18v-383.727h-18zM332.285 0.273438v383.727h18.001
v-383.727h-18.001zM368.286 0.273438v383.727h18.001v-383.727h-18.001zM395.143 0.273438v383.727h18v-383.727h-18zM440.286 0.273438v383.727h26.8564v-383.727h-26.8564zM476 0.273438v383.727h9.14258v-383.727h-9.14258zM494 0v384h18v-384h-18z" />
<glyph glyph-name="tag" unicode="&#xf02b;" horiz-adv-x="511"
<glyph glyph-name="tag" unicode="&#xf02b;"
d="M0 195.882v204.118c0 26.5098 21.4902 48 48 48h204.118c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-211.883 211.883
c-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404zM112 384c-26.5098 0 -48 -21.4902 -48 -48s21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48z" />
<glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="639"
<glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="640"
d="M497.941 222.059c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818l-204.118 -204.118c-18.7461 -18.7451 -49.1387 -18.7441 -67.8818 0l-211.883 211.883c-7.75977 7.75977 -14.0586 22.9658 -14.0586 33.9404v204.118c0 26.5098 21.4902 48 48 48h204.118
c10.9746 0 26.1807 -6.29883 33.9404 -14.0586zM112 288c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM625.941 154.177l-204.118 -204.118c-18.7451 -18.7441 -49.1377 -18.7441 -67.8818 0l-0.360352 0.360352
l174.059 174.059c16.999 16.999 26.3604 39.6006 26.3604 63.6406s-9.3623 46.6406 -26.3604 63.6396l-196.242 196.242h48.7207c10.9746 0 26.1807 -6.29883 33.9404 -14.0586l211.883 -211.883c18.7441 -18.7441 18.7441 -49.1367 0 -67.8818z" />
@ -251,7 +256,7 @@ d="M8 192c0 136.967 111.034 248 248 248s248 -111.034 248 -248s-111.033 -248 -248
<glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="352"
d="M205.22 425.91c46.9902 -158.48 146.78 -200.07 146.78 -311.82c0 -98.4395 -78.7197 -178.09 -176 -178.09s-176 79.6504 -176 178.09c0 111.19 100.01 154.061 146.78 311.82c9 30.1201 50.5 28.7803 58.4395 0zM176 0c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16
c-44.1104 0 -80 35.8896 -80 80c0 8.83984 -7.16016 16 -16 16s-16 -7.16016 -16 -16c0 -61.75 50.25 -112 112 -112z" />
<glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="575"
<glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="576"
d="M402.6 364.8l90.2002 -90.2002c3.7998 -3.7998 3.7998 -10 0 -13.7998l-218.399 -218.399l-92.8008 -10.3008c-12.3994 -1.39941 -22.8994 9.10059 -21.5 21.5l10.3008 92.8008l218.399 218.399c3.7998 3.7998 10 3.7998 13.7998 0zM564.6 387.7
c15.2002 -15.2002 15.2002 -39.9004 0 -55.2002l-35.3994 -35.4004c-3.7998 -3.7998 -10 -3.7998 -13.7998 0l-90.2002 90.2002c-3.7998 3.7998 -3.7998 10 0 13.7998l35.3994 35.4004c15.3008 15.2002 40 15.2002 55.2002 0zM384 101.8c0 3.2002 1.2998 6.2002 3.5 8.5
l40 40c7.59961 7.5 20.5 2.2002 20.5 -8.5v-157.8c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h285.8c10.7002 0 16.1006 -12.9004 8.5 -20.5l-40 -40c-2.2998 -2.2002 -5.2998 -3.5 -8.5 -3.5h-229.8v-320h320v101.8z" />
@ -264,13 +269,13 @@ l-171.5 155.3v-130.7c0 -27.4004 -31.9004 -41.7002 -52.5 -24.5996l-171.5 155.3v-1
<glyph glyph-name="backward" unicode="&#xf04a;"
d="M11.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996zM267.5 167.4c-15.2998 12.7998 -15.2998 36.3994 0 49.1992l192 160
c20.5996 17.2002 52.5 2.80078 52.5 -24.5996v-320c0 -27.4004 -31.9004 -41.7998 -52.5 -24.5996z" />
<glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="447"
<glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="448"
d="M424.4 233.3c31.5 -18.5 31.3994 -64.0996 0 -82.5996l-352 -208c-31.7002 -18.7998 -72.4004 3.7998 -72.4004 41.2998v416.1c0 41.8008 43.7998 58.2002 72.4004 41.3008z" />
<glyph glyph-name="pause" unicode="&#xf04c;" horiz-adv-x="448"
d="M144 -31h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48zM448 17c0 -26.5 -21.5 -48 -48 -48h-96c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48 -21.5 48 -48v-352z" />
<glyph glyph-name="stop" unicode="&#xf04d;" horiz-adv-x="448"
d="M400 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352z" />
<glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="511"
<glyph glyph-name="forward" unicode="&#xf04e;"
d="M500.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996zM244.5 216.6c15.2998 -12.7998 15.2998 -36.3994 0 -49.1992l-192 -160
c-20.5996 -17.2002 -52.5 -2.80078 -52.5 24.5996v320c0 27.4004 31.9004 41.7002 52.5 24.5996z" />
<glyph glyph-name="fast-forward" unicode="&#xf050;"
@ -285,7 +290,7 @@ c19.0156 20.7432 51.7529 20.7422 70.7666 0l175.939 -192.008c28.1973 -30.7607 6.2
<glyph glyph-name="chevron-left" unicode="&#xf053;" horiz-adv-x="320"
d="M34.5195 208.97l194.351 194.34c9.37012 9.37012 24.5703 9.37012 33.9395 0l22.6709 -22.6699c9.35938 -9.35938 9.36914 -24.5195 0.0390625 -33.8994l-154.029 -154.74l154.02 -154.75c9.33984 -9.37988 9.32031 -24.54 -0.0400391 -33.9004l-22.6699 -22.6699
c-9.37012 -9.37012 -24.5693 -9.37012 -33.9395 0l-194.341 194.351c-9.36914 9.37012 -9.36914 24.5693 0 33.9395z" />
<glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="319"
<glyph glyph-name="chevron-right" unicode="&#xf054;" horiz-adv-x="320"
d="M285.476 175.029l-194.344 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9404 0l-22.667 22.667c-9.35742 9.35742 -9.375 24.5225 -0.0400391 33.9014l154.021 154.746l-154.021 154.745c-9.33496 9.37891 -9.31738 24.5439 0.0400391 33.9014l22.667 22.667
c9.37305 9.37207 24.5684 9.37207 33.9404 0l194.343 -194.344c9.37305 -9.37207 9.37305 -24.5674 0.000976562 -33.9404z" />
<glyph glyph-name="plus-circle" unicode="&#xf055;"
@ -323,7 +328,7 @@ l-120.5 -114.8h287.4c13.2998 0 24 -10.7002 24 -24v-32c0 -13.2998 -10.7002 -24 -2
<glyph glyph-name="arrow-right" unicode="&#xf061;" horiz-adv-x="448"
d="M190.5 381.1l22.2002 22.2002c9.39941 9.40039 24.5996 9.40039 33.8994 0l194.4 -194.3c9.40039 -9.40039 9.40039 -24.5996 0 -33.9004l-194.4 -194.399c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.2002 22.2002c-9.5 9.5 -9.2998 25 0.400391 34.2998
l120.5 114.8h-287.4c-13.2998 0 -24 10.7002 -24 24v32c0 13.2998 10.7002 24 24 24h287.4l-120.5 114.8c-9.80078 9.2998 -10 24.7998 -0.400391 34.2998z" />
<glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="447"
<glyph glyph-name="arrow-up" unicode="&#xf062;" horiz-adv-x="448"
d="M34.9004 158.5l-22.2002 22.2002c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l194.3 194.4c9.40039 9.40039 24.5996 9.40039 33.9004 0l194.3 -194.3c9.39941 -9.40039 9.39941 -24.6006 0 -33.9004l-22.2002 -22.2002c-9.5 -9.5 -25 -9.2998 -34.2998 0.400391
l-114.7 120.4v-287.4c0 -13.2998 -10.7002 -24 -24 -24h-32c-13.2998 0 -24 10.7002 -24 24v287.4l-114.8 -120.5c-9.2998 -9.80078 -24.7998 -10 -34.2998 -0.400391z" />
<glyph glyph-name="arrow-down" unicode="&#xf063;" horiz-adv-x="448"
@ -400,13 +405,14 @@ c0 21.4365 25.9434 31.9971 40.9707 16.9697l80 -79.9814c9.37305 -9.37207 9.37305
d="M256 416c141.4 0 256 -93.0996 256 -208s-114.6 -208 -256 -208c-38.4004 0 -74.7002 7.09961 -107.4 19.4004c-24.5996 -19.6006 -74.2998 -51.4004 -140.6 -51.4004c-3.2002 0 -6 1.7998 -7.2998 4.7998s-0.700195 6.40039 1.5 8.7002
c0.5 0.5 42.2998 45.4004 54.7998 95.7998c-35.5996 35.7002 -57 81.1006 -57 130.7c0 114.9 114.6 208 256 208z" />
<glyph glyph-name="magnet" unicode="&#xf076;"
d="M164.1 288h-152.1c-6.59961 0 -12 5.40039 -12 12v80c0 19.9004 16.0996 36 36 36h104c19.9004 0 36 -16.0996 36 -36v-80c0.0996094 -6.59961 -5.2998 -12 -11.9004 -12zM512.1 300c0 -6.59961 -5.39941 -12 -12 -11.9004h-152c-6.59961 0 -12 5.40039 -12 12v80
c0 19.9004 16.1006 36 36 36h104c19.9004 0 36 -16.0996 36 -36v-80.0996zM348.1 256h151.9c6.7002 0 12 -5.40039 12 -12.0996c-0.200195 -20.2002 -0.599609 -40.4004 0 -53.2002c0 -150.7 -134.5 -246.7 -255.1 -246.7c-120.601 0 -256.801 96 -256.801 246.6
c0.600586 13 0.100586 31.9004 0 53.3008c0 6.69922 5.30078 12.0996 12 12.0996h152c6.60059 0 12 -5.40039 12 -12v-52c0 -127.9 160 -128.1 160 0v52c0 6.59961 5.40039 12 12 12z" />
d="M164.07 299.9h-152.07c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80c0 -0.03125 0.000976562 -0.0800781 0.000976562 -0.110352c0 -6.56348 -5.32715 -11.8896 -11.8906 -11.8896h-0.0400391zM512 311.9
c0 -6.56348 -5.32715 -11.9014 -11.8896 -11.9014c-0.0302734 0 -0.0800781 0.000976562 -0.110352 0.000976562h-152c-6.62402 0 -12 5.37598 -12 12v80c0 19.8721 16.1279 36 36 36h104c19.8721 0 36 -16.1279 36 -36v-80.0996zM348 267.9h151.85h0.000976562
c6.62402 0 12 -5.37598 12 -12c0 -0.0283203 0 -0.0732422 -0.000976562 -0.100586c-0.199219 -20.2002 -0.599609 -40.3994 0 -53.2002c0 -150.699 -134.42 -246.699 -255 -246.699s-256.75 96 -256.75 246.6c0.600586 13 0.100586 31.9004 0 53.2998v0.100586
c0 6.62402 5.37598 12 12 12v0h151.9c6.62402 0 12 -5.37598 12 -12v-52c0 -127.9 160 -128.101 160 0v52c0 6.62402 5.37598 12 12 12z" />
<glyph glyph-name="chevron-up" unicode="&#xf077;" horiz-adv-x="448"
d="M240.971 317.476l194.344 -194.343c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-22.667 -22.667c-9.35742 -9.35742 -24.5225 -9.375 -33.9014 -0.0400391l-154.746 154.02l-154.745 -154.021c-9.37891 -9.33496 -24.5439 -9.31738 -33.9014 0.0400391
l-22.667 22.667c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l194.344 194.343c9.37207 9.37305 24.5674 9.37305 33.9404 0.000976562z" />
<glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="447"
<glyph glyph-name="chevron-down" unicode="&#xf078;" horiz-adv-x="448"
d="M207.029 66.5244l-194.344 194.344c-9.37207 9.37305 -9.37207 24.5684 0 33.9404l22.667 22.667c9.35742 9.35742 24.5225 9.375 33.9014 0.0400391l154.746 -154.021l154.745 154.021c9.37891 9.33496 24.5439 9.31738 33.9014 -0.0400391l22.667 -22.667
c9.37207 -9.37305 9.37207 -24.5684 0 -33.9404l-194.343 -194.344c-9.37305 -9.37207 -24.5684 -9.37207 -33.9414 0z" />
<glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="640"
@ -415,7 +421,7 @@ c-5.4873 0 -13.0908 3.14941 -16.9707 7.0293l-16 16c-15.1191 15.1201 -4.41113 40.
c9.37207 -9.37207 9.37207 -24.5684 -0.000976562 -33.9404zM364.519 88.9707l16.001 -16c15.1191 -15.1201 4.41113 -40.9707 -16.9707 -40.9707h-243.549c-13.2549 0 -24 10.7451 -24 24v222.119l-40.416 -42.793c-9.28613 -9.83105 -24.8574 -10.0527 -34.4189 -0.491211
l-10.8223 10.8223c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l100.688 100.687c9.37207 9.37305 24.5674 9.37305 33.9404 0l100.687 -100.686c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404l-10.8223 -10.8223c-9.5625 -9.5625 -25.1328 -9.33984 -34.4189 0.491211
l-40.416 42.792v-182.119h187.548h0.000976562c5.4873 0 13.0898 -3.14941 16.9697 -7.0293z" />
<glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="575"
<glyph glyph-name="shopping-cart" unicode="&#xf07a;" horiz-adv-x="576"
d="M528.12 146.681c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -30.9277 -25.0723 -56 -56 -56
s-56 25.0723 -56 56c0 15.6738 6.44727 29.835 16.8232 40h-209.647c10.377 -10.165 16.8242 -24.3262 16.8242 -40c0 -30.9277 -25.0723 -56 -56 -56s-56 25.0723 -56 56c0 20.7783 11.3252 38.9004 28.1309 48.5654l-70.248 343.435h-69.8828
c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2285 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782c15.4004 0 26.8154 -14.3008 23.4023 -29.3193z" />
@ -439,7 +445,7 @@ c-35.2998 0 -64 -28.7002 -64 -64c0 -8.7998 7.2002 -16 16 -16z" />
d="M512 271.999c0 -97.2021 -78.7979 -175.999 -176 -175.999c-11.2197 0 -22.1904 1.06152 -32.8271 3.06934l-24.0117 -27.0146c-3.95215 -4.44629 -11.9883 -8.05469 -17.9375 -8.05469h-0.000976562h-37.2227v-40c0 -13.2549 -10.7451 -24 -24 -24h-40v-40
c0 -13.2549 -10.7451 -24 -24 -24h-112c-13.2549 0 -24 10.7451 -24 24v78.0586c0 6.36523 2.5293 12.4707 7.0293 16.9717l161.802 161.802c-5.72266 17.3535 -8.83105 35.8965 -8.83105 55.168c0 97.2021 78.7969 175.999 175.999 176
c97.4893 0.000976562 176.001 -78.5107 176.001 -176.001zM336 320c0 -26.5098 21.4902 -48 48 -48s48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48z" />
<glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="639"
<glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="640"
d="M512.1 257l-8.19922 -14.2998c-3 -5.2998 -9.40039 -7.5 -15.1006 -5.40039c-11.7998 4.40039 -22.5996 10.7002 -32.0996 18.6006c-4.60059 3.7998 -5.7998 10.5 -2.7998 15.6992l8.19922 14.3008c-6.89941 8 -12.2998 17.2998 -15.8994 27.3994h-16.5
c-6 0 -11.2002 4.2998 -12.2002 10.2998c-2 12 -2.09961 24.6006 0 37.1006c1 6 6.2002 10.3994 12.2002 10.3994h16.5c3.59961 10.1006 9 19.4004 15.8994 27.4004l-8.19922 14.2998c-3 5.2002 -1.90039 11.9004 2.7998 15.7002
c9.5 7.90039 20.3994 14.2002 32.0996 18.5996c5.7002 2.10059 12.1006 -0.0996094 15.1006 -5.39941l8.19922 -14.2998c10.5 1.89941 21.2002 1.89941 31.7002 0l8.2002 14.2998c3 5.2998 9.40039 7.5 15.0996 5.39941c11.8008 -4.39941 22.6006 -10.6992 32.1006 -18.5996
@ -462,7 +468,7 @@ d="M416 256c0 -88.4004 -93.0996 -160 -208 -160c-41 0 -79.0996 9.2998 -111.3 25c-
c-23.9004 26.0996 -38 57.7002 -38 92c0 88.4004 93.0996 160 208 160s208 -71.5996 208 -160zM538 36c13.4004 -30.2998 35.5 -54.2002 35.7998 -54.5c2.2002 -2.40039 2.7998 -5.7998 1.5 -8.7002c-1.2002 -2.89941 -4.09961 -4.7998 -7.2998 -4.7998
c-36.5996 0 -66.9004 12.2998 -88.7002 25c-32.2002 -15.7998 -70.2998 -25 -111.3 -25c-86.2002 0 -160.2 40.4004 -191.7 97.9004c10.4004 -1.10059 20.9004 -1.90039 31.7002 -1.90039c132.3 0 240 86.0996 240 192c0 6.7998 -0.400391 13.5 -1.2998 20.0996
c75.7998 -23.8994 129.3 -81.1992 129.3 -148.1c0 -34.2998 -14.0996 -66 -38 -92z" />
<glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="308"
<glyph glyph-name="star-half" unicode="&#xf089;" horiz-adv-x="576"
d="M288 448v-439.6l-130.7 -68.6006c-23.3994 -12.2998 -50.8994 7.60059 -46.3994 33.7002l25 145.5l-105.7 103c-19 18.5 -8.5 50.7998 17.7002 54.5996l146.1 21.2002l65.2998 132.4c5.90039 11.8994 17.2998 17.7998 28.7002 17.7998z" />
<glyph glyph-name="thumbtack" unicode="&#xf08d;" horiz-adv-x="384"
d="M298.028 233.733c47.9893 -22.3135 85.9717 -62.5508 85.9727 -113.733c0 -13.2549 -10.7451 -24 -24 -24h-136v-104.007c0 -1.04297 -0.378906 -2.64551 -0.844727 -3.57812l-24 -48c-2.94727 -5.89258 -11.3701 -5.88184 -14.3115 0l-24 48
@ -509,7 +515,7 @@ d="M576 208c0 -23.6299 -12.9502 -44.04 -32.0098 -55.1299v-152.87c0 -9.21973 -7.0
c-2.79004 -10.21 -4.41016 -20.8896 -4.41016 -32c0 -29.0801 9.75 -55.9199 26.1504 -77.4404c15.79 -20.7197 0.149414 -50.5596 -25.9004 -50.5596h-74.2793c-11.8809 0 -23.2109 6.37012 -28.4004 17.0596c-16.2998 33.5908 -25.5605 71.1709 -25.5605 110.94
c0 10.8604 0.790039 21.5195 2.18066 32h-33.7002c-35.3496 0 -64 28.6504 -64 64v96c0 35.3496 28.6504 64 64 64h192c54.6602 0 108.28 18.8096 150.99 52.9502l85.0293 68.0303c5.79004 4.63965 12.8604 7.01953 19.9805 7.01953c25.0195 0 32 -23.2598 32 -32.0098
v-152.87c19.0498 -11.0801 32 -31.4902 32 -55.1201zM480 66.5801v282.84l-33.0498 -26.4395c-54 -43.2002 -121.83 -66.9805 -190.95 -66.9805v-96c69.1201 0 136.95 -23.7803 190.95 -66.9805z" />
<glyph glyph-name="certificate" unicode="&#xf0a3;" horiz-adv-x="511"
<glyph glyph-name="certificate" unicode="&#xf0a3;"
d="M458.622 192.08l45.9844 -45.0039c13.7012 -12.9727 7.32227 -36.0371 -10.6641 -40.3389l-62.6504 -15.9902l17.6611 -62.0146c4.99023 -17.834 -11.8252 -34.665 -29.6611 -29.6719l-61.9941 17.667l-15.9834 -62.6709
c-4.33887 -18.1533 -27.8252 -24.1553 -40.3252 -10.668l-44.9893 46.001l-44.9912 -46.001c-12.6289 -13.3496 -35.8857 -7.90625 -40.3252 10.668l-15.9834 62.6709l-61.9941 -17.667c-17.832 -4.99121 -34.6523 11.833 -29.6611 29.6719l17.6611 62.0146
l-62.6504 15.9902c-17.9795 4.2998 -24.3721 27.3613 -10.6641 40.3389l45.9854 45.0039l-45.9854 45.0049c-13.7012 12.9707 -7.32227 36.0371 10.665 40.3379l62.6504 15.9902l-17.6611 62.0146c-4.99023 17.834 11.8242 34.665 29.6611 29.6709l61.9951 -17.667
@ -550,7 +556,7 @@ l10.8994 11c9.40039 9.39941 9.40039 24.5996 0 33.8994l-132.6 132.7c-9.40039 9.40
d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM360.4 220.9l-72.4004 -75.5v182.6c0 13.2998 -10.7002 24 -24 24h-16c-13.2998 0 -24 -10.7002 -24 -24v-182.6l-72.4004 75.5
c-9.2998 9.69922 -24.7998 9.89941 -34.2998 0.399414l-10.8994 -11c-9.40039 -9.39941 -9.40039 -24.5996 0 -33.8994l132.6 -132.7c9.40039 -9.40039 24.5996 -9.40039 33.9004 0l132.699 132.7c9.40039 9.39941 9.40039 24.5996 0 33.8994l-10.8994 11
c-9.5 9.5 -25 9.2998 -34.2998 -0.399414z" />
<glyph glyph-name="globe" unicode="&#xf0ac;" horiz-adv-x="495"
<glyph glyph-name="globe" unicode="&#xf0ac;" horiz-adv-x="496"
d="M336.5 288h-177c14.5 89.2998 48.7002 152 88.5 152s74 -62.7002 88.5 -152zM152 192c0 22.2002 1.2002 43.5 3.2998 64h185.3c2.10059 -20.5 3.30078 -41.7998 3.30078 -64s-1.2002 -43.5 -3.30078 -64h-185.3c-2.09961 20.5 -3.2998 41.7998 -3.2998 64zM476.7 288
h-108c-8.7998 56.9004 -25.6006 107.8 -50 141.6c71.5 -21.1992 129.399 -73.6992 158 -141.6zM177.2 429.6c-24.4004 -33.7998 -41.2002 -84.6992 -49.9004 -141.6h-108c28.5 67.9004 86.5 120.4 157.9 141.6zM487.4 256c5.39941 -20.5 8.5 -41.7998 8.5 -64
s-3.10059 -43.5 -8.60059 -64h-114.6c2.09961 21 3.2998 42.5 3.2998 64s-1.2002 43 -3.2998 64h114.7zM120 192c0 -21.5 1.2002 -43 3.2002 -64h-114.601c-5.39941 20.5 -8.59961 41.7998 -8.59961 64s3.2002 43.5 8.59961 64h114.7
@ -572,7 +578,7 @@ c-15.1045 15.1045 -4.34766 40.9707 16.9707 40.9707h463.947z" />
<glyph glyph-name="briefcase" unicode="&#xf0b1;"
d="M320 112v48h192v-144c0 -25.5996 -22.4004 -48 -48 -48h-416c-25.5996 0 -48 22.4004 -48 48v144h192v-48c0 -8.83984 7.16016 -16 16 -16h96c8.83984 0 16 7.16016 16 16zM464 320c25.5996 0 48 -22.4004 48 -48v-80h-512v80c0 25.5996 22.4004 48 48 48h80v48
c0 25.5996 22.4004 48 48 48h160c25.5996 0 48 -22.4004 48 -48v-48h80zM320 320v32h-128v-32h128z" />
<glyph glyph-name="arrows-alt" unicode="&#xf0b2;" horiz-adv-x="511"
<glyph glyph-name="arrows-alt" unicode="&#xf0b2;"
d="M352.201 22.2246l-79.1963 -79.1953c-9.37305 -9.37305 -24.5684 -9.37305 -33.9404 0l-79.1963 79.1953c-15.1191 15.1191 -4.41113 40.9717 16.9707 40.9707h51.1621l-0.000976562 100.805h-100.804v-51.1621c0 -21.3818 -25.8516 -32.0898 -40.9717 -16.9707
l-79.1953 79.1963c-9.37305 9.37207 -9.37305 24.5684 0 33.9404l79.1953 79.1963c15.1191 15.1191 40.9717 4.41113 40.9717 -16.9717v-51.2285h100.804v100.804h-51.2305c-21.3818 0 -32.0898 25.8516 -16.9707 40.9717l79.1963 79.1953
c9.37305 9.37305 24.5684 9.37305 33.9404 0l79.1963 -79.1953c15.1191 -15.1191 4.41113 -40.9717 -16.9707 -40.9717h-51.1621v-100.804h100.804v51.1621c0 21.3818 25.8516 32.0898 40.9707 16.9707l79.1953 -79.1963c9.37305 -9.37207 9.37305 -24.5684 0 -33.9404
@ -597,7 +603,7 @@ c59.2998 0 111 -32.2002 138.7 -80.2002c15.2002 10.2002 33.5996 16.2002 53.2998 1
<glyph glyph-name="flask" unicode="&#xf0c3;" horiz-adv-x="448"
d="M437.2 44.5c29.2998 -47 -4.40039 -108.5 -60.1006 -108.5h-306.199c-55.6006 0 -89.4004 61.4004 -60.1006 108.5l117.2 188.5v151h-8c-13.2998 0 -24 10.7002 -24 24v16c0 13.2998 10.7002 24 24 24h208c13.2998 0 24 -10.7002 24 -24v-16
c0 -13.2998 -10.7002 -24 -24 -24h-8v-151zM137.9 128h172l-48.2002 77.5996c-3.60059 5.2002 -5.7998 11.5 -5.7998 18.4004v160h-64v-160c0 -6.7998 -2.10059 -13.2002 -5.80078 -18.4004z" />
<glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="447"
<glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="448"
d="M278.06 192l166.421 -166.43c4.68945 -4.69043 4.68945 -12.29 0 -16.9707c-32.8008 -32.7998 -85.9902 -32.7998 -118.79 0l-115.511 115.521l-24.8594 -24.8604c4.30957 -10.9199 6.67969 -22.8096 6.67969 -35.2598c0 -53.0195 -42.9805 -96 -96 -96
s-96 42.9805 -96 96s42.9805 96 96 96c4.53027 0 8.99023 -0.320312 13.3604 -0.929688l32.9297 32.9297l-32.9297 32.9297c-4.37012 -0.609375 -8.82031 -0.929688 -13.3604 -0.929688c-53.0195 0 -96 42.9805 -96 96s42.9805 96 96 96s96 -42.9805 96 -96
c0 -12.4502 -2.37012 -24.3398 -6.67969 -35.2598l24.8594 -24.8604l115.511 115.521c32.7998 32.7998 85.9893 32.7998 118.79 0c4.68945 -4.68066 4.68945 -12.2803 0 -16.9707zM96 288c17.6396 0 32 14.3604 32 32s-14.3604 32 -32 32s-32 -14.3604 -32 -32
@ -624,7 +630,7 @@ c0 -8.83691 -7.16309 -16 -16 -16h-416zM16 -4c-8.83691 0 -16 7.16309 -16 16v40c0
d="M96 352c0 -26.5098 -21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48s48 -21.4902 48 -48zM48 240c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48s-48 21.4902 -48 48s21.4902 48 48 48zM48 80c26.5098 0 48 -21.4902 48 -48s-21.4902 -48 -48 -48
s-48 21.4902 -48 48s21.4902 48 48 48zM144 316c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h352c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-352zM144 156c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h352
c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-352zM144 -4c-8.83691 0 -16 7.16309 -16 16v40c0 8.83691 7.16309 16 16 16h352c8.83691 0 16 -7.16309 16 -16v-40c0 -8.83691 -7.16309 -16 -16 -16h-352z" />
<glyph glyph-name="list-ol" unicode="&#xf0cb;" horiz-adv-x="514"
<glyph glyph-name="list-ol" unicode="&#xf0cb;"
d="M3.2627 308.473c0 7.47754 3.91699 11.5723 11.5732 11.5723h15.1309v39.877c0 5.16309 0.53418 10.5029 0.53418 10.5029h-0.356445s-1.77832 -2.66992 -2.84766 -3.73828c-4.45117 -4.27246 -10.5039 -4.4502 -15.666 1.06836l-5.51758 6.23145
c-5.3418 5.34082 -4.98438 11.2158 0.53418 16.3789l21.7197 19.9375c4.44824 4.0957 8.36523 5.69727 14.418 5.69727h12.1045c7.65625 0 11.749 -3.91602 11.749 -11.5723v-84.3838h15.4883c7.65527 0 11.5723 -4.09375 11.5723 -11.5723v-8.90039
c0 -7.47754 -3.91699 -11.5723 -11.5723 -11.5723h-67.291c-7.65625 0 -11.5732 4.09473 -11.5732 11.5723v8.90137zM2.21094 143.409c0 47.2773 50.9551 56.3828 50.9551 69.165c0 7.17969 -5.9541 8.75488 -9.28027 8.75488
@ -658,13 +664,13 @@ s21.5 -48 48 -48zM560 192v12.0996l-99.9004 99.9004h-44.0996v-112h144z" />
<glyph glyph-name="money-bill" unicode="&#xf0d6;" horiz-adv-x="640"
d="M608 384c17.6699 0 32 -14.3301 32 -32v-320c0 -17.6699 -14.3301 -32 -32 -32h-576c-17.6699 0 -32 14.3301 -32 32v320c0 17.6699 14.3301 32 32 32h576zM48 48h64c0 35.3496 -28.6504 64 -64 64v-64zM48 272c35.3496 0 64 28.6504 64 64h-64v-64zM320 96
c44.1699 0 80 42.9697 80 96c0 53.0195 -35.8203 96 -80 96s-80 -42.9805 -80 -96c0 -53.0098 35.8096 -96 80 -96zM592 48v64c-35.3496 0 -64 -28.6504 -64 -64h64zM592 272v64h-64c0 -35.3496 28.6504 -64 64 -64z" />
<glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="319"
<glyph glyph-name="caret-down" unicode="&#xf0d7;" horiz-adv-x="320"
d="M31.2998 256h257.3c17.8008 0 26.7002 -21.5 14.1006 -34.0996l-128.601 -128.7c-7.7998 -7.7998 -20.5 -7.7998 -28.2998 0l-128.6 128.7c-12.6006 12.5996 -3.7002 34.0996 14.0996 34.0996z" />
<glyph glyph-name="caret-up" unicode="&#xf0d8;" horiz-adv-x="320"
d="M288.662 96h-257.324c-17.8184 0 -26.7412 21.543 -14.1416 34.1416l128.662 128.662c7.80957 7.81055 20.4736 7.81055 28.2832 0l128.662 -128.662c12.6006 -12.5986 3.67676 -34.1416 -14.1416 -34.1416z" />
<glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="215"
<glyph glyph-name="caret-left" unicode="&#xf0d9;" horiz-adv-x="192"
d="M192 320.662v-257.324c0 -17.8184 -21.543 -26.7412 -34.1416 -14.1416l-128.662 128.662c-7.81055 7.80957 -7.81055 20.4736 0 28.2832l128.662 128.662c12.5986 12.6006 34.1416 3.67676 34.1416 -14.1416z" />
<glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="168"
<glyph glyph-name="caret-right" unicode="&#xf0da;" horiz-adv-x="192"
d="M0 63.3379v257.324c0 17.8184 21.543 26.7412 34.1416 14.1416l128.662 -128.662c7.81055 -7.80957 7.81055 -20.4736 0 -28.2832l-128.662 -128.662c-12.5986 -12.6006 -34.1416 -3.67676 -34.1416 14.1416z" />
<glyph glyph-name="columns" unicode="&#xf0db;"
d="M464 416c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-416c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h416zM224 32v256h-160v-256h160zM448 32v256h-160v-256h160z" />
@ -673,13 +679,13 @@ d="M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24
c9.30078 9.40039 24.5 9.40039 33.9004 0z" />
<glyph glyph-name="sort-down" unicode="&#xf0dd;" horiz-adv-x="320"
d="M41 160h238c21.4004 0 32.0996 -25.9004 17 -41l-119 -119c-9.40039 -9.40039 -24.5996 -9.40039 -33.9004 0l-119.1 119c-15.0996 15.0996 -4.40039 41 17 41z" />
<glyph glyph-name="sort-up" unicode="&#xf0de;" horiz-adv-x="319"
<glyph glyph-name="sort-up" unicode="&#xf0de;" horiz-adv-x="320"
d="M279 224h-238c-21.4004 0 -32.0996 25.9004 -17 41l119 119c9.40039 9.40039 24.5996 9.40039 33.9004 0l119 -119c15.1992 -15.0996 4.5 -41 -16.9004 -41z" />
<glyph glyph-name="envelope" unicode="&#xf0e0;"
d="M502.3 257.2c3.90039 3.09961 9.7002 0.200195 9.7002 -4.7002v-204.5c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v204.4c0 5 5.7002 7.7998 9.7002 4.69922c22.3994 -17.3994 52.0996 -39.5 154.1 -113.6
c21.1006 -15.4004 56.7002 -47.7998 92.2002 -47.5996c35.7002 -0.300781 72 32.7998 92.2998 47.5996c102 74.0996 131.601 96.2998 154 113.7zM256 128c-23.2002 -0.400391 -56.5996 29.2002 -73.4004 41.4004c-132.699 96.2998 -142.8 104.8 -173.399 128.699
c-5.7998 4.60059 -9.2002 11.5 -9.2002 18.9004v19c0 26.5 21.5 48 48 48h416c26.5 0 48 -21.5 48 -48v-19c0 -7.40039 -3.40039 -14.4004 -9.2002 -18.9004c-30.5996 -24 -40.7002 -32.3994 -173.399 -128.699c-16.8008 -12.2002 -50.2002 -41.8008 -73.4004 -41.4004z" />
<glyph glyph-name="undo" unicode="&#xf0e2;" horiz-adv-x="504"
<glyph glyph-name="undo" unicode="&#xf0e2;"
d="M212.333 223.667h-200.333c-6.62695 0 -12 5.37305 -12 12v200.333c0 6.62695 5.37305 12 12 12h48c6.62695 0 12 -5.37305 12 -12v-78.1123c45.7734 50.833 112.26 82.6426 186.175 82.1055c136.906 -0.994141 246.448 -111.623 246.157 -248.532
c-0.291016 -136.719 -111.212 -247.461 -247.999 -247.461c-64.0889 0 -122.496 24.3135 -166.51 64.2148c-5.09961 4.62207 -5.33398 12.5537 -0.466797 17.4199l33.9668 33.9668c4.47363 4.47461 11.6621 4.71777 16.4004 0.525391
c31.0361 -27.4629 71.8564 -44.127 116.609 -44.127c97.2676 0 176 78.7158 176 176c0 97.2666 -78.7158 176 -176 176c-58.4961 0 -110.28 -28.4756 -142.274 -72.333h98.2744c6.62695 0 12 -5.37305 12 -12v-48c0 -6.62695 -5.37305 -12 -12 -12z" />
@ -784,7 +790,7 @@ c9.40039 9.40039 24.6006 9.40039 33.9004 0l136 -136c9.5 -9.40039 9.5 -24.5996 0.
<glyph glyph-name="angle-up" unicode="&#xf106;" horiz-adv-x="320"
d="M177 288.3l136 -136c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-22.5996 -22.6006c-9.40039 -9.39941 -24.6006 -9.39941 -33.9004 0l-96.5 96.2998l-96.4004 -96.3994c-9.39941 -9.40039 -24.5996 -9.40039 -33.8994 0l-22.7002 22.5996
c-9.40039 9.40039 -9.40039 24.6006 0 33.9004l136 136c9.40039 9.5 24.5996 9.5 34 0.0996094z" />
<glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="319"
<glyph glyph-name="angle-down" unicode="&#xf107;" horiz-adv-x="320"
d="M143 95.7002l-136 136c-9.40039 9.39941 -9.40039 24.5996 0 33.8994l22.5996 22.6006c9.40039 9.39941 24.6006 9.39941 33.9004 0l96.4004 -96.4004l96.3994 96.4004c9.40039 9.39941 24.6006 9.39941 33.9004 0l22.5996 -22.6006
c9.40039 -9.39941 9.40039 -24.5996 0 -33.8994l-136 -136c-9.2002 -9.40039 -24.3994 -9.40039 -33.7998 0z" />
<glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="576"
@ -820,7 +826,7 @@ c22.4004 26.7998 55.2998 42.2002 90.2002 42.2002s67.7998 -15.4004 90.2002 -42.20
<glyph glyph-name="meh" unicode="&#xf11a;" horiz-adv-x="496"
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM168 272c-17.7002 0 -32 -14.2998 -32 -32s14.2998 -32 32 -32s32 14.2998 32 32s-14.2998 32 -32 32zM344 80c21.2002 0 21.2002 32 0 32h-192c-21.2002 0 -21.2002 -32 0 -32
h192zM328 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
<glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="639"
<glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="640"
d="M480 352c88.4004 0 159.9 -71.5996 159.9 -160s-71.6006 -160 -160 -160c-44.7002 0 -85.2002 18.4004 -114.2 48h-91.5c-29 -29.5996 -69.4004 -48 -114.2 -48c-88.4004 0 -160 71.5996 -160 160s71.5996 160 160 160h320zM256 172v40c0 6.59961 -5.40039 12 -12 12h-52
v52c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-52h-52c-6.59961 0 -12 -5.40039 -12 -12v-40c0 -6.59961 5.40039 -12 12 -12h52v-52c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12v52h52c6.59961 0 12 5.40039 12 12zM440 104
c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48zM520 184c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
@ -833,7 +839,7 @@ c6.62695 0 12 5.37305 12 12zM272 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.6269
c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM464 172v40c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM128 76v40c0 6.62695 -5.37305 12 -12 12h-40
c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12zM416 76v40c0 6.62695 -5.37305 12 -12 12h-232c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h232c6.62695 0 12 5.37305 12 12zM512 76v40
c0 6.62695 -5.37305 12 -12 12h-40c-6.62695 0 -12 -5.37305 -12 -12v-40c0 -6.62695 5.37305 -12 12 -12h40c6.62695 0 12 5.37305 12 12z" />
<glyph glyph-name="flag-checkered" unicode="&#xf11e;" horiz-adv-x="519"
<glyph glyph-name="flag-checkered" unicode="&#xf11e;"
d="M243.2 258.1c24.2002 -6.69922 47.5996 -16.3994 73.5996 -22.1992v-68.2002c-24.2998 6.7002 -47.5 16.3994 -73.5996 22.2998v68.0996zM466.5 381.1c21.2002 9.80078 45.5 -5.69922 45.4004 -29v-243.1c0 -10.5996 -5.10059 -20.4004 -13.8008 -26.4004
c-35.7998 -24.5996 -74.2998 -40.8994 -122.5 -40.8994c-67.3994 0 -111.6 34.7998 -165.199 34.7998c-50.8008 0 -86.1006 -10 -114.4 -22.0996v-94.4004c0 -13.2998 -10.7002 -24 -24 -24h-16c-13.2998 0 -24 10.7002 -24 24v386.1c-14.5 10.1006 -24 26.9004 -24 45.9004
c0 31.7002 26.2998 57.2998 58.2998 56c28.5 -1.2002 51.7998 -24 53.6006 -52.4004c0.5 -8.39941 -0.800781 -16.2998 -3.60059 -23.5996c20.7002 7.59961 43 12 68 12c67.4004 0 111.7 -34.7998 165.2 -34.7998c40.5 0 82.7002 16 117 31.8994zM169.6 122.5v71.2998
@ -872,7 +878,7 @@ c4.68555 -4.68652 4.68555 -12.2842 0 -16.9717l-44.6758 -44.6738c-28.0713 -28.073
c-4.68555 4.68652 -4.68555 12.2852 0 16.9707l44.6738 44.6738c59.2666 59.2646 155.695 59.2646 214.961 0s59.2656 -155.694 0 -214.96l-44.6748 -44.6748c-4.68652 -4.68555 -12.2852 -4.68555 -16.9707 0l-39.5986 39.5977c-4.68555 4.6875 -4.68555 12.2852 0 16.9717
l44.6758 44.6738c28.0713 28.0732 28.0713 73.75 0 101.823c-28.0742 28.0723 -73.752 28.0742 -101.824 0l-44.6738 -44.6748c-4.6875 -4.68555 -12.2852 -4.68555 -16.9717 0zM482.343 -56.9707c-9.37207 -9.37207 -24.5674 -9.37207 -33.9404 0l-441.373 441.373
c-9.37305 9.37207 -9.37305 24.5674 0 33.9404l22.6279 22.6279c9.37207 9.37305 24.5674 9.37305 33.9404 0l441.372 -441.374c9.37305 -9.37207 9.37305 -24.5674 0 -33.9404z" />
<glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="403"
<glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="384"
d="M202.021 448c84.8809 0 175.482 -66.2559 175.481 -153.6c0 -115.982 -125.268 -117.768 -125.268 -160.627v-5.77344c0 -13.2549 -10.7451 -24 -24 -24h-72.4717c-13.2549 0 -24 10.7451 -24 24v9.78809c0 61.8291 46.876 86.5449 82.2998 106.405
c30.376 17.0293 48.9922 28.6113 48.9922 51.1641c0 29.832 -38.0518 49.6309 -68.8154 49.6309c-39.127 0 -57.708 -18.0684 -82.7568 -49.4492c-8.12109 -10.1738 -22.8809 -12.0127 -33.2529 -4.14844l-43.1387 32.709c-10.2705 7.78809 -12.541 22.2939 -5.17773 32.874
c40.5889 58.3232 92.2881 91.0264 172.107 91.0264zM192 74.541c38.1963 0 69.2715 -31.0742 69.2715 -69.2695c0 -38.1963 -31.0752 -69.2715 -69.2715 -69.2715s-69.2715 31.0752 -69.2715 69.2695c0 38.1963 31.0752 69.2715 69.2715 69.2715z" />
@ -922,7 +928,7 @@ d="M434.027 421.671c7.31445 1.21875 13.9727 -4.4209 13.9727 -11.8369v-115.668c0
c0 -13.2549 -10.7451 -24 -24 -24h-144c-13.2549 0 -24 10.7451 -24 24v246.795c0 44.8945 30.457 83.2666 72 94.1289v27.0762c-61.0361 0 -92.9424 7.00977 -121.711 -64.9141c-4.91699 -12.2949 -18.8789 -18.2959 -31.1963 -13.3701
c-12.3066 4.92285 -18.293 18.8906 -13.3701 31.1973c14.668 36.6709 38.0107 77.833 90.0498 90.8838c-14.1406 36.5273 12.793 76.2031 52.2275 76.2031c37.4463 0 64.3525 -36.1084 53.668 -72h58.332c0 4.2002 -1.30664 15.7822 10.0273 17.6709zM144 376
c8.82227 0 16 7.17773 16 16s-7.17773 16 -16 16s-16 -7.17773 -16 -16s7.17773 -16 16 -16z" />
<glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="511"
<glyph glyph-name="rocket" unicode="&#xf135;"
d="M505.05 428.9c6.9502 -32.2002 6.9502 -57.4004 6.85059 -82.6006c0 -102.689 -55.4102 -164.79 -128 -211.09v-104.41v-0.0400391c0 -16.3516 -11.8721 -35.5527 -26.5 -42.8594l-98.7002 -49.3906c-2.79004 -1.38965 -7.58398 -2.5166 -10.7002 -2.5166
c-13.248 0 -24 10.752 -24 24v0.00683594v103.84l-22.4697 -22.4697c-5.17383 -5.1748 -15.3125 -9.375 -22.6299 -9.375c-7.31836 0 -17.4561 4.2002 -22.6309 9.375l-50.8994 50.9102c-5.17285 5.17285 -9.37012 15.3096 -9.37012 22.625s4.19727 17.4512 9.37012 22.625
l22.4697 22.4697h-103.77h-0.0126953c-13.248 0 -24 10.752 -24 24c0 3.12012 1.12988 7.91797 2.52246 10.71l49.4199 98.7998c7.32324 14.6094 26.5283 26.4766 42.8701 26.4902h104.2c46.1895 72.7998 108.09 128 211.29 128c25.0996 0 50.29 0 82.4893 -6.90039
@ -939,7 +945,7 @@ c9.40039 -9.40039 24.6006 -9.40039 33.9004 0l17 17c9.40039 9.40039 9.40039 24.59
<glyph glyph-name="chevron-circle-down" unicode="&#xf13a;"
d="M504 192c0 -137 -111 -248 -248 -248s-248 111 -248 248s111 248 248 248s248 -111 248 -248zM273 78.0996l135.5 135.5c9.40039 9.40039 9.40039 24.6006 0 33.9004l-17 17c-9.40039 9.40039 -24.5996 9.40039 -33.9004 0l-101.6 -101.6l-101.6 101.6
c-9.40039 9.40039 -24.6006 9.40039 -33.9004 0l-17 -17c-9.40039 -9.40039 -9.40039 -24.5996 0 -33.9004l135.5 -135.5c9.40039 -9.39941 24.5996 -9.39941 34 0z" />
<glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="575"
<glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="576"
d="M12.9707 96c-10.6904 0 -16.0449 12.9258 -8.48535 20.4854l67.0283 67.0283c4.6875 4.68652 12.2852 4.68652 16.9717 0l67.0283 -67.0283c7.56055 -7.55957 2.20605 -20.4854 -8.48438 -20.4854h-35.1465c20.2969 -54.3359 85.1816 -86.6162 144.117 -94.0146v190.015
h-52c-6.62695 0 -12 5.37305 -12 12v40c0 6.62695 5.37305 12 12 12h52v5.46973c-37.2842 13.1807 -64 48.7324 -64 90.5303c0 53.4746 43.7227 96.7393 97.3701 95.9902c52.2354 -0.728516 94.6348 -43.7627 94.6289 -96.002
c-0.00488281 -41.793 -26.7188 -77.3398 -64 -90.5186v-5.46973h52c6.62695 0 12 -5.37305 12 -12v-40c0 -6.62695 -5.37305 -12 -12 -12h-52v-190.015c59.1543 7.42676 123.827 39.6973 144.117 94.0146h-35.1465c-10.6904 0 -16.0449 12.9248 -8.48438 20.4854
@ -992,7 +998,7 @@ c-7.56055 -7.56055 -2.20605 -20.4854 8.48438 -20.4854h246.06c10.6904 0 16.0449 1
<glyph glyph-name="caret-square-right" unicode="&#xf152;" horiz-adv-x="448"
d="M48 416h352c26.5098 0 48 -21.4902 48 -48v-352c0 -26.5098 -21.4902 -48 -48 -48h-352c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48zM188.485 60.4854l123.028 123.028c4.68652 4.68652 4.68652 12.2842 0 16.9717l-123.028 123.029
c-7.56055 7.56055 -20.4854 2.20605 -20.4854 -8.48438v-246.06c0 -10.6904 12.9258 -16.0449 20.4854 -8.48535z" />
<glyph glyph-name="euro-sign" unicode="&#xf153;" horiz-adv-x="319"
<glyph glyph-name="euro-sign" unicode="&#xf153;" horiz-adv-x="320"
d="M310.706 34.2354l8.81836 -44.4902c1.23828 -6.24902 -2.62109 -12.3623 -8.78809 -13.957c-12.5391 -3.24414 -34.8008 -7.78809 -61.1016 -7.78809c-104.371 0 -182.496 65.3076 -207.521 155.64h-30.1143c-6.62695 0 -12 5.37305 -12 12v28.3604
c0 6.62695 5.37305 12 12 12h21.3877c-1 12.958 -0.828125 28.6377 0.181641 42.2451h-21.5693c-6.62695 0 -12 5.37305 -12 12v29.7549c0 6.62695 5.37305 12 12 12h33.0752c28.9551 83.748 107.376 144 204.56 144c21.0752 0 40.582 -2.91211 52.6865 -5.20703
c6.86035 -1.30078 11.1475 -8.17578 9.32617 -14.917l-11.9912 -44.3682c-1.65527 -6.125 -7.78613 -9.89062 -14.002 -8.62305c-9.28711 1.89551 -23.3652 4.14551 -37.8516 4.14551c-54.9287 0 -96.9854 -30.0391 -117.619 -75.0303h138.278
@ -1035,13 +1041,13 @@ c4.5 -4.5 7 -10.5996 7 -16.9004z" />
d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM288 76v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8
c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 140v8c0 6.59961 -5.40039 12 -12 12h-168c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12zM288 212c0 6.59961 -5.40039 12 -12 12h-168
c-6.59961 0 -12 -5.40039 -12 -12v-8c0 -6.59961 5.40039 -12 12 -12h168c6.59961 0 12 5.40039 12 12v8zM384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004z" />
<glyph glyph-name="sort-alpha-down" unicode="&#xf15d;" horiz-adv-x="424"
<glyph glyph-name="sort-alpha-down" unicode="&#xf15d;" horiz-adv-x="448"
d="M400.7 20.9004c6.59961 0 12 -5.30078 12 -12v-28.9004c0 -6.59961 -5.40039 -12 -12 -12h-129.4c-6.59961 0 -12 5.40039 -12 12v21.9004c0 2.5 0.799805 4.89941 2.2002 6.89941l67.2002 95.2002c0.799805 1.09961 1.59961 2.09961 2.2998 3.09961h-56.5
c-6.59961 0 -12 5.40039 -12 12v28.9004c0 6.59961 5.40039 12 12 12h125.1c6.60059 0 12 -5.40039 12 -12v-21.4004c0 -2.5 -0.799805 -4.89941 -2.19922 -6.89941l-67.5 -95.7002c-0.800781 -1.09961 -1.60059 -2.09961 -2.30078 -3.09961h61.1006zM176 80
c14.2002 0 21.2998 -17.2998 11.2998 -27.2998l-80 -80c-6.2002 -6.2002 -16.3994 -6.2002 -22.5996 0l-80 80c-10.1006 10.0996 -2.90039 27.2998 11.2998 27.2998h48v320c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-320h48zM424.2 239.9
c2.7002 -7.80078 -3.10059 -15.9004 -11.5 -15.9004h-35.7002c-4.94629 0.00292969 -10.0986 3.85645 -11.5 8.59961l-8.2998 28.3008h-42.9004l-8.09961 -28.2002c-1.40039 -5.2002 -6.10059 -8.7002 -11.5 -8.7002h-35.7002c-8.2998 0 -14 8.09961 -11.4004 15.9004
l57.1006 168c1.7002 4.7998 6.2998 8.09961 11.3994 8.09961h39.6006c5.2002 0 9.7002 -3.2002 11.3994 -8.09961zM329.2 311.4h13.3994l-6.59961 22.8994z" />
<glyph glyph-name="sort-alpha-up" unicode="&#xf15e;" horiz-adv-x="424"
<glyph glyph-name="sort-alpha-up" unicode="&#xf15e;" horiz-adv-x="448"
d="M107.3 411.3l80 -80c10.1006 -10.0996 2.90039 -27.2998 -11.2998 -27.2998h-48v-320c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v320h-48c-14.2002 0 -21.2998 17.2998 -11.2998 27.2998l80 80c6.2002 6.2002 16.3994 6.2002 22.5996 0z
M400.7 20.9004c6.59961 0 12 -5.30078 12 -12v-28.9004c0 -6.59961 -5.40039 -12 -12 -12h-129.4c-6.59961 0 -12 5.40039 -12 12v21.9004c0 2.5 0.799805 4.89941 2.2002 6.89941l67.2002 95.2002c0.799805 1.09961 1.59961 2.09961 2.2998 3.09961h-56.5
c-6.59961 0 -12 5.40039 -12 12v28.9004c0 6.59961 5.40039 12 12 12h125.1c6.60059 0 12 -5.40039 12 -12v-21.4004c0 -2.5 -0.799805 -4.89941 -2.19922 -6.89941l-67.5 -95.7002c-0.800781 -1.09961 -1.60059 -2.09961 -2.30078 -3.09961h61.1006zM424.2 239.9
@ -1057,21 +1063,21 @@ d="M4.70215 331.314l79.9834 80.002c6.24805 6.24707 16.3838 6.24414 22.6279 0l79.
c-14.2402 0 -21.3623 17.2637 -11.3135 27.3145zM240 352c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h256c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-256zM224 240v32c0 8.83691 7.16309 16 16 16h192
c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-192c-8.83691 0 -16 7.16309 -16 16zM224 -16v32c0 8.83691 7.16309 16 16 16h64c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-64c-8.83691 0 -16 7.16309 -16 16zM224 112v32
c0 8.83691 7.16309 16 16 16h128c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-128c-8.83691 0 -16 7.16309 -16 16z" />
<glyph glyph-name="sort-numeric-down" unicode="&#xf162;" horiz-adv-x="425"
<glyph glyph-name="sort-numeric-down" unicode="&#xf162;" horiz-adv-x="448"
d="M308.811 334.213l-19.4473 20.7949c-4.52246 4.83594 -4.27441 12.4209 0.555664 16.9502l43.4434 40.7412c1.91113 1.79199 5.58789 3.24707 8.20801 3.24707h0.000976562h31.5908c6.62695 0 12 -5.37305 12 -12v-127.07h25.6602c6.62695 0 12 -5.37305 12 -12v-28.9297
c0 -6.62695 -5.37305 -12 -12 -12h-109.173c-6.62695 0 -12 5.37305 -12 12v28.9297c0 6.62695 5.37305 12 12 12h25.4141v57.9385c-7.25488 -6.58008 -14.2119 -4.92188 -18.2529 -0.601562zM278.241 95.6436c0 32.6533 23.8652 67.3564 68.0938 67.3564
c38.2529 0 79.4238 -28.8613 79.4238 -92.2275c0 -51.2764 -32.2363 -105.772 -91.9824 -105.772c-17.8359 0 -30.5459 3.55664 -38.5488 6.78125c-5.78906 2.33301 -8.78809 8.74609 -6.92188 14.7031l9.2373 29.4795c2.03516 6.49609 9.04883 9.9834 15.4668 7.71582
c13.0293 -4.60156 27.8779 -5.27441 38.1035 4.13867c-38.7422 -5.07227 -72.8721 25.3594 -72.8721 67.8252zM370.514 76.3057c0 22.2852 -15.3018 36.5049 -25.835 36.5049c-8.6416 0 -13.1641 -7.96484 -13.1641 -15.832c0 -5.66895 1.81543 -24.168 25.168 -24.168
c9.97363 0 13.377 2.1543 13.7441 2.73145c0.0214844 0.0458984 0.0869141 0.291016 0.0869141 0.763672zM175.984 80c14.2402 0 21.3623 -17.2637 11.3125 -27.3145l-79.9834 -80.002c-6.24707 -6.24707 -16.3828 -6.24414 -22.6279 0l-79.9805 80.002
c-10.0703 10.0703 -2.89844 27.3145 11.3135 27.3145h47.9814v320c0 8.83691 7.16309 16 16 16h32c8.83691 0 16 -7.16309 16 -16v-320h47.9844z" />
<glyph glyph-name="sort-numeric-up" unicode="&#xf163;" horiz-adv-x="425"
<glyph glyph-name="sort-numeric-up" unicode="&#xf163;" horiz-adv-x="448"
d="M308.811 334.213l-19.4473 20.7949c-4.52246 4.83594 -4.27441 12.4209 0.555664 16.9502l43.4434 40.7412c1.91113 1.79199 5.58789 3.24707 8.20801 3.24707h0.000976562h31.5908c6.62695 0 12 -5.37305 12 -12v-127.07h25.6602c6.62695 0 12 -5.37305 12 -12v-28.9297
c0 -6.62695 -5.37305 -12 -12 -12h-109.173c-6.62695 0 -12 5.37305 -12 12v28.9297c0 6.62695 5.37305 12 12 12h25.4141v57.9385c-7.25488 -6.58008 -14.2119 -4.92188 -18.2529 -0.601562zM278.241 95.6436c0 32.6533 23.8652 67.3564 68.0938 67.3564
c38.2529 0 79.4238 -28.8613 79.4238 -92.2275c0 -51.2764 -32.2363 -105.772 -91.9824 -105.772c-17.8359 0 -30.5459 3.55664 -38.5488 6.78125c-5.78906 2.33301 -8.78809 8.74609 -6.92188 14.7031l9.2373 29.4795c2.03516 6.49609 9.04883 9.9834 15.4668 7.71582
c13.0293 -4.60156 27.8779 -5.27441 38.1035 4.13867c-38.7422 -5.07227 -72.8721 25.3594 -72.8721 67.8252zM370.514 76.3057c0 22.2852 -15.3018 36.5049 -25.835 36.5049c-8.6416 0 -13.1641 -7.96484 -13.1641 -15.832c0 -5.66895 1.81543 -24.168 25.168 -24.168
c9.97363 0 13.377 2.1543 13.7441 2.73145c0.0214844 0.0458984 0.0869141 0.291016 0.0869141 0.763672zM16.0156 304c-14.2402 0 -21.3623 17.2637 -11.3135 27.3145l79.9844 80.002c6.24707 6.24707 16.3828 6.24414 22.6279 0l79.9805 -80.002
c10.0703 -10.0703 2.89844 -27.3145 -11.3135 -27.3145h-47.9814v-320c0 -8.83691 -7.16309 -16 -16 -16h-32c-8.83691 0 -16 7.16309 -16 16v320h-47.9844z" />
<glyph glyph-name="thumbs-up" unicode="&#xf164;" horiz-adv-x="511"
<glyph glyph-name="thumbs-up" unicode="&#xf164;"
d="M104 224c13.2549 0 24 -10.7451 24 -24v-240c0 -13.2549 -10.7451 -24 -24 -24h-80c-13.2549 0 -24 10.7451 -24 24v240c0 13.2549 10.7451 24 24 24h80zM64 -24c13.2549 0 24 10.7451 24 24s-10.7451 24 -24 24s-24 -10.7451 -24 -24s10.7451 -24 24 -24zM384 366.548
c0 -42.416 -25.9697 -66.208 -33.2773 -94.5479h101.724c33.3965 0 59.3965 -27.7461 59.5527 -58.0977c0.0839844 -17.9385 -7.5459 -37.249 -19.4395 -49.1973l-0.109375 -0.110352c9.83594 -23.3369 8.23633 -56.0371 -9.30859 -79.4688
c8.68164 -25.8945 -0.0683594 -57.7041 -16.3818 -74.7568c4.29785 -17.5977 2.24414 -32.5752 -6.14746 -44.6318c-20.4102 -29.3242 -70.9961 -29.7373 -113.773 -29.7373l-2.84473 0.000976562c-48.2871 0.0166016 -87.8057 17.5977 -119.561 31.7246
@ -1089,7 +1095,7 @@ c-15.6172 0 -27.0654 14.6953 -23.2832 29.8213l48 192c2.50879 10.0342 12.9395 18.
<glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="192"
d="M96 448c35.3457 0 64 -28.6543 64 -64s-28.6543 -64 -64 -64s-64 28.6543 -64 64s28.6543 64 64 64zM144 304c26.5098 0 48 -21.4902 48 -48v-136c0 -13.2549 -10.7451 -24 -24 -24h-16v-136c0 -13.2549 -10.7451 -24 -24 -24h-64c-13.2549 0 -24 10.7451 -24 24v136h-16
c-13.2549 0 -24 10.7451 -24 24v136c0 26.5098 21.4902 48 48 48h11.3604c23.6895 -10.8936 50.5684 -10.4434 73.2793 0h11.3604z" />
<glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="511"
<glyph glyph-name="sun" unicode="&#xf185;"
d="M256 288c52.9004 0 96 -43.0996 96 -96s-43.0996 -96 -96 -96s-96 43.0996 -96 96s43.0996 96 96 96zM502.4 207.5c12.7998 -6.40039 12.7998 -24.5996 -0.200195 -31.0996l-94.7002 -47.3008l33.5 -100.399c4.59961 -13.5 -8.2998 -26.4004 -21.9004 -21.9004
l-100.399 33.5l-47.2998 -94.7002c-6.40039 -12.7998 -24.6006 -12.7998 -31 0l-47.3008 94.7002l-100.399 -33.5c-13.5 -4.59961 -26.4004 8.2998 -21.9004 21.9004l33.5 100.5l-94.7002 47.2998c-12.7998 6.40039 -12.7998 24.5996 0 31l94.7002 47.4004l-33.5 100.399
c-4.59961 13.5 8.2998 26.4004 21.9004 21.9004l100.5 -33.5l47.2998 94.7002c6.40039 12.7998 24.5996 12.7998 31 0l47.4004 -94.8008l100.399 33.5c13.5 4.60059 26.4004 -8.2998 21.9004 -21.8994l-33.5 -100.4zM346.5 101.5c49.9004 49.9004 49.9004 131.1 0 181
@ -1171,7 +1177,7 @@ zM108.72 236.61c10.4004 -34.6504 -4.76953 -68.3799 -33.8896 -75.3408c-29.1201 -6
c-30.9307 -8.14941 -65.6201 20.4502 -77.46 63.8701c-11.8408 43.4199 3.63965 85.2207 34.5791 93.3604c30.9404 8.13965 65.6201 -20.4502 77.46 -63.8701c11.8408 -43.4199 -3.63965 -85.2197 -34.5791 -93.3604zM474.83 286.73
c29.1201 -6.96094 44.29 -40.6904 33.8896 -75.3408c-10.4102 -34.6494 -42.4395 -57.0898 -71.5596 -50.1299s-44.29 40.6904 -33.8906 75.3398c10.4102 34.6504 42.4404 57.0908 71.5605 50.1309zM318.56 257.39c-30.9395 8.14062 -46.4199 49.9404 -34.5791 93.3604
c11.8398 43.4199 46.5195 72.0195 77.46 63.8701c30.9395 -8.15039 46.4199 -49.9404 34.5791 -93.3604c-11.8398 -43.4199 -46.5195 -72.0098 -77.46 -63.8701z" />
<glyph glyph-name="cube" unicode="&#xf1b2;" horiz-adv-x="511"
<glyph glyph-name="cube" unicode="&#xf1b2;"
d="M239.1 441.7c10.9004 4.09961 22.9004 4.09961 33.7002 -0.100586l208 -78c18.7002 -7 31.1006 -24.8994 31.1006 -44.8994v-225.101c0 -18.0996 -10.2002 -34.7998 -26.5 -42.8994l-208 -104c-13.5 -6.7998 -29.4004 -6.7998 -42.9004 0l-208 104
c-16.2002 8.09961 -26.5 24.7002 -26.5 42.8994v225.101c0 20 12.4004 38 31.0996 45zM256 379.6l-192 -72v-1.09961l192 -78l192 78v1.09961zM288 23.5996l160 80v133.9l-160 -65v-148.9z" />
<glyph glyph-name="cubes" unicode="&#xf1b3;"
@ -1260,11 +1266,11 @@ d="M256 440c136.967 0 248 -111.033 248 -248s-111.033 -248 -248 -248s-248 111.033
c53.0186 0 96 42.9814 96 96s-42.9814 96 -96 96s-96 -42.9814 -96 -96s42.9814 -96 96 -96zM127.559 365.696c-14.3398 -10.6406 -34.6143 -30.915 -45.2549 -45.2549l63.3994 -63.3994c11.0029 18.585 26.6963 34.2676 45.2549 45.2549zM82.3037 63.5586
c10.6406 -14.3398 30.915 -34.6143 45.2549 -45.2549l63.3994 63.3994c-18.585 11.0029 -34.2676 26.6963 -45.2549 45.2549zM384.441 18.3037c14.3398 10.6406 34.6143 30.915 45.2549 45.2549l-63.3994 63.3994c-11.0029 -18.585 -26.6963 -34.2676 -45.2549 -45.2549z
" />
<glyph glyph-name="circle-notch" unicode="&#xf1ce;" horiz-adv-x="511"
<glyph glyph-name="circle-notch" unicode="&#xf1ce;"
d="M288 408.944c0 15.5996 14.6777 27.167 29.7891 23.292c107.071 -27.457 186.211 -124.604 186.211 -240.236c0 -136.788 -110.745 -247.711 -247.466 -247.999c-137.054 -0.289062 -247.812 109.615 -248.531 246.667c-0.609375 116.126 78.5996 213.85 185.951 241.502
c15.2119 3.91895 30.0459 -7.52539 30.0459 -23.2344v-16.6475c0 -10.8047 -7.28125 -20.1621 -17.6885 -23.0693c-77.5254 -21.6543 -134.312 -92.749 -134.312 -177.219c0 -101.705 82.3105 -184 184 -184c101.705 0 184 82.3105 184 184
c0 84.4824 -56.7959 155.566 -134.314 177.219c-10.4043 2.90723 -17.6855 12.2627 -17.6855 23.0664v16.6592z" />
<glyph glyph-name="paper-plane" unicode="&#xf1d8;" horiz-adv-x="511"
<glyph glyph-name="paper-plane" unicode="&#xf1d8;"
d="M476 444.8c17.2998 10 39 -4.59961 35.5996 -24.7998l-72 -432c-2.59961 -15.2998 -18.7998 -24.2002 -33 -18.2002l-124.6 52.2002l-63.5 -77.2998c-14 -17.1006 -42.5 -7.7998 -42.5 15.7998v80.5l240.9 293.5c4.69922 5.7002 -3.10059 13.2002 -8.60059 8.2998
l-287.3 -253.2l-106.3 44.6006c-18 7.59961 -20.2998 32.7998 -2.2002 43.2002z" />
<glyph glyph-name="history" unicode="&#xf1da;"
@ -1276,7 +1282,7 @@ l-65.4092 50.874v135.651c0 13.2549 10.7451 24 24 24h16c13.2549 0 24 -10.7451 24
d="M496 368c0 -8.83691 -7.16309 -16 -16 -16h-37.2754v-320h37.2754c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-160c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h37.6201v128h-203.241v-128h37.6211
c8.83691 0 16 -7.16309 16 -16v-32c0 -8.83691 -7.16309 -16 -16 -16h-160c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h37.2754v320h-37.2754c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h160c8.83691 0 16 -7.16309 16 -16v-32
c0 -8.83691 -7.16309 -16 -16 -16h-37.6211v-128h203.242v128h-37.6211c-8.83691 0 -16 7.16309 -16 16v32c0 8.83691 7.16309 16 16 16h160c8.83691 0 16 -7.16309 16 -16v-32z" />
<glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="447"
<glyph glyph-name="paragraph" unicode="&#xf1dd;" horiz-adv-x="448"
d="M408 416c13.2549 0 24 -10.7451 24 -24v-32c0 -13.2549 -10.7451 -24 -24 -24h-40v-344c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v344h-32v-344c0 -13.2549 -10.7451 -24 -24 -24h-32c-13.2549 0 -24 10.7451 -24 24v104
c-88.3926 0 -160.044 71.6787 -160 160.082c0.0449219 88.583 72.9482 159.918 161.531 159.918h230.469z" />
<glyph glyph-name="sliders-h" unicode="&#xf1de;"
@ -1412,13 +1418,13 @@ c-50.7998 49.4004 -172.5 27.2002 -172.5 -70.0996c0 -100 119.2 -124.801 172.7 -67
<glyph glyph-name="shekel-sign" unicode="&#xf20b;" horiz-adv-x="448"
d="M248 280c0 30.9297 -25.0703 56 -56 56h-112v-352c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16v408c0 13.2598 10.75 24 24 24h168c75.1104 0 136 -60.8896 136 -136v-168c0 -8.83984 -7.16016 -16 -16 -16h-48c-8.83984 0 -16 7.16016 -16 16
v168zM432 416c8.83984 0 16 -7.16016 16 -16v-296c0 -75.1104 -60.8896 -136 -136 -136h-168c-13.25 0 -24 10.75 -24 24v280c0 8.83984 7.16016 16 16 16h48c8.83984 0 16 -7.16016 16 -16v-224h112c30.9297 0 56 25.0703 56 56v296c0 8.83984 7.16016 16 16 16h48z" />
<glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="575"
<glyph glyph-name="cart-plus" unicode="&#xf217;" horiz-adv-x="576"
d="M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941
c-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917
c-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782
c15.4004 0 26.8154 -14.3008 23.4023 -29.3193l-47.2725 -208c-2.4834 -10.9268 -12.1973 -18.6807 -23.4033 -18.6807zM408 280h-48v40c0 8.83691 -7.16309 16 -16 16h-16c-8.83691 0 -16 -7.16309 -16 -16v-40h-48c-8.83691 0 -16 -7.16309 -16 -16v-16
c0 -8.83691 7.16309 -16 16 -16h48v-40c0 -8.83691 7.16309 -16 16 -16h16c8.83691 0 16 7.16309 16 16v40h48c8.83691 0 16 7.16309 16 16v16c0 8.83691 -7.16309 16 -16 16z" />
<glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="575"
<glyph glyph-name="cart-arrow-down" unicode="&#xf218;" horiz-adv-x="576"
d="M504.717 128h-293.145l6.54492 -32h268.418c15.4004 0 26.8154 -14.3008 23.4033 -29.3193l-5.51758 -24.2754c18.6914 -9.07324 31.5791 -28.2334 31.5791 -50.4053c0 -31.2021 -25.5186 -56.4443 -56.8242 -55.9941
c-29.8232 0.428711 -54.3496 24.6309 -55.1543 54.4473c-0.44043 16.2871 6.08496 31.0488 16.8027 41.5479h-209.648c10.377 -10.166 16.8242 -24.3271 16.8242 -40.001c0 -31.8135 -26.5283 -57.4307 -58.6699 -55.9385c-28.54 1.3252 -51.751 24.3857 -53.251 52.917
c-1.1582 22.0342 10.4355 41.4551 28.0508 51.5869l-70.2471 343.435h-69.8828c-13.2549 0 -24 10.7451 -24 24v16c0 13.2549 10.7451 24 24 24h102.529c11.4004 0 21.2275 -8.02148 23.5127 -19.1904l9.16602 -44.8096h392.782
@ -1501,7 +1507,7 @@ c4.7002 4.7002 12.2998 4.7002 17 0l14.1006 -14.1006l17.5 17.5l-16.9004 16.9004c-
d="M245.8 213.8c56.2998 -56.2002 56.2998 -147.399 0 -203.6c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6c19.8994 19.9004 44.2002 32.7998 69.7998 38.6006v25.3994h-20c-6.59961 0 -12 5.40039 -12 12v40c0 6.60059 5.40039 12 12 12h20
v24.7002h-23.9004c-10.6992 0 -16.0996 12.9004 -8.5 20.5l55.9004 55.9004c4.7002 4.69922 12.2998 4.69922 17 0l55.9004 -55.8008c7.5 -7.59961 2.19922 -20.5 -8.5 -20.5h-23.9004v-24.7998h20c6.59961 0 12 -5.39941 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-20
v-25.3994c25.5996 -5.80078 49.9004 -18.7002 69.7998 -38.6006zM200.6 55.4004c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z" />
<glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="479"
<glyph glyph-name="mars-stroke-h" unicode="&#xf22b;" horiz-adv-x="480"
d="M476.2 200.5c4.7002 -4.7002 4.7002 -12.2998 0.0996094 -17l-55.8994 -55.9004c-7.60059 -7.5 -20.5 -2.19922 -20.5 8.5v23.9004h-23.9004v-20c0 -6.59961 -5.40039 -12 -12 -12h-40c-6.59961 0 -12 5.40039 -12 12v20h-27.5996
c-5.80078 -25.5996 -18.7002 -49.9004 -38.6006 -69.7998c-56.2002 -56.2002 -147.399 -56.2002 -203.6 0s-56.2002 147.399 0 203.6s147.399 56.2002 203.6 0c19.9004 -19.8994 32.7998 -44.2002 38.6006 -69.7998h27.5996v20c0 6.59961 5.40039 12 12 12h40
c6.59961 0 12 -5.40039 12 -12v-20h23.7998v23.9004c0 10.6992 12.9004 16.0996 20.5 8.5zM200.6 135.4c31.2002 31.1992 31.2002 82 0 113.1c-31.1992 31.2002 -81.8994 31.2002 -113.1 0s-31.2002 -81.9004 0 -113.1c31.2002 -31.2002 81.9004 -31.2002 113.1 0z" />
@ -1520,7 +1526,7 @@ s24 10.7451 24 24s-10.7451 24 -24 24z" />
d="M624 240c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-64v-64c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v64h-64c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h64v64c0 8.7998 7.2002 16 16 16h32
c8.7998 0 16 -7.2002 16 -16v-64h64zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352
c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992z" />
<glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="639"
<glyph glyph-name="user-times" unicode="&#xf235;" horiz-adv-x="640"
d="M589.6 208l45.6006 -45.5996c6.2998 -6.30078 6.2998 -16.5 0 -22.8008l-22.7998 -22.7998c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-45.5996 45.6006l-45.5996 -45.6006c-6.30078 -6.2998 -16.5 -6.2998 -22.8008 0l-22.7998 22.7998
c-6.2998 6.30078 -6.2998 16.5 0 22.8008l45.6006 45.5996l-45.6006 45.5996c-6.2998 6.30078 -6.2998 16.5 0 22.8008l22.7998 22.7998c6.30078 6.2998 16.5 6.2998 22.8008 0l45.5996 -45.6006l45.5996 45.6006c6.30078 6.2998 16.5 6.2998 22.8008 0l22.7998 -22.7998
c6.2998 -6.30078 6.2998 -16.5 0 -22.8008zM224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c74.2002 0 134.4 -60.2002 134.4 -134.4v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352
@ -1602,7 +1608,7 @@ d="M464.8 368c26.2998 -0.400391 47.2002 -22.5 47.2002 -48.7998v-133.5c0 -12.7998
c0 13.7002 -5.90039 26.8008 -16.0996 35.9004l-111.7 99.2998c-20.5 18.2998 -32.2002 44.4004 -32.2002 71.7998v66.4004c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-48.1006l8 -7.09961v136
c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8v48c0 26.7998 21.9004 48.4004 48.7998 48c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-47.2002h8v32c0 26.7998 21.9004 48.4004 48.7998 48
c26.2998 -0.5 47.2002 -22.5 47.2002 -48.7998v-31.2002h8c0 26.7998 21.9004 48.4004 48.7998 48z" />
<glyph glyph-name="hand-paper" unicode="&#xf256;" horiz-adv-x="447"
<glyph glyph-name="hand-paper" unicode="&#xf256;" horiz-adv-x="448"
d="M408.781 319.993c21.7305 -0.416016 39.2188 -18.1621 39.2178 -39.9932v-150.359c0 -12.2998 -2.28711 -32.001 -5.10449 -43.9746l-26.5078 -112.66c-5.10156 -21.6816 -24.4502 -37.0059 -46.7236 -37.0059h-197.59c-13.4922 0 -30.8838 8.85645 -38.8193 19.7676
l-125.601 172.705c-12.9932 17.8672 -9.04297 42.8838 8.82129 55.877c17.8682 12.9941 42.8848 9.04297 55.877 -8.82227l31.6484 -43.5195v235.992c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-175.21h8v216
c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-215.21h8v177c0 21.8311 17.4883 39.5771 39.2188 39.9932c22.4248 0.428711 40.7812 -18.3535 40.7812 -40.7832v-176.21h8v87.21
@ -1704,7 +1710,7 @@ c8.59961 2.03027 13.9258 10.6484 11.8965 19.249c-2.03027 8.60156 -10.6494 13.925
c28.7129 -6.7793 55.5127 -12.749 82.1416 -15.8066c-0.852539 -101.08 -12.3242 -123.08 -25.0371 -155.621c-3.61719 -9.25879 0.957031 -19.6982 10.2168 -23.3145c9.26465 -3.61914 19.7002 0.961914 23.3154 10.2168c8.72754 22.3408 17.0947 40.6982 22.2617 78.5488
h9.68555c5.1748 -37.9131 13.5566 -56.2412 22.2617 -78.5488c3.61621 -9.25977 14.0547 -13.834 23.3154 -10.2168c9.25977 3.61621 13.834 14.0547 10.2168 23.3145c-12.7305 32.5693 -24.1855 54.5986 -25.0371 155.621c26.6299 3.05859 53.4287 9.02832 82.1406 15.8066
z" />
<glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="383"
<glyph glyph-name="blind" unicode="&#xf29d;" horiz-adv-x="384"
d="M380.15 -62.8369c-1.05664 -0.640625 -2.91602 -1.16113 -4.15137 -1.16113c-2.48438 0 -5.54785 1.72363 -6.83789 3.84766l-125.33 206.428c4.25684 1.68848 10.0615 5.9375 12.958 9.48438l126.048 -207.607c0.641602 -1.05664 1.16211 -2.91699 1.16211 -4.15234
c0 -2.48535 -1.72461 -5.5498 -3.84863 -6.83887zM142.803 133.662l62.8145 -153.537c6.69141 -16.3584 -1.14453 -35.042 -17.501 -41.7344c-16.3564 -6.69043 -35.04 1.1416 -41.7334 17.501l-36.1201 88.2852zM96 360c-24.3008 0 -44 19.6992 -44 44s19.6992 44 44 44
s44 -19.6992 44 -44s-19.6992 -44 -44 -44zM250.837 190.872c8.19336 -10.374 6.44434 -25.4922 -3.96582 -33.708c-9.33984 -7.37402 -24.5635 -7.61914 -33.708 3.96484l-102.3 129.217c-0.663086 0.836914 -2.06738 1.51562 -3.13477 1.51562
@ -1717,7 +1723,7 @@ c0 -32.0977 -16.3994 -49.7754 -46.1748 -49.7754h-14.5234v98.7803h14.5234zM512 33
c-1.52734 4.49219 -6.61719 8.13867 -11.3623 8.13867h-35.8936c-4.74512 0 -9.83594 -3.64648 -11.3623 -8.13867l-57.0967 -168c-2.64453 -7.7832 3.1416 -15.8613 11.3613 -15.8613h29.1328c4.99219 0 10.1602 3.89453 11.5352 8.69336l8.57422 29.9053h51.3672
l8.79297 -29.9766c1.39648 -4.75977 6.55469 -8.62207 11.5146 -8.62207v0h29.1719c8.2207 0 14.0059 8.07812 11.3613 15.8613zM430.16 192.386c0 58.9775 -37.9189 95.6143 -98.96 95.6143h-57.3662c-6.62695 0 -12 -5.37305 -12 -12v-168c0 -6.62695 5.37305 -12 12 -12
h57.3662c61.041 0 98.96 36.9326 98.96 96.3857z" />
<glyph glyph-name="phone-volume" unicode="&#xf2a0;" horiz-adv-x="383"
<glyph glyph-name="phone-volume" unicode="&#xf2a0;" horiz-adv-x="384"
d="M97.333 -58.9658c-129.874 129.874 -129.681 340.252 0 469.933c5.69824 5.69824 14.5273 6.63184 21.2627 2.42188l64.8174 -40.5127c4.45898 -2.78711 8.07812 -9.31641 8.07812 -14.5752c0 -1.82715 -0.550781 -4.68652 -1.22949 -6.38281l-32.4082 -81.0205
c-2.38477 -5.96484 -9.53418 -10.8047 -15.958 -10.8047c-0.473633 0 -1.23926 0.0380859 -1.71094 0.0849609l-55.8096 5.58008c-21.0508 -58.2607 -20.6123 -122.471 0 -179.515l55.8105 5.58105c0.47168 0.046875 1.2373 0.0849609 1.71094 0.0849609
c6.42383 0 13.5732 -4.83984 15.959 -10.8037l32.4072 -81.0225c0.678711 -1.69629 1.22949 -4.55566 1.22949 -6.38281c0 -5.25879 -3.61914 -11.7881 -8.07812 -14.5752l-64.8174 -40.5127c-2.30762 -1.44238 -6.38867 -2.6123 -9.10938 -2.6123
@ -1739,7 +1745,7 @@ c0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -2
c17.6729 0 32 -14.3271 32 -32s-14.3271 -32 -32 -32s-32 14.3271 -32 32s14.3271 32 32 32zM512 187.993c0 -15.4639 -12.5371 -28 -28.001 -28s-28 12.5361 -28 28c0 1.12695 -0.00683594 2.24512 -0.0332031 3.36328l-0.00292969 0.1875
c-1.4668 91.4404 -60.1709 172.599 -146.077 201.953c-14.6318 5.00098 -22.4414 20.917 -17.4414 35.5498c5.00098 14.6328 20.917 22.4404 35.5498 17.4424c108.163 -36.959 182.082 -139.015 183.961 -253.965c0.0332031 -1.50684 0.0449219 -3.01367 0.0449219 -4.53125
zM152.971 8.9707l-33.9404 -33.9404l-80 80l33.9404 33.9404z" />
<glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="639"
<glyph glyph-name="american-sign-language-interpreting" unicode="&#xf2a3;" horiz-adv-x="640"
d="M290.547 258.961c-20.2949 10.1494 -44.1465 11.1992 -64.7393 3.88965c42.6064 0 71.208 -20.4746 85.5781 -50.5752c8.57617 -17.8994 -5.14746 -38.0713 -23.6172 -38.0713c18.4297 0 32.2119 -20.1357 23.6172 -38.0713
c-14.7246 -30.8457 -46.123 -50.8535 -80.2979 -50.8535c-0.556641 0 -94.4707 8.61426 -94.4707 8.61426l-66.4062 -33.3467c-9.38379 -4.69336 -19.8145 -0.378906 -23.8945 7.78125l-44.4561 88.9248c-4.16699 8.61523 -1.11133 18.8975 6.94531 23.6211l58.0723 33.0693
l41.1221 74.1953c6.38965 57.2451 34.7314 109.768 79.7432 146.727c11.3906 9.44824 28.3408 7.78125 37.5098 -3.61328c9.44629 -11.3936 7.78027 -28.0674 -3.6123 -37.5156c-12.5029 -10.5596 -23.6172 -22.5098 -32.5088 -35.5703
@ -1758,7 +1764,7 @@ c0 -95.9863 -71.4053 -109.798 -72 -144.226c-0.124023 -59.4463 -48.5254 -107.774
c0 66.168 -53.832 120 -120 120s-120 -53.832 -120 -120c0 -15.4639 -12.5361 -28 -28 -28s-28 12.5361 -28 28c0 97.0469 78.9531 176 176 176zM508.485 416.201c4.68652 -4.68652 4.68652 -12.2842 0 -16.9727l-87.0303 -87.0283
c-4.68652 -4.68652 -12.2842 -4.68652 -16.9697 0l-28.2852 28.2852c-4.68652 4.68652 -4.68652 12.2842 0 16.9707l87.0283 87.0293c4.6875 4.68555 12.2842 4.68555 16.9717 0zM168.97 133.255l28.2861 -28.2842c4.68652 -4.68652 4.68652 -12.2852 0 -16.9707
l-148.484 -148.485c-4.6875 -4.68555 -12.2842 -4.68555 -16.9717 0l-28.2852 28.2842c-4.68555 4.6875 -4.68555 12.2852 0 16.9707l148.485 148.485c4.68555 4.68652 12.2842 4.68652 16.9697 0z" />
<glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="447"
<glyph glyph-name="sign-language" unicode="&#xf2a7;" horiz-adv-x="448"
d="M91.4336 -35.9873c-0.306641 16.0186 13.1094 29.1289 29.1309 29.1289h62.293v5.71484h-125.864c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5234 12.9717 28.0146 28.5645 28.0146h126.43v5.71387h-153.722
c-16.0205 0 -29.4365 13.1113 -29.1299 29.1289c0.296875 15.5225 12.9727 28.0137 28.5664 28.0137h154.286v5.71387h-125.151c-16.0215 0 -29.4375 13.1104 -29.1299 29.1289c0.296875 15.5215 12.9727 28.0127 28.5654 28.0127h168.566l-31.085 22.6064
c-12.7617 9.28027 -15.583 27.1484 -6.30176 39.9121c9.28027 12.7607 27.1494 15.5811 39.9121 6.30176l123.36 -89.7148c7.79395 -5.66895 14.1201 -18.0908 14.1201 -27.7285v-141.136c0 -15.9102 -10.9463 -29.7305 -26.4326 -33.374l-80.4717 -18.9346
@ -1910,13 +1916,13 @@ c7.49805 0 13.1934 -6.80664 11.8066 -14.1758c-21.6377 -114.898 -122.519 -201.822
d="M432 144c0 -114.9 -93.0996 -208 -208 -208s-208 93.0996 -208 208c0 104 76.2998 190.2 176 205.5v34.5h-28c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h120c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-28v-34.5
c37.5 -5.7998 71.7002 -21.5996 99.7002 -44.5996l27.5 27.5c4.7002 4.69922 12.2998 4.69922 17 0l28.2998 -28.3008c4.7002 -4.69922 4.7002 -12.2998 0 -17l-29.4004 -29.3994l-0.599609 -0.600586c21.2002 -32.3994 33.5 -71.2998 33.5 -113.1zM256 108v151.5
c0 6.59961 -5.40039 12 -12 12h-40c-6.59961 0 -12 -5.40039 -12 -12v-151.5c0 -6.59961 5.40039 -12 12 -12h40c6.59961 0 12 5.40039 12 12z" />
<glyph glyph-name="sign-out-alt" unicode="&#xf2f5;" horiz-adv-x="503"
<glyph glyph-name="sign-out-alt" unicode="&#xf2f5;"
d="M497 175l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.4004 25.9004 32 41 17l168 -168c9.2998 -9.40039 9.2998 -24.5996 0 -34zM192 12c0 -6.59961 -5.40039 -12 -12 -12h-84
c-53 0 -96 43 -96 96v192c0 53 43 96 96 96h84c6.59961 0 12 -5.40039 12 -12v-40c0 -6.59961 -5.40039 -12 -12 -12h-84c-17.7002 0 -32 -14.2998 -32 -32v-192c0 -17.7002 14.2998 -32 32 -32h84c6.59961 0 12 -5.40039 12 -12v-40z" />
<glyph glyph-name="sign-in-alt" unicode="&#xf2f6;"
d="M416 0h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c17.7002 0 32 14.2998 32 32v192c0 17.7002 -14.2998 32 -32 32h-84c-6.59961 0 -12 5.40039 -12 12v40c0 6.59961 5.40039 12 12 12h84c53 0 96 -43 96 -96v-192c0 -53 -43 -96 -96 -96z
M369 201c9.2998 -9.40039 9.2998 -24.5996 0 -34l-168 -168c-15 -15 -41 -4.5 -41 17v96h-136c-13.2998 0 -24 10.7002 -24 24v96c0 13.2998 10.7002 24 24 24h136v96c0 21.5 26 32 41 17z" />
<glyph glyph-name="redo-alt" unicode="&#xf2f9;" horiz-adv-x="511"
<glyph glyph-name="redo-alt" unicode="&#xf2f9;"
d="M256.455 440c66.2686 -0.119141 126.437 -26.2334 170.859 -68.6846l35.7148 35.7148c15.1201 15.1191 40.9707 4.41113 40.9707 -16.9717v-134.059c0 -13.2549 -10.7451 -24 -24 -24h-134.059c-21.3828 0 -32.0908 25.8506 -16.9717 40.9707l41.75 41.75
c-30.8633 28.8994 -70.8008 44.9072 -113.229 45.2734c-92.3984 0.797852 -170.283 -73.9775 -169.484 -169.442c0.757812 -90.5605 74.1777 -166.552 167.994 -166.552c41.127 0 79.9971 14.6777 110.629 41.5557c4.74316 4.16113 11.9062 3.9082 16.3682 -0.552734
l39.6621 -39.6621c4.87207 -4.87207 4.63086 -12.8145 -0.482422 -17.4326c-43.9746 -39.7217 -102.251 -63.9082 -166.177 -63.9082c-136.966 0 -247.999 111.033 -248 247.998c-0.000976562 136.809 111.646 248.247 248.455 248.002z" />
@ -1940,7 +1946,7 @@ c18.75 18.75 49.1602 18.75 67.9102 0z" />
d="M497.94 373.83c18.75 -18.7598 18.75 -49.1602 0 -67.9102l-56.5508 -56.5498l-128.02 128.02l56.5498 56.5508c18.75 18.75 49.1602 18.75 67.9102 0zM251.14 394.36l84.8506 -84.8506l82.7695 -82.7695l-196.79 -196.79
c-44.8223 -44.8203 -132.335 -86.8428 -195.34 -93.7998c-15.2803 -1.69043 -28.1895 11.2295 -26.4902 26.5098l0.0302734 0.229492c7.00195 62.9189 49.0156 150.315 93.7803 195.08l151.56 151.55l-22.6299 22.6201l-101.82 -101.819
c-6.25 -6.25 -16.3799 -6.25 -22.6299 0l-22.6299 22.6299c-6.25 6.24023 -6.25 16.3701 0 22.6201l118.78 118.79c15.6201 15.6201 40.9395 15.6201 56.5596 0z" />
<glyph glyph-name="long-arrow-alt-down" unicode="&#xf309;" horiz-adv-x="255"
<glyph glyph-name="long-arrow-alt-down" unicode="&#xf309;" horiz-adv-x="256"
d="M168 102.059h46.0576c21.3828 0 32.0908 -25.8516 16.9717 -40.9707l-86.0596 -86.0586c-9.37207 -9.37305 -24.5674 -9.37305 -33.9404 0l-86.0596 86.0586c-15.1191 15.1201 -4.41113 40.9707 16.9717 40.9707h46.0586v301.941c0 6.62695 5.37305 12 12 12h56
c6.62695 0 12 -5.37305 12 -12v-301.941z" />
<glyph glyph-name="long-arrow-alt-left" unicode="&#xf30a;" horiz-adv-x="448"
@ -1953,9 +1959,10 @@ c0 6.62695 5.37305 12 12 12h301.941z" />
d="M88 281.941h-46.0576c-21.3828 0 -32.0908 25.8516 -16.9717 40.9707l86.0596 86.0586c9.37207 9.37305 24.5674 9.37305 33.9404 0l86.0596 -86.0586c15.1191 -15.1201 4.41113 -40.9707 -16.9717 -40.9707h-46.0586v-301.941c0 -6.62695 -5.37305 -12 -12 -12h-56
c-6.62695 0 -12 5.37305 -12 12v301.941z" />
<glyph glyph-name="expand-arrows-alt" unicode="&#xf31e;" horiz-adv-x="448"
d="M448.1 104v-112c0 -13.2998 -10.6992 -24 -24 -24h-112c-21.3994 0 -32.0996 25.9004 -17 41l36.2002 36.2002l-107.3 107.2l-107.2 -107.301l36.2002 -36.0996c15.0996 -15.0996 4.40039 -41 -17 -41h-112c-13.2998 0 -24 10.7002 -24 24v112
c0 21.4004 25.9004 32.0996 41 17l36.2002 -36.2002l107.3 107.2l-107.3 107.3l-36.2002 -36.2998c-15.0996 -15.0996 -41 -4.40039 -41 17v112c0 13.2998 10.7002 24 24 24h112c21.4004 0 32.0996 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.3 107.301
l-36.2002 36.0996c-15.0996 15.0996 -4.39941 41 17 41h112c13.3008 0 24 -10.7002 24 -24v-112c0 -21.4004 -25.8994 -32.0996 -41 -17l-36.1992 36.2002l-107.301 -107.2l107.301 -107.3l36.1992 36.2002c15.1006 15.1992 41 4.5 41 -16.9004z" />
d="M448 104v-112v-0.0605469c0 -13.2148 -10.7246 -23.9395 -23.9395 -23.9395h-0.0605469h-112c-21.3896 0 -32.0898 25.9004 -17 41l36.2002 36.2002l-107.2 107.2l-107.23 -107.301l36.2305 -36.0996c15.0898 -15.0996 4.38965 -41 -17 -41h-112h-0.0605469
c-13.2148 0 -23.9395 10.7246 -23.9395 23.9395v0.0605469v112c0 21.4004 25.8896 32.0996 41 17l36.1904 -36.2002l107.27 107.2l-107.28 107.3l-36.1797 -36.2998c-15.0996 -15.0996 -41 -4.40039 -41 17v112v0.0605469c0 13.2148 10.7246 23.9395 23.9395 23.9395
h0.0605469h112c21.3896 0 32.0898 -25.9004 17 -41l-36.2002 -36.2002l107.2 -107.2l107.23 107.301l-36.2305 36.0996c-15.0898 15.0996 -4.38965 41 17 41h112h0.0605469c13.2148 0 23.9395 -10.7246 23.9395 -23.9395v-0.0605469v-112
c0 -21.4004 -25.8896 -32.0996 -41 -17l-36.1904 36.2002l-107.27 -107.2l107.28 -107.3l36.1797 36.2002c15.0996 15.1992 41 4.5 41 -16.9004z" />
<glyph glyph-name="clipboard" unicode="&#xf328;" horiz-adv-x="384"
d="M384 336v-352c0 -26.5098 -21.4902 -48 -48 -48h-288c-26.5098 0 -48 21.4902 -48 48v352c0 26.5098 21.4902 48 48 48h80c0 35.29 28.71 64 64 64s64 -28.71 64 -64h80c26.5098 0 48 -21.4902 48 -48zM192 408c-13.2549 0 -24 -10.7451 -24 -24s10.7451 -24 24 -24
s24 10.7451 24 24s-10.7451 24 -24 24zM288 294v20c0 3.31152 -2.68848 6 -6 6h-180c-3.31152 0 -6 -2.68848 -6 -6v-20c0 -3.31152 2.68848 -6 6 -6h180c3.31152 0 6 2.68848 6 6z" />
@ -2058,7 +2065,7 @@ c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h55.0996z" />
d="M464 416c26.5 0 48 -21.5 48 -48v-352c0 -26.5 -21.5 -48 -48 -48h-416c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h416zM380.4 125.5l-67.1006 66.5l67.1006 66.5c4.7998 4.7998 4.7998 12.5996 0 17.4004l-40.5 40.5
c-4.80078 4.7998 -12.6006 4.7998 -17.4004 0l-66.5 -67.1006l-66.5 67.1006c-4.7998 4.7998 -12.5996 4.7998 -17.4004 0l-40.5 -40.5c-4.7998 -4.80078 -4.7998 -12.6006 0 -17.4004l67.1006 -66.5l-67.1006 -66.5c-4.7998 -4.7998 -4.7998 -12.5996 0 -17.4004
l40.5 -40.5c4.80078 -4.7998 12.6006 -4.7998 17.4004 0l66.5 67.1006l66.5 -67.1006c4.7998 -4.7998 12.5996 -4.7998 17.4004 0l40.5 40.5c4.7998 4.80078 4.7998 12.6006 0 17.4004z" />
<glyph glyph-name="baseball-ball" unicode="&#xf433;" horiz-adv-x="495"
<glyph glyph-name="baseball-ball" unicode="&#xf433;" horiz-adv-x="496"
d="M368.5 84.0996c12.9004 -26.6992 30.2998 -50.1992 51.4004 -70.5996c-44.6006 -43 -105.101 -69.5 -171.9 -69.5c-66.9004 0 -127.5 26.5996 -172 69.7002c21.2002 20.3994 38.5996 44 51.5 70.7002l-28.7998 13.8994c-11.1006 -23 -26.1006 -43.2998 -44.2998 -61
c-34 42.4004 -54.4004 96.1006 -54.4004 154.7s20.4004 112.3 54.4004 154.8c17.7998 -17.2998 32.5 -37.0996 43.5 -59.3994l28.6992 14.0996c-12.7998 25.9004 -30 48.9004 -50.6992 68.7998c44.5996 43.1006 105.199 69.7002 172.1 69.7002
c67 0 127.6 -26.7002 172.2 -69.7998c-20.7998 -20 -38 -43 -50.7998 -69l28.6992 -14.1006c11 22.4004 25.8008 42.2002 43.6006 59.5c33.7998 -42.3994 54.2002 -96.0996 54.2002 -154.6c0 -58.5996 -20.5 -112.4 -54.5 -154.9c-18.1006 17.7002 -33 38 -44.1006 60.9004z
@ -2071,7 +2078,7 @@ l46.2998 -46.2998l-157.9 -157.9c-35 42.4004 -53.5 93.6006 -56.0996 145.5c63.9004
<glyph glyph-name="bowling-ball" unicode="&#xf436;" horiz-adv-x="496"
d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM120 256c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM184 352c0 -17.7002 14.2998 -32 32 -32s32 14.2998 32 32
s-14.2998 32 -32 32s-32 -14.2998 -32 -32zM232 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32z" />
<glyph glyph-name="chess" unicode="&#xf439;" horiz-adv-x="514"
<glyph glyph-name="chess" unicode="&#xf439;"
d="M76.0996 237.8l-34.5996 95.1006c-2.7998 7.7998 3 16.0996 11.2998 16.0996h51.2002v30.2002h-21.5996c-3.30078 0 -6 2.7002 -6 6v22.3994c0 3.30078 2.69922 6 6 6h28.3994v28.4004c0 3.2998 2.7002 6 6 6h22.4004c3.2998 0 6 -2.7002 6 -6v-28.4004h28.3994
c3.30078 0 6 -2.69922 6 -6v-22.3994c0 -3.2998 -2.69922 -6 -6 -6h-21.5996v-30.2002h51.0996c8.30078 0 14.1006 -8.2998 11.3008 -16.0996l-34.6006 -95.1006h-103.7zM313.3 147.1c-1.09961 0.700195 -1.7002 1.90039 -1.89941 3.10059v69.8994
c0 2.2002 1.7998 3.90039 3.89941 3.90039h27.7002c2.2002 0 3.90039 -1.7998 3.90039 -3.90039v-31.5h22.6992v31.5c0 2.2002 1.80078 3.90039 3.90039 3.90039h52.9004c2.19922 0 3.89941 -1.7998 3.89941 -3.90039v-31.5h22.7002v31.5
@ -2132,7 +2139,7 @@ c4.59961 -12.7998 16.5 -22.1006 30.9004 -22.1006c18.2998 0 33.0996 14.9004 33.09
c18.2998 0 33.0996 14.9004 33.0996 33.1006z" />
<glyph glyph-name="hockey-puck" unicode="&#xf453;"
d="M0 288c0 53 114.6 96 256 96s256 -43 256 -96s-114.6 -96 -256 -96s-256 43 -256 96zM0 205.8c113.5 -82.3994 398.6 -82.2998 512 0v-109.8c0 -53 -114.6 -96 -256 -96s-256 43 -256 96v109.8z" />
<glyph glyph-name="quidditch" unicode="&#xf458;" horiz-adv-x="639"
<glyph glyph-name="quidditch" unicode="&#xf458;" horiz-adv-x="640"
d="M256.5 231.2l86.7002 -109.2s-16.6006 -102.4 -76.6006 -150.1c-59.8994 -47.7002 -266.6 -34.1006 -266.6 -34.1006s3.7998 23.1006 11 55.4004l94.5996 112.2c4 4.69922 -0.899414 11.5996 -6.59961 9.5l-60.4004 -22.1006c14.4004 41.7002 32.7002 80 54.6006 97.5
c59.8994 47.7998 163.3 40.9004 163.3 40.9004zM494.5 96.2002c44 0 79.7998 -35.7002 79.7998 -79.9004c0 -44.0996 -35.7002 -79.8994 -79.7998 -79.8994s-79.7998 35.7998 -79.7998 79.8994c0 44.1006 35.7998 79.9004 79.7998 79.9004zM636.5 417
c5.5 -6.90039 4.40039 -17 -2.5 -22.5l-232.5 -177.9l34.0996 -42.8994c5.10059 -6.40039 1.7002 -15.9004 -6.2998 -17.6006l-58.7998 -12.3994l-86.7002 109.2l25.2998 54.5996c3.5 7.40039 13.5 8.59961 18.6006 2.2002l34.0996 -43l232.5 177.899
@ -2143,12 +2150,13 @@ d="M512 -64h-512v512h512v-512z" />
d="M496.2 151.5c-64.1006 43.2002 -149.5 27.9004 -195.601 -34.2002l-211.5 211.5l56 56.1006c83.9004 84.0996 220 84.0996 303.9 0c63 -63.1006 78.7002 -155.601 47.2002 -233.4zM278.3 71.7998c-3.7002 -12.7002 -6.2998 -25.8994 -6.2002 -39.7002
c0 -19.5 3.90039 -38.0996 11 -55.0996c-25.6992 2.7998 -50.5996 13.5996 -70.2998 33.2998l-35.7002 35.7002l-89.2998 -103.3c-7.5 -8.60059 -20.7002 -9.10059 -28.7002 -1l-53.3994 53.5c-8.10059 8.09961 -7.60059 21.2998 1 28.7998l103 89.4004l-34.5 34.5996
c-39 39.0996 -44.6006 98.7998 -17.2998 144.1zM416 128c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96z" />
<glyph glyph-name="volleyball-ball" unicode="&#xf45f;" horiz-adv-x="495"
d="M223.3 204.6c-71.8994 -44.3994 -123.399 -113 -146.1 -192.199c-24 22.7998 -43.5 50.2998 -56.9004 81.0996c22.7998 94.4004 89.5 174.4 180.3 216.8c14.1006 -32.8994 21.8008 -68.7002 22.7002 -105.7zM186.4 339c-84 -39.5 -149 -108.4 -182.4 -191.5
c-19.7998 109.3 34 212.4 125 262.2c22.9004 -20.6006 42.4004 -44.2998 57.4004 -70.7002zM374 173.9c-35.5996 4.19922 -70.4004 15.5 -102.9 33.1992c-2.5 84.5 -36.1992 163.4 -93.5 222.7c47.3008 14 84.2002 10.2002 98.9004 8.5
c70.2002 -66.8994 106.1 -164.6 97.5 -264.399zM249.3 164.4c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c27.1992 0 54.2998 3.7998 80.8994 10.4004c-8 -33.1006 -22.5 -63.5 -42.2002 -89.9004c-93 -27.2998 -195.5 -9.5 -277.5 47.7998
c21.5 28.7002 48.6006 53.2998 80.2002 72.6006zM151 64.7002c53.5996 -37.2998 144 -78.2002 256.9 -62.1006c-43.2002 -36.5 -98.9004 -58.5996 -159.9 -58.5996c-47.4004 0 -91.5 13.5 -129.1 36.5c6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM331.3 425.3
c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.300781 -4 -0.300781 -6c-29.1992 -9.40039 -59.3994 -14.4004 -89.6992 -14.2002c7.89941 92.3994 -19.3008 183.2 -74.6006 253.6z" />
<glyph glyph-name="volleyball-ball" unicode="&#xf45f;"
d="M231.39 204.52c-60.8945 -37.4102 -126.348 -123.516 -146.1 -192.199c-20.248 19.1953 -45.7393 55.5283 -56.9004 81.0996c22.8008 94.4004 89.5 174.4 180.301 216.8c11.8887 -27.9648 22.0586 -75.3184 22.6992 -105.7zM194.49 338.92
c-84 -39.5 -149 -108.4 -182.4 -191.5c-19.7998 109.3 34 212.4 125 262.2c19.0098 -16.9424 44.7246 -48.6162 57.4004 -70.7002zM382.09 173.82c-30.1689 3.6709 -76.2686 18.5352 -102.899 33.1797c-1.9541 71.4844 -43.8428 171.263 -93.5 222.72
c47.2998 14 84.1992 10.2002 98.8994 8.5c70.2002 -66.8994 106.101 -164.6 97.5 -264.399zM257.39 164.32c49.7002 -26.8008 104 -40.8008 158.601 -40.9004c22.6787 0.140625 58.9219 4.7998 80.8994 10.4004c-6.55762 -27.2012 -25.4639 -67.4766 -42.1992 -89.9004
c-93 -27.2998 -195.5 -9.5 -277.5 47.7998c18.2803 24.2959 54.21 56.8213 80.1992 72.6006zM159.09 64.6201c53.6006 -37.2998 144 -78.2002 256.9 -62.1006c-38.1611 -32.3467 -109.732 -58.5986 -159.758 -58.5986c-38.5156 0 -96.416 16.3516 -129.242 36.499
c6.39941 29.7998 16.8994 58.2002 32.0996 84.2002zM339.39 425.22c95.9004 -34.2998 164.601 -125.6 164.601 -233.399c0 -2 -0.299805 -4 -0.299805 -6c-23.9658 -7.83887 -63.8799 -14.2012 -89.0947 -14.2012c-0.166992 0 -0.438477 0.000976562 -0.605469 0.000976562
c7.89941 92.3994 -19.2998 183.2 -74.6006 253.6z" />
<glyph glyph-name="allergies" unicode="&#xf461;" horiz-adv-x="448"
d="M416 336c17.5996 0 32 -14.4004 32 -32v-176.1c-0.200195 -14 -1.90039 -28.6006 -5.09961 -42.3008l-26.5 -112.699c-5.10059 -21.7002 -24.4004 -37 -46.7002 -37h-197.601c-15.2998 0 -29.7998 7.39941 -38.7998 19.7998l-125.6 172.7
c-13 17.8994 -9.10059 42.8994 8.7998 55.8994s42.9004 9.10059 55.9004 -8.7998l23.5996 -32.5v241c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-152c0 -4.40039 3.59961 -8 8 -8h16c4.40039 0 8 3.59961 8 8v184c0 17.5996 14.4004 32 32 32s32 -14.4004 32 -32v-184
@ -2173,7 +2181,7 @@ c0 4.40039 -3.59961 8 -8 8h-48c-4.40039 0 -8 -3.59961 -8 -8v-56h-56c-4.40039 0 -
<glyph glyph-name="burn" unicode="&#xf46a;" horiz-adv-x="384"
d="M192 448c111.8 -100.9 192 -220.6 192 -300.5c0 -124.5 -79 -211.5 -192 -211.5s-192 87 -192 211.5c0 79.5996 79.7002 199.2 192 300.5zM192 0c56.5 0 96 39 96 94.7998c0 13.5 -4.59961 61.5 -96 161.2c-91.4004 -99.7002 -96 -147.7 -96 -161.2
c0 -55.7998 39.5 -94.7998 96 -94.7998z" />
<glyph glyph-name="capsules" unicode="&#xf46b;" horiz-adv-x="575"
<glyph glyph-name="capsules" unicode="&#xf46b;" horiz-adv-x="576"
d="M555.3 147.9c36.2002 -51.7002 23.7002 -123 -28 -159.2c-20 -14 -42.7998 -20.7002 -65.5 -20.7002c-36.0996 0 -71.5996 17 -93.7998 48.7998l-131.2 187.3c-5.5 7.90039 -9.5 16.4004 -12.7998 25v-149.1c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112
v224c0 61.9004 50.0996 112 112 112c60 0 108.5 -47.2002 111.4 -106.5c7.7998 21 21.7998 40 41.5 53.7998c20 14 42.8994 20.7002 65.5 20.7002c36 0 71.5 -17 93.7998 -48.7998zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM354.8 147.1
l82.5 57.7002l-65.5996 93.7002c-9.40039 13.5 -24.7998 21.5 -41.2998 21.5c-10.3008 0 -20.3008 -3.09961 -28.8008 -9.09961c-11 -7.7002 -18.3994 -19.3008 -20.6992 -32.5c-2.40039 -13.2002 0.599609 -26.6006 8.2998 -37.6006z" />
@ -2241,7 +2249,7 @@ v56h56c4.40039 0 8 3.59961 8 8zM288 296v16c0 4.40039 -3.59961 8 -8 8h-176c-4.400
<glyph glyph-name="pallet" unicode="&#xf482;" horiz-adv-x="640"
d="M144 192c-8.7998 0 -16 7.2002 -16 16v224c0 8.7998 7.2002 16 16 16h112v-128l64 32l64 -32v128h112c8.7998 0 16 -7.2002 16 -16v-224c0 -8.7998 -7.2002 -16 -16 -16h-352zM624 64h-48v-64h48c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-608
c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h48v64h-48c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h608c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16zM288 0v64h-160v-64h160zM512 0v64h-160v-64h160z" />
<glyph glyph-name="pills" unicode="&#xf484;" horiz-adv-x="575"
<glyph glyph-name="pills" unicode="&#xf484;" horiz-adv-x="576"
d="M112 416c61.9004 0 112 -50.0996 112 -112v-224c0 -61.9004 -50.0996 -112 -112 -112s-112 50.0996 -112 112v224c0 61.9004 50.0996 112 112 112zM160 192v112c0 26.5 -21.5 48 -48 48s-48 -21.5 -48 -48v-112h96zM299.7 221.7l210.8 -210.8
c3.5 -3.5 3.2002 -9.40039 -0.799805 -12.3008c-62.5 -45.2998 -150.101 -40.3994 -206.4 15.9004s-61.2002 143.9 -15.8994 206.4c2.89941 3.89941 8.7998 4.2998 12.2998 0.799805zM529.5 240.7c56.4004 -56.2998 61.2002 -143.8 15.9004 -206.4
c-2.90039 -3.89941 -8.80078 -4.2998 -12.3008 -0.799805l-210.8 210.8c-3.5 3.5 -3.2002 9.40039 0.799805 12.2998c62.5 45.3008 150.101 40.4004 206.4 -15.8994z" />
@ -2274,7 +2282,7 @@ l66.4004 66.4004l-7.10059 63.5996c-2.59961 24.2998 5.7002 48.0996 23 65.4004l26.
l55.6992 -55.7998c3.10059 -3.09961 8.2002 -3.09961 11.3008 0l11.2998 11.2998c3.09961 3.10059 3.09961 8.2002 0 11.3008zM509.7 366.5c3.09961 -3.2002 3.09961 -8.2002 0 -11.4004l-11.2998 -11.2998c-3.10059 -3.09961 -8.2002 -3.09961 -11.3008 0l-28.2998 28.2998
l-45.2998 -45.2998l73.5 -73.5c3.09961 -3.09961 3.09961 -8.2002 0 -11.2998l-33.9004 -34c-3.09961 -3.09961 -8.19922 -3.09961 -11.2998 0l-17 17l-135.7 135.9l-17 17c-3.09961 3.09961 -3.09961 8.19922 0 11.2998l33.9004 33.8994
c3.09961 3.10059 8.2002 3.10059 11.2998 0l17 -17l56.6006 -56.5996l45.2998 45.2998l-28.2998 28.2998c-3.10059 3.10059 -3.10059 8.2002 0 11.3008l11.2998 11.2998c3.09961 3.09961 8.2002 3.09961 11.2998 0z" />
<glyph glyph-name="tablets" unicode="&#xf490;" horiz-adv-x="639"
<glyph glyph-name="tablets" unicode="&#xf490;" horiz-adv-x="640"
d="M160 256c81.0996 0 147.5 -58.5 160 -134.7c0.799805 -4.7998 -3.2998 -9.2998 -8.2998 -9.2998h-303.3c-5 0 -9.10059 4.5 -8.30078 9.2998c12.4004 76.2002 78.8008 134.7 159.9 134.7zM311.6 80c5 0 9.10059 -4.5 8.30078 -9.2998
c-12.4004 -76.2002 -78.8008 -134.7 -159.9 -134.7s-147.5 58.5 -159.9 134.7c-0.799805 4.7998 3.30078 9.2998 8.30078 9.2998h303.199zM593.4 401.4c56.5 -56.5 61.3994 -144.2 15.8994 -206.9c-2.7998 -4 -8.7998 -4.2998 -12.2998 -0.799805l-211.3 211.399
c-3.5 3.40039 -3.2002 9.40039 0.799805 12.3008c62.7002 45.3994 150.4 40.5 206.9 -16zM363 382.3l211.3 -211.3c3.5 -3.40039 3.2002 -9.40039 -0.799805 -12.2998c-62.7002 -45.5 -150.4 -40.6006 -206.9 15.8994c-56.3994 56.5 -61.2998 144.2 -15.8994 206.9
@ -2342,7 +2350,7 @@ d="M275.3 197.5l-108.899 114.2c-31.6006 33.2002 -29.7002 88.2002 5.59961 118.8c3
l-108.9 -114.2c-7.09961 -7.40039 -18.5 -7.40039 -25.5 0zM565.3 119.9c15.1006 -13.6006 13.9004 -36.8008 -1.2998 -48.9004l-151.2 -121c-11.3994 -9.09961 -25.5 -14 -40 -14h-356.8c-8.7998 0 -16 7.2002 -16 16v96c0 8.7998 7.2002 16 16 16h55.4004l46.5 37.7002
c21 17 47.0996 26.2998 74.0996 26.2998h160c19.5 0 34.9004 -17.4004 31.5996 -37.4004c-2.59961 -15.6992 -17.3994 -26.5996 -33.2998 -26.5996h-78.2998c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h118.3c14.6006 0 28.7002 4.90039 40 14l92.4004 73.9004
c12.3994 10 30.7998 10.6992 42.5996 0z" />
<glyph glyph-name="hand-holding-usd" unicode="&#xf4c0;" horiz-adv-x="543"
<glyph glyph-name="hand-holding-usd" unicode="&#xf4c0;" horiz-adv-x="544"
d="M257.6 303.7c-22.1992 6.39941 -40 24.7002 -42.8994 47.7002c-4 32 19 59.3994 49.2998 63v17.5996c0 8.7998 7.2002 16 16 16h16c8.7998 0 16 -7.2002 16 -16v-17.7002c11.5 -1.39941 22.2998 -5.2002 31.7998 -11.5c6.2002 -4.09961 6.7998 -13.0996 1.5 -18.3994
l-17.5 -17.5c-3.7002 -3.7002 -9.2998 -4.2002 -14.0996 -2c-3.2002 1.39941 -6.7002 2.19922 -10.2998 2.19922h-32.8008c-4.59961 0 -8.39941 -3.7998 -8.39941 -8.39941c0 -3.7002 2.5 -7.10059 6.09961 -8.10059l50 -14.2998
c22.2002 -6.39941 40 -24.7002 42.9004 -47.7002c4 -32 -19 -59.3994 -49.2998 -63v-17.5996c0 -8.7998 -7.2002 -16 -16 -16h-16c-8.80078 0 -16 7.2002 -16 16v17.7002c-11.5 1.39941 -22.3008 5.2002 -31.8008 11.5c-6.19922 4.09961 -6.7998 13.0996 -1.5 18.3994
@ -2433,7 +2441,7 @@ d="M496 224c79.5996 0 144 -64.4004 144 -144s-64.4004 -144 -144 -144s-144 64.4004
c-5.2998 0 -9.7002 -4.40039 -9.7002 -9.7002v-76.5996c0 -5.2998 4.40039 -9.7002 9.7002 -9.7002h60.5996c5.2998 0 9.7002 4.40039 9.7002 9.7002zM320 80c0 -59.5 29.7998 -112.1 75.0996 -144h-347.1c-26.5 0 -48 21.5 -48 48v41.5996
c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992c8.40039 0 16.6006 -1 24.6006 -2.5c-11.5 -23.4004 -18.2002 -49.7002 -18.2002 -77.5zM224 192c-70.7002 0 -128 57.2998 -128 128
s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128z" />
<glyph glyph-name="user-cog" unicode="&#xf4fe;" horiz-adv-x="639"
<glyph glyph-name="user-cog" unicode="&#xf4fe;" horiz-adv-x="640"
d="M610.5 74.7002l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998
c0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039
c-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994
@ -2443,7 +2451,7 @@ c26.7998 0 48.5 21.7998 48.5 48.5s-21.7998 48.5 -48.5 48.5s-48.5 -21.7998 -48.5
c0 -4.09961 0.799805 -8 2 -11.7998c-7.7002 -5.2998 -17.1006 -8.5 -27.2002 -8.5h-352c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992
c3.90039 0 7.60059 -0.900391 11.4004 -1.2002c-1 -2.89941 -2.2998 -5.7998 -3.2002 -8.7002c-5.5 -17.6992 1.90039 -36.5 17.9004 -45.6992l7.89941 -4.60059c-0.0996094 -2.59961 -0.0996094 -5.2002 0 -7.7998l-7.89941 -4.59961
c-16 -9.30078 -23.4004 -28 -17.9004 -45.7002c7.90039 -25.7002 21.9004 -49.7998 40.2002 -69.6006c7.5 -8 18 -12.5996 28.9004 -12.5996c6.7998 0 13.5996 1.90039 19.5996 5.2998l7.90039 4.60059c2.19922 -1.30078 4.5 -2.7002 6.7998 -3.90039z" />
<glyph glyph-name="user-edit" unicode="&#xf4ff;" horiz-adv-x="639"
<glyph glyph-name="user-edit" unicode="&#xf4ff;" horiz-adv-x="640"
d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM313.6 160c39.9004 0 75.4004 -17.7998 99.9004 -45.5l-77.2998 -77.2998l-7.90039 -7.90039l-1.2002 -11.0996l-6.7998 -60.9004
c-0.799805 -7.2998 0.200195 -14.5 2.60059 -21.2998h-274.9c-26.5 0 -48 21.5 -48 48v41.5996c0 74.2002 60.2002 134.4 134.4 134.4h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16s50.7002 5.7998 72.9004 16h16.6992zM358.9 14.7002l137.899 137.8l71.7002 -71.7002
l-137.9 -137.899l-60.8994 -6.80078c-10.1006 -1.19922 -18.7002 7.40039 -17.6006 17.6006zM633 179.1c9.2998 -9.39941 9.2998 -24.5 0 -33.8994l-41.7998 -41.7998l-71.7998 71.6992l4.09961 4.10059l37.7998 37.7998c9.2998 9.2998 24.5 9.2998 33.7998 0z" />
@ -2475,7 +2483,7 @@ c2.60059 0 5 -0.700195 7.5 -0.799805c-0.299805 -2.40039 -1.09961 -4.7002 -1.0996
<glyph glyph-name="user-slash" unicode="&#xf506;" horiz-adv-x="640"
d="M633.8 -10.0996c7 -5.40039 8.2998 -15.5 2.90039 -22.3008l-19.6006 -25.2998c-5.5 -7 -15.5 -8.2002 -22.5 -2.7998l-588.399 454.7c-7 5.39941 -8.2002 15.3994 -2.7998 22.3994l19.5996 25.2002c5.5 7 15.5 8.2002 22.5 2.7998l147.6 -114
c5.40039 65.6006 59.8008 117.4 126.9 117.4c70.7002 0 128 -57.2998 128 -128c0 -55.7998 -35.9004 -102.7 -85.7002 -120.3zM96 25.5996c0 66.4004 48.2002 121.101 111.4 132.101l286.8 -221.7h-350.2c-26.5 0 -48 21.5 -48 48v41.5996z" />
<glyph glyph-name="user-tag" unicode="&#xf507;" horiz-adv-x="639"
<glyph glyph-name="user-tag" unicode="&#xf507;" horiz-adv-x="640"
d="M630.6 83.0996c12.5 -12.5 12.5 -32.6992 -0.0996094 -45.1992l-92.5 -92.5c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-90.2998 90.1992c-12 12 -18.7002 28.2002 -18.7002 45.2002v79.2002c0 17.7002 14.2998 32 32 32h79.2998c17 0 33.2998 -6.7002 45.2998 -18.7002z
M447.8 104.1c13.2998 0 24 10.8008 24 24c0 13.3008 -10.7002 24 -24 24s-24 -10.6992 -24 -24c0 -13.2998 10.7002 -24 24 -24zM224 192.1c-70.7002 0 -128 57.3008 -128 127.9c0 70.7002 57.2998 128 128 128s128 -57.2998 128 -127.9c0 -70.6992 -57.2998 -128 -128 -128
zM351.8 80.9004c0 -25.7002 10 -49.8008 28.1006 -67.9004l58 -58c-8.80078 -11.4004 -22.4004 -18.9004 -37.9004 -18.9004h-352c-26.5 0 -48 21.5 -48 48v41.6006c0 74.2002 60.2002 134.399 134.4 134.5h16.6992c22.3008 -10.2002 46.9004 -16 72.9004 -16
@ -2483,7 +2491,7 @@ s50.7002 5.7998 72.9004 16h16.6992c13.3008 0 26 -2.60059 38.2002 -6.2002v-73.099
<glyph glyph-name="user-tie" unicode="&#xf508;" horiz-adv-x="448"
d="M224 192c-70.7002 0 -128 57.2998 -128 128s57.2998 128 128 128s128 -57.2998 128 -128s-57.2998 -128 -128 -128zM319.8 159.4c71.2998 -3.40039 128.2 -61.7002 128.2 -133.801v-41.5996c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v41.5996
c0 72.1006 56.9004 130.4 128.2 133.801l47.7998 -191.4l32 136l-32 56h96l-32 -56l32 -136z" />
<glyph glyph-name="users-cog" unicode="&#xf509;" horiz-adv-x="639"
<glyph glyph-name="users-cog" unicode="&#xf509;" horiz-adv-x="640"
d="M610.5 106.7l25.7998 -14.9004c2.90039 -1.7002 4.2998 -5.2002 3.2998 -8.5c-6.69922 -21.5996 -18.1992 -41.2002 -33.1992 -57.3994c-2.30078 -2.5 -6.10059 -3.10059 -9 -1.40039l-25.8008 14.9004c-10.8994 -9.30078 -23.3994 -16.5 -36.8994 -21.3008v-29.7998
c0 -3.39941 -2.40039 -6.39941 -5.7002 -7.09961c-21.2002 -4.7998 -43.9004 -5 -66.2002 0c-3.2998 0.700195 -5.7002 3.7002 -5.7002 7.09961v29.7998c-13.5 4.80078 -26 12 -36.8994 21.3008l-25.7998 -14.9004c-3 -1.7002 -6.7002 -1.09961 -9 1.40039
c-15 16.2998 -26.5 35.7998 -33.2002 57.3994c-1 3.2998 0.299805 6.7998 3.2998 8.5l25.7998 14.9004c-2.59961 14.0996 -2.59961 28.5 0 42.5996l-25.7998 14.9004c-2.90039 1.7002 -4.2998 5.2002 -3.2998 8.5c6.7002 21.5996 18.2002 41.2002 33.2002 57.3994
@ -2499,7 +2507,7 @@ c-17.7002 0 -32 14.2998 -32 32v32c0 35.2998 28.7002 64 64 64h64c17.5996 0 33.5 -
d="M416 64c35.3496 0 64 -28.6504 64 -64v-32c0 -17.6699 -14.3301 -32 -32 -32h-320c-17.6699 0 -32 14.3301 -32 32v32c0 35.3496 28.6504 64 64 64h256zM288 -32c17.6699 0 32 14.3301 32 32s-14.3301 32 -32 32s-32 -14.3301 -32 -32s14.3301 -32 32 -32zM328 384
c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h157.82l-17.46 -64h-140.36c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h131.64l-17.46 -64h-114.18c-4.41992 0 -8 -3.58008 -8 -8v-16c0 -4.41992 3.58008 -8 8 -8h105.46l-17.46 -64
h-256l-8.73047 96h-103.27c-26.5098 0 -48 21.4902 -48 48v160c0 26.5098 21.4902 48 48 48h464l-17.46 -64h-166.54zM64 256h81.46l-11.6396 128h-69.8203v-128z" />
<glyph glyph-name="book-open" unicode="&#xf518;" horiz-adv-x="575"
<glyph glyph-name="book-open" unicode="&#xf518;" horiz-adv-x="576"
d="M542.22 415.95c18.4199 1.04004 33.7803 -12.9902 33.7705 -30.7002v-337.84c0 -16.2305 -13.1299 -29.7705 -30.0205 -30.6602c-49.4697 -2.59961 -149.52 -12.0996 -218.7 -46.9199c-10.6494 -5.36035 -23.2793 1.93945 -23.2793 13.4902v363.87
c0 5.2793 2.62988 10.3291 7.26953 13.1699c67.2402 41.1592 176.16 52.4795 230.96 55.5898zM264.73 360.36c4.64941 -2.85059 7.26953 -7.7002 7.26953 -12.9902v-364.12c0 -11.5195 -12.5898 -18.8096 -23.21 -13.46c-69.1797 34.8398 -169.28 44.3496 -218.771 46.9502
c-16.8896 0.879883 -30.0195 14.4199 -30.0195 30.6602v337.85c0 17.71 15.3604 31.7402 33.7803 30.7002c54.7998 -3.12012 163.72 -14.4307 230.95 -55.5898z" />
@ -2821,7 +2829,7 @@ h-49.3994c13.6797 64.6797 54.1699 119.48 109.54 152h-79.7305c-9.5 -23.4404 -32.4
c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32v96c0 17.6699 14.3301 32 32 32h96zM576 400c35.3398 0 64 -28.6504 64 -64s-28.6602 -64 -64 -64c-26.8398 0 -49.75 16.5596 -59.25 40h-79.7305c55.3701 -32.5195 95.8604 -87.3203 109.54 -152
h-49.3994c-11.2998 41.6104 -36.7705 77.21 -71.04 101.56c3.68945 8.08008 5.87988 16.9902 5.87988 26.4404v72h84.75c9.5 23.4404 32.4102 40 59.25 40zM576 128c17.6699 0 32 -14.3301 32 -32v-96c0 -17.6699 -14.3301 -32 -32 -32h-96c-17.6699 0 -32 14.3301 -32 32
v96c0 17.6699 14.3301 32 32 32h96z" />
<glyph glyph-name="bong" unicode="&#xf55c;" horiz-adv-x="447"
<glyph glyph-name="bong" unicode="&#xf55c;" horiz-adv-x="448"
d="M302.5 -64h-221c-23.1699 0 -44.4199 12.5801 -56 32.6602c-16.1904 28.0703 -25.5 60.5898 -25.5 95.3398c0 71.0303 38.6699 132.9 96 166.11v153.93l-15.9697 -0.0205078c-8.85059 -0.00976562 -16.0303 7.16016 -16.0205 16.0107l0.0400391 31.7295
c0.00976562 8.82031 7.16016 15.9707 15.9805 15.9805l223.939 0.259766c8.85059 0.00976562 16.0303 -7.16992 16.0205 -16.0195l-0.0400391 -31.7207c-0.00976562 -8.81934 -7.16016 -15.9697 -15.9805 -15.9795l-15.9697 -0.0205078v-154.16
c14.1201 -8.17969 27.0898 -18.1396 38.6504 -29.5098l39.4092 39.4102l-9.37988 9.37988c-6.25 6.25 -6.25 16.3799 0 22.6299l11.3105 11.3105c6.25 6.25 16.3799 6.25 22.6299 0l52.6895 -52.6904c6.25 -6.25 6.25 -16.3799 0 -22.6299l-11.2998 -11.3203
@ -2845,9 +2853,9 @@ c3.03027 3.04004 7.12012 4.7002 11.3203 4.7002c1.14941 0 2.2998 -0.129883 3.4394
c2.93945 4.58984 8.01953 7.37012 13.4697 7.37012h0.00195312c4.82812 0 10.8574 -3.30176 13.458 -7.37012c2.5498 -3.97949 62.5303 -98.9102 62.5303 -217.7c0 -1.46973 0 -2.93945 -0.00976562 -4.39941c74.0391 60.1699 156.699 78.9102 160.579 79.7598
c1.15039 0.259766 2.30078 0.379883 3.44043 0.379883c4.2002 0 8.29004 -1.66016 11.3203 -4.7002c3.85938 -3.87012 5.47949 -9.43945 4.2998 -14.7695c-0.879883 -3.96973 -20.6797 -90.5205 -84.9297 -165.641c44.3896 -8.91992 75.2197 -24.9893 76.7793 -25.8096z" />
<glyph glyph-name="check-double" unicode="&#xf560;"
d="M504.5 276.05c10 -10.0596 10 -26.3594 0 -36.4199l-294.4 -296.09c-9.98926 -10.0596 -26.1992 -10.0596 -36.1992 0l-166.4 167.36c-10 10.0498 -10 26.3594 0 36.4092l36.2002 36.4102c9.99023 10.0605 26.2002 10.0605 36.2002 0l112.1 -112.739l240.1 241.479
c9.99023 10.0498 26.2002 10.0498 36.2002 0zM166.57 165.29l-122.601 123.5c-6.83984 7.01953 -6.83984 18.3604 0.180664 25.2002l42.1299 41.7695c7.01953 6.83984 18.3594 6.83984 25.2002 -0.179688l68.2295 -68.7705l157.16 156.08
c7.03027 6.84082 18.3701 6.84082 25.21 -0.179688l41.9502 -42.1201c6.83984 -7.03027 6.83984 -18.3701 -0.180664 -25.21l-212.069 -210.27c-7.03027 -6.84082 -18.3701 -6.84082 -25.21 0.179688z" />
d="M505 273.2c9.2998 -9.2998 9.2998 -24.5 -0.0996094 -34l-296 -296.2c-9.30078 -9.40039 -24.5 -9.40039 -33.9004 0l-168 168.1c-9.40039 9.40039 -9.40039 24.6006 0 34l39.7002 39.7002c9.2998 9.40039 24.5 9.40039 33.8994 0l111.4 -111.5l239.5 239.5
c9.2998 9.40039 24.5 9.40039 33.9004 0zM180.7 167.2l-112 112.2c-6.2002 6.19922 -6.2002 16.2998 0 22.5996l45.2998 45.2998c6.2002 6.2998 16.4004 6.2998 22.5996 0l55.4004 -55.5l151.5 151.5c6.2002 6.2998 16.4004 6.2998 22.5996 0l45.2002 -45.2998
c6.2002 -6.2002 6.2002 -16.2998 0 -22.5996l-208 -208.2c-6.2002 -6.2998 -16.3994 -6.2998 -22.5996 0z" />
<glyph glyph-name="cocktail" unicode="&#xf561;" horiz-adv-x="576"
d="M296 -16c22.0898 0 40 -17.9102 40 -40c0 -4.41992 -3.58008 -8 -8 -8h-240c-4.41992 0 -8 3.58008 -8 8c0 22.0898 17.9102 40 40 40h56v125.22l-168.74 168.73c-15.5195 15.5195 -4.5293 42.0498 17.4199 42.0498h366.641c21.9492 0 32.9395 -26.5303 17.4199 -42.0498
l-168.74 -168.73v-125.22h56zM432 448c79.5303 0 144 -64.4697 144 -144s-64.4697 -144 -144 -144c-27.4102 0 -52.7695 8.08008 -74.5801 21.3799l35.2598 35.2598c12.0303 -5.43945 25.2803 -8.63965 39.3203 -8.63965c52.9297 0 96 43.0596 96 96s-43.0703 96 -96 96
@ -2880,7 +2888,7 @@ d="M248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 24
l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996zM248 32c35.2998 0 64 28.7002 64 64s-28.7002 64 -64 64s-64 -28.7002 -64 -64
s28.7002 -64 64 -64zM395.3 227.3l-28.7002 28.7002l28.7002 28.7002c15 14.8994 -7.59961 37.5996 -22.5996 22.5996l-28.7002 -28.7002l-28.7002 28.7002c-14.8994 15 -37.5996 -7.59961 -22.5996 -22.5996l28.7002 -28.7002l-28.7002 -28.7002
c-15.2002 -15.0996 7.7998 -37.3994 22.5996 -22.5996l28.7002 28.7002l28.7002 -28.7002c14.7002 -14.7998 37.7998 7.39941 22.5996 22.5996z" />
<glyph glyph-name="drafting-compass" unicode="&#xf568;" horiz-adv-x="511"
<glyph glyph-name="drafting-compass" unicode="&#xf568;"
d="M457.01 103.58l54.9805 -95.2305l-7.02051 -58.25c-1.2793 -10.5898 -12.3594 -16.9893 -22.1699 -12.7998l-53.9502 23.04l-54.3799 94.1904c29.9102 11.8701 57.4902 28.7197 82.54 49.0498zM499.5 198.14c-52.6201 -83.1299 -144.45 -134.14 -243.5 -134.14
c-35.3799 0 -69.8701 6.71973 -102.06 18.96l-70.8008 -122.63l-53.9492 -23.04c-9.81055 -4.19043 -20.8906 2.20996 -22.1709 12.7998l-7.01953 58.25l71.2803 123.46c-21.29 17.8105 -40.4102 38.3799 -55.9805 62.0205
c-4.99023 7.56934 -2.20996 17.9297 5.64062 22.4697l27.75 16.0703c7.40918 4.29004 16.5898 1.76953 21.3799 -5.33008c9.71973 -14.4102 21.1299 -27.3906 33.6797 -39l68.2998 118.31c-7.43945 13.6299 -12.0498 29.0303 -12.0498 45.6602c0 53.0195 42.9805 96 96 96
@ -2912,7 +2920,7 @@ M377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961c6.40039 0 12.5
d="M224 312c0 -13.2002 10.7998 -24 24 -24h136v-328c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136zM300.45 100.64c10.1299 10.0703 3.00977 27.3604 -11.2705 27.3604h-65.1797v80
c0 8.83984 -7.16016 16 -16 16h-32c-8.83984 0 -16 -7.16016 -16 -16v-80h-65.1797c-14.2803 0 -21.4004 -17.29 -11.25 -27.3604l96.4199 -95.6992c6.64941 -6.61035 17.3896 -6.61035 24.04 0zM377 343c4.5 -4.5 7 -10.5996 7 -16.9004v-6.09961h-128v128h6.09961
c6.40039 0 12.5 -2.5 17 -7z" />
<glyph glyph-name="file-export" unicode="&#xf56e;" horiz-adv-x="575"
<glyph glyph-name="file-export" unicode="&#xf56e;" horiz-adv-x="576"
d="M384 326.1v-6.09961h-128v128h6.09961c6.40039 0 12.5 -2.5 17 -7l97.9004 -98c4.5 -4.5 7 -10.5996 7 -16.9004zM571 140c6.59961 -6.59961 6.59961 -17.4004 0 -24l-95.7002 -96.5c-10.0996 -10.0996 -27.3994 -3 -27.3994 11.2998v65.2002h-64v64h64v65.0996
c0 14.3008 17.2998 21.4004 27.3994 11.3008zM192 112c0 -8.7998 7.2002 -16 16 -16h176v-136c0 -13.2998 -10.7002 -24 -24 -24h-336c-13.2998 0 -24 10.7002 -24 24v464c0 13.2998 10.7002 24 24 24h200v-136c0 -13.2002 10.7998 -24 24 -24h136v-128h-176
c-8.7998 0 -16 -7.2002 -16 -16v-32z" />
@ -3068,7 +3076,7 @@ c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994l25.3994 24.6006c4.60059 4.59961
c1.90039 11.7998 -9.2002 21.6006 -20.7002 17.9004c-30.1992 -9.7002 -75.0996 -15.2002 -123.1 -15.2002s-92.9004 5.5 -123.1 15.2002c-11.4004 3.59961 -22.7002 -6.10059 -20.7002 -17.9004c9.2998 -55 83.2002 -93.2998 143.8 -93.2998zM405.7 265.9
c4.59961 4.59961 1.89941 12.1992 -4.40039 13.0996l-34.8994 5l-15.5 31.5996c-2.90039 5.80078 -11 5.80078 -13.9004 0l-15.5 -31.5996l-34.9004 -5c-6.19922 -1 -8.7998 -8.59961 -4.2998 -13.2002l25.4004 -24.5996l-6 -34.9004c-1 -6.2002 5.2998 -11 11 -7.89941
l31.2998 16.2998l31.2998 -16.2002c5.7002 -3.09961 12 1.7002 11 7.90039l-6 34.8994z" />
<glyph glyph-name="grin-tears" unicode="&#xf588;" horiz-adv-x="639"
<glyph glyph-name="grin-tears" unicode="&#xf588;" horiz-adv-x="640"
d="M102.4 191.9c5.59961 0.799805 10.2998 -3.90039 9.5 -9.40039c-3.30078 -22.5996 -12 -73.5 -26.8008 -88.2998c-19.1992 -19.2002 -50.5996 -18.9004 -70.1992 0.700195c-19.6006 19.5996 -19.9004 51.0996 -0.800781 70.1992
c14.8008 14.8008 65.7002 23.6006 88.3008 26.8008zM625.8 165.1c19.2002 -19.0996 18.7998 -50.6992 -0.799805 -70.2998c-19.5996 -19.5996 -51 -19.8994 -70.2002 -0.700195c-14.7998 14.8008 -23.5996 65.7002 -26.7998 88.3008c-0.799805 5.59961 4 10.2998 9.5 9.5
c22.5996 -3.30078 73.5 -12 88.2998 -26.8008zM496.4 177.9c11.7998 -82.3008 29.8994 -100.4 35.7998 -106.301c0.899414 -1 2 -1.59961 3 -2.5c-42.7002 -74.6992 -123 -125.1 -215.2 -125.1s-172.5 50.4004 -215.2 125c1 0.900391 2.10059 1.59961 3 2.5
@ -3159,7 +3167,7 @@ c-0.699219 -8.5 10.7002 -11.8994 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6
c-8.40039 1.09961 -12.2002 -11.8008 -3.59961 -15.4004l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5l-17 -7.2002c-6.10059 -2.59961 -6 -12.2998 0 -14.7998l17 -7.2002c13 -5.5 20.7998 -13.5 20.7998 -21.5s-7.7998 -16 -20.7998 -21.5
l-17 -7.19922c-8.5 -3.60059 -4.90039 -16.2002 3.59961 -15.4004c42.7998 2.5 71.5 24.7998 71.5 44zM369 220.1c4.2002 -7.5 15.5996 -4 15.0996 4.5c-3.2998 42.1006 -32.1992 71.4004 -56 71.4004c-23.7998 0 -52.6992 -29.2998 -56 -71.4004
c-0.699219 -8.5 10.8008 -11.7998 14.9004 -4.5l9.5 17c7.7002 13.7002 19.2002 21.6006 31.5 21.6006s23.7998 -7.90039 31.5 -21.6006z" />
<glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="503"
<glyph glyph-name="kiss-wink-heart" unicode="&#xf598;" horiz-adv-x="504"
d="M501.1 45.5c9.2002 -23.9004 -4.39941 -49.4004 -28.5 -55.7002l-83 -21.5c-5.39941 -1.39941 -10.8994 1.7998 -12.3994 7.10059l-22.9004 82.5996c-6.59961 24 8.7998 48.5996 34 52.5996c22 3.5 43.1006 -11.5996 49 -33l2.2998 -8.39941l8.40039 2.2002
c21.5996 5.59961 45.0996 -5.10059 53.0996 -25.9004zM323.5 49.5c0 0 23.5996 -83.9004 23.9004 -84.5996c-30.5 -13.4004 -64 -20.9004 -99.4004 -20.9004c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248c0 -31.7998 -6.2002 -62.0996 -17.0996 -90
c-6 1.5 -12.2002 2.7998 -18.6006 2.90039c-29.0996 49.7998 -98.0996 50.5996 -127.8 4.2998c-11.2998 -17.7002 -14.5996 -39.4004 -9 -59.7002zM168 208c17.7002 0 32 14.2998 32 32s-14.2998 32 -32 32s-32 -14.2998 -32 -32s14.2998 -32 32 -32zM288 52
@ -3231,7 +3239,7 @@ c-7.69043 7.4502 -20.7695 34.4307 -23.4404 78.6904h46.8701c-2.66016 -44.2695 -15
c7.67969 19.0605 12.7197 43.3799 14.21 70.4102h39.0898c-5.28027 -31.2197 -25.5898 -57.1699 -53.2998 -70.4102zM416 448c17.6699 0 32 -14.3301 32 -32v-448c0 -17.6699 -14.3301 -32 -32 -32h-352c-35.3496 0 -64 28.6504 -64 64v384c0 35.3496 28.6504 64 64 64h352z
M336 32c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16h-224c-8.7998 0 -16 -7.2002 -16 -16s7.2002 -16 16 -16h224zM224 128c70.6904 0 128 57.3096 128 128s-57.3096 128 -128 128s-128 -57.3096 -128 -128s57.3096 -128 128 -128zM265.08 342.41
c27.71 -13.2402 48.0195 -39.1904 53.2998 -70.4102h-39.0898c-1.49023 27.0303 -6.53027 51.3496 -14.21 70.4102z" />
<glyph glyph-name="pen-fancy" unicode="&#xf5ac;" horiz-adv-x="511"
<glyph glyph-name="pen-fancy" unicode="&#xf5ac;"
d="M79.1797 165.06l84.0703 33.0703l98.8799 -98.8799l-33.0703 -84.0703c-2.79102 -8.38086 -11.8584 -17.4482 -20.2393 -20.2393l-176.82 -58.9404l-4.67969 4.67969l92.8896 92.8906c2.55957 -0.660156 5.03027 -1.57031 7.7998 -1.57031c17.6699 0 32 14.3301 32 32
s-14.3301 32 -32 32s-32 -14.3301 -32 -32c0 -2.76953 0.910156 -5.24023 1.57031 -7.7998l-92.8896 -92.8906l-4.69043 4.69043l58.9404 176.82c2.79297 8.37891 11.8604 17.4463 20.2393 20.2393zM369.25 419.68c74.4805 84.2607 199.15 -39.1602 114.23 -114.229
l-199.49 -183.11l-97.8506 97.8506z" />
@ -3272,7 +3280,7 @@ c13.2998 -16.0996 38.2998 4 24.5 20.4004c-28.4004 34.2002 -70.2998 53.7998 -114.
d="M628.88 237.35c7.17969 -8.62988 11.1201 -19.5 11.1201 -30.7295v-110.62c0 -17.6699 -14.3301 -32 -32 -32h-32c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-128c0 -53.0195 -42.9805 -96 -96 -96s-96 42.9805 -96 96h-32c-17.6699 0 -32 14.3301 -32 32v288
c0 17.6699 14.3301 32 32 32h425.52c12.4082 -0.00195312 28.9258 -7.73926 36.8701 -17.2695zM64 256h96v96h-96v-96zM160 16c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM320 256v96h-96v-96h96zM480 16
c26.5098 0 48 21.4902 48 48s-21.4902 48 -48 48s-48 -21.4902 -48 -48s21.4902 -48 48 -48zM384 256h146.02l-80 96h-66.0195v-96z" />
<glyph glyph-name="signature" unicode="&#xf5b7;" horiz-adv-x="639"
<glyph glyph-name="signature" unicode="&#xf5b7;" horiz-adv-x="640"
d="M623.2 256c9.09961 0.599609 16.7998 -7.09961 16.5996 -16.2002v-32.0996c0 -8.5 -6.7002 -15.1006 -15.2002 -15.7998c-39.3994 -3.2002 -105.399 -51 -138.399 -65.8008c-34.2998 -15.3994 -66.7002 -30 -102.3 -30c-28.2002 0 -50.2002 8.5 -65.5 25.3008
c-22.7002 24.8994 -22.8008 55.2998 -20.6006 83.7998c-56.5 -45.1006 -169 -153.601 -211.2 -195.8c-6.09961 -6.2002 -14.2998 -9.40039 -22.5996 -9.40039c-27 0 -36.5 27 -29.7002 43.9004l98.2002 245.6c8 19.9004 -14.2998 38.7998 -32.7002 27.0996l-58 -38.8994
c-7.5 -4.7998 -17.3994 -2.60059 -22.0996 4.89941l-17.2002 27c-4.7002 7.5 -2.5 17.4004 4.90039 22.1006l54.8994 36.8994c76.5 48.7002 160.101 -26.8994 129.7 -102.8l-41.5 -103.7c105.2 101.2 144.4 124.5 169.5 126
@ -3466,7 +3474,7 @@ c-16.5498 7.5 -16.5498 32.5 0 40l57.8799 26.2295l161.85 -73.3701c7.57031 -3.4296
d="M160 128c-17.6699 0 -32 14.3301 -32 32v224c0 17.6699 14.3301 32 32 32v16c0 8.83984 7.16016 16 16 16h64c8.83984 0 16 -7.16016 16 -16v-16c17.6699 0 32 -14.3301 32 -32v-224c0 -17.6699 -14.3301 -32 -32 -32h-12v-16c0 -8.83984 -7.16016 -16 -16 -16h-40
c-8.83984 0 -16 7.16016 -16 16v16h-12zM464 0c26.5098 0 48 -21.4902 48 -48c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16c0 26.5098 21.4902 48 48 48h272c70.5801 0 128 57.4199 128 128s-57.4199 128 -128 128v64
c105.88 0 192 -86.1201 192 -192c0 -49.2002 -18.7598 -93.9902 -49.29 -128h1.29004zM104 32c-4.41992 0 -8 3.58008 -8 8v16c0 4.41992 3.58008 8 8 8h208c4.41992 0 8 -3.58008 8 -8v-16c0 -4.41992 -3.58008 -8 -8 -8h-208z" />
<glyph glyph-name="oil-can" unicode="&#xf613;" horiz-adv-x="639"
<glyph glyph-name="oil-can" unicode="&#xf613;" horiz-adv-x="640"
d="M629.8 287.69c5.11035 1.45996 10.2002 -2.38086 10.1904 -7.69043v-18.0801c0 -2.12012 -0.839844 -4.16016 -2.33984 -5.66016l-212.261 -214.75c-6.00977 -6.08984 -14.21 -9.50977 -22.7598 -9.50977h-274.63c-17.6699 0 -32 14.3301 -32 32v46.54l-69.7197 12.6904
c-15.2207 2.75977 -26.2803 16.0195 -26.2803 31.4795v94.9502c0 17.9795 14.6699 32.0098 31.9297 32.0098c1.61133 0 4.20605 -0.237305 5.79004 -0.530273l138.28 -25.1396h56v48h-56c-8.83984 0 -16 7.16016 -16 16v16c0 8.83984 7.16016 16 16 16h160
c8.83984 0 16 -7.16016 16 -16v-16c0 -8.83984 -7.16016 -16 -16 -16h-56v-48h56.8896c8.33984 -0.00292969 21.1611 -3.03125 28.6201 -6.75977l50.4902 -25.2402zM96 159.33v62.4297l-48 8.73047v-62.4307zM549.33 74.6699c0 23.5605 42.6699 85.3301 42.6699 85.3301
@ -3663,7 +3671,7 @@ c-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.27051 5.01
c-3.47949 -0.950195 -5.88965 -4.11035 -5.88965 -7.71973v-16.5801c0 -5.28027 5.01953 -9.11035 10.1104 -7.7207l96 26.1807c3.47949 0.950195 5.88965 4.10938 5.88965 7.71973zM448 234.47v-16.5801v-0.00488281c0 -3.37109 2.63867 -6.82715 5.88965 -7.71484
l80 -21.8203c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5801c0 3.60938 -2.41016 6.76953 -5.88965 7.71973l-80 21.8203c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.7207zM304 273.74v-16.5801v-0.00585938c0 -3.37012 2.63867 -6.82617 5.88965 -7.71387
l96 -26.1807c5.09082 -1.38965 10.1104 2.44043 10.1104 7.7207v16.5791c0 3.61035 -2.41016 6.77051 -5.88965 7.7207l-96 26.1797c-5.09082 1.38965 -10.1104 -2.44043 -10.1104 -7.71973z" />
<glyph glyph-name="khanda" unicode="&#xf66d;" horiz-adv-x="511"
<glyph glyph-name="khanda" unicode="&#xf66d;"
d="M415.81 382c73.71 -40.2402 111.78 -123.85 90.1602 -207.51c-7.25 -28.0898 -22.3799 -53.5703 -41.25 -75.5898l-52.5098 -61.3105c-4.87012 -5.67969 -13.04 -7.22949 -19.6504 -3.70996l-79.3496 42.2305l-29.21 -20.3408l47.0801 -32.7793
c1.66992 0.370117 3.22949 1.00977 5.00977 1.00977c13.25 0 23.9902 -10.7402 23.9902 -24c0 -13.25 -10.7402 -24 -23.9902 -24c-12.0898 0 -21.6797 9.11035 -23.3301 20.7598l-40.9102 28.4805v-30.1504c9.38086 -5.58008 15.9902 -15.3896 15.9902 -27.0996
c0 -17.6699 -14.3203 -32 -31.9795 -32c-17.6602 0 -31.9805 14.3301 -31.9805 32c0 11.7197 6.60059 21.5293 15.9902 27.0996v29.9502l-40.6299 -28.2803c-1.64062 -11.6494 -11.2305 -20.7598 -23.3301 -20.7598c-13.25 0 -23.9902 10.75 -23.9902 24
@ -3734,7 +3742,7 @@ c0 -8.83984 7.16016 -16 16 -16h32c8.83984 0 16 7.16016 16 16z" />
d="M448 16c0 -26.5 -21.5 -48 -48 -48h-352c-26.5 0 -48 21.5 -48 48v352c0 26.5 21.5 48 48 48h352c26.5 0 48 -21.5 48 -48v-352zM112 256h128c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-128c-8.83984 0 -16 -7.16016 -16 -16v-32
c0 -8.83984 7.16016 -16 16 -16zM112 160h224c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-224c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16zM112 64h64c8.83984 0 16 7.16016 16 16v32c0 8.83984 -7.16016 16 -16 16h-64
c-8.83984 0 -16 -7.16016 -16 -16v-32c0 -8.83984 7.16016 -16 16 -16z" />
<glyph glyph-name="pray" unicode="&#xf683;" horiz-adv-x="383"
<glyph glyph-name="pray" unicode="&#xf683;" horiz-adv-x="384"
d="M256 320c-35.3496 0 -64 28.6504 -64 64s28.6504 64 64 64s64 -28.6504 64 -64s-28.6504 -64 -64 -64zM225.37 150.25l-24.1504 28.7598l-34.7998 -64.8701l109.86 -109.859c25.4893 -25.4902 5.7998 -68.2803 -28.2803 -68.2803h-208c-22.0898 0 -40 17.9102 -40 40
s17.9102 40 40 40h91.5596l-44.8096 34.8896c-42.8799 27.3799 -57.5898 80.1104 -34.1904 123.75l49.3701 92.0303c11.1201 20.6504 32.1807 34.4404 56.3701 36.9199c24.7803 2.58984 48.5605 -6.93945 64 -25.3301l38.9102 -46.3096l57.4404 47
c17.1191 13.9697 42.3398 11.4902 56.3096 -5.62012c13.9697 -17.0898 11.4697 -42.2998 -5.62012 -56.2803l-88 -72.0195c-16.9697 -13.8701 -41.9102 -11.5 -55.9697 5.21973z" />
@ -3776,7 +3784,7 @@ d="M571.31 196.69c6.25 -6.25 6.25 -16.3809 0 -22.6309l-46.0596 -46.0596l46.0596
l-22.6191 22.6191c-6.25 6.25 -6.25 16.3809 0 22.6309l46.0596 46.0596l-46.0596 46.0596c-6.25 6.25 -6.25 16.3809 0 22.6309l22.6191 22.6191c6.25 6.25 16.3809 6.25 22.6309 0l46.0596 -46.0596l46.0596 46.0596c6.25 6.25 16.3809 6.25 22.6309 0zM552 448
c13.25 0 24 -10.7402 24 -24v-48c0 -13.25 -10.75 -24 -24 -24h-194.97l-97.8105 -374.52c-9.83984 -32.4805 -37.0098 -41.4805 -54.2793 -41.4805c-18.6406 0 -35.9502 8.5 -48.4404 28.2695l-88.8799 163.73h-43.6201c-13.25 0 -24 10.75 -24 24v48
c0 13.2598 10.75 24 24 24h81.4697c10.4385 -0.00292969 22.9961 -7.42578 28.0303 -16.5703l58.4102 -106.1l84.79 322.8c3.68945 14.0703 16.4102 23.8701 30.9502 23.8701h244.35z" />
<glyph glyph-name="star-and-crescent" unicode="&#xf699;" horiz-adv-x="511"
<glyph glyph-name="star-and-crescent" unicode="&#xf699;"
d="M340.47 -18.3604c8.74023 0 15.1299 -6.96973 15.1299 -15.0596c0 -6.62012 -4.31934 -12.2402 -10.2793 -14.2598c-29.04 -10.8301 -59.0898 -16.3203 -89.3203 -16.3203c-141.16 0 -256 114.84 -256 256s114.84 256 256 256c30.3896 0 60.5801 -5.54004 89.75 -16.4805
c6.91992 -2.59961 10.9297 -9.83984 9.46973 -17.0898c-1.41992 -7.04004 -7.62012 -12.0693 -14.75 -12.0693c-1.47949 0 -6.85938 0.459961 -9.17969 0.459961c-116.25 0 -210.82 -94.5703 -210.82 -210.82s94.5703 -210.82 210.82 -210.82
c2.29004 0 7.72949 0.459961 9.17969 0.459961zM503.46 234.14c8.16992 -1.17969 11.4297 -11.2197 5.52051 -16.9893l-55.2705 -53.8701l13.0498 -76.0703c1.11035 -6.42969 -4.00977 -11.6602 -9.80957 -11.6602c-1.53027 0 -3.11035 0.370117 -4.64062 1.16992
@ -3807,7 +3815,7 @@ l-31.4102 -52.5596h-62.2998z" />
d="M376.45 416c39.4961 0.00195312 100.223 14.3389 135.55 32v-96c0 -17.6699 -14.3301 -32 -32 -32h-32v-64h48c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-48v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240
h-256v-240c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h48v64h-32c-17.6699 0 -32 14.3301 -32 32v96c35.3271 -17.6611 96.0537 -31.998 135.55 -32h240.9zM128 320v-64h96
v64h-96zM384 256v64h-96v-64h96z" />
<glyph glyph-name="vihara" unicode="&#xf6a7;" horiz-adv-x="639"
<glyph glyph-name="vihara" unicode="&#xf6a7;" horiz-adv-x="640"
d="M632.88 47.29c5.41992 -3.61035 7.7002 -9.62012 6.99023 -15.29c-0.620117 -5.00977 -3.56055 -9.75 -8.71973 -12.3301l-55.1504 -19.6699v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32
c-8.83984 0 -16 7.16016 -16 16v48h-160v-48c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v48l-55.1602 19.6699c-5.14941 2.58008 -8.09961 7.32031 -8.71973 12.3301c-0.700195 5.66016 1.58008 11.6699 7 15.29l88.8799 48.71v64
l-55.1602 17.6904c-11.79 5.89941 -11.79 22.7197 0 28.6191l119.16 49.6904v64l-27.3096 16.3096c-7.7207 7.7207 -5.61035 20.7402 4.15918 25.6201l183.15 86.0703l183.15 -86.0801c9.76953 -4.87988 11.8799 -17.9004 4.15918 -25.6201l-27.3096 -16.2998v-64
@ -3841,7 +3849,7 @@ l-116.36 -160h232.721z" />
d="M290.59 256c11.8906 -58.3496 63.6006 -102.4 125.41 -102.4c11.1104 0 21.71 1.87012 32 4.54004v-206.14c0 -8.83984 -7.16016 -16 -16 -16h-32c-8.83984 0 -16 7.16016 -16 16v144l-128 -96h32c17.6699 0 32 -14.3301 32 -32v-16c0 -8.83984 -7.16016 -16 -16 -16
h-176c-35.2998 0 -64 28.7002 -64 64v256c0 17.6396 -14.3604 32 -32 32c-17.6699 0 -32 14.3301 -32 32s14.3301 32 32 32c52.9404 0 96 -43.0596 96 -96v-85.9502c55.7695 83.9697 142.41 85.9502 162.59 85.9502zM448 352l64 64v-134.4c0 -53.0195 -42.9805 -96 -96 -96
s-96 42.9805 -96 96v134.4l64 -64h64zM376 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM456 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" />
<glyph glyph-name="chair" unicode="&#xf6c0;" horiz-adv-x="447"
<glyph glyph-name="chair" unicode="&#xf6c0;" horiz-adv-x="448"
d="M112 320v-128h-48v128c0 70.7002 57.2998 128 128 128h64c70.7002 0 128 -57.2998 128 -128v-128h-48v128c0 29.5 -16.2002 55 -40 68.9004v-196.9h-48v208h-48v-208h-48v196.9c-23.7998 -13.9004 -40 -39.4004 -40 -68.9004zM446.3 106.1
c6.90039 -20.6992 -8.5 -42.0996 -30.2998 -42.0996v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112h-256v-112c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v112c-21.7998 0 -37.2002 21.4004 -30.4004 42.0996l10.7002 32
c4.40039 13.1006 16.6006 21.9004 30.4004 21.9004h362.5c13.7998 0 26 -8.7998 30.3994 -21.9004z" />
@ -3934,7 +3942,7 @@ s24 -38.5996 24 -53.3301c0 -14.7295 -10.75 -26.6699 -24 -26.6699zM528 320c-13.25
<glyph glyph-name="hat-wizard" unicode="&#xf6e8;"
d="M496 0c8.83984 0 16 -7.16016 16 -16v-32c0 -8.83984 -7.16016 -16 -16 -16h-480c-8.83984 0 -16 7.16016 -16 16v32c0 8.83984 7.16016 16 16 16h480zM192 64l16 -32h-144l110.96 249.66c9.4043 21.1611 33.3545 47.6611 53.46 59.1494l187.58 107.19l-56.2998 -168.92
c-1.81543 -5.43945 -3.28809 -14.5078 -3.28809 -20.2412c0 -7.25098 2.31934 -18.5449 5.17773 -25.209l86.4102 -201.63h-208l16 32l64 32l-64 32l-32 64l-32 -64l-64 -32zM256 288l-32 -16l32 -16l16 -32l16 32l32 16l-32 16l-16 32z" />
<glyph glyph-name="hiking" unicode="&#xf6ec;" horiz-adv-x="383"
<glyph glyph-name="hiking" unicode="&#xf6ec;" horiz-adv-x="384"
d="M80.9502 -24.2305l34.5596 138.221l52.7803 -52.7803l-25.2402 -100.97c-3.64941 -14.5303 -16.6895 -24.2305 -31.0195 -24.2305c-2.58008 0 -5.19043 0.290039 -7.7998 0.950195c-17.1406 4.28027 -27.5605 21.6504 -23.2803 38.8096zM95.8398 171.89
c-2.18945 -8.41992 -11.0801 -13.54 -19.8701 -11.4395l-63.5596 15.25c-8.78027 2.10938 -14.1104 10.6396 -11.9199 19.0596l25.2695 98.1299c10.9707 42.1006 55.4404 67.6904 99.3203 57.1699c8.78027 -2.10938 14.1104 -10.6396 11.9199 -19.0596zM368 288
c8.83984 0 16 -7.16016 15.9902 -16v-320.01c0 -8.83984 -7.16016 -16 -16 -16h-16c-8.83984 0 -16 7.16016 -16 16v240h-48c-8.48047 0 -16.6201 3.37988 -22.6201 9.37988l-22.4297 22.4297l-19.8906 -79.5693
@ -3946,7 +3954,7 @@ d="M581.12 351.8c34.0898 -0.189453 58.8799 -33.6895 58.8799 -67.7803v-92.0195c0
c-8.83984 0 -16 7.16016 -16 16v70.79c-32.3496 -14.3604 -70.7197 -22.79 -112 -22.79s-79.6504 8.42969 -112 22.79v-70.79c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v240c0 88.3604 85.96 160 192 160
c49.2402 0 94.0098 -15.5801 128 -40.9805v48.9805c0 13.2598 10.75 24 24 24h16c13.25 0 24 -10.7402 24 -24v-13.8799c10.0498 3.58008 20.7197 5.87988 32 5.87988c39.8301 0 73.9805 -24.2695 88.5195 -58.8203c24.1006 9.04004 48.9307 26.7705 76.6006 26.6201z
M448 272c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16z" />
<glyph glyph-name="horse" unicode="&#xf6f0;" horiz-adv-x="575"
<glyph glyph-name="horse" unicode="&#xf6f0;" horiz-adv-x="576"
d="M575.92 371.4l0.0605469 -77.71v-0.0292969c0 -11.9609 -9.01465 -25.2715 -20.1201 -29.7109l-32.5508 -13.0205c-15.4395 -6.17969 -33.04 0.5 -40.4893 15.3701l-18.9004 37.7002l-16 7.11035v-102.471c0.00976562 -0.219727 0.0800781 -0.419922 0.0800781 -0.639648
c0 -30.4697 -12.2598 -58.0303 -32 -78.2197v-177.78c0 -8.83984 -7.16016 -16 -16 -16h-64c-8.83984 0 -16 7.16016 -16 16v150.4l-133.97 22.3301l-23.8398 -63.5908l26.3096 -105.26c2.53027 -10.0996 -5.11035 -19.8799 -15.5195 -19.8799h-65.9609h-0.000976562
c-6.89453 0 -13.8428 5.42969 -15.5088 12.1201l-24.8496 99.4102c-1.05664 4.2207 -1.91406 11.1777 -1.91406 15.5293c0 6.40332 1.8252 16.4648 4.07422 22.46l25.7197 68.6006c-18.7002 17.5195 -30.54 42.2402 -30.54 69.8799
@ -4020,7 +4028,7 @@ d="M128 448h284.44c-36.7705 -38.4805 -60.4404 -108.4 -60.4404 -192v-172.07c0 -53
c21.3701 64.1006 31.1699 85.75 31.1699 126.87v172.07c0 106.04 42.9805 192 96 192zM96 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM160 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16
s7.16016 -16 16 -16zM224 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM288 224c8.83984 0 16 7.16016 16 16s-7.16016 16 -16 16s-16 -7.16016 -16 -16s7.16016 -16 16 -16zM480 448c53.0195 0 96 -85.96 96 -192
s-42.9805 -192 -96 -192s-96 85.96 -96 192s42.9805 192 96 192zM480 192c17.6699 0 32 28.6504 32 64s-14.3301 64 -32 64s-32 -28.6504 -32 -64s14.3301 -64 32 -64z" />
<glyph glyph-name="tractor" unicode="&#xf722;" horiz-adv-x="639"
<glyph glyph-name="tractor" unicode="&#xf722;" horiz-adv-x="640"
d="M528 112c48.5996 0 88 -39.4004 88 -88s-39.4004 -88 -88 -88s-88 39.4004 -88 88s39.4004 88 88 88zM528 0c13.2305 0 24 10.7695 24 24s-10.7695 24 -24 24s-24 -10.7695 -24 -24s10.7695 -24 24 -24zM608 288c17.6699 0 32 -14.3301 31.9902 -32v-50.7598
c0 -8.49023 -3.37012 -16.6299 -9.37012 -22.6299l-50.8203 -50.8203c-15.7295 7.58984 -33.1602 12.2002 -51.7998 12.2002c-39.1396 0 -73.5498 -19.0098 -95.46 -48h-80.54v-6c0 -12.1504 -9.84961 -22 -22 -22h-7.16016
c-2.9502 -9.90039 -6.91992 -19.46 -11.9102 -28.7207l5.06055 -5.05957c8.58984 -8.58984 8.58984 -22.5195 0 -31.1104l-31.1104 -31.1094c-8.58984 -8.58984 -22.5195 -8.58984 -31.1104 0l-5.05957 5.05957c-9.25977 -4.99023 -18.8203 -8.95996 -28.7197 -11.9102
@ -4057,7 +4065,7 @@ s29.9004 -9.5 36.9004 -23c14.5 4.5 30.7998 1.60059 42.2998 -9.89941c11.3994 -11.
c-13.5 13.2002 -31.7002 20.9004 -51 20.9004s-37.5 -7.7002 -51 -20.9004c-19.2998 -0.199219 -37.2998 -7.7998 -50.7998 -21.2998c-6.40039 -6.39941 -11.2002 -13.7998 -14.7998 -21.7998h-43.4004c-53 0 -96 43 -96 96c0 42.5 27.7998 78.2002 66.0996 90.7998
c-1.2998 6.90039 -2.09961 13.9004 -2.09961 21.2002c0 61.9004 50.0996 112 112 112c43.2998 0 80.4004 -24.7998 99 -60.7998c14.7002 17.5 36.4004 28.7998 61 28.7998c44.2002 0 80 -35.7998 80 -80c0 -5.59961 -0.5 -11 -1.59961 -16.2002
c0.5 0 1 0.200195 1.59961 0.200195c53 0 96 -43 96 -96z" />
<glyph glyph-name="cloud-moon-rain" unicode="&#xf73c;" horiz-adv-x="575"
<glyph glyph-name="cloud-moon-rain" unicode="&#xf73c;" horiz-adv-x="576"
d="M350.5 222.5c37.2998 -6.7998 65.5 -39.2998 65.5 -78.5c0 -44.2002 -35.7998 -80 -80 -80h-256c-44.2002 0 -80 35.7998 -80 80c0 38.7998 27.5996 71.0996 64.2002 78.4004c0 0.5 -0.200195 1.09961 -0.200195 1.59961c0 53 43 96 96 96
c32.0996 0 60.2998 -15.9004 77.7002 -40c10.3994 5 22 8 34.2998 8c39.2002 0 71.5996 -28.2998 78.5 -65.5zM567.9 224.2c6.19922 1.2002 10.5996 -6 6.39941 -10.7998c-27 -33.1006 -67.8994 -53.3008 -112.6 -53.3008c-5.2002 0 -10.1006 1 -15.2002 1.5
c-6.2002 39.4004 -33.0996 72.5 -70.2002 86.8008c-10.7002 27.8994 -32.2002 49.7998 -58.8994 61.6992c3.2998 76.7002 66.5 137.9 144.399 137.9c8.90039 0 17.7998 -0.799805 26.5 -2.40039c6.2002 -1.09961 7.60059 -9.39941 2.10059 -12.5
@ -4091,7 +4099,7 @@ c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002
c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM332.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008l-36.5996 -64
c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6zM236.5 29.9004c7.7002 -4.40039 10.2998 -14.1006 6 -21.8008
l-36.5996 -64c-3 -5.19922 -8.40039 -8.09961 -13.9004 -8.09961c-2.7002 0 -5.40039 0.700195 -7.90039 2.09961c-7.69922 4.40039 -10.3994 14.1006 -6 21.8008l36.6006 64c4.39941 7.7998 14.2002 10.2998 21.7998 6z" />
<glyph glyph-name="democrat" unicode="&#xf747;" horiz-adv-x="639"
<glyph glyph-name="democrat" unicode="&#xf747;" horiz-adv-x="640"
d="M637.3 191.1c4.90039 -7.39941 2.90039 -17.2998 -4.39941 -22.2998l-26.6006 -17.7002c-7.39941 -4.89941 -17.2998 -3 -22.2002 4.40039c-21.7998 32.7002 -23.8994 38.0996 -40.0996 50.2998v-77.7998h-352l-54 108l-38.0996 -34.5996
c-6 -6 -14.1006 -9.40039 -22.6006 -9.40039h-31c-12.0996 0 -23.2002 6.90039 -28.5996 17.7002l-14.2998 28.5996c-5.40039 10.7998 -4.30078 23.7998 3 33.5l74.5996 99.2998c1.7002 2.30078 4.2002 3.7002 6.40039 5.40039c-4 2.2002 -8 4.2002 -11.3008 7.5
c-16.3994 16.4004 -18.3994 41.7998 -6.09961 60.4004c2.7998 4.19922 8.7998 4.7998 12.4004 1.19922l42.8994 -42.7998l41.7998 41.7998c4.40039 4.40039 11.8008 3.7002 15.2002 -1.5c15.1006 -22.7998 12.6006 -53.7998 -7.5 -73.8994l81.2002 -81.2002h235.6
@ -4121,7 +4129,7 @@ c-17.6006 0 -31.9004 14.2998 -31.9004 32l0.200195 160l-0.200195 95.9004c0 17.099
c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM288 416v32h192v-416c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32c0 -17.7002 -14.2998 -32 -32 -32c-17.0996 0 -30.7998 13.5 -31.7002 30.4004
c-4.2998 -21.3008 -17.0996 -30.4004 -32.2998 -30.4004c-18.4004 0 -35.7002 16.7002 -31.4004 38.2998l30.9004 154.601zM192 416c0 17.7002 14.2998 32 32 32h32v-192h-64v160zM544 448c17.7002 0 32 -14.2998 32 -32v-464c0 -8.7998 -7.2002 -16 -16 -16h-32
c-8.7998 0 -16 7.2002 -16 16v496h32z" />
<glyph glyph-name="poo-storm" unicode="&#xf75a;" horiz-adv-x="447"
<glyph glyph-name="poo-storm" unicode="&#xf75a;" horiz-adv-x="448"
d="M308 112c9.2002 0 15 -10 10.4004 -18l-88 -152c-2.2002 -3.7998 -6.2002 -6 -10.4004 -6c-7.7002 0 -13.5 7.2002 -11.7002 14.7998l23 97.2002h-59.2998c-7.2998 0 -12.9004 6.40039 -11.9004 13.5996l16 120c0.800781 5.90039 5.90039 10.4004 11.9004 10.4004h68
c7.90039 0 13.5996 -7.5 11.5996 -15.0996l-17.2998 -64.9004h57.7002zM374.4 223.3c41 -3.2998 73.5996 -37.5 73.5 -79.2998c0 -44 -36 -80 -80 -80h-30l8.09961 14c7.7998 13.5 7.7998 30.4004 0 44s-22.4004 22 -38.0996 22h-16l6.59961 24.7002
c3.59961 13.2998 0.799805 27.2002 -7.59961 38.0996c-8.40039 10.9004 -21.1006 17.2002 -34.9004 17.2002h-68c-22 0 -40.7002 -16.4004 -43.7002 -38.2002l-16 -120c0 -0.599609 0.100586 -1.2002 0 -1.7998h-48.2998c-44 0 -80 36 -80 80
@ -4160,7 +4168,7 @@ d="M608 128c17.7002 0 32 -14.2998 32 -32v-96c0 -17.7002 -14.2998 -32 -32 -32h-57
c5.2998 0 9.59961 3.59961 9.59961 8v16c0 4.40039 -4.2998 8 -9.59961 8h-22.4004v64h64zM512 64h-384v319.7c0 17.7998 14.5 32.2998 32.4004 32.2998h319.3c17.7998 0 32.2998 -14.4004 32.2998 -32.2998v-319.7zM211.2 246c-4.2002 -4.2002 -4.2998 -11 0 -15.2002
l74.0996 -74.7002c4.2002 -4.2998 11 -4.2998 15.2002 -0.0996094l128.3 127.2c4.2998 4.2002 4.2998 11 0.100586 15.2002l-25.3008 25.5c-4.19922 4.2998 -11 4.2998 -15.1992 0.0996094l-95.2002 -94.4004l-41.2998 41.6006
c-4.2002 4.2998 -11 4.2998 -15.2002 0.0996094z" />
<glyph glyph-name="water" unicode="&#xf773;" horiz-adv-x="575"
<glyph glyph-name="water" unicode="&#xf773;" horiz-adv-x="576"
d="M562.1 64.0996c8.10059 -0.899414 13.9004 -8.2998 13.8008 -16.2998v-31.5996c0 -9.10059 -7.60059 -16.7998 -16.7002 -16c-28.2002 2.5 -55.7998 11.5996 -79.1006 25.7998c-55 -34.0996 -135.5 -34.5996 -192 0c-55 -34.0996 -135.5 -34.5996 -192 0
c-23.2998 -14.5 -50.5996 -23.4004 -79.3994 -25.9004c-9.10059 -0.799805 -16.7002 6.90039 -16.7002 16v32.2002c0 7.90039 5.7002 14.9004 13.5996 15.7002c21.7002 2.2998 42.2002 10.2002 57.7002 22.4004c13.7998 10.8994 33.6006 13.1992 47.1006 2
c38.2998 -31.7002 107.199 -31.8008 145.199 -1.7002c13.7002 10.8994 33.2002 13 46.7002 1.7998c38.5 -31.9004 107.8 -31.9004 145.7 -1.5c14 11.2998 34.0996 11.0996 48.2002 0c15.7998 -12.4004 36.3994 -20.5 57.8994 -22.9004zM562.1 208.1
@ -4180,7 +4188,7 @@ d="M144.8 431l111.2 -175h-256c0 74 35.2998 140.1 90.7998 184.4c16.7998 13.3994 4
c34.5996 -8.89941 60.2998 -40 60.2998 -77.2998c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 8.90039 1.7002 17.2002 4.40039 25.2002c-21.5 -5.90039 -44.6006 -9.2002 -68.4004 -9.2002s-46.7998 3.2998 -68.4004 9.2002
c2.60059 -8 4.40039 -16.2998 4.40039 -25.2002c0 -44.2002 -35.7998 -80 -80 -80s-80 35.7998 -80 80c0 37.2998 25.7002 68.4004 60.2998 77.2998c-37.2998 34.2998 -60.2998 80.1006 -60.2998 130.7h384v64c0 35.2998 28.7002 64 64 64h48zM80 -16
c17.5996 0 32 14.4004 32 32s-14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32zM400 16c0 17.5996 -14.4004 32 -32 32s-32 -14.4004 -32 -32s14.4004 -32 32 -32s32 14.4004 32 32z" />
<glyph glyph-name="biohazard" unicode="&#xf780;" horiz-adv-x="575"
<glyph glyph-name="biohazard" unicode="&#xf780;" horiz-adv-x="576"
d="M287.9 336c-18.5 0 -36 -3.7998 -52.5 -9.5c-13.3008 10.2998 -23.6006 24.2998 -29.5 40.7002c25.1992 10.8994 53 16.8994 82.0996 16.8994c29.2002 0 57 -6.09961 82.2002 -17c-5.90039 -16.3994 -16.2002 -30.3994 -29.5 -40.6992
c-16.6006 5.7998 -34.2002 9.59961 -52.7998 9.59961zM163.6 9.2998c-47.5 35.5 -79.1992 90.7002 -83.2998 153.5c7.2998 2.10059 14.9004 3.10059 22.5 3.10059c9.2002 0 17.9004 -1.80078 26.4004 -4.60059c4.09961 -44.2998 26 -83.2002 58.8994 -109.6
c-4.09961 -16 -12.5 -30.6006 -24.5 -42.4004zM387.8 51.9004c32.7002 26.3994 54.6006 65.0996 58.7002 109.3c8.59961 2.7998 17.4004 4.7002 26.5996 4.7002c7.5 0 15 -1 22.2002 -3c-3.89941 -62.8008 -35.5996 -118 -83 -153.5c-12 11.7998 -20.3994 26.5 -24.5 42.5z
@ -4191,7 +4199,7 @@ c13.7998 3 25.6006 7.30078 35.7998 13.4004c57.3008 33.9004 77 109.2 43.9004 167.
c-3.30078 2.09961 -4.80078 6.09961 -3.5 9.7998c13.2998 39.0996 39.6992 71.9004 74.2998 92.4004c17.5996 10.3994 36.3994 16.5996 55.2998 19.8994c-6.09961 17.7002 -10 36.4004 -10 56.2002c0 41 14.5996 80.7998 41 112.2c2.5 3 6.59961 3.7002 10 1.7998
c3.2998 -1.90039 4.7998 -6 3.59961 -9.7002c-4.39941 -13.7998 -6.59961 -26.3994 -6.59961 -38.5c0 -67.7998 53.7998 -122.899 120 -122.899s120 55.0996 120 122.899c0 12.2002 -2.09961 24.7002 -6.59961 38.5c-1.2002 3.7002 0.299805 7.7998 3.59961 9.7002
c3.40039 1.90039 7.5 1.2002 10 -1.7998c26.5 -31.4004 41 -71.2002 41 -112.2c0 -19.7998 -4 -38.5 -10 -56.2002c19 -3.2998 37.7002 -9.5 55.2998 -19.8994zM287.9 127.9c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
<glyph glyph-name="blog" unicode="&#xf781;" horiz-adv-x="511"
<glyph glyph-name="blog" unicode="&#xf781;"
d="M172.2 221.2c75.5 -15 129.899 -89.2998 112.5 -172.2c-11.4004 -54.2998 -55.2998 -98.2998 -109.7 -109.7c-92.9004 -19.5 -175 51.2002 -175 140.7v248c0 13.2998 10.7002 24 24 24h48c13.2998 0 24 -10.7002 24 -24v-248c0 -26.5 21.5 -48 48 -48s48 21.5 48 48
c0 20.5996 -13.0996 38.2002 -31.2998 45c-9.60059 3.59961 -16.7002 11.7998 -16.7002 22v50.4004c0 14.8994 13.5996 26.6992 28.2002 23.7998zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17h-32.1006
c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7
@ -4232,7 +4240,7 @@ l33 31.0996l-99.2998 99.2998c-6.2002 6.2002 -6.2002 16.4004 0 22.6006l25.3994 25
d="M560 288h-97.2998l-25.6006 128h98.9004c7.2998 0 13.7002 -5 15.5 -12.0996l24 -96c2.5 -10.1006 -5.09961 -19.9004 -15.5 -19.9004zM272 416v-128h-126.1l25.5996 128h100.5zM404.5 416l25.5996 -128h-126.1v128h100.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004
l24 96c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM560 224c8.7998 0 16 -7.2002 16 -16v-32c0 -8.7998 -7.2002 -16 -16 -16h-28l-20 -160v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16h-320v-16
c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16l-20 160h-28c-8.7998 0 -16 7.2002 -16 16v32c0 8.7998 7.2002 16 16 16h20l-4 32h512l-4 -32h20z" />
<glyph glyph-name="dumpster-fire" unicode="&#xf794;" horiz-adv-x="639"
<glyph glyph-name="dumpster-fire" unicode="&#xf794;" horiz-adv-x="640"
d="M418.7 343.9c-19.7002 -17.6006 -37.7002 -36.5 -53.9004 -55.8008h-60.7998v128h100.5l14.4004 -72zM272 416v-128h-126.1l25.5996 128h100.5zM461.3 343.9l-11.8994 10.5996l-12.3008 61.5h98.9004c7.2998 0 13.7002 -5 15.4004 -12.0996l24 -96
c0.199219 -0.800781 -0.100586 -1.5 0 -2.30078c-1 1 -2 2.2002 -3.10059 3.10059l-21.2998 19l-21.2998 -19c-5.90039 -5.2002 -11.6006 -10.7002 -17.2998 -16.2998c-15.6006 17.7998 -32.9004 35.1992 -51.1006 51.5zM16 288c-10.4004 0 -18 9.7998 -15.5 19.9004l24 96
c1.7998 7.09961 8.2002 12.0996 15.5 12.0996h98.9004l-25.6006 -128h-97.2998zM340.6 256c-32.6992 -46.7002 -52.5996 -93.7002 -52.5996 -129.6c0 -48.5 18.5996 -92.7002 48.7998 -126.4h-208.8v-16c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v16
@ -4276,7 +4284,7 @@ c0 8.7998 7.2002 16 16 16h480z" />
<glyph glyph-name="grip-lines-vertical" unicode="&#xf7a5;" horiz-adv-x="256"
d="M96 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32c8.7998 0 16 -7.2002 16 -16v-480zM224 -48c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32
c8.7998 0 16 -7.2002 16 -16v-480z" />
<glyph glyph-name="guitar" unicode="&#xf7a6;" horiz-adv-x="511"
<glyph glyph-name="guitar" unicode="&#xf7a6;"
d="M502.6 393.4c12.5 -12.5 12.5 -32.8008 0.100586 -45.2002l-67.9004 -67.9004c-12.5 -12.5 -32.7998 -12.5 -45.2998 0l-54.2002 -54.2002c28.9004 -45.3994 28.9004 -100.399 -4.2002 -133.5c-9.69922 -9.69922 -21.1992 -16.3994 -33.8994 -20.5
c-18.7998 -6.09961 -33.1006 -23.5996 -34.9004 -42.6992c-2.2998 -24.1006 -11.5996 -46.4004 -28.7998 -63.5c-46.0996 -46.1006 -129.1 -37.9004 -185.3 18.2998s-64.5 139.2 -18.2998 185.3c17.0996 17.2002 39.3994 26.5 63.3994 28.7998
c19.2002 1.7998 36.6006 16.1006 42.7002 34.9004c4.09961 12.7002 10.7998 24.2002 20.5 33.8994c33.0996 33.1006 88.0996 33.2002 133.5 4.2002l54.2002 54.1006c-12.5 12.5 -12.5 32.7998 0 45.2998l67.8994 67.8994c12.5 12.5 32.8008 12.5 45.3008 0zM208 96
@ -4284,7 +4292,7 @@ c26.5 0 48 21.5 48 48s-21.5 48 -48 48s-48 -21.5 -48 -48s21.5 -48 48 -48z" />
<glyph glyph-name="heart-broken" unicode="&#xf7a9;"
d="M473.7 374.2c48.7002 -49.7998 50.7998 -129.101 7.2998 -182.101l-212.2 -218.699c-7.09961 -7.30078 -18.5996 -7.30078 -25.7002 0l-212.1 218.6c-43.5 53.0996 -41.4004 132.4 7.2998 182.2l2.40039 2.39941c46.2998 47.4004 119 51.8008 170.7 14l28.5996 -86.5
l-96 -64l144 -144l-48 128l96 64l-34.2998 103.4c51.5996 36.9004 123.6 32.2002 169.6 -14.7998z" />
<glyph glyph-name="holly-berry" unicode="&#xf7aa;" horiz-adv-x="447"
<glyph glyph-name="holly-berry" unicode="&#xf7aa;" horiz-adv-x="448"
d="M144 256c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM256 304c0 26.5 21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48zM224 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48z
M207.8 212.9c-0.399414 -39.8008 7.40039 -78.1006 22.9004 -112.301c4 -8.89941 -2 -19.1992 -11.7002 -20.1992c-15.2002 -1.5 -30.4004 -4.60059 -45.2998 -9.10059c-14.9004 -4.5 -23.7998 -19.8994 -20.2002 -35.0996s8.5 -29.9004 14.7002 -43.7998
c4 -8.90039 -1.90039 -19.3008 -11.6006 -20.2002c-35.8994 -3.40039 -71.5996 -14.9004 -104.8 -33.9004c-12.3994 -7.09961 -27.5 1.60059 -27.5996 16c-0.100586 38.2002 -8 74.9004 -23 107.7c-4 8.90039 2 19.2002 11.7002 20.2002
@ -4293,12 +4301,12 @@ c10.7002 6.40039 23.9004 -1.2998 23.7998 -13.6992zM435 82.4004c9.7002 -1 15.7998
c-9.69922 0.900391 -15.5996 11.2998 -11.5996 20.2002c6.2002 14 11.0996 28.5996 14.7002 43.7998c3.59961 15.2002 -5.2998 30.5996 -20.2002 35.0996c-4.90039 1.5 -9.90039 2.5 -14.7998 3.7002c5.7998 12.2998 6.2998 26.5 0.599609 38.9004
c-12.8994 28.2998 -19.7002 60.7002 -19.8994 94c0 1.7002 0.199219 3.2998 0.199219 4.89941c-0.0996094 12.3008 13.1006 20 23.8008 13.7002c34.2998 -20.2998 71.3994 -32.7002 108.699 -36.2002c9.7002 -0.899414 15.6006 -11.2998 11.6006 -20.1992
c-6.2002 -14 -11.1006 -28.6006 -14.7002 -43.8008c-3.59961 -15.1992 5.2998 -30.5996 20.2002 -35.0996c15 -4.40039 30.0996 -7.5 45.2998 -9.09961z" />
<glyph glyph-name="horse-head" unicode="&#xf7ab;" horiz-adv-x="511"
<glyph glyph-name="horse-head" unicode="&#xf7ab;"
d="M509.8 115.5c4.60059 -11.7998 1.7998 -25.2998 -7.09961 -34.4004l-45.2998 -39.7998c-6 -6 -14.1006 -9.39941 -22.6006 -9.39941h-50.2998c-10.2998 0 -20 4.89941 -26 13.2998l-46 63.8994c-13.7998 -8.09961 -29.5996 -13.1992 -46.7998 -13.1992
c-39.2002 0 -72.6006 23.6992 -87.4004 57.3994c-2.2998 5.10059 -9 6.2998 -12.8994 2.40039l-12.1006 -12.1006c-2.5 -2.39941 -3.2002 -6.19922 -1.59961 -9.2998c19.7002 -38.8994 58.7002 -66.0996 104.3 -69.5996v-0.700195l40.7998 -81.7002
c10.7002 -21.2998 -4.7998 -46.2998 -28.5996 -46.2998h-236.2c-17.7002 0 -32 14.2998 -32 32v81.2002c0 159.899 35.9004 275.399 166.9 322.5l202.199 75.7002c4.90039 1.7998 10.7002 -1.10059 12 -6.10059c12.1006 -46.3994 -16.1992 -71.7002 -34.1992 -82.2998
c42.5996 -8.2002 78.0996 -38 93 -79.2002zM328 224c13.2998 0 24 10.7002 24 24s-10.7002 24 -24 24s-24 -10.7002 -24 -24s10.7002 -24 24 -24z" />
<glyph glyph-name="icicles" unicode="&#xf7ad;" horiz-adv-x="511"
<glyph glyph-name="icicles" unicode="&#xf7ad;"
d="M511.4 410.1l-87.5 -467.699c-1.7002 -8.60059 -14 -8.60059 -15.7002 0l-66.7002 363.8l-45.7998 -172.5c-2.2998 -7.60059 -13 -7.60059 -15.2998 0l-34.1006 133.399l-46.5 -196.899c-1.89941 -8.2998 -13.7002 -8.2998 -15.5996 0l-44.2002 187.3l-36.4004 -124.1
c-2.39941 -7.2002 -12.5996 -7.2002 -15.0996 0l-87.0996 273.399c-6.2002 20.5 9.19922 41.2002 30.5996 41.2002h448c20 0 35.0996 -18.2002 31.4004 -37.9004z" />
<glyph glyph-name="igloo" unicode="&#xf7ae;" horiz-adv-x="576"
@ -4314,17 +4322,17 @@ c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h
c-1.19922 9.5 6.5 18 16.3008 18h16.3994c8.2002 0 15 -5.90039 16.1006 -13.7998c2.7998 -20.2002 12 -38.7998 26.3994 -53.5c20.2002 -20.5 32.7998 -46.5 36.6006 -74.7002c1.2998 -9.5 -6.5 -18 -16.3008 -18h-16.5c-8 0 -14.6992 5.7998 -16 13.5zM400 256
c61.7998 0 112 -50.2002 112 -112s-50.2002 -112 -112 -112h-16c0 -53 -43 -96 -96 -96h-192c-53 0 -96 43 -96 96v192c0 17.7002 14.2998 32 32 32h368zM400 96c26.5 0 48 21.5 48 48s-21.5 48 -48 48h-16v-96h16z" />
<glyph glyph-name="radiation" unicode="&#xf7b9;" horiz-adv-x="496"
d="M167.8 191.8c0 -28.5996 15.2002 -53.5 37.7998 -67.7998l-80.3994 -128.4c-4.7998 -7.69922 -15.2998 -10.0996 -22.7002 -4.7998c-58.0996 42 -97.4004 108.4 -102.5 184.2c-0.599609 9.09961 7.09961 16.7998 16.2002 16.7998h151.6zM205.6 259.5l-80.3994 128.5
c-4.7998 7.59961 -2.40039 18.0996 5.59961 22.4004c34.9004 18.7998 74.7998 29.5996 117.2 29.5996s82.2998 -10.7998 117.2 -29.5996c8 -4.30078 10.3994 -14.7002 5.59961 -22.4004l-80.3994 -128.5c-12.4004 7.7002 -26.8008 12.4004 -42.4004 12.4004
s-30.0996 -4.7002 -42.4004 -12.4004zM248 239.8c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM479.8 191.8c9.10059 0 16.7998 -7.7002 16.2002 -16.7002c-5.09961 -75.7998 -44.4004 -142.199 -102.5 -184.199
c-7.40039 -5.40039 -17.9004 -2.90039 -22.7002 4.7998l-80.3994 128.399c22.5996 14.2002 37.7998 39.1006 37.7998 67.7002h151.6z" />
d="M328.2 192.2c0 28.5996 -15.2002 53.5 -37.7998 67.7998l80.3994 128.4c4.7998 7.69922 15.2998 10.0996 22.7002 4.7998c58.0996 -42 97.4004 -108.4 102.5 -184.2c0.599609 -9.09961 -7.09961 -16.7998 -16.2002 -16.7998h-151.6zM290.4 124.5l80.3994 -128.5
c4.7998 -7.59961 2.40039 -18.0996 -5.59961 -22.4004c-34.9004 -18.7998 -74.7998 -29.5996 -117.2 -29.5996s-82.2998 10.7998 -117.2 29.5996c-8 4.30078 -10.3994 14.7002 -5.59961 22.4004l80.3994 128.5c12.4004 -7.7002 26.8008 -12.4004 42.4004 -12.4004
s30.0996 4.7002 42.4004 12.4004zM248 144.2c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM16.2002 192.2c-9.10059 0 -16.7998 7.7002 -16.2002 16.7002c5.09961 75.7998 44.4004 142.199 102.5 184.199
c7.40039 5.40039 17.9004 2.90039 22.7002 -4.7998l80.3994 -128.399c-22.5996 -14.2002 -37.7998 -39.1006 -37.7998 -67.7002h-151.6z" />
<glyph glyph-name="radiation-alt" unicode="&#xf7ba;" horiz-adv-x="496"
d="M184 192c0 -22.7998 12.0996 -42.7998 30.0996 -54l-41.6992 -66.7998c-5.2002 -8.2998 -16.4004 -9.90039 -24 -3.7998c-32.5 26 -54.9004 64.1992 -59.5 107.8c-0.900391 9.09961 6.7998 16.7998 16 16.7998h79.0996zM281.8 246.1
c-9.7998 6.2002 -21.5 9.90039 -33.8994 9.90039c-12.4004 0 -24 -3.7002 -33.8008 -9.90039l-41.7998 66.9004c-4.7998 7.7998 -2.39941 18.4004 5.7998 22.5c21.2002 10.4004 44.8008 16.5 69.9004 16.5s48.7002 -6.09961 69.7998 -16.5
c8.2002 -4.09961 10.7002 -14.7002 5.7998 -22.5zM391.1 192c9.2002 0 17 -7.7002 15.9004 -16.9004c-4.59961 -43.5996 -26.9004 -81.7998 -59.5 -107.8c-7.59961 -6.09961 -18.7998 -4.5 -24 3.7998l-41.7002 66.8008c18.1006 11.2998 30.2002 31.2998 30.2002 54.0996
h79.0996zM248 440c137 0 248 -111 248 -248s-111 -248 -248 -248s-248 111 -248 248s111 248 248 248zM248 8c101.5 0 184 82.5 184 184s-82.5 184 -184 184s-184 -82.5 -184 -184s82.5 -184 184 -184zM248 224c17.7002 0 32 -14.2998 32 -32s-14.2998 -32 -32 -32
s-32 14.2998 -32 32s14.2998 32 32 32z" />
<glyph glyph-name="restroom" unicode="&#xf7bd;" horiz-adv-x="671"
d="M312 192c0 22.7998 -12.0996 42.7998 -30.0996 54l41.6992 66.7998c5.2002 8.2998 16.4004 9.90039 24 3.7998c32.5 -26 54.9004 -64.1992 59.5 -107.8c0.900391 -9.09961 -6.7998 -16.7998 -16 -16.7998h-79.0996zM214.2 137.9
c9.7998 -6.2002 21.5 -9.90039 33.8994 -9.90039c12.4004 0 24 3.7002 33.8008 9.90039l41.7998 -66.9004c4.7998 -7.7998 2.39941 -18.4004 -5.7998 -22.5c-21.2002 -10.4004 -44.8008 -16.5 -69.9004 -16.5s-48.7002 6.09961 -69.7998 16.5
c-8.2002 4.09961 -10.7002 14.7002 -5.7998 22.5zM104.9 192c-9.2002 0 -17 7.7002 -15.9004 16.9004c4.59961 43.5996 26.9004 81.7998 59.5 107.8c7.59961 6.09961 18.7998 4.5 24 -3.7998l41.7002 -66.8008c-18.1006 -11.2998 -30.2002 -31.2998 -30.2002 -54.0996
h-79.0996zM248 -56c-137 0 -248 111 -248 248s111 248 248 248s248 -111 248 -248s-111 -248 -248 -248zM248 376c-101.5 0 -184 -82.5 -184 -184s82.5 -184 184 -184s184 82.5 184 184s-82.5 184 -184 184zM248 160c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32
s32 -14.2998 32 -32s-14.2998 -32 -32 -32z" />
<glyph glyph-name="restroom" unicode="&#xf7bd;" horiz-adv-x="640"
d="M128 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM512 320c-35.2998 0 -64 28.7002 -64 64s28.7002 64 64 64s64 -28.7002 64 -64s-28.7002 -64 -64 -64zM639.3 93.5c3.7002 -15.0996 -8.2998 -29.5 -24.5 -29.5
h-54.7998v-104c0 -13.2998 -10.7002 -24 -24 -24h-48c-13.2998 0 -24 10.7002 -24 24v104h-54.7998c-16.2002 0 -28.2002 14.4004 -24.7002 29.5l45.5996 185.8c3.30078 13.5 15.5 23 29.8008 24.2002c15 -9.7002 32.7998 -15.5 52 -15.5c19.1992 0 37 5.7998 52 15.5
c14.2998 -1.2002 26.5 -10.7002 29.7998 -24.2002zM336 448c8.7998 0 16 -7.2002 16 -16v-480c0 -8.7998 -7.2002 -16 -16 -16h-32c-8.7998 0 -16 7.2002 -16 16v480c0 8.7998 7.2002 16 16 16h32zM180.1 303.6c24.6006 -2.09961 43.9004 -22.5 43.9004 -47.5996v-136
@ -4336,7 +4344,7 @@ c-4.5 -8.5 -16.3994 -9.59961 -23.2002 -2.7998l-107.5 107.5l-17.7998 -17.7998c0.7
l17.7998 17.7998l-107.5 107.5c-6.7998 6.80078 -5.7002 18.6006 2.7998 23.2002c52.2998 28.1006 114.8 29.7002 168.5 5.40039l9.7998 9.7998l-80.2998 80.4004c-12.3994 12.5 -12.3994 32.6992 0 45.0996l96.7002 96.7002c6.2002 6.2002 14.2998 9.2998 22.5 9.2998
s16.2998 -3.09961 22.5996 -9.2998l80.3008 -80.2998l47.7998 47.8994c13.0996 13.1006 34.3994 13.1006 47.5 0l47.5 -47.5c13.0996 -13.0996 13.0996 -34.3994 0 -47.5l-47.7998 -47.8994zM150.7 319.5l68.8994 -68.9004l73.8008 73.8008l-68.9004 68.8994zM383.5 86.7002
l73.7998 73.7998l-68.8994 68.9004l-73.8008 -73.8008z" />
<glyph glyph-name="satellite-dish" unicode="&#xf7c0;" horiz-adv-x="511"
<glyph glyph-name="satellite-dish" unicode="&#xf7c0;"
d="M188.8 102.1l116.601 -116.6c7.39941 -7.2998 6.19922 -20.0996 -3 -25c-77.7002 -41.7998 -176.7 -29.9004 -242.301 35.7002c-65.5996 65.5996 -77.5 164.5 -35.6992 242.3c4.89941 9.09961 17.6992 10.2998 25 3l116.8 -116.8l27.3994 27.3994
c-0.699219 2.60059 -1.59961 5 -1.59961 7.80078c0 17.6992 14.2998 32 32 32s32 -14.3008 32 -32c0 -17.7002 -14.2998 -32 -32 -32c-2.7998 0 -5.2002 0.899414 -7.7998 1.59961zM209 448c163.2 -8.59961 294.4 -139.8 302.9 -303c0.5 -9.2002 -6.80078 -17 -16 -17
h-32.1006c-8.39941 0 -15.3994 6.59961 -15.8994 15c-7.5 129.5 -111.5 234.5 -240.9 241.5c-8.40039 0.400391 -15 7.40039 -15 15.9004v31.5996c0 9.2002 7.7998 16.5 17 16zM209.3 352c110.101 -8.5 198.2 -96.5996 206.601 -206.7
@ -4344,8 +4352,8 @@ c0.699219 -9.2998 -6.80078 -17.2998 -16.1006 -17.2998h-32.2002c-8.2998 0 -15.099
<glyph glyph-name="sd-card" unicode="&#xf7c2;" horiz-adv-x="384"
d="M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 288v96h-48v-96h48zM240 288v96h-48v-96h48zM320 288v96h-48v-96h48z" />
<glyph glyph-name="sim-card" unicode="&#xf7c4;" horiz-adv-x="384"
d="M320 448c35.2998 0 64 -28.7002 64 -64v-384c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v320l128 128h192zM160 256v-64h64v64h-64zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32zM128 0v64h-64v-32c0 -17.7002 14.2998 -32 32 -32
h32zM224 0v64h-64v-64h64zM320 32v32h-64v-64h32c17.7002 0 32 14.2998 32 32zM320 96v64h-256v-64h256zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64z" />
d="M0 384c0 35.2998 28.7002 64 64 64h192l128 -128v-320c0 -35.2998 -28.7002 -64 -64 -64h-256c-35.2998 0 -64 28.7002 -64 64v384zM224 192v64h-64v-64h64zM320 192v32c0 17.7002 -14.2998 32 -32 32h-32v-64h64zM256 64v-64h32c17.7002 0 32 14.2998 32 32v32h-64z
M160 64v-64h64v64h-64zM64 64v-32c0 -17.7002 14.2998 -32 32 -32h32v64h-64zM64 160v-64h256v64h-256zM64 224v-32h64v64h-32c-17.7002 0 -32 -14.2998 -32 -32z" />
<glyph glyph-name="skating" unicode="&#xf7c5;" horiz-adv-x="448"
d="M400 448c26.5 0 48 -21.5 48 -48s-21.5 -48 -48 -48s-48 21.5 -48 48s21.5 48 48 48zM400 0c8.7998 0 16 -7.2002 16 -16c0 -26.5 -21.5 -48 -48 -48h-96c-8.7998 0 -16 7.2002 -16 16s7.2002 16 16 16h96c8.7998 0 16 7.2002 16 16s7.2002 16 16 16zM117.8 -8.59961
c6.2998 6.2998 16.5 6.19922 22.7002 0c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006c-9.2998 -9.2998 -21.5996 -14 -33.9004 -14c-12.2998 0 -24.5996 4.60059 -34 14l-67.8994 67.9004c-6.2002 6.2002 -6.2002 16.3994 0 22.5996s16.3994 6.2002 22.5996 0
@ -4353,7 +4361,7 @@ l67.9004 -67.8994c6.2002 -6.30078 16.3994 -6.2002 22.5996 0zM173.9 171.2c3.7998
c-12.5 12.4004 -12.5 32.7002 0 45.2002zM128 288c-17.7002 0 -32 14.2998 -32 32s14.2998 32 32 32h204.6c16.3008 0 30.8008 -9.7002 37 -24.7002c6.2002 -15 2.80078 -32.0996 -8.69922 -43.5996l-82.3008 -82.2998c-0.5 -0.5 -1.19922 -0.700195 -1.69922 -1.10059
l61 -61c9 -8.89941 14.0996 -21.2998 14.0996 -33.8994v-89.4004c0 -17.7002 -14.2998 -32 -32 -32s-32 14.2998 -32 32v82.7998l-78.2002 78.2002c-12.5996 12.5 -19.3994 29.9004 -18.7002 47.7002c0.700195 17.7002 8.80078 34.5996 22.3008 46.0996l20.0996 17.2002
h-105.5z" />
<glyph glyph-name="skiing" unicode="&#xf7c9;" horiz-adv-x="511"
<glyph glyph-name="skiing" unicode="&#xf7c9;"
d="M432 352c-26.5 0 -48 21.5 -48 48s21.5 48 48 48s48 -21.5 48 -48s-21.5 -48 -48 -48zM505 -4.09961c9.2998 -9.30078 9.2998 -24.5 0 -33.8008c-17 -17 -39.7998 -26 -63 -26c-12.5996 0 -25.2002 2.60059 -37.0996 8.10059l-391.9 202.5
c-11.7998 6 -16.4004 20.5 -10.2998 32.2998c6.09961 11.7998 20.5996 16.2998 32.2998 10.2998l197.9 -102.3l45.8994 68.7998l-75.0996 75.2002c-14.2998 14.4004 -20.6006 34.5 -17.7002 54.4004l107 -53.1006l40.4004 -40.5
c16.1992 -16.0996 18.6992 -41.5996 6 -60.5996l-49.2002 -73.7998l135.8 -70.2002c14.5996 -6.7002 33 -3.40039 45.0996 8.7002c9.30078 9.39941 24.5 9.39941 33.9004 0zM120 356.4l-26.2002 23c-2.2002 1.89941 -2.39941 5.19922 -0.5 7.39941
@ -4395,7 +4403,7 @@ c0 -23.0996 -8.40039 -43.8994 -22 -60.5c8.69922 -7.69922 16.0996 -16.5996 22 -26
c8.2002 3.19922 17.5 -0.700195 20.7998 -8.7002zM224 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 80c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 144
c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 208c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16zM256 296c0 0 16 23.2002 16 32s-7.2002 16 -16 16s-16 -7.2002 -16 -16s16 -32 16 -32z
M288 352c8.7998 0 16 7.2002 16 16s-7.2002 16 -16 16s-16 -7.2002 -16 -16s7.2002 -16 16 -16z" />
<glyph glyph-name="snowplow" unicode="&#xf7d2;" horiz-adv-x="639"
<glyph glyph-name="snowplow" unicode="&#xf7d2;" horiz-adv-x="640"
d="M120 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM200 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM280 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24
s-24 10.7002 -24 24s10.7002 24 24 24zM360 72c13.2998 0 24 -10.7002 24 -24s-10.7002 -24 -24 -24s-24 10.7002 -24 24s10.7002 24 24 24zM598.6 22.5996l36.7002 -36.6992c6.2002 -6.2002 6.2002 -16.4004 0 -22.6006l-22.5996 -22.5996
c-6.2002 -6.2002 -16.4004 -6.2002 -22.6006 0l-36.6992 36.7002c-26.5 26.5 -41.4004 62.3994 -41.4004 99.8994v18.7002h-43.2002c7 -14.5996 11.2002 -30.7002 11.2002 -48c0 -61.9004 -50.0996 -112 -112 -112h-256c-61.9004 0 -112 50.0996 -112 112
@ -4448,7 +4456,7 @@ c-2.2627 2.51758 -4.09961 7.30957 -4.09961 10.6953c0 3.93945 2.37891 9.27246 5.3
d="M256 416c141.39 0 256 -93.1201 256 -208s-114.61 -208 -256 -208h-0.473633c-30.4814 0 -78.3838 8.68164 -106.927 19.3799c-24.5996 -19.6299 -74.3398 -51.3799 -140.6 -51.3799c-4.41113 0.00488281 -7.99023 3.58887 -7.99023 8
c0 1.75879 0.981445 4.22266 2.19043 5.5c0.5 0.5 42.2598 45.4502 54.7998 95.7598c-35.5898 35.7402 -57 81.1807 -57 130.74c0 114.88 114.62 208 256 208zM352 184v48c0 4.41602 -3.58398 8 -8 8h-56v56c0 4.41602 -3.58398 8 -8 8h-48c-4.41602 0 -8 -3.58398 -8 -8
v-56h-56c-4.41602 0 -8 -3.58398 -8 -8v-48c0 -4.41602 3.58398 -8 8 -8h56v-56c0 -4.41602 3.58398 -8 8 -8h48c4.41602 0 8 3.58398 8 8v56h56c4.41602 0 8 3.58398 8 8z" />
<glyph glyph-name="crutch" unicode="&#xf7f7;" horiz-adv-x="511"
<glyph glyph-name="crutch" unicode="&#xf7f7;"
d="M507.31 262.29c2.56348 -2.58301 4.64355 -7.63184 4.64355 -11.2695c0 -3.66602 -2.10742 -8.74219 -4.70312 -11.3301l-22.6201 -22.6309c-2.58691 -2.58691 -7.65625 -4.6875 -11.3145 -4.6875c-3.65918 0 -8.72852 2.10059 -11.3154 4.6875l-181 181
c-2.58789 2.58691 -4.6875 7.65625 -4.6875 11.3154s2.09961 8.72852 4.6875 11.3154l22.6904 22.5996c2.58594 2.58496 7.65332 4.68262 11.3096 4.68262s8.72363 -2.09766 11.3096 -4.68262zM327.77 195.88l55.1006 55.1201l45.25 -45.2695l-109.68 -109.681
c-10.7441 -10.748 -31.4814 -22.2393 -46.29 -25.6494l-120.25 -27.75l-102 -102c-2.58691 -2.58789 -7.65625 -4.6875 -11.3154 -4.6875s-8.72754 2.09961 -11.3154 4.6875l-22.6191 22.6191c-2.58789 2.58789 -4.6875 7.65625 -4.6875 11.3154
@ -4512,5 +4520,8 @@ c0 -24.3896 2.78027 -48.8896 10.3496 -72.0801c10.8701 -33.3096 26.9199 -65.6895
s-61.3496 12.3203 -83.8604 32h-82.3594zM184 376.33v-16.6602c0 -2.75977 2.24023 -5 5 -5h21.6699v-21.6699c0 -2.75977 2.24023 -5 5 -5h16.6602c2.75977 0 5 2.24023 5 5v21.6699h21.6699c2.75977 0 5 2.24023 5 5v16.6602c0 2.75977 -2.24023 5 -5 5h-21.6699v21.6699
c0 2.75977 -2.24023 5 -5 5h-16.6602c-2.75977 0 -5 -2.24023 -5 -5v-21.6699h-21.6699c-2.75977 0 -5 -2.24023 -5 -5zM144 288v-32c0 -44.1602 35.8398 -80 80 -80s80 35.8398 80 80v32h-160zM319.41 128c71.4902 -3.09961 128.59 -61.5996 128.59 -133.79
c0 -32.1318 -26.0781 -58.21 -58.21 -58.21v0h-331.58c-32.1318 0 -58.21 26.0781 -58.21 58.21c0 72.1904 57.0996 130.69 128.59 133.79l95.4102 -95.3896z" />
<glyph glyph-name="wave-square" unicode="&#xf83e;" horiz-adv-x="640"
d="M476 -32h-152c-19.8721 0 -36 16.1279 -36 36v348h-96v-156c0 -19.8721 -16.1279 -36 -36 -36h-140c-8.83203 0 -16 7.16797 -16 16v32c0 8.83203 7.16797 16 16 16h112v156c0 19.8721 16.1279 36 36 36h152c19.8721 0 36 -16.1279 36 -36v-348h96v156
c0 19.8721 16.1279 36 36 36h140c8.83203 0 16 -7.16797 16 -16v-32c0 -8.83203 -7.16797 -16 -16 -16h-112v-156c0 -19.8721 -16.1279 -36 -36 -36z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 797 KiB

After

Width:  |  Height:  |  Size: 798 KiB

File diff suppressed because it is too large Load Diff

View File

@ -10,14 +10,16 @@ Make sure you are reading the parsed version of this Document. When in doubt [cl
```bash
# Please check the installer options first to make the best choice for your install
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh
# This will install MISP Core and misp-modules (recommended)
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s -- -c -M
# This will install MISP Core
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -c
```
**The above does NOT work yet**
## 0/ Overview and Assumptions
### 0/ Overview and Assumptions
{!generic/rhelVScentos.md!}
@ -35,10 +37,10 @@ This is a joint RHEL/CentOS install guide. The authors tried to make it contextu
The following assumptions with regard to this installation have been made.
### 0.1/ A valid support agreement allowing the system to register to the Red Hat Customer Portal and receive updates
### 0.2/ The ability to enable additional RPM repositories, specifically the EPEL and Software Collections (SCL) repos
### 0.3/ This system will have direct or proxy access to the Internet for updates. Or connected to a Red Hat Satellite Server
### 0.4/ This document will bootstrap a MISP instance running over HTTPS. A full test of all features have yet to be done. [The following GitHub issue](https://github.com/MISP/MISP/issues/4084) details some shortcomings.
- A valid support agreement allowing the system to register to the Red Hat Customer Portal and receive updates
- The ability to enable additional RPM repositories, specifically the EPEL and Software Collections (SCL) repos
- This system will have direct or proxy access to the Internet for updates. Or connected to a Red Hat Satellite Server
- This document will bootstrap a MISP instance running over HTTPS. A full test of all features have yet to be done. [The following GitHub issue](https://github.com/MISP/MISP/issues/4084) details some shortcomings.
{!generic/globalVariables.md!}
@ -55,7 +57,7 @@ The following assumptions with regard to this installation have been made.
/etc/sysconfig/network-scripts/ifcfg-*
```
# 1/ OS Install and additional repositories
### 1/ OS Install and additional repositories
## 1.1/ Complete a minimal RHEL/CentOS installation, configure IP address to connect automatically.
@ -84,27 +86,29 @@ sudo subscription-manager repos --enable rhel-server-rhscl-7-rpms
## 1.4c/ **[CentOS]** Enable EPEL for additional dependencies
```bash
# <snippet-begin 0_CentOS_EPEL.sh>
# We need some packages from the Extra Packages for Enterprise Linux repository
sudo yum install epel-release -y
centosEPEL () {
# We need some packages from the Extra Packages for Enterprise Linux repository
sudo yum install epel-release -y
# Since MISP 2.4 PHP 5.5 is a minimal requirement, so we need a newer version than CentOS base provides
# Software Collections is a way do to this, see https://wiki.centos.org/AdditionalResources/Repositories/SCL
sudo yum install centos-release-scl -y
# Since MISP 2.4 PHP 5.5 is a minimal requirement, so we need a newer version than CentOS base provides
# Software Collections is a way do to this, see https://wiki.centos.org/AdditionalResources/Repositories/SCL
sudo yum install centos-release-scl -y
}
# <snippet-end 0_CentOS_EPEL.sh>
```
### 1.5a/ Install the deltarpm package to help reduce download size when installing updates (optional)
## 1.5a/ Install the deltarpm package to help reduce download size when installing updates (optional)
```bash
sudo yum install deltarpm -y
```
### 1.5.b/ Install vim (optional)
## 1.5.b/ Install vim (optional)
```bash
# Because (neo)vim is just so practical
sudo yum install neovim -y
```
### 1.5.c/ Install ntpdate (optional)
## 1.5.c/ Install ntpdate (optional)
```bash
# In case you time is wrong, this will fix it.
sudo yum install ntpdate -y
@ -125,7 +129,7 @@ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noa
# <snippet-end 0_RHEL_EPEL.sh>
```
# 2/ Dependencies
### 2/ Dependencies
!!! note
This guide installs PHP 7.2 from SCL
@ -148,8 +152,8 @@ yumInstallCoreDeps () {
# Enable and start redis
sudo systemctl enable --now rh-redis32-redis.service
RUN_PHP='/usr/bin/scl enable rh-php72'
PHP_INI=/etc/opt/rh/rh-php72/php.ini
RUN_PHP="/usr/bin/scl enable rh-php72"
PHP_INI="/etc/opt/rh/rh-php72/php.ini"
# Install PHP 7.2 from SCL, see https://www.softwarecollections.org/en/scls/rhscl/rh-php72/
sudo yum install rh-php72 rh-php72-php-fpm rh-php72-php-devel \
rh-php72-php-mysqlnd \
@ -181,7 +185,7 @@ sudo systemctl enable --now haveged.service
# <snippet-end 0_yumInstallHaveged.sh>
```
# 3/ MISP code
### 3/ MISP code
## 3.01/ Download MISP code using git in /var/www/ directory
```bash
@ -262,6 +266,15 @@ $SUDO_WWW scl enable devtoolset-7 rh-python36 "bash -c 'cmake3 \
..'"
$SUDO_WWW make -j3 pyLIEF
# In case you get "internal compiler error: Killed (program cc1plus)"
# You ran out of memory.
# Create some swap
# sudo dd if=/dev/zero of=/var/swap.img bs=1024k count=4000
# sudo mkswap /var/swap.img
# sudo swapon /var/swap.img
# And compile again
# $SUDO_WWW make -j3 pyLIEF
# The following adds a PYTHONPATH to where the pyLIEF module has been compiled
echo /var/www/MISP/app/files/scripts/lief/build/api/python |$SUDO_WWW tee /var/www/MISP/venv/lib/python3.6/site-packages/lief.pth
@ -288,7 +301,7 @@ sudo systemctl restart rh-php72-php-fpm.service
# <snippet-end 1_mispCoreInstall_RHEL.sh>
```
# 4/ CakePHP
### 4/ CakePHP
## 4.01/ Install CakeResque along with its dependencies if you intend to use the built in background jobs
!!! notice
@ -339,7 +352,7 @@ installCake_RHEL ()
# <snippet-begin 1_installCake_RHEL.sh>
```
# 5/ Set file permissions
### 5/ Set file permissions
```bash
# <snippet-begin 2_permissions_RHEL.sh>
# Main function to fix permissions to something sane
@ -367,12 +380,13 @@ permissions_RHEL () {
# <snippet-end 2_permissions_RHEL.sh>
```
# 6/ Create database and user
### 6/ Create database and user
## 6.01/ Set database to listen on localhost only
```bash
# <snippet-begin 1_prepareDB_RHEL.sh>
prepareDB_RHEL () {
RUN_MYSQL="/usr/bin/scl enable rh-mariadb102"
# Enable, start and secure your mysql database server
sudo systemctl enable --now rh-mariadb102-mariadb.service
echo [mysqld] |sudo tee /etc/opt/rh/rh-mariadb102/my.cnf.d/bind-address.cnf
@ -417,7 +431,7 @@ EOF
sudo systemctl restart rh-mariadb102-mariadb
scl enable rh-mariadb102 "mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e 'CREATE DATABASE $DBNAME;'"
scl enable rh-mariadb102 "mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e \"GRANT USAGE on *.* to $DBNAME@localhost IDENTIFIED by '$DBPASSWORD_MISP';\""
scl enable rh-mariadb102 "mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e \"GRANT USAGE on *.* to $DBUSER_MISP@localhost IDENTIFIED by '$DBPASSWORD_MISP';\""
scl enable rh-mariadb102 "mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e \"GRANT ALL PRIVILEGES on $DBNAME.* to '$DBUSER_MISP'@'localhost';\""
scl enable rh-mariadb102 "mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e 'FLUSH PRIVILEGES;'"
@ -426,7 +440,7 @@ EOF
# <snippet-end 1_prepareDB_RHEL.sh>
```
# 7/ Apache Configuration
### 7/ Apache Configuration
!!! notice
SELinux note, to check if it is running:
@ -517,11 +531,13 @@ firewall_RHEL () {
# <snippet-end 1_firewall_RHEL.sh>
```
# 8/ Log Rotation
### 8/ Log Rotation
## 8.01/ Enable log rotation
MISP saves the stdout and stderr of its workers in /var/www/MISP/app/tmp/logs
To rotate these logs install the supplied logrotate script:
FIXME: The below does not work
```bash
# <snippet-begin 2_logRotation_RHEL.sh>
logRotation_RHEL () {
@ -548,7 +564,7 @@ logRotation_RHEL () {
# <snippet-end 2_logRotation_RHEL.sh>
```
# 9/ MISP Configuration
### 9/ MISP Configuration
```bash
# <snippet-begin 2_configMISP_RHEL.sh>
@ -655,7 +671,7 @@ fi
Make sure that you use the same settings in the MISP Server Settings tool
## 9.06/ Use MISP's background workers
### 9.06a/ Create a systemd unit for the workers
## 9.06a/ Create a systemd unit for the workers
```bash
echo "[Unit]
Description=MISP background workers
@ -679,12 +695,12 @@ sudo chmod +x /var/www/MISP/app/Console/worker/start.sh
sudo systemctl daemon-reload
```
### 9.06b/ Start the workers and enable them on boot
## 9.06b/ Start the workers and enable them on boot
```bash
sudo systemctl enable --now misp-workers.service
```
### 9.07/ misp-modules (WIP!)
## 9.07/ misp-modules (WIP!)
```bash
# some misp-modules dependencies
sudo yum install openjpeg-devel gcc-c++ poppler-cpp-devel -y
@ -707,7 +723,9 @@ After=misp-workers.service
Type=simple
User=apache
Group=apache
ExecStart=\"${PATH_TO_MISP}/venv/bin/misp-modules l 127.0.0.1 s\"
WorkingDirectory=/usr/local/src/misp-modules
Environment="PATH=/var/www/MISP/venv/bin"
ExecStart=\"${PATH_TO_MISP}/venv/bin/misp-modules -l 127.0.0.1 -s\"
Restart=always
RestartSec=10
@ -768,12 +786,12 @@ sudo systemctl enable --now misp-modules
{!generic/recommended.actions.md!}
# 11/ LIEF Installation
### 11/ LIEF Installation
*lief* is required for the Advanced Attachment Handler and requires manual compilation
The installation is explained in section **[3.01](https://misp.github.io/MISP/INSTALL.rhel7/#301-download-misp-code-using-git-in-varwww-directory)**
# 12/ Known Issues
### 12/ Known Issues
## 12.01/ Workers cannot be started or restarted from the web page
Possible also due to package being installed via SCL, attempting to start workers through the web page will result in error. Worker's can be restarted via the CLI using the following command.
```bash

View File

@ -10,10 +10,12 @@ Make sure you are reading the parsed version of this Document. When in doubt [cl
```bash
# Please check the installer options first to make the best choice for your install
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh
# This will install MISP Core and misp-modules (recommended)
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s -- -c -M
# This will install MISP Core
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -c
```
**The above does NOT work yet**
@ -31,10 +33,10 @@ This document details the steps to install MISP on Red Hat Enterprise Linux 8.x
The following assumptions with regard to this installation have been made.
### 0.1/ A valid support agreement allowing the system to register to the Red Hat Customer Portal and receive updates
### 0.2/ The ability to enable additional RPM repositories, specifically the EPEL and Software Collections (SCL) repos
### 0.3/ This system will have direct or proxy access to the Internet for updates. Or connected to a Red Hat Satellite Server
### 0.4/ This document will bootstrap a MISP instance running over HTTPS. A full test of all features have yet to be done. [The following GitHub issue](https://github.com/MISP/MISP/issues/4084) details some shortcomings.
- A valid support agreement allowing the system to register to the Red Hat Customer Portal and receive updates
- The ability to enable additional RPM repositories, specifically the EPEL and Software Collections (SCL) repos
- This system will have direct or proxy access to the Internet for updates. Or connected to a Red Hat Satellite Server
- This document will bootstrap a MISP instance running over HTTPS. A full test of all features have yet to be done. [The following GitHub issue](https://github.com/MISP/MISP/issues/4084) details some shortcomings.
{!generic/globalVariables.md!}
@ -51,9 +53,9 @@ The following assumptions with regard to this installation have been made.
/etc/sysconfig/network-scripts/ifcfg-*
```
# 1/ OS Install and additional repositories
### 1/ OS Install and additional repositories
## 1.1/ Complete a minimal RHEL installation, configure IP address to connect automatically.
## 1.1/ Complete a minimal RHEL/CentOS installation, configure IP address to connect automatically.
## 1.2/ Configure system hostname (if not done during install)
```bash
@ -107,7 +109,7 @@ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noa
# 2/ Dependencies
!!! warning
[PHP 5.6 will be EOL in December 2018](https://secure.php.net/supported-versions.php). Please update accordingly. In future only PHP7 will be supported.
[PHP 5.6 and 7.0 aren't supported since December 2018](https://secure.php.net/supported-versions.php). Please update accordingly. In the future only PHP7 will be supported.
## 2.01/ Install some base system dependencies
```bash
@ -160,7 +162,7 @@ sudo systemctl enable --now haveged.service
# <snippet-end 0_yumInstallHaveged.sh>
```
# 3/ MISP code
### 3/ MISP code
## 3.01/ Download MISP code using git in /var/www/ directory
```bash
@ -181,11 +183,13 @@ cd $PATH_TO_MISP
$SUDO_WWW git submodule update --init --recursive
# Make git ignore filesystem permission differences for submodules
$SUDO_WWW git submodule foreach --recursive git config core.filemode false
# Make git ignore filesystem permission differences
$SUDO_WWW git config core.filemode false
# Install packaged pears
sudo pear channel-update pear.php.net
sudo pear install ${PATH_TO_MISP}/INSTALL/dependencies/Console_CommandLine/package.xml
sudo pear install ${PATH_TO_MISP}/INSTALL/dependencies/Crypt_GPG/package.xml
sudo $RUN_PHP "pear channel-update pear.php.net"
sudo $RUN_PHP "pear install ${PATH_TO_MISP}/INSTALL/dependencies/Console_CommandLine/package.xml"
sudo $RUN_PHP "pear install ${PATH_TO_MISP}/INSTALL/dependencies/Crypt_GPG/package.xml"
# Create a python3 virtualenv
$SUDO_WWW virtualenv-3 -p python3 $PATH_TO_MISP/venv

View File

@ -9,10 +9,12 @@ To install MISP on a fresh Ubuntu install all you need to do is:
```bash
# Please check the installer options first to make the best choice for your install
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh
# This will install MISP Core and misp-modules (recommended)
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh | bash -s -- -c -M
# This will install MISP Core
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -c
```
### 0/ MISP Ubuntu 18.04-server install - status
@ -241,15 +243,21 @@ permissions () {
prepareDB () {
if [[ ! -e /var/lib/mysql/misp/users.ibd ]]; then
debug "Setting up database"
# FIXME: If user 'misp' exists, and has a different password, the below WILL fail.
# Add your credentials if needed, if sudo has NOPASS, comment out the relevant lines
pw=$MISP_PASSWORD
if [[ "${PACKER}" == "1" ]]; then
pw="Password1234"
else
pw=${MISP_PASSWORD}
fi
expect -f - <<-EOF
set timeout 10
spawn sudo -k mysql_secure_installation
expect "*?assword*"
send -- "$pw\r"
send -- "${pw}\r"
expect "Enter current password for root (enter for none):"
send -- "\r"
expect "Set root password?"
@ -271,13 +279,13 @@ EOF
sudo apt-get purge -y expect ; sudo apt autoremove -qy
fi
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE DATABASE ${DBNAME};"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "CREATE USER '${DBUSER_MISP}'@'localhost' IDENTIFIED BY '${DBPASSWORD_MISP}';"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT USAGE ON *.* to ${DBNAME}@localhost;"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "GRANT ALL PRIVILEGES on ${DBNAME}.* to '${DBUSER_MISP}'@'localhost';"
sudo mysql -u $DBUSER_ADMIN -p$DBPASSWORD_ADMIN -e "FLUSH PRIVILEGES;"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "CREATE DATABASE ${DBNAME};"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "CREATE USER '${DBUSER_MISP}'@'localhost' IDENTIFIED BY '${DBPASSWORD_MISP}';"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "GRANT USAGE ON *.* to ${DBUSER_MISP}@localhost;"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "GRANT ALL PRIVILEGES on ${DBNAME}.* to '${DBUSER_MISP}'@'localhost';"
sudo mysql -u ${DBUSER_ADMIN} -p${DBPASSWORD_ADMIN} -e "FLUSH PRIVILEGES;"
# Import the empty MISP database from MYSQL.sql
$SUDO_WWW cat ${PATH_TO_MISP}/INSTALL/MYSQL.sql | mysql -u ${DBUSER_MISP} -p${DBPASSWORD_MISP} ${DBNAME}
${SUDO_WWW} cat ${PATH_TO_MISP}/INSTALL/MYSQL.sql | mysql -u ${DBUSER_MISP} -p${DBPASSWORD_MISP} ${DBNAME}
}
# <snippet-end 1_prepareDB.sh>
```

View File

@ -17,6 +17,10 @@ coreCAKE () {
# The default install is Python >=3.6 in a virtualenv, setting accordingly
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "MISP.python_bin" "${PATH_TO_MISP}/venv/bin/python"
# Set default role
# TESTME: The following seem defunct, please test.
# $SUDO_WWW $RUN_PHP -- $CAKE setDefaultRole 3
# Tune global time outs
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "Session.autoRegenerate" 0
$SUDO_WWW $RUN_PHP -- $CAKE Admin setSetting "Session.timeout" 600
@ -129,10 +133,9 @@ coreCAKE () {
updateGOWNT () {
# AUTH_KEY Place holder in case we need to **curl** somehing in the future
#
# AUTH_KEY=$(mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e "SELECT authkey FROM users;" | tail -1)
# RHEL/CentOS
# AUTH_KEY=$(scl enable rh-mariadb102 "mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e 'SELECT authkey FROM users;' | tail -1")
#
$SUDO_WWW $RUN_MYSQL -- mysql -u $DBUSER_MISP -p$DBPASSWORD_MISP misp -e "SELECT authkey FROM users;" | tail -1 > /tmp/auth.key
AUTH_KEY=$(cat /tmp/auth.key)
rm /tmp/auth.key
debug "Updating Galaxies, ObjectTemplates, Warninglists, Noticelists and Templates"
# Update the galaxies…

View File

@ -8,7 +8,7 @@ MISPvars () {
debug "Setting generic ${LBLUE}MISP${NC} variables shared by all flavours" 2> /dev/null
# Local non-root MISP user
MISP_USER='misp'
MISP_PASSWORD='Password1234'
MISP_PASSWORD="$(openssl rand -hex 32)"
# The web server user
# RHEL/CentOS
@ -60,7 +60,7 @@ MISPvars () {
GPG_COMMENT='WARNING: MISP AutoGenerated Key consider this Key VOID!'
GPG_EMAIL_ADDRESS='admin@admin.test'
GPG_KEY_LENGTH='2048'
GPG_PASSPHRASE='Password1234'
GPG_PASSPHRASE="$(openssl rand -hex 32)"
# debug alias to make sure people are not confused when blindly copy pasting blobs of code
alias debug="echo -e"

View File

@ -116,6 +116,28 @@ checkFlavour () {
fi
}
checkInstaller () {
# TODO: Implement $FLAVOUR checks and install depending on the platform we are on
if [[ $(which shasum > /dev/null 2>&1 ; echo $?) != 0 ]]; then
sudo apt install libdigest-sha-perl -qyy
fi
# SHAsums to be computed, not the -- notatiation is for ease of use with rhash
SHA_SUMS="--sha1 --sha256 --sha384 --sha512"
for sum in $(echo ${SHA_SUMS} |sed 's/--sha//g'); do
/usr/bin/wget --no-cache -q -O /tmp/INSTALL.sh.sha${sum} https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh.sha${sum}
INSTsum=$(shasum -a ${sum} ${0} | cut -f1 -d\ )
chsum=$(cat /tmp/INSTALL.sh.sha${sum} | cut -f1 -d\ )
if [[ "${chsum}" == "${INSTsum}" ]]; then
echo "sha${sum} matches"
else
echo "sha${sum}: ${chsum} does not match the installer sum of: ${INSTsum}"
echo "Delete installer, re-download and please run again."
exit 1
fi
done
}
# Extract manufacturer
checkManufacturer () {
if [ -z $(which dmidecode) ]; then
@ -742,6 +764,8 @@ theEnd () {
echo "User: ${MISP_USER}"
echo "Password: ${MISP_PASSWORD} # Or the password you used of your custom user"
space
echo "GnuPG Passphrase is: ${GPG_PASSPHRASE}"
space
echo "To enable outgoing mails via postfix set a permissive SMTP server for the domains you want to contact:"
echo
echo "sudo postconf -e 'relayhost = example.com'"

View File

@ -10,10 +10,12 @@ Make sure you are reading the parsed version of this Document. When in doubt [cl
```bash
# Please check the installer options first to make the best choice for your install
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh
# This will install MISP Core and misp-modules (recommended)
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s -- -c -M
# This will install MISP Core
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -c
```
**The above does NOT work yet**

View File

@ -13,10 +13,12 @@ Make sure you are reading the parsed version of this Document. When in doubt [cl
```bash
# Please check the installer options first to make the best choice for your install
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh
# This will install MISP Core and misp-modules (recommended)
curl -fsSL https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.debian.sh | bash -s -- -c -M
# This will install MISP Core
wget -O /tmp/INSTALL.sh https://raw.githubusercontent.com/MISP/MISP/2.4/INSTALL/INSTALL.sh
bash /tmp/INSTALL.sh -c
```
**The above does NOT work yet**

View File

@ -199,7 +199,7 @@ cp -p $PATH_TO_MISP/app/Config/database.php $TmpDir/Config
echo "MySQL Dump"
MySQLRUser=${MySQLRUser:-$MySQLUUser}
MySQLRPass=${MySQLRPass:-$MySQLUPass}
mysqldump --opt -u $MySQLRUser -p$MySQLRPass $MISPDB > $TmpDir/MISPbackupfile.sql
mysqldump --opt --host $MISPDBHost -u $MySQLRUser -p$MySQLRPass $MISPDB > $TmpDir/MISPbackupfile.sql
if [[ "$?" != "0" ]]; then
echo "MySQLdump failed, abort." && exit 1
fi

View File

@ -67,6 +67,9 @@ rm -f $MISPPath/app/tmp/cache/models/myapp_*
rm -f $MISPPath/app/tmp/cache/persistent/myapp_*
echo "Wiping MySQL tables"
echo "Removes all users and organizations, except default (id=1)"
echo " - Change DELETE FROM to > 0 in misp-wipe.sql to also remove default ones"
echo " - Defaults are created on first login"
MySQLRUser=${MySQLRUser:-$MySQLUUser}
MySQLRPass=${MySQLRPass:-$MySQLUPass}
mysql -u $MySQLRUser -p$MySQLRPass $MISPDB < $SQL
@ -81,7 +84,7 @@ rm -f $TMP
echo "Wiping files"
git clean -f -x app/webroot/img/orgs
#git clean -f -x app/webroot/img/custom
git clean -f -x app/tmp/logs/
git clean -f -d -x app/tmp
git clean -f -d -x app/files
echo "Updating taxonomies"

View File

@ -60,7 +60,7 @@ TRUNCATE `template_element_files`;
TRUNCATE `template_element_texts`;
-- Remove entries from tables and reset index
DELETE FROM `users` WHERE id > 3;
ALTER TABLE `users` AUTO_INCREMENT = 4;
DELETE FROM `organisations` WHERE id > 2;
ALTER TABLE `organisations` AUTO_INCREMENT = 3;
DELETE FROM `users` WHERE id > 1;
ALTER TABLE `users` AUTO_INCREMENT = 2;
DELETE FROM `organisations` WHERE id > 1;
ALTER TABLE `organisations` AUTO_INCREMENT = 2;

View File

@ -11,7 +11,6 @@
import argparse
import sys
import zmq
import json
import time
import pprint

88
tools/misp_retention.py Executable file
View File

@ -0,0 +1,88 @@
#!/usr/bin/env python
#
# This script requires the MISP retention taxonomy is installed and enabled
# See https://github.com/MISP/misp-taxonomies/tree/master/retention/retention
from pymisp import PyMISP, MISPEvent
from datetime import datetime
from dateutil.relativedelta import relativedelta
import re
from keys import misp_url, misp_key
# pip install pymisp python-dateutil
class misphelper(object):
"""Helper class around a MISP object."""
taxonomyId = None
expiredTag = "retention:expired"
def __init__(self):
self.misp = PyMISP(url=misp_url,
key=misp_key,
ssl=True,
out_type="json")
self.taxonomyId = self.searchTaxonomy()
def searchTaxonomy(self):
res = self.misp.get_taxonomies_list()
for tax in res["response"]:
if (tax["Taxonomy"]["namespace"] == "retention" and tax["Taxonomy"]["enabled"]):
return tax["Taxonomy"]["id"]
raise Exception("Could not find the 'retention' Taxonomy in MISP. Please enable this first!")
def processEvent(self, event):
mevent = MISPEvent()
mevent.from_dict(Event=event)
changed = False
for attr in mevent.attributes:
if (attr["type"] == "ip-dst" or attr["type"] == "ip-src") and attr["to_ids"]:
print("Removing IDS flag in event '{}' on attr '{}'".format(mevent.id, attr["value"]))
changed = True
attr["to_ids"] = False
if changed:
mevent.add_tag(self.expiredTag)
res = self.misp.update_event(mevent.id, mevent)
def findEventsAfterRetention(self, events, retention):
for event in events["response"]:
ts = datetime.strptime(event["Event"]["date"], "%Y-%m-%d")
now = datetime.utcnow()
if retention[1] == "d":
delta = relativedelta(days=int(retention[0]))
elif retention[1] == "w":
delta = relativedelta(weeks=int(retention[0]))
elif retention[1] == "m":
delta = relativedelta(months=int(retention[0]))
elif retention[1] == "y":
delta = relativedelta(years=int(retention[0]))
if ts < (now - delta):
self.processEvent(event["Event"])
def queryRetentionTags(self):
res = self.misp.get_taxonomy_tags_list(self.taxonomyId)
for tag in res:
m = re.match(r"^retention:([0-9]+)([d,w,m,y])$", tag["tag"])
if m:
events = self.misp.search(published=True, tags=tag["tag"], not_tags=self.expiredTag)
self.findEventsAfterRetention(events, (m.group(1), m.group(2)))
else:
# set expiredTag to hidden if it was accidentally enabled by "enable all"
if tag["tag"] == self.expiredTag:
if tag["existing_tag"]["Tag"]["hide_tag"] is False:
self.misp.edit_tag(tag["existing_tag"]["Tag"]["id"], hide_tag=True)
else:
raise Exception("Could not parse retention time/unit from tag: '{}'.".format(tag["tag"]))
if __name__ == "__main__":
misp = misphelper()
misp.queryRetentionTags()