[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor-browser] 57/72: Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This is an automated email from the git hooks/post-receive script.
richard pushed a commit to branch tor-browser-91.11.0esr-11.5-1
in repository tor-browser.
commit 4c1df013d6a2c76a6e5887a51b7005f5e143e3e4
Author: Richard Pospesel <richard@xxxxxxxxxxxxxx>
AuthorDate: Mon Sep 16 15:25:39 2019 -0700
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#connection
This patch adds a new about:preferences#connection page which allows
modifying bridge, proxy, and firewall settings from within Tor Browser.
All of the functionality present in tor-launcher's Network
Configuration panel is present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
Bug 40774: Update about:preferences page to match new UI designs
---
browser/components/moz.build | 1 +
browser/components/preferences/main.inc.xhtml | 54 -
browser/components/preferences/main.js | 14 -
browser/components/preferences/preferences.js | 9 +
browser/components/preferences/preferences.xhtml | 6 +
.../torpreferences/content/bridgeQrDialog.jsm | 51 +
.../torpreferences/content/bridgeQrDialog.xhtml | 23 +
.../content/bridgemoji-annotations.json | 8774 ++++++++++++++++++++
.../torpreferences/content/bridgemoji/1f300.svg | 1 +
.../torpreferences/content/bridgemoji/1f308.svg | 1 +
.../torpreferences/content/bridgemoji/1f30a.svg | 1 +
.../torpreferences/content/bridgemoji/1f30b.svg | 1 +
.../torpreferences/content/bridgemoji/1f319.svg | 1 +
.../torpreferences/content/bridgemoji/1f31f.svg | 1 +
.../torpreferences/content/bridgemoji/1f321.svg | 1 +
.../torpreferences/content/bridgemoji/1f32d.svg | 1 +
.../torpreferences/content/bridgemoji/1f32e.svg | 1 +
.../torpreferences/content/bridgemoji/1f332.svg | 1 +
.../torpreferences/content/bridgemoji/1f333.svg | 1 +
.../torpreferences/content/bridgemoji/1f334.svg | 1 +
.../torpreferences/content/bridgemoji/1f335.svg | 1 +
.../torpreferences/content/bridgemoji/1f336.svg | 1 +
.../torpreferences/content/bridgemoji/1f337.svg | 1 +
.../torpreferences/content/bridgemoji/1f339.svg | 1 +
.../torpreferences/content/bridgemoji/1f33a.svg | 1 +
.../torpreferences/content/bridgemoji/1f33b.svg | 1 +
.../torpreferences/content/bridgemoji/1f33d.svg | 1 +
.../torpreferences/content/bridgemoji/1f33f.svg | 1 +
.../torpreferences/content/bridgemoji/1f341.svg | 1 +
.../torpreferences/content/bridgemoji/1f344.svg | 1 +
.../torpreferences/content/bridgemoji/1f345.svg | 1 +
.../torpreferences/content/bridgemoji/1f346.svg | 1 +
.../torpreferences/content/bridgemoji/1f347.svg | 1 +
.../torpreferences/content/bridgemoji/1f348.svg | 1 +
.../torpreferences/content/bridgemoji/1f349.svg | 1 +
.../torpreferences/content/bridgemoji/1f34a.svg | 1 +
.../torpreferences/content/bridgemoji/1f34b.svg | 1 +
.../torpreferences/content/bridgemoji/1f34c.svg | 1 +
.../torpreferences/content/bridgemoji/1f34d.svg | 1 +
.../torpreferences/content/bridgemoji/1f34f.svg | 1 +
.../torpreferences/content/bridgemoji/1f350.svg | 1 +
.../torpreferences/content/bridgemoji/1f351.svg | 1 +
.../torpreferences/content/bridgemoji/1f352.svg | 1 +
.../torpreferences/content/bridgemoji/1f353.svg | 1 +
.../torpreferences/content/bridgemoji/1f354.svg | 1 +
.../torpreferences/content/bridgemoji/1f355.svg | 1 +
.../torpreferences/content/bridgemoji/1f368.svg | 1 +
.../torpreferences/content/bridgemoji/1f369.svg | 1 +
.../torpreferences/content/bridgemoji/1f36a.svg | 1 +
.../torpreferences/content/bridgemoji/1f36b.svg | 1 +
.../torpreferences/content/bridgemoji/1f36c.svg | 1 +
.../torpreferences/content/bridgemoji/1f36d.svg | 1 +
.../torpreferences/content/bridgemoji/1f37f.svg | 1 +
.../torpreferences/content/bridgemoji/1f380.svg | 1 +
.../torpreferences/content/bridgemoji/1f381.svg | 1 +
.../torpreferences/content/bridgemoji/1f382.svg | 1 +
.../torpreferences/content/bridgemoji/1f383.svg | 1 +
.../torpreferences/content/bridgemoji/1f388.svg | 1 +
.../torpreferences/content/bridgemoji/1f389.svg | 1 +
.../torpreferences/content/bridgemoji/1f38f.svg | 1 +
.../torpreferences/content/bridgemoji/1f392.svg | 1 +
.../torpreferences/content/bridgemoji/1f399.svg | 1 +
.../torpreferences/content/bridgemoji/1f39f.svg | 1 +
.../torpreferences/content/bridgemoji/1f3a0.svg | 1 +
.../torpreferences/content/bridgemoji/1f3a1.svg | 1 +
.../torpreferences/content/bridgemoji/1f3a2.svg | 1 +
.../torpreferences/content/bridgemoji/1f3a8.svg | 1 +
.../torpreferences/content/bridgemoji/1f3ac.svg | 1 +
.../torpreferences/content/bridgemoji/1f3af.svg | 1 +
.../torpreferences/content/bridgemoji/1f3b2.svg | 1 +
.../torpreferences/content/bridgemoji/1f3b6.svg | 1 +
.../torpreferences/content/bridgemoji/1f3b7.svg | 1 +
.../torpreferences/content/bridgemoji/1f3b8.svg | 1 +
.../torpreferences/content/bridgemoji/1f3ba.svg | 1 +
.../torpreferences/content/bridgemoji/1f3bb.svg | 1 +
.../torpreferences/content/bridgemoji/1f3be.svg | 1 +
.../torpreferences/content/bridgemoji/1f3c0.svg | 1 +
.../torpreferences/content/bridgemoji/1f3c6.svg | 1 +
.../torpreferences/content/bridgemoji/1f3c8.svg | 1 +
.../torpreferences/content/bridgemoji/1f3d3.svg | 1 +
.../torpreferences/content/bridgemoji/1f3d4.svg | 1 +
.../torpreferences/content/bridgemoji/1f3d5.svg | 1 +
.../torpreferences/content/bridgemoji/1f3dd.svg | 1 +
.../torpreferences/content/bridgemoji/1f3e1.svg | 1 +
.../torpreferences/content/bridgemoji/1f3ee.svg | 1 +
.../torpreferences/content/bridgemoji/1f3f7.svg | 1 +
.../torpreferences/content/bridgemoji/1f3f8.svg | 1 +
.../torpreferences/content/bridgemoji/1f3f9.svg | 1 +
.../torpreferences/content/bridgemoji/1f40a.svg | 1 +
.../torpreferences/content/bridgemoji/1f40c.svg | 1 +
.../torpreferences/content/bridgemoji/1f40d.svg | 1 +
.../torpreferences/content/bridgemoji/1f417.svg | 1 +
.../torpreferences/content/bridgemoji/1f418.svg | 1 +
.../torpreferences/content/bridgemoji/1f419.svg | 1 +
.../torpreferences/content/bridgemoji/1f41a.svg | 1 +
.../torpreferences/content/bridgemoji/1f41b.svg | 1 +
.../torpreferences/content/bridgemoji/1f41d.svg | 1 +
.../torpreferences/content/bridgemoji/1f41e.svg | 1 +
.../torpreferences/content/bridgemoji/1f41f.svg | 1 +
.../torpreferences/content/bridgemoji/1f420.svg | 1 +
.../torpreferences/content/bridgemoji/1f422.svg | 1 +
.../torpreferences/content/bridgemoji/1f425.svg | 1 +
.../torpreferences/content/bridgemoji/1f426.svg | 1 +
.../torpreferences/content/bridgemoji/1f428.svg | 1 +
.../torpreferences/content/bridgemoji/1f42a.svg | 1 +
.../torpreferences/content/bridgemoji/1f42c.svg | 1 +
.../torpreferences/content/bridgemoji/1f42d.svg | 1 +
.../torpreferences/content/bridgemoji/1f42e.svg | 1 +
.../torpreferences/content/bridgemoji/1f42f.svg | 1 +
.../torpreferences/content/bridgemoji/1f430.svg | 1 +
.../torpreferences/content/bridgemoji/1f431.svg | 1 +
.../torpreferences/content/bridgemoji/1f432.svg | 1 +
.../torpreferences/content/bridgemoji/1f433.svg | 1 +
.../torpreferences/content/bridgemoji/1f434.svg | 1 +
.../torpreferences/content/bridgemoji/1f435.svg | 1 +
.../torpreferences/content/bridgemoji/1f436.svg | 1 +
.../torpreferences/content/bridgemoji/1f437.svg | 1 +
.../torpreferences/content/bridgemoji/1f43a.svg | 1 +
.../torpreferences/content/bridgemoji/1f43b.svg | 1 +
.../torpreferences/content/bridgemoji/1f43f.svg | 1 +
.../torpreferences/content/bridgemoji/1f441.svg | 1 +
.../torpreferences/content/bridgemoji/1f451.svg | 1 +
.../torpreferences/content/bridgemoji/1f455.svg | 1 +
.../torpreferences/content/bridgemoji/1f457.svg | 1 +
.../torpreferences/content/bridgemoji/1f45f.svg | 1 +
.../torpreferences/content/bridgemoji/1f47d.svg | 1 +
.../torpreferences/content/bridgemoji/1f484.svg | 1 +
.../torpreferences/content/bridgemoji/1f488.svg | 1 +
.../torpreferences/content/bridgemoji/1f48d.svg | 1 +
.../torpreferences/content/bridgemoji/1f48e.svg | 1 +
.../torpreferences/content/bridgemoji/1f490.svg | 1 +
.../torpreferences/content/bridgemoji/1f4a1.svg | 1 +
.../torpreferences/content/bridgemoji/1f4a7.svg | 1 +
.../torpreferences/content/bridgemoji/1f4b3.svg | 1 +
.../torpreferences/content/bridgemoji/1f4bf.svg | 1 +
.../torpreferences/content/bridgemoji/1f4cc.svg | 1 +
.../torpreferences/content/bridgemoji/1f4ce.svg | 1 +
.../torpreferences/content/bridgemoji/1f4d5.svg | 1 +
.../torpreferences/content/bridgemoji/1f4e1.svg | 1 +
.../torpreferences/content/bridgemoji/1f4e2.svg | 1 +
.../torpreferences/content/bridgemoji/1f4fb.svg | 1 +
.../torpreferences/content/bridgemoji/1f50b.svg | 1 +
.../torpreferences/content/bridgemoji/1f511.svg | 1 +
.../torpreferences/content/bridgemoji/1f525.svg | 1 +
.../torpreferences/content/bridgemoji/1f526.svg | 1 +
.../torpreferences/content/bridgemoji/1f52c.svg | 1 +
.../torpreferences/content/bridgemoji/1f52d.svg | 1 +
.../torpreferences/content/bridgemoji/1f52e.svg | 1 +
.../torpreferences/content/bridgemoji/1f54a.svg | 1 +
.../torpreferences/content/bridgemoji/1f58c.svg | 1 +
.../torpreferences/content/bridgemoji/1f58d.svg | 1 +
.../torpreferences/content/bridgemoji/1f5ff.svg | 1 +
.../torpreferences/content/bridgemoji/1f680.svg | 1 +
.../torpreferences/content/bridgemoji/1f681.svg | 1 +
.../torpreferences/content/bridgemoji/1f686.svg | 1 +
.../torpreferences/content/bridgemoji/1f68b.svg | 1 +
.../torpreferences/content/bridgemoji/1f68d.svg | 1 +
.../torpreferences/content/bridgemoji/1f695.svg | 1 +
.../torpreferences/content/bridgemoji/1f697.svg | 1 +
.../torpreferences/content/bridgemoji/1f69a.svg | 1 +
.../torpreferences/content/bridgemoji/1f69c.svg | 1 +
.../torpreferences/content/bridgemoji/1f6a0.svg | 1 +
.../torpreferences/content/bridgemoji/1f6a2.svg | 1 +
.../torpreferences/content/bridgemoji/1f6a4.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f0.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f4.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f5.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f6.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f8.svg | 1 +
.../torpreferences/content/bridgemoji/1f6f9.svg | 1 +
.../torpreferences/content/bridgemoji/1f6fa.svg | 1 +
.../torpreferences/content/bridgemoji/1f6fc.svg | 1 +
.../torpreferences/content/bridgemoji/1f916.svg | 1 +
.../torpreferences/content/bridgemoji/1f93f.svg | 1 +
.../torpreferences/content/bridgemoji/1f941.svg | 1 +
.../torpreferences/content/bridgemoji/1f94c.svg | 1 +
.../torpreferences/content/bridgemoji/1f94f.svg | 1 +
.../torpreferences/content/bridgemoji/1f950.svg | 1 +
.../torpreferences/content/bridgemoji/1f951.svg | 1 +
.../torpreferences/content/bridgemoji/1f955.svg | 1 +
.../torpreferences/content/bridgemoji/1f956.svg | 1 +
.../torpreferences/content/bridgemoji/1f95c.svg | 1 +
.../torpreferences/content/bridgemoji/1f95d.svg | 1 +
.../torpreferences/content/bridgemoji/1f95e.svg | 1 +
.../torpreferences/content/bridgemoji/1f965.svg | 1 +
.../torpreferences/content/bridgemoji/1f966.svg | 1 +
.../torpreferences/content/bridgemoji/1f968.svg | 1 +
.../torpreferences/content/bridgemoji/1f96c.svg | 1 +
.../torpreferences/content/bridgemoji/1f96d.svg | 1 +
.../torpreferences/content/bridgemoji/1f96f.svg | 1 +
.../torpreferences/content/bridgemoji/1f980.svg | 1 +
.../torpreferences/content/bridgemoji/1f981.svg | 1 +
.../torpreferences/content/bridgemoji/1f984.svg | 1 +
.../torpreferences/content/bridgemoji/1f986.svg | 1 +
.../torpreferences/content/bridgemoji/1f987.svg | 1 +
.../torpreferences/content/bridgemoji/1f988.svg | 1 +
.../torpreferences/content/bridgemoji/1f989.svg | 1 +
.../torpreferences/content/bridgemoji/1f98a.svg | 1 +
.../torpreferences/content/bridgemoji/1f98b.svg | 1 +
.../torpreferences/content/bridgemoji/1f98c.svg | 1 +
.../torpreferences/content/bridgemoji/1f98e.svg | 1 +
.../torpreferences/content/bridgemoji/1f98f.svg | 1 +
.../torpreferences/content/bridgemoji/1f992.svg | 1 +
.../torpreferences/content/bridgemoji/1f993.svg | 1 +
.../torpreferences/content/bridgemoji/1f994.svg | 1 +
.../torpreferences/content/bridgemoji/1f995.svg | 1 +
.../torpreferences/content/bridgemoji/1f998.svg | 1 +
.../torpreferences/content/bridgemoji/1f999.svg | 1 +
.../torpreferences/content/bridgemoji/1f99a.svg | 1 +
.../torpreferences/content/bridgemoji/1f99c.svg | 1 +
.../torpreferences/content/bridgemoji/1f99d.svg | 1 +
.../torpreferences/content/bridgemoji/1f99e.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a3.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a4.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a5.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a6.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a7.svg | 1 +
.../torpreferences/content/bridgemoji/1f9a9.svg | 1 +
.../torpreferences/content/bridgemoji/1f9ad.svg | 1 +
.../torpreferences/content/bridgemoji/1f9c1.svg | 1 +
.../torpreferences/content/bridgemoji/1f9c3.svg | 1 +
.../torpreferences/content/bridgemoji/1f9c5.svg | 1 +
.../torpreferences/content/bridgemoji/1f9c7.svg | 1 +
.../torpreferences/content/bridgemoji/1f9c9.svg | 1 +
.../torpreferences/content/bridgemoji/1f9d9.svg | 1 +
.../torpreferences/content/bridgemoji/1f9da.svg | 1 +
.../torpreferences/content/bridgemoji/1f9dc.svg | 1 +
.../torpreferences/content/bridgemoji/1f9e0.svg | 1 +
.../torpreferences/content/bridgemoji/1f9e2.svg | 1 +
.../torpreferences/content/bridgemoji/1f9e6.svg | 1 +
.../torpreferences/content/bridgemoji/1f9e9.svg | 1 +
.../torpreferences/content/bridgemoji/1f9ea.svg | 1 +
.../torpreferences/content/bridgemoji/1f9ec.svg | 1 +
.../torpreferences/content/bridgemoji/1f9ed.svg | 1 +
.../torpreferences/content/bridgemoji/1f9ee.svg | 1 +
.../torpreferences/content/bridgemoji/1f9f2.svg | 1 +
.../torpreferences/content/bridgemoji/1f9f5.svg | 1 +
.../torpreferences/content/bridgemoji/1f9f9.svg | 1 +
.../torpreferences/content/bridgemoji/1fa73.svg | 1 +
.../torpreferences/content/bridgemoji/1fa80.svg | 1 +
.../torpreferences/content/bridgemoji/1fa81.svg | 1 +
.../torpreferences/content/bridgemoji/1fa83.svg | 1 +
.../torpreferences/content/bridgemoji/1fa90.svg | 1 +
.../torpreferences/content/bridgemoji/1fa91.svg | 1 +
.../torpreferences/content/bridgemoji/1fa95.svg | 1 +
.../torpreferences/content/bridgemoji/1fa97.svg | 1 +
.../torpreferences/content/bridgemoji/1fab6.svg | 1 +
.../torpreferences/content/bridgemoji/1fad0.svg | 1 +
.../torpreferences/content/bridgemoji/1fad2.svg | 1 +
.../torpreferences/content/bridgemoji/1fad6.svg | 1 +
.../torpreferences/content/bridgemoji/23f0.svg | 1 +
.../torpreferences/content/bridgemoji/2600.svg | 1 +
.../torpreferences/content/bridgemoji/2602.svg | 1 +
.../torpreferences/content/bridgemoji/2604.svg | 1 +
.../torpreferences/content/bridgemoji/260e.svg | 1 +
.../torpreferences/content/bridgemoji/2693.svg | 1 +
.../torpreferences/content/bridgemoji/2696.svg | 1 +
.../torpreferences/content/bridgemoji/26bd.svg | 1 +
.../torpreferences/content/bridgemoji/26f2.svg | 1 +
.../torpreferences/content/bridgemoji/26f5.svg | 1 +
.../torpreferences/content/bridgemoji/2708.svg | 1 +
.../torpreferences/content/bridgemoji/270f.svg | 1 +
.../torpreferences/content/bridgemoji/2728.svg | 1 +
.../torpreferences/content/bridgemoji/2744.svg | 1 +
.../torpreferences/content/builtinBridgeDialog.jsm | 120 +
.../content/builtinBridgeDialog.xhtml | 31 +
.../content/connectionCategory.inc.xhtml | 9 +
.../torpreferences/content/connectionPane.js | 1150 +++
.../torpreferences/content/connectionPane.xhtml | 195 +
.../content/connectionSettingsDialog.jsm | 397 +
.../content/connectionSettingsDialog.xhtml | 60 +
.../components/torpreferences/content/network.svg | 6 +
.../torpreferences/content/provideBridgeDialog.jsm | 75 +
.../content/provideBridgeDialog.xhtml | 21 +
.../torpreferences/content/requestBridgeDialog.jsm | 211 +
.../content/requestBridgeDialog.xhtml | 35 +
.../torpreferences/content/torLogDialog.jsm | 84 +
.../torpreferences/content/torLogDialog.xhtml | 23 +
.../torpreferences/content/torPreferences.css | 684 ++
.../torpreferences/content/torPreferencesIcon.svg | 8 +
browser/components/torpreferences/jar.mn | 21 +
browser/components/torpreferences/moz.build | 1 +
tools/torbrowser/update_bridgemoiji.py | 114 +
283 files changed, 12365 insertions(+), 68 deletions(-)
diff --git a/browser/components/moz.build b/browser/components/moz.build
index 1bc09f4093fb7..66de87290bd83 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -53,6 +53,7 @@ DIRS += [
"syncedtabs",
"uitour",
"urlbar",
+ "torpreferences",
"translation",
]
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index a89b89f723a80..594711e614747 100644
--- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml
@@ -671,58 +671,4 @@
<label id="cfrFeaturesLearnMore" class="learnMore" data-l10n-id="browsing-cfr-recommendations-learn-more" is="text-link"/>
</hbox>
</groupbox>
-
-<hbox id="networkProxyCategory"
- class="subcategory"
- hidden="true"
- data-category="paneGeneral">
- <html:h1 data-l10n-id="network-settings-title"/>
-</hbox>
-
-<!-- Network Settings-->
-<groupbox id="connectionGroup" data-category="paneGeneral" hidden="true">
- <label class="search-header" hidden="true"><html:h2 data-l10n-id="network-settings-title"/></label>
-
- <hbox align="center">
- <hbox align="center" flex="1">
- <description id="connectionSettingsDescription" control="connectionSettings"/>
- <spacer width="5"/>
- <label id="connectionSettingsLearnMore" class="learnMore" is="text-link"
- data-l10n-id="network-proxy-connection-learn-more">
- </label>
- <separator orient="vertical"/>
- </hbox>
-
- <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
- <hbox>
- <button id="connectionSettings"
- is="highlightable-button"
- class="accessory-button"
- data-l10n-id="network-proxy-connection-settings"
- searchkeywords="doh trr"
- search-l10n-ids="
- connection-window.title,
- connection-proxy-option-no.label,
- connection-proxy-option-auto.label,
- connection-proxy-option-system.label,
- connection-proxy-option-manual.label,
- connection-proxy-http,
- connection-proxy-https,
- connection-proxy-http-port,
- connection-proxy-socks,
- connection-proxy-socks4,
- connection-proxy-socks5,
- connection-proxy-noproxy,
- connection-proxy-noproxy-desc,
- connection-proxy-https-sharing.label,
- connection-proxy-autotype.label,
- connection-proxy-reload.label,
- connection-proxy-autologin.label,
- connection-proxy-socks-remote-dns.label,
- connection-dns-over-https.label,
- connection-dns-over-https-url-custom.label,
- " />
- </hbox>
- </hbox>
-</groupbox>
</html:template>
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 2a6ba4a3d8e42..501ba9144a314 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -368,15 +368,6 @@ var gMainPane = {
});
this.updatePerformanceSettingsBox({ duringChangeEvent: false });
this.displayUseSystemLocale();
- let connectionSettingsLink = document.getElementById(
- "connectionSettingsLearnMore"
- );
- let connectionSettingsUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
- "prefs-connection-settings";
- connectionSettingsLink.setAttribute("href", connectionSettingsUrl);
- this.updateProxySettingsUI();
- initializeProxyUI(gMainPane);
if (Services.prefs.getBoolPref("intl.multilingual.enabled")) {
gMainPane.initBrowserLocale();
@@ -510,11 +501,6 @@ var gMainPane = {
"change",
gMainPane.updateHardwareAcceleration.bind(gMainPane)
);
- setEventListener(
- "connectionSettings",
- "command",
- gMainPane.showConnections
- );
setEventListener(
"browserContainersCheckbox",
"command",
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index a3656f827ffc6..5981bcd38fc83 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -13,6 +13,7 @@
/* import-globals-from findInPage.js */
/* import-globals-from ../../base/content/utilityOverlay.js */
/* import-globals-from ../../../toolkit/content/preferencesBindings.js */
+/* import-globals-from ../torpreferences/content/connectionPane.js */
"use strict";
@@ -136,6 +137,14 @@ function init_all() {
register_module("paneSync", gSyncPane);
}
register_module("paneSearchResults", gSearchResultsPane);
+ if (gConnectionPane.enabled) {
+ document.getElementById("category-connection").hidden = false;
+ register_module("paneConnection", gConnectionPane);
+ } else {
+ // Remove the pane from the DOM so it doesn't get incorrectly included in search results.
+ document.getElementById("template-paneConnection").remove();
+ }
+
gSearchResultsPane.init();
gMainPane.preInit();
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 32184867ac179..9ee09581de32a 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -6,12 +6,14 @@
<?xml-stylesheet href="chrome://global/skin/global.css"?>
<?xml-stylesheet href="chrome://global/skin/in-content/common.css"?>
+<?xml-stylesheet href="chrome://global/skin/in-content/toggle-button.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
<?xml-stylesheet href="chrome://browser/content/preferences/dialogs/handlers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/applications.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
<!DOCTYPE html [
<!ENTITY % aboutTorDTD SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
@@ -154,6 +156,9 @@
<image class="category-icon"/>
<label class="category-name" flex="1" data-l10n-id="pane-experimental-title"></label>
</richlistitem>
+
+#include ../torpreferences/content/connectionCategory.inc.xhtml
+
</richlistbox>
<spacer flex="1"/>
@@ -207,6 +212,7 @@
#include containers.inc.xhtml
#include sync.inc.xhtml
#include experimental.inc.xhtml
+#include ../torpreferences/content/connectionPane.xhtml
</vbox>
</vbox>
</vbox>
diff --git a/browser/components/torpreferences/content/bridgeQrDialog.jsm b/browser/components/torpreferences/content/bridgeQrDialog.jsm
new file mode 100644
index 0000000000000..e63347742ea50
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgeQrDialog.jsm
@@ -0,0 +1,51 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["BridgeQrDialog"];
+
+const { QRCode } = ChromeUtils.import("resource://gre/modules/QRCode.jsm");
+
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class BridgeQrDialog {
+ constructor() {
+ this._bridgeString = "";
+ }
+
+ static get selectors() {
+ return {
+ target: "#bridgeQr-target",
+ };
+ }
+
+ _populateXUL(window, dialog) {
+ dialog.parentElement.setAttribute("title", TorStrings.settings.scanQrTitle);
+ const target = dialog.querySelector(BridgeQrDialog.selectors.target);
+ const style = window.getComputedStyle(target);
+ const width = style.width.substr(0, style.width.length - 2);
+ const height = style.height.substr(0, style.height.length - 2);
+ new QRCode(target, {
+ text: this._bridgeString,
+ width,
+ height,
+ colorDark: style.color,
+ colorLight: style.backgroundColor,
+ document: window.document,
+ });
+ }
+
+ init(window, dialog) {
+ // Defer to later until Firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(window, dialog);
+ }, 0);
+ }
+
+ openDialog(gSubDialog, bridgeString) {
+ this._bridgeString = bridgeString;
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/bridgeQrDialog.xhtml",
+ { features: "resizable=yes" },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/bridgeQrDialog.xhtml b/browser/components/torpreferences/content/bridgeQrDialog.xhtml
new file mode 100644
index 0000000000000..2a49e4c0e7d9e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgeQrDialog.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="bridgeQr-dialog" buttons="accept">
+ <html:div id="bridgeQr-container">
+ <html:div id="bridgeQr-target"/>
+ <html:div id="bridgeQr-onionBox"/>
+ <html:div id="bridgeQr-onion"/>
+ </html:div>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let dialogObject = window.arguments[0];
+ let dialogElement = document.getElementById("bridgeQr-dialog");
+ dialogObject.init(window, dialogElement);
+ ]]></script>
+</dialog>
+</window>
diff --git a/browser/components/torpreferences/content/bridgemoji-annotations.json b/browser/components/torpreferences/content/bridgemoji-annotations.json
new file mode 100644
index 0000000000000..2099a47276c11
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji-annotations.json
@@ -0,0 +1,8774 @@
+{
+ "ar": {
+ "👽️": "كائن فضائي",
+ "🤖": "وجه روبوت",
+ "🧠": "دماغ",
+ "👁️": "عين",
+ "🧙": "سحرة",
+ "🧚": "جنيّة خيالية",
+ "🧜": "مخلوق بحري بجسد بشري وذيل سمكة",
+ "🐵": "وجه قرد",
+ "🦧": "إنسان الغاب",
+ "🐶": "وجه كلب",
+ "🐺": "وجه ذئب",
+ "🦊": "وجه ثعلب",
+ "🦝": "راكون",
+ "🐱": "وجه قطة",
+ "🦁": "وجه أسد",
+ "🐯": "وجه نمر",
+ "🐴": "وجه حصان",
+ "🦄": "وجه أحادي قرن",
+ "🦓": "حمار وحشي",
+ "🦌": "غزال",
+ "🐮": "وجه بقرة",
+ "🐷": "وجه خنزير",
+ "🐗": "خنزير بري",
+ "🐪": "جمل وحيد السنام",
+ "🦙": "لاما",
+ "🦒": "زرافة",
+ "🐘": "فيل",
+ "🦣": "ماموث",
+ "🦏": "وحيد القرن",
+ "🐭": "وجه فأر",
+ "🐰": "وجه أرنب",
+ "🐿️": "سنجاب",
+ "🦔": "قنفد",
+ "🦇": "خفاش",
+ "🐻": "وجه دب",
+ "🐨": "دب كوالا",
+ "🦥": "كسلان",
+ "🦦": "قندس",
+ "🦘": "كنغر",
+ "🐥": "كتكوت صغير بوجه للأمام",
+ "🐦️": "طائر",
+ "🕊️": "حمامة",
+ "🦆": "بطة",
+ "🦉": "بومة",
+ "🦤": "طائر الدودو",
+ "🪶": "ريشة",
+ "🦩": "فلامينغو",
+ "🦚": "طاووس",
+ "🦜": "ببغاء",
+ "🐊": "تمساح",
+ "🐢": "سلحفاة",
+ "🦎": "سحلية",
+ "🐍": "ثعبان",
+ "🐲": "وجه تنين",
+ "🦕": "ديناصور صوروبودا",
+ "🐳": "حوت بنافورة",
+ "🐬": "دولفين",
+ "🦭": "فقمة",
+ "🐟️": "سمكة",
+ "🐠": "سمكة استوائية",
+ "🦈": "سمكة قرش",
+ "🐙": "أخطبوط",
+ "🐚": "صدفة حلزونية",
+ "🐌": "حلزون",
+ "🦋": "فراشة",
+ "🐛": "بق",
+ "🐝": "نحلة",
+ "🐞": "دعسوقة",
+ "💐": "باقة زهور",
+ "🌹": "وردة",
+ "🌺": "كركديه",
+ "🌻": "دوار الشمس",
+ "🌷": "زهرة التوليب",
+ "🌲": "شجرة دائمة الخضرة",
+ "🌳": "شجرة زائلة الخضرة",
+ "🌴": "نخلة",
+ "🌵": "صبار",
+ "🌿": "عشب",
+ "🍁": "ورقة شجر القيقب",
+ "🍇": "عنب",
+ "🍈": "شمام",
+ "🍉": "بطيخ",
+ "🍊": "يوسفي",
+ "🍋": "ليمون",
+ "🍌": "موز",
+ "🍍": "أناناس",
+ "🥭": "مانجو",
+ "🍏": "تفاح أخضر",
+ "🍐": "كمثرى",
+ "🍑": "خوخ",
+ "🍒": "كرز",
+ "🍓": "فراولة",
+ "🫐": "توت برّي",
+ "🥝": "كيوي",
+ "🍅": "طماطم",
+ "🫒": "زيتون",
+ "🥥": "جوز الهند",
+ "🥑": "أفوكادو",
+ "🍆": "باذنجان",
+ "🥕": "جزر",
+ "🌽": "ذرة",
+ "🌶️": "فلفل حار",
+ "🥬": "خضار ورقي",
+ "🥦": "بروكولي",
+ "🧅": "بصل",
+ "🍄": "عيش الغراب",
+ "🥜": "فول سوداني",
+ "🥐": "كرواسون",
+ "🥖": "الخبز الفرنسي",
+ "🥨": "بريتزل",
+ "🥯": "خبز البيغل",
+ "🥞": "فطائر",
+ "🧇": "وافل",
+ "🍔": "همبرغر",
+ "🍕": "بيتزا",
+ "🌭": "هوت دوغ",
+ "🌮": "تاكو",
+ "🍿": "فشار",
+ "🦀": "سرطان",
+ "🦞": "كركند",
+ "🍨": "آيس كريم",
+ "🍩": "كعكة محلاة",
+ "🍪": "كعكة",
+ "🎂": "كعكة عيد ميلاد",
+ "🧁": "كعكة صغيرة",
+ "🍫": "لوح شوكولاتة",
+ "🍬": "حلوى",
+ "🍭": "مصاصة",
+ "🫖": "إبريق شاي",
+ "🧃": "علبة عصير",
+ "🧉": "متة",
+ "🧭": "بوصلة",
+ "🏔️": "جبل بقمة ثلجية",
+ "🌋": "بركان",
+ "🏕️": "تخييم",
+ "🏝️": "جزيرة صحراوية",
+ "🏡": "منزل بحديقة",
+ "⛲️": "نافورة",
+ "🎠": "حصان الدوامة",
+ "🎡": "عجلة دوارة",
+ "🎢": "قطار ملاهي",
+ "💈": "محل حلاقة",
+ "🚆": "قطار",
+ "🚋": "سيارة ترام",
+ "🚍️": "حافلة مقتربة",
+ "🚕": "تاكسي",
+ "🚗": "سيارة",
+ "🚚": "شاحنة توصيل طلبات",
+ "🚜": "جرار",
+ "🛵": "سكوتر بمحرك",
+ "🛺": "توكتوك",
+ "🛴": "سكوتر بدون محرك",
+ "🛹": "لوح التزلج",
+ "🛼": "حذاء مع عجلات",
+ "⚓️": "مرساة",
+ "⛵️": "مركب شراعي",
+ "🛶": "زورق",
+ "🚤": "قارب سريع",
+ "🚢": "سفينة",
+ "✈️": "طائرة",
+ "🚁": "هليكوبتر",
+ "🚠": "قطار جبلي",
+ "🛰️": "قمر صناعي",
+ "🚀": "صاروخ",
+ "🛸": "صحن طائر",
+ "⏰": "ساعة منبه",
+ "🌙": "هلال",
+ "🌡️": "ترمومتر",
+ "☀️": "شمس",
+ "🪐": "كوكب داخل حلقة",
+ "🌟": "نجم ساطع",
+ "🌀": "عاصفة",
+ "🌈": "ألوان الطيف",
+ "☂️": "شمسية",
+ "❄️": "كتلة ثلج",
+ "☄️": "مذنّب",
+ "🔥": "حريق",
+ "💧": "قطرة",
+ "🌊": "موجة",
+ "🎃": "هالوين",
+ "✨": "ومضات",
+ "🎈": "بالون",
+ "🎉": "فرقعة حفلة",
+ "🎏": "قصاصات ملونة",
+ "🎀": "شريط",
+ "🎁": "هدية ملفوفة",
+ "🎟️": "تذكرتا دخول",
+ "🏆️": "كأس",
+ "⚽️": "كرة قدم",
+ "🏀": "كرة سلة",
+ "🏈": "كرة قدم أمريكية",
+ "🎾": "تنس",
+ "🥏": "قرص طائر",
+ "🏓": "تنس الطاولة",
+ "🏸": "تنس الريشة",
+ "🤿": "قناع غطس",
+ "🥌": "حجرة لعبة الكرلنغ",
+ "🎯": "نشان",
+ "🪀": "يويو",
+ "🪁": "طائرة ورقية",
+ "🔮": "كرة كريستال",
+ "🎲": "زهر",
+ "🧩": "أحجية الصور المقطوعة",
+ "🎨": "لوحة ألوان الرسام",
+ "🧵": "بكرة خيط",
+ "👕": "تي شيرت",
+ "🧦": "جورب",
+ "👗": "فستان",
+ "🩳": "شورت",
+ "🎒": "حقيبة مدرسة",
+ "👟": "حذاء رياضي",
+ "👑": "تاج",
+ "🧢": "قبعة رياضية",
+ "💄": "أحمر شفاه",
+ "💍": "خاتم",
+ "💎": "جوهرة",
+ "📢": "مكبر صوت",
+ "🎶": "نوتات موسيقية",
+ "🎙️": "ميكروفون استوديو",
+ "📻️": "راديو",
+ "🎷": "ساكسفون",
+ "🪗": "أكورديون",
+ "🎸": "غيتار",
+ "🎺": "آلة نفخ",
+ "🎻": "كمان",
+ "🪕": "آلة بانجو",
+ "🥁": "طبلة",
+ "☎️": "هاتف أرضي",
+ "🔋": "بطارية",
+ "💿️": "سي دي",
+ "🧮": "معداد",
+ "🎬️": "كلاكيت",
+ "💡": "مصباح مضاء",
+ "🔦": "ضوء فلاش",
+ "🏮": "فانوس بورق أحمر",
+ "📕": "كتاب مغلق",
+ "🏷️": "ملصق",
+ "💳️": "بطاقة ائتمان",
+ "✏️": "قلم رصاص",
+ "🖌️": "فرشاة ألوان",
+ "🖍️": "قلم شمع ملون",
+ "📌": "دبوس ضغط",
+ "📎": "مشبك ورق",
+ "🔑": "مفتاح",
+ "🪃": "خذوف مرتد",
+ "🏹": "قوس وسهم",
+ "⚖️": "ميزان",
+ "🧲": "مغناطيس",
+ "🧪": "أنبوب اختبار",
+ "🧬": "الحامض النووي",
+ "🔬": "ميكروسكوب",
+ "🔭": "تليسكوب",
+ "📡": "طبق قمر صناعي",
+ "🪑": "كرسي",
+ "🧹": "مكنسة",
+ "🗿": "تمثال"
+ },
+ "ca": {
+ "👽️": "alienígena",
+ "🤖": "robot",
+ "🧠": "cervell",
+ "👁️": "ull",
+ "🧙": "mag",
+ "🧚": "fada",
+ "🧜": "persona sirena",
+ "🐵": "cara de mona",
+ "🦧": "orangutan",
+ "🐶": "cara de gos",
+ "🐺": "llop",
+ "🦊": "guineu",
+ "🦝": "os rentador",
+ "🐱": "cara de gat",
+ "🦁": "cara de lleó",
+ "🐯": "cara de tigre",
+ "🐴": "cara de cavall",
+ "🦄": "unicorn",
+ "🦓": "zebra",
+ "🦌": "cérvol",
+ "🐮": "cara de vaca",
+ "🐷": "cara de porc",
+ "🐗": "senglar",
+ "🐪": "dromedari",
+ "🦙": "llama",
+ "🦒": "girafa",
+ "🐘": "elefant",
+ "🦣": "mamut",
+ "🦏": "rinoceront",
+ "🐭": "cara de ratolí",
+ "🐰": "cara de conill",
+ "🐿️": "esquirol",
+ "🦔": "eriçó",
+ "🦇": "ratapinyada",
+ "🐻": "cara d’os",
+ "🐨": "coala",
+ "🦥": "peresós",
+ "🦦": "llúdria",
+ "🦘": "cangur",
+ "🐥": "pollet de cara",
+ "🐦️": "ocell",
+ "🕊️": "colom",
+ "🦆": "ànec",
+ "🦉": "mussol",
+ "🦤": "dodo",
+ "🪶": "ploma",
+ "🦩": "flamenc",
+ "🦚": "paó",
+ "🦜": "lloro",
+ "🐊": "cocodril",
+ "🐢": "tortuga",
+ "🦎": "llangardaix",
+ "🐍": "serp",
+ "🐲": "cara de drac",
+ "🦕": "sauròpode",
+ "🐳": "balena que treu aigua",
+ "🐬": "dofí",
+ "🦭": "foca",
+ "🐟️": "peix",
+ "🐠": "peix tropical",
+ "🦈": "tauró",
+ "🐙": "pop",
+ "🐚": "cargol de mar",
+ "🐌": "cargol",
+ "🦋": "papallona",
+ "🐛": "eruga",
+ "🐝": "abella",
+ "🐞": "marieta",
+ "💐": "ram de flors",
+ "🌹": "rosa",
+ "🌺": "hibisc",
+ "🌻": "gira-sol",
+ "🌷": "tulipa",
+ "🌲": "arbre de fulla perenne",
+ "🌳": "arbre de fulla caduca",
+ "🌴": "palmera",
+ "🌵": "cactus",
+ "🌿": "herba",
+ "🍁": "fulla d’auró",
+ "🍇": "raïm",
+ "🍈": "meló",
+ "🍉": "síndria",
+ "🍊": "mandarina",
+ "🍋": "llimona",
+ "🍌": "plàtan",
+ "🍍": "pinya",
+ "🥭": "mango",
+ "🍏": "poma verda",
+ "🍐": "pera",
+ "🍑": "préssec",
+ "🍒": "cireres",
+ "🍓": "maduixa",
+ "🫐": "nabius",
+ "🥝": "kiwi",
+ "🍅": "tomàquet",
+ "🫒": "oliva",
+ "🥥": "coco",
+ "🥑": "alvocat",
+ "🍆": "albergínia",
+ "🥕": "pastanaga",
+ "🌽": "panotxa",
+ "🌶️": "bitxo",
+ "🥬": "fulla verda",
+ "🥦": "bròcoli",
+ "🧅": "ceba",
+ "🍄": "bolet",
+ "🥜": "cacauets",
+ "🥐": "croissant",
+ "🥖": "baguet",
+ "🥨": "brètzel",
+ "🥯": "bagel",
+ "🥞": "creps americanes",
+ "🧇": "gofra",
+ "🍔": "hamburguesa",
+ "🍕": "pizza",
+ "🌭": "frankfurt",
+ "🌮": "taco",
+ "🍿": "crispetes",
+ "🦀": "cranc",
+ "🦞": "llagosta",
+ "🍨": "gelat",
+ "🍩": "dònut",
+ "🍪": "galeta",
+ "🎂": "pastís d’aniversari",
+ "🧁": "cupcake",
+ "🍫": "rajola de xocolata",
+ "🍬": "caramel",
+ "🍭": "piruleta",
+ "🫖": "tetera",
+ "🧃": "bric",
+ "🧉": "mate",
+ "🧭": "brúixola",
+ "🏔️": "muntanya amb neu al cim",
+ "🌋": "volcà",
+ "🏕️": "acampada",
+ "🏝️": "illa deserta",
+ "🏡": "casa amb jardí",
+ "⛲️": "font",
+ "🎠": "cavallets",
+ "🎡": "roda de fira",
+ "🎢": "muntanya russa",
+ "💈": "barberia",
+ "🚆": "tren",
+ "🚋": "vagó de tramvia",
+ "🚍️": "autobús que arriba",
+ "🚕": "taxi",
+ "🚗": "automòbil",
+ "🚚": "camió de repartiment",
+ "🚜": "tractor",
+ "🛵": "escúter",
+ "🛺": "bicitaxi amb motor",
+ "🛴": "patinet",
+ "🛹": "monopatí",
+ "🛼": "patí de rodes",
+ "⚓️": "àncora",
+ "⛵️": "veler",
+ "🛶": "canoa",
+ "🚤": "llanxa ràpida",
+ "🚢": "vaixell",
+ "✈️": "avió",
+ "🚁": "helicòpter",
+ "🚠": "telefèric de muntanya",
+ "🛰️": "satèl·lit",
+ "🚀": "coet",
+ "🛸": "plat volador",
+ "⏰": "despertador",
+ "🌙": "lluna creixent",
+ "🌡️": "termòmetre",
+ "☀️": "sol",
+ "🪐": "planeta amb anell",
+ "🌟": "estrella brillant",
+ "🌀": "cicló",
+ "🌈": "arc de Sant Martí",
+ "☂️": "paraigua",
+ "❄️": "floc de neu",
+ "☄️": "cometa",
+ "🔥": "foc",
+ "💧": "gota",
+ "🌊": "onada",
+ "🎃": "carabassa de Halloween",
+ "✨": "espurnes",
+ "🎈": "globus",
+ "🎉": "tub de confeti",
+ "🎏": "banderins de carpes",
+ "🎀": "llaç",
+ "🎁": "regal embolicat",
+ "🎟️": "bitllet d’entrada",
+ "🏆️": "trofeu",
+ "⚽️": "pilota de futbol",
+ "🏀": "pilota de bàsquet",
+ "🏈": "pilota de futbol americà",
+ "🎾": "tennis",
+ "🥏": "disc volador",
+ "🏓": "tennis de taula",
+ "🏸": "bàdminton",
+ "🤿": "ulleres de busseig",
+ "🥌": "pedra de cúrling",
+ "🎯": "dards",
+ "🪀": "io-io",
+ "🪁": "estel",
+ "🔮": "bola de vidre",
+ "🎲": "daus",
+ "🧩": "peces de trencaclosques",
+ "🎨": "paleta d’artista",
+ "🧵": "fil",
+ "👕": "samarreta",
+ "🧦": "mitjons",
+ "👗": "vestit",
+ "🩳": "pantalons curts",
+ "🎒": "motxilla d’escola",
+ "👟": "sabatilla de córrer",
+ "👑": "corona",
+ "🧢": "gorra",
+ "💄": "pintallavis",
+ "💍": "anell",
+ "💎": "gemma",
+ "📢": "altaveu de megafonia",
+ "🎶": "notes musicals",
+ "🎙️": "micròfon d’estudi",
+ "📻️": "ràdio",
+ "🎷": "saxofon",
+ "🪗": "acordió",
+ "🎸": "guitarra",
+ "🎺": "trompeta",
+ "🎻": "violí",
+ "🪕": "banjo",
+ "🥁": "tambor",
+ "☎️": "telèfon",
+ "🔋": "bateria",
+ "💿️": "disc òptic",
+ "🧮": "àbac",
+ "🎬️": "claqueta",
+ "💡": "bombeta",
+ "🔦": "llanterna",
+ "🏮": "fanal de paper vermell",
+ "📕": "llibre tancat",
+ "🏷️": "etiqueta",
+ "💳️": "targeta de crèdit",
+ "✏️": "llapis",
+ "🖌️": "pinzell",
+ "🖍️": "llapis de color",
+ "📌": "xinxeta",
+ "📎": "clip",
+ "🔑": "clau",
+ "🪃": "bumerang",
+ "🏹": "arc i fletxa",
+ "⚖️": "balança (aparell)",
+ "🧲": "imant",
+ "🧪": "tub d’assaig",
+ "🧬": "adn",
+ "🔬": "microscopi",
+ "🔭": "telescopi",
+ "📡": "antena de satèl·lit",
+ "🪑": "cadira",
+ "🧹": "escombra",
+ "🗿": "moai"
+ },
+ "cs": {
+ "👽️": "mimozemšťan",
+ "🤖": "obličej robota",
+ "🧠": "mozek",
+ "👁️": "oko",
+ "🧙": "mág",
+ "🧚": "víla",
+ "🧜": "mořská bytost",
+ "🐵": "hlava opice",
+ "🦧": "orangutan",
+ "🐶": "hlava psa",
+ "🐺": "hlava vlka",
+ "🦊": "hlava lišky",
+ "🦝": "mýval",
+ "🐱": "hlava kočky",
+ "🦁": "hlava lva",
+ "🐯": "hlava tygra",
+ "🐴": "hlava koně",
+ "🦄": "hlava jednorožce",
+ "🦓": "zebra",
+ "🦌": "jelen",
+ "🐮": "hlava krávy",
+ "🐷": "hlava prasete",
+ "🐗": "kanec",
+ "🐪": "velbloud jednohrbý",
+ "🦙": "lama",
+ "🦒": "žirafa",
+ "🐘": "slon",
+ "🦣": "mamut",
+ "🦏": "nosorožec",
+ "🐭": "hlava myši",
+ "🐰": "hlava králíka",
+ "🐿️": "veverka",
+ "🦔": "ježek",
+ "🦇": "netopýr",
+ "🐻": "hlava medvěda",
+ "🐨": "koala",
+ "🦥": "lenochod",
+ "🦦": "vydra",
+ "🦘": "klokan",
+ "🐥": "kuřátko zepředu",
+ "🐦️": "pták",
+ "🕊️": "holubice",
+ "🦆": "kachna",
+ "🦉": "sova",
+ "🦤": "dodo",
+ "🪶": "pírko",
+ "🦩": "plameňák",
+ "🦚": "páv",
+ "🦜": "papoušek",
+ "🐊": "krokodýl",
+ "🐢": "želva",
+ "🦎": "ještěrka",
+ "🐍": "had",
+ "🐲": "hlava draka",
+ "🦕": "brontosaurus",
+ "🐳": "velryba stříkající vodu",
+ "🐬": "delfín",
+ "🦭": "tuleň",
+ "🐟️": "ryba",
+ "🐠": "tropická ryba",
+ "🦈": "žralok",
+ "🐙": "chobotnice",
+ "🐚": "ulita",
+ "🐌": "hlemýžď",
+ "🦋": "motýl",
+ "🐛": "housenka",
+ "🐝": "včela",
+ "🐞": "beruška",
+ "💐": "kytice",
+ "🌹": "růže",
+ "🌺": "ibišek",
+ "🌻": "slunečnice",
+ "🌷": "tulipán",
+ "🌲": "jehličnatý strom",
+ "🌳": "listnatý strom",
+ "🌴": "palma",
+ "🌵": "kaktus",
+ "🌿": "bylina",
+ "🍁": "javorový list",
+ "🍇": "hrozny",
+ "🍈": "cukrový meloun",
+ "🍉": "meloun",
+ "🍊": "mandarinka",
+ "🍋": "citron",
+ "🍌": "banán",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "zelené jablko",
+ "🍐": "hruška",
+ "🍑": "broskev",
+ "🍒": "třešně",
+ "🍓": "jahoda",
+ "🫐": "borůvky",
+ "🥝": "kiwi",
+ "🍅": "rajče",
+ "🫒": "oliva",
+ "🥥": "kokos",
+ "🥑": "avokádo",
+ "🍆": "lilek",
+ "🥕": "mrkev",
+ "🌽": "kukuřičný klas",
+ "🌶️": "feferonka",
+ "🥬": "salátové listy",
+ "🥦": "brokolice",
+ "🧅": "cibule",
+ "🍄": "houba",
+ "🥜": "arašídy",
+ "🥐": "croissant",
+ "🥖": "bageta",
+ "🥨": "preclík",
+ "🥯": "bagel",
+ "🥞": "palačinky",
+ "🧇": "vafle",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "párek v rohlíku",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "krab",
+ "🦞": "humr",
+ "🍨": "kopečková zmrzlina",
+ "🍩": "donut",
+ "🍪": "koláček",
+ "🎂": "narozeninový dort",
+ "🧁": "košíček",
+ "🍫": "tabulka čokolády",
+ "🍬": "bonbon",
+ "🍭": "lízátko",
+ "🫖": "čajová konvice",
+ "🧃": "nápoj v krabičce",
+ "🧉": "maté",
+ "🧭": "kompas",
+ "🏔️": "zasněžená hora",
+ "🌋": "sopka",
+ "🏕️": "tábor",
+ "🏝️": "pustý ostrov",
+ "🏡": "domek se zahradou",
+ "⛲️": "fontána",
+ "🎠": "kolotočový kůň",
+ "🎡": "ruské kolo",
+ "🎢": "horská dráha",
+ "💈": "značka holičství",
+ "🚆": "vlak",
+ "🚋": "vagón tramvaje",
+ "🚍️": "přijíždějící autobus",
+ "🚕": "taxík",
+ "🚗": "auto",
+ "🚚": "dodávka",
+ "🚜": "traktor",
+ "🛵": "skútr",
+ "🛺": "autorikša",
+ "🛴": "koloběžka",
+ "🛹": "skateboard",
+ "🛼": "kolečková brusle",
+ "⚓️": "kotva",
+ "⛵️": "plachetnice",
+ "🛶": "kánoe",
+ "🚤": "motorový člun",
+ "🚢": "loď",
+ "✈️": "letadlo",
+ "🚁": "vrtulník",
+ "🚠": "horská lanovka",
+ "🛰️": "satelit",
+ "🚀": "raketa",
+ "🛸": "létající talíř",
+ "⏰": "budík",
+ "🌙": "srpek měsíce",
+ "🌡️": "teploměr",
+ "☀️": "slunce",
+ "🪐": "planeta s prstencem",
+ "🌟": "zářící hvězda",
+ "🌀": "cyklóna",
+ "🌈": "duha",
+ "☂️": "deštník",
+ "❄️": "sněhová vločka",
+ "☄️": "kometa",
+ "🔥": "oheň",
+ "💧": "kapka",
+ "🌊": "vodní vlna",
+ "🎃": "dýňová lucerna",
+ "✨": "jiskry",
+ "🎈": "balónek",
+ "🎉": "vystřelovací konfety",
+ "🎏": "koinobori",
+ "🎀": "mašle",
+ "🎁": "zabalený dárek",
+ "🎟️": "vstupenky",
+ "🏆️": "trofejní pohár",
+ "⚽️": "fotbalový míč",
+ "🏀": "basketbalový míč",
+ "🏈": "míč na americký fotbal",
+ "🎾": "tenis",
+ "🥏": "frisbee",
+ "🏓": "stolní tenis",
+ "🏸": "badminton",
+ "🤿": "potápěčská maska",
+ "🥌": "curlingový kámen",
+ "🎯": "přesný zásah do terče",
+ "🪀": "jojo",
+ "🪁": "papírový drak",
+ "🔮": "křišťálová koule",
+ "🎲": "hrací kostka",
+ "🧩": "puzzle",
+ "🎨": "malířská paleta",
+ "🧵": "cívka nití",
+ "👕": "tričko",
+ "🧦": "ponožky",
+ "👗": "šaty",
+ "🩳": "šortky",
+ "🎒": "školní batoh",
+ "👟": "běžecká bota",
+ "👑": "koruna",
+ "🧢": "kšiltovka",
+ "💄": "rtěnka",
+ "💍": "prsten",
+ "💎": "drahokam",
+ "📢": "tlampač",
+ "🎶": "noty",
+ "🎙️": "studiový mikrofon",
+ "📻️": "rádio",
+ "🎷": "saxofon",
+ "🪗": "akordeon",
+ "🎸": "kytara",
+ "🎺": "trubka",
+ "🎻": "housle",
+ "🪕": "banjo",
+ "🥁": "buben",
+ "☎️": "telefon",
+ "🔋": "baterie",
+ "💿️": "optický disk",
+ "🧮": "počitadlo",
+ "🎬️": "filmová klapka",
+ "💡": "žárovka",
+ "🔦": "baterka",
+ "🏮": "červený lampion",
+ "📕": "zavřená kniha",
+ "🏷️": "visačka",
+ "💳️": "platební karta",
+ "✏️": "tužka",
+ "🖌️": "štětec",
+ "🖍️": "pastelka",
+ "📌": "připínáček",
+ "📎": "kancelářská sponka",
+ "🔑": "klíč",
+ "🪃": "bumerang",
+ "🏹": "luk a šíp",
+ "⚖️": "miskové váhy",
+ "🧲": "magnet",
+ "🧪": "zkumavka",
+ "🧬": "DNA",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "satelitní anténa",
+ "🪑": "židle",
+ "🧹": "koště",
+ "🗿": "socha moai"
+ },
+ "da": {
+ "👽️": "rumvæsen",
+ "🤖": "robot",
+ "🧠": "hjerne",
+ "👁️": "øje",
+ "🧙": "magiker",
+ "🧚": "fe",
+ "🧜": "havvæsen",
+ "🐵": "abehoved",
+ "🦧": "orangutang",
+ "🐶": "hundehoved",
+ "🐺": "ulvehoved",
+ "🦊": "rævehoved",
+ "🦝": "vaskebjørn",
+ "🐱": "kattehoved",
+ "🦁": "løvehoved",
+ "🐯": "tigerhoved",
+ "🐴": "hestehoved",
+ "🦄": "enhjørningehoved",
+ "🦓": "zebra",
+ "🦌": "hjort",
+ "🐮": "kohoved",
+ "🐷": "grisehoved",
+ "🐗": "vildsvin",
+ "🐪": "dromedar",
+ "🦙": "lama",
+ "🦒": "giraf",
+ "🐘": "elefant",
+ "🦣": "mammut",
+ "🦏": "næsehorn",
+ "🐭": "musehoved",
+ "🐰": "kaninhoved",
+ "🐿️": "jordegern",
+ "🦔": "pindsvin",
+ "🦇": "flagermus",
+ "🐻": "bjørnehoved",
+ "🐨": "koala",
+ "🦥": "dovendyr",
+ "🦦": "odder",
+ "🦘": "kænguru",
+ "🐥": "kylling forfra",
+ "🐦️": "fugl",
+ "🕊️": "due",
+ "🦆": "and",
+ "🦉": "ugle",
+ "🦤": "dronte",
+ "🪶": "fjer",
+ "🦩": "flamingo",
+ "🦚": "påfugl",
+ "🦜": "papegøje",
+ "🐊": "krokodille",
+ "🐢": "skildpadde",
+ "🦎": "firben",
+ "🐍": "slange",
+ "🐲": "dragehoved",
+ "🦕": "sauropod",
+ "🐳": "hval med vandsprøjt",
+ "🐬": "delfin",
+ "🦭": "sæl",
+ "🐟️": "fisk",
+ "🐠": "tropisk fisk",
+ "🦈": "haj",
+ "🐙": "blæksprutte",
+ "🐚": "konkylie",
+ "🐌": "snegl",
+ "🦋": "sommerfugl",
+ "🐛": "larve",
+ "🐝": "honningbi",
+ "🐞": "mariehøne",
+ "💐": "blomsterbuket",
+ "🌹": "rose",
+ "🌺": "hibiscus",
+ "🌻": "solsikke",
+ "🌷": "tulipan",
+ "🌲": "nåletræ",
+ "🌳": "løvtræ",
+ "🌴": "palme",
+ "🌵": "kaktus",
+ "🌿": "urt",
+ "🍁": "ahornblad",
+ "🍇": "vindruer",
+ "🍈": "melon",
+ "🍉": "vandmelon",
+ "🍊": "appelsin",
+ "🍋": "citron",
+ "🍌": "banan",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "grønt æble",
+ "🍐": "pære",
+ "🍑": "fersken",
+ "🍒": "kirsebær",
+ "🍓": "jordbær",
+ "🫐": "blåbær",
+ "🥝": "kiwifrugt",
+ "🍅": "tomat",
+ "🫒": "oliven",
+ "🥥": "kokosnød",
+ "🥑": "avokado",
+ "🍆": "aubergine",
+ "🥕": "gulerod",
+ "🌽": "majs",
+ "🌶️": "chili",
+ "🥬": "bladgrønt",
+ "🥦": "broccoli",
+ "🧅": "løg",
+ "🍄": "svamp",
+ "🥜": "jordnødder",
+ "🥐": "croissant",
+ "🥖": "flute",
+ "🥨": "kringle",
+ "🥯": "bagel",
+ "🥞": "pandekager",
+ "🧇": "vaffel",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hotdog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "krabbe",
+ "🦞": "hummer",
+ "🍨": "is",
+ "🍩": "donut",
+ "🍪": "småkage",
+ "🎂": "fødselsdagskage",
+ "🧁": "cupcake",
+ "🍫": "chokolade",
+ "🍬": "bolsje",
+ "🍭": "slikkepind",
+ "🫖": "tekande",
+ "🧃": "brik",
+ "🧉": "mate",
+ "🧭": "kompas",
+ "🏔️": "sneklædt bjerg",
+ "🌋": "vulkan",
+ "🏕️": "camping",
+ "🏝️": "øde ø",
+ "🏡": "hus med have",
+ "⛲️": "springvand",
+ "🎠": "karrusel",
+ "🎡": "pariserhjul",
+ "🎢": "rutsjebane",
+ "💈": "barber",
+ "🚆": "tog",
+ "🚋": "vogn",
+ "🚍️": "bus forfra",
+ "🚕": "taxa",
+ "🚗": "bil",
+ "🚚": "lastbil",
+ "🚜": "traktor",
+ "🛵": "scooter",
+ "🛺": "motor-rickshaw",
+ "🛴": "løbehjul",
+ "🛹": "skateboard",
+ "🛼": "rulleskøjte",
+ "⚓️": "anker",
+ "⛵️": "sejlbåd",
+ "🛶": "kano",
+ "🚤": "speedbåd",
+ "🚢": "skib",
+ "✈️": "fly",
+ "🚁": "helikopter",
+ "🚠": "kabelbane",
+ "🛰️": "satellit",
+ "🚀": "raket",
+ "🛸": "ufo",
+ "⏰": "vækkeur",
+ "🌙": "halvmåne",
+ "🌡️": "termometer",
+ "☀️": "sol",
+ "🪐": "planet med ringe",
+ "🌟": "blinkende stjerne",
+ "🌀": "cyklon",
+ "🌈": "regnbue",
+ "☂️": "paraply",
+ "❄️": "snefnug",
+ "☄️": "komet",
+ "🔥": "ild",
+ "💧": "dråbe",
+ "🌊": "bølge",
+ "🎃": "græskarmand",
+ "✨": "stjerner",
+ "🎈": "ballon",
+ "🎉": "bordbombe",
+ "🎏": "karpevimpel",
+ "🎀": "sløjfe",
+ "🎁": "gave",
+ "🎟️": "adgangsbillet",
+ "🏆️": "pokal",
+ "⚽️": "fodbold",
+ "🏀": "basketball",
+ "🏈": "amerikansk fodbold",
+ "🎾": "tennis",
+ "🥏": "frisbee",
+ "🏓": "bordtennis",
+ "🏸": "badminton",
+ "🤿": "dykkermaske",
+ "🥌": "curlingsten",
+ "🎯": "pletskud",
+ "🪀": "yoyo",
+ "🪁": "legetøjsdrage",
+ "🔮": "krystalkugle",
+ "🎲": "terning",
+ "🧩": "brik til puslespil",
+ "🎨": "palet",
+ "🧵": "tråd",
+ "👕": "T-shirt",
+ "🧦": "sokker",
+ "👗": "kjole",
+ "🩳": "shorts",
+ "🎒": "rygsæk",
+ "👟": "løbesko",
+ "👑": "krone",
+ "🧢": "kasket",
+ "💄": "læbestift",
+ "💍": "ring",
+ "💎": "ædelsten",
+ "📢": "elektrisk megafon",
+ "🎶": "noder",
+ "🎙️": "studiemikrofon",
+ "📻️": "radio",
+ "🎷": "saxofon",
+ "🪗": "akkordeon",
+ "🎸": "guitar",
+ "🎺": "trompet",
+ "🎻": "violin",
+ "🪕": "banjo",
+ "🥁": "tromme",
+ "☎️": "telefon",
+ "🔋": "batteri",
+ "💿️": "cd",
+ "🧮": "kugleramme",
+ "🎬️": "klaptræ",
+ "💡": "elpære",
+ "🔦": "lommelygte",
+ "🏮": "papirlanterne",
+ "📕": "lukket bog",
+ "🏷️": "mærkat",
+ "💳️": "kreditkort",
+ "✏️": "blyant",
+ "🖌️": "malerpensel",
+ "🖍️": "farvekridt",
+ "📌": "tegnestift",
+ "📎": "papirclips",
+ "🔑": "nøgle",
+ "🪃": "boomerang",
+ "🏹": "bue og pil",
+ "⚖️": "vægt",
+ "🧲": "magnet",
+ "🧪": "reagensglas",
+ "🧬": "dna",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "parabolantenne",
+ "🪑": "stol",
+ "🧹": "kost",
+ "🗿": "statue"
+ },
+ "de": {
+ "👽️": "Außerirdischer",
+ "🤖": "Roboter",
+ "🧠": "Gehirn",
+ "👁️": "Auge",
+ "🧙": "Magier(in)",
+ "🧚": "Märchenfee",
+ "🧜": "Wassermensch",
+ "🐵": "Affengesicht",
+ "🦧": "Orang-Utan",
+ "🐶": "Hundegesicht",
+ "🐺": "Wolf",
+ "🦊": "Fuchs",
+ "🦝": "Waschbär",
+ "🐱": "Katzengesicht",
+ "🦁": "Löwe",
+ "🐯": "Tigergesicht",
+ "🐴": "Pferdegesicht",
+ "🦄": "Einhorn",
+ "🦓": "Zebra",
+ "🦌": "Hirsch",
+ "🐮": "Kuhgesicht",
+ "🐷": "Schweinegesicht",
+ "🐗": "Wildschwein",
+ "🐪": "Dromedar",
+ "🦙": "Lama",
+ "🦒": "Giraffe",
+ "🐘": "Elefant",
+ "🦣": "Mammut",
+ "🦏": "Nashorn",
+ "🐭": "Mäusegesicht",
+ "🐰": "Hasengesicht",
+ "🐿️": "Streifenhörnchen",
+ "🦔": "Igel",
+ "🦇": "Fledermaus",
+ "🐻": "Bär",
+ "🐨": "Koala",
+ "🦥": "Faultier",
+ "🦦": "Otter",
+ "🦘": "Känguru",
+ "🐥": "Küken von vorne",
+ "🐦️": "Vogel",
+ "🕊️": "Taube",
+ "🦆": "Ente",
+ "🦉": "Eule",
+ "🦤": "Dodo",
+ "🪶": "Feder",
+ "🦩": "Flamingo",
+ "🦚": "Pfau",
+ "🦜": "Papagei",
+ "🐊": "Krokodil",
+ "🐢": "Schildkröte",
+ "🦎": "Eidechse",
+ "🐍": "Schlange",
+ "🐲": "Drachengesicht",
+ "🦕": "Sauropode",
+ "🐳": "blasender Wal",
+ "🐬": "Delfin",
+ "🦭": "Seehund",
+ "🐟️": "Fisch",
+ "🐠": "Tropenfisch",
+ "🦈": "Hai",
+ "🐙": "Oktopus",
+ "🐚": "Schneckenhaus",
+ "🐌": "Schnecke",
+ "🦋": "Schmetterling",
+ "🐛": "Raupe",
+ "🐝": "Biene",
+ "🐞": "Marienkäfer",
+ "💐": "Blumenstrauß",
+ "🌹": "Rose",
+ "🌺": "Hibiskus",
+ "🌻": "Sonnenblume",
+ "🌷": "Tulpe",
+ "🌲": "Nadelbaum",
+ "🌳": "Laubbaum",
+ "🌴": "Palme",
+ "🌵": "Kaktus",
+ "🌿": "Kräuter",
+ "🍁": "Ahornblatt",
+ "🍇": "Trauben",
+ "🍈": "Honigmelone",
+ "🍉": "Wassermelone",
+ "🍊": "Mandarine",
+ "🍋": "Zitrone",
+ "🍌": "Banane",
+ "🍍": "Ananas",
+ "🥭": "Mango",
+ "🍏": "grüner Apfel",
+ "🍐": "Birne",
+ "🍑": "Pfirsich",
+ "🍒": "Kirschen",
+ "🍓": "Erdbeere",
+ "🫐": "Blaubeeren",
+ "🥝": "Kiwi",
+ "🍅": "Tomate",
+ "🫒": "Olive",
+ "🥥": "Kokosnuss",
+ "🥑": "Avocado",
+ "🍆": "Aubergine",
+ "🥕": "Karotte",
+ "🌽": "Maiskolben",
+ "🌶️": "Peperoni",
+ "🥬": "Blattgemüse",
+ "🥦": "Brokkoli",
+ "🧅": "Zwiebel",
+ "🍄": "Fliegenpilz",
+ "🥜": "Erdnuss",
+ "🥐": "Croissant",
+ "🥖": "Baguette",
+ "🥨": "Brezel",
+ "🥯": "Bagel",
+ "🥞": "Pfannkuchen",
+ "🧇": "Waffel",
+ "🍔": "Hamburger",
+ "🍕": "Pizza",
+ "🌭": "Hotdog",
+ "🌮": "Taco",
+ "🍿": "Popcorn",
+ "🦀": "Krebs",
+ "🦞": "Hummer",
+ "🍨": "Eiscreme",
+ "🍩": "Donut",
+ "🍪": "Keks",
+ "🎂": "Geburtstagskuchen",
+ "🧁": "Cupcake",
+ "🍫": "Schokoladentafel",
+ "🍬": "Bonbon",
+ "🍭": "Lutscher",
+ "🫖": "Teekanne",
+ "🧃": "Trinkpäckchen",
+ "🧉": "Mate-Tee",
+ "🧭": "Kompass",
+ "🏔️": "schneebedeckter Berg",
+ "🌋": "Vulkan",
+ "🏕️": "Camping",
+ "🏝️": "einsame Insel",
+ "🏡": "Haus mit Garten",
+ "⛲️": "Springbrunnen",
+ "🎠": "Karussellpferd",
+ "🎡": "Riesenrad",
+ "🎢": "Achterbahn",
+ "💈": "Barbershop-Säule",
+ "🚆": "Zug",
+ "🚋": "Straßenbahnwagen",
+ "🚍️": "Bus von vorne",
+ "🚕": "Taxi",
+ "🚗": "Auto",
+ "🚚": "Lieferwagen",
+ "🚜": "Traktor",
+ "🛵": "Motorroller",
+ "🛺": "Autorikscha",
+ "🛴": "Tretroller",
+ "🛹": "Skateboard",
+ "🛼": "Rollschuh",
+ "⚓️": "Anker",
+ "⛵️": "Segelboot",
+ "🛶": "Kanu",
+ "🚤": "Schnellboot",
+ "🚢": "Schiff",
+ "✈️": "Flugzeug",
+ "🚁": "Hubschrauber",
+ "🚠": "Bergschwebebahn",
+ "🛰️": "Satellit",
+ "🚀": "Rakete",
+ "🛸": "fliegende Untertasse",
+ "⏰": "Wecker",
+ "🌙": "Mondsichel",
+ "🌡️": "Thermometer",
+ "☀️": "Sonne",
+ "🪐": "Ringplanet",
+ "🌟": "funkelnder Stern",
+ "🌀": "Wirbel",
+ "🌈": "Regenbogen",
+ "☂️": "Regenschirm",
+ "❄️": "Schneeflocke",
+ "☄️": "Komet",
+ "🔥": "Feuer",
+ "💧": "Tropfen",
+ "🌊": "Welle",
+ "🎃": "Halloweenkürbis",
+ "✨": "funkelnde Sterne",
+ "🎈": "Luftballon",
+ "🎉": "Konfettibombe",
+ "🎏": "traditionelle japanische Windsäcke",
+ "🎀": "pinke Schleife",
+ "🎁": "Geschenk",
+ "🎟️": "Eintrittskarten",
+ "🏆️": "Pokal",
+ "⚽️": "Fußball",
+ "🏀": "Basketball",
+ "🏈": "Football",
+ "🎾": "Tennisball",
+ "🥏": "Frisbee",
+ "🏓": "Tischtennis",
+ "🏸": "Badminton",
+ "🤿": "Tauchmaske",
+ "🥌": "Curlingstein",
+ "🎯": "Darts",
+ "🪀": "Jo-Jo",
+ "🪁": "Drachen",
+ "🔮": "Kristallkugel",
+ "🎲": "Spielwürfel",
+ "🧩": "Puzzleteil",
+ "🎨": "Mischpalette",
+ "🧵": "Faden",
+ "👕": "T-Shirt",
+ "🧦": "Socken",
+ "👗": "Kleid",
+ "🩳": "Shorts",
+ "🎒": "Schulranzen",
+ "👟": "Sportschuh",
+ "👑": "Krone",
+ "🧢": "Baseballmütze",
+ "💄": "Lippenstift",
+ "💍": "Ring",
+ "💎": "Edelstein",
+ "📢": "Lautsprecher",
+ "🎶": "Musiknoten",
+ "🎙️": "Studiomikrofon",
+ "📻️": "Radio",
+ "🎷": "Saxofon",
+ "🪗": "Akkordeon",
+ "🎸": "Gitarre",
+ "🎺": "Trompete",
+ "🎻": "Geige",
+ "🪕": "Banjo",
+ "🥁": "Trommel",
+ "☎️": "Telefon",
+ "🔋": "Batterie",
+ "💿️": "CD",
+ "🧮": "Abakus",
+ "🎬️": "Filmklappe",
+ "💡": "Glühbirne",
+ "🔦": "Taschenlampe",
+ "🏮": "rote Papierlaterne",
+ "📕": "geschlossenes Buch",
+ "🏷️": "Etikett",
+ "💳️": "Kreditkarte",
+ "✏️": "Bleistift",
+ "🖌️": "Pinsel",
+ "🖍️": "Wachsmalstift",
+ "📌": "Reißzwecke",
+ "📎": "Büroklammer",
+ "🔑": "Schlüssel",
+ "🪃": "Bumerang",
+ "🏹": "Pfeil und Bogen",
+ "⚖️": "Waage",
+ "🧲": "Magnet",
+ "🧪": "Reagenzglas",
+ "🧬": "DNA",
+ "🔬": "Mikroskop",
+ "🔭": "Teleskop",
+ "📡": "Satellitenschüssel",
+ "🪑": "Stuhl",
+ "🧹": "Besen",
+ "🗿": "Statue"
+ },
+ "el": {
+ "👽️": "εξωγήινος",
+ "🤖": "ρομπότ",
+ "🧠": "μυαλό",
+ "👁️": "μάτι",
+ "🧙": "μάγος",
+ "🧚": "νεράιδα",
+ "🧜": "γοργόνα",
+ "🐵": "πρόσωπο μαϊμούς",
+ "🦧": "ουρακοτάγκος",
+ "🐶": "πρόσωπο σκύλου",
+ "🐺": "λύκος",
+ "🦊": "αλεπού",
+ "🦝": "ρακούν",
+ "🐱": "πρόσωπο γάτας",
+ "🦁": "λιοντάρι",
+ "🐯": "πρόσωπο τίγρης",
+ "🐴": "πρόσωπο αλόγου",
+ "🦄": "μονόκερος",
+ "🦓": "ζέβρα",
+ "🦌": "ελάφι",
+ "🐮": "πρόσωπο αγελάδας",
+ "🐷": "πρόσωπο γουρουνιού",
+ "🐗": "αγριογούρουνο",
+ "🐪": "καμήλα",
+ "🦙": "λάμα",
+ "🦒": "καμηλοπάρδαλη",
+ "🐘": "ελέφαντας",
+ "🦣": "μαμούθ",
+ "🦏": "ρινόκερος",
+ "🐭": "πρόσωπο ποντικιού",
+ "🐰": "πρόσωπο κουνελιού",
+ "🐿️": "σκιουράκι",
+ "🦔": "σκαντζόχοιρος",
+ "🦇": "νυχτερίδα",
+ "🐻": "αρκούδα",
+ "🐨": "κοάλα",
+ "🦥": "βραδύπους",
+ "🦦": "βίδρα",
+ "🦘": "καγκουρό",
+ "🐥": "κοτοπουλάκι που κοιτά μπροστά",
+ "🐦️": "πουλί",
+ "🕊️": "περιστέρι",
+ "🦆": "πάπια",
+ "🦉": "κουκουβάγια",
+ "🦤": "ντόντο",
+ "🪶": "φτερό",
+ "🦩": "φλαμίνγκο",
+ "🦚": "παγώνι",
+ "🦜": "παπαγάλος",
+ "🐊": "κροκόδειλος",
+ "🐢": "χελώνα",
+ "🦎": "σαύρα",
+ "🐍": "φίδι",
+ "🐲": "πρόσωπο δράκου",
+ "🦕": "σαυρόποδο",
+ "🐳": "φάλαινα που πετά νερό",
+ "🐬": "δελφίνι",
+ "🦭": "φώκια",
+ "🐟️": "ψάρι",
+ "🐠": "τροπικό ψάρι",
+ "🦈": "καρχαρίας",
+ "🐙": "χταπόδι",
+ "🐚": "σπειροειδές κοχύλι",
+ "🐌": "σαλιγκάρι",
+ "🦋": "πεταλούδα",
+ "🐛": "κάμπια",
+ "🐝": "μέλισσα",
+ "🐞": "πασχαλίτσα",
+ "💐": "μπουκέτο λουλούδια",
+ "🌹": "τριαντάφυλλο",
+ "🌺": "ιβίσκος",
+ "🌻": "ηλιοτρόπιο",
+ "🌷": "τουλίπα",
+ "🌲": "αειθαλές δέντρο",
+ "🌳": "φυλλοβόλο δέντρο",
+ "🌴": "φοίνικας",
+ "🌵": "κάκτος",
+ "🌿": "βότανο",
+ "🍁": "φύλλο σφενδάμου",
+ "🍇": "σταφύλι",
+ "🍈": "πεπόνι",
+ "🍉": "καρπούζι",
+ "🍊": "μανταρίνι",
+ "🍋": "λεμόνι",
+ "🍌": "μπανάνα",
+ "🍍": "ανανάς",
+ "🥭": "μάνγκο",
+ "🍏": "πράσινο μήλο",
+ "🍐": "αχλάδι",
+ "🍑": "ροδάκινο",
+ "🍒": "κεράσια",
+ "🍓": "φράουλα",
+ "🫐": "μύρτιλο",
+ "🥝": "ακτινίδιο",
+ "🍅": "ντομάτα",
+ "🫒": "ελιά",
+ "🥥": "καρύδα",
+ "🥑": "αβοκάντο",
+ "🍆": "μελιτζάνα",
+ "🥕": "καρότο",
+ "🌽": "καλαμπόκι",
+ "🌶️": "καυτερή πιπεριά",
+ "🥬": "πράσινο φυλλώδες",
+ "🥦": "μπρόκολο",
+ "🧅": "κρεμμύδι",
+ "🍄": "μανιτάρι",
+ "🥜": "φιστίκια",
+ "🥐": "κρουασάν",
+ "🥖": "μπαγκέτα",
+ "🥨": "πρέτσελ",
+ "🥯": "μπέιγκελ",
+ "🥞": "τηγανίτες",
+ "🧇": "βάφλα",
+ "🍔": "χάμπουργκερ",
+ "🍕": "πίτσα",
+ "🌭": "χοτ ντογκ",
+ "🌮": "τάκο",
+ "🍿": "ποπ-κορν",
+ "🦀": "κάβουρας",
+ "🦞": "αστακός",
+ "🍨": "παγωτό",
+ "🍩": "ντόνατ",
+ "🍪": "μπισκότο",
+ "🎂": "τούρτα γενεθλίων",
+ "🧁": "κεκάκι",
+ "🍫": "σοκολάτα",
+ "🍬": "καραμέλα",
+ "🍭": "γλειφιτζούρι",
+ "🫖": "τσαγιέρα",
+ "🧃": "κουτί ροφήματος",
+ "🧉": "μάτε",
+ "🧭": "πυξίδα",
+ "🏔️": "χιονισμένο βουνό",
+ "🌋": "ηφαίστειο",
+ "🏕️": "κατασκήνωση",
+ "🏝️": "ερημονήσι",
+ "🏡": "σπίτι με κήπο",
+ "⛲️": "σιντριβάνι",
+ "🎠": "αλογάκι καρουσέλ",
+ "🎡": "ρόδα λούνα-παρκ",
+ "🎢": "τρενάκι",
+ "💈": "σύμβολο κουρείου",
+ "🚆": "τρένο",
+ "🚋": "βαγόνι τραμ",
+ "🚍️": "διερχόμενο λεωφορείο",
+ "🚕": "ταξί",
+ "🚗": "αυτοκίνητο",
+ "🚚": "φορτηγό",
+ "🚜": "τρακτέρ",
+ "🛵": "σκουτεράκι",
+ "🛺": "ποδήλατο-ταξί",
+ "🛴": "πατίνι",
+ "🛹": "σκέιτμπορντ",
+ "🛼": "πατίνια",
+ "⚓️": "άγκυρα",
+ "⛵️": "ιστιοφόρο",
+ "🛶": "κανό",
+ "🚤": "ταχύπλοο",
+ "🚢": "πλοίο",
+ "✈️": "αεροπλάνο",
+ "🚁": "ελικόπτερο",
+ "🚠": "τελεφερίκ",
+ "🛰️": "δορυφόρος",
+ "🚀": "πύραυλος",
+ "🛸": "ιπτάμενος δίσκος",
+ "⏰": "ξυπνητήρι",
+ "🌙": "ημισέληνος",
+ "🌡️": "θερμόμετρο",
+ "☀️": "ήλιος",
+ "🪐": "πλανήτης με δακτύλιο",
+ "🌟": "λαμπερό αστέρι",
+ "🌀": "κυκλώνας",
+ "🌈": "ουράνιο τόξο",
+ "☂️": "ομπρέλα",
+ "❄️": "χιονονιφάδα",
+ "☄️": "κομήτης",
+ "🔥": "φωτιά",
+ "💧": "σταγόνα",
+ "🌊": "θαλάσσιο κύμα",
+ "🎃": "φανάρι από κολοκύθα",
+ "✨": "αστράκια",
+ "🎈": "μπαλόνι",
+ "🎉": "χαρτοπόλεμος",
+ "🎏": "διακοσμητικοί κυπρίνοι",
+ "🎀": "κορδέλα",
+ "🎁": "τυλιγμένο δώρο",
+ "🎟️": "κάρτες εισόδου",
+ "🏆️": "τρόπαιο",
+ "⚽️": "μπάλα ποδοσφαίρου",
+ "🏀": "μπάλα μπάσκετ",
+ "🏈": "μπάλα αμερικάνικου ποδοσφαίρου",
+ "🎾": "μπάλα τένις",
+ "🥏": "φρίσμπι",
+ "🏓": "πινγκ πονγκ",
+ "🏸": "μπάντμιντον",
+ "🤿": "μάσκα κατάδυσης",
+ "🥌": "πέτρα κέρλινγκ",
+ "🎯": "βελάκια",
+ "🪀": "γιογιό",
+ "🪁": "χαρταετός",
+ "🔮": "κρυστάλλινη σφαίρα",
+ "🎲": "ζάρι",
+ "🧩": "κομμάτι παζλ",
+ "🎨": "παλέτα ζωγράφου",
+ "🧵": "κλωστή",
+ "👕": "μπλουζάκι",
+ "🧦": "κάλτσες",
+ "👗": "φόρεμα",
+ "🩳": "σορτσάκι",
+ "🎒": "σχολική σάκα",
+ "👟": "αθλητικό παπούτσι",
+ "👑": "στέμμα",
+ "🧢": "καπελάκι",
+ "💄": "κραγιόν",
+ "💍": "δαχτυλίδι",
+ "💎": "διαμάντι",
+ "📢": "ντουντούκα",
+ "🎶": "νότες μουσικής",
+ "🎙️": "μικρόφωνο στούντιο",
+ "📻️": "ραδιόφωνο",
+ "🎷": "σαξόφωνο",
+ "🪗": "ακορντεόν",
+ "🎸": "κιθάρα",
+ "🎺": "τρομπέτα",
+ "🎻": "βιολί",
+ "🪕": "μπάντζο",
+ "🥁": "τύμπανο",
+ "☎️": "τηλέφωνο",
+ "🔋": "μπαταρία",
+ "💿️": "οπτικός δίσκος",
+ "🧮": "άβακας",
+ "🎬️": "κλακέτα φιλμ",
+ "💡": "λαμπτήρας",
+ "🔦": "φακός",
+ "🏮": "κόκκινο χάρτινο φανάρι",
+ "📕": "κλειστό βιβλίο",
+ "🏷️": "ετικέτα",
+ "💳️": "πιστωτική κάρτα",
+ "✏️": "μολύβι",
+ "🖌️": "πινέλο",
+ "🖍️": "κηρομπογιά",
+ "📌": "πινέζα",
+ "📎": "συνδετήρας",
+ "🔑": "κλειδί",
+ "🪃": "μπούμερανγκ",
+ "🏹": "τόξο και βέλος",
+ "⚖️": "ζυγαριά",
+ "🧲": "μαγνήτης",
+ "🧪": "δοκιμαστικός σωλήνας",
+ "🧬": "dna",
+ "🔬": "μικροσκόπιο",
+ "🔭": "τηλεσκόπιο",
+ "📡": "δορυφορική κεραία",
+ "🪑": "καρέκλα",
+ "🧹": "σκούπα",
+ "🗿": "μοάι"
+ },
+ "en": {
+ "👽️": "alien",
+ "🤖": "robot",
+ "🧠": "brain",
+ "👁️": "eye",
+ "🧙": "mage",
+ "🧚": "fairy",
+ "🧜": "merperson",
+ "🐵": "monkey face",
+ "🦧": "orangutan",
+ "🐶": "dog face",
+ "🐺": "wolf",
+ "🦊": "fox",
+ "🦝": "raccoon",
+ "🐱": "cat face",
+ "🦁": "lion",
+ "🐯": "tiger face",
+ "🐴": "horse face",
+ "🦄": "unicorn",
+ "🦓": "zebra",
+ "🦌": "deer",
+ "🐮": "cow face",
+ "🐷": "pig face",
+ "🐗": "boar",
+ "🐪": "camel",
+ "🦙": "llama",
+ "🦒": "giraffe",
+ "🐘": "elephant",
+ "🦣": "mammoth",
+ "🦏": "rhinoceros",
+ "🐭": "mouse face",
+ "🐰": "rabbit face",
+ "🐿️": "chipmunk",
+ "🦔": "hedgehog",
+ "🦇": "bat",
+ "🐻": "bear",
+ "🐨": "koala",
+ "🦥": "sloth",
+ "🦦": "otter",
+ "🦘": "kangaroo",
+ "🐥": "front-facing baby chick",
+ "🐦️": "bird",
+ "🕊️": "dove",
+ "🦆": "duck",
+ "🦉": "owl",
+ "🦤": "dodo",
+ "🪶": "feather",
+ "🦩": "flamingo",
+ "🦚": "peacock",
+ "🦜": "parrot",
+ "🐊": "crocodile",
+ "🐢": "turtle",
+ "🦎": "lizard",
+ "🐍": "snake",
+ "🐲": "dragon face",
+ "🦕": "sauropod",
+ "🐳": "spouting whale",
+ "🐬": "dolphin",
+ "🦭": "seal",
+ "🐟️": "fish",
+ "🐠": "tropical fish",
+ "🦈": "shark",
+ "🐙": "octopus",
+ "🐚": "spiral shell",
+ "🐌": "snail",
+ "🦋": "butterfly",
+ "🐛": "bug",
+ "🐝": "honeybee",
+ "🐞": "lady beetle",
+ "💐": "bouquet",
+ "🌹": "rose",
+ "🌺": "hibiscus",
+ "🌻": "sunflower",
+ "🌷": "tulip",
+ "🌲": "evergreen tree",
+ "🌳": "deciduous tree",
+ "🌴": "palm tree",
+ "🌵": "cactus",
+ "🌿": "herb",
+ "🍁": "maple leaf",
+ "🍇": "grapes",
+ "🍈": "melon",
+ "🍉": "watermelon",
+ "🍊": "tangerine",
+ "🍋": "lemon",
+ "🍌": "banana",
+ "🍍": "pineapple",
+ "🥭": "mango",
+ "🍏": "green apple",
+ "🍐": "pear",
+ "🍑": "peach",
+ "🍒": "cherries",
+ "🍓": "strawberry",
+ "🫐": "blueberries",
+ "🥝": "kiwi fruit",
+ "🍅": "tomato",
+ "🫒": "olive",
+ "🥥": "coconut",
+ "🥑": "avocado",
+ "🍆": "eggplant",
+ "🥕": "carrot",
+ "🌽": "ear of corn",
+ "🌶️": "hot pepper",
+ "🥬": "leafy green",
+ "🥦": "broccoli",
+ "🧅": "onion",
+ "🍄": "mushroom",
+ "🥜": "peanuts",
+ "🥐": "croissant",
+ "🥖": "baguette bread",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "pancakes",
+ "🧇": "waffle",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "crab",
+ "🦞": "lobster",
+ "🍨": "ice cream",
+ "🍩": "doughnut",
+ "🍪": "cookie",
+ "🎂": "birthday cake",
+ "🧁": "cupcake",
+ "🍫": "chocolate bar",
+ "🍬": "candy",
+ "🍭": "lollipop",
+ "🫖": "teapot",
+ "🧃": "beverage box",
+ "🧉": "mate",
+ "🧭": "compass",
+ "🏔️": "snow-capped mountain",
+ "🌋": "volcano",
+ "🏕️": "camping",
+ "🏝️": "desert island",
+ "🏡": "house with garden",
+ "⛲️": "fountain",
+ "🎠": "carousel horse",
+ "🎡": "ferris wheel",
+ "🎢": "roller coaster",
+ "💈": "barber pole",
+ "🚆": "train",
+ "🚋": "tram car",
+ "🚍️": "oncoming bus",
+ "🚕": "taxi",
+ "🚗": "automobile",
+ "🚚": "delivery truck",
+ "🚜": "tractor",
+ "🛵": "motor scooter",
+ "🛺": "auto rickshaw",
+ "🛴": "kick scooter",
+ "🛹": "skateboard",
+ "🛼": "roller skate",
+ "⚓️": "anchor",
+ "⛵️": "sailboat",
+ "🛶": "canoe",
+ "🚤": "speedboat",
+ "🚢": "ship",
+ "✈️": "airplane",
+ "🚁": "helicopter",
+ "🚠": "mountain cableway",
+ "🛰️": "satellite",
+ "🚀": "rocket",
+ "🛸": "flying saucer",
+ "⏰": "alarm clock",
+ "🌙": "crescent moon",
+ "🌡️": "thermometer",
+ "☀️": "sun",
+ "🪐": "ringed planet",
+ "🌟": "glowing star",
+ "🌀": "cyclone",
+ "🌈": "rainbow",
+ "☂️": "umbrella",
+ "❄️": "snowflake",
+ "☄️": "comet",
+ "🔥": "fire",
+ "💧": "droplet",
+ "🌊": "water wave",
+ "🎃": "jack-o-lantern",
+ "✨": "sparkles",
+ "🎈": "balloon",
+ "🎉": "party popper",
+ "🎏": "carp streamer",
+ "🎀": "ribbon",
+ "🎁": "wrapped gift",
+ "🎟️": "admission tickets",
+ "🏆️": "trophy",
+ "⚽️": "soccer ball",
+ "🏀": "basketball",
+ "🏈": "american football",
+ "🎾": "tennis",
+ "🥏": "flying disc",
+ "🏓": "ping pong",
+ "🏸": "badminton",
+ "🤿": "diving mask",
+ "🥌": "curling stone",
+ "🎯": "bullseye",
+ "🪀": "yo-yo",
+ "🪁": "kite",
+ "🔮": "crystal ball",
+ "🎲": "game die",
+ "🧩": "puzzle piece",
+ "🎨": "artist palette",
+ "🧵": "thread",
+ "👕": "t-shirt",
+ "🧦": "socks",
+ "👗": "dress",
+ "🩳": "shorts",
+ "🎒": "backpack",
+ "👟": "running shoe",
+ "👑": "crown",
+ "🧢": "billed cap",
+ "💄": "lipstick",
+ "💍": "ring",
+ "💎": "gem stone",
+ "📢": "loudspeaker",
+ "🎶": "musical notes",
+ "🎙️": "studio microphone",
+ "📻️": "radio",
+ "🎷": "saxophone",
+ "🪗": "accordion",
+ "🎸": "guitar",
+ "🎺": "trumpet",
+ "🎻": "violin",
+ "🪕": "banjo",
+ "🥁": "drum",
+ "☎️": "telephone",
+ "🔋": "battery",
+ "💿️": "optical disk",
+ "🧮": "abacus",
+ "🎬️": "clapper board",
+ "💡": "light bulb",
+ "🔦": "flashlight",
+ "🏮": "red paper lantern",
+ "📕": "closed book",
+ "🏷️": "label",
+ "💳️": "credit card",
+ "✏️": "pencil",
+ "🖌️": "paintbrush",
+ "🖍️": "crayon",
+ "📌": "pushpin",
+ "📎": "paperclip",
+ "🔑": "key",
+ "🪃": "boomerang",
+ "🏹": "bow and arrow",
+ "⚖️": "balance scale",
+ "🧲": "magnet",
+ "🧪": "test tube",
+ "🧬": "dna",
+ "🔬": "microscope",
+ "🔭": "telescope",
+ "📡": "satellite antenna",
+ "🪑": "chair",
+ "🧹": "broom",
+ "🗿": "moai"
+ },
+ "es": {
+ "👽️": "alienígena",
+ "🤖": "robot",
+ "🧠": "cerebro",
+ "👁️": "ojo",
+ "🧙": "persona maga",
+ "🧚": "hada",
+ "🧜": "persona sirena",
+ "🐵": "cara de mono",
+ "🦧": "orangután",
+ "🐶": "cara de perro",
+ "🐺": "lobo",
+ "🦊": "zorro",
+ "🦝": "mapache",
+ "🐱": "cara de gato",
+ "🦁": "león",
+ "🐯": "cara de tigre",
+ "🐴": "cara de caballo",
+ "🦄": "unicornio",
+ "🦓": "cebra",
+ "🦌": "ciervo",
+ "🐮": "cara de vaca",
+ "🐷": "cara de cerdo",
+ "🐗": "jabalí",
+ "🐪": "dromedario",
+ "🦙": "llama",
+ "🦒": "jirafa",
+ "🐘": "elefante",
+ "🦣": "mamut",
+ "🦏": "rinoceronte",
+ "🐭": "cara de ratón",
+ "🐰": "cara de conejo",
+ "🐿️": "ardilla",
+ "🦔": "erizo",
+ "🦇": "murciélago",
+ "🐻": "oso",
+ "🐨": "koala",
+ "🦥": "perezoso",
+ "🦦": "nutria",
+ "🦘": "canguro",
+ "🐥": "pollito de frente",
+ "🐦️": "pájaro",
+ "🕊️": "paloma",
+ "🦆": "pato",
+ "🦉": "búho",
+ "🦤": "dodo",
+ "🪶": "pluma",
+ "🦩": "flamenco",
+ "🦚": "pavo real",
+ "🦜": "loro",
+ "🐊": "cocodrilo",
+ "🐢": "tortuga",
+ "🦎": "lagarto",
+ "🐍": "serpiente",
+ "🐲": "cara de dragón",
+ "🦕": "saurópodo",
+ "🐳": "ballena soltando un chorro",
+ "🐬": "delfín",
+ "🦭": "foca",
+ "🐟️": "pez",
+ "🐠": "pez tropical",
+ "🦈": "tiburón",
+ "🐙": "pulpo",
+ "🐚": "concha de mar",
+ "🐌": "caracol",
+ "🦋": "mariposa",
+ "🐛": "insecto",
+ "🐝": "abeja",
+ "🐞": "mariquita",
+ "💐": "ramo de flores",
+ "🌹": "rosa",
+ "🌺": "flor de hibisco",
+ "🌻": "girasol",
+ "🌷": "tulipán",
+ "🌲": "árbol de hoja perenne",
+ "🌳": "árbol de hoja caduca",
+ "🌴": "palmera",
+ "🌵": "cactus",
+ "🌿": "hierba",
+ "🍁": "hoja de arce",
+ "🍇": "uvas",
+ "🍈": "melón",
+ "🍉": "sandía",
+ "🍊": "mandarina",
+ "🍋": "limón",
+ "🍌": "plátano",
+ "🍍": "piña",
+ "🥭": "mango",
+ "🍏": "manzana verde",
+ "🍐": "pera",
+ "🍑": "melocotón",
+ "🍒": "cerezas",
+ "🍓": "fresa",
+ "🫐": "arándanos",
+ "🥝": "kiwi",
+ "🍅": "tomate",
+ "🫒": "aceituna",
+ "🥥": "coco",
+ "🥑": "aguacate",
+ "🍆": "berenjena",
+ "🥕": "zanahoria",
+ "🌽": "espiga de maíz",
+ "🌶️": "chile picante",
+ "🥬": "verdura de hoja verde",
+ "🥦": "brócoli",
+ "🧅": "cebolla",
+ "🍄": "champiñón",
+ "🥜": "cacahuetes",
+ "🥐": "cruasán",
+ "🥖": "baguete",
+ "🥨": "bretzel",
+ "🥯": "bagel",
+ "🥞": "tortitas",
+ "🧇": "gofre",
+ "🍔": "hamburguesa",
+ "🍕": "pizza",
+ "🌭": "perrito caliente",
+ "🌮": "taco",
+ "🍿": "palomitas",
+ "🦀": "cangrejo",
+ "🦞": "bogavante",
+ "🍨": "helado",
+ "🍩": "dónut",
+ "🍪": "galleta",
+ "🎂": "tarta de cumpleaños",
+ "🧁": "magdalena",
+ "🍫": "tableta de chocolate",
+ "🍬": "caramelo",
+ "🍭": "piruleta",
+ "🫖": "tetera",
+ "🧃": "tetrabrik",
+ "🧉": "mate",
+ "🧭": "brújula",
+ "🏔️": "montaña con nieve",
+ "🌋": "volcán",
+ "🏕️": "camping",
+ "🏝️": "isla desierta",
+ "🏡": "casa con jardín",
+ "⛲️": "fuente",
+ "🎠": "caballo de tiovivo",
+ "🎡": "noria de feria",
+ "🎢": "montaña rusa",
+ "💈": "poste de barbero",
+ "🚆": "tren",
+ "🚋": "vagón de tranvía",
+ "🚍️": "autobús próximo",
+ "🚕": "taxi",
+ "🚗": "coche",
+ "🚚": "camión de reparto",
+ "🚜": "tractor",
+ "🛵": "scooter",
+ "🛺": "mototaxi",
+ "🛴": "patinete",
+ "🛹": "monopatín",
+ "🛼": "patines",
+ "⚓️": "ancla",
+ "⛵️": "velero",
+ "🛶": "canoa",
+ "🚤": "lancha motora",
+ "🚢": "barco",
+ "✈️": "avión",
+ "🚁": "helicóptero",
+ "🚠": "teleférico de montaña",
+ "🛰️": "satélite",
+ "🚀": "cohete",
+ "🛸": "platillo volante",
+ "⏰": "reloj despertador",
+ "🌙": "luna",
+ "🌡️": "termómetro",
+ "☀️": "sol",
+ "🪐": "planeta con anillos",
+ "🌟": "estrella brillante",
+ "🌀": "ciclón",
+ "🌈": "arcoíris",
+ "☂️": "paraguas",
+ "❄️": "copo de nieve",
+ "☄️": "meteorito",
+ "🔥": "fuego",
+ "💧": "gota",
+ "🌊": "ola de mar",
+ "🎃": "calabaza de Halloween",
+ "✨": "chispas",
+ "🎈": "globo",
+ "🎉": "cañón de confeti",
+ "🎏": "banderín de carpas",
+ "🎀": "lazo",
+ "🎁": "regalo",
+ "🎟️": "entradas",
+ "🏆️": "trofeo",
+ "⚽️": "balón de fútbol",
+ "🏀": "balón de baloncesto",
+ "🏈": "balón de fútbol americano",
+ "🎾": "pelota de tenis",
+ "🥏": "disco volador",
+ "🏓": "tenis de mesa",
+ "🏸": "bádminton",
+ "🤿": "máscara de buceo",
+ "🥌": "piedra de curling",
+ "🎯": "diana",
+ "🪀": "yoyó",
+ "🪁": "cometa",
+ "🔮": "bola de cristal",
+ "🎲": "dado",
+ "🧩": "pieza de puzle",
+ "🎨": "paleta de pintor",
+ "🧵": "hilo",
+ "👕": "camiseta",
+ "🧦": "calcetines",
+ "👗": "vestido",
+ "🩳": "pantalones cortos",
+ "🎒": "mochila escolar",
+ "👟": "zapatilla deportiva",
+ "👑": "corona",
+ "🧢": "gorra con visera",
+ "💄": "pintalabios",
+ "💍": "anillo",
+ "💎": "piedra preciosa",
+ "📢": "altavoz de mano",
+ "🎶": "notas musicales",
+ "🎙️": "micrófono de estudio",
+ "📻️": "radio",
+ "🎷": "saxofón",
+ "🪗": "acordeón",
+ "🎸": "guitarra",
+ "🎺": "trompeta",
+ "🎻": "violín",
+ "🪕": "banjo",
+ "🥁": "tambor",
+ "☎️": "teléfono",
+ "🔋": "pila",
+ "💿️": "disco óptico",
+ "🧮": "ábaco",
+ "🎬️": "claqueta",
+ "💡": "bombilla",
+ "🔦": "linterna",
+ "🏮": "lámpara japonesa",
+ "📕": "libro cerrado",
+ "🏷️": "etiqueta",
+ "💳️": "tarjeta de crédito",
+ "✏️": "lápiz",
+ "🖌️": "pincel",
+ "🖍️": "lápiz de cera",
+ "📌": "chincheta",
+ "📎": "clip",
+ "🔑": "llave",
+ "🪃": "bumerán",
+ "🏹": "arco y flecha",
+ "⚖️": "balanza",
+ "🧲": "imán",
+ "🧪": "tubo de ensayo",
+ "🧬": "adn",
+ "🔬": "microscopio",
+ "🔭": "telescopio",
+ "📡": "antena de satélite",
+ "🪑": "silla",
+ "🧹": "escoba",
+ "🗿": "estatua moái"
+ },
+ "fa": {
+ "👽️": "موجود فضایی",
+ "🤖": "روبات",
+ "🧠": "مغز",
+ "👁️": "چشم",
+ "🧙": "ساحر",
+ "🧚": "پری",
+ "🧜": "دریامردمان",
+ "🐵": "صورت میمون",
+ "🦧": "اورانگوتان",
+ "🐶": "صورت سگ",
+ "🐺": "گرگ",
+ "🦊": "روباه",
+ "🦝": "راکون",
+ "🐱": "صورت گربه",
+ "🦁": "شیر",
+ "🐯": "صورت ببر",
+ "🐴": "صورت اسب",
+ "🦄": "تکشاخ",
+ "🦓": "گورخر",
+ "🦌": "گوزن",
+ "🐮": "صورت گاو",
+ "🐷": "صورت خوک",
+ "🐗": "گراز نر",
+ "🐪": "شتر",
+ "🦙": "لاما",
+ "🦒": "زرافه",
+ "🐘": "فیل",
+ "🦣": "ماموت",
+ "🦏": "کرگدن",
+ "🐭": "صورت موش",
+ "🐰": "صورت خرگوش",
+ "🐿️": "سنجاب راهراه",
+ "🦔": "جوجهتیغی",
+ "🦇": "خفاش",
+ "🐻": "خرس",
+ "🐨": "کوآلا",
+ "🦥": "تنبل",
+ "🦦": "سمور آبی",
+ "🦘": "کانگورو",
+ "🐥": "جوجه از روبرو",
+ "🐦️": "پرنده",
+ "🕊️": "کبوتر",
+ "🦆": "مرغابی",
+ "🦉": "جغد",
+ "🦤": "دودو",
+ "🪶": "پَر",
+ "🦩": "فلامینگو",
+ "🦚": "طاووس",
+ "🦜": "طوطی",
+ "🐊": "تمساح",
+ "🐢": "لاکپشت",
+ "🦎": "مارمولک",
+ "🐍": "مار",
+ "🐲": "صورت اژدها",
+ "🦕": "سوسمار",
+ "🐳": "نهنگ در حال آبفشانی",
+ "🐬": "دلفین",
+ "🦭": "فُک",
+ "🐟️": "ماهی",
+ "🐠": "ماهی استوایی",
+ "🦈": "کوسه",
+ "🐙": "هشتپا",
+ "🐚": "صدف مارپیچی",
+ "🐌": "حلزون",
+ "🦋": "پروانه",
+ "🐛": "حشره",
+ "🐝": "زنبور عسل",
+ "🐞": "کفشدوزک",
+ "💐": "دسته گل",
+ "🌹": "رز",
+ "🌺": "گل ختمی",
+ "🌻": "گل آفتابگردان",
+ "🌷": "لاله",
+ "🌲": "همیشهسبز",
+ "🌳": "درخت سبز",
+ "🌴": "نخل",
+ "🌵": "کاکتوس",
+ "🌿": "گیاه دارویی",
+ "🍁": "برگ افرا",
+ "🍇": "انگور",
+ "🍈": "طالبی",
+ "🍉": "هندوانه",
+ "🍊": "نارنگی",
+ "🍋": "لیمو ترش",
+ "🍌": "موز",
+ "🍍": "آناناس",
+ "🥭": "انبه",
+ "🍏": "سیب سبز",
+ "🍐": "گلابی",
+ "🍑": "هلو",
+ "🍒": "گیلاس",
+ "🍓": "توتفرنگی",
+ "🫐": "توت آبی",
+ "🥝": "کیوی",
+ "🍅": "گوجهفرنگی",
+ "🫒": "زیتون",
+ "🥥": "نارگیل",
+ "🥑": "آووکادو",
+ "🍆": "بادمجان",
+ "🥕": "هویج",
+ "🌽": "بلال ذرت",
+ "🌶️": "فلفل قرمز",
+ "🥬": "برگسبز",
+ "🥦": "بروکلی",
+ "🧅": "پیاز",
+ "🍄": "قارچ",
+ "🥜": "بادام زمینی",
+ "🥐": "کرواسان",
+ "🥖": "نان باگت",
+ "🥨": "چوبشور",
+ "🥯": "نان بیگل",
+ "🥞": "پنکیک",
+ "🧇": "وافل",
+ "🍔": "همبرگر",
+ "🍕": "پیتزا",
+ "🌭": "هات داگ",
+ "🌮": "تاکو",
+ "🍿": "ذرت بوداده",
+ "🦀": "خرچنگ",
+ "🦞": "لابستر",
+ "🍨": "بستنی",
+ "🍩": "دونات",
+ "🍪": "کلوچه",
+ "🎂": "کیک تولد",
+ "🧁": "کیک فنجانی",
+ "🍫": "تخته شکلات",
+ "🍬": "آبنبات",
+ "🍭": "آبنباتچوبی",
+ "🫖": "قوری",
+ "🧃": "پاکت نوشیدنی",
+ "🧉": "ماته",
+ "🧭": "قطبنما",
+ "🏔️": "قلهٔ برفی",
+ "🌋": "آتشفشان",
+ "🏕️": "چادرزنی",
+ "🏝️": "جزیرهٔ خالی از سکنه",
+ "🏡": "خانهٔ حیاطدار",
+ "⛲️": "فواره",
+ "🎠": "چرخوفلک اسبی",
+ "🎡": "چرخوفلک",
+ "🎢": "ترن هوایی",
+ "💈": "چراغ سلمانی",
+ "🚆": "قطار",
+ "🚋": "قطار خیابانی",
+ "🚍️": "اتوبوس روبهجلو",
+ "🚕": "تاکسی",
+ "🚗": "خودرو",
+ "🚚": "کامیون پخش",
+ "🚜": "تراکتور",
+ "🛵": "اسکوتر",
+ "🛺": "اتوریکشا",
+ "🛴": "چرخ پایی",
+ "🛹": "تختهٔ اسکیت",
+ "🛼": "کفش اسکیت",
+ "⚓️": "لنگر",
+ "⛵️": "قایق بادبانی",
+ "🛶": "بلم",
+ "🚤": "قایق تندرو",
+ "🚢": "کشتی",
+ "✈️": "هواپیما",
+ "🚁": "هلیکوپتر",
+ "🚠": "تلهکابین کوهستانی",
+ "🛰️": "ماهواره",
+ "🚀": "موشک",
+ "🛸": "بشقابپرنده",
+ "⏰": "ساعت رومیزی",
+ "🌙": "هلال ماه",
+ "🌡️": "دماسنج",
+ "☀️": "خورشید",
+ "🪐": "سیاره حلقهدار",
+ "🌟": "ستاره درخشان",
+ "🌀": "چرخند",
+ "🌈": "رنگین کمان",
+ "☂️": "چتر",
+ "❄️": "برفدانه",
+ "☄️": "ستاره دنبالهدار",
+ "🔥": "آتش",
+ "💧": "قطره",
+ "🌊": "موج آب",
+ "🎃": "فانوس کدو تنبل",
+ "✨": "درخشش",
+ "🎈": "بادکنک",
+ "🎉": "بمب کاغذ رنگی",
+ "🎏": "پرچمهای ماهی در باد",
+ "🎀": "روبان",
+ "🎁": "هدیهٔ کادوشده",
+ "🎟️": "بلیت ورود",
+ "🏆️": "جام ورزشی",
+ "⚽️": "توپ فوتبال",
+ "🏀": "بسکتبال",
+ "🏈": "فوتبال امریکایی",
+ "🎾": "تنیس",
+ "🥏": "فریزبی",
+ "🏓": "پینگپونگ",
+ "🏸": "بدمینتون",
+ "🤿": "ماسک غواصی",
+ "🥌": "سنگ کرلینگ",
+ "🎯": "پیکان در قلب هدف",
+ "🪀": "یویو",
+ "🪁": "بادبادک",
+ "🔮": "گوی",
+ "🎲": "تاس بازی",
+ "🧩": "قطعه پازل",
+ "🎨": "پالت نقاشی",
+ "🧵": "نخ",
+ "👕": "تیشرت",
+ "🧦": "جوراب",
+ "👗": "پیراهن زنانه",
+ "🩳": "شلوارک",
+ "🎒": "کولهپشتی",
+ "👟": "کفش دویدن",
+ "👑": "تاج",
+ "🧢": "کلاه لبهدار",
+ "💄": "رژلب",
+ "💍": "حلقه",
+ "💎": "جواهر",
+ "📢": "بلندگو",
+ "🎶": "نتهای موسیقی",
+ "🎙️": "میکروفون استودیویی",
+ "📻️": "رادیو",
+ "🎷": "ساکسیفون",
+ "🪗": "آکوردئون",
+ "🎸": "گیتار",
+ "🎺": "ترومپت",
+ "🎻": "ویولن",
+ "🪕": "بانجو",
+ "🥁": "طبل",
+ "☎️": "تلفن",
+ "🔋": "باتری",
+ "💿️": "سیدی",
+ "🧮": "چرتکه",
+ "🎬️": "کلاکت",
+ "💡": "لامپ",
+ "🔦": "چراغقوه",
+ "🏮": "فانوس کاغذی قرمز",
+ "📕": "کتاب بسته",
+ "🏷️": "برچسب",
+ "💳️": "کارت اعتباری",
+ "✏️": "مداد",
+ "🖌️": "قلممو",
+ "🖍️": "مدادشمعی",
+ "📌": "سنجاق",
+ "📎": "گیرهٔ کاغذ",
+ "🔑": "کلید",
+ "🪃": "بومرنگ",
+ "🏹": "تیر و کمان",
+ "⚖️": "ترازو",
+ "🧲": "آهنربا",
+ "🧪": "لولهٔ آزمایشگاه",
+ "🧬": "دیانای",
+ "🔬": "میکروسکوپ",
+ "🔭": "تلسکوپ",
+ "📡": "آنتن ماهواره",
+ "🪑": "صندلی",
+ "🧹": "جارو",
+ "🗿": "سردیس موآی"
+ },
+ "fr": {
+ "👽️": "alien",
+ "🤖": "robot",
+ "🧠": "cerveau",
+ "👁️": "œil",
+ "🧙": "mage",
+ "🧚": "personnage féérique",
+ "🧜": "créature aquatique",
+ "🐵": "tête de singe",
+ "🦧": "orang-outan",
+ "🐶": "tête de chien",
+ "🐺": "loup",
+ "🦊": "renard",
+ "🦝": "raton laveur",
+ "🐱": "tête de chat",
+ "🦁": "tête de lion",
+ "🐯": "tête de tigre",
+ "🐴": "tête de cheval",
+ "🦄": "licorne",
+ "🦓": "zèbre",
+ "🦌": "cerf",
+ "🐮": "tête de vache",
+ "🐷": "tête de cochon",
+ "🐗": "sanglier",
+ "🐪": "dromadaire",
+ "🦙": "lama",
+ "🦒": "girafe",
+ "🐘": "éléphant",
+ "🦣": "mammouth",
+ "🦏": "rhinocéros",
+ "🐭": "tête de souris",
+ "🐰": "tête de lapin",
+ "🐿️": "écureuil",
+ "🦔": "hérisson",
+ "🦇": "chauve-souris",
+ "🐻": "ours",
+ "🐨": "koala",
+ "🦥": "paresseux",
+ "🦦": "loutre",
+ "🦘": "kangourou",
+ "🐥": "poussin de face",
+ "🐦️": "oiseau",
+ "🕊️": "colombe",
+ "🦆": "canard",
+ "🦉": "chouette",
+ "🦤": "dodo",
+ "🪶": "plume",
+ "🦩": "flamant",
+ "🦚": "paon",
+ "🦜": "perroquet",
+ "🐊": "crocodile",
+ "🐢": "tortue",
+ "🦎": "lézard",
+ "🐍": "serpent",
+ "🐲": "tête de dragon",
+ "🦕": "sauropode",
+ "🐳": "baleine soufflant par son évent",
+ "🐬": "dauphin",
+ "🦭": "phoque",
+ "🐟️": "poisson",
+ "🐠": "poisson tropical",
+ "🦈": "requin",
+ "🐙": "pieuvre",
+ "🐚": "coquille en spirale",
+ "🐌": "escargot",
+ "🦋": "papillon",
+ "🐛": "chenille",
+ "🐝": "abeille",
+ "🐞": "coccinelle",
+ "💐": "bouquet",
+ "🌹": "rose",
+ "🌺": "hibiscus",
+ "🌻": "tournesol",
+ "🌷": "tulipe",
+ "🌲": "conifère",
+ "🌳": "arbre à feuilles caduques",
+ "🌴": "palmier",
+ "🌵": "cactus",
+ "🌿": "feuille",
+ "🍁": "feuille d’érable",
+ "🍇": "raisin",
+ "🍈": "melon",
+ "🍉": "pastèque",
+ "🍊": "mandarine",
+ "🍋": "citron",
+ "🍌": "banane",
+ "🍍": "ananas",
+ "🥭": "mangue",
+ "🍏": "pomme verte",
+ "🍐": "poire",
+ "🍑": "pêche",
+ "🍒": "cerises",
+ "🍓": "fraise",
+ "🫐": "myrtilles",
+ "🥝": "kiwi",
+ "🍅": "tomate",
+ "🫒": "olive",
+ "🥥": "noix de coco",
+ "🥑": "avocat",
+ "🍆": "aubergine",
+ "🥕": "carotte",
+ "🌽": "épi de maïs",
+ "🌶️": "piment rouge",
+ "🥬": "légume à feuilles vertes",
+ "🥦": "brocoli",
+ "🧅": "oignon",
+ "🍄": "champignon",
+ "🥜": "cacahuètes",
+ "🥐": "croissant",
+ "🥖": "baguette",
+ "🥨": "bretzel",
+ "🥯": "bagel",
+ "🥞": "pancakes",
+ "🧇": "gaufre",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "pop-corn",
+ "🦀": "crabe",
+ "🦞": "homard",
+ "🍨": "glace",
+ "🍩": "doughnut",
+ "🍪": "cookie",
+ "🎂": "gâteau d’anniversaire",
+ "🧁": "cupcake",
+ "🍫": "barre chocolatée",
+ "🍬": "bonbon",
+ "🍭": "sucette",
+ "🫖": "théière",
+ "🧃": "briquette de jus",
+ "🧉": "maté",
+ "🧭": "boussole",
+ "🏔️": "montagne enneigée",
+ "🌋": "volcan",
+ "🏕️": "camping",
+ "🏝️": "île déserte",
+ "🏡": "maison avec jardin",
+ "⛲️": "fontaine",
+ "🎠": "cheval de manège",
+ "🎡": "grande roue",
+ "🎢": "montagnes russes",
+ "💈": "enseigne de barbier",
+ "🚆": "train",
+ "🚋": "wagon de tramway",
+ "🚍️": "bus de face",
+ "🚕": "taxi",
+ "🚗": "voiture",
+ "🚚": "camion de livraison",
+ "🚜": "tracteur",
+ "🛵": "scooter",
+ "🛺": "tuk tuk",
+ "🛴": "trottinette",
+ "🛹": "planche à roulettes",
+ "🛼": "patin à roulettes",
+ "⚓️": "ancre",
+ "⛵️": "voilier",
+ "🛶": "canoë",
+ "🚤": "hors-bord",
+ "🚢": "navire",
+ "✈️": "avion",
+ "🚁": "hélicoptère",
+ "🚠": "téléphérique",
+ "🛰️": "satellite",
+ "🚀": "fusée",
+ "🛸": "soucoupe volante",
+ "⏰": "réveil",
+ "🌙": "croissant de lune",
+ "🌡️": "thermomètre",
+ "☀️": "soleil",
+ "🪐": "planète à anneaux",
+ "🌟": "étoile brillante",
+ "🌀": "cyclone",
+ "🌈": "arc-en-ciel",
+ "☂️": "parapluie ouvert",
+ "❄️": "flocon",
+ "☄️": "comète",
+ "🔥": "feu",
+ "💧": "goutte d’eau",
+ "🌊": "vague",
+ "🎃": "citrouille",
+ "✨": "étincelles",
+ "🎈": "ballon gonflable",
+ "🎉": "cotillons",
+ "🎏": "koinobori",
+ "🎀": "ruban",
+ "🎁": "cadeau",
+ "🎟️": "billet d’entrée",
+ "🏆️": "trophée",
+ "⚽️": "ballon de football",
+ "🏀": "basket",
+ "🏈": "football américain",
+ "🎾": "tennis",
+ "🥏": "disque volant",
+ "🏓": "ping-pong",
+ "🏸": "badminton",
+ "🤿": "masque de plongée",
+ "🥌": "pierre de curling",
+ "🎯": "dans le mille",
+ "🪀": "yoyo",
+ "🪁": "cerf-volant",
+ "🔮": "boule de cristal",
+ "🎲": "dés",
+ "🧩": "pièce de puzzle",
+ "🎨": "palette de peinture",
+ "🧵": "bobine de fil",
+ "👕": "T-shirt",
+ "🧦": "chaussettes",
+ "👗": "robe",
+ "🩳": "short",
+ "🎒": "cartable",
+ "👟": "chaussure de sport",
+ "👑": "couronne",
+ "🧢": "casquette américaine",
+ "💄": "rouge à lèvres",
+ "💍": "bague",
+ "💎": "pierre précieuse",
+ "📢": "haut-parleur",
+ "🎶": "notes de musique",
+ "🎙️": "micro de studio",
+ "📻️": "radio",
+ "🎷": "saxophone",
+ "🪗": "accordéon",
+ "🎸": "guitare",
+ "🎺": "trompette",
+ "🎻": "violon",
+ "🪕": "banjo",
+ "🥁": "batterie",
+ "☎️": "téléphone",
+ "🔋": "pile",
+ "💿️": "CD",
+ "🧮": "abaque",
+ "🎬️": "clap",
+ "💡": "ampoule",
+ "🔦": "torche",
+ "🏮": "lampion rouge",
+ "📕": "livre fermé",
+ "🏷️": "étiquette",
+ "💳️": "carte bancaire",
+ "✏️": "crayon",
+ "🖌️": "pinceau",
+ "🖍️": "crayon pastel",
+ "📌": "punaise",
+ "📎": "trombone",
+ "🔑": "clé",
+ "🪃": "boomerang",
+ "🏹": "arc et flèche",
+ "⚖️": "balance à poids",
+ "🧲": "aimant",
+ "🧪": "tube à essai",
+ "🧬": "adn",
+ "🔬": "microscope",
+ "🔭": "télescope",
+ "📡": "antenne satellite",
+ "🪑": "chaise",
+ "🧹": "balai",
+ "🗿": "moai"
+ },
+ "ga": {
+ "👽️": "eachtrán",
+ "🤖": "róbat",
+ "🧠": "inchinn",
+ "👁️": "súil",
+ "🧙": "duine draíochta",
+ "🧚": "síog",
+ "🧜": "duine murúch",
+ "🐵": "aghaidh moncaí",
+ "🦧": "órang-útan",
+ "🐶": "aghaidh madra",
+ "🐺": "aghaidh mic tíre",
+ "🦊": "aghaidh sionnaigh",
+ "🦝": "racún",
+ "🐱": "aghaidh cait",
+ "🦁": "aghaidh leoin",
+ "🐯": "aghaidh tíogair",
+ "🐴": "aghaidh capaill",
+ "🦄": "aghaidh aonbheannaigh",
+ "🦓": "séabra",
+ "🦌": "fia",
+ "🐮": "aghaidh bó",
+ "🐷": "aghaidh muice",
+ "🐗": "torc",
+ "🐪": "camall",
+ "🦙": "láma",
+ "🦒": "sioráf",
+ "🐘": "eilifint",
+ "🦣": "mamat",
+ "🦏": "srónbheannach",
+ "🐭": "aghaidh luiche",
+ "🐰": "aghaidh coinín",
+ "🐿️": "iora talún",
+ "🦔": "gráinneog",
+ "🦇": "ialtóg",
+ "🐻": "aghaidh béair",
+ "🐨": "cóála",
+ "🦥": "spadán",
+ "🦦": "madra uisce",
+ "🦘": "cangarú",
+ "🐥": "gearrshicín éadain",
+ "🐦️": "éan",
+ "🕊️": "colm",
+ "🦆": "lacha",
+ "🦉": "ulchabhán",
+ "🦤": "dódó",
+ "🪶": "cleite",
+ "🦩": "lasairéan",
+ "🦚": "péacóg",
+ "🦜": "pearóid",
+ "🐊": "crogall",
+ "🐢": "turtar",
+ "🦎": "earc luachra",
+ "🐍": "nathair",
+ "🐲": "aghaidh dragain",
+ "🦕": "sárapód",
+ "🐳": "míol mór ag séideadh",
+ "🐬": "deilf",
+ "🦭": "rón",
+ "🐟️": "iasc",
+ "🐠": "iasc teochreasa",
+ "🦈": "siorc",
+ "🐙": "ochtapas",
+ "🐚": "sliogán",
+ "🐌": "seilide",
+ "🦋": "féileacán",
+ "🐛": "míol",
+ "🐝": "beach mheala",
+ "🐞": "bóín",
+ "💐": "crobhaing bláthanna",
+ "🌹": "rós",
+ "🌺": "roiseog",
+ "🌻": "lus na gréine",
+ "🌷": "tiúilip",
+ "🌲": "crann síorghlas",
+ "🌳": "crann duillsilteach",
+ "🌴": "pailm",
+ "🌵": "cachtas",
+ "🌿": "luibh",
+ "🍁": "duilleog mhailpe",
+ "🍇": "caora fíniúna",
+ "🍈": "mealbhacán",
+ "🍉": "mealbhacán uisce",
+ "🍊": "táinséirín",
+ "🍋": "líomóid",
+ "🍌": "banana",
+ "🍍": "anann",
+ "🥭": "mangó",
+ "🍏": "úll glas",
+ "🍐": "piorra",
+ "🍑": "péitseog",
+ "🍒": "silíní",
+ "🍓": "sú talún",
+ "🫐": "fraochán",
+ "🥝": "cíobhaí",
+ "🍅": "tráta",
+ "🫒": "ológ",
+ "🥥": "cnó cócó",
+ "🥑": "abhacád",
+ "🍆": "ubhthoradh",
+ "🥕": "meacan dearg",
+ "🌽": "dias arbhair",
+ "🌶️": "píobar te",
+ "🥬": "glasra duilleach",
+ "🥦": "brocailí",
+ "🧅": "oiniún",
+ "🍄": "beacán",
+ "🥜": "pis talún",
+ "🥐": "croissant",
+ "🥖": "baguette",
+ "🥨": "preatsal",
+ "🥯": "béigeal",
+ "🥞": "pancóga",
+ "🧇": "vaifeal",
+ "🍔": "burgar",
+ "🍕": "píotsa",
+ "🌭": "brocaire te",
+ "🌮": "taco",
+ "🍿": "grán rósta",
+ "🦀": "portán",
+ "🦞": "gliomach",
+ "🍨": "uachtar reoite",
+ "🍩": "taoschnó",
+ "🍪": "briosca",
+ "🎂": "cáca breithe",
+ "🧁": "cístín cupa",
+ "🍫": "seacláid",
+ "🍬": "milseán",
+ "🍭": "líreacán",
+ "🫖": "taephota",
+ "🧃": "bosca dí",
+ "🧉": "maité",
+ "🧭": "compás",
+ "🏔️": "sliabh le sneachta",
+ "🌋": "bolcán",
+ "🏕️": "ag campáil",
+ "🏝️": "oileán díthreibhe",
+ "🏡": "teach le gairdín",
+ "⛲️": "scairdeán",
+ "🎠": "capall an roithleagáin ró",
+ "🎡": "roth Ferris",
+ "🎢": "rollchóstóir",
+ "💈": "cuaille bearbóra",
+ "🚆": "traein",
+ "🚋": "carráiste tram",
+ "🚍️": "bus atá ag teacht",
+ "🚕": "tacsaí",
+ "🚗": "gluaisteán",
+ "🚚": "trucail seachadta",
+ "🚜": "tarracóir",
+ "🛵": "scútar",
+ "🛺": "ricseá uathoibríoch",
+ "🛴": "scútar gan inneall",
+ "🛹": "clár scátála",
+ "🛼": "scáta rothach",
+ "⚓️": "ancaire",
+ "⛵️": "bád seoil",
+ "🛶": "canú",
+ "🚤": "luasbhád",
+ "🚢": "long",
+ "✈️": "eitleán",
+ "🚁": "héileacaptar",
+ "🚠": "cáblabhealach sléibhe",
+ "🛰️": "satailít",
+ "🚀": "roicéad",
+ "🛸": "sásar eitilte",
+ "⏰": "clog aláraim",
+ "🌙": "corrán gealaí",
+ "🌡️": "teirmiméadar",
+ "☀️": "grian",
+ "🪐": "pláinéad le fáinne",
+ "🌟": "réalta ag lonrú",
+ "🌀": "cioclón",
+ "🌈": "bogha báistí",
+ "☂️": "scáth báistí",
+ "❄️": "calóg shneachta",
+ "☄️": "cóiméad",
+ "🔥": "tine",
+ "💧": "braoinín",
+ "🌊": "tonn san uisce",
+ "🎃": "Seán na gealaí",
+ "✨": "drithlí",
+ "🎈": "balún",
+ "🎉": "pléiscín cóisire",
+ "🎏": "sraoilleán éisc",
+ "🎀": "ribín",
+ "🎁": "bronntanas",
+ "🎟️": "ticéid cead isteach",
+ "🏆️": "corn",
+ "⚽️": "liathróid sacair",
+ "🏀": "cispheil",
+ "🏈": "peil Mheiriceánach",
+ "🎾": "leadóg",
+ "🥏": "diosca eitilte",
+ "🏓": "ping pang",
+ "🏸": "badmantan",
+ "🤿": "masc tumadóireachta",
+ "🥌": "cloch churlála",
+ "🎯": "buille díreach",
+ "🪀": "yó-yó",
+ "🪁": "eitleog",
+ "🔮": "cruinneog chriostail",
+ "🎲": "dísle",
+ "🧩": "mír mearaí",
+ "🎨": "pailéad dathanna",
+ "🧵": "snáth",
+ "👕": "t-léine",
+ "🧦": "stocaí",
+ "👗": "gúna",
+ "🩳": "brístí gearra",
+ "🎒": "mála scoile",
+ "👟": "bróg reatha",
+ "👑": "coróin",
+ "🧢": "caipín speiceach",
+ "💄": "béaldath",
+ "💍": "fáinne",
+ "💎": "geamchloch",
+ "📢": "callaire",
+ "🎶": "nótaí ceoil",
+ "🎙️": "micreafón stiúideo",
+ "📻️": "raidió",
+ "🎷": "sacsafón",
+ "🪗": "bosca ceoil",
+ "🎸": "giotár",
+ "🎺": "trumpa",
+ "🎻": "veidhlín",
+ "🪕": "bainseó",
+ "🥁": "druma",
+ "☎️": "teileafón",
+ "🔋": "ceallra",
+ "💿️": "diosca optúil",
+ "🧮": "abacas",
+ "🎬️": "clabaire",
+ "💡": "bolgán solais",
+ "🔦": "tóirse",
+ "🏮": "laindéar dearg",
+ "📕": "leabhar dúnta",
+ "🏷️": "lipéad",
+ "💳️": "cárta creidmheasa",
+ "✏️": "peann luaidhe",
+ "🖌️": "scuab phéinteála",
+ "🖍️": "crián",
+ "📌": "tacóid ordóige",
+ "📎": "fáiscín páipéir",
+ "🔑": "eochair",
+ "🪃": "búmarang",
+ "🏹": "saighead is bogha",
+ "⚖️": "scála",
+ "🧲": "maighnéad",
+ "🧪": "triaileadán",
+ "🧬": "ADN",
+ "🔬": "micreascóp",
+ "🔭": "teileascóp",
+ "📡": "aeróg satailíte",
+ "🪑": "cathaoir",
+ "🧹": "scruab",
+ "🗿": "dealbh Oileán na Cásca"
+ },
+ "he": {
+ "👽️": "חייזר",
+ "🤖": "רובוט",
+ "🧠": "מוח",
+ "👁️": "עין",
+ "🧙": "קוסם",
+ "🧚": "פיה",
+ "🧜": "בתולת ים",
+ "🐵": "פני קוף",
+ "🦧": "אורנגאוטן",
+ "🐶": "פני כלב",
+ "🐺": "זאב",
+ "🦊": "שועל",
+ "🦝": "רקון",
+ "🐱": "פני חתול",
+ "🦁": "אריה",
+ "🐯": "פני טיגריס",
+ "🐴": "פני סוס",
+ "🦄": "חד קרן",
+ "🦓": "זברה",
+ "🦌": "אייל",
+ "🐮": "פני פרה",
+ "🐷": "פני חזיר",
+ "🐗": "חזיר בר",
+ "🐪": "גמל",
+ "🦙": "למה",
+ "🦒": "ג׳ירף",
+ "🐘": "פיל",
+ "🦣": "ממותה",
+ "🦏": "קרנף",
+ "🐭": "פני עכבר",
+ "🐰": "פני ארנב",
+ "🐿️": "סנאי",
+ "🦔": "קיפוד",
+ "🦇": "עטלף",
+ "🐻": "דוב",
+ "🐨": "קואלה",
+ "🦥": "עצלן",
+ "🦦": "לוטרה",
+ "🦘": "קנגורו",
+ "🐥": "אפרוח מלפנים",
+ "🐦️": "ציפור",
+ "🕊️": "יונה",
+ "🦆": "ברווז",
+ "🦉": "ינשוף",
+ "🦤": "ציפור דודו",
+ "🪶": "נוצה",
+ "🦩": "פלמינגו",
+ "🦚": "טווס",
+ "🦜": "תוכי",
+ "🐊": "תנין",
+ "🐢": "צב",
+ "🦎": "לטאה",
+ "🐍": "נחש",
+ "🐲": "פני דרקון",
+ "🦕": "סרופוד",
+ "🐳": "לווייתן מתיז סילון מים",
+ "🐬": "דולפין",
+ "🦭": "כלב ים",
+ "🐟️": "דג",
+ "🐠": "דג טרופי",
+ "🦈": "כריש",
+ "🐙": "תמנון",
+ "🐚": "צדף מסולסל",
+ "🐌": "חלזון",
+ "🦋": "פרפר",
+ "🐛": "זחל",
+ "🐝": "דבורה",
+ "🐞": "פרת משה רבנו",
+ "💐": "זר פרחים",
+ "🌹": "ורד",
+ "🌺": "היביסקוס",
+ "🌻": "חמניה",
+ "🌷": "צבעוני",
+ "🌲": "עץ ירוק-עד",
+ "🌳": "עץ נשיר",
+ "🌴": "עץ דקל",
+ "🌵": "קקטוס",
+ "🌿": "צמח תבלין",
+ "🍁": "עלה מייפל",
+ "🍇": "ענבים",
+ "🍈": "מלון",
+ "🍉": "אבטיח",
+ "🍊": "קלמנטינה",
+ "🍋": "לימון",
+ "🍌": "בננה",
+ "🍍": "אננס",
+ "🥭": "מנגו",
+ "🍏": "תפוח ירוק",
+ "🍐": "אגס",
+ "🍑": "אפרסק",
+ "🍒": "דובדבנים",
+ "🍓": "תות שדה",
+ "🫐": "אוכמניות",
+ "🥝": "קיווי",
+ "🍅": "עגבנייה",
+ "🫒": "זית",
+ "🥥": "קוקוס",
+ "🥑": "אבוקדו",
+ "🍆": "חציל",
+ "🥕": "גזר",
+ "🌽": "קלח תירס",
+ "🌶️": "פלפל חריף",
+ "🥬": "עלים ירוקים",
+ "🥦": "ברוקולי",
+ "🧅": "בצל",
+ "🍄": "פטריה",
+ "🥜": "בוטנים",
+ "🥐": "קרואסון",
+ "🥖": "באגט",
+ "🥨": "בייגלה",
+ "🥯": "בייגל",
+ "🥞": "פנקייקס",
+ "🧇": "וופל",
+ "🍔": "המבורגר",
+ "🍕": "פיצה",
+ "🌭": "נקניקייה בלחמניה",
+ "🌮": "טאקו",
+ "🍿": "פופקורן",
+ "🦀": "סרטן",
+ "🦞": "לובסטר",
+ "🍨": "גלידה",
+ "🍩": "סופגניה",
+ "🍪": "עוגיה",
+ "🎂": "עוגת יום הולדת",
+ "🧁": "קפקייק",
+ "🍫": "חפיסת שוקולד",
+ "🍬": "סוכריה",
+ "🍭": "סוכריה על מקל",
+ "🫖": "קנקן תה",
+ "🧃": "קופסת מיץ",
+ "🧉": "מאטה",
+ "🧭": "מצפן",
+ "🏔️": "הר עם פסגה מושלגת",
+ "🌋": "הר געש",
+ "🏕️": "מחנאות",
+ "🏝️": "אי בודד",
+ "🏡": "בית עם גינה",
+ "⛲️": "מזרקה",
+ "🎠": "סוס בקרוסלה",
+ "🎡": "גלגל ענק",
+ "🎢": "רכבת הרים",
+ "💈": "עמוד מספרה",
+ "🚆": "רכבת",
+ "🚋": "קרון חשמלית",
+ "🚍️": "אוטובוס מלפנים",
+ "🚕": "מונית",
+ "🚗": "מכונית",
+ "🚚": "משאית",
+ "🚜": "טרקטור",
+ "🛵": "קטנוע",
+ "🛺": "ריקשה ממונעת",
+ "🛴": "קורקינט",
+ "🛹": "סקייטבורד",
+ "🛼": "גלגיליות",
+ "⚓️": "עוגן",
+ "⛵️": "סירת מפרש",
+ "🛶": "קאנו",
+ "🚤": "סירת מירוץ",
+ "🚢": "ספינה",
+ "✈️": "מטוס",
+ "🚁": "מסוק",
+ "🚠": "קרון רכבל",
+ "🛰️": "לוויין",
+ "🚀": "טיל",
+ "🛸": "צלחת מעופפת",
+ "⏰": "שעון מעורר",
+ "🌙": "סהר",
+ "🌡️": "מדחום",
+ "☀️": "שמש",
+ "🪐": "כוכב לכת עם טבעות",
+ "🌟": "כוכב זוהר",
+ "🌀": "הוריקן",
+ "🌈": "קשת בענן",
+ "☂️": "מטריה",
+ "❄️": "פתית שלג",
+ "☄️": "שביט",
+ "🔥": "אש",
+ "💧": "טיפה",
+ "🌊": "גל",
+ "🎃": "מנורת דלעת",
+ "✨": "נצנוץ",
+ "🎈": "בלון",
+ "🎉": "פצצת קונפטי",
+ "🎏": "דגלים בצורת דגי קוי",
+ "🎀": "סרט מתנה",
+ "🎁": "קופסת מתנה",
+ "🎟️": "כרטיס כניסה",
+ "🏆️": "גביע",
+ "⚽️": "כדורגל",
+ "🏀": "כדור סל",
+ "🏈": "פוטבול אמריקאי",
+ "🎾": "כדור טניס",
+ "🥏": "פריזבי",
+ "🏓": "פינג פונג",
+ "🏸": "בדמינטון",
+ "🤿": "מסיכת צלילה",
+ "🥌": "אבן קרלינג",
+ "🎯": "פגיעה בול",
+ "🪀": "יו-יו",
+ "🪁": "עפיפון",
+ "🔮": "כדור בדולח",
+ "🎲": "קוביית משחק",
+ "🧩": "חלק בפאזל",
+ "🎨": "פלטת צבעים",
+ "🧵": "חוט",
+ "👕": "חולצת טי",
+ "🧦": "גרביים",
+ "👗": "שמלה",
+ "🩳": "מכנסיים קצרים",
+ "🎒": "ילקוט",
+ "👟": "נעל ריצה",
+ "👑": "כתר",
+ "🧢": "כובע מצחייה",
+ "💄": "שפתון",
+ "💍": "טבעת",
+ "💎": "יהלום",
+ "📢": "מגפון",
+ "🎶": "תווים מוזיקליים",
+ "🎙️": "מיקרופון אולפן",
+ "📻️": "רדיו",
+ "🎷": "סקסופון",
+ "🪗": "אקורדיון",
+ "🎸": "גיטרה",
+ "🎺": "חצוצרה",
+ "🎻": "כינור",
+ "🪕": "בנג׳ו",
+ "🥁": "תוף",
+ "☎️": "טלפון רגיל",
+ "🔋": "סוללה",
+ "💿️": "דיסק אופטי",
+ "🧮": "חשבונייה",
+ "🎬️": "קלאפר",
+ "💡": "נורה",
+ "🔦": "פנס",
+ "🏮": "פנס נייר אדום",
+ "📕": "ספר סגור",
+ "🏷️": "תווית",
+ "💳️": "כרטיס אשראי",
+ "✏️": "עיפרון",
+ "🖌️": "מכחול",
+ "🖍️": "צבע פנדה",
+ "📌": "נעץ",
+ "📎": "אטב נייר",
+ "🔑": "מפתח",
+ "🪃": "בומרנג",
+ "🏹": "חץ וקשת",
+ "⚖️": "מאזניים",
+ "🧲": "מגנט",
+ "🧪": "מבחנה",
+ "🧬": "די אנ איי",
+ "🔬": "מיקרוסקופ",
+ "🔭": "טלסקופ",
+ "📡": "צלחת לוויין",
+ "🪑": "כיסא",
+ "🧹": "מטאטא",
+ "🗿": "פסל מאיי הפסחא"
+ },
+ "hu": {
+ "👽️": "földönkívüli",
+ "🤖": "robot",
+ "🧠": "agy",
+ "👁️": "szem",
+ "🧙": "varázsló",
+ "🧚": "tündér",
+ "🧜": "sellő",
+ "🐵": "majomfej",
+ "🦧": "orangután",
+ "🐶": "kutyafej",
+ "🐺": "farkasfej",
+ "🦊": "rókafej",
+ "🦝": "mosómedve",
+ "🐱": "macskafej",
+ "🦁": "oroszlánfej",
+ "🐯": "tigrisfej",
+ "🐴": "lófej",
+ "🦄": "unikornisfej",
+ "🦓": "zebra",
+ "🦌": "szarvas",
+ "🐮": "tehénfej",
+ "🐷": "malacfej",
+ "🐗": "vaddisznó",
+ "🐪": "teve",
+ "🦙": "láma",
+ "🦒": "zsiráf",
+ "🐘": "elefánt",
+ "🦣": "mamut",
+ "🦏": "orrszarvú",
+ "🐭": "egérfej",
+ "🐰": "nyúlfej",
+ "🐿️": "mókus",
+ "🦔": "sün",
+ "🦇": "denevér",
+ "🐻": "medvefej",
+ "🐨": "koala",
+ "🦥": "lajhár",
+ "🦦": "vidra",
+ "🦘": "kenguru",
+ "🐥": "előre néző kiscsibe",
+ "🐦️": "madár",
+ "🕊️": "galamb",
+ "🦆": "kacsa",
+ "🦉": "bagoly",
+ "🦤": "dodó",
+ "🪶": "madártoll",
+ "🦩": "flamingó",
+ "🦚": "páva",
+ "🦜": "papagáj",
+ "🐊": "krokodil",
+ "🐢": "teknős",
+ "🦎": "gyík",
+ "🐍": "kígyó",
+ "🐲": "sárkányfej",
+ "🦕": "sauropoda",
+ "🐳": "fröcskölő bálna",
+ "🐬": "delfin",
+ "🦭": "fóka",
+ "🐟️": "hal",
+ "🐠": "trópusi hal",
+ "🦈": "cápa",
+ "🐙": "polip",
+ "🐚": "tengeri csiga",
+ "🐌": "csiga",
+ "🦋": "pillangó",
+ "🐛": "rovar",
+ "🐝": "méh",
+ "🐞": "katica",
+ "💐": "csokor",
+ "🌹": "rózsa",
+ "🌺": "hibiszkusz",
+ "🌻": "napraforgó",
+ "🌷": "tulipán",
+ "🌲": "örökzöld",
+ "🌳": "lombhullató fa",
+ "🌴": "pálmafa",
+ "🌵": "kaktusz",
+ "🌿": "gyógynövény",
+ "🍁": "juharlevél",
+ "🍇": "szőlő",
+ "🍈": "sárgadinnye",
+ "🍉": "görögdinnye",
+ "🍊": "mandarin",
+ "🍋": "citrom",
+ "🍌": "banán",
+ "🍍": "ananász",
+ "🥭": "mangó",
+ "🍏": "zöld alma",
+ "🍐": "körte",
+ "🍑": "őszibarack",
+ "🍒": "cseresznye",
+ "🍓": "eper",
+ "🫐": "áfonya",
+ "🥝": "kivi",
+ "🍅": "paradicsom",
+ "🫒": "olajbogyó",
+ "🥥": "kókuszdió",
+ "🥑": "avokádó",
+ "🍆": "padlizsán",
+ "🥕": "sárgarépa",
+ "🌽": "kukoricacső",
+ "🌶️": "erőspaprika",
+ "🥬": "leveles zöldség",
+ "🥦": "brokkoli",
+ "🧅": "hagyma",
+ "🍄": "gomba",
+ "🥜": "földimogyoró",
+ "🥐": "croissant",
+ "🥖": "bagett",
+ "🥨": "perec",
+ "🥯": "bagel",
+ "🥞": "palacsinta",
+ "🧇": "gofri",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "pattogatott kukorica",
+ "🦀": "rák",
+ "🦞": "homár",
+ "🍨": "fagylalt",
+ "🍩": "fánk",
+ "🍪": "sütemény",
+ "🎂": "születésnapi torta",
+ "🧁": "cupcake",
+ "🍫": "csokoládé",
+ "🍬": "cukorka",
+ "🍭": "nyalóka",
+ "🫖": "teáskanna",
+ "🧃": "italos doboz",
+ "🧉": "maté",
+ "🧭": "iránytű",
+ "🏔️": "hegy hótakaróval",
+ "🌋": "vulkán",
+ "🏕️": "sátorozás",
+ "🏝️": "lakatlan sziget",
+ "🏡": "ház kerttel",
+ "⛲️": "szökőkút",
+ "🎠": "ló a körhintáról",
+ "🎡": "óriáskerék",
+ "🎢": "hullámvasút",
+ "💈": "fodrászcégér",
+ "🚆": "vonat",
+ "🚋": "villamoskocsi",
+ "🚍️": "érkező busz",
+ "🚕": "taxi",
+ "🚗": "autó",
+ "🚚": "teherautó",
+ "🚜": "traktor",
+ "🛵": "robogó",
+ "🛺": "motoros riksa",
+ "🛴": "roller",
+ "🛹": "gördeszka",
+ "🛼": "görkorcsolya",
+ "⚓️": "vasmacska",
+ "⛵️": "vitorlás hajó",
+ "🛶": "kenu",
+ "🚤": "motoros siklócsónak",
+ "🚢": "hajó",
+ "✈️": "repülőgép",
+ "🚁": "helikopter",
+ "🚠": "hegyi felvonó",
+ "🛰️": "műhold",
+ "🚀": "rakéta",
+ "🛸": "repülő csészealj",
+ "⏰": "ébresztőóra",
+ "🌙": "növekvő hold",
+ "🌡️": "hőmérő",
+ "☀️": "nap",
+ "🪐": "gyűrűs bolygó",
+ "🌟": "fénylő csillag",
+ "🌀": "ciklon",
+ "🌈": "szivárvány",
+ "☂️": "esernyő",
+ "❄️": "hópehely",
+ "☄️": "üstökös",
+ "🔥": "tűz",
+ "💧": "csepp",
+ "🌊": "vízhullám",
+ "🎃": "töklámpás",
+ "✨": "szikrák",
+ "🎈": "léggömb",
+ "🎉": "partikellékek",
+ "🎏": "rizspapír pontyok",
+ "🎀": "szalag",
+ "🎁": "becsomagolt ajándék",
+ "🎟️": "belépőjegyek",
+ "🏆️": "kupa",
+ "⚽️": "foci",
+ "🏀": "kosárlabda",
+ "🏈": "amerikai foci",
+ "🎾": "tenisz",
+ "🥏": "frizbi",
+ "🏓": "pingpong",
+ "🏸": "tollaslabda",
+ "🤿": "búvármaszk",
+ "🥌": "curlingkő",
+ "🎯": "telitalálat",
+ "🪀": "jojó",
+ "🪁": "papírsárkány",
+ "🔮": "kristálygömb",
+ "🎲": "dobókocka",
+ "🧩": "kirakó",
+ "🎨": "festőpaletta",
+ "🧵": "cérna",
+ "👕": "póló",
+ "🧦": "zokni",
+ "👗": "ruha",
+ "🩳": "rövidnadrág",
+ "🎒": "iskolatáska",
+ "👟": "futócipő",
+ "👑": "korona",
+ "🧢": "sildes sapka",
+ "💄": "ajakrúzs",
+ "💍": "gyűrű",
+ "💎": "ékkő",
+ "📢": "hangosbeszélő",
+ "🎶": "hangjegyek",
+ "🎙️": "stúdiómikrofon",
+ "📻️": "rádió",
+ "🎷": "szaxofon",
+ "🪗": "harmonika",
+ "🎸": "gitár",
+ "🎺": "trombita",
+ "🎻": "hegedű",
+ "🪕": "bendzsó",
+ "🥁": "dob",
+ "☎️": "telefon",
+ "🔋": "elem",
+ "💿️": "optikai lemez",
+ "🧮": "abakusz",
+ "🎬️": "csapó",
+ "💡": "villanykörte",
+ "🔦": "zseblámpa",
+ "🏮": "piros papírlámpa",
+ "📕": "becsukott könyv",
+ "🏷️": "címke",
+ "💳️": "hitelkártya",
+ "✏️": "ceruza",
+ "🖌️": "ecset",
+ "🖍️": "zsírkréta",
+ "📌": "rajzszög",
+ "📎": "gemkapocs",
+ "🔑": "kulcs",
+ "🪃": "bumeráng",
+ "🏹": "íj és nyíl",
+ "⚖️": "kétkarú mérleg",
+ "🧲": "mágnes",
+ "🧪": "kémcső",
+ "🧬": "DNS",
+ "🔬": "mikroszkóp",
+ "🔭": "távcső",
+ "📡": "parabolaantenna",
+ "🪑": "szék",
+ "🧹": "seprű",
+ "🗿": "moai"
+ },
+ "id": {
+ "👽️": "alien",
+ "🤖": "robot",
+ "🧠": "otak",
+ "👁️": "satu mata",
+ "🧙": "magi",
+ "🧚": "peri",
+ "🧜": "orang duyung",
+ "🐵": "wajah monyet",
+ "🦧": "orangutan",
+ "🐶": "wajah anjing",
+ "🐺": "serigala",
+ "🦊": "rubah",
+ "🦝": "rakun",
+ "🐱": "wajah kucing",
+ "🦁": "singa",
+ "🐯": "wajah harimau",
+ "🐴": "wajah kuda",
+ "🦄": "unicorn",
+ "🦓": "zebra",
+ "🦌": "rusa",
+ "🐮": "wajah sapi",
+ "🐷": "wajah babi",
+ "🐗": "babi hutan",
+ "🐪": "unta",
+ "🦙": "llama",
+ "🦒": "jerapah",
+ "🐘": "gajah",
+ "🦣": "mamut",
+ "🦏": "badak",
+ "🐭": "wajah tikus",
+ "🐰": "wajah kelinci",
+ "🐿️": "tupai",
+ "🦔": "landak",
+ "🦇": "kelelawar",
+ "🐻": "beruang",
+ "🐨": "koala",
+ "🦥": "kungkang",
+ "🦦": "berang-berang",
+ "🦘": "kanguru",
+ "🐥": "itik bayi menghadap ke depan",
+ "🐦️": "burung",
+ "🕊️": "merpati",
+ "🦆": "bebek",
+ "🦉": "burung hantu",
+ "🦤": "dodo",
+ "🪶": "bulu",
+ "🦩": "flamingo",
+ "🦚": "merak",
+ "🦜": "nuri",
+ "🐊": "buaya",
+ "🐢": "kura-kura",
+ "🦎": "kadal",
+ "🐍": "ular",
+ "🐲": "wajah naga",
+ "🦕": "sauropod",
+ "🐳": "ikan paus menyembur",
+ "🐬": "lumba-lumba",
+ "🦭": "anjing laut",
+ "🐟️": "ikan",
+ "🐠": "ikan tropis",
+ "🦈": "hiu",
+ "🐙": "gurita",
+ "🐚": "cangkang spiral",
+ "🐌": "siput",
+ "🦋": "kupu-kupu",
+ "🐛": "serangga kecil",
+ "🐝": "lebah madu",
+ "🐞": "kumbang betina",
+ "💐": "karangan bunga",
+ "🌹": "mawar",
+ "🌺": "kembang sepatu",
+ "🌻": "bunga matahari",
+ "🌷": "tulip",
+ "🌲": "pohon hijau abadi",
+ "🌳": "pohon meranggas",
+ "🌴": "pohon palem",
+ "🌵": "kaktus",
+ "🌿": "herba",
+ "🍁": "daun maple",
+ "🍇": "anggur",
+ "🍈": "melon",
+ "🍉": "semangka",
+ "🍊": "buah jeruk",
+ "🍋": "lemon",
+ "🍌": "pisang",
+ "🍍": "nanas",
+ "🥭": "mangga",
+ "🍏": "apel hijau",
+ "🍐": "pir",
+ "🍑": "persik",
+ "🍒": "ceri",
+ "🍓": "stroberi",
+ "🫐": "blueberry",
+ "🥝": "buah kiwi",
+ "🍅": "tomat",
+ "🫒": "zaitun",
+ "🥥": "kelapa",
+ "🥑": "alpukat",
+ "🍆": "terung",
+ "🥕": "wortel",
+ "🌽": "bonggol jagung",
+ "🌶️": "cabai pedas",
+ "🥬": "selada hijau",
+ "🥦": "brokoli",
+ "🧅": "bawang bombay",
+ "🍄": "jamur",
+ "🥜": "kacang tanah",
+ "🥐": "croissant",
+ "🥖": "roti baguette",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "panekuk",
+ "🧇": "wafel",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "kepiting",
+ "🦞": "lobster",
+ "🍨": "es krim",
+ "🍩": "donat",
+ "🍪": "biskuit",
+ "🎂": "kue ulang tahun",
+ "🧁": "kue mangkuk",
+ "🍫": "sebatang cokelat",
+ "🍬": "permen",
+ "🍭": "permen lolipop",
+ "🫖": "teko",
+ "🧃": "kotak minuman",
+ "🧉": "teh mate",
+ "🧭": "kompas",
+ "🏔️": "gunung dengan puncak bersalju",
+ "🌋": "gunung berapi",
+ "🏕️": "berkemah",
+ "🏝️": "pulau terpencil",
+ "🏡": "rumah dengan taman",
+ "⛲️": "air mancur",
+ "🎠": "komidi putar",
+ "🎡": "kincir ria",
+ "🎢": "roller coaster",
+ "💈": "tanda salon",
+ "🚆": "kereta",
+ "🚋": "gerbong trem",
+ "🚍️": "bus datang",
+ "🚕": "taksi",
+ "🚗": "mobil",
+ "🚚": "truk pengiriman",
+ "🚜": "traktor",
+ "🛵": "motor skuter",
+ "🛺": "bajaj",
+ "🛴": "otoped",
+ "🛹": "papan luncur",
+ "🛼": "sepatu roda",
+ "⚓️": "jangkar",
+ "⛵️": "perahu layar",
+ "🛶": "kano",
+ "🚤": "perahu cepat",
+ "🚢": "kapal",
+ "✈️": "pesawat",
+ "🚁": "helikopter",
+ "🚠": "kereta gantung",
+ "🛰️": "satelit",
+ "🚀": "roket",
+ "🛸": "piring terbang",
+ "⏰": "jam weker",
+ "🌙": "bulan sabit",
+ "🌡️": "termometer",
+ "☀️": "matahari",
+ "🪐": "planet bercincin",
+ "🌟": "bintang bersinar",
+ "🌀": "topan",
+ "🌈": "pelangi",
+ "☂️": "payung",
+ "❄️": "serpihan salju",
+ "☄️": "komet",
+ "🔥": "api",
+ "💧": "tetesan air",
+ "🌊": "ombak",
+ "🎃": "jack-o-lantern",
+ "✨": "berkilau",
+ "🎈": "balon",
+ "🎉": "party popper",
+ "🎏": "bendera ikan koi",
+ "🎀": "pita",
+ "🎁": "kado",
+ "🎟️": "tiket masuk",
+ "🏆️": "piala",
+ "⚽️": "bola sepak",
+ "🏀": "bola basket",
+ "🏈": "American football",
+ "🎾": "tenis",
+ "🥏": "lempar cakram",
+ "🏓": "ping pong",
+ "🏸": "bulu tangkis",
+ "🤿": "kacamata selam",
+ "🥌": "batu curling",
+ "🎯": "dart",
+ "🪀": "yo-yo",
+ "🪁": "layang-layang",
+ "🔮": "bola kristal",
+ "🎲": "dadu",
+ "🧩": "keping puzzle",
+ "🎨": "palet pelukis",
+ "🧵": "benang",
+ "👕": "kaos",
+ "🧦": "kaus kaki",
+ "👗": "gaun",
+ "🩳": "celana pendek",
+ "🎒": "tas sekolah",
+ "👟": "sepatu lari",
+ "👑": "mahkota",
+ "🧢": "topi berlidah",
+ "💄": "lipstik",
+ "💍": "cincin",
+ "💎": "batu permata",
+ "📢": "pengeras suara",
+ "🎶": "not-not musik",
+ "🎙️": "mikrofon studio",
+ "📻️": "radio",
+ "🎷": "saksofon",
+ "🪗": "akordeon",
+ "🎸": "gitar",
+ "🎺": "trompet",
+ "🎻": "biola",
+ "🪕": "banjo",
+ "🥁": "drum",
+ "☎️": "telepon",
+ "🔋": "baterai",
+ "💿️": "disk optik",
+ "🧮": "sempoa",
+ "🎬️": "papan sutradara",
+ "💡": "bohlam",
+ "🔦": "lampu senter",
+ "🏮": "lampion merah",
+ "📕": "buku tertutup",
+ "🏷️": "label",
+ "💳️": "kartu kredit",
+ "✏️": "pensil",
+ "🖌️": "kuas",
+ "🖍️": "krayon",
+ "📌": "paku penanda",
+ "📎": "klip kertas",
+ "🔑": "kunci",
+ "🪃": "bumerang",
+ "🏹": "busur dan panah",
+ "⚖️": "timbangan gantung",
+ "🧲": "magnet",
+ "🧪": "tabung uji",
+ "🧬": "dna",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "antena satelit",
+ "🪑": "bangku",
+ "🧹": "sapu",
+ "🗿": "moai"
+ },
+ "is": {
+ "👽️": "geimvera",
+ "🤖": "vélmennisandlit",
+ "🧠": "heili",
+ "👁️": "auga",
+ "🧙": "galdramaður",
+ "🧚": "álfur",
+ "🧜": "sæbúi",
+ "🐵": "apahöfuð",
+ "🦧": "órangútan",
+ "🐶": "hundshöfuð",
+ "🐺": "úlfur",
+ "🦊": "refur",
+ "🦝": "þvottabjörn",
+ "🐱": "kattarhöfuð",
+ "🦁": "ljón",
+ "🐯": "tígrisdýrshöfuð",
+ "🐴": "hestshöfuð",
+ "🦄": "einhyrningur",
+ "🦓": "sebrahestur",
+ "🦌": "´hjartardýr",
+ "🐮": "kýrhöfuð",
+ "🐷": "svínshöfuð",
+ "🐗": "villisvín",
+ "🐪": "drómedari",
+ "🦙": "lamadýr",
+ "🦒": "gíraffi",
+ "🐘": "fíll",
+ "🦣": "loðfíll",
+ "🦏": "nashyrningur",
+ "🐭": "músarhöfuð",
+ "🐰": "kanínuhöfuð",
+ "🐿️": "jarðíkorni",
+ "🦔": "broddgöltur",
+ "🦇": "leðurblaka",
+ "🐻": "björn",
+ "🐨": "kóalabjörn",
+ "🦥": "letidýr",
+ "🦦": "otur",
+ "🦘": "kengúra",
+ "🐥": "framhlið hænuunga",
+ "🐦️": "fugl",
+ "🕊️": "dúfa",
+ "🦆": "önd",
+ "🦉": "ugla",
+ "🦤": "dúdúfugl",
+ "🪶": "fjöður",
+ "🦩": "flamingói",
+ "🦚": "páfugl",
+ "🦜": "páfagaukur",
+ "🐊": "krókódíll",
+ "🐢": "skjaldbaka",
+ "🦎": "eðla",
+ "🐍": "snákur",
+ "🐲": "drekahöfuð",
+ "🦕": "graseðla",
+ "🐳": "blásandi hvalur",
+ "🐬": "höfrungur",
+ "🦭": "selur",
+ "🐟️": "fiskur",
+ "🐠": "hitabeltisfiskur",
+ "🦈": "hákarl",
+ "🐙": "kolkrabbi",
+ "🐚": "kuðungur",
+ "🐌": "snigill",
+ "🦋": "fiðrildi",
+ "🐛": "skordýr",
+ "🐝": "hunangsfluga",
+ "🐞": "maríuhæna",
+ "💐": "blómvöndur",
+ "🌹": "rós",
+ "🌺": "Havaírós",
+ "🌻": "sólblóm",
+ "🌷": "túlípani",
+ "🌲": "sígrænt tré",
+ "🌳": "sumargrænt tré",
+ "🌴": "pálmatré",
+ "🌵": "kaktus",
+ "🌿": "kryddjurt",
+ "🍁": "hlynslauf",
+ "🍇": "vínber",
+ "🍈": "melóna",
+ "🍉": "vatnsmelóna",
+ "🍊": "mandarína",
+ "🍋": "sítróna",
+ "🍌": "banani",
+ "🍍": "ananas",
+ "🥭": "mangó",
+ "🍏": "grænt epli",
+ "🍐": "pera",
+ "🍑": "ferskja",
+ "🍒": "kirsuber",
+ "🍓": "jarðarber",
+ "🫐": "bláber",
+ "🥝": "kíví",
+ "🍅": "tómatur",
+ "🫒": "ólífa",
+ "🥥": "kókoshneta",
+ "🥑": "avókadó",
+ "🍆": "eggaldin",
+ "🥕": "gulrót",
+ "🌽": "maís",
+ "🌶️": "chilipipar",
+ "🥬": "kál",
+ "🥦": "brokkólí",
+ "🧅": "laukur",
+ "🍄": "sveppur",
+ "🥜": "jarðhneta",
+ "🥐": "Croissant",
+ "🥖": "fransbrauð",
+ "🥨": "saltkringla",
+ "🥯": "beygla",
+ "🥞": "pönnukökur",
+ "🧇": "vaffla",
+ "🍔": "hamborgari",
+ "🍕": "pítsusneið",
+ "🌭": "pylsa í brauði",
+ "🌮": "takó",
+ "🍿": "popp",
+ "🦀": "krabbi",
+ "🦞": "humar",
+ "🍨": "kúluís",
+ "🍩": "kleinuhringur",
+ "🍪": "smákaka",
+ "🎂": "afmæliskaka",
+ "🧁": "bollakaka",
+ "🍫": "súkkulaði",
+ "🍬": "nammi",
+ "🍭": "sleikibrjóstsykur",
+ "🫖": "tekanna",
+ "🧃": "ferna",
+ "🧉": "mate",
+ "🧭": "áttaviti",
+ "🏔️": "snæviþakinn fjallstindur",
+ "🌋": "eldfjall",
+ "🏕️": "tjaldstæði",
+ "🏝️": "eyðieyja",
+ "🏡": "hús með garði",
+ "⛲️": "gosbrunnur",
+ "🎠": "hringekjuhestur",
+ "🎡": "parísarhjól",
+ "🎢": "rússíbani",
+ "💈": "rakarastofa",
+ "🚆": "lest",
+ "🚋": "sporvagn",
+ "🚍️": "strætó á móti",
+ "🚕": "leigubíll",
+ "🚗": "bíll",
+ "🚚": "flutningabíll",
+ "🚜": "dráttarvél",
+ "🛵": "vespa",
+ "🛺": "vélknúinn léttvagn",
+ "🛴": "hlaupahjól",
+ "🛹": "hjólabretti",
+ "🛼": "hjólaskautar",
+ "⚓️": "akkeri",
+ "⛵️": "seglskúta",
+ "🛶": "kanó",
+ "🚤": "hraðbátur",
+ "🚢": "skip",
+ "✈️": "flugvél",
+ "🚁": "þyrla",
+ "🚠": "kláfferja í fjalli",
+ "🛰️": "gervihnöttur",
+ "🚀": "eldflaug",
+ "🛸": "fljúgandi diskur",
+ "⏰": "vekjaraklukka",
+ "🌙": "hálfmáni",
+ "🌡️": "hitamælir",
+ "☀️": "sól",
+ "🪐": "pláneta með hringi",
+ "🌟": "skínandi stjarna",
+ "🌀": "fellibylur",
+ "🌈": "regnbogi",
+ "☂️": "regnhlíf",
+ "❄️": "snjókorn",
+ "☄️": "halastjarna",
+ "🔥": "eldur",
+ "💧": "dropi",
+ "🌊": "alda",
+ "🎃": "hrekkjavökugrasker",
+ "✨": "stjörnur",
+ "🎈": "blaðra",
+ "🎉": "knall",
+ "🎏": "fiskveifur",
+ "🎀": "borði",
+ "🎁": "gjöf",
+ "🎟️": "aðgöngumiðar",
+ "🏆️": "verðlaunabikar",
+ "⚽️": "fótbolti",
+ "🏀": "körfubolti",
+ "🏈": "amerískur fótbolti",
+ "🎾": "tennis",
+ "🥏": "frisbídiskur",
+ "🏓": "borðtennis",
+ "🏸": "badminton",
+ "🤿": "köfunargríma",
+ "🥌": "krullusteinn",
+ "🎯": "skotmark",
+ "🪀": "jójó",
+ "🪁": "flugdreki",
+ "🔮": "kristalskúla",
+ "🎲": "teningur",
+ "🧩": "púsl",
+ "🎨": "litapalletta",
+ "🧵": "tvinni",
+ "👕": "stuttermabolur",
+ "🧦": "sokkar",
+ "👗": "kjóll",
+ "🩳": "stuttbuxur",
+ "🎒": "skólataska",
+ "👟": "íþróttaskór",
+ "👑": "kóróna",
+ "🧢": "derhúfa",
+ "💄": "varalitur",
+ "💍": "hringur",
+ "💎": "gimsteinn",
+ "📢": "Almannavarnahátalari",
+ "🎶": "nótur",
+ "🎙️": "hljóðnemi í hljóðveri",
+ "📻️": "útvarp",
+ "🎷": "saxófónn",
+ "🪗": "harmonika",
+ "🎸": "gítar",
+ "🎺": "trompet",
+ "🎻": "fiðla",
+ "🪕": "banjó",
+ "🥁": "tromma",
+ "☎️": "sími",
+ "🔋": "rafhlaða",
+ "💿️": "blu-ray",
+ "🧮": "talnagrind",
+ "🎬️": "klapptré",
+ "💡": "ljósapera",
+ "🔦": "vasaljós",
+ "🏮": "rauður lampi",
+ "📕": "lokuð bók",
+ "🏷️": "merkimiði",
+ "💳️": "kreditkort",
+ "✏️": "blýantur",
+ "🖌️": "málningarpensill",
+ "🖍️": "vaxlitur",
+ "📌": "teiknibóla",
+ "📎": "bréfaklemma",
+ "🔑": "lykill",
+ "🪃": "búmerang",
+ "🏹": "bogi og ör",
+ "⚖️": "vog",
+ "🧲": "segull",
+ "🧪": "tilraunaglas",
+ "🧬": "dna",
+ "🔬": "smásjá",
+ "🔭": "sjónauki",
+ "📡": "gervihnattaloftnet",
+ "🪑": "stóll",
+ "🧹": "kústur",
+ "🗿": "moyai-stytta"
+ },
+ "it": {
+ "👽️": "alieno",
+ "🤖": "faccina di robot",
+ "🧠": "cervello",
+ "👁️": "occhio",
+ "🧙": "mago",
+ "🧚": "fata",
+ "🧜": "sirena",
+ "🐵": "muso di scimmia",
+ "🦧": "orangotango",
+ "🐶": "muso di cane",
+ "🐺": "lupo",
+ "🦊": "volpe",
+ "🦝": "procione",
+ "🐱": "muso di gatto",
+ "🦁": "leone",
+ "🐯": "muso di tigre",
+ "🐴": "muso di cavallo",
+ "🦄": "unicorno",
+ "🦓": "zebra",
+ "🦌": "cervo",
+ "🐮": "muso di mucca",
+ "🐷": "muso di maiale",
+ "🐗": "cinghiale",
+ "🐪": "dromedario",
+ "🦙": "lama",
+ "🦒": "giraffa",
+ "🐘": "elefante",
+ "🦣": "mammut",
+ "🦏": "rinoceronte",
+ "🐭": "muso di topo",
+ "🐰": "muso di coniglio",
+ "🐿️": "scoiattolo",
+ "🦔": "riccio",
+ "🦇": "pipistrello",
+ "🐻": "orso",
+ "🐨": "koala",
+ "🦥": "bradipo",
+ "🦦": "lontra",
+ "🦘": "canguro",
+ "🐥": "pulcino visto di fronte",
+ "🐦️": "uccello",
+ "🕊️": "colomba",
+ "🦆": "anatra",
+ "🦉": "gufo",
+ "🦤": "dodo",
+ "🪶": "piuma",
+ "🦩": "fenicottero",
+ "🦚": "pavone",
+ "🦜": "pappagallo",
+ "🐊": "coccodrillo",
+ "🐢": "tartaruga",
+ "🦎": "lucertola",
+ "🐍": "serpente",
+ "🐲": "testa di drago",
+ "🦕": "sauropode",
+ "🐳": "balena che spruzza acqua",
+ "🐬": "delfino",
+ "🦭": "foca",
+ "🐟️": "pesce",
+ "🐠": "pesce tropicale",
+ "🦈": "squalo",
+ "🐙": "polpo",
+ "🐚": "conchiglia",
+ "🐌": "lumaca",
+ "🦋": "farfalla",
+ "🐛": "insetto",
+ "🐝": "ape",
+ "🐞": "coccinella",
+ "💐": "mazzo di fiori",
+ "🌹": "rosa",
+ "🌺": "ibisco",
+ "🌻": "girasole",
+ "🌷": "tulipano",
+ "🌲": "albero sempreverde",
+ "🌳": "albero deciduo",
+ "🌴": "palma",
+ "🌵": "cactus",
+ "🌿": "pianta",
+ "🍁": "foglia d’acero",
+ "🍇": "uva",
+ "🍈": "melone",
+ "🍉": "anguria",
+ "🍊": "mandarino",
+ "🍋": "limone",
+ "🍌": "banana",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "mela verde",
+ "🍐": "pera",
+ "🍑": "pesca",
+ "🍒": "ciliegie",
+ "🍓": "fragola",
+ "🫐": "mirtilli",
+ "🥝": "kiwi",
+ "🍅": "pomodoro",
+ "🫒": "oliva",
+ "🥥": "cocco",
+ "🥑": "avocado",
+ "🍆": "melanzana",
+ "🥕": "carota",
+ "🌽": "pannocchia",
+ "🌶️": "peperoncino",
+ "🥬": "verdure a foglia",
+ "🥦": "broccoli",
+ "🧅": "cipolla",
+ "🍄": "fungo",
+ "🥜": "arachidi",
+ "🥐": "croissant",
+ "🥖": "baguette",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "pancake",
+ "🧇": "waffle",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "granchio",
+ "🦞": "aragosta",
+ "🍨": "coppa di gelato",
+ "🍩": "ciambella",
+ "🍪": "biscotto",
+ "🎂": "torta di compleanno",
+ "🧁": "cupcake",
+ "🍫": "cioccolato",
+ "🍬": "caramella",
+ "🍭": "lecca lecca",
+ "🫖": "teiera",
+ "🧃": "bevanda monodose",
+ "🧉": "mate",
+ "🧭": "bussola",
+ "🏔️": "montagna innevata",
+ "🌋": "vulcano",
+ "🏕️": "campeggio",
+ "🏝️": "isola deserta",
+ "🏡": "casa con giardino",
+ "⛲️": "fontana",
+ "🎠": "cavallo da giostra",
+ "🎡": "ruota panoramica",
+ "🎢": "montagne russe",
+ "💈": "barbiere",
+ "🚆": "treno",
+ "🚋": "vagone del tram",
+ "🚍️": "bus in arrivo",
+ "🚕": "taxi",
+ "🚗": "auto",
+ "🚚": "camion",
+ "🚜": "trattore",
+ "🛵": "scooter",
+ "🛺": "risciò a motore",
+ "🛴": "monopattino",
+ "🛹": "skateboard",
+ "🛼": "pattini a rotelle",
+ "⚓️": "ancora",
+ "⛵️": "barca a vela",
+ "🛶": "canoa",
+ "🚤": "motoscafo",
+ "🚢": "nave",
+ "✈️": "aeroplano",
+ "🚁": "elicottero",
+ "🚠": "funivia",
+ "🛰️": "satellite",
+ "🚀": "razzo",
+ "🛸": "disco volante",
+ "⏰": "sveglia",
+ "🌙": "spicchio di luna",
+ "🌡️": "termometro",
+ "☀️": "sole",
+ "🪐": "pianeta con satellite",
+ "🌟": "stella che brilla",
+ "🌀": "ciclone",
+ "🌈": "arcobaleno",
+ "☂️": "ombrello",
+ "❄️": "fiocco di neve",
+ "☄️": "cometa",
+ "🔥": "fuoco",
+ "💧": "goccia",
+ "🌊": "onda",
+ "🎃": "zucca di Halloween",
+ "✨": "stelline",
+ "🎈": "palloncino",
+ "🎉": "spara coriandoli",
+ "🎏": "aquilone a forma di carpa",
+ "🎀": "fiocco",
+ "🎁": "regalo",
+ "🎟️": "biglietto d’ingresso",
+ "🏆️": "coppa",
+ "⚽️": "pallone da calcio",
+ "🏀": "palla da pallacanestro",
+ "🏈": "football americano",
+ "🎾": "tennis",
+ "🥏": "frisbee",
+ "🏓": "ping pong",
+ "🏸": "badminton",
+ "🤿": "maschera da sub",
+ "🥌": "stone da curling",
+ "🎯": "bersaglio",
+ "🪀": "yo-yo",
+ "🪁": "aquilone",
+ "🔮": "sfera di cristallo",
+ "🎲": "dado",
+ "🧩": "pezzo di puzzle",
+ "🎨": "tavolozza",
+ "🧵": "filo",
+ "👕": "t-shirt",
+ "🧦": "calzini",
+ "👗": "vestito",
+ "🩳": "pantaloncini",
+ "🎒": "zaino",
+ "👟": "scarpa sportiva",
+ "👑": "corona",
+ "🧢": "cappello con visiera",
+ "💄": "rossetto",
+ "💍": "anello",
+ "💎": "gemma",
+ "📢": "altoparlante",
+ "🎶": "note musicali",
+ "🎙️": "microfono radiofonico",
+ "📻️": "radio",
+ "🎷": "sassofono",
+ "🪗": "fisarmonica",
+ "🎸": "chitarra",
+ "🎺": "tromba",
+ "🎻": "violino",
+ "🪕": "banjo",
+ "🥁": "tamburo",
+ "☎️": "telefono fisso",
+ "🔋": "batteria",
+ "💿️": "disco ottico",
+ "🧮": "abaco",
+ "🎬️": "ciak",
+ "💡": "lampadina",
+ "🔦": "torcia",
+ "🏮": "lanterna rossa",
+ "📕": "libro chiuso",
+ "🏷️": "etichetta",
+ "💳️": "carta di credito",
+ "✏️": "matita",
+ "🖌️": "pennello",
+ "🖍️": "pastello a cera",
+ "📌": "puntina",
+ "📎": "graffetta",
+ "🔑": "chiave",
+ "🪃": "boomerang",
+ "🏹": "arco e freccia",
+ "⚖️": "bilancia a doppio piatto",
+ "🧲": "calamita",
+ "🧪": "provetta",
+ "🧬": "dna",
+ "🔬": "microscopio",
+ "🔭": "telescopio",
+ "📡": "antenna satellitare",
+ "🪑": "sedia",
+ "🧹": "scopa",
+ "🗿": "Moai"
+ },
+ "ja": {
+ "👽️": "エイリアン",
+ "🤖": "ロボット",
+ "🧠": "脳",
+ "👁️": "片目",
+ "🧙": "魔法使い",
+ "🧚": "妖精",
+ "🧜": "人魚",
+ "🐵": "サルの顔",
+ "🦧": "オランウータン",
+ "🐶": "イヌの顔",
+ "🐺": "オオカミの顔",
+ "🦊": "キツネの顔",
+ "🦝": "アライグマ",
+ "🐱": "ネコの顔",
+ "🦁": "ライオンの顔",
+ "🐯": "トラの顔",
+ "🐴": "馬の顔",
+ "🦄": "ユニコーンの顔",
+ "🦓": "シマウマ",
+ "🦌": "シカ",
+ "🐮": "牛の顔",
+ "🐷": "ブタの顔",
+ "🐗": "イノシシ",
+ "🐪": "ラクダ",
+ "🦙": "ラマ",
+ "🦒": "キリン",
+ "🐘": "ゾウ",
+ "🦣": "マンモス",
+ "🦏": "サイ",
+ "🐭": "ネズミの顔",
+ "🐰": "ウサギの顔",
+ "🐿️": "リス",
+ "🦔": "ハリネズミ",
+ "🦇": "コウモリ",
+ "🐻": "クマの顔",
+ "🐨": "コアラ",
+ "🦥": "ナマケモノ",
+ "🦦": "カワウソ",
+ "🦘": "カンガルー",
+ "🐥": "前を向いているひよこ",
+ "🐦️": "鳥",
+ "🕊️": "ハト",
+ "🦆": "カモ",
+ "🦉": "フクロウ",
+ "🦤": "ドードー",
+ "🪶": "羽",
+ "🦩": "フラミンゴ",
+ "🦚": "クジャク",
+ "🦜": "オウム",
+ "🐊": "ワニ",
+ "🐢": "カメ",
+ "🦎": "トカゲ",
+ "🐍": "ヘビ",
+ "🐲": "ドラゴンの顔",
+ "🦕": "草食恐竜",
+ "🐳": "潮吹きクジラ",
+ "🐬": "イルカ",
+ "🦭": "アザラシ",
+ "🐟️": "魚",
+ "🐠": "熱帯魚",
+ "🦈": "サメ",
+ "🐙": "タコ",
+ "🐚": "巻き貝",
+ "🐌": "かたつむり",
+ "🦋": "チョウ",
+ "🐛": "毛虫",
+ "🐝": "ミツバチ",
+ "🐞": "テントウムシ",
+ "💐": "花束",
+ "🌹": "バラ",
+ "🌺": "ハイビスカス",
+ "🌻": "ヒマワリ",
+ "🌷": "チューリップ",
+ "🌲": "常緑樹",
+ "🌳": "落葉樹",
+ "🌴": "ヤシの木",
+ "🌵": "サボテン",
+ "🌿": "ハーブ",
+ "🍁": "かえで",
+ "🍇": "ぶどう",
+ "🍈": "メロン",
+ "🍉": "スイカ",
+ "🍊": "みかん",
+ "🍋": "レモン",
+ "🍌": "バナナ",
+ "🍍": "パイナップル",
+ "🥭": "マンゴー",
+ "🍏": "青リンゴ",
+ "🍐": "洋ナシ",
+ "🍑": "桃",
+ "🍒": "さくらんぼ",
+ "🍓": "いちご",
+ "🫐": "ブルーベリー",
+ "🥝": "キウイフルーツ",
+ "🍅": "トマト",
+ "🫒": "オリーブ",
+ "🥥": "ココナツ",
+ "🥑": "アボカド",
+ "🍆": "ナス",
+ "🥕": "人参",
+ "🌽": "とうもろこし",
+ "🌶️": "とうがらし",
+ "🥬": "葉野菜",
+ "🥦": "ブロッコリー",
+ "🧅": "タマネギ",
+ "🍄": "キノコ",
+ "🥜": "ピーナッツ",
+ "🥐": "クロワッサン",
+ "🥖": "バゲット",
+ "🥨": "プレッツェル",
+ "🥯": "ベーグル",
+ "🥞": "パンケーキ",
+ "🧇": "ワッフル",
+ "🍔": "ハンバーガー",
+ "🍕": "ピザ",
+ "🌭": "ホットドッグ",
+ "🌮": "タコス",
+ "🍿": "ポップコーン",
+ "🦀": "カニ",
+ "🦞": "ザリガニ",
+ "🍨": "アイスクリーム",
+ "🍩": "ドーナツ",
+ "🍪": "クッキー",
+ "🎂": "バースデーケーキ",
+ "🧁": "カップケーキ",
+ "🍫": "チョコレート",
+ "🍬": "キャンディ",
+ "🍭": "ぺろぺろキャンディ",
+ "🫖": "ティーポット",
+ "🧃": "紙パック飲料",
+ "🧉": "マテ茶",
+ "🧭": "コンパス",
+ "🏔️": "雪山",
+ "🌋": "火山",
+ "🏕️": "キャンプ",
+ "🏝️": "無人島",
+ "🏡": "庭付きの家",
+ "⛲️": "噴水",
+ "🎠": "メリーゴーランド",
+ "🎡": "観覧車",
+ "🎢": "ジェットコースター",
+ "💈": "床屋",
+ "🚆": "電車正面",
+ "🚋": "路面電車",
+ "🚍️": "バス正面",
+ "🚕": "タクシー",
+ "🚗": "自動車",
+ "🚚": "トラック",
+ "🚜": "トラクター",
+ "🛵": "スクーター",
+ "🛺": "三輪タクシー",
+ "🛴": "キックボード",
+ "🛹": "スケートボード",
+ "🛼": "ローラースケート",
+ "⚓️": "錨",
+ "⛵️": "ヨット",
+ "🛶": "カヌー",
+ "🚤": "スピードボート",
+ "🚢": "船",
+ "✈️": "飛行機",
+ "🚁": "ヘリコプター",
+ "🚠": "ケーブルカー",
+ "🛰️": "人工衛星",
+ "🚀": "ロケット",
+ "🛸": "空飛ぶ円盤",
+ "⏰": "目覚まし時計",
+ "🌙": "三日月",
+ "🌡️": "温度計",
+ "☀️": "太陽",
+ "🪐": "環のある惑星",
+ "🌟": "きらきら星",
+ "🌀": "渦巻き",
+ "🌈": "虹",
+ "☂️": "傘",
+ "❄️": "雪の結晶",
+ "☄️": "彗星",
+ "🔥": "火",
+ "💧": "水滴",
+ "🌊": "波",
+ "🎃": "ハロウィンかぼちゃ",
+ "✨": "きらきら",
+ "🎈": "風船",
+ "🎉": "クラッカー",
+ "🎏": "こいのぼり",
+ "🎀": "リボン",
+ "🎁": "プレゼント",
+ "🎟️": "入場券",
+ "🏆️": "トロフィー",
+ "⚽️": "サッカー",
+ "🏀": "バスケットボール",
+ "🏈": "アメフト",
+ "🎾": "テニス",
+ "🥏": "フリスビー",
+ "🏓": "卓球",
+ "🏸": "バドミントン",
+ "🤿": "ダイビング マスク",
+ "🥌": "カーリング",
+ "🎯": "的",
+ "🪀": "ヨーヨー",
+ "🪁": "たこ",
+ "🔮": "水晶玉",
+ "🎲": "サイコロ",
+ "🧩": "ジグソーパズル",
+ "🎨": "絵の具パレット",
+ "🧵": "糸",
+ "👕": "Tシャツ",
+ "🧦": "ソックス",
+ "👗": "ワンピース",
+ "🩳": "ショーツ",
+ "🎒": "バックパック",
+ "👟": "スニーカー",
+ "👑": "王冠",
+ "🧢": "キャップ",
+ "💄": "口紅",
+ "💍": "指輪",
+ "💎": "宝石",
+ "📢": "拡声器",
+ "🎶": "複数の音符",
+ "🎙️": "スタジオマイク",
+ "📻️": "ラジオ",
+ "🎷": "サックス",
+ "🪗": "アコーディオン",
+ "🎸": "ギター",
+ "🎺": "トランペット",
+ "🎻": "バイオリン",
+ "🪕": "バンジョー",
+ "🥁": "ドラム",
+ "☎️": "固定電話",
+ "🔋": "電池",
+ "💿️": "CD",
+ "🧮": "そろばん",
+ "🎬️": "カチンコ",
+ "💡": "電球",
+ "🔦": "懐中電灯",
+ "🏮": "赤ちょうちん",
+ "📕": "閉じた本",
+ "🏷️": "荷札",
+ "💳️": "クレジットカード",
+ "✏️": "鉛筆",
+ "🖌️": "絵筆",
+ "🖍️": "クレヨン",
+ "📌": "押しピン",
+ "📎": "クリップ",
+ "🔑": "鍵",
+ "🪃": "ブーメラン",
+ "🏹": "弓矢",
+ "⚖️": "天秤",
+ "🧲": "U字型磁石",
+ "🧪": "試験管",
+ "🧬": "DNA",
+ "🔬": "顕微鏡",
+ "🔭": "望遠鏡",
+ "📡": "パラボラアンテナ",
+ "🪑": "椅子",
+ "🧹": "ほうき",
+ "🗿": "モアイ"
+ },
+ "ka": {
+ "👽️": "უცხოპლანეტელი",
+ "🤖": "რობოტის სახე",
+ "🧠": "ტვინი",
+ "👁️": "თვალი",
+ "🧙": "ჯადოქარი",
+ "🧚": "ფერია",
+ "🧜": "ადამიანთევზა",
+ "🐵": "მაიმუნის სახე",
+ "🦧": "ორანგუტანი",
+ "🐶": "ძაღლის სახე",
+ "🐺": "მგლის სახე",
+ "🦊": "მელიის თავი",
+ "🦝": "ენოტი",
+ "🐱": "კატის სახე",
+ "🦁": "ლომის სახე",
+ "🐯": "ვეფხვის სახე",
+ "🐴": "ცხენის სახე",
+ "🦄": "ზღაპრული მარტორქის სახე",
+ "🦓": "ზებრა",
+ "🦌": "ირემი",
+ "🐮": "ძროხის სახე",
+ "🐷": "ღორის სახე",
+ "🐗": "ტახი",
+ "🐪": "აქლემი",
+ "🦙": "ლამა",
+ "🦒": "ჟირაფი",
+ "🐘": "სპილო",
+ "🦣": "მამონტი",
+ "🦏": "მარტორქა",
+ "🐭": "თაგვის სახე",
+ "🐰": "კურდღლის სახე",
+ "🐿️": "ციყვი",
+ "🦔": "ზღარბი",
+ "🦇": "ღამურა",
+ "🐻": "დათვის სახე",
+ "🐨": "კოალა",
+ "🦥": "ზარმაცა",
+ "🦦": "წავი",
+ "🦘": "კენგურუ",
+ "🐥": "პატარა წიწილა წინიდან",
+ "🐦️": "ჩიტი",
+ "🕊️": "მტრედი",
+ "🦆": "იხვი",
+ "🦉": "ბუ",
+ "🦤": "დოდო",
+ "🪶": "ბუმბული",
+ "🦩": "ფლამინგო",
+ "🦚": "ფარშევანგი",
+ "🦜": "თუთიყუში",
+ "🐊": "ნიანგი",
+ "🐢": "კუ",
+ "🦎": "ხვლიკი",
+ "🐍": "გველი",
+ "🐲": "დრაკონის სახე",
+ "🦕": "ზაუროპოდი",
+ "🐳": "ვეშაპი ჭავლით",
+ "🐬": "დელფინი",
+ "🦭": "სელაპი",
+ "🐟️": "თევზი",
+ "🐠": "ტროპიკული თევზი",
+ "🦈": "ზვიგენი",
+ "🐙": "რვაფეხა",
+ "🐚": "სპირალური ნიჟარა",
+ "🐌": "ლოკოკინა",
+ "🦋": "პეპელა",
+ "🐛": "ბაღლინჯო",
+ "🐝": "ფუტკარი",
+ "🐞": "ჭიამაია",
+ "💐": "თაიგული",
+ "🌹": "ვარდი",
+ "🌺": "ჰიბისკუსი",
+ "🌻": "მზესუმზირა",
+ "🌷": "ტიტა",
+ "🌲": "მარადმწვანე",
+ "🌳": "ფოთლოვანი ხე",
+ "🌴": "პალმა",
+ "🌵": "კაქტუსი",
+ "🌿": "სამკურნალო მცენარე",
+ "🍁": "ნეკერჩხლის ფოთოლი",
+ "🍇": "ყურძენი",
+ "🍈": "ნესვი",
+ "🍉": "საზამთრო",
+ "🍊": "მანდარინი",
+ "🍋": "ლიმონი",
+ "🍌": "ბანანი",
+ "🍍": "ანანასი",
+ "🥭": "მანგო",
+ "🍏": "მწვანე ვაშლი",
+ "🍐": "მსხალი",
+ "🍑": "ატამი",
+ "🍒": "ალუბალი",
+ "🍓": "მარწყვი",
+ "🫐": "მოცვი",
+ "🥝": "კივი",
+ "🍅": "პამიდორი",
+ "🫒": "ზეითუნი",
+ "🥥": "ქოქოსი",
+ "🥑": "ავოკადო",
+ "🍆": "ბადრიჯანი",
+ "🥕": "სტაფილო",
+ "🌽": "სიმინდის ტარო",
+ "🌶️": "ცხარე წიწაკა",
+ "🥬": "სალათის ფოთოლი",
+ "🥦": "ბროკოლი",
+ "🧅": "ხახვი",
+ "🍄": "სოკო",
+ "🥜": "მიწის თხილი",
+ "🥐": "კრუასანი",
+ "🥖": "ბაგეტი",
+ "🥨": "პრეცელი",
+ "🥯": "ბეიგელი",
+ "🥞": "ბლინები",
+ "🧇": "ვაფლი",
+ "🍔": "ჰამბურგერი",
+ "🍕": "პიცა",
+ "🌭": "ჰოთდოგი",
+ "🌮": "ტაკო",
+ "🍿": "ბატი-ბუტი",
+ "🦀": "კიბორჩხალა",
+ "🦞": "კიბო",
+ "🍨": "ნაყინი",
+ "🍩": "დონატი",
+ "🍪": "ფხვიერი ნამცხვარი",
+ "🎂": "დაბადების დღის ტორტი",
+ "🧁": "ქაფქეიქი",
+ "🍫": "შოკოლადის ფილა",
+ "🍬": "კანფეტი",
+ "🍭": "კანფეტი ჯოხზე",
+ "🫖": "ჩაიდანი",
+ "🧃": "წვენი პაკეტში",
+ "🧉": "მატე",
+ "🧭": "კომპასი",
+ "🏔️": "თოვლით დაფარული მთა",
+ "🌋": "ვულკანი",
+ "🏕️": "კემპინგი",
+ "🏝️": "უკაცრიელი კუნძული",
+ "🏡": "სახლი ბაღით",
+ "⛲️": "შადრევანი",
+ "🎠": "კარუსელის ცხენი",
+ "🎡": "ეშმაკის ბორბალი",
+ "🎢": "ამერიკული გორაკები",
+ "💈": "დალაქის სვეტი",
+ "🚆": "მატარებელი",
+ "🚋": "ტრამვაის ვაგონი",
+ "🚍️": "მომავალი ავტობუსი",
+ "🚕": "ტაქსი",
+ "🚗": "ავტომობილი",
+ "🚚": "მიმწოდებელი სატვირთო მანქანა",
+ "🚜": "ტრაქტორი",
+ "🛵": "სკუტერი ძრავით",
+ "🛺": "ავტორიქშა",
+ "🛴": "ფეხის სკუტერი",
+ "🛹": "სკეიტბორდი",
+ "🛼": "გორგოლაჭიანი ციგურები",
+ "⚓️": "ღუზა",
+ "⛵️": "იალქნიანი ნავი",
+ "🛶": "კანოე",
+ "🚤": "გლისერი",
+ "🚢": "გემი",
+ "✈️": "თვითმფრინავი",
+ "🚁": "ვერტმფრენი",
+ "🚠": "მთის საბაგირო",
+ "🛰️": "თანამგზავრი",
+ "🚀": "რაკეტა",
+ "🛸": "მფრინავი თეფში",
+ "⏰": "მაღვიძარა",
+ "🌙": "ნამგალა მთვარე",
+ "🌡️": "თერმომეტრი",
+ "☀️": "მზე",
+ "🪐": "პლანეტა სარტყელით",
+ "🌟": "მბრწყინავი ვარსკვლავი",
+ "🌀": "ციკლონი",
+ "🌈": "ცისარტყელა",
+ "☂️": "ქოლგა",
+ "❄️": "თოვლის ფანტელი",
+ "☄️": "კომეტა",
+ "🔥": "ცეცხლი",
+ "💧": "წვეთი",
+ "🌊": "წყლის ტალღა",
+ "🎃": "ჰელოუინის გოგრა",
+ "✨": "ნაპერწკლები",
+ "🎈": "ბუშტი",
+ "🎉": "ტკაცუნა",
+ "🎏": "კობრებიანი ალამი",
+ "🎀": "ლენტი",
+ "🎁": "შეფუთული საჩუქარი",
+ "🎟️": "ბილეთები",
+ "🏆️": "პრიზი",
+ "⚽️": "ფეხბურთი",
+ "🏀": "კალათბურთი",
+ "🏈": "ამერიკული ფეხბურთი",
+ "🎾": "ჩოგბურთი",
+ "🥏": "მფრინავი დისკი",
+ "🏓": "მაგიდის ჩოგბურთი",
+ "🏸": "ბადმინტონი",
+ "🤿": "წყლის ნიღაბი",
+ "🥌": "კერლინგის ქვა",
+ "🎯": "პირდაპირი მოხვედრა",
+ "🪀": "იო-იო",
+ "🪁": "ფრანი",
+ "🔮": "კრისტალის ბურთი",
+ "🎲": "კამათელი",
+ "🧩": "პაზლი",
+ "🎨": "მხატვრის პალიტრა",
+ "🧵": "ძაფის კოჭა",
+ "👕": "მაისური",
+ "🧦": "წინდები",
+ "👗": "კაბა",
+ "🩳": "შორტები",
+ "🎒": "სკოლის ზურგჩანთა",
+ "👟": "ბოტასი",
+ "👑": "გვირგვინი",
+ "🧢": "ბეისბოლის კეპი",
+ "💄": "ტუჩის პომადა",
+ "💍": "ბეჭედი",
+ "💎": "ძვირფასი ქვა",
+ "📢": "რუპორი",
+ "🎶": "მუსიკალური ნოტები",
+ "🎙️": "სტუდიური მიკროფონი",
+ "📻️": "რადიო",
+ "🎷": "საქსოფონი",
+ "🪗": "აკორდეონი",
+ "🎸": "გიტარა",
+ "🎺": "საყვირი",
+ "🎻": "ვიოლინო",
+ "🪕": "ბანჯო",
+ "🥁": "ბარაბანი",
+ "☎️": "ტელეფონი",
+ "🔋": "ბატარეა",
+ "💿️": "ოპტიკური დისკი",
+ "🧮": "საანგარიშო დაფა",
+ "🎬️": "ნუმერატორი ტკაცუნათი",
+ "💡": "ნათურა",
+ "🔦": "ფანარი",
+ "🏮": "ქაღალდის წითელი ფარანი",
+ "📕": "დახურული წიგნი",
+ "🏷️": "იარლიყი",
+ "💳️": "საკრედიტო ბარათი",
+ "✏️": "ფანქარი",
+ "🖌️": "სახატავი ფუნჯი",
+ "🖍️": "ფერადი ფანქარი",
+ "📌": "ჭიკარტი",
+ "📎": "ქაღალდის სამაგრი",
+ "🔑": "გასაღები",
+ "🪃": "ბუმერანგი",
+ "🏹": "მშვილდ-ისარი",
+ "⚖️": "ბერკეტიანი სასწორი",
+ "🧲": "მაგნიტი",
+ "🧪": "სინჯარა",
+ "🧬": "დნმ",
+ "🔬": "მიკროსკოპი",
+ "🔭": "ტელესკოპი",
+ "📡": "თანამგზავრული ანტენა",
+ "🪑": "სკამი",
+ "🧹": "ცოცხი",
+ "🗿": "მოაი"
+ },
+ "ko": {
+ "👽️": "외계인",
+ "🤖": "로봇 얼굴",
+ "🧠": "뇌",
+ "👁️": "눈",
+ "🧙": "마법사",
+ "🧚": "요정",
+ "🧜": "인어",
+ "🐵": "원숭이 얼굴",
+ "🦧": "오랑우탄",
+ "🐶": "강아지 얼굴",
+ "🐺": "늑대 얼굴",
+ "🦊": "여우 얼굴",
+ "🦝": "너구리",
+ "🐱": "고양이 얼굴",
+ "🦁": "사자 얼굴",
+ "🐯": "호랑이 얼굴",
+ "🐴": "말 얼굴",
+ "🦄": "유니콘 얼굴",
+ "🦓": "얼룩말",
+ "🦌": "사슴",
+ "🐮": "소 얼굴",
+ "🐷": "돼지 얼굴",
+ "🐗": "멧돼지",
+ "🐪": "낙타",
+ "🦙": "라마",
+ "🦒": "기린",
+ "🐘": "코끼리",
+ "🦣": "매머드",
+ "🦏": "코뿔소",
+ "🐭": "쥐 얼굴",
+ "🐰": "토끼 얼굴",
+ "🐿️": "얼룩다람쥐",
+ "🦔": "고슴도치",
+ "🦇": "박쥐",
+ "🐻": "곰 얼굴",
+ "🐨": "코알라",
+ "🦥": "나무늘보",
+ "🦦": "수달",
+ "🦘": "캥거루",
+ "🐥": "정면을 향해 날개를 편 병아리",
+ "🐦️": "새",
+ "🕊️": "비둘기",
+ "🦆": "오리",
+ "🦉": "부엉이",
+ "🦤": "도도새",
+ "🪶": "깃털",
+ "🦩": "홍학",
+ "🦚": "공작",
+ "🦜": "앵무새",
+ "🐊": "악어",
+ "🐢": "거북이",
+ "🦎": "도마뱀",
+ "🐍": "뱀",
+ "🐲": "용 얼굴",
+ "🦕": "초식 공룡",
+ "🐳": "물 뿜는 고래",
+ "🐬": "돌고래",
+ "🦭": "물개",
+ "🐟️": "물고기",
+ "🐠": "열대어",
+ "🦈": "상어",
+ "🐙": "문어",
+ "🐚": "달팽이집",
+ "🐌": "달팽이",
+ "🦋": "나비",
+ "🐛": "송충이",
+ "🐝": "꿀벌",
+ "🐞": "무당벌레",
+ "💐": "꽃다발",
+ "🌹": "장미꽃",
+ "🌺": "무궁화",
+ "🌻": "해바라기",
+ "🌷": "튤립",
+ "🌲": "소나무",
+ "🌳": "나무",
+ "🌴": "야자수",
+ "🌵": "선인장",
+ "🌿": "풀",
+ "🍁": "단풍잎",
+ "🍇": "포도",
+ "🍈": "멜론",
+ "🍉": "수박",
+ "🍊": "귤",
+ "🍋": "레몬",
+ "🍌": "바나나",
+ "🍍": "파인애플",
+ "🥭": "망고",
+ "🍏": "초록 사과",
+ "🍐": "배",
+ "🍑": "복숭아",
+ "🍒": "체리",
+ "🍓": "딸기",
+ "🫐": "블루베리",
+ "🥝": "키위",
+ "🍅": "토마토",
+ "🫒": "올리브",
+ "🥥": "코코넛",
+ "🥑": "아보카도",
+ "🍆": "가지",
+ "🥕": "당근",
+ "🌽": "옥수수",
+ "🌶️": "홍고추",
+ "🥬": "녹색 채소",
+ "🥦": "브로콜리",
+ "🧅": "양파",
+ "🍄": "버섯",
+ "🥜": "땅콩",
+ "🥐": "크루아상",
+ "🥖": "바게트",
+ "🥨": "프레첼",
+ "🥯": "베이글",
+ "🥞": "팬케이크",
+ "🧇": "와플",
+ "🍔": "햄버거",
+ "🍕": "피자",
+ "🌭": "핫도그",
+ "🌮": "타코",
+ "🍿": "팝콘",
+ "🦀": "꽃게",
+ "🦞": "바닷가재",
+ "🍨": "아이스크림",
+ "🍩": "도넛",
+ "🍪": "쿠키",
+ "🎂": "생일 케이크",
+ "🧁": "컵케이크",
+ "🍫": "초콜렛",
+ "🍬": "사탕",
+ "🍭": "롤리팝",
+ "🫖": "찻주전자",
+ "🧃": "음료 팩",
+ "🧉": "마테차",
+ "🧭": "나침반",
+ "🏔️": "눈 덮인 산",
+ "🌋": "화산",
+ "🏕️": "캠핑",
+ "🏝️": "사막 섬",
+ "🏡": "정원이 있는 집",
+ "⛲️": "분수",
+ "🎠": "회전 목마",
+ "🎡": "관람차",
+ "🎢": "롤러코스터",
+ "💈": "이발소",
+ "🚆": "기차",
+ "🚋": "트램 차량",
+ "🚍️": "오고 있는 버스",
+ "🚕": "택시",
+ "🚗": "자동차",
+ "🚚": "운송 트럭",
+ "🚜": "트랙터",
+ "🛵": "스쿠터",
+ "🛺": "경삼륜차",
+ "🛴": "킥보드",
+ "🛹": "스케이트보드",
+ "🛼": "롤러스케이트",
+ "⚓️": "닻",
+ "⛵️": "돛단배",
+ "🛶": "카누",
+ "🚤": "쾌속정",
+ "🚢": "선박",
+ "✈️": "비행기",
+ "🚁": "헬리콥터",
+ "🚠": "산악 케이블카",
+ "🛰️": "인공위성",
+ "🚀": "로켓",
+ "🛸": "비행접시",
+ "⏰": "알람 시계",
+ "🌙": "초승달",
+ "🌡️": "온도계",
+ "☀️": "태양",
+ "🪐": "고리가 있는 행성",
+ "🌟": "반짝이는 별",
+ "🌀": "태풍",
+ "🌈": "무지개",
+ "☂️": "우산",
+ "❄️": "눈송이",
+ "☄️": "혜성",
+ "🔥": "불",
+ "💧": "물방울",
+ "🌊": "파도",
+ "🎃": "할로윈",
+ "✨": "블링블링",
+ "🎈": "풍선",
+ "🎉": "파티",
+ "🎏": "물고기 깃발",
+ "🎀": "리본",
+ "🎁": "선물",
+ "🎟️": "입장 티켓",
+ "🏆️": "트로피",
+ "⚽️": "축구공",
+ "🏀": "농구",
+ "🏈": "미식축구공",
+ "🎾": "테니스",
+ "🥏": "원반",
+ "🏓": "탁구",
+ "🏸": "배드민턴",
+ "🤿": "다이빙 마스크",
+ "🥌": "컬링 스톤",
+ "🎯": "과녁 명중",
+ "🪀": "요요",
+ "🪁": "연",
+ "🔮": "수정 구슬",
+ "🎲": "주사위",
+ "🧩": "퍼즐",
+ "🎨": "팔레트",
+ "🧵": "실타래",
+ "👕": "티셔츠",
+ "🧦": "양말",
+ "👗": "원피스",
+ "🩳": "반바지",
+ "🎒": "학교 가방",
+ "👟": "운동화",
+ "👑": "왕관",
+ "🧢": "야구모자",
+ "💄": "립스틱",
+ "💍": "반지",
+ "💎": "원석",
+ "📢": "확성기",
+ "🎶": "노래 음표",
+ "🎙️": "스튜디오 마이크",
+ "📻️": "라디오",
+ "🎷": "색소폰",
+ "🪗": "아코디언",
+ "🎸": "기타",
+ "🎺": "트럼펫",
+ "🎻": "바이올린",
+ "🪕": "밴조",
+ "🥁": "드럼",
+ "☎️": "전화기",
+ "🔋": "배터리",
+ "💿️": "씨디",
+ "🧮": "주판",
+ "🎬️": "슬레이트",
+ "💡": "전구",
+ "🔦": "손전등",
+ "🏮": "일본식 등",
+ "📕": "펼치지 않은 책",
+ "🏷️": "라벨",
+ "💳️": "신용카드",
+ "✏️": "연필",
+ "🖌️": "붓",
+ "🖍️": "크레용",
+ "📌": "압정",
+ "📎": "클립",
+ "🔑": "열쇠",
+ "🪃": "부메랑",
+ "🏹": "활과 화살",
+ "⚖️": "접시저울",
+ "🧲": "자석",
+ "🧪": "시험관",
+ "🧬": "DNA",
+ "🔬": "현미경",
+ "🔭": "망원경",
+ "📡": "위성 안테나",
+ "🪑": "의자",
+ "🧹": "빗자루",
+ "🗿": "모아이"
+ },
+ "lt": {
+ "👽️": "ateivis",
+ "🤖": "roboto veidas",
+ "🧠": "smegenys",
+ "👁️": "akis",
+ "🧙": "magas",
+ "🧚": "fėja",
+ "🧜": "undinius",
+ "🐵": "beždžionės snukutis",
+ "🦧": "orangutangas",
+ "🐶": "šuns snukutis",
+ "🐺": "vilko snukis",
+ "🦊": "lapės snukis",
+ "🦝": "meškėnas",
+ "🐱": "katės snukutis",
+ "🦁": "liūto snukis",
+ "🐯": "tigro snukis",
+ "🐴": "arklio snukis",
+ "🦄": "vienaragio snukis",
+ "🦓": "zebras",
+ "🦌": "elnias",
+ "🐮": "karvės snukis",
+ "🐷": "kiaulės snukis",
+ "🐗": "šernas",
+ "🐪": "kupranugaris",
+ "🦙": "lama",
+ "🦒": "žirafa",
+ "🐘": "dramblys",
+ "🦣": "mamutas",
+ "🦏": "raganosis",
+ "🐭": "pelės snukutis",
+ "🐰": "triušio snukutis",
+ "🐿️": "voverė",
+ "🦔": "ežys",
+ "🦇": "šikšnosparnis",
+ "🐻": "meškos snukis",
+ "🐨": "koala",
+ "🦥": "tinginys",
+ "🦦": "ūdra",
+ "🦘": "kengūra",
+ "🐥": "atsisukęs snapu viščiukas",
+ "🐦️": "paukštis",
+ "🕊️": "balandis",
+ "🦆": "antis",
+ "🦉": "pelėda",
+ "🦤": "drontas",
+ "🪶": "plunksna",
+ "🦩": "flamingas",
+ "🦚": "povas",
+ "🦜": "papūga",
+ "🐊": "krokodilas",
+ "🐢": "vėžlys",
+ "🦎": "driežas",
+ "🐍": "gyvatė",
+ "🐲": "drakono snukis",
+ "🦕": "sauropodas",
+ "🐳": "purškiantis banginis",
+ "🐬": "delfinas",
+ "🦭": "ruonis",
+ "🐟️": "žuvis",
+ "🐠": "tropinė žuvis",
+ "🦈": "ryklys",
+ "🐙": "aštuonkojis",
+ "🐚": "susisukusi kriauklė",
+ "🐌": "sraigė",
+ "🦋": "drugelis",
+ "🐛": "vabalas",
+ "🐝": "bitė",
+ "🐞": "boružė",
+ "💐": "puokštė",
+ "🌹": "rožė",
+ "🌺": "kinrožė",
+ "🌻": "saulėgrąža",
+ "🌷": "tulpė",
+ "🌲": "amžinai žaliuojantis medis",
+ "🌳": "lapuotis",
+ "🌴": "palmė",
+ "🌵": "kaktusas",
+ "🌿": "žolelė",
+ "🍁": "klevo lapas",
+ "🍇": "vynuogės",
+ "🍈": "melionas",
+ "🍉": "arbūzas",
+ "🍊": "mandarinas",
+ "🍋": "citrina",
+ "🍌": "bananas",
+ "🍍": "ananasas",
+ "🥭": "mangas",
+ "🍏": "žalias obuolys",
+ "🍐": "kriaušė",
+ "🍑": "persikas",
+ "🍒": "vyšnios",
+ "🍓": "braškė",
+ "🫐": "mėlynės",
+ "🥝": "kivis",
+ "🍅": "pomidoras",
+ "🫒": "alyvuogė",
+ "🥥": "kokosas",
+ "🥑": "avokadas",
+ "🍆": "baklažanas",
+ "🥕": "morka",
+ "🌽": "kukurūzo burbuolė",
+ "🌶️": "aštrusis pipiras",
+ "🥬": "lapinė daržovė",
+ "🥦": "brokolis",
+ "🧅": "svogūnas",
+ "🍄": "grybas",
+ "🥜": "žemės riešutas",
+ "🥐": "raguolis",
+ "🥖": "ilgas batonas",
+ "🥨": "riestainis",
+ "🥯": "apvalus riestainis",
+ "🥞": "blynai",
+ "🧇": "vaflis",
+ "🍔": "mėsainis",
+ "🍕": "pica",
+ "🌭": "dešrainis",
+ "🌮": "meksikietiškas paplotėlis",
+ "🍿": "spragėsiai",
+ "🦀": "krabas",
+ "🦞": "omaras",
+ "🍨": "ledai",
+ "🍩": "spurga",
+ "🍪": "sausainis",
+ "🎂": "gimtadienio tortas",
+ "🧁": "keksiukas",
+ "🍫": "šokolado batonėlis",
+ "🍬": "saldainis",
+ "🍭": "ledinukas ant pagaliuko",
+ "🫖": "arbatinukas",
+ "🧃": "gėrimo pakelis",
+ "🧉": "matė",
+ "🧭": "kompasas",
+ "🏔️": "kalnas su snieguota viršūne",
+ "🌋": "ugnikalnis",
+ "🏕️": "stovyklavimas",
+ "🏝️": "atoki sala",
+ "🏡": "namas su sodu",
+ "⛲️": "fontanas",
+ "🎠": "karuselės arkliukas",
+ "🎡": "apžvalgos ratas",
+ "🎢": "linksmieji kalneliai",
+ "💈": "kirpėjo suktukas",
+ "🚆": "traukinys",
+ "🚋": "tramvajaus vagonas",
+ "🚍️": "artėjantis autobusas",
+ "🚕": "taksi",
+ "🚗": "automobilis",
+ "🚚": "krovininis sunkvežimis",
+ "🚜": "traktorius",
+ "🛵": "motoroleris",
+ "🛺": "autorikša",
+ "🛴": "paspirtukas",
+ "🛹": "riedlentė",
+ "🛼": "riedučiai",
+ "⚓️": "inkaras",
+ "⛵️": "burlaivis",
+ "🛶": "kanoja",
+ "🚤": "motorinis kateris",
+ "🚢": "laivas",
+ "✈️": "lėktuvas",
+ "🚁": "sraigstasparnis",
+ "🚠": "kalnų keltuvas",
+ "🛰️": "palydovas",
+ "🚀": "raketa",
+ "🛸": "skraidanti lėkštė",
+ "⏰": "žadintuvas",
+ "🌙": "pusmėnulis",
+ "🌡️": "termometras",
+ "☀️": "saulė",
+ "🪐": "planeta su žiedu",
+ "🌟": "žėrinti žvaigždė",
+ "🌀": "ciklonas",
+ "🌈": "vaivorykštė",
+ "☂️": "skėtis",
+ "❄️": "snaigė",
+ "☄️": "kometa",
+ "🔥": "ugnis",
+ "💧": "lašas",
+ "🌊": "vandens banga",
+ "🎃": "žibintas iš moliūgo",
+ "✨": "kibirkštėlės",
+ "🎈": "balionas",
+ "🎉": "konfeti šaudyklė",
+ "🎏": "karpio vėtrungė",
+ "🎀": "kaspinas",
+ "🎁": "supakuota dovana",
+ "🎟️": "įėjimo bilietai",
+ "🏆️": "trofėjus",
+ "⚽️": "futbolo kamuolys",
+ "🏀": "krepšinio kamuolys",
+ "🏈": "amerikietiškojo futbolo kamuolys",
+ "🎾": "teniso kamuoliukas",
+ "🥏": "skraidantis diskas",
+ "🏓": "stalo tenisas",
+ "🏸": "badmintonas",
+ "🤿": "nardymo kaukė",
+ "🥌": "akmenslydis",
+ "🎯": "smūgis tiesiai į taikinį",
+ "🪀": "jo-jo",
+ "🪁": "aitvaras",
+ "🔮": "krištolinis rutulys",
+ "🎲": "kauliukas",
+ "🧩": "dėlionė",
+ "🎨": "dailininko paletė",
+ "🧵": "siūlas",
+ "👕": "marškinėliai",
+ "🧦": "kojinės",
+ "👗": "suknelė",
+ "🩳": "šortai",
+ "🎒": "mokyklinė kuprinė",
+ "👟": "bėgimo batelis",
+ "👑": "karūna",
+ "🧢": "reklaminė kepurė",
+ "💄": "lūpų dažai",
+ "💍": "žiedas",
+ "💎": "brangakmenis",
+ "📢": "garsiakalbio simbolis",
+ "🎶": "muzikos natos",
+ "🎙️": "studijos mikrofonas",
+ "📻️": "radijas",
+ "🎷": "saksofonas",
+ "🪗": "akordeonas",
+ "🎸": "gitara",
+ "🎺": "trimitas",
+ "🎻": "smuikas",
+ "🪕": "bandža",
+ "🥁": "būgnas",
+ "☎️": "telefonas",
+ "🔋": "baterija",
+ "💿️": "optinis diskas",
+ "🧮": "skaitytuvai",
+ "🎬️": "pliauškė",
+ "💡": "lemputė",
+ "🔦": "žibintuvėlis",
+ "🏮": "raudonas popierinis žibintas",
+ "📕": "užversta knyga",
+ "🏷️": "etiketė",
+ "💳️": "kredito kortelė",
+ "✏️": "pieštukas",
+ "🖌️": "teptukas",
+ "🖍️": "kreidelė",
+ "📌": "smeigtukas",
+ "📎": "sąvaržėlė",
+ "🔑": "raktas",
+ "🪃": "bumerangas",
+ "🏹": "lankas ir strėlė",
+ "⚖️": "svarstyklės su lėkštėmis",
+ "🧲": "magnetas",
+ "🧪": "mėgintuvėlis",
+ "🧬": "DNR",
+ "🔬": "mikroskopas",
+ "🔭": "teleskopas",
+ "📡": "palydovinė antena",
+ "🪑": "kėdė",
+ "🧹": "šluota",
+ "🗿": "moai"
+ },
+ "mk": {
+ "👽️": "вонземјанин",
+ "🤖": "робот",
+ "🧠": "мозок",
+ "👁️": "око",
+ "🧙": "магичар",
+ "🧚": "самовила",
+ "🧜": "морско лице",
+ "🐵": "глава на мајмун",
+ "🦧": "орангутан",
+ "🐶": "глава на куче",
+ "🐺": "волк",
+ "🦊": "лисица",
+ "🦝": "ракун",
+ "🐱": "глава на мачка",
+ "🦁": "лав",
+ "🐯": "глава на тигар",
+ "🐴": "глава на коњ",
+ "🦄": "еднорог",
+ "🦓": "зебра",
+ "🦌": "елен",
+ "🐮": "глава на крава",
+ "🐷": "глава на прасе",
+ "🐗": "дива свиња",
+ "🐪": "камила",
+ "🦙": "лама",
+ "🦒": "жирафа",
+ "🐘": "слон",
+ "🦣": "мамут",
+ "🦏": "носорог",
+ "🐭": "глава на глушец",
+ "🐰": "глава на зајак",
+ "🐿️": "верверица",
+ "🦔": "еж",
+ "🦇": "лилјак",
+ "🐻": "мечка",
+ "🐨": "коала",
+ "🦥": "мрзливец",
+ "🦦": "видра",
+ "🦘": "кенгур",
+ "🐥": "пиле свртено нанапред",
+ "🐦️": "птица",
+ "🕊️": "гулабица",
+ "🦆": "патка",
+ "🦉": "був",
+ "🦤": "додо",
+ "🪶": "пердув",
+ "🦩": "фламинго",
+ "🦚": "паун",
+ "🦜": "папагал",
+ "🐊": "крокодил",
+ "🐢": "желка",
+ "🦎": "гуштер",
+ "🐍": "змија",
+ "🐲": "глава на змеј",
+ "🦕": "сауропод",
+ "🐳": "кит што прска вода",
+ "🐬": "делфин",
+ "🦭": "фока",
+ "🐟️": "риба",
+ "🐠": "тропска риба",
+ "🦈": "ајкула",
+ "🐙": "октопод",
+ "🐚": "спирална школка",
+ "🐌": "полжав",
+ "🦋": "пеперутка",
+ "🐛": "бубачка",
+ "🐝": "пчела",
+ "🐞": "бубамара",
+ "💐": "букет",
+ "🌹": "роза",
+ "🌺": "хибискус",
+ "🌻": "сончоглед",
+ "🌷": "лале",
+ "🌲": "зимзелено дрво",
+ "🌳": "листопадно дрво",
+ "🌴": "палма",
+ "🌵": "кактус",
+ "🌿": "билка",
+ "🍁": "јаворов лист",
+ "🍇": "грозје",
+ "🍈": "диња",
+ "🍉": "лубеница",
+ "🍊": "мандарина",
+ "🍋": "лимон",
+ "🍌": "банана",
+ "🍍": "ананас",
+ "🥭": "манго",
+ "🍏": "зелено јаболко",
+ "🍐": "круша",
+ "🍑": "праска",
+ "🍒": "цреши",
+ "🍓": "јагода",
+ "🫐": "боровинки",
+ "🥝": "киви",
+ "🍅": "домат",
+ "🫒": "маслинка",
+ "🥥": "кокосов орев",
+ "🥑": "авокадо",
+ "🍆": "модар патлиџан",
+ "🥕": "морков",
+ "🌽": "клас пченка",
+ "🌶️": "лута пиперка",
+ "🥬": "зелени листови",
+ "🥦": "брокола",
+ "🧅": "кромид",
+ "🍄": "печурка",
+ "🥜": "кикиритки",
+ "🥐": "кроасан",
+ "🥖": "багет",
+ "🥨": "перек",
+ "🥯": "ѓеврек",
+ "🥞": "палачинки",
+ "🧇": "вафла",
+ "🍔": "хамбургер",
+ "🍕": "пица",
+ "🌭": "хот дог",
+ "🌮": "тако",
+ "🍿": "пуканки",
+ "🦀": "рак",
+ "🦞": "јастог",
+ "🍨": "сладолед",
+ "🍩": "крофна",
+ "🍪": "колаче",
+ "🎂": "роденденска торта",
+ "🧁": "тортичка",
+ "🍫": "чоколадо",
+ "🍬": "бонбона",
+ "🍭": "лижалче",
+ "🫖": "чајник",
+ "🧃": "сокче во тетрапак",
+ "🧉": "мате",
+ "🧭": "компас",
+ "🏔️": "планина со снежен врв",
+ "🌋": "вулкан",
+ "🏕️": "кампување",
+ "🏝️": "пуст остров",
+ "🏡": "куќа со градина",
+ "⛲️": "фонтана",
+ "🎠": "коњче од вртелешка",
+ "🎡": "панорамско тркало",
+ "🎢": "тобоган",
+ "💈": "столб пред берберница",
+ "🚆": "воз",
+ "🚋": "вагон на трамвај",
+ "🚍️": "автобус што пристигнува",
+ "🚕": "такси",
+ "🚗": "автомобил",
+ "🚚": "камион за испорака",
+ "🚜": "трактор",
+ "🛵": "скутер",
+ "🛺": "авто-рикша",
+ "🛴": "тротинет",
+ "🛹": "скејтборд",
+ "🛼": "ролшуи",
+ "⚓️": "сидро",
+ "⛵️": "едреник",
+ "🛶": "кајак",
+ "🚤": "глисер",
+ "🚢": "брод",
+ "✈️": "авион",
+ "🚁": "хеликоптер",
+ "🚠": "планинска жичарница",
+ "🛰️": "сателит",
+ "🚀": "ракета",
+ "🛸": "летечка чинија",
+ "⏰": "часовник со аларм",
+ "🌙": "месечев срп",
+ "🌡️": "термометар",
+ "☀️": "сонце",
+ "🪐": "планета со прстени",
+ "🌟": "светлечка ѕвезда",
+ "🌀": "циклон",
+ "🌈": "виножито",
+ "☂️": "чадор",
+ "❄️": "снегулка",
+ "☄️": "комета",
+ "🔥": "оган",
+ "💧": "капка",
+ "🌊": "бран",
+ "🎃": "фенер од тиква",
+ "✨": "светки",
+ "🎈": "балон",
+ "🎉": "прскалка со конфети",
+ "🎏": "летало со крапови",
+ "🎀": "панделка",
+ "🎁": "завиткан подарок",
+ "🎟️": "влезни билети",
+ "🏆️": "трофеј",
+ "⚽️": "фудбалска топка",
+ "🏀": "баскет",
+ "🏈": "топка за американски фудбал",
+ "🎾": "тениско топче",
+ "🥏": "летечки диск",
+ "🏓": "пинг понг",
+ "🏸": "бадминтон",
+ "🤿": "нуркачка маска",
+ "🥌": "камен за карлинг",
+ "🎯": "пикадо",
+ "🪀": "јојо",
+ "🪁": "летечки змеј",
+ "🔮": "кристална топка",
+ "🎲": "коцка",
+ "🧩": "сложувалка",
+ "🎨": "сликарска палета",
+ "🧵": "конец",
+ "👕": "маица",
+ "🧦": "чорапи",
+ "👗": "фустан",
+ "🩳": "шорцеви",
+ "🎒": "училишен ранец",
+ "👟": "патика",
+ "👑": "круна",
+ "🧢": "капче",
+ "💄": "кармин",
+ "💍": "прстен",
+ "💎": "скапоцен камен",
+ "📢": "разглас",
+ "🎶": "музички ноти",
+ "🎙️": "студиски микрофон",
+ "📻️": "радио",
+ "🎷": "саксофон",
+ "🪗": "хармоника",
+ "🎸": "гитара",
+ "🎺": "труба",
+ "🎻": "виолина",
+ "🪕": "бенџо",
+ "🥁": "тапан",
+ "☎️": "телефон",
+ "🔋": "батерија",
+ "💿️": "цд",
+ "🧮": "сметалка",
+ "🎬️": "филмска клапа",
+ "💡": "светилка",
+ "🔦": "батериска ламба",
+ "🏮": "црвен фенер",
+ "📕": "затворена книга",
+ "🏷️": "етикета",
+ "💳️": "кредитна картичка",
+ "✏️": "молив",
+ "🖌️": "четка за боење",
+ "🖍️": "креон",
+ "📌": "притискач",
+ "📎": "спојувалка",
+ "🔑": "клуч",
+ "🪃": "бумеранг",
+ "🏹": "лак и стрела",
+ "⚖️": "механичка вага",
+ "🧲": "магнет",
+ "🧪": "епрувета",
+ "🧬": "днк",
+ "🔬": "микроскоп",
+ "🔭": "телескоп",
+ "📡": "сателитска антена",
+ "🪑": "стол",
+ "🧹": "метла",
+ "🗿": "монолитни статуи"
+ },
+ "ms": {
+ "👽️": "makhluk asing",
+ "🤖": "robot",
+ "🧠": "otak",
+ "👁️": "mata",
+ "🧙": "ahli silap mata",
+ "🧚": "pari-pari",
+ "🧜": "manusia duyung",
+ "🐵": "muka monyet",
+ "🦧": "orang utan",
+ "🐶": "muka anjing",
+ "🐺": "serigala",
+ "🦊": "rubah",
+ "🦝": "rakun",
+ "🐱": "muka kucing",
+ "🦁": "singa",
+ "🐯": "muka harimau",
+ "🐴": "muka kuda",
+ "🦄": "unikorn",
+ "🦓": "zebra",
+ "🦌": "rusa",
+ "🐮": "muka lembu",
+ "🐷": "muka khinzir",
+ "🐗": "babi hutan",
+ "🐪": "unta",
+ "🦙": "llama",
+ "🦒": "zirafah",
+ "🐘": "gajah",
+ "🦣": "mamot",
+ "🦏": "badak sumbu",
+ "🐭": "muka tikus",
+ "🐰": "muka arnab",
+ "🐿️": "tupai tanah",
+ "🦔": "landak kecil",
+ "🦇": "kelawar",
+ "🐻": "beruang",
+ "🐨": "koala",
+ "🦥": "sloth",
+ "🦦": "memerang",
+ "🦘": "kanggaru",
+ "🐥": "anak ayam menghadap depan",
+ "🐦️": "burung",
+ "🕊️": "burung merpati",
+ "🦆": "itik",
+ "🦉": "burung hantu",
+ "🦤": "dodo",
+ "🪶": "bulu pelepah",
+ "🦩": "flamingo",
+ "🦚": "merak",
+ "🦜": "kakak tua",
+ "🐊": "buaya",
+ "🐢": "penyu",
+ "🦎": "cicak",
+ "🐍": "ular",
+ "🐲": "muka naga",
+ "🦕": "sauropod",
+ "🐳": "ikan paus memancutkan air",
+ "🐬": "ikan lumba-lumba",
+ "🦭": "anjing laut",
+ "🐟️": "ikan",
+ "🐠": "ikan tropika",
+ "🦈": "jerung",
+ "🐙": "sotong kurita",
+ "🐚": "kulit kerang berpilin",
+ "🐌": "siput",
+ "🦋": "rama-rama",
+ "🐛": "ulat",
+ "🐝": "lebah madu",
+ "🐞": "kumbang kura-kura",
+ "💐": "sejambak bunga",
+ "🌹": "bunga mawar",
+ "🌺": "bunga raya",
+ "🌻": "bunga matahari",
+ "🌷": "bunga tulip",
+ "🌲": "malar hijau",
+ "🌳": "pokok daun luruh",
+ "🌴": "pokok palma",
+ "🌵": "kaktus",
+ "🌿": "herba",
+ "🍁": "daun mapel",
+ "🍇": "anggur",
+ "🍈": "tembikai susu",
+ "🍉": "tembikai",
+ "🍊": "limau tangerin",
+ "🍋": "lemon",
+ "🍌": "pisang",
+ "🍍": "nanas",
+ "🥭": "mangga",
+ "🍏": "epal hijau",
+ "🍐": "buah pear",
+ "🍑": "buah pic",
+ "🍒": "buah ceri",
+ "🍓": "buah strawberi",
+ "🫐": "beri biru",
+ "🥝": "buah kiwi",
+ "🍅": "tomato",
+ "🫒": "buah zaitun",
+ "🥥": "kelapa",
+ "🥑": "avokado",
+ "🍆": "terung",
+ "🥕": "lobak merah",
+ "🌽": "tongkol jagung",
+ "🌶️": "cili api",
+ "🥬": "sayuran hijau",
+ "🥦": "brokoli",
+ "🧅": "bawang",
+ "🍄": "cendawan",
+ "🥜": "kacang tanah",
+ "🥐": "kroisan",
+ "🥖": "roti baguette",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "penkek",
+ "🧇": "wafel",
+ "🍔": "hamburger",
+ "🍕": "piza",
+ "🌭": "hot dog",
+ "🌮": "tako",
+ "🍿": "bertih jagung",
+ "🦀": "ketam",
+ "🦞": "udang karang",
+ "🍨": "ais krim",
+ "🍩": "donat",
+ "🍪": "biskut",
+ "🎂": "kek hari jadi",
+ "🧁": "kek cawan",
+ "🍫": "sekeping coklat",
+ "🍬": "gula-gula",
+ "🍭": "lolipop",
+ "🫖": "teko teh",
+ "🧃": "minuman air kotak",
+ "🧉": "mate",
+ "🧭": "kompas",
+ "🏔️": "gunung dengan puncak bersalji",
+ "🌋": "gunung berapi",
+ "🏕️": "berkhemah",
+ "🏝️": "pulau padang pasir",
+ "🏡": "rumah dengan taman",
+ "⛲️": "air pancut",
+ "🎠": "kuda karusel",
+ "🎡": "roda ferris",
+ "🎢": "roller coaster",
+ "💈": "jalur kedai gunting rambut",
+ "🚆": "kereta api",
+ "🚋": "gerabak trem",
+ "🚍️": "bas dari arah depan",
+ "🚕": "teksi",
+ "🚗": "kereta",
+ "🚚": "trak penghantaran",
+ "🚜": "traktor",
+ "🛵": "skuter bermotor",
+ "🛺": "lanca auto",
+ "🛴": "skuter tolak",
+ "🛹": "papan luncur",
+ "🛼": "kasut roda",
+ "⚓️": "sauh",
+ "⛵️": "perahu layar",
+ "🛶": "kanu",
+ "🚤": "bot laju",
+ "🚢": "kapal",
+ "✈️": "kapal terbang",
+ "🚁": "helikopter",
+ "🚠": "jalan kabel gunung",
+ "🛰️": "satelit",
+ "🚀": "roket",
+ "🛸": "piring terbang",
+ "⏰": "jam loceng",
+ "🌙": "bulan sabit",
+ "🌡️": "termometer",
+ "☀️": "matahari",
+ "🪐": "planet bergelang",
+ "🌟": "bintang bersinar",
+ "🌀": "taufan",
+ "🌈": "pelangi",
+ "☂️": "payung",
+ "❄️": "emping salji",
+ "☄️": "komet",
+ "🔥": "api",
+ "💧": "titisan air",
+ "🌊": "ombak laut",
+ "🎃": "tanglung labu",
+ "✨": "berkilauan",
+ "🎈": "belon",
+ "🎉": "pencetus bunyi parti",
+ "🎏": "panji-panji kap",
+ "🎀": "reben",
+ "🎁": "bungkusan hadiah",
+ "🎟️": "tiket masuk",
+ "🏆️": "piala",
+ "⚽️": "bola sepak",
+ "🏀": "bola keranjang",
+ "🏈": "bola sepak amerika",
+ "🎾": "tenis",
+ "🥏": "cakera terbang",
+ "🏓": "ping pong",
+ "🏸": "badminton",
+ "🤿": "topeng menyelam",
+ "🥌": "batu curling",
+ "🎯": "balingan tepat",
+ "🪀": "yo-yo",
+ "🪁": "layang-layang",
+ "🔮": "bola kristal",
+ "🎲": "dadu permainan",
+ "🧩": "kepingan suai gambar",
+ "🎨": "palet artis",
+ "🧵": "benang",
+ "👕": "kemeja-t",
+ "🧦": "stoking",
+ "👗": "gaun",
+ "🩳": "seluar pendek",
+ "🎒": "beg galas sekolah",
+ "👟": "kasut lari",
+ "👑": "mahkota",
+ "🧢": "kep berbil",
+ "💄": "gincu",
+ "💍": "cincin",
+ "💎": "batu permata",
+ "📢": "corong pembesar suara",
+ "🎶": "nota-nota muzik",
+ "🎙️": "mikrofon studio",
+ "📻️": "radio",
+ "🎷": "saksofon",
+ "🪗": "akordion",
+ "🎸": "gitar",
+ "🎺": "trompet",
+ "🎻": "biola",
+ "🪕": "banjo",
+ "🥁": "dram",
+ "☎️": "telefon",
+ "🔋": "bateri",
+ "💿️": "cakera optik",
+ "🧮": "sempua",
+ "🎬️": "papan pengetap",
+ "💡": "mentol lampu",
+ "🔦": "lampu suluh",
+ "🏮": "tanglung kertas merah",
+ "📕": "buku tertutup",
+ "🏷️": "label",
+ "💳️": "kad kredit",
+ "✏️": "pensel",
+ "🖌️": "berus cat",
+ "🖍️": "krayon",
+ "📌": "paku tekan",
+ "📎": "klip kertas",
+ "🔑": "kunci",
+ "🪃": "bumerang",
+ "🏹": "panah dan busur",
+ "⚖️": "neraca timbang",
+ "🧲": "magnet",
+ "🧪": "tabung uji",
+ "🧬": "dna",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "antena satelit",
+ "🪑": "kerusi",
+ "🧹": "penyapu",
+ "🗿": "moyai"
+ },
+ "my": {
+ "👽️": "ဂြိုဟ်သား",
+ "🤖": "စက်ရုပ် မျက်နှာ",
+ "🧠": "ဦးနှောက်",
+ "👁️": "မျက်လုံး",
+ "🧙": "မှော်ဆရာ",
+ "🧚": "နတ်သမီး",
+ "🧜": "ရေလူ",
+ "🐵": "မျောက်ရုပ်",
+ "🦧": "အိုရန်အူတန်",
+ "🐶": "ခွေးရုပ်",
+ "🐺": "ဝံပုလွေရုပ်",
+ "🦊": "မြေခွေးရုပ်",
+ "🦝": "ရက်ကွန်းဝံ",
+ "🐱": "ကြောင်ရုပ်",
+ "🦁": "ခြင်္သေ့ရုပ်",
+ "🐯": "ကျားရုပ်",
+ "🐴": "မြင်းရုပ်",
+ "🦄": "ချိုတစ်ချောင်းမြင်းရုပ်",
+ "🦓": "မြင်းကျား",
+ "🦌": "သမင်",
+ "🐮": "နွားမရုပ်",
+ "🐷": "ဝက်ရုပ်",
+ "🐗": "တောဝက်",
+ "🐪": "ကုလားအုတ်",
+ "🦙": "လာမာ ကုလားအုတ်",
+ "🦒": "သစ်ကုလားအုတ်",
+ "🐘": "ဆင်",
+ "🦣": "ရှေးဆင်",
+ "🦏": "ကြံ့",
+ "🐭": "ကြွက် မျက်နှာ",
+ "🐰": "ယုန်ရုပ်",
+ "🐿️": "ကျောရိုးတွင် အဖြူအနက်စင်းပါ ရှဥ့်ငယ်တမျိုး",
+ "🦔": "ဖြူငယ်",
+ "🦇": "လင်းနို့",
+ "🐻": "ဝက်ဝံရုပ်",
+ "🐨": "ကိုအာလာ",
+ "🦥": "မျောက်မောင်းမ",
+ "🦦": "ဖျံ",
+ "🦘": "သားပိုက်ကောင်",
+ "🐥": "ရှေ့သို့မျက်နှာမူထားသည့် ကြက်ပေါက်စ",
+ "🐦️": "ငှက်",
+ "🕊️": "ချိုးငှက်",
+ "🦆": "ဘဲ",
+ "🦉": "ဇီးကွက်",
+ "🦤": "ဒိုဒို",
+ "🪶": "အတောင်",
+ "🦩": "ကြိုးကြာနီ",
+ "🦚": "ဒေါင်း",
+ "🦜": "ကြက်တူရွေး",
+ "🐊": "မိကျောင်း",
+ "🐢": "လိပ်",
+ "🦎": "အိမ်မြှောင်",
+ "🐍": "မြွေ",
+ "🐲": "နဂါးရုပ်",
+ "🦕": "ဆော်ရိုပေါ့ဒ်",
+ "🐳": "ရေမှုတ်ထုတ်နေသည့် ဝေလငါး",
+ "🐬": "လင်းပိုင်",
+ "🦭": "ပင်လယ်ဖျံ",
+ "🐟️": "ငါး",
+ "🐠": "အပူပိုင်း ငါး",
+ "🦈": "ငါးမန်း",
+ "🐙": "ဘဝဲ",
+ "🐚": "ခရုခွံ",
+ "🐌": "ခရု",
+ "🦋": "လိပ်ပြာ",
+ "🐛": "ပိုးကောင်ကလေး",
+ "🐝": "ပျား",
+ "🐞": "ပိုးတောင်မာ",
+ "💐": "ပန်းစည်း",
+ "🌹": "နှင်းဆီပန်း",
+ "🌺": "ခေါင်ရန်းပန်း",
+ "🌻": "နေကြာပန်း",
+ "🌷": "ကျူးလစ်ပန်း",
+ "🌲": "အမြဲစိမ်း သစ်ပင်",
+ "🌳": "ရွက်ပြတ်ပင်",
+ "🌴": "ထန်းပင်",
+ "🌵": "ရှားစောင်းပင်",
+ "🌿": "ဆေးဖက်ဝင်အပင်",
+ "🍁": "မေပယ်ရွက်",
+ "🍇": "စပျစ်သီး",
+ "🍈": "သခွားမွှေး",
+ "🍉": "ဖရဲသီး",
+ "🍊": "အခွံပွလိမ္မော်သီး",
+ "🍋": "ရှောက်သီး",
+ "🍌": "ငှက်ပျောသီး",
+ "🍍": "နာနတ်သီး",
+ "🥭": "သရက်သီး",
+ "🍏": "ပန်းသီးစိမ်း",
+ "🍐": "သစ်တော်သီး",
+ "🍑": "မက်မွန်သီး",
+ "🍒": "ချယ်ရီသီးများ",
+ "🍓": "စတော်ဘယ်ရီ",
+ "🫐": "ဘလူးဘယ်ရီ",
+ "🥝": "ကီဝီသီး",
+ "🍅": "ခရမ်းချဉ်သီး",
+ "🫒": "သံလွင်",
+ "🥥": "အုန်းသီး",
+ "🥑": "ထောပတ်သီး",
+ "🍆": "ခရမ်းသီး",
+ "🥕": "မုန်လာဥ",
+ "🌽": "ပြောင်းနှံ",
+ "🌶️": "ငရုတ်သီး",
+ "🥬": "အရွက်ဖားဖား သစ်ရွက်စိမ်း",
+ "🥦": "ပန်းဂေါ်ဖီစိမ်း",
+ "🧅": "ကြက်သွန်နီ",
+ "🍄": "မှို",
+ "🥜": "မြေပဲ",
+ "🥐": "လခြမ်းကွေးပေါင်မုန့်",
+ "🥖": "ပြင်သစ်ပေါင်မုန့်",
+ "🥨": "မုန့်ကြိုးလိမ်",
+ "🥯": "ပေါင်မုန့်အကွင်း",
+ "🥞": "မုန့်အိုးကင်းကြော်",
+ "🧇": "ဒေါင်းဖန်ဝါ မုန့်",
+ "🍔": "ဟမ်ဘာဂါ",
+ "🍕": "ပီဇာ",
+ "🌭": "ဟော့ဒေါ့",
+ "🌮": "တာကို",
+ "🍿": "ပြောင်းဖူးပေါက်ပေါက်",
+ "🦀": "ကဏန်း",
+ "🦞": "ကျောက်ပုစွန်",
+ "🍨": "ရေခဲမုန့်",
+ "🍩": "ဒိုးနတ်",
+ "🍪": "ကွတ်ကီး",
+ "🎂": "မွေးနေ့ ကိတ်မုန့်",
+ "🧁": "ကြက်ဥမုန့်",
+ "🍫": "ချောကလက် အချောင်း",
+ "🍬": "သကြားလုံး",
+ "🍭": "ချိုချဉ်ပလုတ်တုတ်",
+ "🫖": "ခရား",
+ "🧃": "အဖျော်ရေ ဘူး",
+ "🧉": "ချီမာရအို",
+ "🧭": "သံလိုက်အိမ်မြှောင်",
+ "🏔️": "ဆီးနှင်းဖုံးနေသည့် တောင်",
+ "🌋": "မီးတောင်",
+ "🏕️": "စခန်းချနေခြင်း",
+ "🏝️": "လူသူမဲ့ကျွန်း",
+ "🏡": "ပန်းခြံနှင့် အိမ်",
+ "⛲️": "အလှပြ ရေပန်း",
+ "🎠": "ချားရဟတ် မြင်း",
+ "🎡": "ချားရဟတ်",
+ "🎢": "သည်းဖိုရထား",
+ "💈": "ဆံပင်ညှပ်ဆိုင် တိုင်",
+ "🚆": "ရထား",
+ "🚋": "ဓာတ်ရထားတွဲ",
+ "🚍️": "လာနေသည့် ဘတ်စ်ကား",
+ "🚕": "တက်ကစီ",
+ "🚗": "မော်တော်ကား",
+ "🚚": "ပစ္စည်းပို့သည့် ထရပ်ကား",
+ "🚜": "လယ်ထွန်စက်",
+ "🛵": "မော်တာစက်တပ် စကူတာ",
+ "🛺": "သုံးဘီး",
+ "🛴": "စကူတာ",
+ "🛹": "စကိတ်လျှောပြား",
+ "🛼": "ရိုလာ စကိတ်",
+ "⚓️": "ကျောက်ဆူး",
+ "⛵️": "ရွက်လှေ",
+ "🛶": "ကနူး",
+ "🚤": "အမြန်စက်လှေ",
+ "🚢": "သင်္ဘော",
+ "✈️": "လေယာဉ်",
+ "🚁": "ရဟတ်ယာဉ်",
+ "🚠": "တောင်တက် ဓာတ်ကြိုးရထားလမ်း",
+ "🛰️": "ဂြိုဟ်တု",
+ "🚀": "ဒုံးယာဉ်",
+ "🛸": "ပန်းကန်ပြားပျံ",
+ "⏰": "နှိုးစက်နာရီ",
+ "🌙": "လခြမ်း",
+ "🌡️": "သာမိုမီတာ",
+ "☀️": "နေ",
+ "🪐": "ကွင်းပါရှိသည့် ဂြိုဟ်",
+ "🌟": "တောက်ပသည့် ကြယ်",
+ "🌀": "ဆိုင်ကလုန်း",
+ "🌈": "သက်တံ",
+ "☂️": "ထီး",
+ "❄️": "နှင်းပွင့်",
+ "☄️": "ကြယ်တံခွန်",
+ "🔥": "မီး",
+ "💧": "အစက်ကလေး",
+ "🌊": "ရေလှိုင်း",
+ "🎃": "ဖရုံသီး မီးအိမ်",
+ "✨": "မီးပွင့်များ",
+ "🎈": "လေပူဖောင်း",
+ "🎉": "ပါတီဗြောက်အိုး",
+ "🎏": "ငါးကြင်း တံခွန်",
+ "🎀": "ဖဲကြိုး",
+ "🎁": "ထုပ်ပိုးထားသည့် လက်ဆောင်",
+ "🎟️": "ဝင်ခွင့် လက်မှတ်များ",
+ "🏆️": "ဖလားဆု",
+ "⚽️": "ဘောလုံး",
+ "🏀": "ဘတ်စကက်ဘော",
+ "🏈": "အမေရိကန် ဘောလုံး",
+ "🎾": "တင်းနစ်",
+ "🥏": "ချပ်ပြားဝိုင်း ပစ်",
+ "🏓": "စားပွဲတင် တင်းနစ်",
+ "🏸": "ကြက်တောင်ရိုက်ခြင်း",
+ "🤿": "ရေငုပ် မျက်နှာဖုံး",
+ "🥌": "ရေခဲပြင်ကျောက်ပြားဝိုင်း",
+ "🎯": "ဗဟိုချက်ထိမှန်ခြင်း",
+ "🪀": "ယိုယို",
+ "🪁": "စွန်",
+ "🔮": "ကသိုဏ်းဖန်လုံး",
+ "🎲": "အန်စာတုံး",
+ "🧩": "ဂျစ်စော အပိုင်းအစ",
+ "🎨": "ဆေးစပ်ရာ အပြား",
+ "🧵": "အပ်ချည်",
+ "👕": "တီရှပ်",
+ "🧦": "ခြေအိတ်",
+ "👗": "ဝတ်စုံ",
+ "🩳": "ဘောင်းဘီတို",
+ "🎒": "ကျောင်းသား ကျောပိုးအိတ်",
+ "👟": "အပြေး ဖိနပ်",
+ "👑": "သရဖူ",
+ "🧢": "ကက်ဦးထုတ်",
+ "💄": "နှုတ်ခမ်းနီ",
+ "💍": "လက်စွပ်",
+ "💎": "ကျောက်မျက် ရတနာ",
+ "📢": "အသံချဲ့စက်",
+ "🎶": "ဂီတ သင်္ကေတများ",
+ "🎙️": "စတူဒီယို မိုက်ကရိုဖုန်း",
+ "📻️": "ရေဒီယို",
+ "🎷": "ဆက်ဆိုဖုန်း",
+ "🪗": "အကော်ဒီယံ",
+ "🎸": "ဂစ်တာ",
+ "🎺": "ခရာ",
+ "🎻": "တယော",
+ "🪕": "ဘင်ဂျို",
+ "🥁": "ဗုံ",
+ "☎️": "တယ်လီဖုန်း",
+ "🔋": "ဘက်ထရီ",
+ "💿️": "အလင်းသုံးဒစ်",
+ "🧮": "ပေသီးတွက်ခုံ",
+ "🎬️": "ရုပ်ရှင် ကလက်ဘုတ်",
+ "💡": "မီးလုံး",
+ "🔦": "ဓာတ်မီး",
+ "🏮": "စက္ကူမီးအိမ် အနီ",
+ "📕": "ပိတ်ထားသည့် စာအုပ်",
+ "🏷️": "တံဆိပ်",
+ "💳️": "ခရက်ဒစ်ကတ်",
+ "✏️": "ခဲတံ",
+ "🖌️": "စုတ်တံ",
+ "🖍️": "ရောင်စုံဖယောင်းခဲတံ",
+ "📌": "ဖိထိုးရသည့် ပင်အပ်",
+ "📎": "စက္ကူညှပ်",
+ "🔑": "သော့",
+ "🪃": "ထိကပြန်",
+ "🏹": "လေးနှင့် မြား",
+ "⚖️": "ချိန်ခွင်",
+ "🧲": "သံလိုက်",
+ "🧪": "ဖန်ပြွန်",
+ "🧬": "မျိုးရိုးဗီဇ",
+ "🔬": "အဏုကြည့်မှန်ပြောင်း",
+ "🔭": "အဝေးကြည့်မှန်ပြောင်း",
+ "📡": "ဂြိုဟ်တု စလောင်း",
+ "🪑": "ကုလားထိုင်",
+ "🧹": "တံမြက်စည်း",
+ "🗿": "မိုအိုင်"
+ },
+ "nl": {
+ "👽️": "buitenaards wezen",
+ "🤖": "robot",
+ "🧠": "brein",
+ "👁️": "oog",
+ "🧙": "magiër",
+ "🧚": "elfje",
+ "🧜": "zeemeermin",
+ "🐵": "apengezicht",
+ "🦧": "orang-oetang",
+ "🐶": "hondengezicht",
+ "🐺": "wolf",
+ "🦊": "vos",
+ "🦝": "wasbeer",
+ "🐱": "kattengezicht",
+ "🦁": "leeuw",
+ "🐯": "tijgergezicht",
+ "🐴": "paardengezicht",
+ "🦄": "eenhoorn",
+ "🦓": "zebra",
+ "🦌": "hert",
+ "🐮": "koeiengezicht",
+ "🐷": "varkensgezicht",
+ "🐗": "zwijn",
+ "🐪": "dromedaris",
+ "🦙": "lama",
+ "🦒": "giraffe",
+ "🐘": "olifant",
+ "🦣": "mammoet",
+ "🦏": "neushoorn",
+ "🐭": "muizengezicht",
+ "🐰": "konijnengezicht",
+ "🐿️": "eekhoorn",
+ "🦔": "egel",
+ "🦇": "vleermuis",
+ "🐻": "beer",
+ "🐨": "koala",
+ "🦥": "luiaard",
+ "🦦": "otter",
+ "🦘": "kangoeroe",
+ "🐥": "naar voren kijkend kuikentje",
+ "🐦️": "vogel",
+ "🕊️": "duif",
+ "🦆": "eend",
+ "🦉": "uil",
+ "🦤": "dodo",
+ "🪶": "veer",
+ "🦩": "flamingo",
+ "🦚": "pauw",
+ "🦜": "papegaai",
+ "🐊": "krokodil",
+ "🐢": "schildpad",
+ "🦎": "hagedis",
+ "🐍": "slang",
+ "🐲": "drakengezicht",
+ "🦕": "sauropode",
+ "🐳": "spuitende walvis",
+ "🐬": "dolfijn",
+ "🦭": "zeehond",
+ "🐟️": "vis",
+ "🐠": "tropische vis",
+ "🦈": "haai",
+ "🐙": "octopus",
+ "🐚": "schelp",
+ "🐌": "slak",
+ "🦋": "vlinder",
+ "🐛": "insect",
+ "🐝": "honingbij",
+ "🐞": "lieveheersbeestje",
+ "💐": "boeket",
+ "🌹": "roos",
+ "🌺": "hibiscus",
+ "🌻": "zonnebloem",
+ "🌷": "tulp",
+ "🌲": "naaldboom",
+ "🌳": "loofboom",
+ "🌴": "palmboom",
+ "🌵": "cactus",
+ "🌿": "kruid",
+ "🍁": "esdoornblad",
+ "🍇": "druiven",
+ "🍈": "meloen",
+ "🍉": "watermeloen",
+ "🍊": "mandarijn",
+ "🍋": "citroen",
+ "🍌": "banaan",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "groene appel",
+ "🍐": "peer",
+ "🍑": "perzik",
+ "🍒": "kersen",
+ "🍓": "aardbei",
+ "🫐": "bosbessen",
+ "🥝": "kiwi",
+ "🍅": "tomaat",
+ "🫒": "olijf",
+ "🥥": "kokosnoot",
+ "🥑": "avocado",
+ "🍆": "aubergine",
+ "🥕": "wortel",
+ "🌽": "maïskolf",
+ "🌶️": "hete peper",
+ "🥬": "bladgroente",
+ "🥦": "broccoli",
+ "🧅": "ui",
+ "🍄": "paddenstoel",
+ "🥜": "pinda’s",
+ "🥐": "croissant",
+ "🥖": "stokbrood",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "pannenkoeken",
+ "🧇": "wafel",
+ "🍔": "hamburger",
+ "🍕": "pizzapunt",
+ "🌭": "hotdog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "krab",
+ "🦞": "kreeft",
+ "🍨": "ijs",
+ "🍩": "donut",
+ "🍪": "koekje",
+ "🎂": "verjaardagstaart",
+ "🧁": "cupcake",
+ "🍫": "chocoladereep",
+ "🍬": "snoep",
+ "🍭": "lolly",
+ "🫖": "theepot",
+ "🧃": "pakje drinken",
+ "🧉": "maté",
+ "🧭": "kompas",
+ "🏔️": "berg met besneeuwde toppen",
+ "🌋": "vulkaan",
+ "🏕️": "kamperen",
+ "🏝️": "onbewoond eiland",
+ "🏡": "huis met tuin",
+ "⛲️": "fontein",
+ "🎠": "draaimolenpaard",
+ "🎡": "reuzenrad",
+ "🎢": "achtbaan",
+ "💈": "kapperspaal",
+ "🚆": "trein",
+ "🚋": "tramwagon",
+ "🚍️": "naderende bus",
+ "🚕": "taxi",
+ "🚗": "auto",
+ "🚚": "bestelbus",
+ "🚜": "tractor",
+ "🛵": "scooter",
+ "🛺": "riksja",
+ "🛴": "step",
+ "🛹": "skateboard",
+ "🛼": "rolschaats",
+ "⚓️": "anker",
+ "⛵️": "zeilboot",
+ "🛶": "kano",
+ "🚤": "speedboot",
+ "🚢": "schip",
+ "✈️": "vliegtuig",
+ "🚁": "helikopter",
+ "🚠": "bergkabelbaan",
+ "🛰️": "satelliet",
+ "🚀": "raket",
+ "🛸": "vliegende schotel",
+ "⏰": "wekker",
+ "🌙": "maansikkel",
+ "🌡️": "thermometer",
+ "☀️": "zon",
+ "🪐": "planeet met ringen",
+ "🌟": "stralende ster",
+ "🌀": "cycloon",
+ "🌈": "regenboog",
+ "☂️": "paraplu",
+ "❄️": "sneeuwvlok",
+ "☄️": "komeet",
+ "🔥": "vuur",
+ "💧": "druppel",
+ "🌊": "golf",
+ "🎃": "halloweenlantaarn",
+ "✨": "sterretjes",
+ "🎈": "ballon",
+ "🎉": "feestknaller",
+ "🎏": "karperslinger",
+ "🎀": "strik",
+ "🎁": "ingepakt cadeau",
+ "🎟️": "entreekaartjes",
+ "🏆️": "trofee",
+ "⚽️": "voetbal",
+ "🏀": "basketbal",
+ "🏈": "american football",
+ "🎾": "tennis",
+ "🥏": "frisbee",
+ "🏓": "pingpong",
+ "🏸": "badminton",
+ "🤿": "duikbril",
+ "🥌": "curlingsteen",
+ "🎯": "directe treffer",
+ "🪀": "jojo",
+ "🪁": "vlieger",
+ "🔮": "kristallen bol",
+ "🎲": "dobbelsteen",
+ "🧩": "puzzelstukje",
+ "🎨": "schilderspalet",
+ "🧵": "garen",
+ "👕": "T-shirt",
+ "🧦": "sokken",
+ "👗": "jurk",
+ "🩳": "korte broek",
+ "🎒": "schooltas",
+ "👟": "sportschoen",
+ "👑": "kroon",
+ "🧢": "pet",
+ "💄": "lippenstift",
+ "💍": "ring",
+ "💎": "edelsteen",
+ "📢": "luidspreker",
+ "🎶": "muzieknoten",
+ "🎙️": "studiomicrofoon",
+ "📻️": "radio",
+ "🎷": "saxofoon",
+ "🪗": "accordeon",
+ "🎸": "gitaar",
+ "🎺": "trompet",
+ "🎻": "viool",
+ "🪕": "banjo",
+ "🥁": "trommel",
+ "☎️": "telefoon",
+ "🔋": "batterij",
+ "💿️": "optische schijf",
+ "🧮": "abacus",
+ "🎬️": "klapbord",
+ "💡": "gloeilamp",
+ "🔦": "zaklamp",
+ "🏮": "rode papieren lantaarn",
+ "📕": "gesloten boek",
+ "🏷️": "label",
+ "💳️": "creditcard",
+ "✏️": "potlood",
+ "🖌️": "kwast",
+ "🖍️": "krijtje",
+ "📌": "punaise",
+ "📎": "paperclip",
+ "🔑": "sleutel",
+ "🪃": "boemerang",
+ "🏹": "pijl en boog",
+ "⚖️": "weegschaal",
+ "🧲": "magneet",
+ "🧪": "reageerbuis",
+ "🧬": "DNA",
+ "🔬": "microscoop",
+ "🔭": "telescoop",
+ "📡": "satellietschotel",
+ "🪑": "hoge stoel",
+ "🧹": "bezem",
+ "🗿": "moai-beeld"
+ },
+ "pl": {
+ "👽️": "ufoludek",
+ "🤖": "głowa robota",
+ "🧠": "mózg",
+ "👁️": "oko",
+ "🧙": "mag",
+ "🧚": "wróżka",
+ "🧜": "syrena",
+ "🐵": "głowa małpy",
+ "🦧": "orangutan",
+ "🐶": "głowa psa",
+ "🐺": "głowa wilka",
+ "🦊": "głowa lisa",
+ "🦝": "szop",
+ "🐱": "głowa kota",
+ "🦁": "głowa lwa",
+ "🐯": "głowa tygrysa",
+ "🐴": "głowa konia",
+ "🦄": "głowa jednorożca",
+ "🦓": "zebra",
+ "🦌": "jeleń",
+ "🐮": "głowa krowy",
+ "🐷": "głowa świni",
+ "🐗": "dzik",
+ "🐪": "wielbłąd",
+ "🦙": "lama",
+ "🦒": "żyrafa",
+ "🐘": "słoń",
+ "🦣": "mamut",
+ "🦏": "nosorożec",
+ "🐭": "głowa myszy",
+ "🐰": "głowa królika",
+ "🐿️": "pręgowiec",
+ "🦔": "jeż",
+ "🦇": "nietoperz",
+ "🐻": "głowa niedźwiedzia",
+ "🐨": "koala",
+ "🦥": "leniwiec",
+ "🦦": "wydra",
+ "🦘": "kangur",
+ "🐥": "kurczątko od przodu",
+ "🐦️": "ptak",
+ "🕊️": "gołąb",
+ "🦆": "kaczka",
+ "🦉": "sowa",
+ "🦤": "dodo",
+ "🪶": "pióro",
+ "🦩": "flaming",
+ "🦚": "paw",
+ "🦜": "papuga",
+ "🐊": "krokodyl",
+ "🐢": "żółw",
+ "🦎": "jaszczurka",
+ "🐍": "wąż",
+ "🐲": "głowa smoka",
+ "🦕": "zauropod",
+ "🐳": "wieloryb tryskający wodą",
+ "🐬": "delfin",
+ "🦭": "foka",
+ "🐟️": "ryba",
+ "🐠": "ryba tropikalna",
+ "🦈": "rekin",
+ "🐙": "ośmiornica",
+ "🐚": "muszla spiralna",
+ "🐌": "ślimak",
+ "🦋": "motyl",
+ "🐛": "gąsienica",
+ "🐝": "pszczoła",
+ "🐞": "biedronka",
+ "💐": "bukiet kwiatów",
+ "🌹": "róża",
+ "🌺": "kwiat hibiskusa",
+ "🌻": "słonecznik",
+ "🌷": "tulipan",
+ "🌲": "wiecznie zielone drzewo",
+ "🌳": "drzewo liściaste",
+ "🌴": "palma",
+ "🌵": "kaktus",
+ "🌿": "zioło",
+ "🍁": "liść klonowy",
+ "🍇": "winogrona",
+ "🍈": "melon",
+ "🍉": "arbuz",
+ "🍊": "mandarynka",
+ "🍋": "cytryna",
+ "🍌": "banan",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "zielone jabłko",
+ "🍐": "gruszka",
+ "🍑": "brzoskwinia",
+ "🍒": "wiśnie",
+ "🍓": "truskawka",
+ "🫐": "borówka amerykańska",
+ "🥝": "owoc kiwi",
+ "🍅": "pomidor",
+ "🫒": "oliwka",
+ "🥥": "kokos",
+ "🥑": "awokado",
+ "🍆": "bakłażan",
+ "🥕": "marchew",
+ "🌽": "kolba kukurydzy",
+ "🌶️": "ostra papryka",
+ "🥬": "zielenina liściasta",
+ "🥦": "brokuł",
+ "🧅": "cebula",
+ "🍄": "grzyb",
+ "🥜": "orzeszki ziemne",
+ "🥐": "rogalik",
+ "🥖": "bagietka",
+ "🥨": "precel",
+ "🥯": "bajgiel",
+ "🥞": "naleśniki",
+ "🧇": "gofr",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "krab",
+ "🦞": "homar",
+ "🍨": "lody",
+ "🍩": "pączek z dziurką",
+ "🍪": "ciastko",
+ "🎂": "tort urodzinowy",
+ "🧁": "babeczka",
+ "🍫": "tabliczka czekolady",
+ "🍬": "cukierek",
+ "🍭": "lizak",
+ "🫖": "czajniczek",
+ "🧃": "napój w kartoniku",
+ "🧉": "yerba mate",
+ "🧭": "kompas",
+ "🏔️": "góra z czapą lodową",
+ "🌋": "wulkan",
+ "🏕️": "kemping",
+ "🏝️": "bezludna wyspa",
+ "🏡": "dom z ogrodem",
+ "⛲️": "fontanna",
+ "🎠": "koń z karuzeli",
+ "🎡": "diabelski młyn",
+ "🎢": "kolejka górska",
+ "💈": "słup fryzjerski",
+ "🚆": "pociąg",
+ "🚋": "wagon tramwajowy",
+ "🚍️": "nadjeżdżający autobus",
+ "🚕": "taksówka",
+ "🚗": "samochód",
+ "🚚": "samochód dostawczy",
+ "🚜": "ciągnik",
+ "🛵": "skuter",
+ "🛺": "autoriksza",
+ "🛴": "hulajnoga",
+ "🛹": "deskorolka",
+ "🛼": "wrotka",
+ "⚓️": "kotwica",
+ "⛵️": "żaglówka",
+ "🛶": "kajak",
+ "🚤": "ścigacz wodny",
+ "🚢": "statek",
+ "✈️": "samolot",
+ "🚁": "helikopter",
+ "🚠": "górska kolej linowa",
+ "🛰️": "satelita",
+ "🚀": "rakieta",
+ "🛸": "latający talerz",
+ "⏰": "budzik",
+ "🌙": "półksiężyc",
+ "🌡️": "termometr",
+ "☀️": "słońce",
+ "🪐": "planeta z pierścieniami",
+ "🌟": "błyszcząca gwiazda",
+ "🌀": "cyklon",
+ "🌈": "tęcza",
+ "☂️": "parasol",
+ "❄️": "płatek śniegu",
+ "☄️": "kometa",
+ "🔥": "ogień",
+ "💧": "kropla",
+ "🌊": "fala",
+ "🎃": "dynia na halloween",
+ "✨": "gwiazdki",
+ "🎈": "balon",
+ "🎉": "tuba z konfetti",
+ "🎏": "flaga w kształcie karpia",
+ "🎀": "wstążka",
+ "🎁": "zapakowany prezent",
+ "🎟️": "bilety wstępu",
+ "🏆️": "puchar",
+ "⚽️": "piłka nożna",
+ "🏀": "koszykówka",
+ "🏈": "futbol amerykański",
+ "🎾": "tenis",
+ "🥏": "frisbee",
+ "🏓": "tenis stołowy",
+ "🏸": "badminton",
+ "🤿": "maska do nurkowania",
+ "🥌": "kamień do curlingu",
+ "🎯": "strzał w 10",
+ "🪀": "jojo",
+ "🪁": "latawiec",
+ "🔮": "kryształowa kula",
+ "🎲": "kostka do gry",
+ "🧩": "element układanki",
+ "🎨": "paleta malarska",
+ "🧵": "nić",
+ "👕": "koszulka",
+ "🧦": "skarpetki",
+ "👗": "sukienka",
+ "🩳": "szorty",
+ "🎒": "tornister",
+ "👟": "but do biegania",
+ "👑": "korona",
+ "🧢": "bejsbolówka",
+ "💄": "szminka",
+ "💍": "pierścionek",
+ "💎": "kamień szlachetny",
+ "📢": "głośnik",
+ "🎶": "nuty",
+ "🎙️": "mikrofon studyjny",
+ "📻️": "radio",
+ "🎷": "saksofon",
+ "🪗": "akordeon",
+ "🎸": "gitara",
+ "🎺": "trąbka",
+ "🎻": "skrzypce",
+ "🪕": "banjo",
+ "🥁": "bęben",
+ "☎️": "telefon",
+ "🔋": "bateria",
+ "💿️": "dysk optyczny",
+ "🧮": "liczydło",
+ "🎬️": "klaps",
+ "💡": "żarówka",
+ "🔦": "latarka",
+ "🏮": "czerwony lampion",
+ "📕": "zamknięta książka",
+ "🏷️": "przywieszka do kluczy",
+ "💳️": "karta kredytowa",
+ "✏️": "ołówek",
+ "🖌️": "pędzel",
+ "🖍️": "kredka",
+ "📌": "pinezka",
+ "📎": "spinacz",
+ "🔑": "klucz",
+ "🪃": "bumerang",
+ "🏹": "łuk i strzała",
+ "⚖️": "waga szalkowa",
+ "🧲": "magnes",
+ "🧪": "probówka",
+ "🧬": "dna",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "antena satelitarna",
+ "🪑": "krzesło",
+ "🧹": "miotła",
+ "🗿": "moai"
+ },
+ "pt": {
+ "👽️": "alienígena",
+ "🤖": "rosto de robô",
+ "🧠": "cérebro",
+ "👁️": "olho",
+ "🧙": "mago",
+ "🧚": "fada",
+ "🧜": "pessoa sereia",
+ "🐵": "rosto de macaco",
+ "🦧": "orangotango",
+ "🐶": "rosto de cachorro",
+ "🐺": "rosto de lobo",
+ "🦊": "rosto de raposa",
+ "🦝": "guaxinim",
+ "🐱": "rosto de gato",
+ "🦁": "rosto de leão",
+ "🐯": "rosto de tigre",
+ "🐴": "rosto de cavalo",
+ "🦄": "rosto de unicórnio",
+ "🦓": "zebra",
+ "🦌": "cervo",
+ "🐮": "rosto de vaca",
+ "🐷": "rosto de porco",
+ "🐗": "javali",
+ "🐪": "camelo",
+ "🦙": "lhama",
+ "🦒": "girafa",
+ "🐘": "elefante",
+ "🦣": "mamute",
+ "🦏": "rinoceronte",
+ "🐭": "rosto de camundongo",
+ "🐰": "rosto de coelho",
+ "🐿️": "esquilo",
+ "🦔": "porco-espinho",
+ "🦇": "morcego",
+ "🐻": "rosto de urso",
+ "🐨": "coala",
+ "🦥": "preguiça",
+ "🦦": "lontra",
+ "🦘": "canguru",
+ "🐥": "pintinho de frente",
+ "🐦️": "pássaro",
+ "🕊️": "pomba branca",
+ "🦆": "pato",
+ "🦉": "coruja",
+ "🦤": "dodô",
+ "🪶": "pena",
+ "🦩": "flamingo",
+ "🦚": "pavão",
+ "🦜": "papagaio",
+ "🐊": "crocodilo",
+ "🐢": "tartaruga",
+ "🦎": "lagartixa",
+ "🐍": "cobra",
+ "🐲": "rosto de dragão",
+ "🦕": "saurópode",
+ "🐳": "baleia esguichando água",
+ "🐬": "golfinho",
+ "🦭": "foca",
+ "🐟️": "peixe",
+ "🐠": "peixe tropical",
+ "🦈": "tubarão",
+ "🐙": "polvo",
+ "🐚": "caramujo",
+ "🐌": "caracol",
+ "🦋": "borboleta",
+ "🐛": "inseto",
+ "🐝": "abelha",
+ "🐞": "joaninha",
+ "💐": "buquê",
+ "🌹": "rosa",
+ "🌺": "hibisco",
+ "🌻": "girassol",
+ "🌷": "tulipa",
+ "🌲": "conífera",
+ "🌳": "árvore caidiça",
+ "🌴": "palmeira",
+ "🌵": "cacto",
+ "🌿": "erva",
+ "🍁": "folha de bordo",
+ "🍇": "uvas",
+ "🍈": "melão",
+ "🍉": "melancia",
+ "🍊": "tangerina",
+ "🍋": "limão",
+ "🍌": "banana",
+ "🍍": "abacaxi",
+ "🥭": "manga",
+ "🍏": "maçã verde",
+ "🍐": "pera",
+ "🍑": "pêssego",
+ "🍒": "cereja",
+ "🍓": "morango",
+ "🫐": "mirtilos",
+ "🥝": "kiwi",
+ "🍅": "tomate",
+ "🫒": "azeitona",
+ "🥥": "coco",
+ "🥑": "abacate",
+ "🍆": "berinjela",
+ "🥕": "cenoura",
+ "🌽": "milho",
+ "🌶️": "pimenta",
+ "🥬": "verdura",
+ "🥦": "brócolis",
+ "🧅": "cebola",
+ "🍄": "cogumelo",
+ "🥜": "amendoim",
+ "🥐": "croissant",
+ "🥖": "baguete",
+ "🥨": "pretzel",
+ "🥯": "rosca",
+ "🥞": "panquecas",
+ "🧇": "waffle",
+ "🍔": "hambúrguer",
+ "🍕": "pizza",
+ "🌭": "cachorro-quente",
+ "🌮": "taco",
+ "🍿": "pipoca",
+ "🦀": "caranguejo",
+ "🦞": "lagosta",
+ "🍨": "sorvete",
+ "🍩": "donut",
+ "🍪": "biscoito",
+ "🎂": "bolo de aniversário",
+ "🧁": "cupcake",
+ "🍫": "chocolate",
+ "🍬": "bala",
+ "🍭": "pirulito",
+ "🫖": "bule",
+ "🧃": "suco de caixa",
+ "🧉": "mate",
+ "🧭": "bússola",
+ "🏔️": "montanha com neve",
+ "🌋": "vulcão",
+ "🏕️": "acampamento",
+ "🏝️": "ilha deserta",
+ "🏡": "casa com jardim",
+ "⛲️": "fonte",
+ "🎠": "carrossel",
+ "🎡": "roda gigante",
+ "🎢": "montanha russa",
+ "💈": "barbearia",
+ "🚆": "trem",
+ "🚋": "bonde",
+ "🚍️": "ônibus se aproximando",
+ "🚕": "táxi",
+ "🚗": "carro",
+ "🚚": "caminhão de entrega",
+ "🚜": "trator",
+ "🛵": "scooter",
+ "🛺": "automóvel riquixá",
+ "🛴": "patinete",
+ "🛹": "skate",
+ "🛼": "patins de rodas",
+ "⚓️": "âncora",
+ "⛵️": "barco a vela",
+ "🛶": "canoa",
+ "🚤": "lancha",
+ "🚢": "navio",
+ "✈️": "avião",
+ "🚁": "helicóptero",
+ "🚠": "cabo suspenso usado em teleféricos nas montanhas",
+ "🛰️": "satélite",
+ "🚀": "foguete",
+ "🛸": "disco voador",
+ "⏰": "despertador",
+ "🌙": "lua crescente",
+ "🌡️": "termômetro",
+ "☀️": "sol",
+ "🪐": "planeta com anéis",
+ "🌟": "estrela brilhante",
+ "🌀": "ciclone",
+ "🌈": "arco-íris",
+ "☂️": "guarda-chuva",
+ "❄️": "floco de neve",
+ "☄️": "cometa",
+ "🔥": "fogo",
+ "💧": "gota",
+ "🌊": "onda",
+ "🎃": "abóbora de halloween",
+ "✨": "brilhos",
+ "🎈": "balão",
+ "🎉": "cone de festa",
+ "🎏": "bandeira de carpas",
+ "🎀": "laço de fita",
+ "🎁": "presente",
+ "🎟️": "ingresso de cinema",
+ "🏆️": "troféu",
+ "⚽️": "bola de futebol",
+ "🏀": "bola de basquete",
+ "🏈": "bola de futebol americano",
+ "🎾": "tênis",
+ "🥏": "frisbee",
+ "🏓": "pingue-pongue",
+ "🏸": "badminton",
+ "🤿": "máscara de mergulho",
+ "🥌": "pedra de curling",
+ "🎯": "no alvo",
+ "🪀": "ioiô",
+ "🪁": "pipa",
+ "🔮": "bola de cristal",
+ "🎲": "jogo de dado",
+ "🧩": "quebra-cabeça",
+ "🎨": "paleta de tintas",
+ "🧵": "carretel",
+ "👕": "camiseta",
+ "🧦": "meias",
+ "👗": "vestido",
+ "🩳": "shorts",
+ "🎒": "mochila",
+ "👟": "tênis de corrida",
+ "👑": "coroa",
+ "🧢": "boné",
+ "💄": "batom",
+ "💍": "anel",
+ "💎": "pedra preciosa",
+ "📢": "buzina",
+ "🎶": "notas musicais",
+ "🎙️": "microfone de estúdio",
+ "📻️": "rádio",
+ "🎷": "saxofone",
+ "🪗": "acordeão",
+ "🎸": "guitarra",
+ "🎺": "trompete",
+ "🎻": "violino",
+ "🪕": "banjo",
+ "🥁": "tambor",
+ "☎️": "telefone no gancho",
+ "🔋": "pilha",
+ "💿️": "cd",
+ "🧮": "ábaco",
+ "🎬️": "claquete",
+ "💡": "lâmpada",
+ "🔦": "lanterna",
+ "🏮": "lanterna vermelha de papel",
+ "📕": "livro fechado",
+ "🏷️": "etiqueta",
+ "💳️": "cartão de crédito",
+ "✏️": "lápis",
+ "🖌️": "pincel",
+ "🖍️": "giz de cera",
+ "📌": "tacha",
+ "📎": "clipe de papel",
+ "🔑": "chave",
+ "🪃": "bumerangue",
+ "🏹": "arco e flecha",
+ "⚖️": "balança",
+ "🧲": "ímã",
+ "🧪": "tubo de ensaio",
+ "🧬": "dna",
+ "🔬": "microscópio",
+ "🔭": "telescópio",
+ "📡": "antena parabólica",
+ "🪑": "cadeira",
+ "🧹": "vassoura",
+ "🗿": "moai"
+ },
+ "ro": {
+ "👽️": "extraterestru",
+ "🤖": "robot",
+ "🧠": "creier",
+ "👁️": "un ochi",
+ "🧙": "mag",
+ "🧚": "zână",
+ "🧜": "persoană sirenă",
+ "🐵": "față de maimuță",
+ "🦧": "urangutan",
+ "🐶": "față de câine",
+ "🐺": "lup",
+ "🦊": "vulpe",
+ "🦝": "raton",
+ "🐱": "față de pisică",
+ "🦁": "leu",
+ "🐯": "față de tigru",
+ "🐴": "față de cal",
+ "🦄": "unicorn",
+ "🦓": "zebră",
+ "🦌": "cerb",
+ "🐮": "cap de vacă",
+ "🐷": "cap de porc",
+ "🐗": "mistreț",
+ "🐪": "dromader",
+ "🦙": "lamă",
+ "🦒": "girafă",
+ "🐘": "elefant",
+ "🦣": "mamut",
+ "🦏": "rinocer",
+ "🐭": "față de șoarece",
+ "🐰": "față de iepure",
+ "🐿️": "veveriță",
+ "🦔": "arici",
+ "🦇": "liliac",
+ "🐻": "urs",
+ "🐨": "koala",
+ "🦥": "leneș",
+ "🦦": "vidră",
+ "🦘": "cangur",
+ "🐥": "pui de găină din față",
+ "🐦️": "pasăre",
+ "🕊️": "porumbiță",
+ "🦆": "rață",
+ "🦉": "bufniță",
+ "🦤": "dodo",
+ "🪶": "pană",
+ "🦩": "flamingo",
+ "🦚": "păun",
+ "🦜": "papagal mare",
+ "🐊": "crocodil",
+ "🐢": "broască țestoasă",
+ "🦎": "șopârlă",
+ "🐍": "șarpe",
+ "🐲": "față de dragon",
+ "🦕": "sauropod",
+ "🐳": "balenă împroșcând apă",
+ "🐬": "delfin",
+ "🦭": "focă",
+ "🐟️": "pește",
+ "🐠": "pește tropical",
+ "🦈": "rechin",
+ "🐙": "caracatiță",
+ "🐚": "cochilie spiralată",
+ "🐌": "melc",
+ "🦋": "fluture",
+ "🐛": "gândac",
+ "🐝": "albină",
+ "🐞": "buburuză",
+ "💐": "buchet de flori",
+ "🌹": "trandafir",
+ "🌺": "hibiscus",
+ "🌻": "floarea soarelui",
+ "🌷": "lalea",
+ "🌲": "arbore conifer",
+ "🌳": "arbore foios",
+ "🌴": "palmier",
+ "🌵": "cactus",
+ "🌿": "plantă aromatică",
+ "🍁": "frunză de arțar",
+ "🍇": "struguri",
+ "🍈": "pepene galben",
+ "🍉": "pepene verde",
+ "🍊": "mandarină",
+ "🍋": "lămâie",
+ "🍌": "banană",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "măr verde",
+ "🍐": "pară",
+ "🍑": "piersică",
+ "🍒": "cireșe",
+ "🍓": "căpșună",
+ "🫐": "afine",
+ "🥝": "kiwi",
+ "🍅": "roșie",
+ "🫒": "măslină",
+ "🥥": "nucă de cocos",
+ "🥑": "avocado",
+ "🍆": "vânătă",
+ "🥕": "morcov",
+ "🌽": "știulete de porumb",
+ "🌶️": "ardei iute",
+ "🥬": "verdețuri",
+ "🥦": "broccoli",
+ "🧅": "ceapă",
+ "🍄": "ciupercă",
+ "🥜": "arahide",
+ "🥐": "croasant",
+ "🥖": "baghetă de pâine",
+ "🥨": "covrig",
+ "🥯": "bagel",
+ "🥞": "clătite",
+ "🧇": "gofră",
+ "🍔": "hamburger",
+ "🍕": "pizza",
+ "🌭": "hot dog",
+ "🌮": "taco",
+ "🍿": "floricele de porumb",
+ "🦀": "rac",
+ "🦞": "homar",
+ "🍨": "înghețată",
+ "🍩": "gogoașă americană",
+ "🍪": "fursec",
+ "🎂": "tort aniversar",
+ "🧁": "brioșă",
+ "🍫": "baton de ciocolată",
+ "🍬": "bomboană",
+ "🍭": "acadea",
+ "🫖": "ceainic",
+ "🧃": "cutie de băutură",
+ "🧉": "mate",
+ "🧭": "busolă",
+ "🏔️": "vârf de munte înzăpezit",
+ "🌋": "vulcan",
+ "🏕️": "camping",
+ "🏝️": "insulă pustie",
+ "🏡": "casă cu grădină",
+ "⛲️": "fântână arteziană",
+ "🎠": "căluț de carusel",
+ "🎡": "roata mare",
+ "🎢": "montagne russe",
+ "💈": "semn de frizerie",
+ "🚆": "tren",
+ "🚋": "vagon de tramvai",
+ "🚍️": "autobuz care se apropie",
+ "🚕": "taxi",
+ "🚗": "automobil",
+ "🚚": "camion de marfă",
+ "🚜": "tractor",
+ "🛵": "scuter",
+ "🛺": "autoricșă",
+ "🛴": "trotinetă",
+ "🛹": "skateboard",
+ "🛼": "patină cu rotile",
+ "⚓️": "ancoră",
+ "⛵️": "barcă cu pânze",
+ "🛶": "canoe",
+ "🚤": "barcă de viteză",
+ "🚢": "vapor",
+ "✈️": "avion",
+ "🚁": "elicopter",
+ "🚠": "telecabină montană",
+ "🛰️": "satelit",
+ "🚀": "rachetă",
+ "🛸": "farfurie zburătoare",
+ "⏰": "ceas deșteptător",
+ "🌙": "semilună",
+ "🌡️": "termometru",
+ "☀️": "soare",
+ "🪐": "planetă cu inele",
+ "🌟": "stea strălucitoare",
+ "🌀": "ciclon",
+ "🌈": "curcubeu",
+ "☂️": "umbrelă",
+ "❄️": "fulg de nea",
+ "☄️": "cometă",
+ "🔥": "foc",
+ "💧": "picătură",
+ "🌊": "val",
+ "🎃": "dovleac cu felinar",
+ "✨": "steluțe",
+ "🎈": "balon",
+ "🎉": "tun cu confetti",
+ "🎏": "crap decorativ în vânt",
+ "🎀": "fundă",
+ "🎁": "cadou împachetat",
+ "🎟️": "bilete de intrare",
+ "🏆️": "trofeu",
+ "⚽️": "minge de fotbal",
+ "🏀": "baschet",
+ "🏈": "fotbal american",
+ "🎾": "tenis",
+ "🥏": "disc zburător",
+ "🏓": "ping pong",
+ "🏸": "badminton",
+ "🤿": "mască de scufundări",
+ "🥌": "piatră de curling",
+ "🎯": "fix la țintă",
+ "🪀": "yo-yo",
+ "🪁": "zmeu",
+ "🔮": "glob de cristal",
+ "🎲": "zar",
+ "🧩": "piesă de puzzle",
+ "🎨": "paletă de pictor",
+ "🧵": "ață",
+ "👕": "tricou",
+ "🧦": "șosete",
+ "👗": "rochie",
+ "🩳": "șort",
+ "🎒": "rucsac",
+ "👟": "pantof sport",
+ "👑": "coroană",
+ "🧢": "șapcă",
+ "💄": "ruj",
+ "💍": "inel",
+ "💎": "piatră prețioasă",
+ "📢": "portavoce",
+ "🎶": "note muzicale",
+ "🎙️": "microfon de studio",
+ "📻️": "radio",
+ "🎷": "saxofon",
+ "🪗": "acordeon",
+ "🎸": "chitară",
+ "🎺": "trompetă",
+ "🎻": "vioară",
+ "🪕": "banjo",
+ "🥁": "tobă",
+ "☎️": "telefon",
+ "🔋": "baterie",
+ "💿️": "cd",
+ "🧮": "abac",
+ "🎬️": "clachetă",
+ "💡": "bec",
+ "🔦": "lanternă",
+ "🏮": "felinar din hârtie roșie",
+ "📕": "carte închisă",
+ "🏷️": "etichetă",
+ "💳️": "card de credit",
+ "✏️": "creion",
+ "🖌️": "pensulă",
+ "🖍️": "creion colorat",
+ "📌": "piuneză",
+ "📎": "agrafă de hârtie",
+ "🔑": "cheie",
+ "🪃": "bumerang",
+ "🏹": "arc și săgeată",
+ "⚖️": "balanță",
+ "🧲": "magnet",
+ "🧪": "eprubetă",
+ "🧬": "ADN",
+ "🔬": "microscop",
+ "🔭": "telescop",
+ "📡": "antenă satelit",
+ "🪑": "scaun",
+ "🧹": "mătură",
+ "🗿": "statuie moai"
+ },
+ "ru": {
+ "👽️": "инопланетянин",
+ "🤖": "робот",
+ "🧠": "мозг",
+ "👁️": "глаз",
+ "🧙": "маг",
+ "🧚": "фея",
+ "🧜": "русалка",
+ "🐵": "морда обезьяны",
+ "🦧": "орангутан",
+ "🐶": "морда собаки",
+ "🐺": "морда волка",
+ "🦊": "морда лисицы",
+ "🦝": "морда енота",
+ "🐱": "морда кошки",
+ "🦁": "морда льва",
+ "🐯": "морда тигра",
+ "🐴": "морда лошади",
+ "🦄": "голова единорога",
+ "🦓": "зебра",
+ "🦌": "олень",
+ "🐮": "морда коровы",
+ "🐷": "морда свиньи",
+ "🐗": "кабан",
+ "🐪": "одногорбый верблюд",
+ "🦙": "лама",
+ "🦒": "жираф",
+ "🐘": "слон",
+ "🦣": "мамонт",
+ "🦏": "носорог",
+ "🐭": "морда мыши",
+ "🐰": "морда кролика",
+ "🐿️": "бурундук",
+ "🦔": "еж",
+ "🦇": "летучая мышь",
+ "🐻": "морда медведя",
+ "🐨": "морда коалы",
+ "🦥": "ленивец",
+ "🦦": "выдра",
+ "🦘": "кенгуру",
+ "🐥": "цыпленок",
+ "🐦️": "птица",
+ "🕊️": "голубь",
+ "🦆": "утка",
+ "🦉": "сова",
+ "🦤": "дронт",
+ "🪶": "перо",
+ "🦩": "фламинго",
+ "🦚": "павлин",
+ "🦜": "попугай",
+ "🐊": "крокодил",
+ "🐢": "черепаха",
+ "🦎": "ящерица",
+ "🐍": "змея",
+ "🐲": "голова дракона",
+ "🦕": "зауропод",
+ "🐳": "кит с фонтанчиком",
+ "🐬": "дельфин",
+ "🦭": "тюлень",
+ "🐟️": "рыба",
+ "🐠": "тропическая рыба",
+ "🦈": "акула",
+ "🐙": "осьминог",
+ "🐚": "раковина",
+ "🐌": "улитка",
+ "🦋": "бабочка",
+ "🐛": "гусеница",
+ "🐝": "пчела",
+ "🐞": "божья коровка",
+ "💐": "букет",
+ "🌹": "роза",
+ "🌺": "гибискус",
+ "🌻": "подсолнух",
+ "🌷": "тюльпан",
+ "🌲": "елка",
+ "🌳": "дерево",
+ "🌴": "пальма",
+ "🌵": "кактус",
+ "🌿": "веточка",
+ "🍁": "кленовый лист",
+ "🍇": "виноград",
+ "🍈": "дыня",
+ "🍉": "арбуз",
+ "🍊": "мандарин",
+ "🍋": "лимон",
+ "🍌": "банан",
+ "🍍": "ананас",
+ "🥭": "манго",
+ "🍏": "зеленое яблоко",
+ "🍐": "груша",
+ "🍑": "персик",
+ "🍒": "вишня",
+ "🍓": "клубника",
+ "🫐": "голубика",
+ "🥝": "киви",
+ "🍅": "помидор",
+ "🫒": "оливка",
+ "🥥": "кокос",
+ "🥑": "авокадо",
+ "🍆": "баклажан",
+ "🥕": "морковь",
+ "🌽": "кукурузный початок",
+ "🌶️": "острый перец",
+ "🥬": "зеленый салат",
+ "🥦": "брокколи",
+ "🧅": "лук",
+ "🍄": "гриб",
+ "🥜": "арахис",
+ "🥐": "круассан",
+ "🥖": "багет",
+ "🥨": "крендель",
+ "🥯": "бублик",
+ "🥞": "блины",
+ "🧇": "вафля",
+ "🍔": "гамбургер",
+ "🍕": "пицца",
+ "🌭": "хот-дог",
+ "🌮": "тако",
+ "🍿": "попкорн",
+ "🦀": "краб",
+ "🦞": "омар",
+ "🍨": "мороженое",
+ "🍩": "пончик",
+ "🍪": "печенье",
+ "🎂": "торт ко дню рождения",
+ "🧁": "капкейк",
+ "🍫": "шоколад",
+ "🍬": "конфета",
+ "🍭": "леденец",
+ "🫖": "чайник",
+ "🧃": "пакетик сока",
+ "🧉": "мате",
+ "🧭": "компас",
+ "🏔️": "гора со снежной шапкой",
+ "🌋": "вулкан",
+ "🏕️": "кемпинг",
+ "🏝️": "остров",
+ "🏡": "дом с садом",
+ "⛲️": "фонтан",
+ "🎠": "лошадь на карусели",
+ "🎡": "колесо обозрения",
+ "🎢": "американские горки",
+ "💈": "парикмахерская",
+ "🚆": "поезд",
+ "🚋": "трамвайный вагон",
+ "🚍️": "автобус спереди",
+ "🚕": "такси",
+ "🚗": "автомобиль",
+ "🚚": "грузовик",
+ "🚜": "трактор",
+ "🛵": "скутер",
+ "🛺": "авторикша",
+ "🛴": "самокат",
+ "🛹": "скейтборд",
+ "🛼": "роликовые коньки",
+ "⚓️": "якорь",
+ "⛵️": "парусник",
+ "🛶": "каноэ",
+ "🚤": "катер",
+ "🚢": "корабль",
+ "✈️": "самолет",
+ "🚁": "вертолет",
+ "🚠": "вагон фуникулера",
+ "🛰️": "спутник",
+ "🚀": "ракета",
+ "🛸": "летающая тарелка",
+ "⏰": "будильник",
+ "🌙": "полумесяц",
+ "🌡️": "термометр",
+ "☀️": "солнце",
+ "🪐": "планета с кольцом",
+ "🌟": "сияющая звезда",
+ "🌀": "циклон",
+ "🌈": "радуга",
+ "☂️": "зонт",
+ "❄️": "снежинка",
+ "☄️": "комета",
+ "🔥": "огонь",
+ "💧": "капля",
+ "🌊": "волна",
+ "🎃": "тыква-фонарь",
+ "✨": "блестки",
+ "🎈": "воздушный шарик",
+ "🎉": "хлопушка",
+ "🎏": "вымпелы в виде карпов",
+ "🎀": "бантик",
+ "🎁": "подарок",
+ "🎟️": "билеты",
+ "🏆️": "кубок",
+ "⚽️": "футбол",
+ "🏀": "баскетбол",
+ "🏈": "американский футбол",
+ "🎾": "теннис",
+ "🥏": "летающий диск",
+ "🏓": "настольный теннис",
+ "🏸": "бадминтон",
+ "🤿": "маска с трубкой",
+ "🥌": "керлинг",
+ "🎯": "мишень",
+ "🪀": "йо-йо",
+ "🪁": "воздушный змей",
+ "🔮": "хрустальный шар",
+ "🎲": "игральная кость",
+ "🧩": "пазл",
+ "🎨": "палитра с красками",
+ "🧵": "катушка ниток",
+ "👕": "футболка",
+ "🧦": "носки",
+ "👗": "платье",
+ "🩳": "шорты",
+ "🎒": "ранец",
+ "👟": "кроссовки",
+ "👑": "корона",
+ "🧢": "бейсболка",
+ "💄": "помада",
+ "💍": "кольцо",
+ "💎": "драгоценный камень",
+ "📢": "громкоговоритель",
+ "🎶": "ноты",
+ "🎙️": "студийный микрофон",
+ "📻️": "радио",
+ "🎷": "саксофон",
+ "🪗": "аккордеон",
+ "🎸": "гитара",
+ "🎺": "труба",
+ "🎻": "скрипка",
+ "🪕": "банджо",
+ "🥁": "барабан",
+ "☎️": "телефон",
+ "🔋": "батарейка",
+ "💿️": "CD",
+ "🧮": "счеты",
+ "🎬️": "хлопушка-нумератор",
+ "💡": "лампочка",
+ "🔦": "фонарик",
+ "🏮": "красный бумажный фонарик",
+ "📕": "закрытая книга",
+ "🏷️": "бирка",
+ "💳️": "кредитная карта",
+ "✏️": "карандаш",
+ "🖌️": "кисточка",
+ "🖍️": "восковой мелок",
+ "📌": "канцелярская кнопка",
+ "📎": "скрепка",
+ "🔑": "ключ",
+ "🪃": "бумеранг",
+ "🏹": "лук со стрелой",
+ "⚖️": "весы",
+ "🧲": "магнит",
+ "🧪": "пробирка",
+ "🧬": "ДНК",
+ "🔬": "микроскоп",
+ "🔭": "телескоп",
+ "📡": "спутниковая антенна",
+ "🪑": "стул",
+ "🧹": "метла",
+ "🗿": "истукан"
+ },
+ "sv": {
+ "👽️": "utomjording",
+ "🤖": "robotansikte",
+ "🧠": "hjärna",
+ "👁️": "öga",
+ "🧙": "magiker",
+ "🧚": "fé",
+ "🧜": "vattenväsen",
+ "🐵": "apansikte",
+ "🦧": "orangutang",
+ "🐶": "hundansikte",
+ "🐺": "vargansikte",
+ "🦊": "rävansikte",
+ "🦝": "tvättbjörn",
+ "🐱": "kattansikte",
+ "🦁": "lejonansikte",
+ "🐯": "tigeransikte",
+ "🐴": "hästansikte",
+ "🦄": "enhörningsansikte",
+ "🦓": "zebra",
+ "🦌": "hjort",
+ "🐮": "koansikte",
+ "🐷": "grisansikte",
+ "🐗": "vildsvin",
+ "🐪": "dromedar",
+ "🦙": "lama",
+ "🦒": "giraff",
+ "🐘": "elefant",
+ "🦣": "mammut",
+ "🦏": "noshörning",
+ "🐭": "musansikte",
+ "🐰": "kaninansikte",
+ "🐿️": "jordekorre",
+ "🦔": "igelkott",
+ "🦇": "fladdermus",
+ "🐻": "björnansikte",
+ "🐨": "koala",
+ "🦥": "sengångare",
+ "🦦": "utter",
+ "🦘": "känguru",
+ "🐥": "kyckling framifrån",
+ "🐦️": "fågel",
+ "🕊️": "duva",
+ "🦆": "and",
+ "🦉": "uggla",
+ "🦤": "dront",
+ "🪶": "fågelfjäder",
+ "🦩": "flamingo",
+ "🦚": "påfågel",
+ "🦜": "papegoja",
+ "🐊": "krokodil",
+ "🐢": "sköldpadda",
+ "🦎": "ödla",
+ "🐍": "orm",
+ "🐲": "drakansikte",
+ "🦕": "sauropod",
+ "🐳": "val som sprutar vatten",
+ "🐬": "delfin",
+ "🦭": "säl",
+ "🐟️": "fisk",
+ "🐠": "tropisk fisk",
+ "🦈": "haj",
+ "🐙": "bläckfisk",
+ "🐚": "snäcka",
+ "🐌": "snigel",
+ "🦋": "fjäril",
+ "🐛": "tusenfoting",
+ "🐝": "bi",
+ "🐞": "nyckelpiga",
+ "💐": "blombukett",
+ "🌹": "ros",
+ "🌺": "hibiskus",
+ "🌻": "solros",
+ "🌷": "tulpan",
+ "🌲": "barrträd",
+ "🌳": "lövträd",
+ "🌴": "palm",
+ "🌵": "kaktus",
+ "🌿": "ört",
+ "🍁": "lönnlöv",
+ "🍇": "vindruvor",
+ "🍈": "melon",
+ "🍉": "vattenmelon",
+ "🍊": "mandarin",
+ "🍋": "citron",
+ "🍌": "banan",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "grönt äpple",
+ "🍐": "päron",
+ "🍑": "persika",
+ "🍒": "körsbär",
+ "🍓": "jordgubbe",
+ "🫐": "blåbär",
+ "🥝": "kiwifrukt",
+ "🍅": "tomat",
+ "🫒": "oliv",
+ "🥥": "kokosnöt",
+ "🥑": "avokado",
+ "🍆": "aubergine",
+ "🥕": "morot",
+ "🌽": "majskolv",
+ "🌶️": "chili",
+ "🥬": "sallat",
+ "🥦": "broccoli",
+ "🧅": "lök",
+ "🍄": "svamp",
+ "🥜": "jordnötter",
+ "🥐": "croissant",
+ "🥖": "baguette",
+ "🥨": "pretzel",
+ "🥯": "bagel",
+ "🥞": "pannkakor",
+ "🧇": "våffla",
+ "🍔": "hamburgare",
+ "🍕": "pizzabit",
+ "🌭": "varmkorv",
+ "🌮": "taco",
+ "🍿": "popcorn",
+ "🦀": "krabba",
+ "🦞": "hummer",
+ "🍨": "glass",
+ "🍩": "munk",
+ "🍪": "kaka",
+ "🎂": "födelsedagstårta",
+ "🧁": "muffin",
+ "🍫": "chokladkaka",
+ "🍬": "godis",
+ "🍭": "klubba",
+ "🫖": "tekanna",
+ "🧃": "dryckeskartong",
+ "🧉": "mate-te",
+ "🧭": "kompass",
+ "🏔️": "snöklätt berg",
+ "🌋": "vulkan",
+ "🏕️": "camping",
+ "🏝️": "öde ö",
+ "🏡": "hus med trädgård",
+ "⛲️": "fontän",
+ "🎠": "karusellhäst",
+ "🎡": "pariserhjul",
+ "🎢": "berg- och dalbana",
+ "💈": "barberarstolpe",
+ "🚆": "tåg",
+ "🚋": "spårvagnsvagn",
+ "🚍️": "mötande buss",
+ "🚕": "taxi",
+ "🚗": "bil",
+ "🚚": "budbil",
+ "🚜": "traktor",
+ "🛵": "skoter",
+ "🛺": "automatisk riksha",
+ "🛴": "sparkcykel",
+ "🛹": "skateboard",
+ "🛼": "rullskridsko",
+ "⚓️": "ankare",
+ "⛵️": "segelbåt",
+ "🛶": "kanot",
+ "🚤": "racerbåt",
+ "🚢": "fartyg",
+ "✈️": "flygplan",
+ "🚁": "helikopter",
+ "🚠": "linbana",
+ "🛰️": "satellit",
+ "🚀": "raket",
+ "🛸": "flygande tefat",
+ "⏰": "väckarklocka",
+ "🌙": "månskära",
+ "🌡️": "termometer",
+ "☀️": "sol",
+ "🪐": "planet med ringar",
+ "🌟": "blänkande stjärna",
+ "🌀": "cyklon",
+ "🌈": "regnbåge",
+ "☂️": "paraply",
+ "❄️": "snöflinga",
+ "☄️": "komet",
+ "🔥": "eld",
+ "💧": "droppe",
+ "🌊": "våg",
+ "🎃": "lyktgubbe",
+ "✨": "gnistrande stjärnor",
+ "🎈": "ballong",
+ "🎉": "konfettismällare",
+ "🎏": "karpvindstrut",
+ "🎀": "rosett",
+ "🎁": "inslagen present",
+ "🎟️": "inträdesbiljetter",
+ "🏆️": "pokal",
+ "⚽️": "fotboll",
+ "🏀": "basketboll",
+ "🏈": "amerikansk fotboll",
+ "🎾": "tennis",
+ "🥏": "frisbee",
+ "🏓": "bordtennis",
+ "🏸": "badminton",
+ "🤿": "dykmask",
+ "🥌": "curlingsten",
+ "🎯": "mitt i prick",
+ "🪀": "jojo",
+ "🪁": "flygande drake",
+ "🔮": "kristallkula",
+ "🎲": "speltärning",
+ "🧩": "pusselbit",
+ "🎨": "färgpalett",
+ "🧵": "tråd",
+ "👕": "t-shirt",
+ "🧦": "sockor",
+ "👗": "klänning",
+ "🩳": "shorts",
+ "🎒": "ryggsäck",
+ "👟": "gympasko",
+ "👑": "krona",
+ "🧢": "skärmmössa",
+ "💄": "läppstift",
+ "💍": "ring",
+ "💎": "ädelsten",
+ "📢": "handhögtalare",
+ "🎶": "musiknoter",
+ "🎙️": "studiomikrofon",
+ "📻️": "radio",
+ "🎷": "saxofon",
+ "🪗": "dragspel",
+ "🎸": "gitarr",
+ "🎺": "trumpet",
+ "🎻": "fiol",
+ "🪕": "banjo",
+ "🥁": "trumma",
+ "☎️": "telefon",
+ "🔋": "batteri",
+ "💿️": "optisk skiva",
+ "🧮": "kulram",
+ "🎬️": "filmklappa",
+ "💡": "glödlampa",
+ "🔦": "ficklampa",
+ "🏮": "röd papperslykta",
+ "📕": "stängd bok",
+ "🏷️": "etikett",
+ "💳️": "kreditkort",
+ "✏️": "blyertspenna",
+ "🖌️": "målarpensel",
+ "🖍️": "krita",
+ "📌": "kartnål",
+ "📎": "gem",
+ "🔑": "nyckel",
+ "🪃": "boomerang",
+ "🏹": "pil och båge",
+ "⚖️": "balansvåg",
+ "🧲": "magnet",
+ "🧪": "provrör",
+ "🧬": "DNA",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "tv-satellit",
+ "🪑": "stol",
+ "🧹": "kvast",
+ "🗿": "staty"
+ },
+ "th": {
+ "👽️": "เอเลี่ยน",
+ "🤖": "หุ่นยนต์",
+ "🧠": "สมอง",
+ "👁️": "ตาข้างเดียว",
+ "🧙": "นักเวทย์",
+ "🧚": "นางฟ้า",
+ "🧜": "ครึ่งคนครึ่งปลา",
+ "🐵": "หน้าลิง",
+ "🦧": "อุรังอุตัง",
+ "🐶": "หน้าสุนัข",
+ "🐺": "หมาป่า",
+ "🦊": "จิ้งจอก",
+ "🦝": "แรคคูน",
+ "🐱": "หน้าแมว",
+ "🦁": "สิงโต",
+ "🐯": "หน้าเสือ",
+ "🐴": "หน้าม้า",
+ "🦄": "ยูนิคอร์น",
+ "🦓": "ม้าลาย",
+ "🦌": "กวาง",
+ "🐮": "หน้าวัว",
+ "🐷": "หน้าหมู",
+ "🐗": "หมูป่าตัวผู้",
+ "🐪": "อูฐโหนกเดียว",
+ "🦙": "ลามะ",
+ "🦒": "ยีราฟ",
+ "🐘": "ช้าง",
+ "🦣": "ช้างแมมมอธ",
+ "🦏": "แรด",
+ "🐭": "หน้าหนู",
+ "🐰": "หน้ากระต่าย",
+ "🐿️": "ชิปมังก์",
+ "🦔": "เฮดจ์ฮ็อก",
+ "🦇": "ค้างคาว",
+ "🐻": "หมี",
+ "🐨": "โคอาล่า",
+ "🦥": "สลอธ",
+ "🦦": "ตัวนาก",
+ "🦘": "จิงโจ้",
+ "🐥": "ลูกเจี๊ยบยืนหันหน้า",
+ "🐦️": "นก",
+ "🕊️": "นกพิราบขาว",
+ "🦆": "เป็ด",
+ "🦉": "นกฮูก",
+ "🦤": "นกโดโด",
+ "🪶": "ขนนก",
+ "🦩": "นกฟลามิงโก",
+ "🦚": "นกยูง",
+ "🦜": "นกแก้ว",
+ "🐊": "จระเข้",
+ "🐢": "เต่า",
+ "🦎": "จิ้งจก",
+ "🐍": "งู",
+ "🐲": "หน้ามังกร",
+ "🦕": "ไดโนเสาร์",
+ "🐳": "ปลาวาฬพ่นน้ำ",
+ "🐬": "ปลาโลมา",
+ "🦭": "แมวน้ำ",
+ "🐟️": "ปลา",
+ "🐠": "ปลาเขตร้อน",
+ "🦈": "ฉลาม",
+ "🐙": "ปลาหมึกยักษ์",
+ "🐚": "หอย",
+ "🐌": "หอยทาก",
+ "🦋": "ผีเสื้อ",
+ "🐛": "แมลง",
+ "🐝": "ผึ้ง",
+ "🐞": "เต่าทอง",
+ "💐": "ช่อดอกไม้",
+ "🌹": "ดอกกุหลาบ",
+ "🌺": "ดอกชบา",
+ "🌻": "ดอกทานตะวัน",
+ "🌷": "ทิวลิป",
+ "🌲": "ต้นสน",
+ "🌳": "ต้นไม้ร่มรื่น",
+ "🌴": "ต้นมะพร้าว",
+ "🌵": "ตะบองเพชร",
+ "🌿": "สมุนไพร",
+ "🍁": "ใบเมเปิ้ล",
+ "🍇": "องุ่น",
+ "🍈": "เมลอน",
+ "🍉": "แตงโม",
+ "🍊": "ส้ม",
+ "🍋": "เลมอน",
+ "🍌": "กล้วย",
+ "🍍": "สับปะรด",
+ "🥭": "มะม่วง",
+ "🍏": "แอปเปิ้ลเขียว",
+ "🍐": "ลูกแพร์",
+ "🍑": "ลูกพีช",
+ "🍒": "เชอร์รี่",
+ "🍓": "สตรอว์เบอร์รี่",
+ "🫐": "บลูเบอร์รี่",
+ "🥝": "กีวี",
+ "🍅": "มะเขือเทศ",
+ "🫒": "มะกอก",
+ "🥥": "มะพร้าว",
+ "🥑": "อาโวคาโด",
+ "🍆": "มะเขือยาว",
+ "🥕": "แครอท",
+ "🌽": "ข้าวโพด",
+ "🌶️": "พริก",
+ "🥬": "ผักใบเขียว",
+ "🥦": "บรอกโคลี",
+ "🧅": "หอมหัวใหญ่",
+ "🍄": "เห็ด",
+ "🥜": "ถั่ว",
+ "🥐": "ครัวซอง",
+ "🥖": "ขนมปังฝรั่งเศส",
+ "🥨": "เพรตเซล",
+ "🥯": "เบเกิล",
+ "🥞": "แพนเค้ก",
+ "🧇": "วาฟเฟิล",
+ "🍔": "แฮมเบอร์เกอร์",
+ "🍕": "พิซซ่า 1 ชิ้น",
+ "🌭": "ฮอทด็อก",
+ "🌮": "ทาโก้",
+ "🍿": "ป๊อปคอร์น",
+ "🦀": "ปู",
+ "🦞": "กุ้งมังกร",
+ "🍨": "ไอศกรีม",
+ "🍩": "โดนัท",
+ "🍪": "คุกกี้",
+ "🎂": "เค้กวันเกิด",
+ "🧁": "คัพเค้ก",
+ "🍫": "ช็อกโกแลต",
+ "🍬": "ลูกอม",
+ "🍭": "อมยิ้ม",
+ "🫖": "กาน้ำชา",
+ "🧃": "เครื่องดื่มแบบกล่อง",
+ "🧉": "ชามาเต",
+ "🧭": "เข็มทิศ",
+ "🏔️": "ภูเขามีหิมะ",
+ "🌋": "ภูเขาไฟ",
+ "🏕️": "ตั้งแคมป์",
+ "🏝️": "เกาะ",
+ "🏡": "บ้านพร้อมสวน",
+ "⛲️": "น้ำพุ",
+ "🎠": "ม้าหมุน",
+ "🎡": "ชิงช้าสวรรค์",
+ "🎢": "รถไฟเหาะ",
+ "💈": "ร้านตัดผม",
+ "🚆": "รถไฟ",
+ "🚋": "ตู้รถราง",
+ "🚍️": "รถบัสกำลังมา",
+ "🚕": "แท็กซี่",
+ "🚗": "รถ",
+ "🚚": "รถขนส่ง",
+ "🚜": "แทร็กเตอร์",
+ "🛵": "รถสกู๊ตเตอร์",
+ "🛺": "รถสามล้อ",
+ "🛴": "สกู๊ตเตอร์",
+ "🛹": "สเก็ตบอร์ด",
+ "🛼": "รองเท้าสเก็ต",
+ "⚓️": "สมอเรือ",
+ "⛵️": "เรือใบ",
+ "🛶": "แคนู",
+ "🚤": "เรือด่วน",
+ "🚢": "เรือ",
+ "✈️": "เครื่องบิน",
+ "🚁": "เฮลิคอปเตอร์",
+ "🚠": "เคเบิลคาร์",
+ "🛰️": "ดาวเทียม",
+ "🚀": "จรวด",
+ "🛸": "จานบิน",
+ "⏰": "นาฬิกาปลุก",
+ "🌙": "พระจันทร์เสี้ยว",
+ "🌡️": "เครื่องวัดอุณหภูมิ",
+ "☀️": "พระอาทิตย์",
+ "🪐": "ดาวเคราะห์ที่มีวงแหวน",
+ "🌟": "ดาวส่องแสง",
+ "🌀": "ไซโคลน",
+ "🌈": "รุ้ง",
+ "☂️": "ร่ม",
+ "❄️": "เกล็ดหิมะ",
+ "☄️": "ดาวหาง",
+ "🔥": "ไฟ",
+ "💧": "หยดน้ำ",
+ "🌊": "คลื่น",
+ "🎃": "ฟักทองฮาโลวีน",
+ "✨": "ประกายวิบวับ",
+ "🎈": "ลูกโป่ง",
+ "🎉": "ปาร์ตี้",
+ "🎏": "ธงปลาคาร์พ",
+ "🎀": "ริบบิ้น",
+ "🎁": "ของขวัญ",
+ "🎟️": "ตั๋วเข้าชม",
+ "🏆️": "ถ้วยรางวัล",
+ "⚽️": "ลูกฟุตบอล",
+ "🏀": "บาสเกตบอล",
+ "🏈": "อเมริกันฟุตบอล",
+ "🎾": "เทนนิส",
+ "🥏": "จานร่อน",
+ "🏓": "ปิงปอง",
+ "🏸": "แบดมินตัน",
+ "🤿": "หน้ากากดำน้ำ",
+ "🥌": "ลูกกลิ้งหิน",
+ "🎯": "กลางเป้า",
+ "🪀": "โยโย่",
+ "🪁": "ว่าว",
+ "🔮": "ลูกแก้ววิเศษ",
+ "🎲": "ลูกเต๋า",
+ "🧩": "จิ๊กซอว์",
+ "🎨": "จานสีวาดรูป",
+ "🧵": "ด้าย",
+ "👕": "เสื้อยืด",
+ "🧦": "ถุงเท้า",
+ "👗": "ชุดกระโปรง",
+ "🩳": "กางเกงขาสั้น",
+ "🎒": "เป้นักเรียน",
+ "👟": "รองเท้ากีฬา",
+ "👑": "มงกุฎ",
+ "🧢": "หมวกแก๊ป",
+ "💄": "ลิปสติก",
+ "💍": "แหวน",
+ "💎": "อัญมณี",
+ "📢": "เครื่องขยายเสียง",
+ "🎶": "โน้ตดนตรีหลายตัว",
+ "🎙️": "ไมค์สตูดิโอ",
+ "📻️": "วิทยุ",
+ "🎷": "แซ็กโซโฟน",
+ "🪗": "แอคคอร์เดียน",
+ "🎸": "กีต้าร์",
+ "🎺": "ทรัมเป็ต",
+ "🎻": "ไวโอลิน",
+ "🪕": "แบนโจ",
+ "🥁": "กลอง",
+ "☎️": "โทรศัพท์",
+ "🔋": "แบตเตอรี่",
+ "💿️": "บลูเรย์",
+ "🧮": "ลูกคิด",
+ "🎬️": "สเลท",
+ "💡": "หลอดไฟ",
+ "🔦": "ไฟฉาย",
+ "🏮": "โคมไฟแดง",
+ "📕": "หนังสือปิด",
+ "🏷️": "ป้าย",
+ "💳️": "บัตรเครดิต",
+ "✏️": "ดินสอ",
+ "🖌️": "แปรงทาสี",
+ "🖍️": "ดินสอสี",
+ "📌": "หมุดปัก",
+ "📎": "คลิปหนีบกระดาษ",
+ "🔑": "กุญแจ",
+ "🪃": "บูมเมอแรง",
+ "🏹": "ธนูและลูกศร",
+ "⚖️": "ตราชั่ง",
+ "🧲": "แม่เหล็ก",
+ "🧪": "หลอดทดลอง",
+ "🧬": "ดีเอ็นเอ",
+ "🔬": "กล้องจุลทรรศน์",
+ "🔭": "กล้องโทรทรรศน์",
+ "📡": "จานดาวเทียม",
+ "🪑": "เก้าอี้",
+ "🧹": "ไม้กวาด",
+ "🗿": "รูปปั้นโมไอ"
+ },
+ "tr": {
+ "👽️": "uzaylı",
+ "🤖": "robot",
+ "🧠": "beyin",
+ "👁️": "göz",
+ "🧙": "büyücü",
+ "🧚": "peri",
+ "🧜": "balık insan",
+ "🐵": "maymun yüzü",
+ "🦧": "orangutan",
+ "🐶": "köpek yüzü",
+ "🐺": "kurt",
+ "🦊": "tilki",
+ "🦝": "rakun",
+ "🐱": "kedi yüzü",
+ "🦁": "aslan",
+ "🐯": "kaplan yüzü",
+ "🐴": "at yüzü",
+ "🦄": "tek boynuzlu at",
+ "🦓": "zebra",
+ "🦌": "geyik",
+ "🐮": "inek yüzü",
+ "🐷": "domuz yüzü",
+ "🐗": "yaban domuzu",
+ "🐪": "deve",
+ "🦙": "lama",
+ "🦒": "zürafa",
+ "🐘": "fil",
+ "🦣": "mamut",
+ "🦏": "gergedan",
+ "🐭": "fare yüzü",
+ "🐰": "tavşan yüzü",
+ "🐿️": "sincap",
+ "🦔": "kirpi",
+ "🦇": "yarasa",
+ "🐻": "ayı",
+ "🐨": "koala",
+ "🦥": "tembel hayvan",
+ "🦦": "su samuru",
+ "🦘": "kanguru",
+ "🐥": "önden civciv",
+ "🐦️": "kuş",
+ "🕊️": "güvercin",
+ "🦆": "ördek",
+ "🦉": "baykuş",
+ "🦤": "dodo kuşu",
+ "🪶": "kuş tüyü",
+ "🦩": "flamingo",
+ "🦚": "tavus kuşu",
+ "🦜": "papağan",
+ "🐊": "timsah",
+ "🐢": "kaplumbağa",
+ "🦎": "kertenkele",
+ "🐍": "yılan",
+ "🐲": "ejderha yüzü",
+ "🦕": "soropod",
+ "🐳": "su püskürten balina",
+ "🐬": "yunus",
+ "🦭": "fok",
+ "🐟️": "balık",
+ "🐠": "tropikal balık",
+ "🦈": "köpek balığı",
+ "🐙": "ahtapot",
+ "🐚": "deniz kabuğu",
+ "🐌": "salyangoz",
+ "🦋": "kelebek",
+ "🐛": "tırtıl",
+ "🐝": "bal arısı",
+ "🐞": "uğur böceği",
+ "💐": "buket",
+ "🌹": "gül",
+ "🌺": "çingülü",
+ "🌻": "ayçiçeği",
+ "🌷": "lale",
+ "🌲": "yaprak dökmeyen ağaç",
+ "🌳": "yaprak döken ağaç",
+ "🌴": "palmiye ağacı",
+ "🌵": "kaktüs",
+ "🌿": "ot",
+ "🍁": "akçaağaç yaprağı",
+ "🍇": "üzüm",
+ "🍈": "kavun",
+ "🍉": "karpuz",
+ "🍊": "mandalina",
+ "🍋": "limon",
+ "🍌": "muz",
+ "🍍": "ananas",
+ "🥭": "mango",
+ "🍏": "yeşil elma",
+ "🍐": "armut",
+ "🍑": "şeftali",
+ "🍒": "kiraz",
+ "🍓": "çilek",
+ "🫐": "yaban mersini",
+ "🥝": "kivi",
+ "🍅": "domates",
+ "🫒": "zeytin",
+ "🥥": "Hindistan cevizi",
+ "🥑": "avokado",
+ "🍆": "patlıcan",
+ "🥕": "havuç",
+ "🌽": "mısır koçanı",
+ "🌶️": "acı biber",
+ "🥬": "yeşil yapraklı sebze",
+ "🥦": "brokoli",
+ "🧅": "soğan",
+ "🍄": "mantar",
+ "🥜": "yer fıstığı",
+ "🥐": "kruvasan",
+ "🥖": "baget ekmek",
+ "🥨": "pretzel",
+ "🥯": "simit",
+ "🥞": "krep",
+ "🧇": "waffle",
+ "🍔": "hamburger",
+ "🍕": "pizza dilimi",
+ "🌭": "sosisli sandviç",
+ "🌮": "tako",
+ "🍿": "patlamış mısır",
+ "🦀": "yengeç",
+ "🦞": "ıstakoz",
+ "🍨": "dondurma",
+ "🍩": "donut",
+ "🍪": "kurabiye",
+ "🎂": "doğum günü pastası",
+ "🧁": "cupcake",
+ "🍫": "çikolata",
+ "🍬": "şekerleme",
+ "🍭": "lolipop",
+ "🫖": "demlik",
+ "🧃": "içecek kutusu",
+ "🧉": "mate çayı",
+ "🧭": "pusula",
+ "🏔️": "karla kaplı dağ",
+ "🌋": "yanardağ",
+ "🏕️": "kamp",
+ "🏝️": "ıssız ada",
+ "🏡": "bahçeli ev",
+ "⛲️": "fıskiye",
+ "🎠": "atlıkarınca",
+ "🎡": "dönme dolap",
+ "🎢": "hız treni",
+ "💈": "berber dükkanı",
+ "🚆": "tren",
+ "🚋": "tramvay vagonu",
+ "🚍️": "yaklaşan otobüs",
+ "🚕": "taksi",
+ "🚗": "araba",
+ "🚚": "nakliye kamyonu",
+ "🚜": "traktör",
+ "🛵": "motorlu skuter",
+ "🛺": "elektrikli çekçek",
+ "🛴": "ayakla sürülen skuter",
+ "🛹": "kaykay",
+ "🛼": "paten",
+ "⚓️": "çıpa",
+ "⛵️": "yelkenli tekne",
+ "🛶": "kano",
+ "🚤": "sürat teknesi",
+ "🚢": "gemi",
+ "✈️": "uçak",
+ "🚁": "helikopter",
+ "🚠": "dağ teleferik hattı",
+ "🛰️": "uydu",
+ "🚀": "roket",
+ "🛸": "uçan daire",
+ "⏰": "çalar saat",
+ "🌙": "hilal",
+ "🌡️": "termometre",
+ "☀️": "güneş",
+ "🪐": "halkalı gezegen",
+ "🌟": "parıldayan yıldız",
+ "🌀": "siklon",
+ "🌈": "gökkuşağı",
+ "☂️": "şemsiye",
+ "❄️": "kar tanesi",
+ "☄️": "kuyruklu yıldız",
+ "🔥": "ateş",
+ "💧": "damlacık",
+ "🌊": "dalga",
+ "🎃": "kabak fener",
+ "✨": "parıltılar",
+ "🎈": "balon",
+ "🎉": "parti konfetisi",
+ "🎏": "sazan şekilli flama",
+ "🎀": "kurdele",
+ "🎁": "paketlenmiş hediye",
+ "🎟️": "giriş bileti",
+ "🏆️": "zafer kupası",
+ "⚽️": "futbol topu",
+ "🏀": "basketbol",
+ "🏈": "amerikan futbolu",
+ "🎾": "tenis",
+ "🥏": "frizbi",
+ "🏓": "masa tenisi",
+ "🏸": "badminton",
+ "🤿": "dalgıç maskesi",
+ "🥌": "curling taşı",
+ "🎯": "tam isabet",
+ "🪀": "yoyo",
+ "🪁": "uçurtma",
+ "🔮": "kristal küre",
+ "🎲": "oyun zarı",
+ "🧩": "yapboz parçası",
+ "🎨": "boya paleti",
+ "🧵": "iplik",
+ "👕": "tişört",
+ "🧦": "çorap",
+ "👗": "elbise",
+ "🩳": "şort",
+ "🎒": "okul çantası",
+ "👟": "koşu ayakkabısı",
+ "👑": "taç",
+ "🧢": "siperli şapka",
+ "💄": "ruj",
+ "💍": "yüzük",
+ "💎": "mücevher",
+ "📢": "hoparlör",
+ "🎶": "müzik notaları",
+ "🎙️": "stüdyo mikrofonu",
+ "📻️": "radyo",
+ "🎷": "saksafon",
+ "🪗": "akordiyon",
+ "🎸": "gitar",
+ "🎺": "trompet",
+ "🎻": "keman",
+ "🪕": "banjo",
+ "🥁": "davul",
+ "☎️": "telefon",
+ "🔋": "pil",
+ "💿️": "optik disk",
+ "🧮": "abaküs",
+ "🎬️": "film tahtası",
+ "💡": "ampul",
+ "🔦": "el feneri",
+ "🏮": "kırmızı kağıt fener",
+ "📕": "kapalı kitap",
+ "🏷️": "etiket",
+ "💳️": "kredi kartı",
+ "✏️": "kurşun kalem",
+ "🖌️": "boya fırçası",
+ "🖍️": "pastel boya",
+ "📌": "raptiye",
+ "📎": "ataş",
+ "🔑": "anahtar",
+ "🪃": "bumerang",
+ "🏹": "ok ve yay",
+ "⚖️": "terazi",
+ "🧲": "mıknatıs",
+ "🧪": "deney tüpü",
+ "🧬": "dna",
+ "🔬": "mikroskop",
+ "🔭": "teleskop",
+ "📡": "uydu anteni",
+ "🪑": "sandalye",
+ "🧹": "süpürge",
+ "🗿": "moyai heykeli"
+ },
+ "vi": {
+ "👽️": "người ngoài hành tinh",
+ "🤖": "mặt rô-bốt",
+ "🧠": "não",
+ "👁️": "mắt",
+ "🧙": "pháp sư",
+ "🧚": "tiên",
+ "🧜": "người cá",
+ "🐵": "mặt khỉ",
+ "🦧": "đười ươi",
+ "🐶": "mặt cún",
+ "🐺": "mặt chó sói",
+ "🦊": "mặt cáo",
+ "🦝": "gấu trúc",
+ "🐱": "mặt mèo",
+ "🦁": "mặt sư tử",
+ "🐯": "mặt hổ",
+ "🐴": "mặt ngựa",
+ "🦄": "mặt kỳ lân",
+ "🦓": "ngựa vằn",
+ "🦌": "hươu",
+ "🐮": "mặt bò",
+ "🐷": "mặt lợn",
+ "🐗": "lợn rừng",
+ "🐪": "lạc đà",
+ "🦙": "lạc đà không bướu",
+ "🦒": "hươu cao cổ",
+ "🐘": "voi",
+ "🦣": "voi ma mút",
+ "🦏": "tê giác",
+ "🐭": "mặt chuột",
+ "🐰": "mặt thỏ",
+ "🐿️": "sóc chuột",
+ "🦔": "nhím",
+ "🦇": "dơi",
+ "🐻": "mặt gấu",
+ "🐨": "gấu túi",
+ "🦥": "con lười",
+ "🦦": "rái cá",
+ "🦘": "chuột túi",
+ "🐥": "mặt trước gà con",
+ "🐦️": "chim",
+ "🕊️": "bồ câu",
+ "🦆": "vịt",
+ "🦉": "cú",
+ "🦤": "chim cưu",
+ "🪶": "lông chim",
+ "🦩": "hồng hạc",
+ "🦚": "con công",
+ "🦜": "con vẹt",
+ "🐊": "cá sấu",
+ "🐢": "rùa",
+ "🦎": "thằn lằn",
+ "🐍": "rắn",
+ "🐲": "mặt rồng",
+ "🦕": "khủng long chân thằn lằn",
+ "🐳": "cá voi đang phun nước",
+ "🐬": "cá heo",
+ "🦭": "chó biển",
+ "🐟️": "cá",
+ "🐠": "cá nhiệt đới",
+ "🦈": "cá mập",
+ "🐙": "bạch tuộc",
+ "🐚": "vỏ xoắn ốc",
+ "🐌": "ốc sên",
+ "🦋": "bướm",
+ "🐛": "con bọ",
+ "🐝": "ong mật",
+ "🐞": "bọ rùa",
+ "💐": "bó hoa",
+ "🌹": "hoa hồng",
+ "🌺": "hoa dâm bụt",
+ "🌻": "hoa hướng dương",
+ "🌷": "hoa tulip",
+ "🌲": "cây thường xanh",
+ "🌳": "cây rụng lá",
+ "🌴": "cây cọ",
+ "🌵": "cây xương rồng",
+ "🌿": "thảo mộc",
+ "🍁": "lá phong",
+ "🍇": "chùm nho",
+ "🍈": "dưa",
+ "🍉": "dưa hấu",
+ "🍊": "quýt",
+ "🍋": "chanh",
+ "🍌": "chuối",
+ "🍍": "dứa",
+ "🥭": "xoài",
+ "🍏": "táo xanh",
+ "🍐": "lê",
+ "🍑": "đào",
+ "🍒": "anh đào",
+ "🍓": "dâu tây",
+ "🫐": "quả việt quất",
+ "🥝": "quả kiwi",
+ "🍅": "cà chua",
+ "🫒": "ôliu",
+ "🥥": "dừa",
+ "🥑": "quả bơ",
+ "🍆": "cà tím",
+ "🥕": "cà rốt",
+ "🌽": "bắp ngô",
+ "🌶️": "quả ớt",
+ "🥬": "xanh lá",
+ "🥦": "xúp lơ xanh",
+ "🧅": "hành",
+ "🍄": "nấm",
+ "🥜": "đậu phộng",
+ "🥐": "bánh sừng bò",
+ "🥖": "bánh mì que",
+ "🥨": "bánh quy xoắn",
+ "🥯": "bánh mỳ vòng",
+ "🥞": "bánh kếp",
+ "🧇": "bánh quế",
+ "🍔": "bánh hamburger",
+ "🍕": "bánh pizza",
+ "🌭": "bánh mì xúc xích",
+ "🌮": "bánh taco",
+ "🍿": "bỏng ngô",
+ "🦀": "cua",
+ "🦞": "tôm hùm",
+ "🍨": "kem",
+ "🍩": "bánh rán vòng",
+ "🍪": "bánh quy",
+ "🎂": "bánh sinh nhật",
+ "🧁": "bánh nướng nhỏ",
+ "🍫": "thanh sô cô la",
+ "🍬": "kẹo",
+ "🍭": "kẹo mút",
+ "🫖": "ấm trà",
+ "🧃": "hộp đồ uống",
+ "🧉": "trà nhựa ruồi",
+ "🧭": "la bàn",
+ "🏔️": "đỉnh núi phủ tuyết",
+ "🌋": "núi lửa",
+ "🏕️": "cắm trại",
+ "🏝️": "đảo hoang",
+ "🏡": "nhà có vườn",
+ "⛲️": "đài phun nước",
+ "🎠": "ngựa đu quay",
+ "🎡": "vòng đu quay",
+ "🎢": "tàu lượn siêu tốc",
+ "💈": "biển hiệu của thợ cắt tóc",
+ "🚆": "tàu hỏa",
+ "🚋": "tàu điện",
+ "🚍️": "xe buýt đang tới",
+ "🚕": "taxi",
+ "🚗": "ô tô",
+ "🚚": "xe tải giao hàng",
+ "🚜": "máy kéo",
+ "🛵": "xe tay ga",
+ "🛺": "xe lam",
+ "🛴": "xe hẩy",
+ "🛹": "ván trượt",
+ "🛼": "giày trượt patin",
+ "⚓️": "mỏ neo",
+ "⛵️": "thuyền buồm",
+ "🛶": "xuồng",
+ "🚤": "xuồng cao tốc",
+ "🚢": "tàu thủy",
+ "✈️": "máy bay",
+ "🚁": "máy bay trực thăng",
+ "🚠": "cáp treo trên núi",
+ "🛰️": "vệ tinh",
+ "🚀": "tên lửa",
+ "🛸": "đĩa bay",
+ "⏰": "đồng hồ báo thức",
+ "🌙": "trăng lưỡi liềm",
+ "🌡️": "nhiệt kế",
+ "☀️": "mặt trời",
+ "🪐": "hành tinh có vành đai bao quanh",
+ "🌟": "ngôi sao lấp lánh",
+ "🌀": "hình lốc xoáy",
+ "🌈": "cầu vồng",
+ "☂️": "cái ô",
+ "❄️": "bông tuyết",
+ "☄️": "sao chổi",
+ "🔥": "lửa",
+ "💧": "giọt nước",
+ "🌊": "sóng nước",
+ "🎃": "đèn lồng bí ngô",
+ "✨": "ánh lấp lánh",
+ "🎈": "bóng bay",
+ "🎉": "pháo giấy buổi tiệc",
+ "🎏": "cờ cá chép",
+ "🎀": "ruy băng",
+ "🎁": "gói quà",
+ "🎟️": "vé vào cửa",
+ "🏆️": "cúp",
+ "⚽️": "bóng đá",
+ "🏀": "bóng rổ",
+ "🏈": "bóng bầu dục Mỹ",
+ "🎾": "quần vợt",
+ "🥏": "đĩa bay trò chơi",
+ "🏓": "bóng bàn",
+ "🏸": "cầu lông",
+ "🤿": "mặt nạ lặn",
+ "🥌": "bi đá trên băng",
+ "🎯": "trúng đích",
+ "🪀": "yo-yo",
+ "🪁": "diều",
+ "🔮": "quả cầu pha lê",
+ "🎲": "trò xúc xắc",
+ "🧩": "ghép hình",
+ "🎨": "bảng màu",
+ "🧵": "sợi chỉ",
+ "👕": "áo phông",
+ "🧦": "tất",
+ "👗": "váy",
+ "🩳": "quần soóc",
+ "🎒": "ba lô đi học",
+ "👟": "giày chạy",
+ "👑": "vương miện",
+ "🧢": "mũ lưỡi trai",
+ "💄": "son môi",
+ "💍": "nhẫn",
+ "💎": "đá quý",
+ "📢": "loa phát thanh",
+ "🎶": "các nốt nhạc",
+ "🎙️": "micrô phòng thu âm",
+ "📻️": "radio",
+ "🎷": "kèn saxophone",
+ "🪗": "phong cầm",
+ "🎸": "đàn ghi-ta",
+ "🎺": "kèn trumpet",
+ "🎻": "đàn violin",
+ "🪕": "đàn banjo",
+ "🥁": "trống",
+ "☎️": "điện thoại bàn",
+ "🔋": "pin",
+ "💿️": "đĩa quang",
+ "🧮": "bàn tính",
+ "🎬️": "bảng clapper",
+ "💡": "bóng đèn",
+ "🔦": "đèn pin",
+ "🏮": "đèn lồng giấy màu đỏ",
+ "📕": "sách đóng",
+ "🏷️": "nhãn",
+ "💳️": "thẻ tín dụng",
+ "✏️": "bút chì",
+ "🖌️": "cọ vẽ tranh",
+ "🖍️": "bút sáp màu",
+ "📌": "đinh ghim",
+ "📎": "kẹp giấy",
+ "🔑": "chìa khóa",
+ "🪃": "bumơrang",
+ "🏹": "cung tên",
+ "⚖️": "cân thăng bằng",
+ "🧲": "nam châm",
+ "🧪": "ống nghiệm",
+ "🧬": "adn",
+ "🔬": "kính hiển vi",
+ "🔭": "kính viễn vọng",
+ "📡": "ăng-ten vệ tinh",
+ "🪑": "ghế",
+ "🧹": "cây chổi",
+ "🗿": "tượng moai"
+ },
+ "zh-CN": {
+ "👽️": "外星人",
+ "🤖": "机器人",
+ "🧠": "脑",
+ "👁️": "眼睛",
+ "🧙": "法师",
+ "🧚": "精灵",
+ "🧜": "人鱼",
+ "🐵": "猴头",
+ "🦧": "红毛猩猩",
+ "🐶": "狗脸",
+ "🐺": "狼",
+ "🦊": "狐狸",
+ "🦝": "浣熊",
+ "🐱": "猫脸",
+ "🦁": "狮子",
+ "🐯": "老虎头",
+ "🐴": "马头",
+ "🦄": "独角兽",
+ "🦓": "斑马",
+ "🦌": "鹿",
+ "🐮": "奶牛头",
+ "🐷": "猪头",
+ "🐗": "野猪",
+ "🐪": "骆驼",
+ "🦙": "美洲鸵",
+ "🦒": "长颈鹿",
+ "🐘": "大象",
+ "🦣": "猛犸",
+ "🦏": "犀牛",
+ "🐭": "老鼠头",
+ "🐰": "兔子头",
+ "🐿️": "松鼠",
+ "🦔": "刺猬",
+ "🦇": "蝙蝠",
+ "🐻": "熊",
+ "🐨": "考拉",
+ "🦥": "树懒",
+ "🦦": "水獭",
+ "🦘": "袋鼠",
+ "🐥": "正面朝向的小鸡",
+ "🐦️": "鸟",
+ "🕊️": "鸽",
+ "🦆": "鸭子",
+ "🦉": "猫头鹰",
+ "🦤": "渡渡鸟",
+ "🪶": "羽毛",
+ "🦩": "火烈鸟",
+ "🦚": "孔雀",
+ "🦜": "鹦鹉",
+ "🐊": "鳄鱼",
+ "🐢": "龟",
+ "🦎": "蜥蜴",
+ "🐍": "蛇",
+ "🐲": "龙头",
+ "🦕": "蜥蜴类",
+ "🐳": "喷水的鲸",
+ "🐬": "海豚",
+ "🦭": "海豹",
+ "🐟️": "鱼",
+ "🐠": "热带鱼",
+ "🦈": "鲨鱼",
+ "🐙": "章鱼",
+ "🐚": "海螺",
+ "🐌": "蜗牛",
+ "🦋": "蝴蝶",
+ "🐛": "毛毛虫",
+ "🐝": "蜜蜂",
+ "🐞": "瓢虫",
+ "💐": "花束",
+ "🌹": "玫瑰",
+ "🌺": "芙蓉",
+ "🌻": "向日葵",
+ "🌷": "郁金香",
+ "🌲": "松树",
+ "🌳": "落叶树",
+ "🌴": "棕榈树",
+ "🌵": "仙人掌",
+ "🌿": "药草",
+ "🍁": "枫叶",
+ "🍇": "葡萄",
+ "🍈": "甜瓜",
+ "🍉": "西瓜",
+ "🍊": "橘子",
+ "🍋": "柠檬",
+ "🍌": "香蕉",
+ "🍍": "菠萝",
+ "🥭": "芒果",
+ "🍏": "青苹果",
+ "🍐": "梨",
+ "🍑": "桃",
+ "🍒": "樱桃",
+ "🍓": "草莓",
+ "🫐": "蓝莓",
+ "🥝": "猕猴桃",
+ "🍅": "西红柿",
+ "🫒": "橄榄",
+ "🥥": "椰子",
+ "🥑": "鳄梨",
+ "🍆": "茄子",
+ "🥕": "胡萝卜",
+ "🌽": "玉米",
+ "🌶️": "红辣椒",
+ "🥬": "绿叶蔬菜",
+ "🥦": "西兰花",
+ "🧅": "洋葱",
+ "🍄": "蘑菇",
+ "🥜": "花生",
+ "🥐": "羊角面包",
+ "🥖": "法式长棍面包",
+ "🥨": "椒盐卷饼",
+ "🥯": "面包圈",
+ "🥞": "烙饼",
+ "🧇": "华夫饼",
+ "🍔": "汉堡",
+ "🍕": "披萨",
+ "🌭": "热狗",
+ "🌮": "墨西哥卷饼",
+ "🍿": "爆米花",
+ "🦀": "蟹",
+ "🦞": "龙虾",
+ "🍨": "冰淇淋",
+ "🍩": "甜甜圈",
+ "🍪": "饼干",
+ "🎂": "生日蛋糕",
+ "🧁": "纸杯蛋糕",
+ "🍫": "巧克力",
+ "🍬": "糖",
+ "🍭": "棒棒糖",
+ "🫖": "茶壶",
+ "🧃": "饮料盒",
+ "🧉": "马黛茶",
+ "🧭": "指南针",
+ "🏔️": "雪山",
+ "🌋": "火山",
+ "🏕️": "露营",
+ "🏝️": "无人荒岛",
+ "🏡": "别墅",
+ "⛲️": "喷泉",
+ "🎠": "旋转木马",
+ "🎡": "摩天轮",
+ "🎢": "过山车",
+ "💈": "理发店",
+ "🚆": "火车",
+ "🚋": "有轨电车",
+ "🚍️": "迎面驶来的公交车",
+ "🚕": "出租车",
+ "🚗": "汽车",
+ "🚚": "货车",
+ "🚜": "拖拉机",
+ "🛵": "小型摩托车",
+ "🛺": "三轮摩托车",
+ "🛴": "滑板车",
+ "🛹": "滑板",
+ "🛼": "四轮滑冰鞋",
+ "⚓️": "锚",
+ "⛵️": "帆船",
+ "🛶": "独木舟",
+ "🚤": "快艇",
+ "🚢": "船",
+ "✈️": "飞机",
+ "🚁": "直升机",
+ "🚠": "缆车",
+ "🛰️": "卫星",
+ "🚀": "火箭",
+ "🛸": "飞碟",
+ "⏰": "闹钟",
+ "🌙": "弯月",
+ "🌡️": "温度计",
+ "☀️": "太阳",
+ "🪐": "有环行星",
+ "🌟": "闪亮的星星",
+ "🌀": "台风",
+ "🌈": "彩虹",
+ "☂️": "伞",
+ "❄️": "雪花",
+ "☄️": "彗星",
+ "🔥": "火焰",
+ "💧": "水滴",
+ "🌊": "浪花",
+ "🎃": "南瓜灯",
+ "✨": "闪亮",
+ "🎈": "气球",
+ "🎉": "拉炮彩带",
+ "🎏": "鲤鱼旗",
+ "🎀": "蝴蝶结",
+ "🎁": "礼物",
+ "🎟️": "入场券",
+ "🏆️": "奖杯",
+ "⚽️": "足球",
+ "🏀": "篮球",
+ "🏈": "美式橄榄球",
+ "🎾": "网球",
+ "🥏": "飞盘",
+ "🏓": "乒乓球",
+ "🏸": "羽毛球",
+ "🤿": "潜水面罩",
+ "🥌": "冰壶",
+ "🎯": "正中靶心的飞镖",
+ "🪀": "悠悠球",
+ "🪁": "风筝",
+ "🔮": "水晶球",
+ "🎲": "骰子",
+ "🧩": "拼图",
+ "🎨": "调色盘",
+ "🧵": "线",
+ "👕": "T恤",
+ "🧦": "袜子",
+ "👗": "连衣裙",
+ "🩳": "短裤",
+ "🎒": "书包",
+ "👟": "跑鞋",
+ "👑": "皇冠",
+ "🧢": "鸭舌帽",
+ "💄": "唇膏",
+ "💍": "戒指",
+ "💎": "宝石",
+ "📢": "喇叭",
+ "🎶": "多个音符",
+ "🎙️": "录音室麦克风",
+ "📻️": "收音机",
+ "🎷": "萨克斯管",
+ "🪗": "手风琴",
+ "🎸": "吉他",
+ "🎺": "小号",
+ "🎻": "小提琴",
+ "🪕": "班卓琴",
+ "🥁": "鼓",
+ "☎️": "电话",
+ "🔋": "电池",
+ "💿️": "光盘",
+ "🧮": "算盘",
+ "🎬️": "场记板",
+ "💡": "灯泡",
+ "🔦": "手电筒",
+ "🏮": "红灯笼",
+ "📕": "合上的书本",
+ "🏷️": "标签",
+ "💳️": "信用卡",
+ "✏️": "铅笔",
+ "🖌️": "画笔",
+ "🖍️": "蜡笔",
+ "📌": "图钉",
+ "📎": "回形针",
+ "🔑": "钥匙",
+ "🪃": "回旋镖",
+ "🏹": "弓和箭",
+ "⚖️": "天平",
+ "🧲": "磁铁",
+ "🧪": "试管",
+ "🧬": "DNA",
+ "🔬": "显微镜",
+ "🔭": "望远镜",
+ "📡": "卫星天线",
+ "🪑": "椅子",
+ "🧹": "扫帚",
+ "🗿": "摩埃"
+ },
+ "zh-TW": {
+ "👽️": "外星人",
+ "🤖": "機器人",
+ "🧠": "腦",
+ "👁️": "眼睛",
+ "🧙": "魔術師",
+ "🧚": "仙女",
+ "🧜": "人魚",
+ "🐵": "猴子頭",
+ "🦧": "猩猩",
+ "🐶": "狗頭",
+ "🐺": "狼",
+ "🦊": "狐狸",
+ "🦝": "浣熊",
+ "🐱": "貓頭",
+ "🦁": "獅子",
+ "🐯": "老虎頭",
+ "🐴": "馬頭",
+ "🦄": "獨角獸",
+ "🦓": "斑馬",
+ "🦌": "鹿",
+ "🐮": "牛頭",
+ "🐷": "豬頭",
+ "🐗": "野豬",
+ "🐪": "單峰駱駝",
+ "🦙": "羊駝",
+ "🦒": "長頸鹿",
+ "🐘": "大象",
+ "🦣": "毛象",
+ "🦏": "犀牛",
+ "🐭": "老鼠頭",
+ "🐰": "兔子頭",
+ "🐿️": "松鼠",
+ "🦔": "刺蝟",
+ "🦇": "蝙蝠",
+ "🐻": "熊",
+ "🐨": "無尾熊",
+ "🦥": "樹懶",
+ "🦦": "水獺",
+ "🦘": "袋鼠",
+ "🐥": "小雞",
+ "🐦️": "鳥",
+ "🕊️": "飛鳥",
+ "🦆": "鴨子",
+ "🦉": "貓頭鷹",
+ "🦤": "渡渡鳥",
+ "🪶": "羽毛",
+ "🦩": "紅鶴",
+ "🦚": "孔雀",
+ "🦜": "鸚鵡",
+ "🐊": "鱷魚",
+ "🐢": "烏龜",
+ "🦎": "蜥蜴",
+ "🐍": "蛇",
+ "🐲": "龍頭",
+ "🦕": "蜥腳類恐龍",
+ "🐳": "鯨魚",
+ "🐬": "海豚",
+ "🦭": "海豹",
+ "🐟️": "魚",
+ "🐠": "熱帶魚",
+ "🦈": "鯊魚",
+ "🐙": "章魚",
+ "🐚": "海螺",
+ "🐌": "蝸牛",
+ "🦋": "蝴蝶",
+ "🐛": "毛毛蟲",
+ "🐝": "蜜蜂",
+ "🐞": "瓢蟲",
+ "💐": "花束",
+ "🌹": "玫瑰",
+ "🌺": "芙蓉",
+ "🌻": "向日葵",
+ "🌷": "鬱金香",
+ "🌲": "常青樹",
+ "🌳": "落葉樹",
+ "🌴": "棕櫚樹",
+ "🌵": "仙人掌",
+ "🌿": "草藥",
+ "🍁": "楓葉",
+ "🍇": "葡萄",
+ "🍈": "瓜",
+ "🍉": "西瓜",
+ "🍊": "橘子",
+ "🍋": "檸檬",
+ "🍌": "香蕉",
+ "🍍": "鳳梨",
+ "🥭": "芒果",
+ "🍏": "青蘋果",
+ "🍐": "梨子",
+ "🍑": "桃子",
+ "🍒": "櫻桃",
+ "🍓": "草莓",
+ "🫐": "藍莓",
+ "🥝": "奇異果",
+ "🍅": "番茄",
+ "🫒": "橄欖",
+ "🥥": "椰子",
+ "🥑": "酪梨",
+ "🍆": "茄子",
+ "🥕": "胡蘿蔔",
+ "🌽": "玉米",
+ "🌶️": "辣椒",
+ "🥬": "綠葉蔬菜",
+ "🥦": "花椰菜",
+ "🧅": "洋蔥",
+ "🍄": "蘑菇",
+ "🥜": "花生",
+ "🥐": "可頌",
+ "🥖": "法國麵包",
+ "🥨": "蝴蝶餅",
+ "🥯": "貝果",
+ "🥞": "鬆餅",
+ "🧇": "格子鬆餅",
+ "🍔": "漢堡",
+ "🍕": "披薩",
+ "🌭": "熱狗",
+ "🌮": "夾餅",
+ "🍿": "爆米花",
+ "🦀": "螃蟹",
+ "🦞": "龍蝦",
+ "🍨": "冰淇淋",
+ "🍩": "甜甜圈",
+ "🍪": "餅乾",
+ "🎂": "生日蛋糕",
+ "🧁": "杯子蛋糕",
+ "🍫": "巧克力",
+ "🍬": "糖",
+ "🍭": "棒棒糖",
+ "🫖": "茶壺",
+ "🧃": "鋁箔包",
+ "🧉": "瑪黛茶",
+ "🧭": "指南針",
+ "🏔️": "雪山",
+ "🌋": "火山",
+ "🏕️": "露營",
+ "🏝️": "熱帶小島",
+ "🏡": "別墅",
+ "⛲️": "噴泉",
+ "🎠": "旋轉木馬",
+ "🎡": "摩天輪",
+ "🎢": "雲霄飛車",
+ "💈": "理髮店",
+ "🚆": "火車",
+ "🚋": "電纜車",
+ "🚍️": "公共汽車",
+ "🚕": "計程車",
+ "🚗": "汽車",
+ "🚚": "貨車",
+ "🚜": "拖弋機",
+ "🛵": "摩托車",
+ "🛺": "嘟嘟車",
+ "🛴": "滑板車",
+ "🛹": "滑板",
+ "🛼": "輪式溜冰鞋",
+ "⚓️": "錨",
+ "⛵️": "帆船",
+ "🛶": "獨木舟",
+ "🚤": "快艇",
+ "🚢": "船",
+ "✈️": "飛機",
+ "🚁": "直升機",
+ "🚠": "纜車",
+ "🛰️": "衛星",
+ "🚀": "火箭",
+ "🛸": "飛碟",
+ "⏰": "鬧鐘",
+ "🌙": "彎月",
+ "🌡️": "溫度計",
+ "☀️": "太陽",
+ "🪐": "帶行星環的行星",
+ "🌟": "閃爍的星星",
+ "🌀": "颱風",
+ "🌈": "彩虹",
+ "☂️": "雨傘",
+ "❄️": "雪花",
+ "☄️": "慧星",
+ "🔥": "火",
+ "💧": "水滴",
+ "🌊": "波浪",
+ "🎃": "南瓜燈",
+ "✨": "閃爍",
+ "🎈": "氣球",
+ "🎉": "拉炮",
+ "🎏": "鯉魚旗",
+ "🎀": "蝴蝶結",
+ "🎁": "禮物",
+ "🎟️": "入場券",
+ "🏆️": "獎盃",
+ "⚽️": "足球",
+ "🏀": "籃球",
+ "🏈": "美式足球",
+ "🎾": "網球",
+ "🥏": "飛盤",
+ "🏓": "桌球",
+ "🏸": "羽毛球",
+ "🤿": "潛水面罩",
+ "🥌": "冰石壺",
+ "🎯": "命中",
+ "🪀": "溜溜球",
+ "🪁": "風箏",
+ "🔮": "水晶球",
+ "🎲": "骰子",
+ "🧩": "拼圖",
+ "🎨": "調色板",
+ "🧵": "線",
+ "👕": "T卹",
+ "🧦": "襪子",
+ "👗": "洋裝",
+ "🩳": "短泳褲",
+ "🎒": "書包",
+ "👟": "運動鞋",
+ "👑": "皇冠",
+ "🧢": "鴨舌帽",
+ "💄": "口紅",
+ "💍": "戒指",
+ "💎": "鑽石",
+ "📢": "大聲公",
+ "🎶": "樂符",
+ "🎙️": "錄音室麥克風",
+ "📻️": "收音機",
+ "🎷": "薩克斯風",
+ "🪗": "手風琴",
+ "🎸": "吉他",
+ "🎺": "小號",
+ "🎻": "小提琴",
+ "🪕": "斑鳩琴",
+ "🥁": "鼓",
+ "☎️": "電話",
+ "🔋": "電池",
+ "💿️": "光碟",
+ "🧮": "算盤",
+ "🎬️": "場記板",
+ "💡": "燈泡",
+ "🔦": "手電筒",
+ "🏮": "燈籠",
+ "📕": "合起來的書本",
+ "🏷️": "吊牌",
+ "💳️": "信用卡",
+ "✏️": "鉛筆",
+ "🖌️": "畫筆",
+ "🖍️": "蠟筆",
+ "📌": "圖釘",
+ "📎": "迴紋針",
+ "🔑": "鑰匙",
+ "🪃": "迴力鏢",
+ "🏹": "弓箭",
+ "⚖️": "天平",
+ "🧲": "磁鐵",
+ "🧪": "試管",
+ "🧬": "DNA",
+ "🔬": "顯微鏡",
+ "🔭": "望遠鏡",
+ "📡": "衛星天線",
+ "🪑": "椅子",
+ "🧹": "掃帚",
+ "🗿": "復活節島"
+ }
+}
diff --git a/browser/components/torpreferences/content/bridgemoji/1f300.svg b/browser/components/torpreferences/content/bridgemoji/1f300.svg
new file mode 100644
index 0000000000000..1de6f256cb52c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f300.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M35.782 24.518c-.13-.438-.422-.799-.821-1.016-.802-.436-1.879-.116-2.316.683-1.797 3.296-4.771 5.695-8.372 6.757-3.563 1.051-7.437.634-10.698-1.144-2.558-1.394-4.419-3.699-5.242-6.493-.74-2.514-.495-5.016.552-7.033-.363 1.605-.313 3.285.164 4.908.737 2.507 2.407 4.575 4.701 5.823 2.733 1.492 5.989 1.841 8.979.961 3.025-.892 5.521-2.906 7.026-5.672 1.832-3.358 2.246-7.228 1.165-10.898-1.08-3.669-3.524-6.69 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f308.svg b/browser/components/torpreferences/content/bridgemoji/1f308.svg
new file mode 100644
index 0000000000000..ffe6a12398cf0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f308.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8767AC" d="M36 1C16.118 1 1 16.118 1 36h17.042c0-9.917 8.042-17.958 17.958-17.958V1z"/><path fill="#EB2027" d="M0 35.999h3.042c0-18.189 14.734-32.935 32.917-32.957V0C16.095.023 0 16.131 0 35.999z"/><path fill="#F19020" d="M3.083 36h3C6.083 19.468 19.473 6.065 36 6.043v-3C17.817 3.065 3.083 17.811 3.083 36z"/><path fill="#FFCB4C" d="M6.083 36h3C9.083 21.125 21.13 9.065 36 9.043v-3C19.473 6.065 6.083 19.468 6.083 36z" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f30a.svg b/browser/components/torpreferences/content/bridgemoji/1f30a.svg
new file mode 100644
index 0000000000000..0e68ec3614f89
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f30a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#269" d="M33.398 23.678c-7.562 4.875-20.062-.438-18.375-8.062 1.479-6.684 9.419-4.763 11.225-3.861 1.806.902.713-3.889-3.475-5.327C17.1 4.48 10.156 4.893 7.961 14.678c-1.5 6.687 1.438 16.062 12.719 16.187 11.281.125 12.718-7.187 12.718-7.187z"/><path fill="#55ACEE" d="M35.988 25.193c0-2.146-2.754-2.334-4-1.119-2.994 2.919-7.402 4.012-13.298 2.861-10.25-2-10.341-14.014-3.333-17.441 3.791-1.854 8.289.341 9.999 1.655 1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f30b.svg b/browser/components/torpreferences/content/bridgemoji/1f30b.svg
new file mode 100644
index 0000000000000..88d989d73c53d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f30b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M12 36V16s-1.17 1.053-2.354 1.929c-.313.231-1.977.79-2.312 1.04-1.762 1.315-2.552 3.841-2.792 4.167C4.083 23.76 0 36 0 36h12z"/><path fill="#4B545D" d="M32 36l-5.5-17.75-8.5-5.656-6.458 2.208C11.135 15.583 10 18.25 10 18.25L8.75 22 0 36h32z"/><path fill="#292F33" d="M18.135 25.726c-.145-.513-.026-.97-.177-1.476-.148-.499-.566-1.047-.693-1.478-.265-.899-.454-1.583-.445-1.772.024-.469.894-.401 1.102.469.293 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f319.svg b/browser/components/torpreferences/content/bridgemoji/1f319.svg
new file mode 100644
index 0000000000000..d98dc2f9f42ff
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f319.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFD983" d="M30.312.776C32 19 20 32 .776 30.312c8.199 7.717 21.091 7.588 29.107-.429C37.9 21.867 38.03 8.975 30.312.776z"/><path d="M30.705 15.915c-.453.454-.453 1.189 0 1.644.454.453 1.189.453 1.643 0 .454-.455.455-1.19 0-1.644-.453-.454-1.189-.454-1.643 0zm-16.022 14.38c-.682.681-.682 1.783 0 2.465.68.682 1.784.682 2.464 0 .681-.682.681-1.784 0-2.465-.68-.682-1.784-.682-2.464 0zm13.968-2.147c-1.135 1.135-2.974 1.13 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f31f.svg b/browser/components/torpreferences/content/bridgemoji/1f31f.svg
new file mode 100644
index 0000000000000..a4695dd6df575
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f31f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M28.84 17.638c-.987 1.044-1.633 3.067-1.438 4.493l.892 6.441c.197 1.427-.701 2.087-1.996 1.469l-5.851-2.796c-1.295-.62-3.408-.611-4.7.018l-5.826 2.842c-1.291.629-2.193-.026-2.007-1.452l.843-6.449c.186-1.427-.475-3.444-1.47-4.481l-4.494-4.688c-.996-1.037-.655-2.102.755-2.365l6.37-1.188c1.41-.263 3.116-1.518 3.793-2.789L16.762.956c.675-1.271 1.789-1.274 2.473-.009L22.33 6.66c.686 1.265 2.4 2.507 3.814 2.758 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f321.svg b/browser/components/torpreferences/content/bridgemoji/1f321.svg
new file mode 100644
index 0000000000000..95a75984e1ff2
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f321.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M33.536 2.464c-1.953-1.953-5.118-1.953-7.071 0l-1.197 1.199 2.842 2.843c.391.391.391 1.024 0 1.414-.195.195-.451.293-.707.293s-.512-.098-.707-.293l-2.841-2.842-2.11 2.112 2.841 2.84c.391.39.391 1.023 0 1.414-.195.195-.451.293-.707.293s-.512-.098-.707-.293l-2.84-2.839-2.12 2.122 2.837 2.838c.391.391.391 1.024 0 1.414-.195.195-.451.293-.707.293s-.512-.098-.707-.293l-2.837-2.837-2.12 2.123 2.836 2.836c.391.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f32d.svg b/browser/components/torpreferences/content/bridgemoji/1f32d.svg
new file mode 100644
index 0000000000000..a450dbba085ec
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f32d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M31.42 31.471c-3.515 3.515-9.213 3.515-12.728 0L4.55 17.328c-3.515-3.515-3.515-9.213 0-12.728 3.515-3.515 9.213-3.515 12.728 0L31.42 18.743c3.515 3.514 3.515 9.213 0 12.728z"/><path fill="#F7BBA6" d="M29.335 20.9c3.515 3.515 4.609 8.119 2.475 10.253-2.135 2.134-6.739 1.039-10.253-2.475L7.414 14.536c-3.515-3.515-4.609-8.12-2.475-10.253 2.134-2.134 6.738-1.04 10.253 2.475L29.335 20.9z"/><path fill="#DD2E44" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f32e.svg b/browser/components/torpreferences/content/bridgemoji/1f32e.svg
new file mode 100644
index 0000000000000..5b08f1f7d1997
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f32e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFE8B6" d="M12 7C5.374 7 0 14.164 0 23h6v6h17.119c.564-1.854.881-3.877.881-6 0-8.836-5.373-16-12-16z"/><path fill="#FFE8B6" d="M29 21h4.896C33.156 13.11 28.118 7 22 7c-6.627 0-12 7.164-12 16 0 2.123.317 4.146.88 6H29v-8z"/><path fill="#FFAC33" d="M36 23c0-8.836-5.373-16-12-16-6.626 0-12 7.164-12 16 0 2.123.317 4.146.88 6H30c3.314 0 6-2.685 6-6z"/><path fill="#FFAC33" d="M6 23h10v6H6z"/><path fill="#FFE8B6" d="M0 23c [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f332.svg b/browser/components/torpreferences/content/bridgemoji/1f332.svg
new file mode 100644
index 0000000000000..540f1860cc166
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f332.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M22 33c0 2.209-1.791 3-4 3s-4-.791-4-3l1-9c0-2.209.791-2 3-2s3-.209 3 2l1 9z"/><path fill="#5C913B" d="M31.406 27.297C24.443 21.332 21.623 12.791 18 12.791c-3.623 0-6.443 8.541-13.405 14.506-2.926 2.507-1.532 3.957 2.479 3.667 3.576-.258 6.919-1.069 10.926-1.069s7.352.812 10.926 1.069c4.012.29 5.405-1.16 2.48-3.667z"/><path fill="#3E721D" d="M29.145 24.934C23.794 20.027 20.787 13 18 13c-2.785 0-5.793 7.02 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f333.svg b/browser/components/torpreferences/content/bridgemoji/1f333.svg
new file mode 100644
index 0000000000000..3937fc499f8b5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f333.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M22 33c0 2.209-1.791 3-4 3s-4-.791-4-3l1-9c0-2.209.791-2 3-2s3-.209 3 2l1 9z"/><path fill="#5C913B" d="M34 17c0 8.837-7.163 12-16 12-8.836 0-16-3.163-16-12C2 8.164 11 0 18 0s16 8.164 16 17z"/><g fill="#3E721D"><ellipse cx="6" cy="21" rx="2" ry="1"/><ellipse cx="30" cy="21" rx="2" ry="1"/><ellipse cx="10" cy="25" rx="2" ry="1"/><ellipse cx="14" cy="22" rx="2" ry="1"/><ellipse cx="10" cy="16" rx="2" ry="1"/ [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f334.svg b/browser/components/torpreferences/content/bridgemoji/1f334.svg
new file mode 100644
index 0000000000000..55d246a2fe7a0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f334.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M21.978 20.424c-.054-.804-.137-1.582-.247-2.325-.133-.89-.299-1.728-.485-2.513-.171-.723-.356-1.397-.548-2.017-.288-.931-.584-1.738-.852-2.4-.527-1.299-.943-2.043-.943-2.043l-3.613.466s.417.87.868 2.575c.183.692.371 1.524.54 2.495.086.49.166 1.012.238 1.573.1.781.183 1.632.242 2.549.034.518.058 1.058.074 1.619.006.204.015.401.018.611.01.656-.036 1.323-.118 1.989-.074.6-.182 1.197-.311 1.789-.185.848-.413 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f335.svg b/browser/components/torpreferences/content/bridgemoji/1f335.svg
new file mode 100644
index 0000000000000..097dc13c440eb
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f335.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M30 4c-2.209 0-4 1.791-4 4v9.125c0 1.086-.887 1.96-2 2.448V6c0-3.313-2.687-6-6-6s-6 2.687-6 6v17.629c-1.122-.475-2-1.371-2-2.504V16c0-2.209-1.791-4-4-4s-4 1.791-4 4v7c0 2.209 1.75 3.875 3.375 4.812 1.244.718 4.731 1.6 6.625 1.651V33c0 3.313 12 3.313 12 0v-7.549c1.981-.119 5.291-.953 6.479-1.639C32.104 22.875 34 21.209 34 19V8c0-2.209-1.791-4-4-4z"/><g fill="#3E721D"><circle cx="12" cy="6" r="1"/><circle c [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f336.svg b/browser/components/torpreferences/content/bridgemoji/1f336.svg
new file mode 100644
index 0000000000000..eaeef864dc485
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f336.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DA2F47" d="M4.042 27.916c4.89.551 9.458-1.625 13.471-5.946 4.812-5.182 5-13 5-14s11.31-3.056 11 5c-.43 11.196-7.43 20.946-19.917 21.916-5.982.465-9.679-.928-11.387-2.345-2.69-2.231-.751-4.916 1.833-4.625z"/><path fill="#77B255" d="M30.545 6.246c.204-1.644.079-3.754-.747-4.853-1.111-1.479-4.431-.765-3.569.113.96.979 2.455 2.254 2.401 4.151-.044-.01-.085-.022-.13-.032-3.856-.869-6.721 1.405-7.167 2.958-.782 2.722 4.06 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f337.svg b/browser/components/torpreferences/content/bridgemoji/1f337.svg
new file mode 100644
index 0000000000000..86a1a36f99dba
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f337.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M34.751 22c-3.382 0-11.9 3.549-15.751 7.158V17c0-.553-.447-1-1-1-.552 0-1 .447-1 1v12.341C13.247 25.669 4.491 22 1.052 22 .123 22 11.913 35.992 17 34.599V35c0 .553.448 1 1 1 .553 0 1-.447 1-1v-.356C24.188 35.638 35.668 22 34.751 22z"/><path fill="#EA596E" d="M25 13.417C25 19.768 23.293 23 18 23s-7-3.232-7-9.583S16 0 18 0s7 7.066 7 13.417z"/><path fill="#F4ABBA" d="M22.795 2c-.48 0-4.106 14.271-4.803 19.27 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f339.svg b/browser/components/torpreferences/content/bridgemoji/1f339.svg
new file mode 100644
index 0000000000000..500d9257cece8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f339.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M19.32 25.358c-.113 0-.217.003-.32.005v-.415c4.805-.479 8.548-4.264 8.548-7.301 0-3.249 0 1.47-9.562 1.47-9.558 0-9.558-4.719-9.558-1.47 0 3.043 3.757 6.838 8.572 7.305v.411c-.104-.002-.207-.005-.321-.005-2.553 0-6.603-2.05-6.603-1.32 0 .646 4.187 4.017 6.924 4.796V35c0 .553.447 1 1 1s1-.447 1-1v-6.166c2.738-.779 6.924-4.15 6.924-4.796 0-.729-4.05 1.32-6.604 1.32z"/><path fill="#A0041E" d="M26.527 7.353c- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f33a.svg b/browser/components/torpreferences/content/bridgemoji/1f33a.svg
new file mode 100644
index 0000000000000..19c2f896020e1
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f33a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M19.602 32.329c6.509 6.506 17.254-7.669 15.72-7.669-7.669 0-22.227 1.161-15.72 7.669z"/><path fill="#77B255" d="M15.644 33.372C9.612 39.404-.07 26.263 1.352 26.263c3.81 0 9.374-.348 12.79.867 2.958 1.052 4.304 3.442 1.502 6.242z"/><path fill="#F4ABBA" d="M34.613 15.754c-.052-.901-.175-2.585-1.398-4.227-1.16-1.549-3.805-3.371-5.534-2.585.516-1.676-.264-4.125-1.191-5.49-1.179-1.736-4.262-3.843-8.146-3.026-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f33b.svg b/browser/components/torpreferences/content/bridgemoji/1f33b.svg
new file mode 100644
index 0000000000000..413e6fcbf87b6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f33b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M28 27c-8 0-8 6-8 6V22h-4v11s0-6-8-6c-4 0-7-2-7-2s0 9 9 9h6s0 2 2 2 2-2 2-2h6c9 0 9-9 9-9s-3 2-7 2z"/><path fill="#FFAC33" d="M21.125 27.662c-.328 0-.651-.097-.927-.283l-2.323-1.575-2.322 1.575c-.277.186-.601.283-.929.283-.143 0-.287-.018-.429-.057-.462-.123-.851-.441-1.06-.874l-1.225-2.527-2.797.204c-.04.002-.079.004-.119.004-.438 0-.86-.174-1.17-.484-.34-.342-.516-.81-.481-1.288l.201-2.8-2.523-1.225c-.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f33d.svg b/browser/components/torpreferences/content/bridgemoji/1f33d.svg
new file mode 100644
index 0000000000000..6c4ae3bf53b02
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f33d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M15.373 1.022C13.71 2.686 8.718 9.34 11.214 15.164c2.495 5.823 5.909 2.239 7.486-2.495.832-2.496.832-5.824-.831-10.815-.832-2.496-2.496-.832-2.496-.832zm19.304 19.304c-1.663 1.663-8.319 6.655-14.142 4.159-5.824-2.496-2.241-5.909 2.495-7.486 2.497-.832 5.823-.833 10.814.832 2.496.831.833 2.495.833 2.495z"/><path fill="#F4900C" d="M32.314 6.317s-.145-1.727-.781-2.253c-.435-.546-2.018-.546-2.018-.546-1.664 0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f33f.svg b/browser/components/torpreferences/content/bridgemoji/1f33f.svg
new file mode 100644
index 0000000000000..9243e96857bf6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f33f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M20.917 22.502c-2.706-.331-3.895-1.852-6.273-4.889 3.039-2.376 4.559-3.565 7.266-3.235 2.71.332 5.25 2.016 6.273 4.889-1.683 2.543-4.557 3.563-7.266 3.235zm-5.959 8.814c-2.549-.187-3.733-1.553-6.098-4.288 2.735-2.364 4.102-3.547 6.652-3.364 2.551.185 5.009 1.644 6.098 4.287-1.459 2.458-4.1 3.548-6.652 3.365zm-6.22-15.707c1.338 1.631 1.191 3.117.898 6.088-2.97-.294-4.456-.44-5.795-2.071-1.339-1.634-1.861-3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f341.svg b/browser/components/torpreferences/content/bridgemoji/1f341.svg
new file mode 100644
index 0000000000000..7cd7ad977b13b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f341.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M36 20.917c0-.688-2.895-.5-3.125-1s3.208-4.584 2.708-5.5-5.086 1.167-5.375.708c-.288-.458.292-3.5-.208-3.875s-5.25 4.916-5.917 4.292c-.666-.625 1.542-10.5 1.086-10.698-.456-.198-3.419 1.365-3.793 1.282C21.002 6.042 18.682 0 18 0s-3.002 6.042-3.376 6.125c-.374.083-3.337-1.48-3.793-1.282-.456.198 1.752 10.073 1.085 10.698C11.25 16.166 6.5 10.875 6 11.25s.08 3.417-.208 3.875c-.289.458-4.875-1.625-5.375-.708s [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f344.svg b/browser/components/torpreferences/content/bridgemoji/1f344.svg
new file mode 100644
index 0000000000000..0cf7a79142409
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f344.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M27 33c0 2.209-1.791 3-4 3H13c-2.209 0-4-.791-4-3s3-7 3-13 12-6 12 0 3 10.791 3 13z"/><path fill="#DD2E44" d="M34.666 11.189l-.001-.002c-.96-2.357-2.404-4.453-4.208-6.182h-.003C27.222 1.904 22.839 0 18 0 13.638 0 9.639 1.541 6.524 4.115c-2.19 1.809-3.941 4.13-5.076 6.785C.518 13.075 0 15.473 0 18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4 0-2.417-.48-4.713-1.334-6.811z"/><g fill="#F4ABBA"><path d="M7.708 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f345.svg b/browser/components/torpreferences/content/bridgemoji/1f345.svg
new file mode 100644
index 0000000000000..411c2a50e38b2
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f345.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M22.494 5.344c-.687 0-1.352.066-1.991.177-.819-.104-2.74-.231-3.591-.231-8.473 0-15.886 3.177-15.886 14.298 0 9.036 7.049 16.361 16.976 16.361s17.974-7.325 17.974-16.361C35.975 8.339 26.59 5.344 22.494 5.344z"/><path fill="#77B255" d="M8.439.091c1.637 1.636 2.77 2.266 3.274 4.91.298 1.564 2.266 1.51 2.266 1.51s-3.903 1.763-5.54 3.4c0 0 4.91-1.637 6.547-1.637 0 0 3.273 1.637 3.273 3.273 0 0 0-3.273-1.636-3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f346.svg b/browser/components/torpreferences/content/bridgemoji/1f346.svg
new file mode 100644
index 0000000000000..14688a6dd5fa2
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f346.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#744EAA" d="M6 4c3 0 5 2 8 6s7.957 7.191 12 8c5 1 9 5 9 11 0 4.897-3.846 7-9 7-5 0-9-3-14-8S2 14 2 10s1-6 4-6z"/><path fill="#77B255" d="M3.515 0c1.248 0 1.248 1.248 1.248 2.495 0 1.764 1.248 1.129 2.496 1.129C8.505 3.624 11 6 11 6H7.258c-1.248 0 0 2.614-1.248 2.614S4.762 7.426 3.515 7.426 2 11 2 11s-1.604-4.153.267-6.024C3.515 3.728 1.02 0 3.515 0z"/></svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f347.svg b/browser/components/torpreferences/content/bridgemoji/1f347.svg
new file mode 100644
index 0000000000000..e52e2f851970b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f347.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M9.999 12c-.15 0-.303-.034-.446-.106-4.38-2.19-7.484-7.526-8.501-10.578C.876.792 1.16.226 1.684.051c.525-.176 1.091.109 1.265.632.877 2.632 3.688 7.517 7.499 9.422.494.247.694.848.447 1.342-.176.351-.529.553-.896.553z"/><circle fill="#553788" cx="19" cy="29" r="7"/><circle fill="#9266CC" cx="10" cy="15" r="7"/><circle fill="#AA8DD8" cx="19" cy="12" r="7"/><circle fill="#744EAA" cx="27" cy="18" r="7"/><cir [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f348.svg b/browser/components/torpreferences/content/bridgemoji/1f348.svg
new file mode 100644
index 0000000000000..f3482735105c8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f348.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A6D388" d="M31.924 10.982c4.418 7.652 1.99 17.326-5.424 21.607-7.414 4.28-16.505 2.413-20.924-5.241C.577 18.688 3.086 9.156 10.5 4.876c7.414-4.28 17.924.044 21.424 6.106z"/><path fill="#77B255" d="M24 6c3 1 6 4 8 7 .836 1.254.729-.078-.294-2.348C28.02 4.768 17.777.675 10.5 4.876c-3.01 1.738-5.194 4.349-6.413 7.408C4.808 11.471 5.52 11 6 11c1 0-1.896 3.279 1 11 3 8 3 4 3 4s-2-9-1-12 2-5 3-4 5 9 7 14c2.259 5.647 2-1-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f349.svg b/browser/components/torpreferences/content/bridgemoji/1f349.svg
new file mode 100644
index 0000000000000..0f5ec06a4d403
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f349.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M2.472 6.572C1.528 8.698 1 11.038 1 13.5 1 23.165 9.059 31 19 31c7.746 0 14.33-4.767 16.868-11.44L2.472 6.572z"/><path fill="#FFE8B6" d="M4.332 7.295C3.479 9.197 3 11.293 3 13.5c0 8.591 7.164 15.556 16 15.556 6.904 0 12.77-4.26 15.013-10.218L4.332 7.295z"/><path fill="#DD2E44" d="M6.191 8.019C5.43 9.697 5 11.548 5 13.5c0 7.518 6.268 13.611 14 13.611 6.062 0 11.21-3.753 13.156-8.995L6.191 8.019z"/><path d= [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f34a.svg b/browser/components/torpreferences/content/bridgemoji/1f34a.svg
new file mode 100644
index 0000000000000..82c0c52b1d0de
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f34a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M3 19.5C3 10.388 10.387 3 19.499 3c9.113 0 16.5 7.387 16.5 16.5S28.612 36 19.499 36C10.387 36 3 28.613 3 19.5z"/><path fill="#662113" d="M11.414 7.585c-.267-.267-.797-.197-1.355.12-3.3-2.732-8.653-3.652-8.895-3.692-.546-.089-1.059.277-1.15.821-.091.544.276 1.06.821 1.151.053.009 4.934.854 7.821 3.16-.275.525-.324 1.015-.07 1.268.39.391 1.34.074 2.121-.707.781-.78 1.097-1.73.707-2.121z"/><path fill="#5C913 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f34b.svg b/browser/components/torpreferences/content/bridgemoji/1f34b.svg
new file mode 100644
index 0000000000000..ffbdc0886c9e7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f34b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M11.405 3.339c6.48-1.275 8.453 1.265 11.655.084 3.202-1.181.093 2.82-.745 3.508-.84.688-8.141 4.809-11.307 3.298-3.166-1.511-3.182-6.186.397-6.89z"/><path fill="#77B255" d="M15.001 16c-.304 0-.605-.138-.801-.4-.687-.916-1.308-1.955-1.965-3.056C9.967 8.749 7.396 4.446.783 2.976c-.539-.12-.879-.654-.759-1.193.12-.54.654-.878 1.193-.759C8.671 2.68 11.599 7.581 13.952 11.519c.63 1.054 1.224 2.049 1.848 2.881. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f34c.svg b/browser/components/torpreferences/content/bridgemoji/1f34c.svg
new file mode 100644
index 0000000000000..b4120ba34cbf2
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f34c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFE8B6" d="M28 2c2.684-1.342 5 4 3 13-1.106 4.977-5 9-9 12s-11-1-7-5 8-7 10-13c1.304-3.912 1-6 3-7z"/><path fill="#FFD983" d="M31 8c0 3-1 9-4 13s-7 5-4 1 5-7 6-11 2-7 2-3z"/><path fill="#FFCC4D" d="M22 20c-.296.592 1.167-3.833-3-6-1.984-1.032-10 1-4 1 3 0 4 2 2 4-.291.292-.489.603-.622.912-.417.346-.873.709-1.378 1.088-2.263 1.697-5.84 4.227-10 7-3 2-4 3-4 4 0 3 9 3 14 1s10-7 10-7l4-4c-3-4-7-2-7-2z"/><path fill="#FF [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f34d.svg b/browser/components/torpreferences/content/bridgemoji/1f34d.svg
new file mode 100644
index 0000000000000..e96999db7a0e9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f34d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M18.241 9.633c-.277-3.307 2.17-4.72 2.17-4.72-3.199.113-4.894 2.826-4.894 2.826-.752-1.3.946-4.012 2.169-4.719-3.198.113-3.67 2.12-3.67 2.12-1.503-2.601-1.03-4.607-1.03-4.607-1.121.647-1.767 2.113-2.141 3.512l-2.318-2.67c-.23 1.044.157 3.174.573 4.959-3.055-1.79-5.903-.15-5.903-.15 3.95 1.188 5.45 3.788 5.45 3.788s-3.948-1.187-5.646 1.526c2.597-.092 4.5.499 5.856 1.23-1.163.289-3.145-.236-4.355 1.371 0 0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f34f.svg b/browser/components/torpreferences/content/bridgemoji/1f34f.svg
new file mode 100644
index 0000000000000..1423d8aa8e2cb
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f34f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M24 7c-3 0-3 1-6 1s-3-1-6-1c-4 0-9 2-9 9 0 11 6 20 10 20 3 0 3-1 5-1s2 1 5 1c4 0 10-9 10-20 0-7.001-5-9-9-9z"/><path fill="#3E721D" d="M17.311 7.88s-1.775-4.674-6.58-6.06c-3.843-1.108-6.318.26-6.318.26s3.012 3.991 5.895 4.822c2.882.83 7.003.978 7.003.978z"/><path fill="#662113" d="M18 10c-.552 0-1-.448-1-1 0-3.441 1.2-6.615 3.293-8.707.391-.391 1.023-.391 1.414 0s.391 1.024 0 1.414C19.986 3.427 19 6.085 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f350.svg b/browser/components/torpreferences/content/bridgemoji/1f350.svg
new file mode 100644
index 0000000000000..2888963f457ac
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f350.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A6D388" d="M7.681 9.097c1.587-3.151 7.698-1.916 11.958 2.171 2.697 2.586 8.056 1.498 11.498 4.804 3.493 3.354 3.259 9.361-3.053 15.767C23 37 16 37 11.835 33.384c-4.388-3.811-2.476-8.61-4.412-13.585C5.487 14.823 3.1 9.375 7.681 9.097z"/><path fill="#662113" d="M8.178 9.534c-.43.448-1.114.489-1.527.093-3.208-3.079-3.918-7.544-3.946-7.776-.074-.586.348-1.157.939-1.278.592-.121 1.131.257 1.205.842.006.05.657 3.997 3.359 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f351.svg b/browser/components/torpreferences/content/bridgemoji/1f351.svg
new file mode 100644
index 0000000000000..84e81f5e6ee2c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f351.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M1.062 5.125s4.875-5 10-5C17.188.125 19 5.062 19 5.062s.625-4 5-4 6.938 3.125 6.938 3.125-3.562 2.125-4.625 2.562c-2.801 1.153-11.375 3.562-15.375 2.562S1.062 5.125 1.062 5.125z"/><path fill="#FF886C" d="M18 6s1.042-.896 6-.896c6.542 0 12 4.812 12 12.927 0 11.531-14.958 17.881-14.958 17.881S1 34.833 1 17.977C1 8.018 7.75 5 12 5c4.958 0 6 1 6 1z"/><path fill="#77B255" d="M1.062 5.125s4.875-5 10-5C17.188.12 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f352.svg b/browser/components/torpreferences/content/bridgemoji/1f352.svg
new file mode 100644
index 0000000000000..bdba6bd679c56
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f352.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M25.999 24c-.198 0-.397-.059-.572-.181-6.543-4.58-12.166-12.366-15.397-17.439 1.699 10.528.997 16.458.962 16.744-.068.548-.562.93-1.115.868-.548-.068-.937-.567-.869-1.115.009-.079.936-8.033-1.986-21.668-.105-.487.166-.978.634-1.148.466-.172.991.028 1.226.468.079.148 8.007 14.873 17.691 21.652.453.316.562.94.246 1.392-.194.279-.504.427-.82.427z"/><path fill="#5C913B" d="M26.547 8.818c-3.476.96-5.051 2.546- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f353.svg b/browser/components/torpreferences/content/bridgemoji/1f353.svg
new file mode 100644
index 0000000000000..26a41ee246bf0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f353.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M22.614 34.845c3.462-1.154 6.117-3.034 6.12-9.373C28.736 21.461 33 17 32.999 12.921 32.998 9 28.384 2.537 17.899 3.635 7.122 4.764 3 8 2.999 15.073c0 4.927 5.304 8.381 8.127 13.518C13 32 18.551 38.187 22.614 34.845z"/><path fill="#77B255" d="M26.252 3.572c-1.278-1.044-3.28-1.55-5.35-1.677.273-.037.542-.076.82-.094.973-.063 3.614-1.232 1.4-1.087-.969.063-1.901.259-2.837.423.237-.154.479-.306.74-.442C21 0 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f354.svg b/browser/components/torpreferences/content/bridgemoji/1f354.svg
new file mode 100644
index 0000000000000..a129dccb3ba42
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f354.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M18 20.411c-9.371 0-16.967-.225-16.967 6.427C1.033 33.487 8.629 35 18 35c9.371 0 16.967-1.513 16.967-8.162 0-6.651-7.596-6.427-16.967-6.427z"/><path fill="#662113" d="M34.47 20.916S26.251 19.932 18 19.89c-8.251.042-16.47 1.026-16.47 1.026C.717 27.39 7.467 30.057 18 30.057s17.283-2.667 16.47-9.141z"/><path fill="#FFCC4D" d="M33.886 18.328l-31.855.646c-1.1 0-2.021 2.229-.854 2.812 8.708 2.708 15.708 5.448 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f355.svg b/browser/components/torpreferences/content/bridgemoji/1f355.svg
new file mode 100644
index 0000000000000..3a44bba9a045b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f355.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M18 4c7.257 0 13 4 14.699 2 .197-.323.301-.657.301-1 0-2-6.716-5-15-5C9.716 0 3 3 3 5c0 .343.104.677.301 1C5 8 10.743 4 18 4z"/><path fill="#FFCC4D" d="M18 3C11.787 3 7.384 4.81 5.727 5.618c-.477.233-.539.84-.415 1.278S16 34 16 34s.896 2 2 2 2-2 2-2L30.704 6.779s.213-.842-.569-1.229C28.392 4.689 24.047 3 18 3z"/><g fill="#BE1931"><path d="M18 31c0-2.208-1.791-4-4-4-.254 0-.5.029-.741.075L16 34s.071.14.19. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f368.svg b/browser/components/torpreferences/content/bridgemoji/1f368.svg
new file mode 100644
index 0000000000000..187b2f4c9a417
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f368.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M20 28.625S30.661 25.9 33.356 15.72c.396-1.495-1.518-2.72-3.868-2.72H5.999c-1.175 0-3.74.493-3.072 2.894C5.711 25.9 16 28.625 16 28.625v1.173s-4.634 2.443-5.588 3.01c-1.027.588-.268 1.526.144 1.689.684.269 2.39 1.15 7.116 1.15 4.847 0 7.497-.954 8.083-1.15.226-.075 1.197-.973-.198-1.799-2.484-1.47-5.557-2.9-5.557-2.9v-1.173z"/><path fill="#3B88C3" d="M33.291 15.248c0 1.692-6.835 3.064-15.269 3.064-8.432 0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f369.svg b/browser/components/torpreferences/content/bridgemoji/1f369.svg
new file mode 100644
index 0000000000000..3c2aa5826ec6d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f369.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M35.337 23.549C34.291 29.819 27.615 34 18.092 34S1.894 29.819.849 23.549c-.247-1.479.156-8.12 1.054-9.406 2.559-3.664 3.474 10.365 16.189 10.365 13.847 0 13.64-14.028 16.199-10.365.898 1.286 1.292 7.927 1.046 9.406z"/><path fill="#8A4B38" d="M18.092 5.995c-9.331 0-16.895 4.584-16.895 10.239 0 5.655 7.564 10.24 16.895 10.24 9.33 0 16.895-4.585 16.895-10.24S27.422 5.995 18.092 5.995zm0 13.374c-3.174 0-5.748 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f36a.svg b/browser/components/torpreferences/content/bridgemoji/1f36a.svg
new file mode 100644
index 0000000000000..4f5368a41dd26
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f36a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DA9F83" d="M34.966 17.87c.414 4.649-2.082 8.731-4.831 12.206-2.304 2.554-5.602 3.631-8.901 4.285-3.198 1.089-6.766.739-9.716-.895-1.034-.43-2.248-.559-3.167-1.176-2.879-1.846-4.524-4.927-5.779-8.029-1.627-2.916-1.74-6.483-1.414-9.742.219-1.107.967-2.032 1.388-3.051.729-2.127 1.916-3.963 3.569-5.475.786-.787 1.377-1.823 2.303-2.444.919-.617 2.103-.758 3.137-1.188 1.016-.422 1.968-1.08 3.072-1.299 1.072-.213 2.201.106 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f36b.svg b/browser/components/torpreferences/content/bridgemoji/1f36b.svg
new file mode 100644
index 0000000000000..a993c9b4b7f8e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f36b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M26.339 33.496c-1.562 1.561-4.095 1.561-5.657 0L1.59 14.404c-1.562-1.562-1.562-2.681 0-4.243l8.485-8.485c1.562-1.562 2.681-1.562 4.243 0L33.41 20.768c1.562 1.562 1.562 4.095 0 5.657l-7.071 7.071z"/><path fill="#8A4B38" d="M16.582 15.253l-4.885-4.885 5.657-5.657-1.415-1.414-5.656 5.657L6.54 5.211 5.126 6.626l3.743 3.742-5.657 5.657 1.414 1.414 5.657-5.657 4.885 4.885z"/><path fill="#DD2E44" d="M26.339 34.9 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f36c.svg b/browser/components/torpreferences/content/bridgemoji/1f36c.svg
new file mode 100644
index 0000000000000..f6fbf3b70bba8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f36c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M13.298 3.538c-.531-4.075-5.627-4.3-6.248-2.125l-.933 4.041-4.041.933c-2.175.621-1.949 5.717 2.125 6.248l3.054.399c4.074.531 6.973-2.367 6.441-6.441l-.398-3.055zm18.993 18.991c4.074.531 4.299 5.629 2.125 6.249l-4.041.933-.934 4.042c-.62 2.174-5.717 1.948-6.248-2.126l-.398-3.055c-.531-4.074 2.367-6.973 6.441-6.441l3.055.398z"/><path fill="#BE1931" d="M30.49 22.294l-1.254-.164c-4.074-.531-6.973 2.367-6.441 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f36d.svg b/browser/components/torpreferences/content/bridgemoji/1f36d.svg
new file mode 100644
index 0000000000000..e13447edec3c8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f36d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M35.066 35.066c-.766.766-2.006.766-2.771 0L12.198 14.97c-.766-.766-.766-2.007 0-2.773.766-.765 2.007-.765 2.772 0l20.096 20.098c.766.764.766 2.006 0 2.771z"/><path fill="#DD2E44" d="M27.8 14.08c0 7.576-6.142 13.72-13.72 13.72C6.503 27.8.36 21.656.36 14.08.36 6.502 6.503.36 14.08.36c7.578 0 13.72 6.142 13.72 13.72z"/><path fill="#F4900C" d="M17.411 27.376c-1.459.092-2.938-.066-4.379-.503-3.156-.961-5.748-3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f37f.svg b/browser/components/torpreferences/content/bridgemoji/1f37f.svg
new file mode 100644
index 0000000000000..ddbff6d95f16f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f37f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M31.301 11H4.668c-1.657 0-3 1.343-3 3s1.343 3 3 3c.182 0 .357-.023.53-.053L5.182 17l.637 14.004C5.918 33.202 7.8 35 10 35h16c2.2 0 4.082-1.798 4.182-3.996L30.818 17l-.015-.05c.163.027.327.05.498.05 1.657 0 3-1.343 3-3s-1.344-3-3-3z"/><path d="M28.668 17v16.989c.863-.734 1.444-1.796 1.492-2.986L30.84 17h-2.172zm-6 0h3v18h-3zm-6 18V17h3v18zm-6-18h3v18h-3zM5.16 17l.68 14.003c.054 1.342.776 2.528 1.828 3.254V [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f380.svg b/browser/components/torpreferences/content/bridgemoji/1f380.svg
new file mode 100644
index 0000000000000..03d4a75106524
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f380.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M19.281 6.392c0 .405-2.37.405-2.37 0 0-.9-14.911-9.899-14.911-2.7v13.499c0 2.487 3.476 1.947 7.193.361-1.429 3.525-4.498 9.68-7.05 13.934-.229.382-.178.868.124 1.194.303.325.783.415 1.181.215l5.258-2.629c.441.726.931 1.868 1.376 2.906.333.778.678 1.582 1.024 2.275.144.287.417.488.734.54.053.009.107.013.16.013.263 0 .518-.104.707-.293 1.42-1.419 3.429-8.395 4.793-14.093 1.364 5.698 3.373 12.674 4.793 14.09 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f381.svg b/browser/components/torpreferences/content/bridgemoji/1f381.svg
new file mode 100644
index 0000000000000..1ab82981c0572
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f381.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FDD888" d="M33 31c0 2.2-1.8 4-4 4H7c-2.2 0-4-1.8-4-4V14c0-2.2 1.8-4 4-4h22c2.2 0 4 1.8 4 4v17z"/><path fill="#FDD888" d="M36 11c0 2.2-1.8 4-4 4H4c-2.2 0-4-1.8-4-4s1.8-4 4-4h28c2.2 0 4 1.8 4 4z"/><path fill="#FCAB40" d="M3 15h30v2H3z"/><path fill="#DA2F47" d="M19 3h-2c-1.657 0-3 1.343-3 3v29h8V6c0-1.656-1.343-3-3-3z"/><path fill="#DA2F47" d="M16 7c1.1 0 1.263-.516.361-1.147L9.639 1.147c-.902-.631-2.085-.366-2.631.589 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f382.svg b/browser/components/torpreferences/content/bridgemoji/1f382.svg
new file mode 100644
index 0000000000000..35f9a002a9a7c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f382.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#8899A6" cx="18" cy="26" rx="18" ry="10"/><ellipse fill="#CCD6DD" cx="18" cy="24.25" rx="18" ry="10"/><path fill="#DD2E44" d="M32.675 23.685c0 4.26-6.57 7.712-14.675 7.712S3.325 27.945 3.325 23.685c0-4.258 6.57-7.711 14.675-7.711 8.104 0 14.675 3.453 14.675 7.711z"/><path fill="#F4ABBA" d="M32.233 22.543c0 9.854-28.466 9.854-28.466 0v-8.759h28.466v8.759z"/><path fill="#DD2E44" d="M17.984 18.166c-8.984 0-14.218-4.1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f383.svg b/browser/components/torpreferences/content/bridgemoji/1f383.svg
new file mode 100644
index 0000000000000..591fc66a439db
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f383.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M32.664 8.519C29.364 5.134 23.42 4.75 18 4.75S6.636 5.134 3.336 8.519C.582 11.344 0 15.751 0 19.791c0 5.263 1.982 11.311 6.357 14.244C9.364 36.051 13.95 35.871 18 35.871s8.636.18 11.643-1.836C34.018 31.101 36 25.054 36 19.791c0-4.04-.582-8.447-3.336-11.272z"/><path fill="#3F7123" d="M20.783 5.444c.069.42-.222.764-.647.764h-4.451c-.426 0-.717-.344-.647-.764l.745-4.472c.07-.421.476-.764.902-.764h2.451c.426 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f388.svg b/browser/components/torpreferences/content/bridgemoji/1f388.svg
new file mode 100644
index 0000000000000..6d431bc8568de
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f388.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FCAB40" d="M27.999 36c-.448 0-.855-.303-.969-.758-.036-.136-.926-3.436-4.273-4.272C18.054 29.794 18 23.277 18 23c0-.552.447-.998.998-.999.554.034 1 .445 1.002.997 0 .053.054 5.234 3.242 6.032 4.53 1.132 5.682 5.54 5.727 5.728.135.535-.191 1.078-.727 1.212-.081.02-.163.03-.243.03z"/><path fill="#BB1A34" d="M18 25c-1.1 0-1.598-.805-1.105-1.789l1.211-2.422c.492-.984 1.297-.984 1.789 0l1.211 2.422C21.598 24.195 21.1 25 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f389.svg b/browser/components/torpreferences/content/bridgemoji/1f389.svg
new file mode 100644
index 0000000000000..a4b8305af6be3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f389.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M11.626 7.488c-.112.112-.197.247-.268.395l-.008-.008L.134 33.141l.011.011c-.208.403.14 1.223.853 1.937.713.713 1.533 1.061 1.936.853l.01.01L28.21 24.735l-.008-.009c.147-.07.282-.155.395-.269 1.562-1.562-.971-6.627-5.656-11.313-4.687-4.686-9.752-7.218-11.315-5.656z"/><path fill="#EA596E" d="M13 12L.416 32.506l-.282.635.011.011c-.208.403.14 1.223.853 1.937.232.232.473.408.709.557L17 17l-4-5z"/><path fill="# [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f38f.svg b/browser/components/torpreferences/content/bridgemoji/1f38f.svg
new file mode 100644
index 0000000000000..5457d1e8d5f12
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f38f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M3 3h2v33H3z"/><circle fill="#F4900C" cx="4" cy="3" r="3"/><path fill="#66757F" d="M9 28H4c-.552 0-1-.447-1-1s.448-1 1-1h5c.552 0 1 .447 1 1s-.448 1-1 1z"/><path fill="#DD2E44" d="M31 27c0-2.209 6.209-6 4-6h-8.447c-1.203-1.464-4.595-3-7.053-3-2.459 0-3.23 1.536-3.435 3H10c-2.209 0-3 1.791-3 4v4c0 2.209.791 4 3 4h25c2.209 0-4-3.791-4-6z"/><circle fill="#FFF" cx="12" cy="25" r="3"/><circle cx="11.5" cy="24. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f392.svg b/browser/components/torpreferences/content/bridgemoji/1f392.svg
new file mode 100644
index 0000000000000..f44d568064f51
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f392.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path d="M11.946 27C-1.036 7.876 7.524 2.752 9.114 2c.149-.07.242-.105.245-.107.418-.209.638-.675.529-1.125C9.779.318 9.372 0 8.903 0H4.847C1.054 0-4.282 11 5.859 28c.151.253 5.073 0 5.073 0 .559 0 1.324-.541 1.014-1zM31.229 0h-4c-.462 0-.863.318-.971.768-.107.45.109.916.521 1.125.004.002.095.037.242.107 1.568.752 10.01 5.876-2.792 25-.307.459.448 1 1 1 0 0 4.854.253 5.002 0 10-17 4.739-28 .998-28z" fill="#C1694F"/><path d="M6.8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f399.svg b/browser/components/torpreferences/content/bridgemoji/1f399.svg
new file mode 100644
index 0000000000000..07881e4aabe6a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f399.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M6 15h24v2H6zm15 15c0 2.208-.792 4-3 4-2.209 0-3-1.792-3-4s.791-2 3-2c2.208 0 3-.208 3 2z"/><path fill="#66757F" d="M18 31c-6.627 0-10 1.343-10 3v2h20v-2c0-1.657-3.373-3-10-3z"/><path fill="#99AAB5" d="M18 0c-4.971 0-9 4.029-9 9v7h18V9c0-4.971-4.029-9-9-9z"/><g fill="#292F33"><circle cx="15.5" cy="2.5" r="1.5"/><circle cx="20.5" cy="2.5" r="1.5"/><circle cx="17.5" cy="6.5" r="1.5"/><circle cx="22.5" cy="6 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f39f.svg b/browser/components/torpreferences/content/bridgemoji/1f39f.svg
new file mode 100644
index 0000000000000..984f270649422
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f39f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EA596E" d="M26.751 8.007c1.364 1.365 3.364 1.708 5.046 1.032l3.613 3.611c.737.74.738 1.938-.004 2.68L15.319 35.405c-.743.739-1.94.737-2.681 0l-3.606-3.612c.672-1.684.33-3.682-1.032-5.047-1.367-1.365-3.364-1.707-5.047-1.032l-2.359-2.36c-.74-.737-.742-1.938 0-2.68L20.678.596c.739-.74 1.936-.741 2.679.002l2.361 2.361c-.677 1.683-.331 3.681 1.033 5.048z"/><path fill="#BE1931" d="M5.42 18.527l-2.149 2.148c-.739.739-.741 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3a0.svg b/browser/components/torpreferences/content/bridgemoji/1f3a0.svg
new file mode 100644
index 0000000000000..35c75b6970344
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3a0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M24.357 16.337s2.248-3.959 4.805-4.169c2.557-.21 3.929.934 4.144 3.432.287 3.334-.878 3.802-.033 7.53 0 0-3.546-2.414-2.421-6.07 1.172-3.806-4.81-3.095-3.835.316l-2.66-1.039z"/><path fill="#FFCC4D" d="M14.31 20.375c-.553 0-1 .448-1 1v13.563c0 .552.447 1 1 1s1-.448 1-1V21.375c0-.552-.448-1-1-1z"/><path fill="#F4900C" d="M15.31 25.77l-2 1.047v2.257l2-1.047zm-2 8.054l2-1.047V30.52l-2 1.047z"/><path fill="#88 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3a1.svg b/browser/components/torpreferences/content/bridgemoji/1f3a1.svg
new file mode 100644
index 0000000000000..c35744ab8c82f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3a1.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M30.806 15.347H19.201l8.205-8.205-.707-.707-8.205 8.205V3.036h-1V14.64L9.288 6.435l-.707.707 8.206 8.205H5.182v1h11.605l-8.206 8.206.707.707 8.206-8.206v11.605h1V17.055l8.205 8.205.707-.707-8.205-8.206h11.605z"/><path fill="#AAB8C2" d="M17.994 1.394c-7.982 0-14.453 6.471-14.453 14.453 0 7.982 6.471 14.453 14.453 14.453 7.983 0 14.454-6.471 14.454-14.453-.001-7.982-6.472-14.453-14.454-14.453zm0 26.683c-6.7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3a2.svg b/browser/components/torpreferences/content/bridgemoji/1f3a2.svg
new file mode 100644
index 0000000000000..256d8afb7df44
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3a2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M32.612 16.645v-1h-4.083V8.333h-1v7.312h-3.11v1h3.11v4H18.55v-4.604h-1v4.604H12.8v1h4.75v4H8.612v-3.208h-1v3.208H2.205v1h5.407v4H2.205v1h5.407V36h1v-4.355h8.938V36h1v-4.355h8.979V36h1v-4.355h4.083v-1h-4.083v-4h4.083v-1h-4.083v-4h4.083v-1h-4.083v-4h4.083zm-24 14v-4h8.938v4H8.612zm18.917 0H18.55v-4h8.979v4zm0-5H18.55v-4h8.979v4z"/><path fill="#CCD6DD" d="M31.05 6.595h4V36h-4z"/><path fill="#8899A6" d="M34.0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3a8.svg b/browser/components/torpreferences/content/bridgemoji/1f3a8.svg
new file mode 100644
index 0000000000000..3bfdea0c95bfd
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3a8.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M18 3.143c-9.941 0-18 6.908-18 15.428 0 1.066.126 2.107.367 3.112C2.146 24.744 3.377 22.812 9 20c5.727-2.864 0 4-2 8-.615 1.23-.282 2.271.56 3.124C10.506 32.928 14.104 34 18 34c9.941 0 18-6.907 18-15.429 0-8.52-8.059-15.428-18-15.428zm2.849 24.447c-.395 1.346-2.46 1.924-4.613 1.291-2.153-.632-3.578-2.234-3.183-3.581.395-1.346 2.46-1.924 4.613-1.29 2.153.631 3.578 2.233 3.183 3.58z"/><circle fill="#5C913B" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3ac.svg b/browser/components/torpreferences/content/bridgemoji/1f3ac.svg
new file mode 100644
index 0000000000000..3a326766110ef
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3ac.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3F7123" d="M35.845 32c0 2.2-1.8 4-4 4h-26c-2.2 0-4-1.8-4-4V19c0-2.2 1.8-4 4-4h26c2.2 0 4 1.8 4 4v13z"/><path fill="#3F7123" d="M1.845 15h34v6h-34z"/><path fill="#CCD6DD" d="M1.845 15h34v7h-34z"/><path fill="#292F33" d="M1.845 15h4l-4 7v-7zm11 0l-4 7h7l4-7h-7zm14 0l-4 7h7l4-7h-7z"/><path fill="#CCD6DD" d="M.155 8.207L33.148 0l1.69 6.792L1.845 15z"/><path fill="#292F33" d="M.155 8.207l5.572 5.827L1.845 15 .155 8.207zm [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3af.svg b/browser/components/torpreferences/content/bridgemoji/1f3af.svg
new file mode 100644
index 0000000000000..073817f2f3163
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3af.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#DD2E44" cx="18" cy="18" r="18"/><circle fill="#FFF" cx="18" cy="18" r="13.5"/><circle fill="#DD2E44" cx="18" cy="18" r="10"/><circle fill="#FFF" cx="18" cy="18" r="6"/><circle fill="#DD2E44" cx="18" cy="18" r="3"/><path opacity=".2" d="M18.24 18.282l13.144 11.754s-2.647 3.376-7.89 5.109L17.579 18.42l.661-.138z"/><path fill="#FFAC33" d="M18.294 19c-.255 0-.509-.097-.704-.292-.389-.389-.389-1.018 0-1.407l.563-.563c. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3b2.svg b/browser/components/torpreferences/content/bridgemoji/1f3b2.svg
new file mode 100644
index 0000000000000..408f2f9206f7a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3b2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A0041E" d="M4 11v.137c0-.042.011-.084.015-.126L4 11zm13 11.137c-.146-.067-.287-.145-.412-.246L4.565 12.245C4.188 11.94 4 11.539 4 11.137v12.238c0 2.042 1.093 2.484 1.093 2.484l11.574 9.099c.205.161.377.259.528.318-.114-.174-.195-.375-.195-.604V22.137zm-8.773.363c-.994 0-2.033-1.007-2.319-2.25-.287-1.242.287-2.249 1.28-2.249.994 0 2.033 1.007 2.319 2.249.287 1.243-.286 2.25-1.28 2.25zM13.81 30c-.994 0-2.033-1.008-2.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3b6.svg b/browser/components/torpreferences/content/bridgemoji/1f3b6.svg
new file mode 100644
index 0000000000000..f13b3b8bfb9a7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3b6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5DADEC" d="M14.182.168L7.818 1.469C7.368 1.561 7 2.012 7 2.471v15.857C6.387 18.12 5.712 18 5 18c-2.762 0-5 1.741-5 3.889 0 2.147 2.238 3.889 5 3.889 2.713 0 4.908-1.683 4.985-3.777H10V6.477l4.182-.855c.45-.092.818-.543.818-1.002V.835c0-.459-.368-.76-.818-.667zm21 4l-6.363 1.301c-.451.092-.819.543-.819 1.002v15.857c-.613-.209-1.288-.328-2-.328-2.762 0-5 1.741-5 3.889 0 2.147 2.238 3.889 5 3.889 2.713 0 4.908-1.683 4. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3b7.svg b/browser/components/torpreferences/content/bridgemoji/1f3b7.svg
new file mode 100644
index 0000000000000..ed0f849e0d997
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3b7.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill-rule="evenodd" clip-rule="evenodd" fill="#FCAB40" d="M14 16L9 26s-1 2 1 2c1 0 2-2 2-2L26 7s2-4 8-1v2c-3-1-4 1-4 1L15 33s-2 3-7 3c-6 0-7-5-7-8 0-2 1-4 2-6s-2-6-2-6h13z"/><path fill="#FDCB58" d="M7.5 20C4.04 20 0 18.952 0 16c0-2.953 4.04-4 7.5-4s7.5 1.047 7.5 4c0 2.952-4.04 4-7.5 4z"/><circle fill="#CCD6DD" cx="19" cy="17" r="2"/><circle fill="#CCD6DD" cx="22" cy="13" r="2"/><circle fill="#CCD6DD" cx="25" cy="9" r="2"/> [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3b8.svg b/browser/components/torpreferences/content/bridgemoji/1f3b8.svg
new file mode 100644
index 0000000000000..22074a11f3f0d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3b8.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BB1A34" d="M21.828 20.559C19.707 21.266 19 17.731 19 17.731s.965-.968.235-1.829c1.138-1.137.473-1.707.473-1.707-1.954-1.953-5.119-1.953-7.071 0-.246.246-.414.467-.553.678-.061.086-.115.174-.17.262l-.014.027c-.285.475-.491.982-.605 1.509-.156.319-.379.659-.779 1.06-1.414 1.414-4.949-.707-7.778 2.121-.029.029-.045.069-.069.104-.094.084-.193.158-.284.25-3.319 3.319-3.003 9.018.708 12.728 3.524 3.525 8.84 3.979 12.209 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3ba.svg b/browser/components/torpreferences/content/bridgemoji/1f3ba.svg
new file mode 100644
index 0000000000000..454ab7818ac24
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3ba.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FCAB40" d="M5.622 33.051l-2.674-2.673L23.337 9.987c3.344-3.343 1.337-8.021 2.007-8.689.666-.67 1.335-.002 1.335-.002l8.023 8.023c.668.668 0 1.336 0 1.336-.669.67-5.778-.908-8.692 2.006L5.622 33.051z"/><path fill="#CCD6DD" d="M5.457 33.891c.925-.925.925-2.424 0-3.35-.924-.924-2.424-.924-3.349 0l.087.087c-.371-.334-.938-.331-1.296.027-.369.368-.369.968 0 1.336L4.008 35.1c.37.369.968.369 1.337 0 .355-.356.36-.919.032-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3bb.svg b/browser/components/torpreferences/content/bridgemoji/1f3bb.svg
new file mode 100644
index 0000000000000..efb7d5da7eeb5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3bb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F18F26" d="M23.912 12.087C22.219 10.394 20.318 9.5 18.415 9.5c-1.626 0-3.189.667-4.402 1.88-1.519 1.519-1.727 2.39-1.865 2.966-.071.295-.106.421-.255.57-.106.106-.155.256-.14.406.015.149.1.286.225.369.013.009.324.22.368.651.039.394-.13 1.08-1.16 2.11-.629.629-1.252.948-1.85.948-.981 0-1.649-.87-1.654-.877-.11-.15-.295-.226-.48-.197-.185.029-.337.159-.396.335-.221.663-.251.668-.535.709-.59.086-1.578.229-3.624 2.275C. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3be.svg b/browser/components/torpreferences/content/bridgemoji/1f3be.svg
new file mode 100644
index 0000000000000..323e5c462ecfb
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3be.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#77B255" cx="18" cy="18" r="18"/><path fill="#A6D388" d="M26 18c0 6.048 2.792 10.221 5.802 11.546C34.42 26.42 36 22.396 36 18c0-4.396-1.58-8.42-4.198-11.546C28.792 7.779 26 11.952 26 18z"/><path fill="#FFF" d="M27 18c0-6.048 1.792-10.221 4.802-11.546-.445-.531-.926-1.028-1.428-1.504C27.406 6.605 25 10.578 25 18c0 7.421 2.406 11.395 5.374 13.05.502-.476.984-.973 1.428-1.504C28.792 28.221 27 24.048 27 18z"/><path fil [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3c0.svg b/browser/components/torpreferences/content/bridgemoji/1f3c0.svg
new file mode 100644
index 0000000000000..24693956f6f9b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3c0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#F4900C" cx="18" cy="18" r="18"/><path fill="#231F20" d="M36 17h-8.981c.188-5.506 1.943-9.295 4.784-10.546-.445-.531-.926-1.027-1.428-1.504-2.83 1.578-5.145 5.273-5.354 12.049H19V0h-2v17h-6.021c-.208-6.776-2.523-10.471-5.353-12.049-.502.476-.984.972-1.428 1.503C7.039 7.705 8.793 11.494 8.981 17H0v2h8.981c-.188 5.506-1.942 9.295-4.783 10.546.445.531.926 1.027 1.428 1.504 2.831-1.578 5.145-5.273 5.353-12.05H17v17h2V1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3c6.svg b/browser/components/torpreferences/content/bridgemoji/1f3c6.svg
new file mode 100644
index 0000000000000..00457c31ea308
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3c6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M5.123 5h6C12.227 5 13 4.896 13 6V4c0-1.104-.773-2-1.877-2h-8c-2 0-3.583 2.125-3 5 0 0 1.791 9.375 1.917 9.958C2.373 18.5 4.164 20 6.081 20h6.958c1.105 0-.039-1.896-.039-3v-2c0 1.104-.773 2-1.877 2h-4c-1.104 0-1.833-1.042-2-2S3.539 7.667 3.539 7.667C3.206 5.75 4.018 5 5.123 5zm25.812 0h-6C23.831 5 22 4.896 22 6V4c0-1.104 1.831-2 2.935-2h8c2 0 3.584 2.125 3 5 0 0-1.633 9.419-1.771 10-.354 1.5-2.042 3-4 3h- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3c8.svg b/browser/components/torpreferences/content/bridgemoji/1f3c8.svg
new file mode 100644
index 0000000000000..4f5530d29087a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3c8.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M7.754 7.754C4.068 11.44 1.64 16.37.843 21.335l13.822 13.822c4.965-.797 9.895-3.225 13.581-6.911s6.114-8.616 6.911-13.581L21.335.843C16.37 1.64 11.44 4.068 7.754 7.754zm25.615-5.123C30.707 1.152 27.634.51 24.472.564l10.965 10.964c.053-3.162-.589-6.235-2.068-8.897zM2.631 33.369c2.662 1.479 5.736 2.121 8.898 2.067L.564 24.472c-.054 3.161.588 6.235 2.067 8.897z"/><path fill="#E1E8ED" d="M22.828 11.757l-2.414 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3d3.svg b/browser/components/torpreferences/content/bridgemoji/1f3d3.svg
new file mode 100644
index 0000000000000..6201ef5ae20b7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3d3.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M23.106 5.971C17.615.48 8.384-.521 3.307 4.557-1.77 9.634-.77 18.865 4.721 24.356c3.554 3.554 7.785 4.323 11.707 3.058l-.015.013.13-.052c.264-.088.527-.179.788-.284.698-.238 1.734-.558 2.942-.806 1.848-.38 3.541 1.606 4.955 3.021 1.414 1.414 4.242 5.657 4.949 6.364.707.707 1.414 0 2.122-.707l.707-.707.707-.707c.707-.708 1.414-1.415.707-2.122-.707-.707-4.95-3.535-6.364-4.949-1.414-1.414-3.4-3.107-3.021-4.9 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3d4.svg b/browser/components/torpreferences/content/bridgemoji/1f3d4.svg
new file mode 100644
index 0000000000000..8b78f31e4c642
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3d4.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M19.083 35.5L12.25 12.292s-1.42.761-2.604 1.637c-.313.231-1.977 2.79-2.312 3.04-1.762 1.315-3.552 2.841-3.792 3.167C3.083 20.76 0 36 0 36l19.083-.5z"/><path fill="#4B545D" d="M32 35l-5.5-19.75L18 4.542l-5.373 4.193-.971 1.172C11.25 10.688 10 15.25 10 15.25L8.75 20 3.252 30.054.917 34.791 32 35z"/><path fill="#FFF" d="M3.252 30.054s7.873-10.783 7.894-11.388C11.167 18.062 10 15.25 10 15.25L8.75 20 3.252 30. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3d5.svg b/browser/components/torpreferences/content/bridgemoji/1f3d5.svg
new file mode 100644
index 0000000000000..7a2fb80eddb76
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3d5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#78B159" d="M18 25.18C3.438 25.18 0 29.844 0 32s1.791 4 4 4h28c2.209 0 4-1.851 4-4s-3.438-6.82-18-6.82z"/><path fill="#662113" d="M28.804 28.15c0 1.531-1.242 2.08-2.773 2.08-1.531 0-2.773-.548-2.773-2.08l.693-6.239c0-1.531.548-1.387 2.08-1.387 1.531 0 2.08-.145 2.08 1.387l.693 6.239z"/><path fill="#5C913B" d="M34.868 19.717c-4.59-4.135-6.449-10.056-8.837-10.056s-4.247 5.921-8.836 10.056c-1.929 1.738-1.01 2.743 1.634 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3dd.svg b/browser/components/torpreferences/content/bridgemoji/1f3dd.svg
new file mode 100644
index 0000000000000..d66d8d477b43a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3dd.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#3B88C3" cx="18" cy="30.54" rx="18" ry="5.36"/><path fill="#88C9F9" d="M33.812 28.538c0 1.616-2.5 2.587-14.482 2.587-10.925 0-13.612-.971-13.612-2.587s5.683-2.926 13.612-2.926 14.482 1.31 14.482 2.926z"/><path fill="#F4900C" d="M7 28.25c0-1 1-5 11-5 12 0 15 4 15 5s0 2-14 2c-12 0-12-1-12-2z"/><circle fill="#FFCC4D" cx="7" cy="6.25" r="5"/><circle fill="#FFAC33" cx="7" cy="6.25" r="4"/><path fill="#C1694F" d="M26.94 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3e1.svg b/browser/components/torpreferences/content/bridgemoji/1f3e1.svg
new file mode 100644
index 0000000000000..b44b7288b1d66
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3e1.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M36 33.5c0 .828-.672 1.5-1.5 1.5h-33C.672 35 0 34.328 0 33.5S.672 32 1.5 32h33c.828 0 1.5.672 1.5 1.5z"/><path fill="#A0041E" d="M12.344 14.702h-2c-.276 0-.5-.224-.5-.5v-7c0-.276.224-.5.5-.5h2c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5z"/><path fill="#FFCC4D" d="M5.942 32c-.137-4.657-.506-8-.942-8-.435 0-.804 3.343-.941 8h1.883z"/><path fill="#77B255" d="M10 18.731C10 24.306 7.762 26 5 26c-2.761 0-5-1.694-5-7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3ee.svg b/browser/components/torpreferences/content/bridgemoji/1f3ee.svg
new file mode 100644
index 0000000000000..a825f2b79b1c3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3ee.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M29 34c0 1.104-.896 2-2 2H9c-1.104 0-2-.896-2-2V2c0-1.104.896-2 2-2h18c1.104 0 2 .896 2 2v32z"/><path fill="#BE1931" d="M6.699 32h22.602C33.383 28.7 35 23.658 35 18c0-5.658-1.616-10.7-5.698-14H6.698C2.615 7.3 1 12.342 1 18c0 5.658 1.616 10.7 5.699 14z"/><path d="M1.301 22c.108.682.245 1.35.415 2h32.568c.17-.65.307-1.318.415-2H1.301zm-.229-2h33.855c.049-.657.073-1.324.073-2H1c0 .676.024 1.343.072 2zm31.605 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3f7.svg b/browser/components/torpreferences/content/bridgemoji/1f3f7.svg
new file mode 100644
index 0000000000000..60462664ebd6c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3f7.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFD983" d="M32.017 20.181L17.345 5.746C16.687 5.087 15.823 5 14.96 5H4.883C3.029 5 2 6.029 2 7.883v10.082c0 .861.089 1.723.746 2.38L17.3 35.017c1.311 1.31 3.378 1.31 4.688 0l10.059-10.088c1.31-1.312 1.28-3.438-.03-4.748zm-23.596-8.76c-.585.585-1.533.585-2.118 0s-.586-1.533 0-2.118c.585-.586 1.533-.585 2.118 0 .585.586.586 1.533 0 2.118z"/><path fill="#D99E82" d="M9.952 7.772c-1.43-1.431-3.749-1.431-5.179 0-1.431 1.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3f8.svg b/browser/components/torpreferences/content/bridgemoji/1f3f8.svg
new file mode 100644
index 0000000000000..143f8eaedb2dc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3f8.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M30.385 29c.382.382.382 1.002 0 1.385-.383.382-1.003.382-1.385 0L15.5 16.884c-.382-.382-.382-1.002 0-1.384.382-.382 1.001-.382 1.384 0L30.385 29z"/><path fill="#292F33" d="M35.561 33.439c.586.586.586 1.536 0 2.121-.585.586-1.535.586-2.121 0l-5.656-5.656c-.586-.586-.586-1.536 0-2.121.585-.586 1.535-.586 2.121 0l5.656 5.656z"/><g fill="#99AAB5"><path d="M2.447 5.2l.707-.707L15.178 16.51l-.707.707zm1.417-2.8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f3f9.svg b/browser/components/torpreferences/content/bridgemoji/1f3f9.svg
new file mode 100644
index 0000000000000..37922127ee965
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f3f9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M21.279 4.28c-9 0-10.5 1.5-13 4s-4 4-4 13c0 11.181-2 14-1 14s3-2 3-4-2-13 5-20h-.001c7-6.999 18-5 20-5s4-2 4-3-2.818 1-13.999 1z"/><path fill="#D99E82" d="M29.5 29.779c0 .276-.224.5-.5.5H3.78c-.276 0-.5-.224-.5-.5s.224-.5.5-.5H29c.276 0 .5.224.5.5zm.279-.279c-.277 0-.5-.225-.5-.5V3.779c0-.276.223-.5.5-.5.275 0 .5.224.5.5V29c0 .275-.224.5-.5.5z"/><path fill="#99AAB5" d="M0 0l2.793 8.52L4.93 4.955l3.52-2.09 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f40a.svg b/browser/components/torpreferences/content/bridgemoji/1f40a.svg
new file mode 100644
index 0000000000000..a9a6debcc432f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f40a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M19 32c0 1-1.723 3-3.334 3C14.056 35 14 33.657 14 32s1.306-3 2.916-3C18.527 29 19 30.343 19 32zm11 0c0 1-1.723 3-3.334 3C25.056 35 25 33.657 25 32s1.306-3 2.916-3C29.527 29 30 30.343 30 32z"/><path fill="#5C913B" d="M36 25c0-6-3.172-9.171-6-12-1-1-1.399.321-1 1 .508.862 3 8-2 8h-2c-5 0-6.172-1.172-9-4-4.5-4.5-7 0-9 0-6 0-7-1.812-7 2 0 3 3 4 6 4s3 1 5 4c1.071 1.606 2.836 3.211 5.023 4.155.232 1.119 2.774 3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f40c.svg b/browser/components/torpreferences/content/bridgemoji/1f40c.svg
new file mode 100644
index 0000000000000..2c63658289aed
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f40c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#9266CC" d="M9 15.561c0-4 2-8 0-10s-3 2-2 2c1.414 0 2 2 1 5s1 3.999 1 3zm-3.875 0c0-4 2-8 0-10s-3 2-2 2c1.414 0 2 2 1 5s1 3.999 1 3z"/><path fill="#AA8DD8" d="M36 34.936c0 1-1 1-2 1H11c-5 0-7.272-3.09-8-6-1-4 2-11 0-12s-3-1-3-3 4.47-5.265 7-4c4 2 2.767 6.932 2 10-.88 3.522 1.115 3.594 5 5 4.94 1.787 12.32 4.44 14 5 3 1 8 3 8 4z"/><path fill="#FFCC4D" d="M10.925 24.935c2.887 1 3.849 9 13.472 9 6.377 0 8.66-5.479 8.66- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f40d.svg b/browser/components/torpreferences/content/bridgemoji/1f40d.svg
new file mode 100644
index 0000000000000..17531783ba93d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f40d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M11.84 7.634c-.719 0-2.295 2.243-3.567 1.029-.44-.419 1.818-1.278 1.727-2.017-.075-.607-2.842-1.52-1.875-2.099.967-.578 2.418.841 3.513.866 2.382.055 4.212-.853 4.238-.866.541-.274 1.195-.052 1.464.496.27.547.051 1.213-.488 1.486-.131.066-2.225 1.105-5.012 1.105z"/><path fill="#77B255" d="M27.818 36c-3.967 0-8.182-2.912-8.182-8.308 0-1.374-.89-1.661-1.637-1.661-.746 0-1.636.287-1.636 1.661 0 5.396-4.216 8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f417.svg b/browser/components/torpreferences/content/bridgemoji/1f417.svg
new file mode 100644
index 0000000000000..ad7a77db82d7c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f417.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M33.359 13.254c1.434-3.462 2.06-11.534 1.262-12.004-.704-.416-5.641 1.084-8.34 3.205C23.883 2.909 21.085 2 18 2c-3.085 0-5.883.91-8.281 2.455C7.02 2.334 2.082.834 1.378 1.25c-.797.47-.171 8.543 1.263 12.004C1.59 15.818 1 18.623 1 21.479 1 31.468 2 36 18 36s17-4.532 17-14.521c0-2.856-.59-5.662-1.641-8.225z"/><path fill="#662113" d="M32.878 12.157c.929-3.252 1.081-7.708.524-8.037-.411-.243-2.78.633-5.009 1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f418.svg b/browser/components/torpreferences/content/bridgemoji/1f418.svg
new file mode 100644
index 0000000000000..fb9656cd18f0b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f418.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M34.453 15.573c-.864-7.3-5.729-10.447-13.93-10.447-.391 0-.763.017-1.139.031-.013-.01-.022-.021-.035-.031C14.655 1.605 4.091 2.779 1.745 6.3c-3.255 4.883-1.174 22.3 0 24.646 1.173 2.35 4.694 3.521 5.868 2.35 1.174-1.176 0-1.176-1.173-3.521-.85-1.701-.466-5.859.255-8.471.028.168.068.322.1.486.39 2.871 1.993 7.412 1.993 9.744 0 3.564 2.102 4.107 4.694 4.107 2.593 0 4.695-.543 4.695-4.107 0-.24-.008-.463-.01 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f419.svg b/browser/components/torpreferences/content/bridgemoji/1f419.svg
new file mode 100644
index 0000000000000..d915a8fd2e6b6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f419.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#553788" d="M10 12c3 5 0 10.692-3 9.692s-4 2-1 3 9.465-.465 13-4c1-1 2-1 2-1L10 12z"/><path fill="#553788" d="M26 12c-3 5 0 10.692 3 9.692s4 2 1 3-9.465-.465-13-4c-1-1-2-1-2-1L26 12z"/><path fill="#744EAA" d="M30.188 16c-3 5 0 10.692 3 9.692s4 2 1 3-9.465-.465-13-4c-1-1-2-1-2-1l11-7.692zM5.812 16c3 5 0 10.692-3 9.692s-4 2-1 3 9.465-.465 13-4c1-1 2-1 2-1L5.812 16z"/><path fill="#9266CC" d="M33.188 31.375c-2.729.91-6.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f41a.svg b/browser/components/torpreferences/content/bridgemoji/1f41a.svg
new file mode 100644
index 0000000000000..804ece8811a33
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f41a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M29.049 7.033c-.07-.07-.141-.126-.211-.188-1.08-1.087-2.497-1.564-4.008-1.373l-3.812.483c-.382-3.003-2.25-4.446-4.351-4.181l-4.24.536C12.075.767 11.011.034 9.827.185L5.033.79C3.71.958 2.773 2.438 2.94 4.097l.606 6.007c.152 1.501 1.425 2.591 2.403 2.693l.514 5.093c.258 2.553 2.509 4.365 4.117 4.38l.498 4.926c.164 1.622.928 3.027 1.917 4.063.23.339.471.656.737.922 4.423 4.423 12.183 5.064 16.607.64 4.42-4.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f41b.svg b/browser/components/torpreferences/content/bridgemoji/1f41b.svg
new file mode 100644
index 0000000000000..f8986dd7818b9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f41b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AA8DD8" d="M7.415 4c1-1 .25-4-1.438-4s-1.562 2-.562 2 1 2 1 3 1-1 1-1zM3.232 5.72c1-1 .25-4-1.438-4s-1.562 2-.562 2 1 2 1 3 1-1 1-1z"/><path fill="#744EAA" d="M29.607 32.856c.189.808 1.227 2.28 2.032 2.091.806-.19 1.077-1.971.888-2.777-.189-.808-.998-1.307-1.804-1.117-.805.19-1.306.997-1.116 1.803zm-5.434.649c.003.83.681 2.498 1.509 2.495.828-.004 1.494-1.677 1.491-2.506-.003-.829-.677-1.497-1.505-1.495-.828.004-1.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f41d.svg b/browser/components/torpreferences/content/bridgemoji/1f41d.svg
new file mode 100644
index 0000000000000..31e78828044a0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f41d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#31373D" d="M27.816 23.464c.299-1.148.465-2.318.465-3.464 0-4.161-2.122-6.779-5.258-8.035.417-1.008.665-2.108.665-3.2 0-1.581-.495-2.498-1.315-3.032 1.091-.482 2.517-1.5 3.027-2.011.781-.781.94-1.889.354-2.475-.586-.586-1.693-.428-2.475.354-.611.611-1.948 2.53-2.223 3.619C20.172 5.025 19.126 5 18 5c-1.125 0-2.172.025-3.055.219-.275-1.089-1.612-3.007-2.223-3.619-.781-.781-1.889-.94-2.475-.354-.585.587-.427 1.694.354 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f41e.svg b/browser/components/torpreferences/content/bridgemoji/1f41e.svg
new file mode 100644
index 0000000000000..f314ca9a208e7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f41e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path d="M35 21H1c-.552 0-1-.447-1-1s.448-1 1-1h34c.553 0 1 .447 1 1s-.447 1-1 1zm-22.177-2l-.069-.002c-.092-.007-9.214-.714-10.734-8.235-.109-.542.241-1.069.782-1.178.543-.113 1.069.241 1.178.782 1.221 6.044 8.833 6.631 8.91 6.636.551.038.967.515.93 1.066-.036.527-.476.931-.997.931zM3 31c-.142 0-.286-.03-.423-.094-.5-.234-.716-.829-.482-1.33 3.166-6.77 11.038-7.721 11.372-7.758.548-.056 1.042.334 1.103.882.062.548-.332 1.043-.8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f41f.svg b/browser/components/torpreferences/content/bridgemoji/1f41f.svg
new file mode 100644
index 0000000000000..7d9ef4108b41a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f41f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3B88C3" d="M32.153 24c0-1 1.523-6.212 3.047-7.735 1.522-1.523 0-3.166-1.523-3.166-3.405 0-9.139 6.901-9.139 10.901 0 5 5.733 10.424 9.139 10.424 1.523 0 3.046-1.404 1.523-2.928C33.677 29.974 32.153 26 32.153 24z"/><path fill="#3B88C3" d="M9.021 14.384c0-3.046 1.497-6.093 3.02-6.093 4.569 0 13.322 4.823 14.845 12.439 1.524 7.616-17.865-6.346-17.865-6.346zm4.854 18.278c1.523 1.523 4.57 3.047 7.617 3.047 3.046 0-3.111- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f420.svg b/browser/components/torpreferences/content/bridgemoji/1f420.svg
new file mode 100644
index 0000000000000..ccc11c48d0243
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f420.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M8.231 10c6-8 14-10 18-10 1 0 1 1 0 1s-6 2-7 9-11 0-11 0zm-1 18c4 3 13 8 18 8 3 0 2-1 1-1s-9-3-10-7-9 0-9 0z"/><path fill="#FFCC4D" d="M35 9c-1.611 0-4.059 2.972-5.268 6.294-1.475-5.62-6.166-10.739-12.945-10.739-8.273 0-12.061 10.216-14.524 14.479-.629 1.091-4.091 1.034-.989 3.103-3.103 2.068.449 2.243 1.222 3.103 2.625 2.92 8.997 6.205 14.291 6.205 5.655 0 11.12-3.786 12.863-8.958C30.828 25.896 33.353 29 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f422.svg b/browser/components/torpreferences/content/bridgemoji/1f422.svg
new file mode 100644
index 0000000000000..fe4b659ee0fcc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f422.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M9.842 19.922c0 9.842 6.575 9.673 5.158 10.078-7 2-8.803-7.618-9.464-7.618-2.378 0-5.536-.423-5.536-2.46C0 17.883 2.46 15 6.151 15c2.379 0 3.691 2.883 3.691 4.922zM36 28.638c0 1.104-3.518-.741-5 0-2 1-2-.896-2-2s1.343-1 3-1 4 1.895 4 3z"/><path fill="#77B255" d="M16.715 33.143c0 2.761-1.279 2.857-2.857 2.857S11 35.903 11 33.143c0-.489.085-1.029.234-1.587.69-2.59 2.754-5.556 4.052-5.556 1.578 0 1.429 4.382 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f425.svg b/browser/components/torpreferences/content/bridgemoji/1f425.svg
new file mode 100644
index 0000000000000..bcbd2181bb0a6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f425.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M17.38 33.098c-.097-.18-.25-.302-.417-.391C15.366 31.001 16.5 29 16.5 29c0-.553 1-2 0-2l-1 1c-1 1-1 4-1 4h-2c-.553 0-1 .447-1 1s.447 1 1 1h1.108l-.222.12c-.486.263-.667.869-.404 1.355s.869.667 1.356.404l2.639-1.427c.485-.262.666-.868.403-1.354zM23.5 32h-2s0-3-1-4l-1-1c-1 0 0 1.447 0 2 0 0 1.135 2.001-.462 3.707-.168.089-.32.211-.418.391-.263.486-.082 1.093.404 1.355l2.639 1.427c.486.263 1.093.082 1.356-.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f426.svg b/browser/components/torpreferences/content/bridgemoji/1f426.svg
new file mode 100644
index 0000000000000..06d93a9162da3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f426.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M8.916 12.88c-.111 1.652 1.768 3.126-.712 2.959-2.48-.167-7.836-2.533-7.768-3.53s3.708-2.757 6.188-2.59c2.48.166 2.404 1.508 2.292 3.161zm20.122 16.049c-.202-.032-.392.015-.564.095-2.325.232-3.225-1.885-3.225-1.885-.439-.336-.981-2.009-1.589-1.215l.187 1.402c.187 1.402 2.57 3.224 2.57 3.224l-1.215 1.589c-.336.439-.252 1.066.187 1.402.439.336 1.066.252 1.402-.187l.673-.88-.039.249c-.087.546.285 1.058.831 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f428.svg b/browser/components/torpreferences/content/bridgemoji/1f428.svg
new file mode 100644
index 0000000000000..1da7190a6813b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f428.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M36 13.533C36 8.867 32.866 7 29 7c-1.621 0-3.285.354-4.676 1.027C22.523 6.798 20.405 6.062 18 6.062s-4.523.736-6.324 1.965C10.285 7.354 8.621 7 7 7c-3.866 0-7 1.867-7 6.533 0 3.844 2.128 6.417 5.038 7.206-.043.536-.068 1.073-.068 1.611 0 5.729 4.52 7.675 8.581 8.326C14.649 31.487 16.232 32 18 32s3.351-.513 4.449-1.323c4.062-.651 8.581-2.597 8.581-8.326 0-.538-.025-1.075-.068-1.611 2.91-.79 5.038-3.363 5.0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f42a.svg b/browser/components/torpreferences/content/bridgemoji/1f42a.svg
new file mode 100644
index 0000000000000..278e144ffd3dc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f42a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M31.595 15.007c-1.75-3.623-5.934-9.053-9.531-9.053-4.071 0-8.228 7.259-10.071 10.378-.176.299-.321.578-.464.857-3.371-1.182-.536-6.631-.536-10.463 0-.957-.138-1.637-.44-2.119.489-.606.586-1.347.192-1.699-.413-.367-1.195-.163-1.745.456-.08.089-.129.186-.189.28-.424-.067-.903-.102-1.472-.102-.565 0-2.916.266-4.229.791C-.007 5.582.993 9 1.993 9h4c1 0 .756 2.31 0 4.726-.83 2.654-1.439 5.145-1 6.606.808 2.687 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f42c.svg b/browser/components/torpreferences/content/bridgemoji/1f42c.svg
new file mode 100644
index 0000000000000..ee782f2f20e25
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f42c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#4292E0" d="M30.584 7.854c.27-1.729 1.028-3.908 2.975-5.854.704-.704.25-2-1-2 0 0-6.061.007-9.893 3.327C21.663 3.115 20.625 3 19.559 3c-8 0-12 4-14 12-.444 1.778-.865 1.399-3 3-1.195.896-2.117 3 1 3 3 0 5 .954 9 1 3.629.042 9.504-3.229 11.087-1.292 2.211 2.706 1.396 5.438.597 6.666-2.904 3.396-5.939.541-8.685-.374-3-1-1 1 0 2s1.312 4 0 6 3 0 5-3c.011-.017.022-.028.032-.045C28.392 31.5 34.559 25.936 34.559 18c0-3.918- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f42d.svg b/browser/components/torpreferences/content/bridgemoji/1f42d.svg
new file mode 100644
index 0000000000000..91e126242bda5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f42d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#99AAB5" cx="8.5" cy="9.5" r="8.5"/><circle fill="#99AAB5" cx="27.5" cy="9.5" r="8.5"/><path fill="#F4ABBA" d="M13.812 10.031c0 3.228-2.617 5.844-5.844 5.844s-5.844-2.616-5.844-5.844c0-3.227 2.617-5.844 5.844-5.844s5.844 2.617 5.844 5.844zm20.063 0c0 3.228-2.617 5.844-5.844 5.844-3.227 0-5.844-2.616-5.844-5.844 0-3.227 2.617-5.844 5.844-5.844 3.227.001 5.844 2.617 5.844 5.844z"/><path fill="#99AAB5" d="M30 18c0 7.1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f42e.svg b/browser/components/torpreferences/content/bridgemoji/1f42e.svg
new file mode 100644
index 0000000000000..40fede032f581
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f42e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M4 8s-4 2-4 11c0 0 6-1 7-3 0 0 2-12.25-3-8zm27.995.043s4 2 4 11c0 0-6-.999-7-2.999 0 0-2-12.251 3-8.001z"/><path fill="#FFE8B6" d="M1 1c-1.01.99 1 8 5 9s4-5 3-5C5 5 3.042-1 1 1zm34.297 0c1.011.99-1 8-5 9s-4-5-3-5c4 0 5.959-6 8-4z"/><path fill="#CCD6DD" d="M21.976 31h-7.951C8.488 31 4 26.512 4 20.976v-8.951C4 6.488 8.488 2 14.025 2h7.951C27.512 2 32 6.488 32 12.025v8.951C32 26.512 27.512 31 21.976 31z"/><p [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f42f.svg b/browser/components/torpreferences/content/bridgemoji/1f42f.svg
new file mode 100644
index 0000000000000..5ecd980c51305
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f42f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#FFCC4D" cx="7" cy="6" r="6"/><circle fill="#FFCC4D" cx="18" cy="30" r="6"/><circle fill="#DD2E44" cx="18" cy="30" r="4"/><circle fill="#FFCC4D" cx="29" cy="6" r="6"/><circle fill="#E6AAAA" cx="7" cy="6" r="4"/><circle fill="#E6AAAA" cx="29" cy="6" r="4"/><path fill="#FFCC4D" d="M34 22c0 7-4.923 7-4.923 7H6.923S2 29 2 22C2 22 3.231 0 18 0c14.77 0 16 22 16 22z"/><path fill="#272B2B" d="M11 17s0-2 2-2 2 2 2 2v2s0 2-2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f430.svg b/browser/components/torpreferences/content/bridgemoji/1f430.svg
new file mode 100644
index 0000000000000..2f70f9669ff74
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f430.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M33.799.005c-.467-.178-7.998 3.971-9.969 9.131-1.166 3.052-1.686 6.058-1.652 8.112C20.709 16.459 19.257 16 18 16s-2.709.458-4.178 1.249c.033-2.055-.486-5.061-1.652-8.112C10.2 3.977 2.668-.173 2.201.005c-.455.174 4.268 16.044 7.025 20.838C6.805 23.405 5 26.661 5 29.828c0 3.234 1.635 5.14 4 5.94 2.531.857 5-.94 9-.94s6.469 1.798 9 .94c2.365-.801 4-2.706 4-5.94 0-3.166-1.805-6.423-4.225-8.984C29.53 16.049 34 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f431.svg b/browser/components/torpreferences/content/bridgemoji/1f431.svg
new file mode 100644
index 0000000000000..cc75dcc68f5a8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f431.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M32.348 13.999s3.445-8.812 1.651-11.998c-.604-1.073-8 1.998-10.723 5.442 0 0-2.586-.86-5.276-.86s-5.276.86-5.276.86C10.001 3.999 2.605.928 2.001 2.001.207 5.187 3.652 13.999 3.652 13.999c-.897 1.722-1.233 4.345-1.555 7.16-.354 3.086.35 5.546.658 6.089.35.617 2.123 2.605 4.484 4.306 3.587 2.583 8.967 3.445 10.761 3.445s7.174-.861 10.761-3.445c2.361-1.701 4.134-3.689 4.484-4.306.308-.543 1.012-3.003.659-6.0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f432.svg b/browser/components/torpreferences/content/bridgemoji/1f432.svg
new file mode 100644
index 0000000000000..1c1b4347daa1c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f432.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M35.125 13.344c0-1 .771-2.327.771-2.635 0-.656-1.553-.421-1.626-1.046-.209-1.794 1.887-3.318-1.745-3.312-1.352.002-.274-1.768-.274-2.725 0-.957-2.596-.145-3.552-.145-.957 0-.957-2.87-1.913-2.87-2.87 0-3.827 2.87-4.783 2.87-.957 0-1.744-3.621-2.87-2.87-2.87 1.913-3.826 7.653-3.826 7.653s4.783-3.826 10.522-2.87c5.345.891 4.79 10.821 5.641 16.888L24.609 36h3.359c.344-1.5 1.939-.529 2.375-1.688.381-1.016-.67- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f433.svg b/browser/components/torpreferences/content/bridgemoji/1f433.svg
new file mode 100644
index 0000000000000..f00ea1033e029
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f433.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3B88C3" d="M32 12c2.122-2.122 5 14.312-3 21-2.757 2.305-6 2.969-8 2.969-2.371 0-10.029.031-13 .031-7.18 0-8-4.925-8-11s.82-11 8-11c6 0 10 2 13 3.996 4.977 3.312 5.992 3.861 8 2.004 3.213-2.97 1-6 3-8z"/><path fill="#55ACEE" d="M34.003 23c-.465 3.727-2.041 7.523-5.003 10-2.757 2.305-6 2.969-8 2.969-2.371 0-10.029.031-13 .031-4.035 0-6.062-1.555-7.062-3.996C.157 30.102 4 33 15 33c14 0 17-5 19.003-10z"/><path fill="#3B [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f434.svg b/browser/components/torpreferences/content/bridgemoji/1f434.svg
new file mode 100644
index 0000000000000..9aa7d69356ae7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f434.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M23.283 23.275s1.374 1.635 2.733 10.047c.143.883.201 1.775.217 2.678H36V7.448C31.613 3.975 25.601 3.259 18.322 5.69c0 0-5.408-3-6.147-3.739-.719-.72-1.857-1.556-1.235.35.364 1.112.764 2.373 2.358 4.862-3.436 2.036-4.513 4.68-8.558 13.341C1.652 27.12.08 29.269.937 31.797c1.13 3.337 5.316 5.595 8.844 3.021 1.919-1.4 2.246-3.913 6.225-6.223 3.653-.065 7.277-1.604 7.277-5.32z"/><path fill="#292F33" d="M36 6.0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f435.svg b/browser/components/torpreferences/content/bridgemoji/1f435.svg
new file mode 100644
index 0000000000000..ee6c57cf9e41a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f435.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse transform="rotate(-14.999 5.05 17.456)" fill="#D79E84" cx="5.05" cy="17.455" rx="3.818" ry="5.455"/><ellipse transform="rotate(-75.001 31.05 17.455)" fill="#D79E84" cx="31.05" cy="17.455" rx="5.455" ry="3.818"/><path fill="#BF6952" d="M19.018 36h-2.036C10.264 36 3.75 30.848 3.75 23.636c0-4.121 1.527-6.182 1.527-6.182s-.509-2.061-.509-4.121C4.768 7.152 11.282 2 18 2c6.718 0 13.232 6.182 13.232 11.333 0 2.061-.509 4.121-. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f436.svg b/browser/components/torpreferences/content/bridgemoji/1f436.svg
new file mode 100644
index 0000000000000..8b2e685804d95
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f436.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M15 27v6s0 3 3 3 3-3 3-3v-6h-6z"/><path fill="#BE1931" d="M15 33l.001.037c1.041-.035 2.016-.274 2.632-1.286.171-.281.563-.281.735 0 .616 1.011 1.591 1.251 2.632 1.286V27h-6v6z"/><path fill="#D99E82" d="M31.954 21.619c0 6.276-5 6.276-5 6.276h-18s-5 0-5-6.276c0-6.724 5-18.619 14-18.619s14 12.895 14 18.619z"/><path fill="#F4C7B5" d="M18 20c-7 0-10 3.527-10 6.395 0 3.037 2.462 5.5 5.5 5.5 1.605 0 3.042-.664 4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f437.svg b/browser/components/torpreferences/content/bridgemoji/1f437.svg
new file mode 100644
index 0000000000000..49175ea42aa23
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f437.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4ABBA" d="M34.193 13.329c.387-.371.733-.795 1.019-1.28 1.686-2.854.27-10.292-.592-10.8-.695-.411-5.529 1.05-8.246 3.132C23.876 2.884 21.031 2 18 2c-3.021 0-5.856.879-8.349 2.367C6.93 2.293 2.119.839 1.424 1.249c-.861.508-2.276 7.947-.592 10.8.278.471.615.884.989 1.249C.666 15.85 0 18.64 0 21.479 0 31.468 8.011 34 18 34s18-2.532 18-12.521c0-2.828-.66-5.606-1.807-8.15z"/><path fill="#EA596E" d="M7.398 5.965c-2.166-1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f43a.svg b/browser/components/torpreferences/content/bridgemoji/1f43a.svg
new file mode 100644
index 0000000000000..af402057ef411
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f43a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M14.858 9.497c.475 2.326-.182 4.236-2.921 4.638-2.741.403-6.7 3.898-8.848-1.798C1.844 9.038 1.092 2.234 2.628 2.009c1.537-.226 11.756 5.162 12.23 7.488z"/><path fill="#CCD6DD" d="M12.784 9.851c.865 1.392-2.205 3.833-3.844 4.568-1.639.736-2.915-.66-4.173-4.1-.55-1.503-1.234-5.532-.634-5.802.599-.268 7.785 3.942 8.651 5.334z"/><path fill="#66757F" d="M21.372 9.497c-.458 2.326.176 4.236 2.818 4.638 2.644.403 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f43b.svg b/browser/components/torpreferences/content/bridgemoji/1f43b.svg
new file mode 100644
index 0000000000000..50224417b0cef
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f43b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#C1694F" cx="7" cy="6" r="6"/><circle fill="#C1694F" cx="29" cy="6" r="6"/><circle fill="#E6AAAA" cx="7" cy="6" r="4"/><circle fill="#E6AAAA" cx="29" cy="6" r="4"/><path fill="#C1694F" d="M35 22S33.692 0 18 0 1 22 1 22c0 5.872 4.499 10.323 12.216 11.61C14.311 35.06 16.044 36 18 36s3.688-.94 4.784-2.39C30.501 32.323 35 27.872 35 22z"/><circle fill="#DD2E44" cx="18" cy="30" r="4"/><path fill="#D99E82" d="M18 20S7 23. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f43f.svg b/browser/components/torpreferences/content/bridgemoji/1f43f.svg
new file mode 100644
index 0000000000000..3676874901703
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f43f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#AD743D" d="M35.432 22.773c-.195.858-.638 1.773-1.022 2.159 1.399-4.418 1.399-9.111-2.25-11.167.112 1.107-.11 1.691-.265 2.153-.21-2.219-.578-3.744-2.158-4.927-1.82-1.363-2.611-.452-.736 3.765 2.2 4.945 1.475 8.603.827 11.216-.038.154-.08.29-.12.439.804-5.765-.989-11.722-6.825-14.915-2.989-1.636-5.211-1.852-5.329-3.037-.135-1.377-1.218-3.698-3.811-5.327.444-1.309-.485-2.787-1.117-2.841-.631-.054-2.024 1.039-2.16 2.52 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f441.svg b/browser/components/torpreferences/content/bridgemoji/1f441.svg
new file mode 100644
index 0000000000000..bd1a45e4e6e44
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f441.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M35.059 18c0 3.304-7.642 11-17.067 11C8.566 29 .925 22.249.925 18c0-3.314 34.134-3.314 34.134 0z"/><path fill="#292F33" d="M35.059 18H.925c0-3.313 7.642-11 17.067-11s17.067 7.686 17.067 11z"/><path fill="#F5F8FA" d="M33.817 18c0 2.904-7.087 9.667-15.826 9.667-8.74 0-15.825-5.935-15.825-9.667 0-2.912 7.085-9.666 15.825-9.666C26.73 8.333 33.817 15.088 33.817 18z"/><circle fill="#8B5E3C" cx="18" cy="18" r="8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f451.svg b/browser/components/torpreferences/content/bridgemoji/1f451.svg
new file mode 100644
index 0000000000000..4db8d2bc357e6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f451.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M14.174 17.075L6.75 7.594l-3.722 9.481z"/><path fill="#F4900C" d="M17.938 5.534l-6.563 12.389H24.5z"/><path fill="#F4900C" d="M21.826 17.075l7.424-9.481 3.722 9.481z"/><path fill="#FFCC4D" d="M28.669 15.19L23.887 3.523l-5.88 11.668-.007.003-.007-.004-5.88-11.668L7.331 15.19C4.197 10.833 1.28 8.042 1.28 8.042S3 20.75 3 33h30c0-12.25 1.72-24.958 1.72-24.958s-2.917 2.791-6.051 7.148z"/><circle fill="#5C913B" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f455.svg b/browser/components/torpreferences/content/bridgemoji/1f455.svg
new file mode 100644
index 0000000000000..1db482028323c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f455.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3B88C3" d="M11 2C8 2 0 4 0 6s1 7 2 9 8 0 9-1 2-12 0-12z"/><path fill="#55ACEE" d="M1 4.717C.352 5.088 0 5.565 0 6c0 2 1 7 2 9 .281.562 1.039.777 2 .85C3 13 2 9 1 4.717z"/><path fill="#3B88C3" d="M25 2c3 0 11 2 11 4s-1 7-2 9-8 0-9-1-2-12 0-12z"/><path fill="#55ACEE" d="M35 4.717c.648.371 1 .848 1 1.283 0 2-1 7-2 9-.281.562-1.039.777-2 .85C33 13 34 9 35 4.717z"/><path fill="#3B88C3" d="M25 2h-1.068C23.515 3.695 21.021 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f457.svg b/browser/components/torpreferences/content/bridgemoji/1f457.svg
new file mode 100644
index 0000000000000..29cc45c742cf0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f457.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M22.42 11.847L26 2s-.398.002-1 .034V0h-2v2.219c-2.271.302-5 1.028-5 2.781 0-1.753-2.729-2.479-5-2.781V0h-2v2.034C10.398 2.002 10 2 10 2l3.581 9.847L1 25.643S7 36 18 36s17-10.357 17-10.357L22.42 11.847z"/><path fill="#BBDDF5" d="M13 11h10v2H13z"/><path fill="#3B88C3" d="M15 13s-6.734 8.106-5.051 9.006C11.633 22.907 15 13 15 13zm6.096 0s6.734 8.105 5.051 9.007c-1.684.9-5.051-9.007-5.051-9.007zM18 13s-2 11 0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f45f.svg b/browser/components/torpreferences/content/bridgemoji/1f45f.svg
new file mode 100644
index 0000000000000..f0c998c631359
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f45f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8899A6" d="M24.161 10.166l-.676-2.034c-.134-.302-.49-.43-.781-.275-.918.487-2.944 1.318-3.684 1.575 1.419.505 3.499 1.503 4.511 1.396.384-.04.787-.308.63-.662zm10.21 24.574c-.399.225-6.509 1.692-18.621-8.906C12.083 22.625 1.2 12.879 1.341 12.547c0 0-.329.36-.602.736-.197.271-.319.559-.274.848.31 1.967 3.112 3.819 6.962 6.781l.549.422.363.279c.588.452 2.316 1.815 4.329 3.403 2.753 2.171 8.284 6.49 8.445 6.61 2.12 1.5 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f47d.svg b/browser/components/torpreferences/content/bridgemoji/1f47d.svg
new file mode 100644
index 0000000000000..f6e98d1c1403d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f47d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M35 17c0 9.389-13.223 19-17 19-3.778 0-17-9.611-17-19S8.611 0 18 0s17 7.611 17 17z"/><path fill="#292F33" d="M13.503 14.845c3.124 3.124 4.39 6.923 2.828 8.485-1.562 1.562-5.361.297-8.485-2.828-3.125-3.124-4.391-6.923-2.828-8.485s5.361-.296 8.485 2.828zm8.994 0c-3.124 3.124-4.39 6.923-2.828 8.485 1.562 1.562 5.361.297 8.485-2.828 3.125-3.125 4.391-6.923 2.828-8.485-1.562-1.562-5.361-.297-8.485 2.828zM18 31 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f484.svg b/browser/components/torpreferences/content/bridgemoji/1f484.svg
new file mode 100644
index 0000000000000..af7e861693285
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f484.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EA596E" d="M16.522.232c2.246 0 4.832 1.375 6.703 3.249C25.098 5.355 27 7.408 27 9.479v17.204l-15.974.031V9.582c-.093-1.506 1.075-9.35 5.496-9.35"/><path fill="#DD2E44" d="M19 11.378V28c0 1.104.896 0 2 0v2c1.104 0 2-.896 2-2V12.333c-1.258-.104-2.65-.262-4-.955z"/><path fill="#F4ABBA" d="M22.072 3.455c2.664 2.391 4.277 5.236 2.961 6.699-1.314 1.463-5.06.991-7.721-1.4-2.661-2.39-3.753-5.516-2.439-6.979 1.316-1.463 4.53 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f488.svg b/browser/components/torpreferences/content/bridgemoji/1f488.svg
new file mode 100644
index 0000000000000..33ed332874ddf
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f488.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#CCD6DD" cx="18" cy="6" r="6"/><path fill="#FFF" d="M11 12h14v21H11z"/><path fill="#DD2E44" d="M11 28.487L20.251 33H25v-2.134l-14-6.83z"/><path fill="#55ACEE" d="M11 19.585l14 6.83v-4.45l-14-6.831z"/><path fill="#DD2E44" d="M13.697 12L25 17.514V12z"/><path fill="#99AAB5" d="M27 11c0 1.104-.896 2-2 2H11c-1.104 0-2-.896-2-2s.896-2 2-2h14c1.104 0 2 .896 2 2zm0 23c0 1.104-.896 2-2 2H11c-1.104 0-2-.896-2-2s.896-2 2-2h14 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f48d.svg b/browser/components/torpreferences/content/bridgemoji/1f48d.svg
new file mode 100644
index 0000000000000..0834165960a70
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f48d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#9AAAB4" d="M18 12c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm0 20c-4.418 0-8-3.582-8-8s3.582-8 8-8 8 3.582 8 8-3.582 8-8 8z"/><path fill="#5DADEC" d="M29 5l-4-5H11L7 5l11 9z"/><path fill="#8CCAF7" d="M29 5l-4-5H11L7 5h11z"/><path fill="#5DADEC" d="M29 5l-4-5h-7v5h1z"/><path fill="#8CCAF7" d="M18 5h11l-11 9z"/><path fill="#9AAAB4" d="M25 13c0 1.657-1.343 3-3 3h-8c-1.657 0-3-1.343-3-3s1.343- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f48e.svg b/browser/components/torpreferences/content/bridgemoji/1f48e.svg
new file mode 100644
index 0000000000000..a379f7195f971
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f48e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BDDDF4" d="M13 3H7l-7 9h10z"/><path fill="#5DADEC" d="M36 12l-7-9h-6l3 9z"/><path fill="#4289C1" d="M26 12h10L18 33z"/><path fill="#8CCAF7" d="M10 12H0l18 21zm3-9l-3 9h16l-3-9z"/><path fill="#5DADEC" d="M18 33l-8-21h16z"/></svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f490.svg b/browser/components/torpreferences/content/bridgemoji/1f490.svg
new file mode 100644
index 0000000000000..f080ef7f15932
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f490.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M35.01 30.967c-1.385-2.226-3.34-5.001-5.265-7.888-5.141-8.772-1.513-18.411-2.893-21.511-.56-1.259-3.879.966-5.555 4.563-.356-.106-.747-.156-1.17-.148.155-2.397.293-4.31-.193-5.403-.71-1.599-5.867 2.418-6.463 7.729-1.848 1.006-3.223 1.957-3.223 1.957s-.95 1.375-1.954 3.223c-5.312.594-9.331 5.753-7.732 6.464 1.097.488 3.015.349 5.421.192-.006.42.046.807.154 1.159-3.61 1.674-5.848 5.006-4.586 5.567 3.282 1.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4a1.svg b/browser/components/torpreferences/content/bridgemoji/1f4a1.svg
new file mode 100644
index 0000000000000..88b62e387aea1
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4a1.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFD983" d="M29 11.06c0 6.439-5 7.439-5 13.44 0 3.098-3.123 3.359-5.5 3.359-2.053 0-6.586-.779-6.586-3.361C11.914 18.5 7 17.5 7 11.06 7 5.029 12.285.14 18.083.14 23.883.14 29 5.029 29 11.06z"/><path fill="#CCD6DD" d="M22.167 32.5c0 .828-2.234 2.5-4.167 2.5-1.933 0-4.167-1.672-4.167-2.5 0-.828 2.233-.5 4.167-.5 1.933 0 4.167-.328 4.167.5z"/><path fill="#FFCC4D" d="M22.707 10.293c-.391-.391-1.023-.391-1.414 0L18 13.586 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4a7.svg b/browser/components/torpreferences/content/bridgemoji/1f4a7.svg
new file mode 100644
index 0000000000000..3116ec31793c1
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4a7.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5DADEC" d="M28.344 17.768L18.148 1.09 8.7 17.654c-2.2 3.51-2.392 8.074-.081 11.854 3.285 5.373 10.363 7.098 15.811 3.857 5.446-3.24 7.199-10.22 3.914-15.597z"/></svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4b3.svg b/browser/components/torpreferences/content/bridgemoji/1f4b3.svg
new file mode 100644
index 0000000000000..97641af46a3e9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4b3.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M4 5C1.791 5 0 6.791 0 9v18c0 2.209 1.791 4 4 4h28c2.209 0 4-1.791 4-4V9s0-4-4-4H4z"/><path fill="#292F33" d="M0 10h36v5H0z"/><path fill="#F4F7F9" d="M4 19h28v6H4z"/><path fill="#8899A6" d="M19 24c-1.703 0-2.341-1.21-2.469-1.801-.547.041-1.08.303-1.805.764C13.961 23.449 13.094 24 12 24c-1.197 0-1.924-.675-2-2-.003-.056.038-.188.021-.188-1.858 0-3.202 1.761-3.215 1.779-.195.267-.499.409-.806.409-.206 0-.41 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4bf.svg b/browser/components/torpreferences/content/bridgemoji/1f4bf.svg
new file mode 100644
index 0000000000000..6824a06417d6f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4bf.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8899A6" d="M36 18c0 9.941-8.059 18-18 18S0 27.941 0 18 8.059 0 18 0s18 8.059 18 18zm-18-3c-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3-1.343-3-3-3z"/><path fill="#CCD6DD" d="M13.288 17.476c.122-1.104.598-2.101 1.343-2.846L6.686 6.686C4.182 9.19 2.51 12.521 2.102 16.233l11.186 1.243zm9.425 1.048c-.122 1.104-.598 2.101-1.343 2.846l7.944 7.944c2.504-2.504 4.176-5.835 4.584-9.547l-11.185-1.243z"/><path fill="#F5F8FA" d= [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4cc.svg b/browser/components/torpreferences/content/bridgemoji/1f4cc.svg
new file mode 100644
index 0000000000000..2ab6da3e14729
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4cc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M23.651 23.297L12.702 12.348l9.386-7.821 9.385 9.385z"/><path fill="#DD2E44" d="M34.6 13.912c-1.727 1.729-4.528 1.729-6.255 0l-6.257-6.256c-1.729-1.727-1.729-4.53 0-6.258 1.726-1.727 4.528-1.727 6.257 0L34.6 7.656c1.728 1.727 1.728 4.529 0 6.256z"/><path fill="#99AAB5" d="M14 17.823S-.593 35.029.188 35.813C.97 36.596 18.177 22 18.177 22L14 17.823z"/><path fill="#DD2E44" d="M25.215 27.991c-1.726 1.729-4.52 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4ce.svg b/browser/components/torpreferences/content/bridgemoji/1f4ce.svg
new file mode 100644
index 0000000000000..284cf6674b654
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4ce.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M35.354 25.254c.217-2.391-.513-4.558-2.057-6.102L17.033 2.89c-.391-.391-1.024-.391-1.414 0-.391.391-.391 1.024 0 1.414l16.264 16.263c1.116 1.117 1.642 2.717 1.479 4.506-.159 1.748-.957 3.456-2.188 4.686-1.23 1.23-2.938 2.027-4.685 2.187-1.781.161-3.39-.362-4.506-1.479L3.598 12.082c-.98-.98-1.059-2.204-.953-3.058.15-1.196.755-2.401 1.66-3.307 1.7-1.7 4.616-2.453 6.364-.707l14.85 14.849c1.119 1.12.026 2.803 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4d5.svg b/browser/components/torpreferences/content/bridgemoji/1f4d5.svg
new file mode 100644
index 0000000000000..701ff017c5049
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4d5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A0041E" d="M35 26c0 2.209-1.791 4-4 4H5c-2.209 0-4-1.791-4-4V6.313C1 4.104 6.791 0 9 0h20.625C32.719 0 35 2.312 35 5.375V26z"/><path fill="#CCD6DD" d="M33 30c0 2.209-1.791 4-4 4H7c-2.209 0-4-1.791-4-4V6c0-4.119-.021-4 5-4h21c2.209 0 4 1.791 4 4v24z"/><path fill="#E1E8ED" d="M31 31c0 1.657-1.343 3-3 3H4c-1.657 0-3-1.343-3-3V7c0-1.657 1.343-3 3-3h24c1.657 0 3 1.343 3 3v24z"/><path fill="#BE1931" d="M31 32c0 2.209-1.79 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4e1.svg b/browser/components/torpreferences/content/bridgemoji/1f4e1.svg
new file mode 100644
index 0000000000000..dcb02946d303e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4e1.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M10.746 21.521c1.668 0 7.43 4.345 7.427 9.701.003 5.358-14.853 5.358-14.854-.001.001-5.356 5.759-9.7 7.427-9.7z"/><path fill="#CCD6DD" d="M8.541 25.182c8.839 8.84 17.337 5.163 20.033 2.469 2.695-2.696-.158-9.916-6.371-16.129C15.988 5.308 8.767 2.455 6.072 5.15 3.377 7.845-.299 16.343 8.541 25.182z"/><path fill="#66757F" d="M12.443 21.278c6.214 6.214 13.434 9.066 16.13 6.372 2.695-2.696-.158-9.916-6.371-16 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4e2.svg b/browser/components/torpreferences/content/bridgemoji/1f4e2.svg
new file mode 100644
index 0000000000000..8bd0c94fb602a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4e2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M12.908 30.75c-.276 2.209-2.291 3-4.5 3s-3.776-1.791-3.5-4l1-9c.276-2.209 2.291-4 4.5-4s6.468 0 3.5 4-1 10-1 10z"/><path fill="#CCD6DD" d="M35.825 14.75c0 6.902-1.544 12.5-3.45 12.5-1.905 0-20.45-5.598-20.45-12.5 0-6.903 18.545-12.5 20.45-12.5 1.906 0 3.45 5.597 3.45 12.5z"/><ellipse fill="#66757F" cx="32.375" cy="14.75" rx="3.45" ry="12.5"/><path fill="#DD2E44" d="M17.925 21.75l-14-1c-5 0-5-12 0-12l14-1c [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f4fb.svg b/browser/components/torpreferences/content/bridgemoji/1f4fb.svg
new file mode 100644
index 0000000000000..33808ad72ba8f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f4fb.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M2.697 12.389c-.391.391-.391 1.023 0 1.414s1.023.391 1.414 0l9.192-9.192c.391-.391.391-1.023 0-1.414s-1.023-.391-1.414 0l-9.192 9.192z"/><path fill="#99AAB5" d="M36 32c0 4-4 4-4 4H4s-4 0-4-4V14s0-4 4-4h28c4 0 4 4 4 4v18z"/><path fill="#292F33" d="M15.561 3.061c-.391.391-1.023.391-1.414 0l-.707-.707c-.391-.391-.391-1.023 0-1.414s1.023-.391 1.414 0l.707.707c.39.39.39 1.023 0 1.414z"/><circle fill="#292F33" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f50b.svg b/browser/components/torpreferences/content/bridgemoji/1f50b.svg
new file mode 100644
index 0000000000000..66d420fc301e9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f50b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M24 4c0 2.209-1.791 4-4 4h-4c-2.209 0-4-1.791-4-4s1.791-4 4-4h4c2.209 0 4 1.791 4 4z"/><path fill="#E1E8ED" d="M30 32c0 2.209-1.791 4-4 4H10c-2.209 0-4-1.791-4-4V8c0-2.209 1.791-4 4-4h16c2.209 0 4 1.791 4 4v24z"/><path fill="#77B255" d="M6 8h24v24H6z"/><path fill="#F5F8FA" d="M23 14h-3v-3c0-.552-.447-1-1-1h-2c-.552 0-1 .448-1 1v3h-3c-.553 0-1 .448-1 1v2c0 .553.447 1 1 1h3v3c0 .553.448 1 1 1h2c.553 0 1-.44 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f511.svg b/browser/components/torpreferences/content/bridgemoji/1f511.svg
new file mode 100644
index 0000000000000..7b4dc2a73dc75
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f511.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M32.614 3.414C28.31-.89 21.332-.89 17.027 3.414c-3.391 3.392-4.098 8.439-2.144 12.535l-3.916 3.915c-.64.641-.841 1.543-.625 2.359l-1.973 1.972c-.479-.48-1.252-.48-1.731 0l-1.731 1.732c-.479.479-.479 1.253 0 1.732l-.867.864c-.479-.478-1.253-.478-1.731 0l-.866.867c-.479.479-.479 1.253 0 1.732.015.016.036.02.051.033-.794 1.189-.668 2.812.382 3.863 1.195 1.195 3.134 1.195 4.329 0L20.08 21.144c4.097 1.955 9.14 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f525.svg b/browser/components/torpreferences/content/bridgemoji/1f525.svg
new file mode 100644
index 0000000000000..e7dee6dd270be
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f525.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M35 19c0-2.062-.367-4.039-1.04-5.868-.46 5.389-3.333 8.157-6.335 6.868-2.812-1.208-.917-5.917-.777-8.164.236-3.809-.012-8.169-6.931-11.794 2.875 5.5.333 8.917-2.333 9.125-2.958.231-5.667-2.542-4.667-7.042-3.238 2.386-3.332 6.402-2.333 9 1.042 2.708-.042 4.958-2.583 5.208-2.84.28-4.418-3.041-2.963-8.333C2.52 10.965 1 14.805 1 19c0 9.389 7.611 17 17 17s17-7.611 17-17z"/><path fill="#FFCC4D" d="M28.394 23.99 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f526.svg b/browser/components/torpreferences/content/bridgemoji/1f526.svg
new file mode 100644
index 0000000000000..1aff8ae2c0d7f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f526.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M23 17l1-1s1-1 2 0l2 2s1 1 0 2l-1 1-4-4z"/><path fill="#8899A6" d="M34.879 27.879c1.166 1.166 1.166 3.076 0 4.242l-2.758 2.758c-1.166 1.166-3.076 1.166-4.242 0L9.121 16.121c-1.167-1.166-1.167-3.076 0-4.242l2.758-2.758c1.167-1.167 3.076-1.167 4.242 0l18.758 18.758z"/><path fill="#66757F" d="M20.879 10.879c1.166 1.167 1.166 3.076 0 4.242l-5.758 5.758c-1.167 1.166-3.076 1.166-4.242 0L6 16s-1-1 0-2l8-8c1-1 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f52c.svg b/browser/components/torpreferences/content/bridgemoji/1f52c.svg
new file mode 100644
index 0000000000000..e910ee894e4a8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f52c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><g fill="#66757F"><path d="M19.78 21.345l-6.341-6.342-.389 4.38 2.35 2.351z"/><path d="M15.4 22.233c-.132 0-.259-.053-.354-.146l-2.351-2.351c-.104-.104-.158-.25-.145-.397l.389-4.38c.017-.193.145-.359.327-.425.182-.067.388-.021.524.116l6.341 6.342c.138.138.183.342.116.524s-.232.31-.426.327l-4.379.389-.042.001zm-1.832-3.039l2.021 2.021 3.081-.273-4.828-4.828-.274 3.08z"/></g><path fill="#8899A6" d="M31 32h-3c0-3.314-2.63-6-5.875-6 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f52d.svg b/browser/components/torpreferences/content/bridgemoji/1f52d.svg
new file mode 100644
index 0000000000000..113c0330a8f3e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f52d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#9AAAB4" cx="17" cy="20" r="3"/><path fill="#DA2F47" d="M19.235 17.059c-.259.485-.868.671-1.353.412L5.529 10.883c-.485-.259-.67-.868-.412-1.353L7.94 4.235c.259-.485.868-.67 1.353-.412l12.353 6.588c.485.259.671.868.412 1.353l-2.823 5.295z"/><path fill="#DA2F47" d="M31.177 22.293c-.259.485-.868.671-1.354.412l-9.705-5.176c-.485-.259-.671-.868-.412-1.354l1.882-3.529c.259-.485.868-.67 1.354-.412l9.705 5.176c.485.259.671 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f52e.svg b/browser/components/torpreferences/content/bridgemoji/1f52e.svg
new file mode 100644
index 0000000000000..d7e09232d7e87
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f52e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BF6952" d="M28.736 28.767l-21.458.076-1.649 4.835c-.062.187-.101.387-.073.582.145.984.993 1.74 2.017 1.74h20.894c1.024 0 1.872-.756 2.017-1.74.029-.195-.01-.395-.073-.582l-1.675-4.911z"/><path fill="#854836" d="M28.736 28.767l-.19-.556c-.199-.598-.759-1.001-1.389-1.001H8.883c-.63 0-1.19.403-1.389 1.001l-.216.632c2.928 2.344 6.636 3.754 10.678 3.754 4.088 0 7.837-1.438 10.78-3.83z"/><circle fill="#AA8DD8" cx="17.956" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f54a.svg b/browser/components/torpreferences/content/bridgemoji/1f54a.svg
new file mode 100644
index 0000000000000..613e4956d71d0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f54a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M.794 16.112c1 0 5.875 1.344 6.5 2.312L6.013 18.3s-3.906-1.25-4.906-1.25c-1.001 0-.313-.938-.313-.938z"/><path fill="#99AAB5" d="M11 2c1 1 3 7 3 10s-2 6 2 8 5.001-1 5.001-5S20 7 19 5s-2 0-2 0-1-4-2-4-1 2-1 2-2-2-3-2 0 1 0 1z"/><path fill="#CCD6DD" d="M10 15c3 0 4 4 6 4s1-3 3-3 10-5 10-11 3-3 3-1c1 0 2 1.586 2 3 0 1 0 2-1 3 1 0 2 2 1 3 1 3-1 6-3 7 0 1-2 3-4 2 0 0-1 3-3 2 0 0 3.052 1.684 4 2 3 1 7 1 7 1s0 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f58c.svg b/browser/components/torpreferences/content/bridgemoji/1f58c.svg
new file mode 100644
index 0000000000000..b39bcbc9dd7e6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f58c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3B88C3" d="M14.57 27.673c2.814-1.692 6.635-3.807 9.899-7.071 7.03-7.029 12.729-16.97 11.314-18.385C34.369.803 24.428 6.502 17.398 13.531c-3.265 3.265-5.379 7.085-7.071 9.899l4.243 4.243z"/><path fill="#C1694F" d="M.428 34.744s7.071 1.414 12.021-3.536c2.121-2.121 2.121-4.949 2.121-4.949l-2.829-2.829s-3.535.708-4.95 2.122c-1.414 1.414-2.518 4.232-2.888 5.598-.676 2.502-3.475 3.594-3.475 3.594z"/><path fill="#CCD6DD" d [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f58d.svg b/browser/components/torpreferences/content/bridgemoji/1f58d.svg
new file mode 100644
index 0000000000000..5a4cbe8e1a8c3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f58d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M35.702 7.477L28.522.298c-.396-.397-1.038-.397-1.436 0L3.395 23.989c-.397.397-.397 1.038 0 1.437.72.719-3.14 7.959-3.395 8.496L2.068 36c.536-.255 7.785-4.115 8.506-3.395.397.397 1.039.397 1.436 0L35.702 8.913c.397-.396.397-1.039 0-1.436z"/><path fill="#EA596E" d="M4.139 23.24L26.407.972l8.62 8.62L12.759 31.86z"/><path fill="#292F33" d="M23.534 3.846l1.437-1.436 8.62 8.62-1.437 1.436zM5.576 21.803l1.436-1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f5ff.svg b/browser/components/torpreferences/content/bridgemoji/1f5ff.svg
new file mode 100644
index 0000000000000..5ba18be1f9340
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f5ff.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M8 27s-2 4-2 6 4 3 12 3 12-1 12-3-2-6-2-6H8zM9 6C6 6 6 7 5 16c-.994 8.945 0 10 4 10 2 0 2-20 0-20zm18 0c3 0 3 1 4 10 .994 8.945 0 10-4 10-2 0-2-20 0-20z"/><path fill="#CCD6DD" d="M8 3s1-3 10-3 10 3 10 3 1 6 1 14-1 14-1 14-1 2-10 2-10-2-10-2-1-3-1-14S8 3 8 3z"/><path fill="#66757F" d="M28 8c0-1-3-4-10-4S8 7 8 8c0 .807 4.548 1.612 6.311 1.894C14.999 12.548 15 18 15 18c.805-3.218.315-7.079.093-8.467C15.295 8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f680.svg b/browser/components/torpreferences/content/bridgemoji/1f680.svg
new file mode 100644
index 0000000000000..8658d4397b8cb
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f680.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A0041E" d="M1 17l8-7 16 1 1 16-7 8s.001-5.999-6-12-12-6-12-6z"/><path fill="#FFAC33" d="M.973 35s-.036-7.979 2.985-11S15 21.187 15 21.187 14.999 29 11.999 32c-3 3-11.026 3-11.026 3z"/><circle fill="#FFCC4D" cx="8.999" cy="27" r="4"/><path fill="#55ACEE" d="M35.999 0s-10 0-22 10c-6 5-6 14-4 16s11 2 16-4c10-12 10-22 10-22z"/><path d="M26.999 5c-1.623 0-3.013.971-3.641 2.36.502-.227 1.055-.36 1.641-.36 2.209 0 4 1.791 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f681.svg b/browser/components/torpreferences/content/bridgemoji/1f681.svg
new file mode 100644
index 0000000000000..8b7a40320cb31
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f681.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M16.26 26h2v5h-2zm-8 0h2v5h-2z"/><ellipse fill="#99AAB5" cx="6.259" cy="3" rx="6" ry="1"/><ellipse fill="#99AAB5" cx="20.259" cy="3" rx="6" ry="1"/><path fill="#99AAB5" d="M12.26 3h2v6h-2z"/><ellipse fill="#66757F" cx="13.259" cy="3" rx="2" ry="1"/><path fill="#FFCC4D" d="M34.259 10c0-3 0-7-1-7s-3 4-4 6 5 1 5 1z"/><path fill="#FFCC4D" d="M34.259 10c0-2.209-8-3-19-3h-2C6.632 7 .509 12.451.509 18.25S4.259 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f686.svg b/browser/components/torpreferences/content/bridgemoji/1f686.svg
new file mode 100644
index 0000000000000..3f5f5b85617cc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f686.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A7A9AC" d="M2 36h32L23 19H13z"/><path fill="#58595B" d="M5 36h26L21 19h-6z"/><path fill="#808285" d="M8 36h20l-9-17h-2z"/><path fill="#A7A9AC" d="M28 35c0 .553-.447 1-1 1H9c-.552 0-1-.447-1-1 0-.553.448-1 1-1h18c.553 0 1 .447 1 1zm-2-4c0 .553-.447 1-1 1H11c-.552 0-1-.447-1-1 0-.553.448-1 1-1h14c.553 0 1 .447 1 1z"/><path fill="#58595B" d="M27.076 25.3L23 19H13l-4.076 6.3c1.889 2.517 4.798 4.699 9.076 4.699 4.277 0 7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f68b.svg b/browser/components/torpreferences/content/bridgemoji/1f68b.svg
new file mode 100644
index 0000000000000..da204b81a3b09
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f68b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#939598" d="M0 34h36v2H0z"/><path fill="#58595B" d="M10 32c0-1.657-1.344-3-3-3s-3 1.343-3 3 1.343 3 3 3 3-1.343 3-3z"/><path fill="#292F33" d="M9 32c0-1.105-.896-2-2-2s-2 .895-2 2 .896 2 2 2 2-.895 2-2z"/><circle fill="#58595B" cx="29" cy="32" r="3"/><circle fill="#292F33" cx="29" cy="32" r="2"/><path fill="#E6E7E8" d="M34 2H2c-.552 0-1-.448-1-1s.448-1 1-1h32c.553 0 1 .448 1 1s-.447 1-1 1z"/><path fill="#66757F" d="M [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f68d.svg b/browser/components/torpreferences/content/bridgemoji/1f68d.svg
new file mode 100644
index 0000000000000..68ca65faa0734
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f68d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M11 34c0 1.104-.896 2-2 2H7c-1.104 0-2-.896-2-2v-7c0-1.104.896-2 2-2h2c1.104 0 2 .896 2 2v7zm20 0c0 1.104-.896 2-2 2h-2c-1.104 0-2-.896-2-2v-7c0-1.104.896-2 2-2h2c1.104 0 2 .896 2 2v7z"/><path fill="#99AAB5" d="M3 17c0 .553-.448 1-1 1H1c-.552 0-1-.447-1-1v-7c0-.552.448-1 1-1h1c.552 0 1 .448 1 1v7zm33 0c0 .553-.447 1-1 1h-1c-.553 0-1-.447-1-1v-7c0-.552.447-1 1-1h1c.553 0 1 .448 1 1v7z"/><path fill="#99AAB5 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f695.svg b/browser/components/torpreferences/content/bridgemoji/1f695.svg
new file mode 100644
index 0000000000000..5446414a25448
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f695.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M21.377 15.449c.089.816-.83 1.495-2.053 1.515-1.223.02-2.095-.635-1.947-1.463l.356-2c.147-.829.938-1.5 1.767-1.5.828 0 1.572.662 1.661 1.478l.216 1.97z"/><path fill="#FFCC4D" d="M32.246 21h-.135l-.444-3c-.327-2.209-1.864-4-3.433-4H16.162c-1.569 0-3.574 1.791-4.478 4l-1.228 3H6.911c-2.073 0-4.104 1.791-4.538 4l-.588 3c-.001.008 0 .015-.002.021C.782 28.132 0 28.97 0 30c0 1.104.896 2 2 2h30c2.209 0 4-1.791 4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f697.svg b/browser/components/torpreferences/content/bridgemoji/1f697.svg
new file mode 100644
index 0000000000000..97b5f10d4c5a0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f697.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M13 32h20s3 0 3-4c0-2 0-6-1-7s-8-7-11-7h-6c-3 0-10 7-10 7l-4 1s-3 1-3 3v3s-1 .338-1 1.957C0 32 2 32 2 32h11z"/><path fill="#BBDDF5" d="M20 16h-2c-2 0-8 6-8 6s4.997-.263 10-.519V16zm10 3c-1-1-5-3-7-3h-1v5.379c4.011-.204 7.582-.379 8-.379 1 0 1-1 0-2z"/><circle fill="#292F33" cx="10" cy="31" r="4"/><circle fill="#CCD6DD" cx="10" cy="31" r="2"/><circle fill="#292F33" cx="27" cy="31" r="4"/><circle fill="#CCD [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f69a.svg b/browser/components/torpreferences/content/bridgemoji/1f69a.svg
new file mode 100644
index 0000000000000..7441d1bba8047
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f69a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M36 27c0 2.209-1.791 4-4 4H4c-2.209 0-4-1.791-4-4v-3c0-2.209 1.791-4 4-4h28c2.209 0 4 1.791 4 4v3z"/><path fill="#FFCC4D" d="M19 13l-.979-1H7.146C4 12 3 14 3 14l-3 5.959V25h19V13z"/><path fill="#55ACEE" d="M9 20H2l2-4s1-2 3-2h2v6z"/><circle fill="#292F33" cx="9" cy="31" r="4"/><circle fill="#CCD6DD" cx="9" cy="31" r="2"/><circle fill="#292F33" cx="27" cy="31" r="4"/><circle fill="#CCD6DD" cx="27" cy="31" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f69c.svg b/browser/components/torpreferences/content/bridgemoji/1f69c.svg
new file mode 100644
index 0000000000000..014ca11d340ab
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f69c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M11 11h3v9h-3z"/><path fill="#77B255" d="M24 26.157C24 28.832 22.354 31 20.325 31H4.709c-2.029 0-3.488-1.565-3.258-3.494l.625-5.241c.23-1.93 1.992-3.808 3.928-4.199l14.628-3.21C22.496 14.413 24 16.219 24 18.893v7.264z"/><path fill="#292F33" d="M16.535 24.167C16.239 26.283 17.791 28 20 28h9c2.209 0 4-1.717 4-3.833V8.833C33 6.716 31.547 5 29.755 5h-7.303c-1.792 0-3.484 1.716-3.78 3.833l-2.137 15.334z"/><pat [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6a0.svg b/browser/components/torpreferences/content/bridgemoji/1f6a0.svg
new file mode 100644
index 0000000000000..8510956dc2af6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6a0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#58595B" d="M19 12V5h-2v7h-5v5h12v-5z"/><path fill="#FFD983" d="M34 28V18c0-2.209-1.791-4-4-4H6c-2.209 0-4 1.791-4 4v10h32z"/><path fill="#269" d="M2 22v6c0 4.418 3.582 8 8 8h16c4.418 0 8-3.582 8-8v-6H2z"/><path fill="#88C9F9" d="M2 18h6v9H2zm8 0h7v9h-7zm9 0h7v9h-7zm9 0h6v9h-6z"/><path fill="#6D6E71" d="M33.213 10.977L3.27 2.954c-.533-.144-.85-.691-.707-1.226.143-.533.691-.85 1.225-.707L33.73 9.045c.534.144.851.691.7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6a2.svg b/browser/components/torpreferences/content/bridgemoji/1f6a2.svg
new file mode 100644
index 0000000000000..79077f00a46c9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6a2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M16 0h4v5h-4z"/><path fill="#D1D3D4" d="M16 2h4v4h-4z"/><path fill="#A7A9AC" d="M18 2h2v4h-2z"/><path fill="#66757F" d="M18 19H5s1.355 8 4.875 14C13.394 39 18 33 18 33s4.606 6 8.125 0C29.645 27 31 19 31 19H18z"/><path fill="#99AAB5" d="M18 19H5s1.355 8 4.875 14C13.394 39 18 33 18 33V19z"/><path fill="#55ACEE" d="M0 30h36v6H0z"/><path fill="#E6E7E8" d="M30 9h-2.45l-.242-4H8.692l-.241 4H6v6h2.088l-.242 4h20 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6a4.svg b/browser/components/torpreferences/content/bridgemoji/1f6a4.svg
new file mode 100644
index 0000000000000..7dfe5a6b81b24
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6a4.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M33 27h-2l1-8h2z"/><path fill="#DD2E44" d="M1 14c9.055.053 11 1 17 2 2.959.493 7 1 11 1 2 0 4 1 4 4 0 2 .534 3.187-5.433 3.815C23.59 25.233 13 23 9 21c-6-3-9-7.005-8-7z"/><path fill="#55ACEE" d="M0 24h36v12H0z"/><path fill="#FFCC4D" d="M5 13c4 0 11 0 18 1s10 1 10 3v3c0 1.414-6.869.447-10 0-7-1-14-3-18-4-4.047-1.011-7-3 0-3z"/><path fill="#A0041E" d="M30.592 24.322c2.122-.539 2.403-1.307 2.418-2.361-1.263. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f0.svg b/browser/components/torpreferences/content/bridgemoji/1f6f0.svg
new file mode 100644
index 0000000000000..6d9bb3d2eaf15
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M8.514 19.828L19.122 9.223l2.121 2.121L10.635 21.95z"/><path fill="#55ACEE" d="M8.515 29.728c-.781.781-2.047.781-2.828 0l-4.95-4.949c-.781-.781-.781-2.048 0-2.828L5.687 17c.781-.781 2.047-.781 2.828 0l4.95 4.95c.781.78.781 2.047 0 2.828l-4.95 4.95zm16.262-16.263c-.78.781-2.047.781-2.827 0L17 8.515c-.781-.781-.781-2.047 0-2.828l4.951-4.95c.781-.781 2.047-.781 2.828 0l4.949 4.95c.781.781.781 2.047.001 2.828 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f4.svg b/browser/components/torpreferences/content/bridgemoji/1f6f4.svg
new file mode 100644
index 0000000000000..e217dc436402c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f4.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#292F33" cx="4.5" cy="31.5" r="4.5"/><circle fill="#DD2E44" cx="4.5" cy="31.5" r="3"/><circle fill="#292F33" cx="31.5" cy="31.5" r="4.5"/><circle fill="#DD2E44" cx="31.5" cy="31.5" r="3"/><path fill="#55ACEE" d="M31.5 33h-20c-.825 0-1.5-.675-1.5-1.5s.675-1.5 1.5-1.5h20c.825 0 1.5.675 1.5 1.5s-.675 1.5-1.5 1.5z"/><path fill="#55ACEE" d="M26.012 31.746c-.003-.082-.012-.163-.012-.246 0-3.038 2.462-5.5 5.5-5.5 1.21 0 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f5.svg b/browser/components/torpreferences/content/bridgemoji/1f6f5.svg
new file mode 100644
index 0000000000000..a1e0f4b99e20b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M32 24h-1c-.55 0-1-.45-1-1s.45-1 1-1h1c.55 0 1 .45 1 1s-.45 1-1 1"/><path fill="#292F33" d="M10 31.5c0 2.485-2.015 4.5-4.5 4.5S1 33.985 1 31.5 3.015 27 5.5 27s4.5 2.015 4.5 4.5m24 0c0 2.485-2.015 4.5-4.5 4.5S25 33.985 25 31.5s2.015-4.5 4.5-4.5 4.5 2.015 4.5 4.5"/><path fill="#99AAB5" d="M8 31.5C8 32.881 6.881 34 5.5 34S3 32.881 3 31.5 4.119 29 5.5 29 8 30.119 8 31.5m24 0c0 1.381-1.119 2.5-2.5 2.5S27 32.88 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f6.svg b/browser/components/torpreferences/content/bridgemoji/1f6f6.svg
new file mode 100644
index 0000000000000..b6a2165254a33
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#DD2E44" d="M33.793 17S32.476 20 18 20C3.523 20 1.973 17 1.973 17S-1 22.117 4.802 25c4.238 2.105 10.916-.131 12.723-.814 1.991.683 9.274 2.824 13.557.814 5.862-2.751 2.711-8 2.711-8z"/><path fill="#55ACEE" d="M0 24h36v12H0z"/><path fill="#FFAC33" d="M27.005 25.389c.206 0 .412-.079.569-.236.315-.315.315-.824 0-1.139l-8.861-8.86c-.315-.315-.824-.315-1.139 0-.315.315-.315.824 0 1.139l8.861 8.86c.158.157.364.236.57.236z" [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f8.svg b/browser/components/torpreferences/content/bridgemoji/1f6f8.svg
new file mode 100644
index 0000000000000..5f015fe792bb0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f8.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFD983" d="M32.831 20.425c-.689 3.241-9.21 6.221-17.314 4.499S.841 17.013 1.53 13.772s8.587-3.287 16.69-1.564 15.3 4.976 14.611 8.217z"/><path fill="#FFD983" d="M27 36l-2-14-17-5-8 19z"/><ellipse transform="rotate(-78 17.482 15.686)" fill="#67757F" cx="17.481" cy="15.685" rx="7.556" ry="17"/><path fill="#67757F" d="M.414 10.977l.414 2.315 32.866 6.986 1.412-2.126z"/><ellipse transform="rotate(-78 18.013 13.186)" fil [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6f9.svg b/browser/components/torpreferences/content/bridgemoji/1f6f9.svg
new file mode 100644
index 0000000000000..1ee4bfec4ac72
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6f9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A0041E" d="M32.436 2.821c1.801 1.799 3.779 2.737 0 6.517L12.884 28.889c-4.594 4.595-5.463 7.571-11.405 1.63-3.258-3.258.284-3.543 4.888-8.148l19.552-19.55c1.8-1.8 4.718-1.8 6.517 0z"/><path fill="#DD2E44" d="M33.936 4.321c1.801 1.799 1.801 4.717 0 6.517L14.385 30.389c-4.073 4.073-8.342 4.693-11.405 1.63-3.258-3.258.284-3.543 4.888-8.148L27.42 4.321c1.799-1.8 4.717-1.8 6.516 0z"/><path fill="#3B88C3" d="M15.301 33.18 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6fa.svg b/browser/components/torpreferences/content/bridgemoji/1f6fa.svg
new file mode 100644
index 0000000000000..aae4e94ac5a0f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6fa.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M19 9h2v11h-2z"/><path fill="#55ACEE" d="M10 9c-2 2-4 5-4 7 0 4 5 1 5 1V9h-1z"/><circle fill="#292F33" cx="5" cy="32" r="4"/><circle fill="#99AAB5" cx="5" cy="32" r="2"/><path fill="#1E5200" d="M29 23h-2c-1.105 0-2 .895-2 2v5c0 1.105.895 2 2 2h2c1.105 0 2-.895 2-2v-5c0-1.105-.895-2-2-2zm-10 0h-2c-1.105 0-2 .895-2 2v5c0 1.105.895 2 2 2h2c1.105 0 2-.895 2-2v-5c0-1.105-.895-2-2-2z"/><path fill="#5C913B" d="M [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f6fc.svg b/browser/components/torpreferences/content/bridgemoji/1f6fc.svg
new file mode 100644
index 0000000000000..091d51ef63eb8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f6fc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M10 27.5c0 1.381-2.567 3.5-4.5 3.5S1 28.881 1 27.5 3.567 26 5.5 26s4.5.119 4.5 1.5zm19 0c0 1.381-2.567 3.5-4.5 3.5S20 28.881 20 27.5s2.567-1.5 4.5-1.5 4.5.119 4.5 1.5zm0-.5c0 1 0 2 2 3s2-3 2-3h-4z"/><path fill="#F4900C" d="M34.787 28.795c1.332 1.332.729 1.683-.603 3.016-1.332 1.332-1.683 1.935-3.016.603-1.332-1.332-1.935-2.889-.603-4.222 1.332-1.333 2.889-.73 4.222.603z"/><path fill="#662113" d="M33.299 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f916.svg b/browser/components/torpreferences/content/bridgemoji/1f916.svg
new file mode 100644
index 0000000000000..1dbe6d68de79c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f916.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#F4900C" cx="33.5" cy="14.5" rx="2.5" ry="3.5"/><ellipse fill="#F4900C" cx="2.5" cy="14.5" rx="2.5" ry="3.5"/><path fill="#FFAC33" d="M34 19c0 .553-.447 1-1 1h-3c-.553 0-1-.447-1-1v-9c0-.552.447-1 1-1h3c.553 0 1 .448 1 1v9zM7 19c0 .553-.448 1-1 1H3c-.552 0-1-.447-1-1v-9c0-.552.448-1 1-1h3c.552 0 1 .448 1 1v9z"/><path fill="#FFCC4D" d="M28 5c0 2.761-4.478 4-10 4C12.477 9 8 7.761 8 5s4.477-5 10-5c5.522 0 10 2.239 10 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f93f.svg b/browser/components/torpreferences/content/bridgemoji/1f93f.svg
new file mode 100644
index 0000000000000..01239db878463
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f93f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M21 25c-2.556 0-4.062-3.128-5.161-4.676-.412-.58-1.266-.58-1.677 0C13.062 21.872 11.557 25 9 25c-4.551 0-7.923-3.033-8.784-7.619C-.804 11.955 3.589 7 9.11 7h11.78c5.521 0 9.914 4.955 8.894 10.381C28.923 21.967 25.551 25 21 25z"/><path fill="#292F33" d="M18 22l-3-3-3 3-2 2c2 0 3 3 5 3s3-3 5-3l-2-2z"/><path fill="#4E9322" d="M21 25c-2.556 0-4.062-3.128-5.161-4.676-.412-.58-1.266-.58-1.677 0C13.062 21.872 11 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f941.svg b/browser/components/torpreferences/content/bridgemoji/1f941.svg
new file mode 100644
index 0000000000000..e197d16c3e092
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f941.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F18F26" d="M0 18h36v9H0z"/><ellipse fill="#F18F26" cx="18" cy="26" rx="18" ry="9"/><ellipse fill="#F18F26" cx="18" cy="27" rx="18" ry="9"/><path fill="#9D0522" d="M0 10v16h.117c.996 4.499 8.619 8 17.883 8s16.887-3.501 17.883-8H36V10H0z"/><ellipse fill="#F18F26" cx="18" cy="11" rx="18" ry="9"/><ellipse fill="#F18F26" cx="18" cy="12" rx="18" ry="9"/><path fill="#F18F26" d="M0 10h1v2H0zm35 0h1v2h-1z"/><ellipse fill="#F [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f94c.svg b/browser/components/torpreferences/content/bridgemoji/1f94c.svg
new file mode 100644
index 0000000000000..9bc8f8a58d421
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f94c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M28 12H13V8c0-.552.448-1 1-1h11c1.104 0 2-.896 2-2s-.896-2-2-2H14c-2.761 0-5 2.239-5 5v4H8c-1.104 0-2 .896-2 2s.896 2 2 2h20c1.104 0 2-.896 2-2s-.896-2-2-2z"/><path fill="#66757F" d="M36 25c0 3.313-2.687 6-6 6H6c-3.313 0-6-2.687-6-6v-5c0-3.313 2.687-6 6-6h24c3.313 0 6 2.687 6 6v5z"/><path fill="#99AAB5" d="M0 20h36v5H0z"/></svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f94f.svg b/browser/components/torpreferences/content/bridgemoji/1f94f.svg
new file mode 100644
index 0000000000000..84fdba474f0ab
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f94f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M35 21.526C35 26.758 27.389 31 18 31S1 26.758 1 21.526 7.625 11 18 11s17 5.294 17 10.526z"/><ellipse fill="#FFAC33" cx="18" cy="19.502" rx="16" ry="8.5"/><path fill="#FFD983" d="M18 11.331c-6.449 0-11.5 2.491-11.5 5.672 0 3.18 5.051 5.671 11.5 5.671 6.448 0 11.5-2.491 11.5-5.671 0-3.181-5.052-5.672-11.5-5.672z"/><ellipse fill="#FFAC33" cx="18" cy="18.002" rx="12" ry="6"/><path fill="#F4900C" d="M29 18.002 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f950.svg b/browser/components/torpreferences/content/bridgemoji/1f950.svg
new file mode 100644
index 0000000000000..eef4358d88ee4
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f950.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M11.569 35.41c-2.223-.63-5.362-4.11-6.86-7.331-.183-.391-1.101-.673-1.265-1.084C.953 20.775.637 12.54 6.342 6.834 12.751.425 20.537-.295 26.817 1.757c.45.147.837 1.114 1.286 1.199 5.917 1.115 8.322 7.549 5.759 6.816-1.199-.342-2.657-.557-3.814-.428-.437.049-1.051.892-1.544.962-.767.11-2.64.212-3.564.305-9.159.916-12.395 6.971-12.811 14.256-.046.808-.617.623-.73 1.283-.344 1.992 1.089 4.884 1.772 6.939.594 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f951.svg b/browser/components/torpreferences/content/bridgemoji/1f951.svg
new file mode 100644
index 0000000000000..ed1d9f9f633cb
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f951.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M35 5.904c2.394 6.042-1.438 20.543-10.5 26.5-9.06 5.957-20.395 3.573-23.097-6.443-1.669-6.186 2.79-10.721 11.851-16.677C22.315 3.327 32.64-.053 35 5.904z"/><path fill="#3E721D" d="M20.605 26.03c-6.523 4.546-15.287 5.15-18.469.582-3.183-4.566.418-12.578 6.943-17.124 6.522-4.545 21.951-9.796 25.134-5.23 3.183 4.57-7.085 17.226-13.608 21.772"/><path fill="#A6D388" d="M19.815 26.578c-5.757 4.013-13.482 3.097- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f955.svg b/browser/components/torpreferences/content/bridgemoji/1f955.svg
new file mode 100644
index 0000000000000..b949554ff7a1c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f955.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M31.096 8.933c3.535-2.122 4.408-8.32 3.701-7.613.707-.707-5.657 0-7.778 3.536 0-1.414-1.414-7.071-3.535-2.121-2.122 4.95-1.415 5.657-1.415 7.071 0 1.414 2.829 1.414 2.829 1.414s-.125 2.704 1.29 2.704c1.414 0 1.997.583 6.946-1.538 4.95-2.122-.624-3.453-2.038-3.453z"/><path fill="#F4900C" d="M22.422 23.594C14.807 31.209 2.27 36.675.502 34.907c-1.768-1.768 3.699-14.305 11.313-21.92 7.615-7.615 11.53-7.562 14 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f956.svg b/browser/components/torpreferences/content/bridgemoji/1f956.svg
new file mode 100644
index 0000000000000..8da10427ff0f0
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f956.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EDB980" d="M12.697 31.165c-3.785 3.785-8.273 3.838-9.841 2.271-1.568-1.568-1.514-6.056 2.271-9.841L24.052 4.67c3.785-3.784 8.271-3.838 9.84-2.271 1.567 1.568 1.515 6.056-2.271 9.841L12.697 31.165z"/><path d="M24.322 7.969c1.568 1.568 2.758 2.917 3.595 2.082.152-.152.241-.349.301-.565-.018-.043-.036-.087-.041-.136-.128-1.148-2.41-3.641-4.08-4.721l-.045.042-1.474 1.474c.438.539 1.064 1.144 1.744 1.824zm-4.543 4.542c1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f95c.svg b/browser/components/torpreferences/content/bridgemoji/1f95c.svg
new file mode 100644
index 0000000000000..c809689a05365
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f95c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M17.256 31.519c-4.754 4.754-11.207 5.573-14.683 2.097C-.902 30.141.056 23.55 4.672 18.934c3.355-3.356 6.711-3.356 9.228-5.873 2.517-2.516 1.678-5.033 5.454-8.809C23.968-.361 29.84-1.201 33.616 2.574c3.774 3.776 2.832 9.754-1.678 14.263-3.775 3.775-6.292 2.936-8.809 5.452-2.518 2.518-2.518 5.873-5.873 9.23z"/><path fill="#C1694F" d="M8.211 21.397c-.324 0-.643-.157-.835-.448-.305-.46-.179-1.081.282-1.386.68 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f95d.svg b/browser/components/torpreferences/content/bridgemoji/1f95d.svg
new file mode 100644
index 0000000000000..4007a720a2803
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f95d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M25.94 15.188c2.045 8.239-1.642 16.246-8.235 17.881-6.592 1.636-13.593-3.719-15.638-11.958-2.044-8.24 1.642-16.246 8.236-17.882 6.59-1.636 13.593 3.718 15.637 11.959z"/><path fill="#C1694F" d="M34.146 13.151c2.391 9.635-6.295 17.402-14.948 19.548-8.653 2.146-14.34-3.532-16.385-11.773-2.044-8.24.328-15.92 8.98-18.066 8.652-2.148 19.801.005 22.353 10.291z"/><path fill="#77B255" d="M24.448 15.558c1.789 7.211 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f95e.svg b/browser/components/torpreferences/content/bridgemoji/1f95e.svg
new file mode 100644
index 0000000000000..795fb134113d3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f95e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#929497" cx="18" cy="23.949" rx="18" ry="10"/><ellipse fill="#CCD6DC" cx="18" cy="22.199" rx="18" ry="10"/><path fill="#F19020" d="M32 20.393c0 4.295-6.268 7.778-14 7.778S4 24.688 4 20.393s6.268-7.778 14-7.778 14 3.483 14 7.778z"/><path fill="#FAAA35" d="M32 18.239c0 4.295-6.268 7.778-14 7.778S4 22.534 4 18.239s6.268-7.778 14-7.778 14 3.483 14 7.778z"/><path fill="#F19020" d="M32 16.085c0 4.295-6.268 7.778-14 7.77 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f965.svg b/browser/components/torpreferences/content/bridgemoji/1f965.svg
new file mode 100644
index 0000000000000..7f1692794b5e5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f965.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8B5E3C" d="M5.506 30.167c-7.03-7.029-6.397-19.059 1.414-26.87l25.456 25.456c-7.811 7.811-19.841 8.443-26.87 1.414z"/><path fill="#603913" d="M6.92 3.297c-3.905 3.905-1.373 12.77 5.656 19.8 7.031 7.029 15.895 9.561 19.799 5.656 3.905-3.904 1.374-12.769-5.657-19.799C19.69 1.924 10.825-.607 6.92 3.297z"/><path fill="#F5F8FA" d="M31.591 24.217c.229.229.56.336.887.276.387-.071.696-.362.79-.745.067-.269 1.575-6.67-3.013-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f966.svg b/browser/components/torpreferences/content/bridgemoji/1f966.svg
new file mode 100644
index 0000000000000..ee2bc1cb1092e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f966.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M23.013 24.322l-5.546-5.546-5.547-5.546S12.375 24.413.737 27.323c0 0 1.032 2.487 3.364 4.819s4.819 3.364 4.819 3.364c2.91-11.639 14.093-11.184 14.093-11.184z"/><path fill="#5C913B" d="M13.83 16.594c-.727 3.637-5.092 9.456-5.092 9.456l8.728-8.728c2.909-2.909-3.636-.728-3.636-.728zm12.365 6.546s-10.91.727-17.457 5.819c8.001-8.001 11.638-8.728 11.638-8.728l5.819 2.909z"/><path fill="#3E721D" d="M30.156 28.19 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f968.svg b/browser/components/torpreferences/content/bridgemoji/1f968.svg
new file mode 100644
index 0000000000000..10bd682b6834c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f968.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M35 16c0-8-6-11-12-11-1.738 0-3.472.371-5 1.097C16.472 5.371 14.738 5 13 5 7 5 1 8 1 16c0 3 1.314 5.662 3 8 .434.602.903 1.146 1.4 1.647-.357.603-.616 1.091-.779 1.353C4 28 5 29 6 29c.69 0 1.205-.617 1.745-1.482C10.552 29.273 14.023 30 18 30s7.448-.727 10.255-2.482C28.795 28.383 29.31 29 30 29c1 0 2-1 1.379-2-.163-.262-.422-.75-.779-1.353.497-.501.967-1.046 1.4-1.647 1.686-2.338 3-5 3-8zm-17 1.207C16.578 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f96c.svg b/browser/components/torpreferences/content/bridgemoji/1f96c.svg
new file mode 100644
index 0000000000000..6ef36cb221f1a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f96c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M29.866 24.625c2.522-.841 5.884-4.203 5.884-5.884s-2.522-.841-1.681-3.362 1.681-5.043 0-6.724-3.362 0-5.043-1.681 0-3.362-1.681-5.043-4.203-.841-6.724 0S18.939.25 17.258.25s-5.043 3.362-5.884 5.884-2.521.84-3.361 3.362c-.78 2.341.177 4.823-1.972 9.748-1.026 1.621-1.995 3.178-2.899 4.543C-.836 29.792.449 35.552.449 35.552s5.76 1.285 11.765-2.693c1.365-.904 2.922-1.873 4.543-2.899 4.925-2.15 7.407-1.192 9.7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f96d.svg b/browser/components/torpreferences/content/bridgemoji/1f96d.svg
new file mode 100644
index 0000000000000..b5607c107cc4d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f96d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M26.38 3.539c.483-.039 1.259-.655 1.664-.595.405.06 1.573 1.078 1.67 1.283.097.205-.637 1.178-.746 1.48-.109.302-.64.239-1.51-.543-.869-.782-1.078-1.625-1.078-1.625z"/><path fill="#EA564B" d="M12.3 3.139c4.545-2.66 11.267-2.611 13.685-.58 1.617 1.358 2.942 2.401 4.474 3.011 2.022.804 3.692 3.154 4.415 5.384.981 3.023 1.68 12.579-8.029 18.516-6.233 3.812-17.656 5.363-18.961 4.723-.984-.483-4.621-2.09-6.675 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f96f.svg b/browser/components/torpreferences/content/bridgemoji/1f96f.svg
new file mode 100644
index 0000000000000..6a65f4c19330d
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f96f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M18.09 9.295C7.847 9.295.573 13.188.573 18.053c0 7.569 5.839 15.57 17.517 15.57 11.678 0 17.517-8.001 17.517-15.57 0-4.865-7.274-8.758-17.517-8.758z"/><path fill="#D99E82" d="M18.09 8.322C7.847 8.322.573 11.961.573 17.927c0 5.966 7.273 9.858 17.517 9.858 10.243 0 17.517-4.146 17.517-9.858S28.333 8.322 18.09 8.322z"/><path fill="#CCD6DD" d="M2.519 20.973c-.973.973 4.866 6.812 7.785 3.893 2.919-2.919 5.942 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f980.svg b/browser/components/torpreferences/content/bridgemoji/1f980.svg
new file mode 100644
index 0000000000000..8f45b53dd4f91
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f980.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A0041E" d="M6.96 20.637c.068.639-.543 1.228-1.368 1.315-.824.089-1.547-.357-1.615-.995-.068-.639.544-1.227 1.368-1.314.824-.089 1.547.356 1.615.994zm2.087 2.717c.125.818-1.756 2.544-2.576 2.669-.819.125-1.584-.438-1.708-1.257-.125-.818.58-1.14 1.398-1.265.819-.124 2.761-.965 2.886-.147zm1.783 2.104c.173.81-1.628 3.927-2.438 4.1-.811.173-1.645.146-1.817-.665-.173-.81.306-1.688 1.116-1.861.81-.174 2.966-2.384 3.139-1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f981.svg b/browser/components/torpreferences/content/bridgemoji/1f981.svg
new file mode 100644
index 0000000000000..674ff24e628ae
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f981.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M32.325 10.958s2.315.024 3.511 1.177c-.336-4.971-2.104-8.249-5.944-10.13-3.141-1.119-6.066 1.453-6.066 1.453s.862-1.99 2.19-2.746C23.789.236 21.146 0 18 0c-3.136 0-5.785.227-8.006.701 1.341.745 2.215 2.758 2.215 2.758S9.194.803 6 2.053C2.221 3.949.481 7.223.158 12.174c1.183-1.19 3.55-1.215 3.55-1.215S-.105 13.267.282 16.614c.387 2.947 1.394 5.967 2.879 8.722C3.039 22.15 5.917 20 5.917 20s-2.492 5.96-.581 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f984.svg b/browser/components/torpreferences/content/bridgemoji/1f984.svg
new file mode 100644
index 0000000000000..19d9ff1613d2b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f984.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1CDD5" d="M36 19.854C33.518 9.923 25.006 1.909 16.031 6.832c0 0-4.522-1.496-5.174-1.948-.635-.44-1.635-.904-.912.436.423.782.875 1.672 2.403 3.317C8 12.958 9.279 18.262 7.743 21.75c-1.304 2.962-2.577 4.733-1.31 6.976 1.317 2.33 4.729 3.462 7.018 1.06 1.244-1.307.471-1.937 3.132-4.202 2.723-.543 4.394-1.791 4.394-4.375 0 0 .795-.382 1.826 6.009.456 2.818-.157 5.632-.039 8.783H36V19.854z"/><path fill="#60379A" d="M31 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f986.svg b/browser/components/torpreferences/content/bridgemoji/1f986.svg
new file mode 100644
index 0000000000000..085c900634683
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f986.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M12.75 17.75c1.226 2.195 1.856-1.361 9.312-2.625s13.729 4.454 13.859 5.413c.132.958-4.447 9.462-9.462 9.462H10.75c-4.143 0-7.022-7.224-4-11.438 0 0 4.5-3.5 6-.812z"/><path fill="#C1694F" d="M13.008 18.136C8.02 25.073 6.969 30 10.75 30c-4.143 0-6.578-6.188-4.468-11.031.463-1.064 1.758-2.492 1.758-2.492l4.179-.008c.162.32.599 1.365.789 1.667z"/><path fill="#E1E8ED" d="M20.062 22.75c6.672-2.682 15.729-3.171 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f987.svg b/browser/components/torpreferences/content/bridgemoji/1f987.svg
new file mode 100644
index 0000000000000..4ebb5ad4c15f5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f987.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M23 21c0 6.352-3 10-5 10s-5-3.648-5-10 2.239-7 5-7c2.762 0 5 .648 5 7z"/><circle fill="#66757F" cx="18" cy="11" r="4"/><path fill="#66757F" d="M14 11c-2-5 1-7 1-7s2 1 2 4-3 3-3 3z"/><path fill="#546066" d="M14.668 9.904c-.776-2.457-.119-3.896.403-4.58C15.486 5.773 16 6.608 16 8c0 1.268-.739 1.734-1.332 1.904z"/><path fill="#66757F" d="M22 11c2-5-1-7-1-7s-2 1-2 4 3 3 3 3zm-5.984 3c-1.62 1.157-10 2-9-5 .142 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f988.svg b/browser/components/torpreferences/content/bridgemoji/1f988.svg
new file mode 100644
index 0000000000000..f6381c521eaf5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f988.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M36 21c0 5-3 9-11 11-7.062 1.766-21-.934-21-2 0-1.129 2.503-1.371 6.812-1.125 10.938.625 13.75-3.857 12-5.25-3.062-2.437-6.437.375-12.062-.125C3.782 22.881 0 17.472 0 16c0-2 11.716-8 20-8s16 4.25 16 13z"/><path fill="#292F33" d="M15 12.5c0 .829-.671 1.5-1.5 1.5s-1.5-.671-1.5-1.5.671-.5 1.5-.5 1.5-.329 1.5.5z"/><path fill="#66757F" d="M14 9c2-5 5.291-9 7.958-9S21 2 26 10 14 9 14 9zM3 30c0-4-1.04-6 .146-6s6 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f989.svg b/browser/components/torpreferences/content/bridgemoji/1f989.svg
new file mode 100644
index 0000000000000..bb0d461ab47a7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f989.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M7.317 11c-5.723 9.083.958 18 .958 18s2.874-.442 6.875-5.2c4-4.758-7.833-12.8-7.833-12.8zm21.342 0c5.723 9.083-.958 18-.958 18s-2.874-.442-6.875-5.2C16.825 19.042 28.659 11 28.659 11z"/><path fill="#FFAC33" d="M15.203 31.557c-.123-.229-.317-.384-.531-.496-2.032-2.172-.589-4.717-.589-4.717 0-.703 1.271-2.544 0-2.544l-1.272 1.272c-1.272 1.271-1.272 5.089-1.272 5.089H8.995c-.703 0-1.272.568-1.272 1.272 0 .70 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f98a.svg b/browser/components/torpreferences/content/bridgemoji/1f98a.svg
new file mode 100644
index 0000000000000..2cb2f986dfa21
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f98a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#F4900C" d="M13.431 9.802c.658 2.638-8.673 10.489-11.244 4.098C.696 10.197-.606 2.434.874 2.065c1.48-.368 11.9 5.098 12.557 7.737z"/><path fill="#A0041E" d="M11.437 10.355c.96 1.538-1.831 4.561-3.368 5.522-1.538.961-2.899-.552-4.414-4.414-.662-1.689-1.666-6.27-1.103-6.622.562-.351 7.924 3.976 8.885 5.514z"/><path fill="#F4900C" d="M22.557 9.802C21.9 12.441 31.23 20.291 33.802 13.9c1.49-3.703 2.792-11.466 1.312-11.835 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f98b.svg b/browser/components/torpreferences/content/bridgemoji/1f98b.svg
new file mode 100644
index 0000000000000..22c6ead8ffcf6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f98b.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#1C6399" d="M20.004 20.243c-.426 0-.858.01-1.294.031-.436 1.268-.468 2.747 0 5.097.328 1.646 2.659 6.299 4.584 7.933.683.58 1.638.884 2.69.884 2.144 0 4.691-1.265 6.157-4.034 3.001-5.671-3.474-9.911-12.137-9.911z"/><path fill="#1C6399" d="M33.666 1.973c-.204 0-.425.021-.663.066-3.182.601-9.302 5.126-14.287 11.771 0 0-.789 5.16-.789 6.194 0 .336 1.264.5 3.058.5 3.717 0 9.709-.705 11.424-2.041 1.898-1.479 3.65-9.804 3. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f98c.svg b/browser/components/torpreferences/content/bridgemoji/1f98c.svg
new file mode 100644
index 0000000000000..86623680c2432
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f98c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M15.971 15.083c-1.458-2.333-.667-7.708 0-8.958s-.542-2.458-1.5-.458-.996 3-3.162 2.458-1.088-3.292-.379-5.625c.729-2.4-.917-1.959-1.667-.458-.75 1.5-1.254 5.693-2.901 5.984-1.647.291-6.099.599-2.851-5.651C4.818-.139 2.773-.656 1.68 1.459.361 4.007-.404 7.25.221 8.625c1.113 2.448 3.483 2.95 6.983 2.284s6.101-.634 6.101 1.133c0 1.872.208 3.458 1.042 3.625s1.624-.584 1.624-.584zm4.057 0c1.458-2.333.667-7.708 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f98e.svg b/browser/components/torpreferences/content/bridgemoji/1f98e.svg
new file mode 100644
index 0000000000000..1164a73b64f12
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f98e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M15.66 6.844c.485-2.03.384-3.139-.553-3.677-.936-.537.337-2.666 1.977-.793 1.641 1.873 1.428 3.618.662 4.853-.767 1.234-2.336.66-2.086-.383zm-.48 2.951c-.916 1.877-1.699 2.668-2.764 2.487-1.064-.18-1.435 2.272 1.023 1.869 2.457-.403 3.401-1.886 3.595-3.326.193-1.44-1.383-1.994-1.854-1.03zm11.336 6.261c-2.072-1.377-5.382 1.43-5.699 2.28-.317.85 1.721 3.461 1.146 4.94-.577 1.477 1.142 1.768 1.92.491.778-1.2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f98f.svg b/browser/components/torpreferences/content/bridgemoji/1f98f.svg
new file mode 100644
index 0000000000000..0d07017ab4fdc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f98f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M27.295 7.526c-1.152-3.054-2.65-6.8-8.299-6.915-1.759-.036-1.52.539-.347 1.02 2.248.922-2.474 5.438 4.759 7.4 5.648 1.531 5.039 1.549 3.887-1.505z"/><path fill="#99AAB5" d="M36.004 3.903c-7.737 0-14.411 2.514-18.105 5.757-4.875 4.28-5.38 10.306-14.034 15.66-2.847 1.761-.423 7.517 1.153 9.618 1.908 2.544 28.617.238 30.987-8.777l-.001-22.258z"/><path fill="#66757F" d="M8.676 29.652c1.011.507 1.787 1.051 1.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f992.svg b/browser/components/torpreferences/content/bridgemoji/1f992.svg
new file mode 100644
index 0000000000000..233e3c989dc0e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f992.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path d="M22.217 35.615h-.002c-.804-.142-1.34-.908-1.198-1.712l.59-3.344s.68-3.165-1.076-5.449c1.259-1.171 5.024.085 5.024.085l-1.626 9.221c-.142.804-.908 1.34-1.712 1.199zm-12.692-.021h-.002c-.804-.142-1.34-.908-1.198-1.712l1.312-7.025s.503-2.419.503-4.439c1.142-.439 2.723 2.757 2.723 2.757l-1.626 9.221c-.143.803-.909 1.339-1.712 1.198zm21.277-9.823c-.537 0-.977-.431-.985-.969-.012-.723-.304-4.326-4.925-4.326-.545 0-.985-.441-. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f993.svg b/browser/components/torpreferences/content/bridgemoji/1f993.svg
new file mode 100644
index 0000000000000..2cb4b9eb2e8bc
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f993.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E1E8ED" d="M23.283 23.275s1.374 1.635 2.733 10.047c.143.883.201 1.775.217 2.678H36V7.448C31.613 3.975 25.601 3.259 18.322 5.69c0 0-5.408-3-6.147-3.739-.719-.72-1.857-1.556-1.235.35.364 1.112.764 2.373 2.358 4.862-3.436 2.036-4.513 4.68-8.558 13.341C1.652 27.12.08 29.269.937 31.797c1.13 3.337 5.316 5.595 8.844 3.021 1.919-1.4 2.246-3.913 6.225-6.223 3.653-.065 7.277-1.604 7.277-5.32z"/><path fill="#292F33" d="M36 6.0 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f994.svg b/browser/components/torpreferences/content/bridgemoji/1f994.svg
new file mode 100644
index 0000000000000..ebbfc2ad25cd8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f994.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#6D6E71" d="M28.688 20.312C28.688 26.217 23.904 31 18 31c-5.903 0-10.688-4.783-10.688-10.688 0-5.903 4.786-10.689 10.688-10.689 5.904.001 10.688 4.786 10.688 10.689z"/><path fill="#662113" d="M26 33.5H10c-1.665 0-2.479-1.339-2.763-2.31l-2.664-.056c-.153-.003-.297-.077-.389-.2-.092-.122-.123-.281-.083-.43l.594-2.216-2.446-.651c-.152-.041-.276-.15-.335-.296s-.046-.311.035-.445l1.199-1.993-2.156-1.192c-.139-.077-.233-.2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f995.svg b/browser/components/torpreferences/content/bridgemoji/1f995.svg
new file mode 100644
index 0000000000000..fb046c69c7bc8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f995.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#3E721D" d="M17.68 22s1.937 7.873 1.187 9.373c-2.373 4.746-1.187 4.627 0 4.627h2.373c2.373 0-1.187-14-1.187-14H17.68zM5.255 19.387s-.436 7.993-1.187 9.493C1.695 33.626 1.695 36 2.882 36h2.373c1.186 0 1.187-4.154 1.187-5.34 0-1.187 1.187-8.603 1.187-8.603l-2.374-2.67z"/><path fill="#77B255" d="M12.374 5.251c-2.068.017-4.209-.435-5.523 2.099-1.404 2.709-2.065 8.579.776 9.664 2.479.947 7.933-1.187 13.866 1.187 5.933 2.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f998.svg b/browser/components/torpreferences/content/bridgemoji/1f998.svg
new file mode 100644
index 0000000000000..8a72b40a7af20
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f998.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BF6952" d="M6.513.886c0 .984.649 3.926 1.153 5.047s-.505.35-1.442-.771-1.657-2.244-1.225-3.435S6.513-.446 6.513.886z"/><path fill="#D99E82" d="M.314 10.699c-.004.961 1.22 2.097 2.883 1.682 1.333-.332 3.234-1.359 3.316-.561.082.798-1.179 3.471-.629 6.276.93 4.74 2.379 8.873 7.201 10.095 0 0 .723 2.775 1.479 3.986.694 1.111 1.029 2.022.45 2.215-.579.193-3.472.386-4.694.579C9.099 35.164 8.906 36 10.256 36H17.2c.707 0 . [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f999.svg b/browser/components/torpreferences/content/bridgemoji/1f999.svg
new file mode 100644
index 0000000000000..b505faf82d7a7
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f999.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M6.755 2.246c-.443-.368-1.05-.976-1.629-1.299-.497-.277-.247.918.173 1.391.421.473 1.824 1.342 2.455 1.815.631.473.936.398.315-.473-.649-.911-1.314-1.434-1.314-1.434z"/><path fill="#D99E82" d="M8.191.736c.328.339.735 2.394.735 2.394s1.282.092 2.407.786c4.5 2.776 2.542 9.542 3.944 11.102.432.48 9.681-1.643 14.222.544 3.844 1.852 3.083 4.646 4.083 5.271.758.474-2 1.25-2.578-2.313-.506 11.147-1.072 13.867-1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f99a.svg b/browser/components/torpreferences/content/bridgemoji/1f99a.svg
new file mode 100644
index 0000000000000..7606d382ac63e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f99a.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#292F33" d="M14.5 36c-.128 0-.256-.049-.354-.146-.195-.195-.195-.512 0-.707L16 33.293V31.5c0-.276.224-.5.5-.5s.5.224.5.5v2.207l-2.146 2.146c-.098.098-.226.147-.354.147z"/><path fill="#292F33" d="M16.5 34h-3c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h3c.276 0 .5.224.5.5s-.224.5-.5.5zm5 2c-.128 0-.256-.049-.354-.146L19 33.707V31.5c0-.276.224-.5.5-.5s.5.224.5.5v1.793l1.854 1.854c.195.195.195.512 0 .707-.098.097-.226.146-.354.14 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f99c.svg b/browser/components/torpreferences/content/bridgemoji/1f99c.svg
new file mode 100644
index 0000000000000..f7f743c52258f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f99c.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M17.5 35c-.128 0-.256-.049-.354-.146-.195-.195-.195-.512 0-.707L19 32.293V29.5c0-.276.224-.5.5-.5s.5.224.5.5v3.207l-2.146 2.146c-.098.098-.226.147-.354.147z"/><path fill="#66757F" d="M19.5 33h-3c-.276 0-.5-.224-.5-.5s.224-.5.5-.5h3c.276 0 .5.224.5.5s-.224.5-.5.5zm3 2c-.128 0-.256-.049-.354-.146-.195-.195-.195-.512 0-.707L24 32.293V29.5c0-.276.224-.5.5-.5s.5.224.5.5v3.207l-2.146 2.146c-.098.098-.226.147-.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f99d.svg b/browser/components/torpreferences/content/bridgemoji/1f99d.svg
new file mode 100644
index 0000000000000..30c88720fb800
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f99d.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M10.668 5.616C9.032 2.479 4.439 1.005 3.584 2.298s.707 10.152 1.757 9.967c1.051-.185 5.327-6.649 5.327-6.649z"/><path fill="#292F33" d="M9.841 7.674c-1.27-2.68-4.696-4.82-5.304-3.745-.435.771.122 5.263.757 7.696l4.547-3.951z"/><path fill="#99AAB5" d="M25.284 5.616c1.636-3.137 6.228-4.611 7.084-3.318s-.708 10.152-1.758 9.967c-1.051-.185-5.326-6.649-5.326-6.649z"/><path fill="#292F33" d="M26.36 7.674c1.231- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f99e.svg b/browser/components/torpreferences/content/bridgemoji/1f99e.svg
new file mode 100644
index 0000000000000..8df2a7467606b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f99e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><g fill="#BE1931"><path d="M14.847 22.402h-.064c-2.117-.069-4.919-1.006-6.246-5.077-.135-.413.089-.864.503-.999.414-.135.857.085.992.499l.003.011c.312.959 1.263 3.876 4.8 3.991.435.015.776.378.762.812-.014.415-.344.743-.75.763zm-5.348 5.637c.151-.221.411-.359.698-.342 3.034.181 4.578-1.938 5.086-2.634.256-.352.749-.429 1.1-.173.352.256.414.747.173 1.1-1.698 2.33-3.869 3.434-6.453 3.28-.434-.026-.766-.399-.74-.834.01-.148.059-.28 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a3.svg b/browser/components/torpreferences/content/bridgemoji/1f9a3.svg
new file mode 100644
index 0000000000000..1aa87190b9ea1
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a3.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#662113" d="M9.396 20.496s2.053 6.29 2.053 8.144.023 3.271-.374 4.463c-.397 1.192-.066 1.523 1.523 1.589 1.589.066 3.774 0 3.973-1.192.199-1.192-.156-1.55-.089-2.742.066-1.192.331-4.37.53-4.701.199-.331 3.906.662 4.635.927s3.046.265 3.112 1.059c.066.795.487 4.86.288 5.655-.199.795.397.993 2.251.927 1.986-.071 3.112-.463 2.979-1.324-.132-.861-.222-2.146.043-3.139s1.258-3.84 1.324-4.767c0 0 .927-2.053.861-3.575-.066-1. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a4.svg b/browser/components/torpreferences/content/bridgemoji/1f9a4.svg
new file mode 100644
index 0000000000000..1dbac1e3177b3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a4.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E08110" d="M17.338 26.109c0 1.515-.032 2.456-.771 2.813-.739.357-3.354.065-3.805.339-.45.274-.845.792-.42.78.425-.012 1.004.13 1.004.13s-.821.222-1.127.531-.464.961-.148.923c.316-.038 1.869-.427 2.177-.429 0 0-.386.482-.429.816-.043.335.229.478.229.478s1.118-.495 1.551-.697c.433-.202 1.161-.83 1.504-.977.343-.147.768-.158 2.126.249 0 0 .016-.655-.51-.859-.526-.205-.915-.058-.802-.847.134-.936.436-2.834.713-3.342.278 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a5.svg b/browser/components/torpreferences/content/bridgemoji/1f9a5.svg
new file mode 100644
index 0000000000000..7371a8ed19f1c
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#7A5C44" d="M6 21c-1.105 0-2-.895-2-2V4c0-1.105.895-1 2-1s2-.105 2 1c0 0-.606 6.424 0 11.997C8.54 20.971 12 22 12 22c0 1.105-4.895-1-6-1zm14 4.999c-1.105 0-2-.895-2-2v-21c0-1.105.895-1 2-1s2-.105 2 1c0 0-.446 5.108-.125 9.297.32 4.187.125 11.703.125 11.703 0 1.104-.895 2-2 2z"/><path fill="#662113" d="M36 4L0 8V4l36-2z"/><path fill="#A78E81" d="M22.644 18.406c-.633 1.126-1.363 1.809-2.16 2.193-.402.041-1.132-.085-1.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a6.svg b/browser/components/torpreferences/content/bridgemoji/1f9a6.svg
new file mode 100644
index 0000000000000..5ea0173a5008b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A78E81" d="M2.381 8.671c-1.573 0-2.359.786-1.573 1.573 1.573 1.573 3.145 1.573 3.931.786L2.381 8.671zm6.29-6.29c0-1.573.786-2.359 1.573-1.573 1.573 1.573 1.573 3.145.786 3.931L8.671 2.381zm-4.717 9.435s8.547 14.433 14.939 16.512c3.344 1.087 5.692.599 7.863-1.573s2.406-4.447 1.573-7.863C26.937 13.188 11.816 3.954 11.816 3.954l-7.862 7.862z"/><path fill="#A78E81" d="M16.129 26.852c4.231 5.36 8.793 7.807 10.465 6.519 1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a7.svg b/browser/components/torpreferences/content/bridgemoji/1f9a7.svg
new file mode 100644
index 0000000000000..0382845585341
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a7.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E26000" d="M36 32c0-12-2-28-18-28S0 20 0 32h8v-5c0-1 1-1 1 0 0 7 4 6 4 6l2 2 1-1c0-.552 1.448-1 2-1s2 .448 2 1l1 1 2-2s4 1 4-6c0-1 1-1 1 0v5h8z"/><circle fill="#E26000" cx="18" cy="13.5" r="11.5"/><path fill="#D9B981" d="M32 31c-3 0-4 1-4 1v1c0 .552.448 1 1 1s1-.448 1-1c0 .552.448 1 1 1s1-.448 1-1c0 .552.448 1 1 1s1-.448 1-1c0 .552.448 1 1 1s1-.448 1-1v-1s-1-1-4-1zM4 31c-3 0-4 1-4 1v1c0 .552.448 1 1 1s1-.448 1-1c0 . [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9a9.svg b/browser/components/torpreferences/content/bridgemoji/1f9a9.svg
new file mode 100644
index 0000000000000..aaa5cfa26d386
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9a9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EA596E" d="M22.903 27.55c1.218-.812 2.232-.783 3.073-.058-.435-1.131-2.348-3.624-2.348-3.624l-.725 3.682z"/><path fill="#F4ABBA" d="M22.949 27.679c-.03 0-.06-.002-.091-.006-.401-.05-.686-.415-.637-.816l.426-3.448c.023-.188.117-.358.264-.478l4.448-3.624-7.108-3.833c-.356-.192-.488-.636-.296-.992.193-.356.636-.489.992-.297l8.072 4.353c.214.116.357.332.381.575.023.244-.077.482-.267.636l-5.07 4.13-.39 3.156c-.044.373-.3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9ad.svg b/browser/components/torpreferences/content/bridgemoji/1f9ad.svg
new file mode 100644
index 0000000000000..6904e81a57331
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9ad.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><g fill="#99AAB5"><path d="M3.016 5.201c-.062 0-.116-.043-.128-.105-.105-.555-.092-1.586.168-1.875.047-.053.129-.058.184-.01.053.048.058.13.01.184-.159.176-.216 1.072-.106 1.652.013.071-.033.139-.104.152-.008.002-.016.002-.024.002zm.517.9c-.057 0-.109-.038-.125-.096-.203-.74-.075-1.858-.008-2.097.019-.068.093-.107.16-.09.069.019.109.091.09.16-.069.246-.172 1.299.008 1.959.019.069-.022.141-.091.16-.011.003-.023.004-.034.004z"/><p [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9c1.svg b/browser/components/torpreferences/content/bridgemoji/1f9c1.svg
new file mode 100644
index 0000000000000..1f966c363b0f5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9c1.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BBDDF5" d="M5 21.875s1.589 5.727 2 8.482c.464 3.111 3.571 5.571 11 5.571s10.536-2.461 11-5.571c.411-2.755 2-8.482 2-8.482H5z"/><path fill="#662113" d="M5.094 21.969c.25 1.219.694 1.994 1.344 1.594.65-.4 1.65-.193 1.344.625-.281.75.969 1.094 1.5.656.509-.419 1.555-.881 1.656.062.094.875 1.168 1.11 1.656.469.5-.656 1.875-.394 2.125.406s1.594.688 1.969.125c.355-.533.713-.885 1.312-.885V25c.6 0 .957.373 1.312.906.375.56 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9c3.svg b/browser/components/torpreferences/content/bridgemoji/1f9c3.svg
new file mode 100644
index 0000000000000..51a3f26d4d9d5
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9c3.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#E3A919" d="M28.337 32.563l-2.579 3.082c-.552.553-1.758.007-1.758-.545V12.001c0-.552 2.372-4.501 5-4.501l-.028 23.007c0 1.134-.093 1.308-.635 2.056z"/><path fill="#FFD983" d="M26 10.454H9l.194-.348L12.74 7.5c.486-.379.831-.5 1.383-.5h14.363c.188 0 .514.277.344.47L26 10.454z"/><path fill="#FFCC4D" d="M25 36H10c-.552 0-1-.448-1-1V10.454S9.448 10 10 10h15c.552 0 1 .454 1 .454V35c0 .552-.448 1-1 1z"/><circle fill="#F4900 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9c5.svg b/browser/components/torpreferences/content/bridgemoji/1f9c5.svg
new file mode 100644
index 0000000000000..ab68cb1d6c197
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9c5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D39954" d="M26.617 32.441c-.02-.039-.373-.678-1.025-1.172.103-.421.056-.835-.307-1.103-.9-.662-8.82.226-9.386 3.057-.234 1.171.588 1.171 1.038.809-.137.499-.212 1.011-.169 1.49.024.269.261.467.531.444.029-.002.057-.007.084-.015.225-.06.381-.275.36-.516-.03-.334.022-.694.111-1.051.201.18.424.327.686.269.312-.07.51-.378.64-.712.015.212.046.348.05.363.069.259.333.411.593.345l.006-.002c.257-.069.411-.333.348-.591-.004-. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9c7.svg b/browser/components/torpreferences/content/bridgemoji/1f9c7.svg
new file mode 100644
index 0000000000000..cc92a9d18792e
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9c7.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#939598" cx="18" cy="26" rx="18" ry="10"/><ellipse fill="#CCD6DD" cx="18" cy="24" rx="18" ry="10"/><path fill="#F4900C" d="M15.714 32.54L2.575 24.857c-1.262-.738-.929-3.558-.929-4.785l14.069-6.657c1.262-.738 3.308-.738 4.57 0L34.37 20.26c0 1.689.316 3.859-.947 4.597L20.285 32.54c-1.262.738-3.309.738-4.571 0z"/><path fill="#FFAC33" d="M15.714 29.279L2.575 21.596c-1.262-.738-1.262-1.934 0-2.672l13.139-7.683c1.262-.7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9c9.svg b/browser/components/torpreferences/content/bridgemoji/1f9c9.svg
new file mode 100644
index 0000000000000..16b0db823d27a
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9c9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#8A4B38" d="M26.875 14.6C25.1 12.778 21.55 12.778 18 12.778s-7.1 0-8.875 1.822c-2.663 2.733-5.325 9.72-3.55 15.186C7.35 35.252 15.132 35.814 18 35.814s10.65-.562 12.425-6.028c1.775-5.465-.887-12.453-3.55-15.186z"/><path fill="#A5503C" d="M25.58 14.412c-1.516-1.556-4.548-1.556-7.58-1.556s-6.064 0-7.58 1.556c-2.274 2.334-4.548 8.302-3.032 12.969C8.904 32.049 15.55 32.529 18 32.529s9.096-.48 10.611-5.148c1.516-4.668-.75 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9d9.svg b/browser/components/torpreferences/content/bridgemoji/1f9d9.svg
new file mode 100644
index 0000000000000..553708315577b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9d9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#C63900" cx="18" cy="19.024" rx="15" ry="3.529"/><path fill="#FA743E" d="M26.276 28.276h-16c-2.486 0-4.774 1.443-5.762 3.449-.368-.415-.907-.619-1.514-.619-1.1 0-2 .935-2 1.998V36h31v-1.931c0-3.199-2.411-5.793-5.724-5.793z"/><path fill="#FFDC5D" d="M14 25v3.234c0 .004.011.007.015.011.132.237 3.737 6.739 3.989 6.739.253 0 3.854-6.502 3.985-6.739.004-.004.01-.007.01-.011V25H14z"/><path fill="#F9CA55" d="M14 27.598c1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9da.svg b/browser/components/torpreferences/content/bridgemoji/1f9da.svg
new file mode 100644
index 0000000000000..5c9ea3625c0a9
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9da.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#ABDFFF" d="M20.769 20.273c-4.558 6.089-5.676 12.675-2.497 14.71 3.179 2.035 9.451-1.252 14.008-7.341 4.558-6.089 2.752-17.029 2.497-16.631-1.777 2.774-9.45 3.173-14.008 9.262z"/><path fill="#ABDFFF" d="M15.255 20.273c4.558 6.089 5.676 12.675 2.498 14.71-3.179 2.035-9.451-1.252-14.009-7.341S.904 10.673 1.247 11.011C5 14.71 10.698 14.184 15.255 20.273z"/><path fill="#55ACEE" d="M4.598 17.829c-.484-.808-1.158-1.652-.77 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9dc.svg b/browser/components/torpreferences/content/bridgemoji/1f9dc.svg
new file mode 100644
index 0000000000000..52f120c41f499
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9dc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFDC5D" d="M7.399 17.278c-1.878 1.035-3.24 2.455-3.336 2.617-.239.404-.437 1.592-.276 2.415.145.741.177 2.238.66 2.915.198.277.107.759-.032 1.208-.419 1.353.306 3.199-.145 2.882-.918-.644-1.074-1.83-1.047-2.528.015-.393-.166-.884-.257-1.138-.059-.16-1.245-3.203-1.518-4.54-.148-.722-.333-1.302.275-2.155.903-1.266 2.094-2.996 3.311-3.885 2.012-1.471 3.936-1.687 3.936-1.687s-.911 3.532-1.571 3.896zm23-6.626c-.084.009-. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9e0.svg b/browser/components/torpreferences/content/bridgemoji/1f9e0.svg
new file mode 100644
index 0000000000000..653427da92a85
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9e0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#EA596E" d="M29.896 26.667c.003.283-.07.653-.146.958-.531 2.145-2.889 4.552-6.208 4.333-3.008-.198-5.458-1.642-5.458-3.667s2.444-3.667 5.458-3.667 6.335.018 6.354 2.043z"/><path fill="#DD2E44" d="M23.542 24.964c-1.619 0-5.314.448-6.162.448-1.498 0-2.713.94-2.713 2.1 0 .558.286 1.062.744 1.438 0 0 1.006 1.009 2.818.525.793-.212 2.083-1.786 4.354-2.036 1.131-.125 3.25.75 6.974.771.16-.344.193-.583.193-.583 0-2.027-3.19 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9e2.svg b/browser/components/torpreferences/content/bridgemoji/1f9e2.svg
new file mode 100644
index 0000000000000..c2dd6c6f2f1e6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9e2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse transform="rotate(-87.495 21.25 5.018)" fill="#2B7BB9" cx="21.249" cy="5.018" rx=".944" ry="1.565"/><path fill="#292F33" d="M29.831 27.74s3.523 1.385 5.185.088c.125-1.17-3.311-2.035-3.311-2.035l-1.874 1.947zM7.527 25.549S2.271 33.375.77 32.031c0 0-.425-1.397 1.23-4.218 1.656-2.822 5.527-2.264 5.527-2.264z"/><path fill="#1C6399" d="M19.766 4.82s-8.537.43-13.735 16.348c7.494 0 16.785.555 16.785.555s7.799 3.982 8.889 4.469 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9e6.svg b/browser/components/torpreferences/content/bridgemoji/1f9e6.svg
new file mode 100644
index 0000000000000..44fc31080aaa6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9e6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M27 19.276c-.983 0-1.893.294-2.667.784v4.549h-2.3c.175 2.603 2.319 4.667 4.966 4.667 2.761 0 5-2.239 5-5v-5H27z"/><path fill="#1C6399" d="M22.995 22.999l.005-16 9 .003-.005 16z"/><path fill="#1C6399" d="M24.202 21.451l6.354 6.354-6.878 6.878-6.354-6.354z"/><path fill="#55ACEE" d="M30 4h-5c-1.1 0-2 .9-2 2v2h9V6c0-1.1-.9-2-2-2zM15 15.276c-.983 0-1.893.294-2.667.784v4.549h-2.3c.175 2.603 2.319 4.667 4.966 4. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9e9.svg b/browser/components/torpreferences/content/bridgemoji/1f9e9.svg
new file mode 100644
index 0000000000000..ae4bf566814b6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9e9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#78B159" d="M26.093 4.612c-.498.498-.629.839-.728 1.029-.66 1.266-1.455 1.676-2.78.351-.13-.13-4.087-4.267-4.741-5.017-.427-.49-1.081-.64-1.584-.262-.38.286-4.035 3.273-5.035 4.507-.774.955-.8 2.134-.079 2.856.326.326.727.449 1.151.578.552.169 1.763.068 2.47.775 1.133 1.133.54 2.924-.917 4.421-1.497 1.457-3.288 2.05-4.421.917-.708-.708-.606-1.918-.775-2.47-.129-.424-.252-.824-.578-1.151-.721-.721-1.9-.694-2.856.079-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9ea.svg b/browser/components/torpreferences/content/bridgemoji/1f9ea.svg
new file mode 100644
index 0000000000000..8116cfa1ca017
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9ea.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M14.563 14.414L25.47 3.505l6.961 6.962-10.908 10.908z"/><path fill="#68E090" d="M8.103 34.399C2.5 34 1.5 30.062 1.635 27.932c.322-5.07 15.601-16.551 15.601-16.551l12.517 1.93c.001 0-17.389 21.392-21.65 21.088z"/><path fill="#8899A6" d="M32.326 3.708C29.405.787 26.104-.649 24.954.502c-.013.013-.022.031-.034.044-.006.006-.015.008-.021.014L2.295 23.164c-1.412 1.412-2.19 3.29-2.19 5.288 0 1.997.778 3.875 2.19 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9ec.svg b/browser/components/torpreferences/content/bridgemoji/1f9ec.svg
new file mode 100644
index 0000000000000..689cc3e440fad
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9ec.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#77B255" d="M3.019 26.246l3.432 3.432-.923.922-3.432-3.431z"/><path fill="#FFD983" d="M6.362 29.587l3.431 3.432-.923.923-3.43-3.432z"/><path fill="#FFAC33" d="M6.273 24.237l3.432 3.432-.923.923L5.35 25.16z"/><path fill="#EA596E" d="M8.998 26.962l3.432 3.432-.923.923-3.431-3.432zm3.909-9.359l3.431 3.432-.923.923-3.431-3.432z"/><path fill="#FFAC33" d="M15.631 20.329l3.432 3.431-.923.923-3.432-3.431z"/><path fill="#77B2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9ed.svg b/browser/components/torpreferences/content/bridgemoji/1f9ed.svg
new file mode 100644
index 0000000000000..fd3d583e58a96
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9ed.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#F4900C" cx="18" cy="18" r="18"/><circle fill="#FFD983" cx="18" cy="18" r="14.5"/><circle fill="#F5F8FA" cx="18" cy="18" r="13"/><path fill="#CCD6DD" d="M18 8l1.531 6.304 5.54-3.375-3.375 5.54L28 18l-6.304 1.531 3.375 5.54-5.54-3.375L18 28l-1.531-6.304-5.54 3.375 3.375-5.54L8 18l6.304-1.531-3.375-5.54 5.54 3.375z"/><path fill="#292F33" d="M17.343 20.748l8.777 5.381-5.379-8.778z"/><path fill="#DD2E44" d="M18.657 15. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9ee.svg b/browser/components/torpreferences/content/bridgemoji/1f9ee.svg
new file mode 100644
index 0000000000000..c619bb0eb5e78
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9ee.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M3 16v-2h30v2zm0 7v-2h30v2zm0 7v-2h30v2zM3 9V7h30v2z"/><path fill="#D5AB88" d="M35 33V1c0-.552-.448-1-1-1h-1c-.552 0-1 .448-1 1H4c0-.552-.448-1-1-1H2c-.552 0-1 .448-1 1v32h34zM4 4h28v29H4V4z"/><path fill="#3B94D9" d="M19 5.5c-.829 0-1.5.671-1.5 1.5 0-.829-.671-1.5-1.5-1.5s-1.5.671-1.5 1.5c0-.829-.671-1.5-1.5-1.5s-1.5.671-1.5 1.5c0-.829-.671-1.5-1.5-1.5S8.5 6.171 8.5 7c0-.829-.671-1.5-1.5-1.5S5.5 6.171 5.5 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9f2.svg b/browser/components/torpreferences/content/bridgemoji/1f9f2.svg
new file mode 100644
index 0000000000000..e81b4644e2930
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9f2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M19.469 8.319l-3.854-4.671c-.355-.43-.991-.491-1.421-.136l-3.376 2.785 5.138 6.228 3.376-2.785c.431-.355.492-.991.137-1.421z"/><path fill="#BE1931" d="M29.543 25.021l-6.228-5.138s-2.395 3.132-5.006 6.152c-1.986 2.298-6.093 2.215-8.406-.098s-2.395-6.42-.098-8.406c3.02-2.611 6.152-5.006 6.152-5.006l-5.138-6.228s-5.122 3.928-6.613 5.43c-5.468 5.508-5.487 14.418.001 19.906s14.398 5.468 19.906.001c1.502-1.491 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9f5.svg b/browser/components/torpreferences/content/bridgemoji/1f9f5.svg
new file mode 100644
index 0000000000000..3210fbeb543ab
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9f5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#553788" d="M35 36c-.419 0-.809-.265-.948-.684C33.388 33.326 31.595 32 25 32c-.553 0-1-.447-1-1s.447-1 1-1c5.635 0 9.653.797 10.948 4.684.175.524-.108 1.091-.632 1.265-.105.034-.212.051-.316.051z"/><path fill="#553788" d="M3 3h22v30H3z"/><path fill="#C1694F" d="M26 4H2c-.55 0-2-3-2-3 0-.55.45-1 1-1h26c.55 0 1 .45 1 1 0 0-1.45 3-2 3zm0 28H2c-.55 0-2 3-2 3 0 .55.45 1 1 1h26c.55 0 1-.45 1-1 0 0-1.45-3-2-3z"/><path fill= [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1f9f9.svg b/browser/components/torpreferences/content/bridgemoji/1f9f9.svg
new file mode 100644
index 0000000000000..2bcbda87e3e86
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1f9f9.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M19.175 16.825c-.706-.706-.706-1.861 0-2.567L32.433 1C33.139.294 34.294.294 35 1c.706.706.706 1.861 0 2.567L21.742 16.825c-.706.706-1.861.706-2.567 0z"/><path fill="#66757F" d="M8.839 27.365l-.204-.204c-.941-.941-.941-2.48 0-3.42l8.35-8.35c.941-.941 2.48-.941 3.42 0l.204.204c.941.941.941 2.48 0 3.42l-8.35 8.35c-.94.941-2.48.941-3.42 0z"/><path fill="#FFCC4D" d="M19.389 26.341c1.688-1.688.671-5.441-1.809-7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa73.svg b/browser/components/torpreferences/content/bridgemoji/1fa73.svg
new file mode 100644
index 0000000000000..03e70ca89e718
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa73.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#78B159" d="M31 6V1.955c0-.527-.428-.955-.955-.955H5.955C5.428 1 5 1.428 5 1.955V6L0 31l14 4 4-10.545L22 35l14-4-5-25z"/><g fill="#5D9040"><path d="M5 4h26v2H5zm8.782 2h-2.074c-1.378 4.107-5.46 5.399-7.87 5.807l-.421 2.107c3.606-.408 8.9-2.403 10.365-7.914z"/><path d="M32.583 13.914l-.421-2.107c-2.41-.408-6.491-1.701-7.87-5.807h-2.074c1.464 5.511 6.759 7.506 10.365 7.914zM17 6v21.091l1-2.636 1 2.636V6z"/><path d="M18 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa80.svg b/browser/components/torpreferences/content/bridgemoji/1fa80.svg
new file mode 100644
index 0000000000000..fc9af9be9d2d8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa80.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#BE1931" cx="17.722" cy="21.507" rx="12.917" ry="13.993"/><ellipse fill="#A0041E" cx="15.569" cy="21.507" rx="12.917" ry="13.993"/><path fill="#99AAB5" d="M28.298 13.741c-1.643 0-3.457-.825-5.227-1.629-2.124-.966-4.322-1.966-5.46-1.113l-1.167-1.555c2.06-1.544 4.79-.303 7.431.898 2.023.92 4.117 1.868 5.327 1.263.664-.331 1.155-1.195 1.459-2.566l1.899.422c-.444 2-1.259 3.27-2.49 3.885-.558.278-1.153.395-1.772.395z"/ [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa81.svg b/browser/components/torpreferences/content/bridgemoji/1fa81.svg
new file mode 100644
index 0000000000000..fd8605e468471
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa81.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#55ACEE" d="M22.45 32.289L.592 18.752 6.55.711l18.042 5.958z"/><path fill="#269" d="M20.543 29.5c-.366 0-.719-.201-.895-.551L6.929 3.687c-.249-.493-.05-1.095.443-1.343.494-.249 1.095-.05 1.343.443l12.72 25.264c.248.493.05 1.094-.444 1.343-.143.072-.297.106-.448.106z"/><path fill="#269" d="M3.12 18.48c-.366 0-.718-.201-.894-.55-.249-.493-.05-1.095.443-1.343l18.947-9.54c.49-.25 1.094-.05 1.343.443.248.493.05 1.095-.443 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa83.svg b/browser/components/torpreferences/content/bridgemoji/1fa83.svg
new file mode 100644
index 0000000000000..3de58a8f2cc51
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa83.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#CCD6DD" d="M31.497 6.06s.244-4.293-6.702-3.83c-8.617.574-18.599 9.155-18.95 17.159-.267 6.089 8.109 1.203 11.139-1.96-.045-.045 3.282 1.426 4.752 4.545-3.267 2.733-8.047 4.803-11.644 5.109-6.282.535-8.546-2.727-7.557-9.15C3.758 10 13.588.858 24.604.795c8.377-.048 6.893 5.265 6.893 5.265z"/><path fill="#662113" d="M32.19 32.317c.351-1.768-.27-19.086-4.411-22.615S5.541 7.73 3.881 8.435c-2.24.95-1.352 3.835.184 3.93 5. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa90.svg b/browser/components/torpreferences/content/bridgemoji/1fa90.svg
new file mode 100644
index 0000000000000..46a0c53cea531
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa90.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#FFCC4D" cx="18" cy="18" r="10.694"/><path fill="#F4900C" d="M10.229 22.751c-.985.067-1.689-.308-2.203-.917.214.557.487 1.081.788 1.588.771.289 1.591.41 2.54-.272-.463-.227-.88-.415-1.125-.399zM23.086 8.608c.045.328-.187.5-.75.363-.955-.232-1.793.776-2.274 1.619-.947 1.657-4.854 3.524-4.857 2.087-.001-.679-3.452.843-3.893.161-.417-.644-1.663-.396-1.921-1.168-1.135 1.544-1.869 3.402-2.04 5.422.377.718.864 1.282 1.35 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa91.svg b/browser/components/torpreferences/content/bridgemoji/1fa91.svg
new file mode 100644
index 0000000000000..8db580193f882
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa91.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A4523A" d="M12 20c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2s2-.9 2-2V22c0-1.1-.9-2-2-2zm18 0c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2s2-.9 2-2V22c0-1.1-.9-2-2-2z"/><path fill="#C1694F" d="M13 2h16v8H13z"/><path fill="#C1694F" d="M16 9h2v13h-2zm4 0h2v13h-2zm4 0h2v13h-2zM7 23c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2s2-.9 2-2v-9c0-1.1-.9-2-2-2z"/><path fill="#C1694F" d="M25 21c-1.1 0-2 .9-2 2v11c0 1.1.9 2 2 2s2-.9 2-2V23c0-1.1-.9-2-2-2zM12 0c-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa95.svg b/browser/components/torpreferences/content/bridgemoji/1fa95.svg
new file mode 100644
index 0000000000000..da6e25d06b84f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa95.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#67757F" cx="10.047" cy="16.953" r="1"/><circle fill="#67757F" cx="1.047" cy="25.953" r="1"/><circle fill="#67757F" cx="19.047" cy="25.953" r="1"/><circle fill="#67757F" cx="10.047" cy="34.953" r="1"/><circle fill="#67757F" cx="3.547" cy="19.828" r="1"/><circle fill="#67757F" cx="16.214" cy="32.495" r="1"/><path fill="#292F33" d="M32.339 5.338l-15.45 17.334-3.561-3.56L30.66 3.66z"/><ellipse transform="rotate(-52.01 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fa97.svg b/browser/components/torpreferences/content/bridgemoji/1fa97.svg
new file mode 100644
index 0000000000000..c9c21ca2a2965
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fa97.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFE8B6" d="M17.483 30.971c-.574.051-1.099-.36-1.168-.93L13.427 5.136c-.069-.57.676-1.133 1.657-1.22.981-.087 1.811.336 1.844.909l1.541 25.024c.031.574-.412 1.07-.986 1.122zm4.199-.146c-.574-.011-1.051-.476-1.058-1.051l-.192-25.071c-.007-.574.791-1.054 1.773-1.034.982.019 1.76.528 1.731 1.102l-1.157 25.045c-.029.574-.522 1.02-1.097 1.009zm4.185.306c-.57-.073-.993-.586-.939-1.158l2.501-24.947c.054-.572.899-.963 1.873- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fab6.svg b/browser/components/torpreferences/content/bridgemoji/1fab6.svg
new file mode 100644
index 0000000000000..8e70d6cd5c39b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fab6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#C1694F" d="M4.048 29.644c-.811-.558-1.541-4.073-.936-4.404.738-.402.686.835 2.255 2.362 1.569 1.528 6.47.913 7.708 1.326 1.363.455-6.385 2.533-9.027.716z"/><path fill="#D99E82" d="M5.367 27.603C4 22 4.655 18.919 5.433 16.861 6.8 13.24 16.699 5.169 23.8 2.637 25.678 1.967 31.62 1 35 1c.589 2.332-1.174 6.717-1.62 7.518-1.009 1.81-3.564 4.273-8.646 9.482-.252.258-5.119-.46-5.376-.191-.283.296 4.044 1.579 3.755 1.889-.7 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fad0.svg b/browser/components/torpreferences/content/bridgemoji/1fad0.svg
new file mode 100644
index 0000000000000..34e68d6b49b17
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fad0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5C913B" d="M8.089 1s5.858.616 8.54 4.06c3.206 4.117.891 7.962.891 7.962s-4.825-.425-7.03-3.157C7.287 5.896 8.089 1 8.089 1z"/><path fill="#77B255" d="M21.901 1s.913 4.617-1.006 7.47c-2.293 3.41-5.676 2.54-5.676 2.54s-.813-3.784.691-6.106C18.096 1.53 21.901 1 21.901 1z"/><ellipse fill="#5864B7" cx="23.737" cy="11.536" rx="6.916" ry="6.027"/><path fill="#334372" d="M19.34 16.996c0-.851-.124-1.64-.34-2.373 1.231-.409 2 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fad2.svg b/browser/components/torpreferences/content/bridgemoji/1fad2.svg
new file mode 100644
index 0000000000000..b84ce6a1f4800
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fad2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#909B50" d="M13.241 23.993c1.274-1.617 4.455-.891 6.416.535s3.089 4.337 1.901 5.941-4.158 1.96-6.416.416c-2.258-1.545-3.446-4.931-1.901-6.892zm4.455-20.792c2.802.342 3.208 2.97 2.792 5.703-.416 2.733-2.436 5.347-4.693 5.228-2.257-.119-3.149-3.446-2.792-6.238s2.258-4.99 4.693-4.693z"/><path fill="#C1694F" d="M1.3 32.876c-.08 0-.161-.016-.239-.048-.319-.133-.47-.498-.337-.817 2.393-5.756 6.062-8.645 8.72-10.055 1.57-.8 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/1fad6.svg b/browser/components/torpreferences/content/bridgemoji/1fad6.svg
new file mode 100644
index 0000000000000..9e6894dafeee6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/1fad6.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><ellipse fill="#269" cx="17.5" cy="31.5" rx="8" ry="2"/><path fill="#3B88C3" d="M11.173 31.777s3.297.757 6.371.668c2.539-.074 5.614-.356 6.505-.757 0 0-1.069 1.381-6.416 1.381s-6.46-1.292-6.46-1.292z"/><ellipse fill="#269" cx="17.5" cy="15.25" rx="8.5" ry="2.25"/><path fill="#3B88C3" d="M33.582 16.654c3.518-.202 2.185 1.133 1.072 1.712-.505.262-1.515 1.738-2.098 4.234-.455 1.948-.847 5.658-5.213 5.391-2.994-.183-.045-7.084-.045- [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/23f0.svg b/browser/components/torpreferences/content/bridgemoji/23f0.svg
new file mode 100644
index 0000000000000..ea9ad14316615
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/23f0.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFCC4D" d="M20 6.042c0 1.112-.903 2.014-2 2.014s-2-.902-2-2.014V2.014C16 .901 16.903 0 18 0s2 .901 2 2.014v4.028z"/><path fill="#FFAC33" d="M9.18 36c-.224 0-.452-.052-.666-.159-.736-.374-1.035-1.28-.667-2.027l8.94-18.127c.252-.512.768-.835 1.333-.835s1.081.323 1.333.835l8.941 18.127c.368.747.07 1.653-.666 2.027-.736.372-1.631.07-1.999-.676L18.121 19.74l-7.607 15.425c-.262.529-.788.835-1.334.835z"/><path fill="#58595 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2600.svg b/browser/components/torpreferences/content/bridgemoji/2600.svg
new file mode 100644
index 0000000000000..8602baef7e5aa
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2600.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M16 2s0-2 2-2 2 2 2 2v2s0 2-2 2-2-2-2-2V2zm18 14s2 0 2 2-2 2-2 2h-2s-2 0-2-2 2-2 2-2h2zM4 16s2 0 2 2-2 2-2 2H2s-2 0-2-2 2-2 2-2h2zm5.121-8.707s1.414 1.414 0 2.828-2.828 0-2.828 0L4.878 8.708s-1.414-1.414 0-2.829c1.415-1.414 2.829 0 2.829 0l1.414 1.414zm21 21s1.414 1.414 0 2.828-2.828 0-2.828 0l-1.414-1.414s-1.414-1.414 0-2.828 2.828 0 2.828 0l1.414 1.414zm-.413-18.172s-1.414 1.414-2.828 0 0-2.828 0-2.828l [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2602.svg b/browser/components/torpreferences/content/bridgemoji/2602.svg
new file mode 100644
index 0000000000000..7c633302e7e8f
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2602.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M9 28.5c0-.828.672-1.5 1.5-1.5s1.5.672 1.5 1.5v.5s0 3 3 3 3-3 3-3V3.5c0-.829.671-1.5 1.5-1.5s1.5.671 1.5 1.5V29s0 6-6 6-6-6-6-6v-.5z"/><path fill="#744EAA" d="M19.5 4C28.612 4 36 9.82 36 17c0 0 0 2-1 2s-3-2-3-2H7s-2 2-3 2-1-2-1-2C3 9.82 10.387 4 19.5 4z"/><path fill="#9266CC" d="M19.5 4C26.403 4 32 9.82 32 17c0 0 0 2-2 2s-5-2-5-2H14s-3 2-5 2-2-2-2-2C7 9.82 12.596 4 19.5 4z"/><path fill="#744EAA" d="M19.5 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2604.svg b/browser/components/torpreferences/content/bridgemoji/2604.svg
new file mode 100644
index 0000000000000..07df915c4f9b6
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2604.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#5DADEC" d="M33.662.049c-1.148-.077-5.869-.75-17.522 6.665C4.488 14.129-1.646 26.609 3.604 33.329c1.104 1.413 5.518 4.283 10.682.53 3.247-2.359 4.242-7.52 7.15-14.434 1.986-4.723 6.444-13.594 12.668-17.611 1.942-.97.22-1.72-.442-1.765z"/><path fill="#8CCAF7" d="M16.625 13.651c-.265-1.059.971-4.281 1.324-5.164-6.437 2.929-12.509 11.616-12.47 13.18.006.227.139.305.42.193 5.398-2.166 8.882 1.07 9.807 3.751.095.274.214.4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/260e.svg b/browser/components/torpreferences/content/bridgemoji/260e.svg
new file mode 100644
index 0000000000000..e65124faa5485
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/260e.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#BE1931" d="M36 11.5C36 8.462 33 4 18 4S0 8.462 0 11.5c0 .045.019.076.022.119-.012.196-.022.402-.022.631C0 14.873 2.239 16 5 16s5-1.127 5-3.75c0-.218-.021-.412-.051-.597C12.374 11.302 15.102 11 18 11s5.626.302 8.051.653c-.03.185-.051.379-.051.597 0 2.623 2.238 3.75 5 3.75s5-1.127 5-3.75c0-.225-.009-.429-.024-.621.004-.046.024-.08.024-.129z"/><path fill="#DD2E44" d="M34.934 23c-.482-1.031-2.31-4.19-3.968-7.007C29.408 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2693.svg b/browser/components/torpreferences/content/bridgemoji/2693.svg
new file mode 100644
index 0000000000000..09f3fe4162e12
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2693.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#269" d="M30.5 18.572L26 25h2.575c-1.13 3.988-4.445 7.05-8.575 7.81V17h3c1.104 0 2-.896 2-2s-.896-2-2-2h-3v-1.349h-4V13h-3c-1.104 0-2 .896-2 2s.896 2 2 2h3v15.81c-4.13-.76-7.445-3.821-8.575-7.81H10l-4.5-6.428L1 25h3.33C5.705 31.289 11.299 36 18 36s12.295-4.711 13.67-11H35l-4.5-6.428z"/><path fill="#269" d="M18 0c-3.314 0-6 2.686-6 6s2.686 6 6 6 6-2.686 6-6-2.686-6-6-6zm0 9c-1.657 0-3-1.343-3-3s1.343-3 3-3 3 1.343 3 3 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2696.svg b/browser/components/torpreferences/content/bridgemoji/2696.svg
new file mode 100644
index 0000000000000..61af8441c5a75
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2696.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M3.923 22.923c-.212.511-.798.751-1.308.539-.51-.213-.751-.798-.539-1.308L6.693 9.616c.212-.51.798-.751 1.307-.539.51.213.751.798.539 1.308L3.923 22.923z"/><path fill="#66757F" d="M13.923 22.154c.212.51-.029 1.095-.539 1.308-.51.212-1.095-.028-1.308-.539L7.461 10.385c-.212-.51.029-1.095.539-1.308.51-.212 1.095.029 1.308.539l4.615 12.538zm10.001.769c-.213.511-.799.751-1.309.539-.51-.213-.75-.798-.538-1.308l [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/26bd.svg b/browser/components/torpreferences/content/bridgemoji/26bd.svg
new file mode 100644
index 0000000000000..f24749cb5eab3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/26bd.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><circle fill="#F5F8FA" cx="18" cy="18" r="18"/><path d="M18 11c-.552 0-1-.448-1-1V3c0-.552.448-1 1-1s1 .448 1 1v7c0 .552-.448 1-1 1zm-6.583 4.5c-.1 0-.202-.015-.302-.047l-8.041-2.542c-.527-.167-.819-.728-.652-1.255.166-.527.73-.818 1.255-.652l8.042 2.542c.527.167.819.729.652 1.255-.136.426-.53.699-.954.699zm13.625-.291c-.434 0-.833-.285-.96-.722-.154-.531.151-1.085.682-1.239l6.75-1.958c.531-.153 1.085.153 1.238.682.154.531-.151 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/26f2.svg b/browser/components/torpreferences/content/bridgemoji/26f2.svg
new file mode 100644
index 0000000000000..659c22850c5d3
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/26f2.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#99AAB5" d="M1 22.923v6.538C1 33.073 8.611 36 18 36s17-2.927 17-6.538v-6.538H1z"/><ellipse fill="#E1E8ED" cx="18" cy="22.923" rx="17" ry="6.538"/><path fill="#AAB8C2" d="M18 20.308c6.7 0 12.314 1.668 13.913 3.923.297-.419.472-.855.472-1.308 0-2.889-6.44-5.231-14.385-5.231S3.615 20.034 3.615 22.923c0 .452.175.889.472 1.308C5.686 21.976 11.3 20.308 18 20.308z"/><ellipse fill="#3B88C3" cx="18" cy="24.231" rx="13.913" ry [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/26f5.svg b/browser/components/torpreferences/content/bridgemoji/26f5.svg
new file mode 100644
index 0000000000000..c76c0dedfb1f1
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/26f5.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#A7A9AC" d="M20 26c0 .553-.447 1-1 1-.552 0-1-.447-1-1V1c0-.552.448-1 1-1 .553 0 1 .448 1 1v25z"/><path fill="#D1D3D4" d="M3 24h31v8H12c-6 0-9-8-9-8z"/><path fill="#55ACEE" d="M0 30h36v6H0z"/><path fill="#FFAC33" d="M5 22s2-5 5-9 8-8 8-8-1 11-1 16v1s-3-1-6-1-6 1-6 1z"/><path fill="#F4900C" d="M20 2s6 6 9 11c2.771 4.618 4 9 4 9s-3-1-6-1-6 1-6 1v-1c0-9-1-19-1-19z"/><path fill="#E6E7E8" d="M2 24c-.552 0-1 .447-1 1s.448 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2708.svg b/browser/components/torpreferences/content/bridgemoji/2708.svg
new file mode 100644
index 0000000000000..ebce3afbc7832
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2708.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#66757F" d="M30 23.828c-.391.392-1.023.392-1.414 0l-1.414-1.414c-.392-.391-.392-1.024 0-1.414L30 18.172c.391-.391 1.023-.391 1.414 0l1.414 1.414c.392.391.392 1.024 0 1.414L30 23.828zm-15-15c-.391.392-1.023.392-1.414 0l-1.414-1.414c-.392-.391-.392-1.023 0-1.414L15 3.172c.391-.391 1.023-.391 1.414 0l1.414 1.414c.392.391.392 1.023 0 1.414L15 8.828z"/><path fill="#55ACEE" d="M2 22c2 0 11 1 11 1s1 9 1 11-2 2-3 1-4-6-4-6-5 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/270f.svg b/browser/components/torpreferences/content/bridgemoji/270f.svg
new file mode 100644
index 0000000000000..a9b69e1b29529
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/270f.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#D99E82" d="M35.222 33.598c-.647-2.101-1.705-6.059-2.325-7.566-.501-1.216-.969-2.438-1.544-3.014-.575-.575-1.553-.53-2.143.058 0 0-2.469 1.675-3.354 2.783-1.108.882-2.785 3.357-2.785 3.357-.59.59-.635 1.567-.06 2.143.576.575 1.798 1.043 3.015 1.544 1.506.62 5.465 1.676 7.566 2.325.359.11 1.74-1.271 1.63-1.63z"/><path fill="#EA596E" d="M13.643 5.308c1.151 1.151 1.151 3.016 0 4.167l-4.167 4.168c-1.151 1.15-3.018 1.15-4 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2728.svg b/browser/components/torpreferences/content/bridgemoji/2728.svg
new file mode 100644
index 0000000000000..347ad12abbd7b
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2728.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#FFAC33" d="M34.347 16.893l-8.899-3.294-3.323-10.891c-.128-.42-.517-.708-.956-.708-.439 0-.828.288-.956.708l-3.322 10.891-8.9 3.294c-.393.146-.653.519-.653.938 0 .418.26.793.653.938l8.895 3.293 3.324 11.223c.126.424.516.715.959.715.442 0 .833-.291.959-.716l3.324-11.223 8.896-3.293c.391-.144.652-.518.652-.937 0-.418-.261-.792-.653-.938z"/><path fill="#FFCC4D" d="M14.347 27.894l-2.314-.856-.9-3.3c-.118-.436-.513-.738-. [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/bridgemoji/2744.svg b/browser/components/torpreferences/content/bridgemoji/2744.svg
new file mode 100644
index 0000000000000..258c161bb9bb8
--- /dev/null
+++ b/browser/components/torpreferences/content/bridgemoji/2744.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#88C9F9" d="M19 27.586V8.415l4.828-4.829s.707-.707 0-1.415c-.707-.707-1.414 0-1.414 0L19 5.586V1s0-1-1-1-1 1-1 1v4.586l-3.414-3.415s-.707-.707-1.414 0c-.707.708 0 1.415 0 1.415L17 8.415v19.171l-4.828 4.828s-.707.707 0 1.414 1.414 0 1.414 0L17 30.414V35s0 1 1 1 1-1 1-1v-4.586l3.414 3.414s.707.707 1.414 0 0-1.414 0-1.414L19 27.586z"/><path fill="#88C9F9" d="M34.622 20.866c-.259-.966-1.225-.707-1.225-.707l-6.595 1.767-1 [...]
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/builtinBridgeDialog.jsm b/browser/components/torpreferences/content/builtinBridgeDialog.jsm
new file mode 100644
index 0000000000000..5b5e1560cd466
--- /dev/null
+++ b/browser/components/torpreferences/content/builtinBridgeDialog.jsm
@@ -0,0 +1,120 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["BuiltinBridgeDialog"];
+
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+const {
+ TorSettings,
+ TorBridgeSource,
+ TorBuiltinBridgeTypes,
+} = ChromeUtils.import("resource:///modules/TorSettings.jsm");
+
+class BuiltinBridgeDialog {
+ constructor() {
+ this._dialog = null;
+ this._bridgeType = "";
+ }
+
+ static get selectors() {
+ return {
+ header: "#torPreferences-builtinBridge-header",
+ description: "#torPreferences-builtinBridge-description",
+ radiogroup: "#torPreferences-builtinBridge-typeSelection",
+ obfsRadio: "#torPreferences-builtinBridges-radioObfs",
+ obfsDescr: "#torPreferences-builtinBridges-descrObfs",
+ snowflakeRadio: "#torPreferences-builtinBridges-radioSnowflake",
+ snowflakeDescr: "#torPreferences-builtinBridges-descrSnowflake",
+ meekAzureRadio: "#torPreferences-builtinBridges-radioMeekAzure",
+ meekAzureDescr: "#torPreferences-builtinBridges-descrMeekAzure",
+ };
+ }
+
+ _populateXUL(window, aDialog) {
+ const selectors = BuiltinBridgeDialog.selectors;
+
+ this._dialog = aDialog;
+ const dialogWin = this._dialog.parentElement;
+ dialogWin.setAttribute("title", TorStrings.settings.builtinBridgeTitle);
+
+ this._dialog.querySelector(selectors.header).textContent =
+ TorStrings.settings.builtinBridgeHeader;
+ this._dialog.querySelector(selectors.description).textContent =
+ TorStrings.settings.builtinBridgeDescription;
+ let radioGroup = this._dialog.querySelector(selectors.radiogroup);
+
+ let types = {
+ obfs4: {
+ elemRadio: this._dialog.querySelector(selectors.obfsRadio),
+ elemDescr: this._dialog.querySelector(selectors.obfsDescr),
+ label: TorStrings.settings.builtinBridgeObfs4,
+ descr: TorStrings.settings.builtinBridgeObfs4Description,
+ },
+ snowflake: {
+ elemRadio: this._dialog.querySelector(selectors.snowflakeRadio),
+ elemDescr: this._dialog.querySelector(selectors.snowflakeDescr),
+ label: TorStrings.settings.builtinBridgeSnowflake,
+ descr: TorStrings.settings.builtinBridgeSnowflakeDescription,
+ },
+ "meek-azure": {
+ elemRadio: this._dialog.querySelector(selectors.meekAzureRadio),
+ elemDescr: this._dialog.querySelector(selectors.meekAzureDescr),
+ label: TorStrings.settings.builtinBridgeMeekAzure,
+ descr: TorStrings.settings.builtinBridgeMeekAzureDescription,
+ },
+ };
+
+ TorBuiltinBridgeTypes.forEach(type => {
+ types[type].elemRadio.setAttribute("label", types[type].label);
+ types[type].elemRadio.setAttribute("hidden", "false");
+ types[type].elemDescr.textContent = types[type].descr;
+ types[type].elemDescr.removeAttribute("hidden");
+ });
+
+ if (
+ TorSettings.bridges.enabled &&
+ TorSettings.bridges.source == TorBridgeSource.BuiltIn
+ ) {
+ radioGroup.selectedItem =
+ types[TorSettings.bridges.builtin_type]?.elemRadio;
+ this._bridgeType = TorSettings.bridges.builtin_type;
+ } else {
+ radioGroup.selectedItem = null;
+ this._bridgeType = "";
+ }
+
+ this._dialog.addEventListener("dialogaccept", e => {
+ this._bridgeType = radioGroup.value;
+ });
+ this._dialog.addEventListener("dialoghelp", e => {
+ window.top.openTrustedLinkIn(
+ TorStrings.settings.learnMoreCircumventionURL,
+ "tab"
+ );
+ });
+
+ // Hack: see the CSS
+ this._dialog.style.minWidth = '0';
+ this._dialog.style.minHeight = '0';
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(window, aDialog);
+ }, 0);
+ }
+
+ openDialog(gSubDialog, aCloseCallback) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/builtinBridgeDialog.xhtml",
+ {
+ features: "resizable=yes",
+ closingCallback: () => {
+ aCloseCallback(this._bridgeType);
+ },
+ },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/builtinBridgeDialog.xhtml b/browser/components/torpreferences/content/builtinBridgeDialog.xhtml
new file mode 100644
index 0000000000000..61c6110f327a7
--- /dev/null
+++ b/browser/components/torpreferences/content/builtinBridgeDialog.xhtml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="torPreferences-builtinBridge-dialog"
+ buttons="help,accept,cancel">
+ <html:h3 id="torPreferences-builtinBridge-header">​</html:h3>
+ <description>
+ <html:div id="torPreferences-builtinBridge-description">​<br/>​</html:div>
+ </description>
+ <radiogroup id="torPreferences-builtinBridge-typeSelection">
+ <radio id="torPreferences-builtinBridges-radioObfs" value="obfs4" hidden="true"/>
+ <html:div id="torPreferences-builtinBridges-descrObfs" class="indent" hidden="true">​</html:div>
+ <radio id="torPreferences-builtinBridges-radioSnowflake" value="snowflake" hidden="true"/>
+ <html:div id="torPreferences-builtinBridges-descrSnowflake" class="indent" hidden="true">​</html:div>
+ <radio id="torPreferences-builtinBridges-radioMeekAzure" value="meek-azure" hidden="true"/>
+ <html:div id="torPreferences-builtinBridges-descrMeekAzure" class="indent" hidden="true">​</html:div>
+ </radiogroup>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let builtinBridgeDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-builtinBridge-dialog");
+ builtinBridgeDialog.init(window, dialog);
+ ]]></script>
+</dialog>
+</window>
diff --git a/browser/components/torpreferences/content/connectionCategory.inc.xhtml b/browser/components/torpreferences/content/connectionCategory.inc.xhtml
new file mode 100644
index 0000000000000..15cf24cfe6950
--- /dev/null
+++ b/browser/components/torpreferences/content/connectionCategory.inc.xhtml
@@ -0,0 +1,9 @@
+<richlistitem id="category-connection"
+ class="category"
+ value="paneConnection"
+ helpTopic="prefs-connection"
+ align="center"
+ hidden="true">
+ <image class="category-icon"/>
+ <label id="torPreferences-labelCategory" class="category-name" flex="1" value="Connection"/>
+</richlistitem>
diff --git a/browser/components/torpreferences/content/connectionPane.js b/browser/components/torpreferences/content/connectionPane.js
new file mode 100644
index 0000000000000..644b13dc9cb8e
--- /dev/null
+++ b/browser/components/torpreferences/content/connectionPane.js
@@ -0,0 +1,1150 @@
+"use strict";
+
+/* global Services, gSubDialog */
+
+const { setTimeout, clearTimeout } = ChromeUtils.import(
+ "resource://gre/modules/Timer.jsm"
+);
+
+const {
+ TorSettings,
+ TorSettingsTopics,
+ TorSettingsData,
+ TorBridgeSource,
+} = ChromeUtils.import("resource:///modules/TorSettings.jsm");
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+
+const {
+ TorConnect,
+ TorConnectTopics,
+ TorConnectState,
+ TorCensorshipLevel,
+} = ChromeUtils.import("resource:///modules/TorConnect.jsm");
+
+const { TorLogDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torLogDialog.jsm"
+);
+
+const { ConnectionSettingsDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/connectionSettingsDialog.jsm"
+);
+
+const { BridgeQrDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/bridgeQrDialog.jsm"
+);
+
+const { BuiltinBridgeDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/builtinBridgeDialog.jsm"
+);
+
+const { RequestBridgeDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.jsm"
+);
+
+const { ProvideBridgeDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/provideBridgeDialog.jsm"
+);
+
+const { MoatRPC } = ChromeUtils.import("resource:///modules/Moat.jsm");
+
+const { QRCode } = ChromeUtils.import("resource://gre/modules/QRCode.jsm");
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+const InternetStatus = Object.freeze({
+ Unknown: 0,
+ Online: 1,
+ Offline: -1,
+});
+
+/*
+ Connection Pane
+
+ Code for populating the XUL in about:preferences#connection, handling input events, interfacing with tor-launcher
+*/
+const gConnectionPane = (function() {
+ /* CSS selectors for all of the Tor Network DOM elements we need to access */
+ const selectors = {
+ category: {
+ title: "label#torPreferences-labelCategory",
+ },
+ messageBox: {
+ box: "div#torPreferences-connectMessageBox",
+ message: "td#torPreferences-connectMessageBox-message",
+ button: "button#torPreferences-connectMessageBox-button",
+ },
+ torPreferences: {
+ header: "h1#torPreferences-header",
+ description: "span#torPreferences-description",
+ learnMore: "label#torPreferences-learnMore",
+ },
+ status: {
+ internetLabel: "#torPreferences-status-internet-label",
+ internetTest: "#torPreferences-status-internet-test",
+ internetIcon: "#torPreferences-status-internet-statusIcon",
+ internetStatus: "#torPreferences-status-internet-status",
+ torLabel: "#torPreferences-status-tor-label",
+ torIcon: "#torPreferences-status-tor-statusIcon",
+ torStatus: "#torPreferences-status-tor-status",
+ },
+ quickstart: {
+ header: "h2#torPreferences-quickstart-header",
+ description: "span#torPreferences-quickstart-description",
+ enableQuickstartCheckbox: "checkbox#torPreferences-quickstart-toggle",
+ },
+ bridges: {
+ header: "h1#torPreferences-bridges-header",
+ description: "span#torPreferences-bridges-description",
+ learnMore: "label#torPreferences-bridges-learnMore",
+ locationGroup: "#torPreferences-bridges-locationGroup",
+ locationLabel: "#torPreferences-bridges-locationLabel",
+ location: "#torPreferences-bridges-location",
+ locationEntries: "#torPreferences-bridges-locationEntries",
+ chooseForMe: "#torPreferences-bridges-buttonChooseBridgeForMe",
+ currentHeader: "#torPreferences-currentBridges-header",
+ currentHeaderText: "#torPreferences-currentBridges-headerText",
+ currentDescriptionText: "#torPreferences-currentBridges-description",
+ switch: "#torPreferences-currentBridges-switch",
+ cards: "#torPreferences-currentBridges-cards",
+ cardTemplate: "#torPreferences-bridgeCard-template",
+ card: ".torPreferences-bridgeCard",
+ cardId: ".torPreferences-bridgeCard-id",
+ cardHeadingAddr: ".torPreferences-bridgeCard-headingAddr",
+ cardConnectedLabel: ".torPreferences-bridgeCard-connectedLabel",
+ cardOptions: ".torPreferences-bridgeCard-options",
+ cardMenu: "#torPreferences-bridgeCard-menu",
+ cardQrGrid: ".torPreferences-bridgeCard-grid",
+ cardQrContainer: ".torPreferences-bridgeCard-qr",
+ cardQr: ".torPreferences-bridgeCard-qrCode",
+ cardShare: ".torPreferences-bridgeCard-share",
+ cardAddr: ".torPreferences-bridgeCard-addr",
+ cardLearnMore: ".torPreferences-bridgeCard-learnMore",
+ cardCopy: ".torPreferences-bridgeCard-copyButton",
+ showAll: "#torPreferences-currentBridges-showAll",
+ removeAll: "#torPreferences-currentBridges-removeAll",
+ addHeader: "#torPreferences-addBridge-header",
+ addBuiltinLabel: "#torPreferences-addBridge-labelBuiltinBridge",
+ addBuiltinButton: "#torPreferences-addBridge-buttonBuiltinBridge",
+ requestLabel: "#torPreferences-addBridge-labelRequestBridge",
+ requestButton: "#torPreferences-addBridge-buttonRequestBridge",
+ enterLabel: "#torPreferences-addBridge-labelEnterBridge",
+ enterButton: "#torPreferences-addBridge-buttonEnterBridge",
+ removeOverlay: "#bridge-remove-overlay",
+ removeModal: "#bridge-remove-modal",
+ removeDismiss: "#bridge-remove-dismiss",
+ removeQuestion: "#bridge-remove-question",
+ removeWarning: "#bridge-remove-warning",
+ removeConfirm: "#bridge-remove-confirm",
+ removeCancel: "#bridge-remove-cancel",
+ },
+ advanced: {
+ header: "h1#torPreferences-advanced-header",
+ label: "#torPreferences-advanced-label",
+ button: "#torPreferences-advanced-button",
+ torLogsLabel: "label#torPreferences-torLogs",
+ torLogsButton: "button#torPreferences-buttonTorLogs",
+ },
+ }; /* selectors */
+
+ let retval = {
+ // cached frequently accessed DOM elements
+ _enableQuickstartCheckbox: null,
+
+ _internetStatus: InternetStatus.Unknown,
+
+ _controller: null,
+
+ _currentBridge: "",
+
+ // disables the provided list of elements
+ _setElementsDisabled(elements, disabled) {
+ for (let currentElement of elements) {
+ currentElement.disabled = disabled;
+ }
+ },
+
+ // populate xul with strings and cache the relevant elements
+ _populateXUL() {
+ // saves tor settings to disk when navigate away from about:preferences
+ window.addEventListener("blur", val => {
+ TorProtocolService.flushSettings();
+ });
+
+ document
+ .querySelector(selectors.category.title)
+ .setAttribute("value", TorStrings.settings.categoryTitle);
+
+ let prefpane = document.getElementById("mainPrefPane");
+
+ // 'Connect to Tor' Message Bar
+
+ const messageBox = prefpane.querySelector(selectors.messageBox.box);
+ const messageBoxMessage = prefpane.querySelector(
+ selectors.messageBox.message
+ );
+ const messageBoxButton = prefpane.querySelector(
+ selectors.messageBox.button
+ );
+ // wire up connect button
+ messageBoxButton.addEventListener("click", () => {
+ TorConnect.beginBootstrap();
+ TorConnect.openTorConnect();
+ });
+
+ this._populateMessagebox = () => {
+ if (
+ TorConnect.shouldShowTorConnect &&
+ TorConnect.state === TorConnectState.Configuring
+ ) {
+ // set messagebox style and text
+ if (TorProtocolService.torBootstrapErrorOccurred()) {
+ messageBox.parentNode.style.display = null;
+ messageBox.className = "error";
+ messageBoxMessage.innerText = TorStrings.torConnect.tryAgainMessage;
+ messageBoxButton.innerText = TorStrings.torConnect.tryAgain;
+ } else {
+ messageBox.parentNode.style.display = null;
+ messageBox.className = "warning";
+ messageBoxMessage.innerText = TorStrings.torConnect.connectMessage;
+ messageBoxButton.innerText = TorStrings.torConnect.torConnectButton;
+ }
+ } else {
+ // we need to explicitly hide the groupbox, as switching between
+ // the tor pane and other panes will 'unhide' (via the 'hidden'
+ // attribute) the groupbox, offsetting all of the content down
+ // by the groupbox's margin (even if content is 0 height)
+ messageBox.parentNode.style.display = "none";
+ messageBox.className = "hidden";
+ messageBoxMessage.innerText = "";
+ messageBoxButton.innerText = "";
+ }
+ };
+ this._populateMessagebox();
+
+ // Heading
+ prefpane.querySelector(selectors.torPreferences.header).innerText =
+ TorStrings.settings.categoryTitle;
+ prefpane.querySelector(selectors.torPreferences.description).textContent =
+ TorStrings.settings.torPreferencesDescription;
+ {
+ let learnMore = prefpane.querySelector(
+ selectors.torPreferences.learnMore
+ );
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreTorBrowserURL
+ );
+ if (TorStrings.settings.learnMoreTorBrowserURL.startsWith("about:")) {
+ learnMore.setAttribute("useoriginprincipal", "true");
+ }
+ }
+
+ // Internet and Tor status
+ prefpane.querySelector(selectors.status.internetLabel).textContent =
+ TorStrings.settings.statusInternetLabel;
+ prefpane.querySelector(selectors.status.torLabel).textContent =
+ TorStrings.settings.statusTorLabel;
+ const internetTest = prefpane.querySelector(
+ selectors.status.internetTest
+ );
+ internetTest.setAttribute(
+ "label",
+ TorStrings.settings.statusInternetTest
+ );
+ internetTest.addEventListener("command", async () => {
+ this.onInternetTest();
+ });
+ const internetIcon = prefpane.querySelector(
+ selectors.status.internetIcon
+ );
+ const internetStatus = prefpane.querySelector(
+ selectors.status.internetStatus
+ );
+ const torIcon = prefpane.querySelector(selectors.status.torIcon);
+ const torStatus = prefpane.querySelector(selectors.status.torStatus);
+ this._populateStatus = () => {
+ switch (this._internetStatus) {
+ case InternetStatus.Unknown:
+ internetTest.removeAttribute("hidden");
+ break;
+ case InternetStatus.Online:
+ internetTest.setAttribute("hidden", "true");
+ internetIcon.className = "online";
+ internetStatus.textContent =
+ TorStrings.settings.statusInternetOnline;
+ break;
+ case InternetStatus.Offline:
+ internetTest.setAttribute("hidden", "true");
+ internetIcon.className = "offline";
+ internetStatus.textContent =
+ TorStrings.settings.statusInternetOffline;
+ break;
+ }
+ if (TorConnect.state === TorConnectState.Bootstrapped) {
+ torIcon.className = "connected";
+ torStatus.textContent = TorStrings.settings.statusTorConnected;
+ } else if (TorConnect.hasBootstrapEverFailed) {
+ torIcon.className = "blocked";
+ torStatus.textContent = TorStrings.settings.statusTorBlocked;
+ } else {
+ torIcon.className = "";
+ torStatus.textContent = TorStrings.settings.statusTorNotConnected;
+ }
+ };
+ this._populateStatus();
+
+ // Quickstart
+ prefpane.querySelector(selectors.quickstart.header).innerText =
+ TorStrings.settings.quickstartHeading;
+ prefpane.querySelector(selectors.quickstart.description).textContent =
+ TorStrings.settings.quickstartDescription;
+
+ this._enableQuickstartCheckbox = prefpane.querySelector(
+ selectors.quickstart.enableQuickstartCheckbox
+ );
+ this._enableQuickstartCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.quickstartCheckbox
+ );
+ this._enableQuickstartCheckbox.addEventListener("command", e => {
+ const checked = this._enableQuickstartCheckbox.checked;
+ TorSettings.quickstart.enabled = checked;
+ TorSettings.saveToPrefs().applySettings();
+ });
+ this._enableQuickstartCheckbox.checked = TorSettings.quickstart.enabled;
+ Services.obs.addObserver(this, TorSettingsTopics.SettingChanged);
+
+ // Bridge setup
+ prefpane.querySelector(selectors.bridges.header).innerText =
+ TorStrings.settings.bridgesHeading;
+ prefpane.querySelector(selectors.bridges.description).textContent =
+ TorStrings.settings.bridgesDescription;
+ {
+ let learnMore = prefpane.querySelector(selectors.bridges.learnMore);
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute("href", TorStrings.settings.learnMoreBridgesURL);
+ if (TorStrings.settings.learnMoreBridgesURL.startsWith("about:")) {
+ learnMore.setAttribute("useoriginprincipal", "true");
+ }
+ }
+
+ // Location
+ {
+ const locationGroup = prefpane.querySelector(
+ selectors.bridges.locationGroup
+ );
+ prefpane.querySelector(selectors.bridges.locationLabel).textContent =
+ TorStrings.settings.bridgeLocation;
+ const location = prefpane.querySelector(selectors.bridges.location);
+ const locationEntries = prefpane.querySelector(
+ selectors.bridges.locationEntries
+ );
+ const chooseForMe = prefpane.querySelector(
+ selectors.bridges.chooseForMe
+ );
+ chooseForMe.setAttribute(
+ "label",
+ TorStrings.settings.bridgeChooseForMe
+ );
+ chooseForMe.addEventListener("command", e => {
+ TorConnect.beginAutoBootstrap(location.value);
+ });
+ this._populateLocations = () => {
+ const currentValue = location.value;
+ locationEntries.textContent = "";
+ const createItem = (value, label, disabled) => {
+ const item = document.createXULElement("menuitem");
+ item.setAttribute("value", value);
+ item.setAttribute("label", label);
+ if (disabled) {
+ item.setAttribute("disabled", "true");
+ }
+ return item;
+ };
+ const addLocations = codes => {
+ const items = [];
+ for (const code of codes) {
+ items.push(
+ createItem(
+ code,
+ TorConnect.countryNames[code]
+ ? TorConnect.countryNames[code]
+ : code
+ )
+ );
+ }
+ items.sort((left, right) => left.label.localeCompare(right.label));
+ locationEntries.append(...items);
+ };
+ locationEntries.append(
+ createItem("", TorStrings.settings.bridgeLocationAutomatic)
+ );
+ if (TorConnect.countryCodes.length) {
+ locationEntries.append(
+ createItem("", TorStrings.settings.bridgeLocationFrequent, true)
+ );
+ addLocations(TorConnect.countryCodes);
+ locationEntries.append(
+ createItem("", TorStrings.settings.bridgeLocationOther, true)
+ );
+ }
+ addLocations(Object.keys(TorConnect.countryNames));
+ location.value = currentValue;
+ };
+ this._showAutoconfiguration = () => {
+ if (
+ !TorConnect.shouldShowTorConnect ||
+ !TorProtocolService.torBootstrapErrorOccurred()
+ ) {
+ locationGroup.setAttribute("hidden", "true");
+ return;
+ }
+ // Populate locations, even though we will show only the automatic
+ // item for a moment. In my opinion showing the button immediately is
+ // better then waiting for the Moat query to finish (after a while)
+ // and showing the controls only after that.
+ this._populateLocations();
+ locationGroup.removeAttribute("hidden");
+ if (!TorConnect.countryCodes.length) {
+ TorConnect.getCountryCodes().then(() => this._populateLocations());
+ }
+ };
+ this._showAutoconfiguration();
+ }
+
+ // Bridge cards
+ const bridgeHeader = prefpane.querySelector(
+ selectors.bridges.currentHeader
+ );
+ bridgeHeader.querySelector(
+ selectors.bridges.currentHeaderText
+ ).textContent = TorStrings.settings.bridgeCurrent;
+ const bridgeSwitch = bridgeHeader.querySelector(selectors.bridges.switch);
+ bridgeSwitch.addEventListener("change", () => {
+ TorSettings.bridges.enabled = bridgeSwitch.checked;
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ });
+ prefpane.querySelector(
+ selectors.bridges.currentDescriptionText
+ ).textContent = TorStrings.settings.bridgeCurrentDescription;
+ const bridgeTemplate = prefpane.querySelector(
+ selectors.bridges.cardTemplate
+ );
+ {
+ const learnMore = bridgeTemplate.querySelector(
+ selectors.bridges.cardLearnMore
+ );
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreBridgesCardURL
+ );
+ if (TorStrings.settings.learnMoreBridgesCardURL.startsWith("about:")) {
+ learnMore.setAttribute("useoriginprincipal", "true");
+ }
+ }
+ bridgeTemplate.querySelector(
+ selectors.bridges.cardConnectedLabel
+ ).textContent = TorStrings.settings.statusTorConnected;
+ bridgeTemplate
+ .querySelector(selectors.bridges.cardCopy)
+ .setAttribute("label", TorStrings.settings.bridgeCopy);
+ bridgeTemplate.querySelector(selectors.bridges.cardShare).textContent =
+ TorStrings.settings.bridgeShare;
+ const bridgeCards = prefpane.querySelector(selectors.bridges.cards);
+ const bridgeMenu = prefpane.querySelector(selectors.bridges.cardMenu);
+
+ let emojiAnnotations;
+ this._addBridgeCard = bridgeString => {
+ const card = bridgeTemplate.cloneNode(true);
+ card.removeAttribute("id");
+ const grid = card.querySelector(selectors.bridges.cardQrGrid);
+ card.addEventListener("click", e => {
+ if (
+ card.classList.contains("currently-connected") ||
+ bridgeCards.classList.contains("single-card")
+ ) {
+ return;
+ }
+ let target = e.target;
+ let apply = true;
+ while (target !== null && target !== card && apply) {
+ // Deal with mixture of "command" and "click" events
+ apply = !target.classList?.contains("stop-click");
+ target = target.parentElement;
+ }
+ if (apply) {
+ if (card.classList.toggle("expanded")) {
+ grid.classList.add("to-animate");
+ grid.style.height = `${grid.scrollHeight}px`;
+ } else {
+ // Be sure we still have the to-animate class
+ grid.classList.add("to-animate");
+ grid.style.height = "";
+ }
+ }
+ });
+ const emojis = makeBridgeId(bridgeString).map(e => {
+ const img = document.createElement("img");
+ const cp = e.codePointAt(0).toString(16);
+ img.setAttribute(
+ "src",
+ `chrome://browser/content/torpreferences/bridgemoji/${cp}.svg`
+ );
+ img.setAttribute("alt", e);
+ img.setAttribute("title", emojiAnnotations[e]);
+ img.className = "emoji";
+ return img;
+ });
+ const idString = TorStrings.settings.bridgeId;
+ const id = card.querySelector(selectors.bridges.cardId);
+ const details = parseBridgeLine(bridgeString);
+ if (details && details.id !== undefined) {
+ card.setAttribute("data-bridge-id", details.id);
+ }
+ // TODO: properly handle "vanilla" bridges?
+ const type =
+ details && details.transport !== undefined
+ ? details.transport
+ : "vanilla";
+ for (const piece of idString.split(/(#[12])/)) {
+ if (piece == "#1") {
+ id.append(type);
+ } else if (piece == "#2") {
+ id.append(...emojis);
+ } else {
+ id.append(piece);
+ }
+ }
+ card.querySelector(
+ selectors.bridges.cardHeadingAddr
+ ).textContent = bridgeString;
+ const optionsButton = card.querySelector(selectors.bridges.cardOptions);
+ if (TorSettings.bridges.source === TorBridgeSource.BuiltIn) {
+ optionsButton.setAttribute("hidden", "true");
+ } else {
+ // Cloning the menupopup element does not work as expected.
+ // Therefore, we use only one, and just before opening it, we remove
+ // its previous items, and add the ones relative to the bridge whose
+ // button has been pressed.
+ optionsButton.addEventListener("click", () => {
+ const menuItem = document.createXULElement("menuitem");
+ menuItem.setAttribute("label", TorStrings.settings.remove);
+ menuItem.classList.add("menuitem-iconic");
+ menuItem.image = "chrome://global/skin/icons/delete.svg";
+ menuItem.addEventListener("command", e => {
+ const strings = TorSettings.bridges.bridge_strings;
+ const index = strings.indexOf(bridgeString);
+ if (index !== -1) {
+ strings.splice(index, 1);
+ }
+ TorSettings.bridges.enabled =
+ bridgeSwitch.checked && !!strings.length;
+ TorSettings.bridges.bridge_strings = strings.join("\n");
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ });
+ if (bridgeMenu.firstChild) {
+ bridgeMenu.firstChild.remove();
+ }
+ bridgeMenu.append(menuItem);
+ bridgeMenu.openPopup(optionsButton, {
+ position: "bottomleft topleft",
+ });
+ });
+ }
+ const bridgeAddr = card.querySelector(selectors.bridges.cardAddr);
+ bridgeAddr.setAttribute("value", bridgeString);
+ const bridgeCopy = card.querySelector(selectors.bridges.cardCopy);
+ let restoreTimeout = null;
+ bridgeCopy.addEventListener("command", e => {
+ this.onCopyBridgeAddress(bridgeAddr);
+ const label = bridgeCopy.querySelector("label");
+ label.setAttribute("value", TorStrings.settings.copied);
+ bridgeCopy.classList.add("primary");
+
+ const RESTORE_TIME = 1200;
+ if (restoreTimeout !== null) {
+ clearTimeout(restoreTimeout);
+ }
+ restoreTimeout = setTimeout(() => {
+ label.setAttribute("value", TorStrings.settings.bridgeCopy);
+ bridgeCopy.classList.remove("primary");
+ restoreTimeout = null;
+ }, RESTORE_TIME);
+ });
+ if (details && details.id === this._currentBridge) {
+ card.classList.add("currently-connected");
+ bridgeCards.prepend(card);
+ } else {
+ bridgeCards.append(card);
+ }
+ // Add the QR only after appending the card, to have the computed style
+ try {
+ const container = card.querySelector(selectors.bridges.cardQr);
+ const style = getComputedStyle(container);
+ const width = style.width.substr(0, style.width.length - 2);
+ const height = style.height.substr(0, style.height.length - 2);
+ new QRCode(container, {
+ text: bridgeString,
+ width,
+ height,
+ colorDark: style.color,
+ colorLight: style.backgroundColor,
+ document,
+ });
+ container.parentElement.addEventListener("click", () => {
+ this.onShowQr(bridgeString);
+ });
+ } catch (err) {
+ // TODO: Add a generic image in case of errors such as code overflow.
+ // It should never happen with correct codes, but after all this
+ // content can be generated by users...
+ console.error("Could not generate the QR code for the bridge:", err);
+ }
+ };
+ this._checkBridgeCardsHeight = () => {
+ for (const card of bridgeCards.children) {
+ // Expanded cards have the height set manually to their details for
+ // the CSS animation. However, when resizing the window, we may need
+ // to adjust their height.
+ if (card.classList.contains("expanded")) {
+ const grid = card.querySelector(selectors.bridges.cardQrGrid);
+ // Reset it first, to avoid having a height that is higher than
+ // strictly needed. Also, remove the to-animate class, because the
+ // animation interferes with this process!
+ grid.classList.remove("to-animate");
+ grid.style.height = "";
+ grid.style.height = `${grid.scrollHeight}px`;
+ }
+ }
+ };
+ this._currentBridgesExpanded = false;
+ const showAll = prefpane.querySelector(selectors.bridges.showAll);
+ showAll.setAttribute("label", TorStrings.settings.bridgeShowAll);
+ showAll.addEventListener("command", () => {
+ this._currentBridgesExpanded = true;
+ this._populateBridgeCards();
+ });
+ const removeAll = prefpane.querySelector(selectors.bridges.removeAll);
+ removeAll.setAttribute("label", TorStrings.settings.bridgeRemoveAll);
+ removeAll.addEventListener("command", () => {
+ this._confirmBridgeRemoval();
+ });
+ this._populateBridgeCards = async () => {
+ const collapseThreshold = 4;
+
+ let newStrings = new Set(TorSettings.bridges.bridge_strings);
+ const numBridges = newStrings.size;
+ if (!newStrings.size) {
+ bridgeHeader.setAttribute("hidden", "true");
+ bridgeCards.setAttribute("hidden", "true");
+ showAll.setAttribute("hidden", "true");
+ removeAll.setAttribute("hidden", "true");
+ bridgeCards.textContent = "";
+ return;
+ }
+ bridgeHeader.removeAttribute("hidden");
+ bridgeCards.removeAttribute("hidden");
+ bridgeSwitch.checked = TorSettings.bridges.enabled;
+ bridgeCards.classList.toggle("disabled", !TorSettings.bridges.enabled);
+ bridgeCards.classList.toggle("single-card", numBridges === 1);
+
+ let shownCards = 0;
+ const toShow = this._currentBridgesExpanded
+ ? numBridges
+ : collapseThreshold;
+
+ // Do not remove all the old cards, because it makes scrollbar "jump"
+ const currentCards = bridgeCards.querySelectorAll(
+ selectors.bridges.card
+ );
+ for (const card of currentCards) {
+ const string = card.querySelector(selectors.bridges.cardAddr).value;
+ const hadString = newStrings.delete(string);
+ if (!hadString || shownCards == toShow) {
+ card.remove();
+ } else {
+ shownCards++;
+ }
+ }
+
+ // Add only the new strings that remained in the set
+ for (const bridge of newStrings) {
+ if (shownCards >= toShow) {
+ if (this._currentBridge === "") {
+ break;
+ } else if (!bridge.includes(this._currentBridge)) {
+ continue;
+ }
+ }
+ this._addBridgeCard(bridge);
+ shownCards++;
+ }
+
+ // If we know the connected bridge, we may have added more than the ones
+ // we should actually show (but the connected ones have been prepended,
+ // if needed). So, remove any exceeding ones.
+ while (shownCards > toShow) {
+ bridgeCards.lastElementChild.remove();
+ shownCards--;
+ }
+
+ // And finally update the buttons
+ if (numBridges > collapseThreshold && !this._currentBridgesExpanded) {
+ showAll.removeAttribute("hidden");
+ if (TorSettings.bridges.enabled) {
+ showAll.classList.add("primary");
+ } else {
+ showAll.classList.remove("primary");
+ }
+ removeAll.setAttribute("hidden", "true");
+ if (TorSettings.bridges.enabled) {
+ // We do not want both collapsed and disabled at the same time,
+ // because we use collapsed only to display a gradient on the list.
+ bridgeCards.classList.add("list-collapsed");
+ }
+ } else {
+ showAll.setAttribute("hidden", "true");
+ removeAll.removeAttribute("hidden");
+ bridgeCards.classList.remove("list-collapsed");
+ }
+ };
+ // Use a promise to avoid blocking the population of the page
+ // FIXME: Stop using a JSON file, and switch to properties
+ fetch(
+ "chrome://browser/content/torpreferences/bridgemoji-annotations.json"
+ ).then(async res => {
+ const annotations = await res.json();
+ const bcp47 = Services.locale.appLocaleAsBCP47;
+ const dash = bcp47.indexOf("-");
+ const lang = dash !== -1 ? bcp47.substr(dash) : lang;
+ if (bcp47 in annotations) {
+ emojiAnnotations = annotations[bcp47];
+ } else if (lang in annotations) {
+ emojiAnnotations = annotations[lang];
+ } else {
+ // At the moment, nb does not have annotations!
+ emojiAnnotations = annotations.en;
+ }
+ this._populateBridgeCards();
+ });
+ this._updateConnectedBridges = () => {
+ for (const card of bridgeCards.querySelectorAll(
+ ".currently-connected"
+ )) {
+ card.classList.remove("currently-connected");
+ }
+ if (this._currentBridge === "") {
+ return;
+ }
+ // Make sure we have the connected bridge in the list
+ this._populateBridgeCards();
+ // At the moment, IDs do not have to be unique (and it is a concrete
+ // case also with built-in bridges!). E.g., one line for the IPv4
+ // address and one for the IPv6 address, so use querySelectorAll
+ const cards = bridgeCards.querySelectorAll(
+ `[data-bridge-id="${this._currentBridge}"]`
+ );
+ for (const card of cards) {
+ card.classList.add("currently-connected");
+ }
+ const placeholder = document.createElement("span");
+ bridgeCards.prepend(placeholder);
+ placeholder.replaceWith(...cards);
+ };
+ try {
+ const { controller } = ChromeUtils.import(
+ "resource://torbutton/modules/tor-control-port.js",
+ {}
+ );
+ // Avoid the cache because we set our custom event watcher, and at the
+ // moment, watchers cannot be removed from a controller.
+ controller(true).then(aController => {
+ this._controller = aController;
+ // Getting the circuits may be enough, if we have bootstrapped for a
+ // while, but at the beginning it gives many bridges as connected,
+ // because tor pokes all the bridges to find the best one.
+ // Also, watching circuit events does not work, at the moment, but in
+ // any case, checking the stream has the advantage that we can see if
+ // it really used for a connection, rather than tor having created
+ // this circuit to check if the bridge can be used. We do this by
+ // checking if the stream has SOCKS username, which actually contains
+ // the destination of the stream.
+ this._controller.watchEvent(
+ "STREAM",
+ event =>
+ event.StreamStatus === "SUCCEEDED" && "SOCKS_USERNAME" in event,
+ async event => {
+ const circuitStatuses = await this._controller.getInfo(
+ "circuit-status"
+ );
+ if (!circuitStatuses) {
+ return;
+ }
+ for (const status of circuitStatuses) {
+ if (status.id === event.CircuitID && status.circuit.length) {
+ // The id in the circuit begins with a $ sign
+ const bridgeId = status.circuit[0][0].substr(1);
+ if (bridgeId !== this._currentBridge) {
+ this._currentBridge = bridgeId;
+ this._updateConnectedBridges();
+ }
+ break;
+ }
+ }
+ }
+ );
+ });
+ } catch (err) {
+ console.warn(
+ "We could not load torbutton, bridge statuses will not be updated",
+ err
+ );
+ }
+
+ // Add a new bridge
+ prefpane.querySelector(selectors.bridges.addHeader).textContent =
+ TorStrings.settings.bridgeAdd;
+ prefpane
+ .querySelector(selectors.bridges.addBuiltinLabel)
+ .setAttribute("value", TorStrings.settings.bridgeSelectBrowserBuiltin);
+ {
+ let button = prefpane.querySelector(selectors.bridges.addBuiltinButton);
+ button.setAttribute("label", TorStrings.settings.bridgeSelectBuiltin);
+ button.addEventListener("command", e => {
+ this.onAddBuiltinBridge();
+ });
+ }
+ prefpane
+ .querySelector(selectors.bridges.requestLabel)
+ .setAttribute("value", TorStrings.settings.bridgeRequestFromTorProject);
+ {
+ let button = prefpane.querySelector(selectors.bridges.requestButton);
+ button.setAttribute("label", TorStrings.settings.bridgeRequest);
+ button.addEventListener("command", e => {
+ this.onRequestBridge();
+ });
+ }
+ prefpane
+ .querySelector(selectors.bridges.enterLabel)
+ .setAttribute("value", TorStrings.settings.bridgeEnterKnown);
+ {
+ const button = prefpane.querySelector(selectors.bridges.enterButton);
+ button.setAttribute("label", TorStrings.settings.bridgeAddManually);
+ button.addEventListener("command", e => {
+ this.onAddBridgeManually();
+ });
+ }
+
+ {
+ const overlay = prefpane.querySelector(selectors.bridges.removeOverlay);
+ this._confirmBridgeRemoval = () => {
+ overlay.classList.remove("hidden");
+ };
+ const closeDialog = () => {
+ overlay.classList.add("hidden");
+ };
+ overlay.addEventListener("click", closeDialog);
+ const modal = prefpane.querySelector(selectors.bridges.removeModal);
+ modal.addEventListener("click", e => {
+ e.stopPropagation();
+ });
+ const dismiss = prefpane.querySelector(selectors.bridges.removeDismiss);
+ dismiss.addEventListener("click", closeDialog);
+ const question = prefpane.querySelector(
+ selectors.bridges.removeQuestion
+ );
+ question.textContent = TorStrings.settings.removeBridgesQuestion;
+ const warning = prefpane.querySelector(selectors.bridges.removeWarning);
+ warning.textContent = TorStrings.settings.removeBridgesWarning;
+ const confirm = prefpane.querySelector(selectors.bridges.removeConfirm);
+ confirm.setAttribute("label", TorStrings.settings.remove);
+ confirm.addEventListener("command", () => {
+ this.onRemoveAllBridges();
+ closeDialog();
+ });
+ const cancel = prefpane.querySelector(selectors.bridges.removeCancel);
+ cancel.setAttribute("label", TorStrings.settings.cancel);
+ cancel.addEventListener("command", closeDialog);
+ }
+
+ // Advanced setup
+ prefpane.querySelector(selectors.advanced.header).innerText =
+ TorStrings.settings.advancedHeading;
+ prefpane.querySelector(selectors.advanced.label).textContent =
+ TorStrings.settings.advancedLabel;
+ {
+ let settingsButton = prefpane.querySelector(selectors.advanced.button);
+ settingsButton.setAttribute(
+ "label",
+ TorStrings.settings.advancedButton
+ );
+ settingsButton.addEventListener("command", () => {
+ this.onAdvancedSettings();
+ });
+ }
+
+ // Tor logs
+ prefpane
+ .querySelector(selectors.advanced.torLogsLabel)
+ .setAttribute("value", TorStrings.settings.showTorDaemonLogs);
+ let torLogsButton = prefpane.querySelector(
+ selectors.advanced.torLogsButton
+ );
+ torLogsButton.setAttribute("label", TorStrings.settings.showLogs);
+ torLogsButton.addEventListener("command", () => {
+ this.onViewTorLogs();
+ });
+
+ Services.obs.addObserver(this, TorConnectTopics.StateChange);
+ },
+
+ init() {
+ this._populateXUL();
+
+ let onUnload = () => {
+ window.removeEventListener("unload", onUnload);
+ gConnectionPane.uninit();
+ };
+ window.addEventListener("unload", onUnload);
+
+ window.addEventListener("resize", () => {
+ this._checkBridgeCardsHeight();
+ });
+ },
+
+ uninit() {
+ // unregister our observer topics
+ Services.obs.removeObserver(this, TorSettingsTopics.SettingChanged);
+ Services.obs.removeObserver(this, TorConnectTopics.StateChange);
+
+ if (this._controller !== null) {
+ this._controller.close();
+ this._controller = null;
+ }
+ },
+
+ // whether the page should be present in about:preferences
+ get enabled() {
+ return TorProtocolService.ownsTorDaemon;
+ },
+
+ //
+ // Callbacks
+ //
+
+ observe(subject, topic, data) {
+ switch (topic) {
+ // triggered when a TorSettings param has changed
+ case TorSettingsTopics.SettingChanged: {
+ let obj = subject?.wrappedJSObject;
+ switch (data) {
+ case TorSettingsData.QuickStartEnabled: {
+ this._enableQuickstartCheckbox.checked = obj.value;
+ break;
+ }
+ }
+ break;
+ }
+ // triggered when tor connect state changes and we may
+ // need to update the messagebox
+ case TorConnectTopics.StateChange: {
+ this.onStateChange();
+ break;
+ }
+ }
+ },
+
+ async onInternetTest() {
+ const mrpc = new MoatRPC();
+ let status = null;
+ try {
+ await mrpc.init();
+ status = await mrpc.testInternetConnection();
+ } catch (err) {
+ console.log("Error while checking the Internet connection", err);
+ } finally {
+ mrpc.uninit();
+ }
+ if (status) {
+ this._internetStatus = status.successful
+ ? InternetStatus.Online
+ : InternetStatus.Offline;
+ this._populateStatus();
+ }
+ },
+
+ onStateChange() {
+ this._populateMessagebox();
+ this._populateStatus();
+ this._showAutoconfiguration();
+ this._populateBridgeCards();
+ },
+
+ onShowQr(bridgeString) {
+ const dialog = new BridgeQrDialog();
+ dialog.openDialog(gSubDialog, bridgeString);
+ },
+
+ onCopyBridgeAddress(addressElem) {
+ let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(
+ Ci.nsIClipboardHelper
+ );
+ clipboard.copyString(addressElem.value);
+ },
+
+ onRemoveAllBridges() {
+ TorSettings.bridges.enabled = false;
+ TorSettings.bridges.bridge_strings = "";
+ if (TorSettings.bridges.source == TorBridgeSource.BuiltIn) {
+ TorSettings.bridges.builtin_type = "";
+ }
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ },
+
+ onAddBuiltinBridge() {
+ const builtinBridgeDialog = new BuiltinBridgeDialog();
+ builtinBridgeDialog.openDialog(gSubDialog, aBridgeType => {
+ if (!aBridgeType) {
+ TorSettings.bridges.enabled = false;
+ TorSettings.bridges.builtin_type = "";
+ } else {
+ TorSettings.bridges.enabled = true;
+ TorSettings.bridges.source = TorBridgeSource.BuiltIn;
+ TorSettings.bridges.builtin_type = aBridgeType;
+ }
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ });
+ },
+
+ // called when the request bridge button is activated
+ onRequestBridge() {
+ let requestBridgeDialog = new RequestBridgeDialog();
+ requestBridgeDialog.openDialog(gSubDialog, aBridges => {
+ if (aBridges.length) {
+ let bridgeStrings = aBridges.join("\n");
+ TorSettings.bridges.enabled = true;
+ TorSettings.bridges.source = TorBridgeSource.BridgeDB;
+ TorSettings.bridges.bridge_strings = bridgeStrings;
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ } else {
+ TorSettings.bridges.enabled = false;
+ }
+ });
+ },
+
+ onAddBridgeManually() {
+ let provideBridgeDialog = new ProvideBridgeDialog();
+ provideBridgeDialog.openDialog(gSubDialog, aBridgeString => {
+ if (aBridgeString.length) {
+ TorSettings.bridges.enabled = true;
+ TorSettings.bridges.source = TorBridgeSource.UserProvided;
+ TorSettings.bridges.bridge_strings = aBridgeString;
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings().then(result => {
+ this._populateBridgeCards();
+ });
+ } else {
+ TorSettings.bridges.enabled = false;
+ TorSettings.bridges.source = TorBridgeSource.Invalid;
+ }
+ });
+ },
+
+ onAdvancedSettings() {
+ let connectionSettingsDialog = new ConnectionSettingsDialog();
+ connectionSettingsDialog.openDialog(gSubDialog);
+ },
+
+ onViewTorLogs() {
+ let torLogDialog = new TorLogDialog();
+ torLogDialog.openDialog(gSubDialog);
+ },
+ };
+ return retval;
+})(); /* gConnectionPane */
+
+function makeBridgeId(bridgeString) {
+ // JS uses UTF-16. While most of these emojis are surrogate pairs, a few
+ // ones fit one UTF-16 character. So we could not use neither indices,
+ // nor substr, nor some function to split the string.
+ /* eslint-disable */
+ const emojis = [
+ "👽️", "🤖", "🧠", "👁️", "🧙", "🧚", "🧜", "🐵", "🦧", "🐶", "🐺", "🦊", "🦝", "🐱", "🦁", "🐯",
+ "🐴", "🦄", "🦓", "🦌", "🐮", "🐷", "🐗", "🐪", "🦙", "🦒", "🐘", "🦣", "🦏", "🐭", "🐰", "🐿️",
+ "🦔", "🦇", "🐻", "🐨", "🦥", "🦦", "🦘", "🐥", "🐦️", "🕊️", "🦆", "🦉", "🦤", "🪶", "🦩", "🦚",
+ "🦜", "🐊", "🐢", "🦎", "🐍", "🐲", "🦕", "🐳", "🐬", "🦭", "🐟️", "🐠", "🦈", "🐙", "🐚", "🐌",
+ "🦋", "🐛", "🐝", "🐞", "💐", "🌹", "🌺", "🌻", "🌷", "🌲", "🌳", "🌴", "🌵", "🌿", "🍁", "🍇",
+ "🍈", "🍉", "🍊", "🍋", "🍌", "🍍", "🥭", "🍏", "🍐", "🍑", "🍒", "🍓", "🫐", "🥝", "🍅", "🫒",
+ "🥥", "🥑", "🍆", "🥕", "🌽", "🌶️", "🥬", "🥦", "🧅", "🍄", "🥜", "🥐", "🥖", "🥨", "🥯", "🥞",
+ "🧇", "🍔", "🍕", "🌭", "🌮", "🍿", "🦀", "🦞", "🍨", "🍩", "🍪", "🎂", "🧁", "🍫", "🍬", "🍭",
+ "🫖", "🧃", "🧉", "🧭", "🏔️", "🌋", "🏕️", "🏝️", "🏡", "⛲️", "🎠", "🎡", "🎢", "💈", "🚆", "🚋",
+ "🚍️", "🚕", "🚗", "🚚", "🚜", "🛵", "🛺", "🛴", "🛹", "🛼", "⚓️", "⛵️", "🛶", "🚤", "🚢", "✈️",
+ "🚁", "🚠", "🛰️", "🚀", "🛸", "⏰", "🌙", "🌡️", "☀️", "🪐", "🌟", "🌀", "🌈", "☂️", "❄️", "☄️",
+ "🔥", "💧", "🌊", "🎃", "✨", "🎈", "🎉", "🎏", "🎀", "🎁", "🎟️", "🏆️", "⚽️", "🏀", "🏈", "🎾",
+ "🥏", "🏓", "🏸", "🤿", "🥌", "🎯", "🪀", "🪁", "🔮", "🎲", "🧩", "🎨", "🧵", "👕", "🧦", "👗",
+ "🩳", "🎒", "👟", "👑", "🧢", "💄", "💍", "💎", "📢", "🎶", "🎙️", "📻️", "🎷", "🪗", "🎸", "🎺",
+ "🎻", "🪕", "🥁", "☎️", "🔋", "💿️", "🧮", "🎬️", "💡", "🔦", "🏮", "📕", "🏷️", "💳️", "✏️", "🖌️",
+ "🖍️", "📌", "📎", "🔑", "🪃", "🏹", "⚖️", "🧲", "🧪", "🧬", "🔬", "🔭", "📡", "🪑", "🧹", "🗿",
+ ];
+ /* eslint-enable */
+
+ // FNV-1a implementation that is compatible with other languages
+ const prime = 0x01000193;
+ const offset = 0x811c9dc5;
+ let hash = offset;
+ const encoder = new TextEncoder();
+ for (const byte of encoder.encode(bridgeString)) {
+ hash = Math.imul(hash ^ byte, prime);
+ }
+
+ const hashBytes = [
+ ((hash & 0x7f000000) >> 24) | (hash < 0 ? 0x80 : 0),
+ (hash & 0x00ff0000) >> 16,
+ (hash & 0x0000ff00) >> 8,
+ hash & 0x000000ff,
+ ];
+ return hashBytes.map(b => emojis[b]);
+}
+
+function parseBridgeLine(line) {
+ const re = /^([^\s]+\s+)?([0-9a-fA-F\.\[\]\:]+:[0-9]{1,5})\s*([0-9a-fA-F]{40})(\s+.+)?/;
+ const matches = line.match(re);
+ if (!matches) {
+ return null;
+ }
+ let bridge = { addr: matches[2] };
+ if (matches[1] !== undefined) {
+ bridge.transport = matches[1].trim();
+ }
+ if (matches[3] !== undefined) {
+ bridge.id = matches[3].toUpperCase();
+ }
+ if (matches[4] !== undefined) {
+ bridge.args = matches[4].trim();
+ }
+ return bridge;
+}
diff --git a/browser/components/torpreferences/content/connectionPane.xhtml b/browser/components/torpreferences/content/connectionPane.xhtml
new file mode 100644
index 0000000000000..860f3c233cb6c
--- /dev/null
+++ b/browser/components/torpreferences/content/connectionPane.xhtml
@@ -0,0 +1,195 @@
+<!-- Tor panel -->
+
+<script type="application/javascript"
+ src="chrome://browser/content/torpreferences/connectionPane.js"/>
+<html:template id="template-paneConnection">
+
+<!-- Tor Connect Message Box -->
+<groupbox data-category="paneConnection" hidden="true">
+ <html:div id="torPreferences-connectMessageBox"
+ class="subcategory"
+ data-category="paneConnection"
+ hidden="true">
+ <html:table>
+ <html:tr>
+ <html:td>
+ <html:div id="torPreferences-connectMessageBox-icon"/>
+ </html:td>
+ <html:td id="torPreferences-connectMessageBox-message">
+ </html:td>
+ <html:td>
+ <html:button id="torPreferences-connectMessageBox-button">
+ </html:button>
+ </html:td>
+ </html:tr>
+ </html:table>
+ </html:div>
+</groupbox>
+
+<hbox id="torPreferencesCategory"
+ class="subcategory"
+ data-category="paneConnection"
+ hidden="true">
+ <html:h1 id="torPreferences-header"/>
+</hbox>
+
+<groupbox data-category="paneConnection"
+ hidden="true">
+ <description flex="1">
+ <html:span id="torPreferences-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+</groupbox>
+
+<groupbox id="torPreferences-status-group"
+ data-category="paneConnection"
+ hidden="true">
+ <hbox id="torPreferences-status-box">
+ <image id="torPreferences-status-internet-icon"/>
+ <html:span id="torPreferences-status-internet-label"/>
+ <button id="torPreferences-status-internet-test"/>
+ <image id="torPreferences-status-internet-statusIcon"/>
+ <html:span id="torPreferences-status-internet-status"/>
+ <image id="torPreferences-status-tor-icon"/>
+ <html:span id="torPreferences-status-tor-label"/>
+ <image id="torPreferences-status-tor-statusIcon"/>
+ <html:span id="torPreferences-status-tor-status"/>
+ </hbox>
+</groupbox>
+
+<!-- Quickstart -->
+<groupbox id="torPreferences-quickstart-group"
+ data-category="paneConnection"
+ hidden="true">
+ <html:h2 id="torPreferences-quickstart-header"/>
+ <description flex="1">
+ <html:span id="torPreferences-quickstart-description"/>
+ </description>
+ <checkbox id="torPreferences-quickstart-toggle"/>
+</groupbox>
+
+<!-- Bridges -->
+<hbox class="subcategory"
+ data-category="paneConnection"
+ hidden="true">
+ <html:h1 id="torPreferences-bridges-header"/>
+</hbox>
+<groupbox id="torPreferences-bridges-group"
+ data-category="paneConnection"
+ hidden="true">
+ <description flex="1">
+ <html:span id="torPreferences-bridges-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-bridges-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <hbox align="center" id="torPreferences-bridges-locationGroup" hidden="true">
+ <label id="torPreferences-bridges-locationLabel"
+ control="torPreferences-bridges-location"/>
+ <spacer flex="1"/>
+ <menulist id="torPreferences-bridges-location">
+ <menupopup id="torPreferences-bridges-locationEntries"/>
+ </menulist>
+ <button id="torPreferences-bridges-buttonChooseBridgeForMe" class="torMarginFix primary"/>
+ </hbox>
+ <html:h2 id="torPreferences-currentBridges-header">
+ <html:span id="torPreferences-currentBridges-headerText"/>
+ <html:input type="checkbox" id="torPreferences-currentBridges-switch" class="toggle-button"/>
+ </html:h2>
+ <description flex="1">
+ <html:span id="torPreferences-currentBridges-description"/>
+ </description>
+ <menupopup id="torPreferences-bridgeCard-menu"/>
+ <vbox id="torPreferences-bridgeCard-template" class="torPreferences-bridgeCard">
+ <hbox class="torPreferences-bridgeCard-heading">
+ <html:div class="torPreferences-bridgeCard-id"/>
+ <html:div class="torPreferences-bridgeCard-headingAddr"/>
+ <html:div class="torPreferences-bridgeCard-buttons">
+ <html:span class="torPreferences-bridgeCard-connectedBadge">
+ <image class="torPreferences-bridgeCard-connectedIcon"/>
+ <html:span class="torPreferences-bridgeCard-connectedLabel"/>
+ </html:span>
+ <html:button class="torPreferences-bridgeCard-options stop-click"/>
+ </html:div>
+ </hbox>
+ <box class="torPreferences-bridgeCard-grid">
+ <box class="torPreferences-bridgeCard-qrWrapper">
+ <box class="torPreferences-bridgeCard-qr stop-click">
+ <html:div class="torPreferences-bridgeCard-qrCode"/>
+ <html:div class="torPreferences-bridgeCard-qrOnionBox"/>
+ <html:div class="torPreferences-bridgeCard-qrOnion"/>
+ </box>
+ <html:div class="torPreferences-bridgeCard-filler"/>
+ </box>
+ <description class="torPreferences-bridgeCard-share"></description>
+ <hbox class="torPreferences-bridgeCard-addrBox">
+ <html:input class="torPreferences-bridgeCard-addr torMarginFix stop-click" type="text" readonly="readonly"/>
+ </hbox>
+ <hbox class="torPreferences-bridgeCard-learnMoreBox" align="center">
+ <label class="torPreferences-bridgeCard-learnMore learnMore text-link stop-click" is="text-link"/>
+ </hbox>
+ <hbox class="torPreferences-bridgeCard-copy" align="center">
+ <button class="torPreferences-bridgeCard-copyButton stop-click"/>
+ </hbox>
+ </box>
+ </vbox>
+ <vbox id="torPreferences-currentBridges-cards"></vbox>
+ <vbox align="center">
+ <button id="torPreferences-currentBridges-showAll"/>
+ <button id="torPreferences-currentBridges-removeAll" class="primary danger-button"/>
+ </vbox>
+ <html:h2 id="torPreferences-addBridge-header"></html:h2>
+ <hbox align="center">
+ <label id="torPreferences-addBridge-labelBuiltinBridge"/>
+ <space flex="1"/>
+ <button id="torPreferences-addBridge-buttonBuiltinBridge" class="torMarginFix"/>
+ </hbox>
+ <hbox align="center">
+ <label id="torPreferences-addBridge-labelRequestBridge"/>
+ <space flex="1"/>
+ <button id="torPreferences-addBridge-buttonRequestBridge" class="torMarginFix"/>
+ </hbox>
+ <hbox align="center">
+ <label id="torPreferences-addBridge-labelEnterBridge"/>
+ <space flex="1"/>
+ <button id="torPreferences-addBridge-buttonEnterBridge" class="torMarginFix"/>
+ </hbox>
+</groupbox>
+
+<!-- Advanced -->
+<hbox class="subcategory"
+ data-category="paneConnection"
+ hidden="true">
+ <html:h1 id="torPreferences-advanced-header"/>
+</hbox>
+<groupbox id="torPreferences-advanced-group"
+ data-category="paneConnection"
+ hidden="true">
+ <box id="torPreferences-advanced-grid">
+ <hbox id="torPreferences-advanced-hbox" align="center">
+ <label id="torPreferences-advanced-label"/>
+ </hbox>
+ <hbox align="center">
+ <button id="torPreferences-advanced-button"/>
+ </hbox>
+ <hbox id="torPreferences-torDaemon-hbox" align="center">
+ <label id="torPreferences-torLogs"/>
+ </hbox>
+ <hbox align="center" data-subcategory="viewlogs">
+ <button id="torPreferences-buttonTorLogs"/>
+ </hbox>
+ </box>
+</groupbox>
+
+<html:div id="bridge-remove-overlay" class="hidden">
+ <html:div id="bridge-remove-modal">
+ <html:img id="bridge-remove-dismiss" src="chrome://global/skin/icons/close.svg"/>
+ <html:div id="bridge-remove-icon"/>
+ <html:p id="bridge-remove-question"/>
+ <html:p id="bridge-remove-warning"/>
+ <html:div id="bridge-remove-buttonbar">
+ <button id="bridge-remove-cancel"/>
+ <button id="bridge-remove-confirm"/>
+ </html:div>
+ </html:div>
+</html:div>
+
+</html:template>
diff --git a/browser/components/torpreferences/content/connectionSettingsDialog.jsm b/browser/components/torpreferences/content/connectionSettingsDialog.jsm
new file mode 100644
index 0000000000000..41b9565780dcc
--- /dev/null
+++ b/browser/components/torpreferences/content/connectionSettingsDialog.jsm
@@ -0,0 +1,397 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["ConnectionSettingsDialog"];
+
+const { TorSettings, TorProxyType } = ChromeUtils.import(
+ "resource:///modules/TorSettings.jsm"
+);
+
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class ConnectionSettingsDialog {
+ constructor() {
+ this._dialog = null;
+ this._useProxyCheckbox = null;
+ this._proxyTypeLabel = null;
+ this._proxyTypeMenulist = null;
+ this._proxyAddressLabel = null;
+ this._proxyAddressTextbox = null;
+ this._proxyPortLabel = null;
+ this._proxyPortTextbox = null;
+ this._proxyUsernameLabel = null;
+ this._proxyUsernameTextbox = null;
+ this._proxyPasswordLabel = null;
+ this._proxyPasswordTextbox = null;
+ this._useFirewallCheckbox = null;
+ this._allowedPortsLabel = null;
+ this._allowedPortsTextbox = null;
+ }
+
+ static get selectors() {
+ return {
+ header: "#torPreferences-connection-header",
+ useProxyCheckbox: "checkbox#torPreferences-connection-toggleProxy",
+ proxyTypeLabel: "label#torPreferences-localProxy-type",
+ proxyTypeList: "menulist#torPreferences-localProxy-builtinList",
+ proxyAddressLabel: "label#torPreferences-localProxy-address",
+ proxyAddressTextbox: "input#torPreferences-localProxy-textboxAddress",
+ proxyPortLabel: "label#torPreferences-localProxy-port",
+ proxyPortTextbox: "input#torPreferences-localProxy-textboxPort",
+ proxyUsernameLabel: "label#torPreferences-localProxy-username",
+ proxyUsernameTextbox: "input#torPreferences-localProxy-textboxUsername",
+ proxyPasswordLabel: "label#torPreferences-localProxy-password",
+ proxyPasswordTextbox: "input#torPreferences-localProxy-textboxPassword",
+ useFirewallCheckbox: "checkbox#torPreferences-connection-toggleFirewall",
+ firewallAllowedPortsLabel: "label#torPreferences-connection-allowedPorts",
+ firewallAllowedPortsTextbox:
+ "input#torPreferences-connection-textboxAllowedPorts",
+ };
+ }
+
+ // disables the provided list of elements
+ _setElementsDisabled(elements, disabled) {
+ for (let currentElement of elements) {
+ currentElement.disabled = disabled;
+ }
+ }
+
+ _populateXUL(window, aDialog) {
+ const selectors = ConnectionSettingsDialog.selectors;
+
+ this._dialog = aDialog;
+ const dialogWin = this._dialog.parentElement;
+ dialogWin.setAttribute(
+ "title",
+ TorStrings.settings.connectionSettingsDialogTitle
+ );
+ this._dialog.querySelector(selectors.header).textContent =
+ TorStrings.settings.connectionSettingsDialogHeader;
+
+ // Local Proxy
+ this._useProxyCheckbox = this._dialog.querySelector(
+ selectors.useProxyCheckbox
+ );
+ this._useProxyCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useLocalProxy
+ );
+ this._useProxyCheckbox.addEventListener("command", e => {
+ const checked = this._useProxyCheckbox.checked;
+ this.onToggleProxy(checked);
+ });
+ this._proxyTypeLabel = this._dialog.querySelector(selectors.proxyTypeLabel);
+ this._proxyTypeLabel.setAttribute("value", TorStrings.settings.proxyType);
+
+ let mockProxies = [
+ {
+ value: TorProxyType.Socks4,
+ label: TorStrings.settings.proxyTypeSOCKS4,
+ },
+ {
+ value: TorProxyType.Socks5,
+ label: TorStrings.settings.proxyTypeSOCKS5,
+ },
+ { value: TorProxyType.HTTPS, label: TorStrings.settings.proxyTypeHTTP },
+ ];
+ this._proxyTypeMenulist = this._dialog.querySelector(
+ selectors.proxyTypeList
+ );
+ this._proxyTypeMenulist.addEventListener("command", e => {
+ const value = this._proxyTypeMenulist.value;
+ this.onSelectProxyType(value);
+ });
+ for (let currentProxy of mockProxies) {
+ let menuEntry = window.document.createXULElement("menuitem");
+ menuEntry.setAttribute("value", currentProxy.value);
+ menuEntry.setAttribute("label", currentProxy.label);
+ this._proxyTypeMenulist.querySelector("menupopup").appendChild(menuEntry);
+ }
+
+ this._proxyAddressLabel = this._dialog.querySelector(
+ selectors.proxyAddressLabel
+ );
+ this._proxyAddressLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyAddress
+ );
+ this._proxyAddressTextbox = this._dialog.querySelector(
+ selectors.proxyAddressTextbox
+ );
+ this._proxyAddressTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyAddressPlaceholder
+ );
+ this._proxyAddressTextbox.addEventListener("blur", e => {
+ let value = this._proxyAddressTextbox.value.trim();
+ let colon = value.lastIndexOf(":");
+ if (colon != -1) {
+ let maybePort = parseInt(value.substr(colon + 1));
+ if (!isNaN(maybePort) && maybePort > 0 && maybePort < 65536) {
+ this._proxyAddressTextbox.value = value.substr(0, colon);
+ this._proxyPortTextbox.value = maybePort;
+ }
+ }
+ });
+ this._proxyPortLabel = this._dialog.querySelector(selectors.proxyPortLabel);
+ this._proxyPortLabel.setAttribute("value", TorStrings.settings.proxyPort);
+ this._proxyPortTextbox = this._dialog.querySelector(
+ selectors.proxyPortTextbox
+ );
+ this._proxyUsernameLabel = this._dialog.querySelector(
+ selectors.proxyUsernameLabel
+ );
+ this._proxyUsernameLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyUsername
+ );
+ this._proxyUsernameTextbox = this._dialog.querySelector(
+ selectors.proxyUsernameTextbox
+ );
+ this._proxyUsernameTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+ this._proxyPasswordLabel = this._dialog.querySelector(
+ selectors.proxyPasswordLabel
+ );
+ this._proxyPasswordLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyPassword
+ );
+ this._proxyPasswordTextbox = this._dialog.querySelector(
+ selectors.proxyPasswordTextbox
+ );
+ this._proxyPasswordTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+
+ this.onToggleProxy(false);
+ if (TorSettings.proxy.enabled) {
+ this.onToggleProxy(true);
+ this.onSelectProxyType(TorSettings.proxy.type);
+ this._proxyAddressTextbox.value = TorSettings.proxy.address;
+ this._proxyPortTextbox.value = TorSettings.proxy.port;
+ this._proxyUsernameTextbox.value = TorSettings.proxy.username;
+ this._proxyPasswordTextbox.value = TorSettings.proxy.password;
+ }
+
+ // Local firewall
+ this._useFirewallCheckbox = this._dialog.querySelector(
+ selectors.useFirewallCheckbox
+ );
+ this._useFirewallCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useFirewall
+ );
+ this._useFirewallCheckbox.addEventListener("command", e => {
+ const checked = this._useFirewallCheckbox.checked;
+ this.onToggleFirewall(checked);
+ });
+ this._allowedPortsLabel = this._dialog.querySelector(
+ selectors.firewallAllowedPortsLabel
+ );
+ this._allowedPortsLabel.setAttribute(
+ "value",
+ TorStrings.settings.allowedPorts
+ );
+ this._allowedPortsTextbox = this._dialog.querySelector(
+ selectors.firewallAllowedPortsTextbox
+ );
+ this._allowedPortsTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.allowedPortsPlaceholder
+ );
+
+ this.onToggleFirewall(false);
+ if (TorSettings.firewall.enabled) {
+ this.onToggleFirewall(true);
+ this._allowedPortsTextbox.value = TorSettings.firewall.allowed_ports.join(
+ ", "
+ );
+ }
+
+ this._dialog.addEventListener("dialogaccept", e => {
+ this._applySettings();
+ });
+
+ // Hack: see the CSS
+ this._dialog.style.minWidth = '0';
+ this._dialog.style.minHeight = '0';
+ }
+
+ // callback when proxy is toggled
+ onToggleProxy(enabled) {
+ this._useProxyCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [
+ this._proxyTypeLabel,
+ this._proxyTypeMenulist,
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ disabled
+ );
+ if (enabled) {
+ this.onSelectProxyType(this._proxyTypeMenulist.value);
+ }
+ }
+
+ // callback when proxy type is changed
+ onSelectProxyType(value) {
+ if (typeof value === "string") {
+ value = parseInt(value);
+ }
+
+ this._proxyTypeMenulist.value = value;
+ switch (value) {
+ case TorProxyType.Invalid: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyAddressTextbox.value = "";
+ this._proxyPortTextbox.value = "";
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.Socks4: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ ],
+ false
+ ); // ENABLE
+ this._setElementsDisabled(
+ [
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.Socks5:
+ case TorProxyType.HTTPS: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ false
+ ); // ENABLE
+ break;
+ }
+ }
+ }
+
+ // callback when firewall proxy is toggled
+ onToggleFirewall(enabled) {
+ this._useFirewallCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [this._allowedPortsLabel, this._allowedPortsTextbox],
+ disabled
+ );
+ }
+
+ // pushes settings from UI to tor
+ _applySettings() {
+ const type = this._useProxyCheckbox.checked
+ ? parseInt(this._proxyTypeMenulist.value)
+ : TorProxyType.Invalid;
+ const address = this._proxyAddressTextbox.value;
+ const port = this._proxyPortTextbox.value;
+ const username = this._proxyUsernameTextbox.value;
+ const password = this._proxyPasswordTextbox.value;
+ switch (type) {
+ case TorProxyType.Invalid:
+ TorSettings.proxy.enabled = false;
+ break;
+ case TorProxyType.Socks4:
+ TorSettings.proxy.enabled = true;
+ TorSettings.proxy.type = type;
+ TorSettings.proxy.address = address;
+ TorSettings.proxy.port = port;
+ break;
+ case TorProxyType.Socks5:
+ TorSettings.proxy.enabled = true;
+ TorSettings.proxy.type = type;
+ TorSettings.proxy.address = address;
+ TorSettings.proxy.port = port;
+ TorSettings.proxy.username = username;
+ TorSettings.proxy.password = password;
+ break;
+ case TorProxyType.HTTPS:
+ TorSettings.proxy.enabled = true;
+ TorSettings.proxy.type = type;
+ TorSettings.proxy.address = address;
+ TorSettings.proxy.port = port;
+ TorSettings.proxy.username = username;
+ TorSettings.proxy.password = password;
+ break;
+ }
+
+ let portListString = this._useFirewallCheckbox.checked
+ ? this._allowedPortsTextbox.value
+ : "";
+ if (portListString) {
+ TorSettings.firewall.enabled = true;
+ TorSettings.firewall.allowed_ports = portListString;
+ } else {
+ TorSettings.firewall.enabled = false;
+ }
+
+ TorSettings.saveToPrefs();
+ TorSettings.applySettings();
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(window, aDialog);
+ }, 0);
+ }
+
+ openDialog(gSubDialog) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/connectionSettingsDialog.xhtml",
+ { features: "resizable=yes" },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/connectionSettingsDialog.xhtml b/browser/components/torpreferences/content/connectionSettingsDialog.xhtml
new file mode 100644
index 0000000000000..8265cdd71c2f8
--- /dev/null
+++ b/browser/components/torpreferences/content/connectionSettingsDialog.xhtml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="torPreferences-connection-dialog"
+ buttons="accept,cancel">
+ <html:h3 id="torPreferences-connection-header">​</html:h3>
+ <!-- Local Proxy -->
+ <checkbox id="torPreferences-connection-toggleProxy" label="​"/>
+ <box id="torPreferences-connection-grid">
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-type"/>
+ </hbox>
+ <hbox align="center">
+ <spacer flex="1"/>
+ <menulist id="torPreferences-localProxy-builtinList" class="torMarginFix">
+ <menupopup/>
+ </menulist>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-address"/>
+ </hbox>
+ <hbox align="center">
+ <html:input id="torPreferences-localProxy-textboxAddress" type="text" class="torMarginFix"/>
+ <label id="torPreferences-localProxy-port"/>
+ <!-- proxy-port-input class style pulled from preferences.css and used in the vanilla proxy setup menu -->
+ <html:input id="torPreferences-localProxy-textboxPort" class="proxy-port-input torMarginFix" hidespinbuttons="true" type="number" min="0" max="65535" maxlength="5"/>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-username"/>
+ </hbox>
+ <hbox align="center">
+ <html:input id="torPreferences-localProxy-textboxUsername" type="text" class="torMarginFix"/>
+ <label id="torPreferences-localProxy-password"/>
+ <html:input id="torPreferences-localProxy-textboxPassword" class="torMarginFix" type="password"/>
+ </hbox>
+ </box>
+ <!-- Firewall -->
+ <checkbox id="torPreferences-connection-toggleFirewall" label="​"/>
+ <box id="torPreferences-connection-firewall">
+ <hbox class="indent" align="center">
+ <label id="torPreferences-connection-allowedPorts"/>
+ </hbox>
+ <hbox id="torPreferences-connection-hboxAllowedPorts" align="center">
+ <html:input id="torPreferences-connection-textboxAllowedPorts" type="text" class="torMarginFix" value="80,443"/>
+ </hbox>
+ </box>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let connectionSettingsDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-connection-dialog");
+ connectionSettingsDialog.init(window, dialog);
+ ]]></script>
+</dialog>
+</window>
diff --git a/browser/components/torpreferences/content/network.svg b/browser/components/torpreferences/content/network.svg
new file mode 100644
index 0000000000000..e1689b5e6d649
--- /dev/null
+++ b/browser/components/torpreferences/content/network.svg
@@ -0,0 +1,6 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16" fill="context-fill" fill-opacity="context-fill-opacity">
+ <path d="M8.5 1a7.5 7.5 0 1 0 0 15 7.5 7.5 0 0 0 0-15zm2.447 1.75a6.255 6.255 0 0 1 3.756 5.125l-2.229 0A9.426 9.426 0 0 0 10.54 2.75l.407 0zm-2.049 0a8.211 8.211 0 0 1 2.321 5.125l-5.438 0A8.211 8.211 0 0 1 8.102 2.75l.796 0zm-2.846 0 .408 0a9.434 9.434 0 0 0-1.934 5.125l-2.229 0A6.254 6.254 0 0 1 6.052 2.75zm0 11.5a6.252 6.252 0 0 1-3.755-5.125l2.229 0A9.426 9.426 0 0 0 6.46 14.25l-.408 0zm2.05 0a8.211 8.211 0 0 1-2.321-5.125l5.437 0a8.211 8.211 0 0 1-2.321 5.125l-.795 0zm2.846 0-.40 [...]
+</svg>
diff --git a/browser/components/torpreferences/content/provideBridgeDialog.jsm b/browser/components/torpreferences/content/provideBridgeDialog.jsm
new file mode 100644
index 0000000000000..f20cf9ddd925d
--- /dev/null
+++ b/browser/components/torpreferences/content/provideBridgeDialog.jsm
@@ -0,0 +1,75 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["ProvideBridgeDialog"];
+
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+const { TorSettings, TorBridgeSource } = ChromeUtils.import(
+ "resource:///modules/TorSettings.jsm"
+);
+
+class ProvideBridgeDialog {
+ constructor() {
+ this._dialog = null;
+ this._textarea = null;
+ this._bridgeString = "";
+ }
+
+ static get selectors() {
+ return {
+ header: "#torPreferences-provideBridge-header",
+ textarea: "#torPreferences-provideBridge-textarea",
+ };
+ }
+
+ _populateXUL(window, aDialog) {
+ const selectors = ProvideBridgeDialog.selectors;
+
+ this._dialog = aDialog;
+ const dialogWin = this._dialog.parentElement;
+ dialogWin.setAttribute("title", TorStrings.settings.provideBridgeTitle);
+ this._dialog.querySelector(selectors.header).textContent =
+ TorStrings.settings.provideBridgeHeader;
+ this._textarea = this._dialog.querySelector(selectors.textarea);
+ this._textarea.setAttribute(
+ "placeholder",
+ TorStrings.settings.provideBridgePlaceholder
+ );
+ if (
+ TorSettings.bridges.enabled &&
+ TorSettings.bridges.source == TorBridgeSource.UserProvided
+ ) {
+ this._textarea.value = TorSettings.bridges.bridge_strings.join("\n");
+ }
+
+ this._dialog.addEventListener("dialogaccept", e => {
+ this._bridgeString = this._textarea.value;
+ });
+ this._dialog.addEventListener("dialoghelp", e => {
+ window.top.openTrustedLinkIn(
+ TorStrings.settings.learnMoreBridgesURL,
+ "tab"
+ );
+ });
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(window, aDialog);
+ }, 0);
+ }
+
+ openDialog(gSubDialog, aCloseCallback) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/provideBridgeDialog.xhtml",
+ {
+ features: "resizable=yes",
+ closingCallback: () => {
+ aCloseCallback(this._bridgeString);
+ },
+ },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/provideBridgeDialog.xhtml b/browser/components/torpreferences/content/provideBridgeDialog.xhtml
new file mode 100644
index 0000000000000..28d19cadaf9c9
--- /dev/null
+++ b/browser/components/torpreferences/content/provideBridgeDialog.xhtml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="torPreferences-provideBridge-dialog"
+ buttons="help,accept,cancel">
+ <html:h3 id="torPreferences-provideBridge-header">​</html:h3>
+ <html:textarea id="torPreferences-provideBridge-textarea" multiline="true" rows="3"/>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let provideBridgeDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-provideBridge-dialog");
+ provideBridgeDialog.init(window, dialog);
+ ]]></script>
+</dialog>
+</window>
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.jsm b/browser/components/torpreferences/content/requestBridgeDialog.jsm
new file mode 100644
index 0000000000000..9b8cd6db0a9b9
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.jsm
@@ -0,0 +1,211 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["RequestBridgeDialog"];
+
+const { BridgeDB } = ChromeUtils.import("resource:///modules/BridgeDB.jsm");
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class RequestBridgeDialog {
+ constructor() {
+ this._dialog = null;
+ this._submitButton = null;
+ this._dialogHeader = null;
+ this._captchaImage = null;
+ this._captchaEntryTextbox = null;
+ this._captchaRefreshButton = null;
+ this._incorrectCaptchaHbox = null;
+ this._incorrectCaptchaLabel = null;
+ this._bridges = [];
+ }
+
+ static get selectors() {
+ return {
+ submitButton:
+ "accept" /* not really a selector but a key for dialog's getButton */,
+ dialogHeader: "h3#torPreferences-requestBridge-header",
+ captchaImage: "image#torPreferences-requestBridge-captchaImage",
+ captchaEntryTextbox: "input#torPreferences-requestBridge-captchaTextbox",
+ refreshCaptchaButton:
+ "button#torPreferences-requestBridge-refreshCaptchaButton",
+ incorrectCaptchaHbox:
+ "hbox#torPreferences-requestBridge-incorrectCaptchaHbox",
+ incorrectCaptchaLabel:
+ "label#torPreferences-requestBridge-incorrectCaptchaError",
+ };
+ }
+
+ _populateXUL(window, dialog) {
+ const selectors = RequestBridgeDialog.selectors;
+
+ this._dialog = dialog;
+ const dialogWin = dialog.parentElement;
+ dialogWin.setAttribute(
+ "title",
+ TorStrings.settings.requestBridgeDialogTitle
+ );
+ // user may have opened a Request Bridge dialog in another tab, so update the
+ // CAPTCHA image or close out the dialog if we have a bridge list
+ this._dialog.addEventListener("focusin", () => {
+ const uri = BridgeDB.currentCaptchaImage;
+ const bridges = BridgeDB.currentBridges;
+
+ // new captcha image
+ if (uri) {
+ this._setcaptchaImage(uri);
+ } else if (bridges) {
+ this._bridges = bridges;
+ this._submitButton.disabled = false;
+ this._dialog.cancelDialog();
+ }
+ });
+
+ this._submitButton = this._dialog.getButton(selectors.submitButton);
+ this._submitButton.setAttribute("label", TorStrings.settings.submitCaptcha);
+ this._submitButton.disabled = true;
+ this._dialog.addEventListener("dialogaccept", e => {
+ e.preventDefault();
+ this.onSubmitCaptcha();
+ });
+ this._dialog.addEventListener("dialoghelp", e => {
+ window.top.openTrustedLinkIn(
+ TorStrings.settings.learnMoreBridgesURL,
+ "tab"
+ );
+ });
+
+ this._dialogHeader = this._dialog.querySelector(selectors.dialogHeader);
+ this._dialogHeader.textContent = TorStrings.settings.contactingBridgeDB;
+
+ this._captchaImage = this._dialog.querySelector(selectors.captchaImage);
+
+ // request captcha from bridge db
+ BridgeDB.requestNewCaptchaImage().then(uri => {
+ this._setcaptchaImage(uri);
+ });
+
+ this._captchaEntryTextbox = this._dialog.querySelector(
+ selectors.captchaEntryTextbox
+ );
+ this._captchaEntryTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.captchaTextboxPlaceholder
+ );
+ this._captchaEntryTextbox.disabled = true;
+ // disable submit if entry textbox is empty
+ this._captchaEntryTextbox.oninput = () => {
+ this._submitButton.disabled = this._captchaEntryTextbox.value == "";
+ };
+
+ this._captchaRefreshButton = this._dialog.querySelector(
+ selectors.refreshCaptchaButton
+ );
+ this._captchaRefreshButton.disabled = true;
+
+ this._incorrectCaptchaHbox = this._dialog.querySelector(
+ selectors.incorrectCaptchaHbox
+ );
+ this._incorrectCaptchaLabel = this._dialog.querySelector(
+ selectors.incorrectCaptchaLabel
+ );
+ this._incorrectCaptchaLabel.setAttribute(
+ "value",
+ TorStrings.settings.incorrectCaptcha
+ );
+
+ return true;
+ }
+
+ _setcaptchaImage(uri) {
+ if (uri != this._captchaImage.src) {
+ this._captchaImage.src = uri;
+ this._dialogHeader.textContent = TorStrings.settings.solveTheCaptcha;
+ this._setUIDisabled(false);
+ this._captchaEntryTextbox.focus();
+ this._captchaEntryTextbox.select();
+ }
+ }
+
+ _setUIDisabled(disabled) {
+ this._submitButton.disabled = this._captchaGuessIsEmpty() || disabled;
+ this._captchaEntryTextbox.disabled = disabled;
+ this._captchaRefreshButton.disabled = disabled;
+ }
+
+ _captchaGuessIsEmpty() {
+ return this._captchaEntryTextbox.value == "";
+ }
+
+ init(window, dialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(window, dialog);
+ }, 0);
+ }
+
+ close() {
+ BridgeDB.close();
+ }
+
+ /*
+ Event Handlers
+ */
+ onSubmitCaptcha() {
+ let captchaText = this._captchaEntryTextbox.value.trim();
+ // noop if the field is empty
+ if (captchaText == "") {
+ return;
+ }
+
+ // freeze ui while we make request
+ this._setUIDisabled(true);
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.submitCaptchaGuess(captchaText)
+ .then(aBridges => {
+ if (aBridges) {
+ this._bridges = aBridges;
+ this._submitButton.disabled = false;
+ // This was successful, but use cancelDialog() to close, since
+ // we intercept the `dialogaccept` event.
+ this._dialog.cancelDialog();
+ } else {
+ this._bridges = [];
+ this._setUIDisabled(false);
+ this._incorrectCaptchaHbox.style.visibility = "visible";
+ }
+ })
+ .catch(aError => {
+ // TODO: handle other errors properly here when we do the bridge settings re-design
+ this._bridges = [];
+ this._setUIDisabled(false);
+ this._incorrectCaptchaHbox.style.visibility = "visible";
+ console.log(aError);
+ });
+ }
+
+ onRefreshCaptcha() {
+ this._setUIDisabled(true);
+ this._captchaImage.src = "";
+ this._dialogHeader.textContent = TorStrings.settings.contactingBridgeDB;
+ this._captchaEntryTextbox.value = "";
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.requestNewCaptchaImage().then(uri => {
+ this._setcaptchaImage(uri);
+ });
+ }
+
+ openDialog(gSubDialog, aCloseCallback) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.xhtml",
+ {
+ features: "resizable=yes",
+ closingCallback: () => {
+ this.close();
+ aCloseCallback(this._bridges);
+ },
+ },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.xhtml b/browser/components/torpreferences/content/requestBridgeDialog.xhtml
new file mode 100644
index 0000000000000..b7286528a8a5a
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.xhtml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="torPreferences-requestBridge-dialog"
+ buttons="help,accept,cancel">
+ <!-- ok, so ​ is a zero-width space. We need to have *something* in the innerText so that XUL knows how tall the
+ title node is so that it can determine how large to make the dialog element's inner draw area. If we have nothing
+ in the innerText, then it collapse to 0 height, and the contents of the dialog ends up partially hidden >:( -->
+ <html:h3 id="torPreferences-requestBridge-header">​</html:h3>
+ <!-- init to transparent 400x125 png -->
+ <image id="torPreferences-requestBridge-captchaImage" flex="1"/>
+ <hbox id="torPreferences-requestBridge-inputHbox">
+ <html:input id="torPreferences-requestBridge-captchaTextbox" type="text" style="-moz-box-flex: 1;"/>
+ <button id="torPreferences-requestBridge-refreshCaptchaButton"
+ image="chrome://browser/skin/reload.svg"
+ oncommand="requestBridgeDialog.onRefreshCaptcha();"/>
+ </hbox>
+ <hbox id="torPreferences-requestBridge-incorrectCaptchaHbox" align="center">
+ <image id="torPreferences-requestBridge-errorIcon" />
+ <label id="torPreferences-requestBridge-incorrectCaptchaError" flex="1"/>
+ </hbox>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let requestBridgeDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-requestBridge-dialog");
+ requestBridgeDialog.init(window, dialog);
+ ]]></script>
+</dialog>
+</window>
diff --git a/browser/components/torpreferences/content/torLogDialog.jsm b/browser/components/torpreferences/content/torLogDialog.jsm
new file mode 100644
index 0000000000000..94a57b9b165ee
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.jsm
@@ -0,0 +1,84 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorLogDialog"];
+
+const { setTimeout, clearTimeout } = ChromeUtils.import(
+ "resource://gre/modules/Timer.jsm"
+);
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class TorLogDialog {
+ constructor() {
+ this._dialog = null;
+ this._logTextarea = null;
+ this._copyLogButton = null;
+ this._restoreButtonTimeout = null;
+ }
+
+ static get selectors() {
+ return {
+ copyLogButton: "extra1",
+ logTextarea: "textarea#torPreferences-torDialog-textarea",
+ };
+ }
+
+ _populateXUL(aDialog) {
+ this._dialog = aDialog;
+ const dialogWin = this._dialog.parentElement;
+ dialogWin.setAttribute("title", TorStrings.settings.torLogDialogTitle);
+
+ this._logTextarea = this._dialog.querySelector(
+ TorLogDialog.selectors.logTextarea
+ );
+
+ this._copyLogButton = this._dialog.getButton(
+ TorLogDialog.selectors.copyLogButton
+ );
+ this._copyLogButton.setAttribute("label", TorStrings.settings.copyLog);
+ this._copyLogButton.addEventListener("command", () => {
+ this.copyTorLog();
+ const label = this._copyLogButton.querySelector("label");
+ label.setAttribute("value", TorStrings.settings.copied);
+ this._copyLogButton.classList.add("primary");
+
+ const RESTORE_TIME = 1200;
+ if (this._restoreButtonTimeout !== null) {
+ clearTimeout(this._restoreButtonTimeout);
+ }
+ this._restoreButtonTimeout = setTimeout(() => {
+ label.setAttribute("value", TorStrings.settings.copyLog);
+ this._copyLogButton.classList.remove("primary");
+ this._restoreButtonTimeout = null;
+ }, RESTORE_TIME);
+ });
+
+ this._logTextarea.value = TorProtocolService.getLog();
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(aDialog);
+ }, 0);
+ }
+
+ copyTorLog() {
+ // Copy tor log messages to the system clipboard.
+ let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(
+ Ci.nsIClipboardHelper
+ );
+ clipboard.copyString(this._logTextarea.value);
+ }
+
+ openDialog(gSubDialog) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/torLogDialog.xhtml",
+ { features: "resizable=yes" },
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/torLogDialog.xhtml b/browser/components/torpreferences/content/torLogDialog.xhtml
new file mode 100644
index 0000000000000..9c17f8132978d
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.xhtml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<window type="child"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
+<dialog id="torPreferences-torLog-dialog"
+ buttons="accept,extra1">
+ <html:textarea
+ id="torPreferences-torDialog-textarea"
+ multiline="true"
+ readonly="true"/>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let torLogDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-torLog-dialog");
+ torLogDialog.init(window, dialog);
+ ]]></script>
+</dialog>
+</window>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPreferences.css b/browser/components/torpreferences/content/torPreferences.css
new file mode 100644
index 0000000000000..a39bd4b4767cb
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferences.css
@@ -0,0 +1,684 @@
+@import url("chrome://branding/content/tor-styles.css");
+
+#category-connection > .category-icon {
+ list-style-image: url("chrome://browser/content/torpreferences/torPreferencesIcon.svg");
+}
+
+html:dir(rtl) input[type="checkbox"].toggle-button::before {
+ /* For some reason, the rule from toggle-button.css is not applied... */
+ scale: -1;
+}
+
+/* Connect Message Box */
+
+#torPreferences-connectMessageBox {
+ display: block;
+ position: relative;
+
+ width: auto;
+ min-height: 32px;
+ border-radius: 4px;
+ padding: 8px;
+}
+
+#torPreferences-connectMessageBox.hidden {
+ display: none;
+}
+
+#torPreferences-connectMessageBox.error {
+ background-color: var(--red-60);
+ color: white;
+}
+
+#torPreferences-connectMessageBox.warning {
+ background-color: var(--purple-50);
+ color: white;
+}
+
+#torPreferences-connectMessageBox table {
+ border-collapse: collapse;
+}
+
+#torPreferences-connectMessageBox td {
+ vertical-align: middle;
+}
+
+#torPreferences-connectMessageBox td:first-child {
+ width: 16px;
+}
+
+#torPreferences-connectMessageBox-icon {
+ width: 16px;
+ height: 16px;
+
+ mask-repeat: no-repeat !important;
+ mask-size: 16px !important;
+}
+
+#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-icon
+{
+ mask: url("chrome://browser/skin/onion-slash.svg");
+ background-color: white;
+}
+
+#torPreferences-connectMessageBox.warning #torPreferences-connectMessageBox-icon
+{
+ mask: url("chrome://browser/skin/onion.svg");
+ background-color: white;
+}
+
+#torPreferences-connectMessageBox-message {
+ line-height: 16px;
+ padding-inline-start: 8px;
+}
+
+#torPreferences-connectMessageBox-button {
+ display: block;
+ width: auto;
+
+ border-radius: 4px;
+ border: 0;
+
+ padding-inline: 18px;
+ padding-block: 8px;
+ margin-block: 0px;
+ margin-inline-start: 8px;
+ margin-inline-end: 0px;
+
+ font-size: 1.0em;
+ font-weight: 600;
+ white-space: nowrap;
+
+ color: white;
+}
+
+#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-button {
+ background-color: var(--red-70);
+}
+
+#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-button:hover {
+ background-color: var(--red-80);
+}
+
+#torPreferences-connectMessageBox.error #torPreferences-connectMessageBox-button:active {
+ background-color: var(--red-90);
+}
+
+#torPreferences-connectMessageBox.warning #torPreferences-connectMessageBox-button {
+ background-color: var(--purple-70);
+}
+
+#torPreferences-connectMessageBox.warning #torPreferences-connectMessageBox-button:hover {
+ background-color: var(--purple-80);
+}
+
+#torPreferences-connectMessageBox.warning #torPreferences-connectMessageBox-button:active {
+ background-color: var(--purple-90);
+}
+
+/* Status */
+#torPreferences-status-box {
+ display: flex;
+ align-items: center;
+}
+
+#torPreferences-status-internet-icon, #torPreferences-status-tor-icon {
+ width: 18px;
+ height: 18px;
+ margin-inline-end: 8px;
+}
+
+#torPreferences-status-internet-label, #torPreferences-status-tor-label {
+ font-weight: bold;
+}
+
+#torPreferences-status-internet-icon {
+ list-style-image: url("chrome://devtools/skin/images/globe.svg");
+}
+
+#torPreferences-status-internet-statusIcon.online,
+#torPreferences-status-internet-statusIcon.offline,
+#torPreferences-status-tor-statusIcon {
+ margin-inline-start: 12px;
+ margin-inline-end: 9px;
+}
+
+#torPreferences-status-internet-statusIcon.online, #torPreferences-status-tor-statusIcon.connected {
+ list-style-image: url("chrome://devtools/skin/images/check.svg");
+ -moz-context-properties: fill;
+ fill: var(--purple-60);
+}
+
+#torPreferences-status-internet-status {
+ margin-inline-end: 32px;
+}
+
+#torPreferences-status-tor-icon {
+ list-style-image: url("chrome://browser/skin/onion.svg");
+}
+
+#torPreferences-status-internet-icon, #torPreferences-status-tor-icon {
+ -moz-context-properties: fill;
+ fill: var(--in-content-text-color);
+}
+
+#torPreferences-status-tor-statusIcon, #torPreferences-status-internet-statusIcon.offline {
+ list-style-image: url("chrome://browser/skin/warning.svg");
+}
+
+#torPreferences-status-tor-statusIcon.blocked {
+ -moz-context-properties: fill;
+ fill: var(--red-60);
+}
+
+/* Bridge settings */
+#torPreferences-bridges-location {
+ width: 280px;
+}
+
+#torPreferences-bridges-location menuitem[disabled="true"] {
+ color: var(--in-content-button-text-color, inherit);
+ font-weight: 700;
+}
+
+/* Bridge cards */
+:root {
+ --bridgeCard-animation-time: 0.25s;
+}
+
+#torPreferences-currentBridges-cards {
+ /* The padding is needed because the mask-image creates an unexpected result
+ otherwise... */
+ padding: 24px 4px;
+}
+
+#torPreferences-currentBridges-cards.list-collapsed {
+ mask-image: linear-gradient(rgb(0, 0, 0) 0% 75%, rgba(0, 0, 0, 0.1));
+}
+
+#torPreferences-currentBridges-cards.disabled {
+ opacity: 0.4;
+}
+
+.torPreferences-bridgeCard {
+ padding: 16px 12px;
+ /* define border-radius here because of the transition */
+ border-radius: 4px;
+ transition: margin var(--bridgeCard-animation-time), box-shadow 150ms;
+ cursor: pointer;
+}
+
+.torPreferences-bridgeCard.expanded,
+.torPreferences-bridgeCard.currently-connected,
+.single-card .torPreferences-bridgeCard {
+ margin: 12px 0;
+ background: var(--in-content-box-background);
+ box-shadow: var(--card-shadow);
+}
+
+.torPreferences-bridgeCard:hover {
+ background: var(--in-content-box-background);
+ box-shadow: var(--card-shadow-hover);
+}
+
+.single-card .torPreferences-bridgeCard,
+.torPreferences-bridgeCard.currently-connected {
+ cursor: default;
+}
+
+.torPreferences-bridgeCard-heading {
+ display: flex;
+ align-items: center;
+}
+
+.torPreferences-bridgeCard-id {
+ display: flex;
+ align-items: center;
+ font-weight: 700;
+}
+
+.torPreferences-bridgeCard-id .emoji {
+ width: 20px;
+ height: 20px;
+ margin-inline-start: 4px;
+ padding: 4px;
+ font-size: 20px;
+ border-radius: 4px;
+ background: var(--in-content-box-background-odd);
+}
+
+.torPreferences-bridgeCard-headingAddr {
+ /* flex extends the element when needed, but without setting a width (any) the
+ overflow + ellipses does not work. */
+ width: 20px;
+ flex: 1;
+ margin: 0 8px;
+ overflow: hidden;
+ color: var(--in-content-deemphasized-text);
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+
+.expanded .torPreferences-bridgeCard-headingAddr,
+.currently-connected .torPreferences-bridgeCard-headingAddr,
+.single-card .torPreferences-bridgeCard-headingAddr {
+ display: none;
+}
+
+.torPreferences-bridgeCard-buttons {
+ display: flex;
+ align-items: center;
+ margin-inline-start: auto;
+ align-self: center;
+}
+
+.torPreferences-bridgeCard-connectedBadge {
+ display: none;
+ padding: 8px 12px;
+ border-radius: 16px;
+ background: rgba(128, 0, 215, 0.1);
+ color: var(--purple-60);
+}
+
+.currently-connected .torPreferences-bridgeCard-connectedBadge {
+ display: flex;
+}
+
+.torPreferences-bridgeCard-connectedIcon {
+ margin-inline-start: 1px;
+ margin-inline-end: 7px;
+ list-style-image: url("chrome://devtools/skin/images/check.svg");
+ -moz-context-properties: fill;
+ fill: var(--purple-60);
+}
+
+.torPreferences-bridgeCard-options {
+ width: 24px;
+ min-width: 0;
+ height: 24px;
+ min-height: 0;
+ margin-inline-start: 8px;
+ padding: 1px;
+ background-image: url("chrome://global/skin/icons/more.svg");
+ background-repeat: no-repeat;
+ background-position: center center;
+ fill: currentColor;
+ -moz-context-properties: fill;
+}
+
+.torPreferences-bridgeCard-qrWrapper {
+ grid-area: bridge-qr;
+ display: flex;
+ flex-direction: column;
+}
+
+.torPreferences-bridgeCard-qr {
+ width: 126px;
+ position: relative;
+}
+
+.torPreferences-bridgeCard-qrCode {
+ width: 112px;
+ height: 112px;
+ /* Define these colors, as they will be passed to the QR code library */
+ background: var(--in-content-box-background);
+ color: var(--in-content-text-color);
+}
+
+.torPreferences-bridgeCard-qrOnionBox {
+ width: 28px;
+ height: 28px;
+ position: absolute;
+ top: 42px;
+ inset-inline-start: 42px;
+ background: var(--in-content-box-background);
+}
+
+.torPreferences-bridgeCard-qrOnion {
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ top: 48px;
+ inset-inline-start: 48px;
+
+ mask: url("chrome://browser/skin/onion.svg");
+ mask-repeat: no-repeat;
+ mask-size: 16px;
+ background: var(--in-content-text-color);
+}
+
+.torPreferences-bridgeCard-qr:hover .torPreferences-bridgeCard-qrOnionBox {
+ background: var(--in-content-text-color);
+}
+
+.torPreferences-bridgeCard-qr:hover .torPreferences-bridgeCard-qrOnion {
+ mask: url("chrome://global/skin/icons/search-glass.svg");
+ background: var(--in-content-box-background);
+}
+
+.torPreferences-bridgeCard-filler {
+ flex: 1;
+}
+
+.torPreferences-bridgeCard-grid {
+ height: 0; /* We will set it in JS when expanding it! */
+ display: grid;
+ grid-template-rows: auto 1fr;
+ grid-template-columns: auto 1fr auto;
+ grid-template-areas:
+ 'bridge-qr bridge-share bridge-share'
+ 'bridge-qr bridge-address bridge-address'
+ 'bridge-qr bridge-learn-more bridge-copy';
+ padding-top: 12px;
+ visibility: hidden;
+}
+
+.expanded .torPreferences-bridgeCard-grid,
+.currently-connected .torPreferences-bridgeCard-grid,
+.single-card .torPreferences-bridgeCard-grid {
+ visibility: visible;
+}
+
+.currently-connected .torPreferences-bridgeCard-grid,
+.single-card .torPreferences-bridgeCard-grid {
+ height: auto;
+}
+
+.torPreferences-bridgeCard-grid.to-animate {
+ transition: height var(--bridgeCard-animation-time) ease-out, visibility var(--bridgeCard-animation-time);
+ overflow: hidden;
+}
+
+.torPreferences-bridgeCard-share {
+ grid-area: bridge-share;
+}
+
+.torPreferences-bridgeCard-addrBox {
+ grid-area: bridge-address;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin: 8px 0;
+}
+
+input.torPreferences-bridgeCard-addr {
+ width: 100%;
+ color: var(--in-content-deemphasized-text);
+}
+
+.torPreferences-bridgeCard-leranMoreBox {
+ grid-area: bridge-learn-more;
+}
+
+.torPreferences-bridgeCard-copy {
+ grid-area: bridge-copy;
+}
+
+#torPreferences-bridgeCard-template {
+ display: none;
+}
+
+/* Advanced Settings */
+#torPreferences-advanced-grid {
+ display: grid;
+ grid-template-columns: 1fr auto;
+}
+
+#torPreferences-advanced-group button {
+ min-width: 150px;
+}
+
+#torPreferences-advanced-hbox, #torPreferences-torDaemon-hbox {
+ padding-inline-end: 15px;
+}
+
+h3#torPreferences-requestBridge-header {
+ margin: 0;
+}
+
+image#torPreferences-requestBridge-captchaImage {
+ margin: 16px 0 8px 0;
+ min-height: 140px;
+}
+
+button#torPreferences-requestBridge-refreshCaptchaButton {
+ min-width: initial;
+}
+
+dialog#torPreferences-requestBridge-dialog > hbox {
+ margin-bottom: 1em;
+}
+
+/*
+ Various elements that really should be lining up don't because they have inconsistent margins
+*/
+.torMarginFix {
+ margin-left : 4px;
+ margin-right : 4px;
+}
+
+/* Show bridge QR dialog */
+#bridgeQr-container {
+ position: relative;
+ height: 300px;
+}
+
+#bridgeQr-target {
+ position: absolute;
+ width: 300px;
+ height: 300px;
+ left: calc(50% - 150px);
+ background: var(--in-content-box-background);
+ color: var(--in-content-text-color);
+}
+
+#bridgeQr-onionBox {
+ position: absolute;
+ width: 70px;
+ height: 70px;
+ top: 115px;
+ left: calc(50% - 35px);
+ background-color: var(--in-content-box-background);
+}
+
+#bridgeQr-onion {
+ position: absolute;
+ width: 38px;
+ height: 38px;
+ top: 131px;
+ left: calc(50% - 19px);
+ mask: url("chrome://browser/skin/onion.svg");
+ mask-repeat: no-repeat;
+ mask-size: 38px;
+ background: var(--in-content-text-color);
+}
+
+/* Builtin bridge dialog */
+#torPreferences-builtinBridge-dialog {
+ /* Hack: ask XUL to load with a lot of space, then we will remove the minimum
+ sizes after we populate the string. Users with high resolutions should see a
+ big dialog, but with all the needed buttons, users with small resolutions
+ should see scrollbars.
+ Known problems:
+ 1) the hack works only if a window is *already* small: if it is big, and then
+ it is resized, the dialog will not shrink;
+ 2) horizontal scrollbars are never added.
+ The proper solution for this will be loading the localized string with
+ Mozilla's way.
+ See also https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/41044 */
+ min-width: 700px;
+ min-height: 550px;
+}
+
+#torPreferences-builtinBridge-header {
+ margin: 8px 0 10px 0;
+}
+
+#torPreferences-builtinBridge-description {
+ margin-bottom: 18px;
+}
+
+#torPreferences-builtinBridge-typeSelection {
+ margin-bottom: 16px;
+}
+
+#torPreferences-builtinBridge-typeSelection radio label {
+ font-weight: 700;
+}
+
+/* Request bridge dialog */
+/*
+ This hbox is hidden by css here by default so that the
+ xul dialog allocates enough screen space for the error message
+ element, otherwise it gets cut off since dialog's overflow is hidden
+*/
+hbox#torPreferences-requestBridge-incorrectCaptchaHbox {
+ visibility: hidden;
+}
+
+image#torPreferences-requestBridge-errorIcon {
+ list-style-image: url("chrome://browser/skin/warning.svg");
+}
+
+groupbox#torPreferences-bridges-group textarea {
+ white-space: pre;
+ overflow: auto;
+}
+
+/* Provide bridge dialog */
+#torPreferences-provideBridge-header {
+ margin-top: 8px;
+}
+
+/* Connection settings dialog */
+#torPreferences-connection-dialog {
+ /* Hack: like the built-in dialog */
+ min-width: 700px;
+ min-height: 550px;
+}
+
+#torPreferences-connection-header {
+ margin: 4px 0 14px 0;
+}
+
+#torPreferences-connection-grid {
+ display: grid;
+ grid-template-columns: auto 1fr;
+}
+
+#torPreferences-localProxy-textboxAddress,
+#torPreferences-localProxy-textboxUsername,
+#torPreferences-localProxy-textboxPassword,
+#torPreferences-connection-textboxAllowedPorts {
+ -moz-box-flex: 1;
+}
+
+#torPreferences-connection-firewall {
+ display: flex;
+}
+
+#torPreferences-connection-hboxAllowedPorts {
+ flex: 1;
+}
+
+/* Tor logs dialog */
+textarea#torPreferences-torDialog-textarea {
+ -moz-box-flex: 1;
+ font-family: monospace;
+ font-size: 0.8em;
+ white-space: pre;
+ overflow: auto;
+ /* 10 lines */
+ min-height: 20em;
+}
+
+/* Bridge remove overlay */
+#bridge-remove-overlay {
+ position: fixed;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ top: 0;
+ inset: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 1;
+ background-color: rgba(0, 0, 0, 0.5);
+}
+
+#bridge-remove-overlay.hidden {
+ display: none;
+}
+
+#bridge-remove-modal {
+ position: relative;
+ min-width: 250px;
+ max-width: 500px;
+ min-height: 200px;
+ z-index: 2;
+ text-align: center;
+ background: var(--in-content-page-background);
+ box-shadow: var(--shadow-30);
+}
+
+#bridge-remove-dismiss {
+ position: absolute;
+ top: 16px;
+ inset-inline-end: 16px;
+ width: 16px;
+ height: 16px;
+ fill: currentColor;
+ -moz-context-properties: fill;
+}
+
+#bridge-remove-dismiss:hover {
+ background-color: var(--in-content-button-background-hover);
+ color: var(--in-content-button-text-color-hover);
+ border: 1px solid var(--in-content-button-border-color-hover);
+ border-radius: 4px;
+}
+
+#bridge-remove-dismiss:hover:active {
+ background-color: var(--in-content-button-background-active);
+}
+
+#bridge-remove-icon {
+ width: 40px;
+ height: 40px;
+ background-image: url("chrome://global/skin/icons/warning.svg");
+ background-size: 40px;
+ margin: 16px auto;
+ fill: currentColor;
+ -moz-context-properties: fill;
+}
+
+#bridge-remove-question {
+ font-size: 150%;
+}
+
+#bridge-remove-warning {
+ color: var(--in-content-deemphasized-text);
+}
+
+#bridge-remove-buttonbar {
+ padding: 16px 32px;
+}
+
+#bridge-remove-buttonbar button {
+ min-width: 140px;
+}
+
+#bridge-remove-confirm {
+ background: var(--in-content-danger-button-background);
+ color: var(--in-content-primary-button-text-color);
+}
+
+#bridge-remove-confirm:hover {
+ background: var(--in-content-danger-button-background-hover);
+ color: var(--in-content-primary-button-text-color-hover);
+ border-color: var(--in-content-primary-button-border-hover);
+}
+
+#bridge-remove-confirm:hover:active {
+ background: var(--in-content-danger-button-background-active);
+}
diff --git a/browser/components/torpreferences/content/torPreferencesIcon.svg b/browser/components/torpreferences/content/torPreferencesIcon.svg
new file mode 100644
index 0000000000000..382a061774aaa
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferencesIcon.svg
@@ -0,0 +1,8 @@
+<svg fill="context-fill" fill-opacity="context-fill-opacity" viewBox="0 0 16 16" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
+ <g clip-rule="evenodd" fill-rule="evenodd">
+ <path d="m11 8c0 1.65686-1.34314 3-3 3-1.65685 0-3-1.34314-3-3 0-1.65685 1.34315-3 3-3 1.65686 0 3 1.34315 3 3zm-1.17187 0c0 1.00965-.81848 1.82813-1.82813 1.82813-1.00964 0-1.82812-.81848-1.82812-1.82813 0-1.00964.81848-1.82812 1.82812-1.82812 1.00965 0 1.82813.81848 1.82813 1.82812z"/>
+ <path d="m7.99999 13.25c2.89951 0 5.25001-2.3505 5.25001-5.25001 0-2.89949-2.3505-5.25-5.25001-5.25-2.89949 0-5.25 2.35051-5.25 5.25 0 2.89951 2.35051 5.25001 5.25 5.25001zm0-1.1719c2.25231 0 4.07811-1.8258 4.07811-4.07811 0-2.25228-1.8258-4.07812-4.07811-4.07812-2.25228 0-4.07812 1.82584-4.07812 4.07812 0 2.25231 1.82584 4.07811 4.07812 4.07811z"/>
+ <path d="m8 15.5c4.1421 0 7.5-3.3579 7.5-7.5 0-4.14214-3.3579-7.5-7.5-7.5-4.14214 0-7.5 3.35786-7.5 7.5 0 4.1421 3.35786 7.5 7.5 7.5zm0-1.1719c3.4949 0 6.3281-2.8332 6.3281-6.3281 0-3.49493-2.8332-6.32812-6.3281-6.32812-3.49493 0-6.32812 2.83319-6.32812 6.32812 0 3.4949 2.83319 6.3281 6.32812 6.3281z"/>
+ </g>
+ <path d="m.5 8c0 4.1421 3.35786 7.5 7.5 7.5v-15c-4.14214 0-7.5 3.35786-7.5 7.5z"/>
+</svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/jar.mn b/browser/components/torpreferences/jar.mn
new file mode 100644
index 0000000000000..4d82268f3c8d6
--- /dev/null
+++ b/browser/components/torpreferences/jar.mn
@@ -0,0 +1,21 @@
+browser.jar:
+ content/browser/torpreferences/bridgeQrDialog.xhtml (content/bridgeQrDialog.xhtml)
+ content/browser/torpreferences/bridgeQrDialog.jsm (content/bridgeQrDialog.jsm)
+ content/browser/torpreferences/builtinBridgeDialog.xhtml (content/builtinBridgeDialog.xhtml)
+ content/browser/torpreferences/builtinBridgeDialog.jsm (content/builtinBridgeDialog.jsm)
+ content/browser/torpreferences/connectionSettingsDialog.xhtml (content/connectionSettingsDialog.xhtml)
+ content/browser/torpreferences/connectionSettingsDialog.jsm (content/connectionSettingsDialog.jsm)
+ content/browser/torpreferences/network.svg (content/network.svg)
+ content/browser/torpreferences/provideBridgeDialog.xhtml (content/provideBridgeDialog.xhtml)
+ content/browser/torpreferences/provideBridgeDialog.jsm (content/provideBridgeDialog.jsm)
+ content/browser/torpreferences/requestBridgeDialog.xhtml (content/requestBridgeDialog.xhtml)
+ content/browser/torpreferences/requestBridgeDialog.jsm (content/requestBridgeDialog.jsm)
+ content/browser/torpreferences/connectionCategory.inc.xhtml (content/connectionCategory.inc.xhtml)
+ content/browser/torpreferences/torLogDialog.jsm (content/torLogDialog.jsm)
+ content/browser/torpreferences/torLogDialog.xhtml (content/torLogDialog.xhtml)
+ content/browser/torpreferences/connectionPane.js (content/connectionPane.js)
+ content/browser/torpreferences/connectionPane.xhtml (content/connectionPane.xhtml)
+ content/browser/torpreferences/torPreferences.css (content/torPreferences.css)
+ content/browser/torpreferences/torPreferencesIcon.svg (content/torPreferencesIcon.svg)
+ content/browser/torpreferences/bridgemoji/ (content/bridgemoji/*.svg)
+ content/browser/torpreferences/bridgemoji-annotations.json (content/bridgemoji-annotations.json)
diff --git a/browser/components/torpreferences/moz.build b/browser/components/torpreferences/moz.build
new file mode 100644
index 0000000000000..2661ad7cb9f3d
--- /dev/null
+++ b/browser/components/torpreferences/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ["jar.mn"]
diff --git a/tools/torbrowser/update_bridgemoiji.py b/tools/torbrowser/update_bridgemoiji.py
new file mode 100755
index 0000000000000..251a0bb5d013c
--- /dev/null
+++ b/tools/torbrowser/update_bridgemoiji.py
@@ -0,0 +1,114 @@
+#!/usr/bin/env python3
+# Script to update bridgemoji files from Twemoji, and from Unicode
+# datasets.
+# Please be sure to grab and extract twe-svg.zip from
+# https://github.com/mozilla/twemoji-colr, and to get the latest
+# version of https://github.com/unicode-org/cldr.git.
+
+import json
+from pathlib import Path
+from shutil import copyfile
+import sys
+from xml.dom.minidom import parse
+
+
+if len(sys.argv) < 3:
+ print(f'Usage: {sys.argv[0]} twemoji-svg-dir cldr-dir')
+ sys.exit(1)
+twemoji_dir = Path(sys.argv[1])
+cldr_dir = Path(sys.argv[2])
+
+LANGS = [
+ "ar",
+ "ca",
+ "cs",
+ "da",
+ "de",
+ "el",
+ "en",
+ "es",
+ "fa",
+ "fr",
+ "ga",
+ "he",
+ "hu",
+ "id",
+ "is",
+ "it",
+ "ja",
+ "ka",
+ "ko",
+ "lt",
+ "mk",
+ "ms",
+ "my",
+ # "nb", # Empty file, currently!!
+ "nl",
+ "pl",
+ "pt",
+ "ro",
+ "ru",
+ "sv",
+ "th",
+ "tr",
+ "vi",
+ "zh", # zh-CN, zh-hans
+ "zh_Hant", # zh-TW, zh-hant
+]
+
+# Currently the script is in tools/torbrowser/
+firefox_root = Path(__file__).parents[2]
+panel_dir = firefox_root / 'browser/components/torpreferences/content'
+
+with (panel_dir / 'connectionPane.js').open() as f:
+ pane_js = f.read()
+make_id_offset = pane_js.find('function makeBridgeId(bridgeString) {')
+emojis_var = 'const emojis = '
+emojis_offset = pane_js.find(emojis_var, make_id_offset) + len(emojis_var)
+close_offset = pane_js.find(']', emojis_offset)
+emojis_str = pane_js[emojis_offset:close_offset].strip('\t \n,')
+emojis_str += ']'
+emojis = json.loads(emojis_str)
+codepoints = []
+for idx, e in enumerate(emojis):
+ if len(e) > 2 or (len(e) == 2 and ord(e[1]) != 0xfe0f):
+ # U+FE0F is "VARIATION SELECTOR-16" and tells the emoji to be
+ # colored, or something like that.
+ print(f'Unsupported emoji {e}: too many codepoints')
+ sys.exit(2)
+ codepoints.append(ord(e[0]))
+
+emojis_dest = panel_dir / 'bridgemoji'
+emojis_dest.mkdir(exist_ok=True)
+for f in emojis_dest.iterdir():
+ f.unlink()
+for cp in codepoints:
+ src = twemoji_dir / f'{cp:x}.svg'
+ dst = emojis_dest / f'{cp:x}.svg'
+ copyfile(src, dst)
+
+data = {l: {} for l in LANGS}
+
+for l in LANGS:
+ with (cldr_dir / f'common/annotations/{l}.xml').open() as f:
+ doc = parse(f)
+ anns = doc.getElementsByTagName('annotation')
+ for ann in anns:
+ cp = ann.getAttribute('cp')
+ if len(cp) != 1:
+ continue
+ try:
+ idx = codepoints.index(ord(cp))
+ if ann.getAttribute('type') == 'tts':
+ ann.normalize()
+ data[l][emojis[idx]] = ann.firstChild.data
+ except ValueError:
+ pass
+ if len(data[l]) != len(emojis):
+ print(f'Lang {l} doesn\'t have all the emoji descriptions!')
+
+data['zh-CN'] = data.pop('zh')
+data['zh-TW'] = data.pop('zh_Hant')
+
+with (panel_dir / 'bridgemoji-annotations.json').open('w') as f:
+ json.dump(data, f, ensure_ascii=False, indent=2)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits