SpringBoot Azure Active Directoryの最新ドキュメントを追跡する

SpringBoot Azure Active Directoryの最新ドキュメントを追跡する

最新のドキュメントについて

ベース1

基本的に最新のドキュメントは以下になります。

https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/spring/azure-spring-boot-starter-active-directory
上記をMSのドメイン内で表示しているのが以下になります。(画像が表示されない。)

https://docs.microsoft.com/en-us/java/api/overview/azure/spring-boot-starter-active-directory-readme?view=azure-java-stable
ただし、上の設定だけだと不十分で過去の情報も併せて読む必要があります。

以下、過去のチュートリアルのAzureAD側の設定が参考になります。
https://docs.microsoft.com/en-us/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory
ただ、参考にするべき画像の内容が異なる。

最低限必要なスコープの情報が古いままとなっている。スコープとしてDirectory.AccessAsUser.Allを割り当てる必要があり、この権限はサインインしたユーザが存在しているディレクトリと同じ階層のユーザ情報にすべてアクセスすることができる権限となっている。上長に不信感を与えて両省が下りない状態となる。AzureAdversion3.1.0までこの状態で、3.2.0からDirectory.Read.Allとなり、サインインしたユーザの情報を読み取ることのみができる権限のみ必要な状態となる。

なので、画像は間違いで、Directory.Read.Allを設定する必要があることになる。

バージョンによって異なると思われるので詳細は以下ファイルを確認すること。

https://github.com/Azure/azure-sdk-for-java/blob/28993948d2cf44e1c2a13ff46120767ca232294f/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad/webapp/AADWebAppConfiguration.java#L126-L127
ここで言っている画像は以下になります。

補足知識 ドメイン知識 スコープ

スコープに関する記事 現状正しい情報を確認可能
https://docs.microsoft.com/en-us/graph/permissions-reference

ベース2 ログイン認可に必要なredirect-uriの制約に関する知識

ログイン時に必要に必要となるredirect-uriの制約(設定の変更はできないが認識する必要がある。)
サーバ側(AzureAD本体)のredirect-uriの設定を追加する必要がある。
この時に制約を知っておく必要がある。
https://docs.microsoft.com/en-us/azure/active-directory/develop/reply-url

補足知識

AzureADにはグループを認可局として扱うことができる機能がある。
認可局として扱う場合は、Springにはグループを設定する必要がある。
また、Spring側の設定にグループを追加する必要がある。
グループを設定したくない場合はAzureADのサーバ側に疑似的なグループを設定する必要がある。
また、session-statelessの設定を追加する必要がある。
https://docs.microsoft.com/en-us/java/api/overview/azure/active-directory-spring-boot-starter-readme?view=azure-java-stable

ベース3 ログアウト

SSOをAzureADが担保するためにアプリ側でセッションが切れている場合に通常のログアウトを行っても、AzureADサーバが担保するexpireの時間以内の場合は、自動的にログインした状態となる。ここを制御するためには、ログアウトのURLを設定する必要がある。
ログアウトについては以下を参考にする。
https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=java 特にURLが要//login.microsoftonline.com/common/oauth2/v2.0/logout

補足 最新情報を追う

最新リリースのソースを追う
下記ファイルの履歴やblameを確認して最新バージョン又はリリースバージョンのリビジョンを見つけることで特定のバージョンのソースを確認できる。
https://github.com/Azure/azure-sdk-for-java/blob/28993948d2cf44e1c2a13ff46120767ca232294f/sdk/spring/azure-spring-boot/pom.xml#L16

3.4.0リビジョンのソースは下記
https://github.com/Azure/azure-sdk-for-java/commit/a04075d5ce607d79d0b273b42b579b184dd0197d

認証のみの履歴を追う場合は、下記パッケージ配下の履歴だけを見れば十分追うことができる。
https://github.com/Azure/azure-sdk-for-java/commits/master/sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad

リリースの状態を知りたいときは下記
https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/spring/azure-spring-boot/CHANGELOG.md
Springbootとのバージョンの関係を知りたい場合は下記
https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/spring/README.md
Spring Initializrの状態を知りたい場合は下記だが、更新が遅れる場合がある。
https://github.com/Azure/azure-sdk-for-java/blob/master/sdk/spring/spring-reference.yml

SpringOAuth2の差異

spring-oauth2のデフォルトだけで対応できるソーシャルサービスの場合は、redirect-uriの設定を一部変更可能
spring-azure-active-directoryの場合は、変更は不可
サーバ側(AzureADの本体側)のredirect-uriの設定は変更ができる。

ログアウトの設定もデフォルトのSpringのとは逸脱している注意が必要

SpringOAuth2のデフォルトカスタマイズ情報。AzureADの認証にはほとんど使えないが、考え方は参考に独自内部認証サービスを作成する場合や、SpringSecurityの大枠を知るためには読む必要がある。
https://docs.spring.io/spring-security/site/docs/5.2.x/reference/html/oauth2.html

リモートワークの環境作り[PCが貸与された場合][周辺機器問題]

リモートワークの環境作り[PCが貸与された場合][周辺機器問題]

PC(Widows10)が貸与されたときの問題点として周辺機器の問題とその対策についての記事になります。

問題

下記のような事象が発生しプライベートと業務を円滑に移行できない問題が発生しました。 - 自宅PCが接続しているディスプレイを共有するためにHDMIの抜き差しが必要になる - 自宅PCが接続しているマイクを共有するためにUSBコネクタの抜き差しが必要になる - 自宅PCが接続しているカメラを共有するためにUSBコネクタの抜き差しが必要になる - 自宅PCが接続しているキーボードを共有するためにUSBコネクタの抜き差しが必要になる - 自宅PCが接続しているマウスを共有するためにBlueToothのドングルの設定が必要になる

解決案

以下の二種類の解決があると考えました。

  • ソフトウェアによる解決
  • ハードウェアによる解決

ソフトウェアによる解決

  1. AnyDesktop by AnyDesk Software GmbH
  2. 別端末のサブディスプレイ化 by Microsoft
  3. Mouse Without Borders by Microsoft

ソフトウェアによる解決策は上記3点を選びました。 3つとも無料です。

ただし、ネットワークが強くないと快適な操作はできないです。 私が使用しているネットワークはアップロードとダウンロードが共に80Mbyte/sです。 この速度では、ソフトウェアの解決はできませんでした。 が、良かった点もあるので選定した理由を紹介します。

AnyDesktopの選定理由

ネットワークがつながっている端末Aを端末Bから操作することができます。 なので、コネクタの抜き差し無しで移行することができます。

ただし、サブディスプレイ化することはできません。

似たソフトウェアがありますが、1.AnyDesktopを選んだ紹介した理由は、インストール不要で利用できるようにバイナリ形式での配布も行っている点が特殊だったためです。多くは、管理者権限が必要ですがこのソフトウェアには不要でした。

ネットワークがすごく速い場合は有効に使えるのではと思います。

別端末のサブディスプレイ化 by Microsoftの選定理由

作業場所にあるネットワークがつながっている別の端末をサブディスプレイ化できます。 管理者権限があれば利用できます。

Windows10の端末が2台あれば利用できます。 Microsoftの標準ソフトウェアで解決できる点が魅力です。 ただ、やはりネットワークの問題で全体的な速度が落ちるので私の環境には合わなかったです。

Mouse Without Borders by Microsoftの選定理由

マウスとキーボードをネットワークがつなっがている端末で横断的に利用することができるようにするソフトウェアです。 Microsoftが提供しているソフトウェアになります。

ただ、やはりネットワークの問題で全体的な速度が落ちるので私の環境には合わなかったです。

ハードウェアによる解決

ハードウェアによる解決としては、以下のアイテムが有効でした。 1. USB 切替器 USB2.0準拠 1. HDMI 切替器

1.USB 切替器 USB2.0準拠はUSB3.0番があったのですが、Bluetoothドングルの共有ができないという記載があり、USB2.0版だとできるようなレビューがあったのでこちらにしました。 しかし、実際はドングルの共有はできず別途マウスを購入して対応しています。

USBの切り替えとHDMIを物理スイッチで切り変えるのはすごく簡単で円滑に移行できました。 私が触ってみ感想としては、遅延を感じることはできませんでした。

結論

ネットワーク環境にもよるが、80Mbyte/sぐらいの速度の場合はハードウェアによる解決をおすすめします。

Growiで表示できるemojiの検証2

emoji 表示状態 期待値
:100: :100: 💯
:1234: :1234: 🔢
:grinning: :grinning: 😀
:smiley: :smiley: 😃
:smile: :smile: 😄
:grin: :grin: 😁
:laughing: :laughing: 😆
:satisfied: :satisfied: 😆
:sweat_smile: :sweat_smile: 😅
:rofl: :rofl: 🤣
:joy: :joy: 😂
:slightly_smiling_face: :slightly_smiling_face: 🙂
:upside_down_face: :upside_down_face: 🙃
:wink: :wink: 😉
:blush: :blush: 😊
:innocent: :innocent: 😇
:smiling_face_with_three_hearts: :smiling_face_with_three_hearts: 🥰
:heart_eyes: :heart_eyes: 😍
:star_struck: :star_struck: 🤩
:kissing_heart: :kissing_heart: 😘
:kissing: :kissing: 😗
:relaxed: :relaxed: ☺️
:kissing_closed_eyes: :kissing_closed_eyes: 😚
:kissing_smiling_eyes: :kissing_smiling_eyes: 😙
:smiling_face_with_tear: :smiling_face_with_tear: 🥲
:yum: :yum: 😋
:stuck_out_tongue: :stuck_out_tongue: 😛
:stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye: 😜
:zany_face: :zany_face: 🤪
:stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes: 😝
:money_mouth_face: :money_mouth_face: 🤑
:hugs: :hugs: 🤗
:hand_over_mouth: :hand_over_mouth: 🤭
:shushing_face: :shushing_face: 🤫
:thinking: :thinking: 🤔
:zipper_mouth_face: :zipper_mouth_face: 🤐
:raised_eyebrow: :raised_eyebrow: 🤨
:neutral_face: :neutral_face: 😐
:expressionless: :expressionless: 😑
:no_mouth: :no_mouth: 😶
:smirk: :smirk: 😏
:unamused: :unamused: 😒
:roll_eyes: :roll_eyes: 🙄
:grimacing: :grimacing: 😬
:lying_face: :lying_face: 🤥
:relieved: :relieved: 😌
:pensive: :pensive: 😔
:sleepy: :sleepy: 😪
:drooling_face: :drooling_face: 🤤
:sleeping: :sleeping: 😴
:mask: :mask: 😷
:face_with_thermometer: :face_with_thermometer: 🤒
:face_with_head_bandage: :face_with_head_bandage: 🤕
:nauseated_face: :nauseated_face: 🤢
:vomiting_face: :vomiting_face: 🤮
:sneezing_face: :sneezing_face: 🤧
:hot_face: :hot_face: 🥵
:cold_face: :cold_face: 🥶
:woozy_face: :woozy_face: 🥴
:dizzy_face: :dizzy_face: 😵
:exploding_head: :exploding_head: 🤯
:cowboy_hat_face: :cowboy_hat_face: 🤠
:partying_face: :partying_face: 🥳
:disguised_face: :disguised_face: 🥸
:sunglasses: :sunglasses: 😎
:nerd_face: :nerd_face: 🤓
:monocle_face: :monocle_face: 🧐
:confused: :confused: 😕
:worried: :worried: 😟
:slightly_frowning_face: :slightly_frowning_face: 🙁
:frowning_face: :frowning_face: ☹️
:open_mouth: :open_mouth: 😮
:hushed: :hushed: 😯
:astonished: :astonished: 😲
:flushed: :flushed: 😳
:pleading_face: :pleading_face: 🥺
:frowning: :frowning: 😦
:anguished: :anguished: 😧
:fearful: :fearful: 😨
:cold_sweat: :cold_sweat: 😰
:disappointed_relieved: :disappointed_relieved: 😥
:cry: :cry: 😢
:sob: :sob: 😭
:scream: :scream: 😱
:confounded: :confounded: 😖
:persevere: :persevere: 😣
:disappointed: :disappointed: 😞
:sweat: :sweat: 😓
:weary: :weary: 😩
:tired_face: :tired_face: 😫
:yawning_face: :yawning_face: 🥱
:triumph: :triumph: 😤
:rage: :rage: 😡
:pout: :pout: 😡
:angry: :angry: 😠
:cursing_face: :cursing_face: 🤬
:smiling_imp: :smiling_imp: 😈
:imp: :imp: 👿
:skull: :skull: 💀
:skull_and_crossbones: :skull_and_crossbones: ☠️
:hankey: :hankey: 💩
:poop: :poop: 💩
:shit: :shit: 💩
:clown_face: :clown_face: 🤡
:japanese_ogre: :japanese_ogre: 👹
:japanese_goblin: :japanese_goblin: 👺
:ghost: :ghost: 👻
:alien: :alien: 👽
:space_invader: :space_invader: 👾
:robot: :robot: 🤖
:smiley_cat: :smiley_cat: 😺
:smile_cat: :smile_cat: 😸
:joy_cat: :joy_cat: 😹
:heart_eyes_cat: :heart_eyes_cat: 😻
:smirk_cat: :smirk_cat: 😼
:kissing_cat: :kissing_cat: 😽
:scream_cat: :scream_cat: 🙀
:crying_cat_face: :crying_cat_face: 😿
:pouting_cat: :pouting_cat: 😾
:see_no_evil: :see_no_evil: 🙈
:hear_no_evil: :hear_no_evil: 🙉
:speak_no_evil: :speak_no_evil: 🙊
:kiss: :kiss: 💋
:love_letter: :love_letter: 💌
:cupid: :cupid: 💘
:gift_heart: :gift_heart: 💝
:sparkling_heart: :sparkling_heart: 💖
:heartpulse: :heartpulse: 💗
:heartbeat: :heartbeat: 💓
:revolving_hearts: :revolving_hearts: 💞
:two_hearts: :two_hearts: 💕
:heart_decoration: :heart_decoration: 💟
:heavy_heart_exclamation: :heavy_heart_exclamation: ❣️
:broken_heart: :broken_heart: 💔
:heart: :heart: ❤️
:orange_heart: :orange_heart: 🧡
:yellow_heart: :yellow_heart: 💛
:green_heart: :green_heart: 💚
:blue_heart: :blue_heart: 💙
:purple_heart: :purple_heart: 💜
:brown_heart: :brown_heart: 🤎
:black_heart: :black_heart: 🖤
:white_heart: :white_heart: 🤍
:anger: :anger: 💢
:boom: :boom: 💥
:collision: :collision: 💥
:dizzy: :dizzy: 💫
:sweat_drops: :sweat_drops: 💦
:dash: :dash: 💨
:hole: :hole: 🕳️
:bomb: :bomb: 💣
:speech_balloon: :speech_balloon: 💬
:eye_speech_bubble: :eye_speech_bubble: 👁️‍🗨️
:left_speech_bubble: :left_speech_bubble: 🗨️
:right_anger_bubble: :right_anger_bubble: 🗯️
:thought_balloon: :thought_balloon: 💭
:zzz: :zzz: 💤
:wave: :wave: 👋
:raised_back_of_hand: :raised_back_of_hand: 🤚
:raised_hand_with_fingers_splayed: :raised_hand_with_fingers_splayed: 🖐️
:hand: :hand:
:raised_hand: :raised_hand:
:vulcan_salute: :vulcan_salute: 🖖
:ok_hand: :ok_hand: 👌
:pinched_fingers: :pinched_fingers: 🤌
:pinching_hand: :pinching_hand: 🤏
:v: :v: ✌️
:crossed_fingers: :crossed_fingers: 🤞
:love_you_gesture: :love_you_gesture: 🤟
:metal: :metal: 🤘
:call_me_hand: :call_me_hand: 🤙
:point_left: :point_left: 👈
:point_right: :point_right: 👉
:point_up_2: :point_up_2: 👆
:middle_finger: :middle_finger: 🖕
:fu: :fu: 🖕
:point_down: :point_down: 👇
:point_up: :point_up: ☝️
:+1: :+1: 👍
:thumbsup: :thumbsup: 👍
:-1: :-1: 👎
:thumbsdown: :thumbsdown: 👎
:fist_raised: :fist_raised:
:fist: :fist:
:fist_oncoming: :fist_oncoming: 👊
:facepunch: :facepunch: 👊
:punch: :punch: 👊
:fist_left: :fist_left: 🤛
:fist_right: :fist_right: 🤜
:clap: :clap: 👏
:raised_hands: :raised_hands: 🙌
:open_hands: :open_hands: 👐
:palms_up_together: :palms_up_together: 🤲
:handshake: :handshake: 🤝
:pray: :pray: 🙏
:writing_hand: :writing_hand: ✍️
:nail_care: :nail_care: 💅
:selfie: :selfie: 🤳
:muscle: :muscle: 💪
:mechanical_arm: :mechanical_arm: 🦾
:mechanical_leg: :mechanical_leg: 🦿
:leg: :leg: 🦵
:foot: :foot: 🦶
:ear: :ear: 👂
:ear_with_hearing_aid: :ear_with_hearing_aid: 🦻
:nose: :nose: 👃
:brain: :brain: 🧠
:anatomical_heart: :anatomical_heart: 🫀
:lungs: :lungs: 🫁
:tooth: :tooth: 🦷
:bone: :bone: 🦴
:eyes: :eyes: 👀
:eye: :eye: 👁️
:tongue: :tongue: 👅
:lips: :lips: 👄
:baby: :baby: 👶
:child: :child: 🧒
:boy: :boy: 👦
:girl: :girl: 👧
:adult: :adult: 🧑
:blond_haired_person: :blond_haired_person: 👱
:man: :man: 👨
:bearded_person: :bearded_person: 🧔
:red_haired_man: :red_haired_man: 👨‍🦰
:curly_haired_man: :curly_haired_man: 👨‍🦱
:white_haired_man: :white_haired_man: 👨‍🦳
:bald_man: :bald_man: 👨‍🦲
:woman: :woman: 👩
:red_haired_woman: :red_haired_woman: 👩‍🦰
:person_red_hair: :person_red_hair: 🧑‍🦰
:curly_haired_woman: :curly_haired_woman: 👩‍🦱
:person_curly_hair: :person_curly_hair: 🧑‍🦱
:white_haired_woman: :white_haired_woman: 👩‍🦳
:person_white_hair: :person_white_hair: 🧑‍🦳
:bald_woman: :bald_woman: 👩‍🦲
:person_bald: :person_bald: 🧑‍🦲
:blond_haired_woman: :blond_haired_woman: 👱‍♀️
:blonde_woman: :blonde_woman: 👱‍♀️
:blond_haired_man: :blond_haired_man: 👱‍♂️
:older_adult: :older_adult: 🧓
:older_man: :older_man: 👴
:older_woman: :older_woman: 👵
:frowning_person: :frowning_person: 🙍
:frowning_man: :frowning_man: 🙍‍♂️
:frowning_woman: :frowning_woman: 🙍‍♀️
:pouting_face: :pouting_face: 🙎
:pouting_man: :pouting_man: 🙎‍♂️
:pouting_woman: :pouting_woman: 🙎‍♀️
:no_good: :no_good: 🙅
:no_good_man: :no_good_man: 🙅‍♂️
:ng_man: :ng_man: 🙅‍♂️
:no_good_woman: :no_good_woman: 🙅‍♀️
:ng_woman: :ng_woman: 🙅‍♀️
:ok_person: :ok_person: 🙆
:ok_man: :ok_man: 🙆‍♂️
:ok_woman: :ok_woman: 🙆‍♀️
:tipping_hand_person: :tipping_hand_person: 💁
:information_desk_person: :information_desk_person: 💁
:tipping_hand_man: :tipping_hand_man: 💁‍♂️
:sassy_man: :sassy_man: 💁‍♂️
:tipping_hand_woman: :tipping_hand_woman: 💁‍♀️
:sassy_woman: :sassy_woman: 💁‍♀️
:raising_hand: :raising_hand: 🙋
:raising_hand_man: :raising_hand_man: 🙋‍♂️
:raising_hand_woman: :raising_hand_woman: 🙋‍♀️
:deaf_person: :deaf_person: 🧏
:deaf_man: :deaf_man: 🧏‍♂️
:deaf_woman: :deaf_woman: 🧏‍♀️
:bow: :bow: 🙇
:bowing_man: :bowing_man: 🙇‍♂️
:bowing_woman: :bowing_woman: 🙇‍♀️
:facepalm: :facepalm: 🤦
:man_facepalming: :man_facepalming: 🤦‍♂️
:woman_facepalming: :woman_facepalming: 🤦‍♀️
:shrug: :shrug: 🤷
:man_shrugging: :man_shrugging: 🤷‍♂️
:woman_shrugging: :woman_shrugging: 🤷‍♀️
:health_worker: :health_worker: 🧑‍⚕️
:man_health_worker: :man_health_worker: 👨‍⚕️
:woman_health_worker: :woman_health_worker: 👩‍⚕️
:student: :student: 🧑‍🎓
:man_student: :man_student: 👨‍🎓
:woman_student: :woman_student: 👩‍🎓
:teacher: :teacher: 🧑‍🏫
:man_teacher: :man_teacher: 👨‍🏫
:woman_teacher: :woman_teacher: 👩‍🏫
:judge: :judge: 🧑‍⚖️
:man_judge: :man_judge: 👨‍⚖️
:woman_judge: :woman_judge: 👩‍⚖️
:farmer: :farmer: 🧑‍🌾
:man_farmer: :man_farmer: 👨‍🌾
:woman_farmer: :woman_farmer: 👩‍🌾
:cook: :cook: 🧑‍🍳
:man_cook: :man_cook: 👨‍🍳
:woman_cook: :woman_cook: 👩‍🍳
:mechanic: :mechanic: 🧑‍🔧
:man_mechanic: :man_mechanic: 👨‍🔧
:woman_mechanic: :woman_mechanic: 👩‍🔧
:factory_worker: :factory_worker: 🧑‍🏭
:man_factory_worker: :man_factory_worker: 👨‍🏭
:woman_factory_worker: :woman_factory_worker: 👩‍🏭
:office_worker: :office_worker: 🧑‍💼
:man_office_worker: :man_office_worker: 👨‍💼
:woman_office_worker: :woman_office_worker: 👩‍💼
:scientist: :scientist: 🧑‍🔬
:man_scientist: :man_scientist: 👨‍🔬
:woman_scientist: :woman_scientist: 👩‍🔬
:technologist: :technologist: 🧑‍💻
:man_technologist: :man_technologist: 👨‍💻
:woman_technologist: :woman_technologist: 👩‍💻
:singer: :singer: 🧑‍🎤
:man_singer: :man_singer: 👨‍🎤
:woman_singer: :woman_singer: 👩‍🎤
:artist: :artist: 🧑‍🎨
:man_artist: :man_artist: 👨‍🎨
:woman_artist: :woman_artist: 👩‍🎨
:pilot: :pilot: 🧑‍✈️
:man_pilot: :man_pilot: 👨‍✈️
:woman_pilot: :woman_pilot: 👩‍✈️
:astronaut: :astronaut: 🧑‍🚀
:man_astronaut: :man_astronaut: 👨‍🚀
:woman_astronaut: :woman_astronaut: 👩‍🚀
:firefighter: :firefighter: 🧑‍🚒
:man_firefighter: :man_firefighter: 👨‍🚒
:woman_firefighter: :woman_firefighter: 👩‍🚒
:police_officer: :police_officer: 👮
:cop: :cop: 👮
:policeman: :policeman: 👮‍♂️
:policewoman: :policewoman: 👮‍♀️
:detective: :detective: 🕵️
:male_detective: :male_detective: 🕵️‍♂️
:female_detective: :female_detective: 🕵️‍♀️
:guard: :guard: 💂
:guardsman: :guardsman: 💂‍♂️
:guardswoman: :guardswoman: 💂‍♀️
:ninja: :ninja: 🥷
:construction_worker: :construction_worker: 👷
:construction_worker_man: :construction_worker_man: 👷‍♂️
:construction_worker_woman: :construction_worker_woman: 👷‍♀️
:prince: :prince: 🤴
:princess: :princess: 👸
:person_with_turban: :person_with_turban: 👳
:man_with_turban: :man_with_turban: 👳‍♂️
:woman_with_turban: :woman_with_turban: 👳‍♀️
:man_with_gua_pi_mao: :man_with_gua_pi_mao: 👲
:woman_with_headscarf: :woman_with_headscarf: 🧕
:person_in_tuxedo: :person_in_tuxedo: 🤵
:man_in_tuxedo: :man_in_tuxedo: 🤵‍♂️
:woman_in_tuxedo: :woman_in_tuxedo: 🤵‍♀️
:person_with_veil: :person_with_veil: 👰
:man_with_veil: :man_with_veil: 👰‍♂️
:woman_with_veil: :woman_with_veil: 👰‍♀️
:bride_with_veil: :bride_with_veil: 👰‍♀️
:pregnant_woman: :pregnant_woman: 🤰
:breast_feeding: :breast_feeding: 🤱
:woman_feeding_baby: :woman_feeding_baby: 👩‍🍼
:man_feeding_baby: :man_feeding_baby: 👨‍🍼
:person_feeding_baby: :person_feeding_baby: 🧑‍🍼
:angel: :angel: 👼
:santa: :santa: 🎅
:mrs_claus: :mrs_claus: 🤶
:mx_claus: :mx_claus: 🧑‍🎄
:superhero: :superhero: 🦸
:superhero_man: :superhero_man: 🦸‍♂️
:superhero_woman: :superhero_woman: 🦸‍♀️
:supervillain: :supervillain: 🦹
:supervillain_man: :supervillain_man: 🦹‍♂️
:supervillain_woman: :supervillain_woman: 🦹‍♀️
:mage: :mage: 🧙
:mage_man: :mage_man: 🧙‍♂️
:mage_woman: :mage_woman: 🧙‍♀️
:fairy: :fairy: 🧚
:fairy_man: :fairy_man: 🧚‍♂️
:fairy_woman: :fairy_woman: 🧚‍♀️
:vampire: :vampire: 🧛
:vampire_man: :vampire_man: 🧛‍♂️
:vampire_woman: :vampire_woman: 🧛‍♀️
:merperson: :merperson: 🧜
:merman: :merman: 🧜‍♂️
:mermaid: :mermaid: 🧜‍♀️
:elf: :elf: 🧝
:elf_man: :elf_man: 🧝‍♂️
:elf_woman: :elf_woman: 🧝‍♀️
:genie: :genie: 🧞
:genie_man: :genie_man: 🧞‍♂️
:genie_woman: :genie_woman: 🧞‍♀️
:zombie: :zombie: 🧟
:zombie_man: :zombie_man: 🧟‍♂️
:zombie_woman: :zombie_woman: 🧟‍♀️
:massage: :massage: 💆
:massage_man: :massage_man: 💆‍♂️
:massage_woman: :massage_woman: 💆‍♀️
:haircut: :haircut: 💇
:haircut_man: :haircut_man: 💇‍♂️
:haircut_woman: :haircut_woman: 💇‍♀️
:walking: :walking: 🚶
:walking_man: :walking_man: 🚶‍♂️
:walking_woman: :walking_woman: 🚶‍♀️
:standing_person: :standing_person: 🧍
:standing_man: :standing_man: 🧍‍♂️
:standing_woman: :standing_woman: 🧍‍♀️
:kneeling_person: :kneeling_person: 🧎
:kneeling_man: :kneeling_man: 🧎‍♂️
:kneeling_woman: :kneeling_woman: 🧎‍♀️
:person_with_probing_cane: :person_with_probing_cane: 🧑‍🦯
:man_with_probing_cane: :man_with_probing_cane: 👨‍🦯
:woman_with_probing_cane: :woman_with_probing_cane: 👩‍🦯
:person_in_motorized_wheelchair: :person_in_motorized_wheelchair: 🧑‍🦼
:man_in_motorized_wheelchair: :man_in_motorized_wheelchair: 👨‍🦼
:woman_in_motorized_wheelchair: :woman_in_motorized_wheelchair: 👩‍🦼
:person_in_manual_wheelchair: :person_in_manual_wheelchair: 🧑‍🦽
:man_in_manual_wheelchair: :man_in_manual_wheelchair: 👨‍🦽
:woman_in_manual_wheelchair: :woman_in_manual_wheelchair: 👩‍🦽
:runner: :runner: 🏃
:running: :running: 🏃
:running_man: :running_man: 🏃‍♂️
:running_woman: :running_woman: 🏃‍♀️
:woman_dancing: :woman_dancing: 💃
:dancer: :dancer: 💃
:man_dancing: :man_dancing: 🕺
:business_suit_levitating: :business_suit_levitating: 🕴️
:dancers: :dancers: 👯
:dancing_men: :dancing_men: 👯‍♂️
:dancing_women: :dancing_women: 👯‍♀️
:sauna_person: :sauna_person: 🧖
:sauna_man: :sauna_man: 🧖‍♂️
:sauna_woman: :sauna_woman: 🧖‍♀️
:climbing: :climbing: 🧗
:climbing_man: :climbing_man: 🧗‍♂️
:climbing_woman: :climbing_woman: 🧗‍♀️
:person_fencing: :person_fencing: 🤺
:horse_racing: :horse_racing: 🏇
:skier: :skier: ⛷️
:snowboarder: :snowboarder: 🏂
:golfing: :golfing: 🏌️
:golfing_man: :golfing_man: 🏌️‍♂️
:golfing_woman: :golfing_woman: 🏌️‍♀️
:surfer: :surfer: 🏄
:surfing_man: :surfing_man: 🏄‍♂️
:surfing_woman: :surfing_woman: 🏄‍♀️
:rowboat: :rowboat: 🚣
:rowing_man: :rowing_man: 🚣‍♂️
:rowing_woman: :rowing_woman: 🚣‍♀️
:swimmer: :swimmer: 🏊
:swimming_man: :swimming_man: 🏊‍♂️
:swimming_woman: :swimming_woman: 🏊‍♀️
:bouncing_ball_person: :bouncing_ball_person: ⛹️
:bouncing_ball_man: :bouncing_ball_man: ⛹️‍♂️
:basketball_man: :basketball_man: ⛹️‍♂️
:bouncing_ball_woman: :bouncing_ball_woman: ⛹️‍♀️
:basketball_woman: :basketball_woman: ⛹️‍♀️
:weight_lifting: :weight_lifting: 🏋️
:weight_lifting_man: :weight_lifting_man: 🏋️‍♂️
:weight_lifting_woman: :weight_lifting_woman: 🏋️‍♀️
:bicyclist: :bicyclist: 🚴
:biking_man: :biking_man: 🚴‍♂️
:biking_woman: :biking_woman: 🚴‍♀️
:mountain_bicyclist: :mountain_bicyclist: 🚵
:mountain_biking_man: :mountain_biking_man: 🚵‍♂️
:mountain_biking_woman: :mountain_biking_woman: 🚵‍♀️
:cartwheeling: :cartwheeling: 🤸
:man_cartwheeling: :man_cartwheeling: 🤸‍♂️
:woman_cartwheeling: :woman_cartwheeling: 🤸‍♀️
:wrestling: :wrestling: 🤼
:men_wrestling: :men_wrestling: 🤼‍♂️
:women_wrestling: :women_wrestling: 🤼‍♀️
:water_polo: :water_polo: 🤽
:man_playing_water_polo: :man_playing_water_polo: 🤽‍♂️
:woman_playing_water_polo: :woman_playing_water_polo: 🤽‍♀️
:handball_person: :handball_person: 🤾
:man_playing_handball: :man_playing_handball: 🤾‍♂️
:woman_playing_handball: :woman_playing_handball: 🤾‍♀️
:juggling_person: :juggling_person: 🤹
:man_juggling: :man_juggling: 🤹‍♂️
:woman_juggling: :woman_juggling: 🤹‍♀️
:lotus_position: :lotus_position: 🧘
:lotus_position_man: :lotus_position_man: 🧘‍♂️
:lotus_position_woman: :lotus_position_woman: 🧘‍♀️
:bath: :bath: 🛀
:sleeping_bed: :sleeping_bed: 🛌
:people_holding_hands: :people_holding_hands: 🧑‍🤝‍🧑
:two_women_holding_hands: :two_women_holding_hands: 👭
:couple: :couple: 👫
:two_men_holding_hands: :two_men_holding_hands: 👬
:couplekiss: :couplekiss: 💏
:couplekiss_man_woman: :couplekiss_man_woman: 👩‍❤️‍💋‍👨
:couplekiss_man_man: :couplekiss_man_man: 👨‍❤️‍💋‍👨
:couplekiss_woman_woman: :couplekiss_woman_woman: 👩‍❤️‍💋‍👩
:couple_with_heart: :couple_with_heart: 💑
:couple_with_heart_woman_man: :couple_with_heart_woman_man: 👩‍❤️‍👨
:couple_with_heart_man_man: :couple_with_heart_man_man: 👨‍❤️‍👨
:couple_with_heart_woman_woman: :couple_with_heart_woman_woman: 👩‍❤️‍👩
:family: :family: 👪
:family_man_woman_boy: :family_man_woman_boy: 👨‍👩‍👦
:family_man_woman_girl: :family_man_woman_girl: 👨‍👩‍👧
:family_man_woman_girl_boy: :family_man_woman_girl_boy: 👨‍👩‍👧‍👦
:family_man_woman_boy_boy: :family_man_woman_boy_boy: 👨‍👩‍👦‍👦
:family_man_woman_girl_girl: :family_man_woman_girl_girl: 👨‍👩‍👧‍👧
:family_man_man_boy: :family_man_man_boy: 👨‍👨‍👦
:family_man_man_girl: :family_man_man_girl: 👨‍👨‍👧
:family_man_man_girl_boy: :family_man_man_girl_boy: 👨‍👨‍👧‍👦
:family_man_man_boy_boy: :family_man_man_boy_boy: 👨‍👨‍👦‍👦
:family_man_man_girl_girl: :family_man_man_girl_girl: 👨‍👨‍👧‍👧
:family_woman_woman_boy: :family_woman_woman_boy: 👩‍👩‍👦
:family_woman_woman_girl: :family_woman_woman_girl: 👩‍👩‍👧
:family_woman_woman_girl_boy: :family_woman_woman_girl_boy: 👩‍👩‍👧‍👦
:family_woman_woman_boy_boy: :family_woman_woman_boy_boy: 👩‍👩‍👦‍👦
:family_woman_woman_girl_girl: :family_woman_woman_girl_girl: 👩‍👩‍👧‍👧
:family_man_boy: :family_man_boy: 👨‍👦
:family_man_boy_boy: :family_man_boy_boy: 👨‍👦‍👦
:family_man_girl: :family_man_girl: 👨‍👧
:family_man_girl_boy: :family_man_girl_boy: 👨‍👧‍👦
:family_man_girl_girl: :family_man_girl_girl: 👨‍👧‍👧
:family_woman_boy: :family_woman_boy: 👩‍👦
:family_woman_boy_boy: :family_woman_boy_boy: 👩‍👦‍👦
:family_woman_girl: :family_woman_girl: 👩‍👧
:family_woman_girl_boy: :family_woman_girl_boy: 👩‍👧‍👦
:family_woman_girl_girl: :family_woman_girl_girl: 👩‍👧‍👧
:speaking_head: :speaking_head: 🗣️
:bust_in_silhouette: :bust_in_silhouette: 👤
:busts_in_silhouette: :busts_in_silhouette: 👥
:people_hugging: :people_hugging: 🫂
:footprints: :footprints: 👣
:monkey_face: :monkey_face: 🐵
:monkey: :monkey: 🐒
:gorilla: :gorilla: 🦍
:orangutan: :orangutan: 🦧
:dog: :dog: 🐶
:dog2: :dog2: 🐕
:guide_dog: :guide_dog: 🦮
:service_dog: :service_dog: 🐕‍🦺
:poodle: :poodle: 🐩
:wolf: :wolf: 🐺
:fox_face: :fox_face: 🦊
:raccoon: :raccoon: 🦝
:cat: :cat: 🐱
:cat2: :cat2: 🐈
:black_cat: :black_cat: 🐈‍⬛
:lion: :lion: 🦁
:tiger: :tiger: 🐯
:tiger2: :tiger2: 🐅
:leopard: :leopard: 🐆
:horse: :horse: 🐴
:racehorse: :racehorse: 🐎
:unicorn: :unicorn: 🦄
:zebra: :zebra: 🦓
:deer: :deer: 🦌
:bison: :bison: 🦬
:cow: :cow: 🐮
:ox: :ox: 🐂
:water_buffalo: :water_buffalo: 🐃
:cow2: :cow2: 🐄
:pig: :pig: 🐷
:pig2: :pig2: 🐖
:boar: :boar: 🐗
:pig_nose: :pig_nose: 🐽
:ram: :ram: 🐏
:sheep: :sheep: 🐑
:goat: :goat: 🐐
:dromedary_camel: :dromedary_camel: 🐪
:camel: :camel: 🐫
:llama: :llama: 🦙
:giraffe: :giraffe: 🦒
:elephant: :elephant: 🐘
:mammoth: :mammoth: 🦣
:rhinoceros: :rhinoceros: 🦏
:hippopotamus: :hippopotamus: 🦛
:mouse: :mouse: 🐭
:mouse2: :mouse2: 🐁
:rat: :rat: 🐀
:hamster: :hamster: 🐹
:rabbit: :rabbit: 🐰
:rabbit2: :rabbit2: 🐇
:chipmunk: :chipmunk: 🐿️
:beaver: :beaver: 🦫
:hedgehog: :hedgehog: 🦔
:bat: :bat: 🦇
:bear: :bear: 🐻
:polar_bear: :polar_bear: 🐻‍❄️
:koala: :koala: 🐨
:panda_face: :panda_face: 🐼
:sloth: :sloth: 🦥
:otter: :otter: 🦦
:skunk: :skunk: 🦨
:kangaroo: :kangaroo: 🦘
:badger: :badger: 🦡
:feet: :feet: 🐾
:paw_prints: :paw_prints: 🐾
:turkey: :turkey: 🦃
:chicken: :chicken: 🐔
:rooster: :rooster: 🐓
:hatching_chick: :hatching_chick: 🐣
:baby_chick: :baby_chick: 🐤
:hatched_chick: :hatched_chick: 🐥
:bird: :bird: 🐦
:penguin: :penguin: 🐧
:dove: :dove: 🕊️
:eagle: :eagle: 🦅
:duck: :duck: 🦆
:swan: :swan: 🦢
:owl: :owl: 🦉
:dodo: :dodo: 🦤
:feather: :feather: 🪶
:flamingo: :flamingo: 🦩
:peacock: :peacock: 🦚
:parrot: :parrot: 🦜
:frog: :frog: 🐸
:crocodile: :crocodile: 🐊
:turtle: :turtle: 🐢
:lizard: :lizard: 🦎
:snake: :snake: 🐍
:dragon_face: :dragon_face: 🐲
:dragon: :dragon: 🐉
:sauropod: :sauropod: 🦕
:t-rex: :t-rex: 🦖
:whale: :whale: 🐳
:whale2: :whale2: 🐋
:dolphin: :dolphin: 🐬
:flipper: :flipper: 🐬
:seal: :seal: 🦭
:fish: :fish: 🐟
:tropical_fish: :tropical_fish: 🐠
:blowfish: :blowfish: 🐡
:shark: :shark: 🦈
:octopus: :octopus: 🐙
:shell: :shell: 🐚
:snail: :snail: 🐌
:butterfly: :butterfly: 🦋
:bug: :bug: 🐛
:ant: :ant: 🐜
:bee: :bee: 🐝
:honeybee: :honeybee: 🐝
:beetle: :beetle: 🪲
:lady_beetle: :lady_beetle: 🐞
:cricket: :cricket: 🦗
:cockroach: :cockroach: 🪳
:spider: :spider: 🕷️
:spider_web: :spider_web: 🕸️
:scorpion: :scorpion: 🦂
:mosquito: :mosquito: 🦟
:fly: :fly: 🪰
:worm: :worm: 🪱
:microbe: :microbe: 🦠
:bouquet: :bouquet: 💐
:cherry_blossom: :cherry_blossom: 🌸
:white_flower: :white_flower: 💮
:rosette: :rosette: 🏵️
:rose: :rose: 🌹
:wilted_flower: :wilted_flower: 🥀
:hibiscus: :hibiscus: 🌺
:sunflower: :sunflower: 🌻
:blossom: :blossom: 🌼
:tulip: :tulip: 🌷
:seedling: :seedling: 🌱
:potted_plant: :potted_plant: 🪴
:evergreen_tree: :evergreen_tree: 🌲
:deciduous_tree: :deciduous_tree: 🌳
:palm_tree: :palm_tree: 🌴
:cactus: :cactus: 🌵
:ear_of_rice: :ear_of_rice: 🌾
:herb: :herb: 🌿
:shamrock: :shamrock: ☘️
:four_leaf_clover: :four_leaf_clover: 🍀
:maple_leaf: :maple_leaf: 🍁
:fallen_leaf: :fallen_leaf: 🍂
:leaves: :leaves: 🍃
:grapes: :grapes: 🍇
:melon: :melon: 🍈
:watermelon: :watermelon: 🍉
:tangerine: :tangerine: 🍊
:orange: :orange: 🍊
:mandarin: :mandarin: 🍊
:lemon: :lemon: 🍋
:banana: :banana: 🍌
:pineapple: :pineapple: 🍍
:mango: :mango: 🥭
:apple: :apple: 🍎
:green_apple: :green_apple: 🍏
:pear: :pear: 🍐
:peach: :peach: 🍑
:cherries: :cherries: 🍒
:strawberry: :strawberry: 🍓
:blueberries: :blueberries: 🫐
:kiwi_fruit: :kiwi_fruit: 🥝
:tomato: :tomato: 🍅
:olive: :olive: 🫒
:coconut: :coconut: 🥥
:avocado: :avocado: 🥑
:eggplant: :eggplant: 🍆
:potato: :potato: 🥔
:carrot: :carrot: 🥕
:corn: :corn: 🌽
:hot_pepper: :hot_pepper: 🌶️
:bell_pepper: :bell_pepper: 🫑
:cucumber: :cucumber: 🥒
:leafy_green: :leafy_green: 🥬
:broccoli: :broccoli: 🥦
:garlic: :garlic: 🧄
:onion: :onion: 🧅
:mushroom: :mushroom: 🍄
:peanuts: :peanuts: 🥜
:chestnut: :chestnut: 🌰
:bread: :bread: 🍞
:croissant: :croissant: 🥐
:baguette_bread: :baguette_bread: 🥖
:flatbread: :flatbread: 🫓
:pretzel: :pretzel: 🥨
:bagel: :bagel: 🥯
:pancakes: :pancakes: 🥞
:waffle: :waffle: 🧇
:cheese: :cheese: 🧀
:meat_on_bone: :meat_on_bone: 🍖
:poultry_leg: :poultry_leg: 🍗
:cut_of_meat: :cut_of_meat: 🥩
:bacon: :bacon: 🥓
:hamburger: :hamburger: 🍔
:fries: :fries: 🍟
:pizza: :pizza: 🍕
:hotdog: :hotdog: 🌭
:sandwich: :sandwich: 🥪
:taco: :taco: 🌮
:burrito: :burrito: 🌯
:tamale: :tamale: 🫔
:stuffed_flatbread: :stuffed_flatbread: 🥙
:falafel: :falafel: 🧆
:egg: :egg: 🥚
:fried_egg: :fried_egg: 🍳
:shallow_pan_of_food: :shallow_pan_of_food: 🥘
:stew: :stew: 🍲
:fondue: :fondue: 🫕
:bowl_with_spoon: :bowl_with_spoon: 🥣
:green_salad: :green_salad: 🥗
:popcorn: :popcorn: 🍿
:butter: :butter: 🧈
:salt: :salt: 🧂
:canned_food: :canned_food: 🥫
:bento: :bento: 🍱
:rice_cracker: :rice_cracker: 🍘
:rice_ball: :rice_ball: 🍙
:rice: :rice: 🍚
:curry: :curry: 🍛
:ramen: :ramen: 🍜
:spaghetti: :spaghetti: 🍝
:sweet_potato: :sweet_potato: 🍠
:oden: :oden: 🍢
:sushi: :sushi: 🍣
:fried_shrimp: :fried_shrimp: 🍤
:fish_cake: :fish_cake: 🍥
:moon_cake: :moon_cake: 🥮
:dango: :dango: 🍡
:dumpling: :dumpling: 🥟
:fortune_cookie: :fortune_cookie: 🥠
:takeout_box: :takeout_box: 🥡
:crab: :crab: 🦀
:lobster: :lobster: 🦞
:shrimp: :shrimp: 🦐
:squid: :squid: 🦑
:oyster: :oyster: 🦪
:icecream: :icecream: 🍦
:shaved_ice: :shaved_ice: 🍧
:ice_cream: :ice_cream: 🍨
:doughnut: :doughnut: 🍩
:cookie: :cookie: 🍪
:birthday: :birthday: 🎂
:cake: :cake: 🍰
:cupcake: :cupcake: 🧁
:pie: :pie: 🥧
:chocolate_bar: :chocolate_bar: 🍫
:candy: :candy: 🍬
:lollipop: :lollipop: 🍭
:custard: :custard: 🍮
:honey_pot: :honey_pot: 🍯
:baby_bottle: :baby_bottle: 🍼
:milk_glass: :milk_glass: 🥛
:coffee: :coffee:
:teapot: :teapot: 🫖
:tea: :tea: 🍵
:sake: :sake: 🍶
:champagne: :champagne: 🍾
:wine_glass: :wine_glass: 🍷
:cocktail: :cocktail: 🍸
:tropical_drink: :tropical_drink: 🍹
:beer: :beer: 🍺
:beers: :beers: 🍻
:clinking_glasses: :clinking_glasses: 🥂
:tumbler_glass: :tumbler_glass: 🥃
:cup_with_straw: :cup_with_straw: 🥤
:bubble_tea: :bubble_tea: 🧋
:beverage_box: :beverage_box: 🧃
:mate: :mate: 🧉
:ice_cube: :ice_cube: 🧊
:chopsticks: :chopsticks: 🥢
:plate_with_cutlery: :plate_with_cutlery: 🍽️
:fork_and_knife: :fork_and_knife: 🍴
:spoon: :spoon: 🥄
:hocho: :hocho: 🔪
:knife: :knife: 🔪
:amphora: :amphora: 🏺
:earth_africa: :earth_africa: 🌍
:earth_americas: :earth_americas: 🌎
:earth_asia: :earth_asia: 🌏
:globe_with_meridians: :globe_with_meridians: 🌐
:world_map: :world_map: 🗺️
:japan: :japan: 🗾
:compass: :compass: 🧭
:mountain_snow: :mountain_snow: 🏔️
:mountain: :mountain: ⛰️
:volcano: :volcano: 🌋
:mount_fuji: :mount_fuji: 🗻
:camping: :camping: 🏕️
:beach_umbrella: :beach_umbrella: 🏖️
:desert: :desert: 🏜️
:desert_island: :desert_island: 🏝️
:national_park: :national_park: 🏞️
:stadium: :stadium: 🏟️
:classical_building: :classical_building: 🏛️
:building_construction: :building_construction: 🏗️
:bricks: :bricks: 🧱
:rock: :rock: 🪨
:wood: :wood: 🪵
:hut: :hut: 🛖
:houses: :houses: 🏘️
:derelict_house: :derelict_house: 🏚️
:house: :house: 🏠
:house_with_garden: :house_with_garden: 🏡
:office: :office: 🏢
:post_office: :post_office: 🏣
:european_post_office: :european_post_office: 🏤
:hospital: :hospital: 🏥
:bank: :bank: 🏦
:hotel: :hotel: 🏨
:love_hotel: :love_hotel: 🏩
:convenience_store: :convenience_store: 🏪
:school: :school: 🏫
:department_store: :department_store: 🏬
:factory: :factory: 🏭
:japanese_castle: :japanese_castle: 🏯
:european_castle: :european_castle: 🏰
:wedding: :wedding: 💒
:tokyo_tower: :tokyo_tower: 🗼
:statue_of_liberty: :statue_of_liberty: 🗽
:church: :church:
:mosque: :mosque: 🕌
:hindu_temple: :hindu_temple: 🛕
:synagogue: :synagogue: 🕍
:shinto_shrine: :shinto_shrine: ⛩️
:kaaba: :kaaba: 🕋
:fountain: :fountain:
:tent: :tent:
:foggy: :foggy: 🌁
:night_with_stars: :night_with_stars: 🌃
:cityscape: :cityscape: 🏙️
:sunrise_over_mountains: :sunrise_over_mountains: 🌄
:sunrise: :sunrise: 🌅
:city_sunset: :city_sunset: 🌆
:city_sunrise: :city_sunrise: 🌇
:bridge_at_night: :bridge_at_night: 🌉
:hotsprings: :hotsprings: ♨️
:carousel_horse: :carousel_horse: 🎠
:ferris_wheel: :ferris_wheel: 🎡
:roller_coaster: :roller_coaster: 🎢
:barber: :barber: 💈
:circus_tent: :circus_tent: 🎪
:steam_locomotive: :steam_locomotive: 🚂
:railway_car: :railway_car: 🚃
:bullettrain_side: :bullettrain_side: 🚄
:bullettrain_front: :bullettrain_front: 🚅
:train2: :train2: 🚆
:metro: :metro: 🚇
:light_rail: :light_rail: 🚈
:station: :station: 🚉
:tram: :tram: 🚊
:monorail: :monorail: 🚝
:mountain_railway: :mountain_railway: 🚞
:train: :train: 🚋
:bus: :bus: 🚌
:oncoming_bus: :oncoming_bus: 🚍
:trolleybus: :trolleybus: 🚎
:minibus: :minibus: 🚐
:ambulance: :ambulance: 🚑
:fire_engine: :fire_engine: 🚒
:police_car: :police_car: 🚓
:oncoming_police_car: :oncoming_police_car: 🚔
:taxi: :taxi: 🚕
:oncoming_taxi: :oncoming_taxi: 🚖
:car: :car: 🚗
:red_car: :red_car: 🚗
:oncoming_automobile: :oncoming_automobile: 🚘
:blue_car: :blue_car: 🚙
:pickup_truck: :pickup_truck: 🛻
:truck: :truck: 🚚
:articulated_lorry: :articulated_lorry: 🚛
:tractor: :tractor: 🚜
:racing_car: :racing_car: 🏎️
:motorcycle: :motorcycle: 🏍️
:motor_scooter: :motor_scooter: 🛵
:manual_wheelchair: :manual_wheelchair: 🦽
:motorized_wheelchair: :motorized_wheelchair: 🦼
:auto_rickshaw: :auto_rickshaw: 🛺
:bike: :bike: 🚲
:kick_scooter: :kick_scooter: 🛴
:skateboard: :skateboard: 🛹
:roller_skate: :roller_skate: 🛼
:busstop: :busstop: 🚏
:motorway: :motorway: 🛣️
:railway_track: :railway_track: 🛤️
:oil_drum: :oil_drum: 🛢️
:fuelpump: :fuelpump:
:rotating_light: :rotating_light: 🚨
:traffic_light: :traffic_light: 🚥
:vertical_traffic_light: :vertical_traffic_light: 🚦
:stop_sign: :stop_sign: 🛑
:construction: :construction: 🚧
:anchor: :anchor:
:boat: :boat:
:sailboat: :sailboat:
:canoe: :canoe: 🛶
:speedboat: :speedboat: 🚤
:passenger_ship: :passenger_ship: 🛳️
:ferry: :ferry: ⛴️
:motor_boat: :motor_boat: 🛥️
:ship: :ship: 🚢
:airplane: :airplane: ✈️
:small_airplane: :small_airplane: 🛩️
:flight_departure: :flight_departure: 🛫
:flight_arrival: :flight_arrival: 🛬
:parachute: :parachute: 🪂
:seat: :seat: 💺
:helicopter: :helicopter: 🚁
:suspension_railway: :suspension_railway: 🚟
:mountain_cableway: :mountain_cableway: 🚠
:aerial_tramway: :aerial_tramway: 🚡
:artificial_satellite: :artificial_satellite: 🛰️
:rocket: :rocket: 🚀
:flying_saucer: :flying_saucer: 🛸
:bellhop_bell: :bellhop_bell: 🛎️
:luggage: :luggage: 🧳
:hourglass: :hourglass:
:hourglass_flowing_sand: :hourglass_flowing_sand:
:watch: :watch:
:alarm_clock: :alarm_clock:
:stopwatch: :stopwatch: ⏱️
:timer_clock: :timer_clock: ⏲️
:mantelpiece_clock: :mantelpiece_clock: 🕰️
:clock12: :clock12: 🕛
:clock1230: :clock1230: 🕧
:clock1: :clock1: 🕐
:clock130: :clock130: 🕜
:clock2: :clock2: 🕑
:clock230: :clock230: 🕝
:clock3: :clock3: 🕒
:clock330: :clock330: 🕞
:clock4: :clock4: 🕓
:clock430: :clock430: 🕟
:clock5: :clock5: 🕔
:clock530: :clock530: 🕠
:clock6: :clock6: 🕕
:clock630: :clock630: 🕡
:clock7: :clock7: 🕖
:clock730: :clock730: 🕢
:clock8: :clock8: 🕗
:clock830: :clock830: 🕣
:clock9: :clock9: 🕘
:clock930: :clock930: 🕤
:clock10: :clock10: 🕙
:clock1030: :clock1030: 🕥
:clock11: :clock11: 🕚
:clock1130: :clock1130: 🕦
:new_moon: :new_moon: 🌑
:waxing_crescent_moon: :waxing_crescent_moon: 🌒
:first_quarter_moon: :first_quarter_moon: 🌓
:moon: :moon: 🌔
:waxing_gibbous_moon: :waxing_gibbous_moon: 🌔
:full_moon: :full_moon: 🌕
:waning_gibbous_moon: :waning_gibbous_moon: 🌖
:last_quarter_moon: :last_quarter_moon: 🌗
:waning_crescent_moon: :waning_crescent_moon: 🌘
:crescent_moon: :crescent_moon: 🌙
:new_moon_with_face: :new_moon_with_face: 🌚
:first_quarter_moon_with_face: :first_quarter_moon_with_face: 🌛
:last_quarter_moon_with_face: :last_quarter_moon_with_face: 🌜
:thermometer: :thermometer: 🌡️
:sunny: :sunny: ☀️
:full_moon_with_face: :full_moon_with_face: 🌝
:sun_with_face: :sun_with_face: 🌞
:ringed_planet: :ringed_planet: 🪐
:star: :star:
:star2: :star2: 🌟
:stars: :stars: 🌠
:milky_way: :milky_way: 🌌
:cloud: :cloud: ☁️
:partly_sunny: :partly_sunny:
:cloud_with_lightning_and_rain: :cloud_with_lightning_and_rain: ⛈️
:sun_behind_small_cloud: :sun_behind_small_cloud: 🌤️
:sun_behind_large_cloud: :sun_behind_large_cloud: 🌥️
:sun_behind_rain_cloud: :sun_behind_rain_cloud: 🌦️
:cloud_with_rain: :cloud_with_rain: 🌧️
:cloud_with_snow: :cloud_with_snow: 🌨️
:cloud_with_lightning: :cloud_with_lightning: 🌩️
:tornado: :tornado: 🌪️
:fog: :fog: 🌫️
:wind_face: :wind_face: 🌬️
:cyclone: :cyclone: 🌀
:rainbow: :rainbow: 🌈
:closed_umbrella: :closed_umbrella: 🌂
:open_umbrella: :open_umbrella: ☂️
:umbrella: :umbrella:
:parasol_on_ground: :parasol_on_ground: ⛱️
:zap: :zap:
:snowflake: :snowflake: ❄️
:snowman_with_snow: :snowman_with_snow: ☃️
:snowman: :snowman:
:comet: :comet: ☄️
:fire: :fire: 🔥
:droplet: :droplet: 💧
:ocean: :ocean: 🌊
:jack_o_lantern: :jack_o_lantern: 🎃
:christmas_tree: :christmas_tree: 🎄
:fireworks: :fireworks: 🎆
:sparkler: :sparkler: 🎇
:firecracker: :firecracker: 🧨
:sparkles: :sparkles:
:balloon: :balloon: 🎈
:tada: :tada: 🎉
:confetti_ball: :confetti_ball: 🎊
:tanabata_tree: :tanabata_tree: 🎋
:bamboo: :bamboo: 🎍
:dolls: :dolls: 🎎
:flags: :flags: 🎏
:wind_chime: :wind_chime: 🎐
:rice_scene: :rice_scene: 🎑
:red_envelope: :red_envelope: 🧧
:ribbon: :ribbon: 🎀
:gift: :gift: 🎁
:reminder_ribbon: :reminder_ribbon: 🎗️
:tickets: :tickets: 🎟️
:ticket: :ticket: 🎫
:medal_military: :medal_military: 🎖️
:trophy: :trophy: 🏆
:medal_sports: :medal_sports: 🏅
:1st_place_medal: :1st_place_medal: 🥇
:2nd_place_medal: :2nd_place_medal: 🥈
:3rd_place_medal: :3rd_place_medal: 🥉
:soccer: :soccer:
:baseball: :baseball:
:softball: :softball: 🥎
:basketball: :basketball: 🏀
:volleyball: :volleyball: 🏐
:football: :football: 🏈
:rugby_football: :rugby_football: 🏉
:tennis: :tennis: 🎾
:flying_disc: :flying_disc: 🥏
:bowling: :bowling: 🎳
:cricket_game: :cricket_game: 🏏
:field_hockey: :field_hockey: 🏑
:ice_hockey: :ice_hockey: 🏒
:lacrosse: :lacrosse: 🥍
:ping_pong: :ping_pong: 🏓
:badminton: :badminton: 🏸
:boxing_glove: :boxing_glove: 🥊
:martial_arts_uniform: :martial_arts_uniform: 🥋
:goal_net: :goal_net: 🥅
:golf: :golf:
:ice_skate: :ice_skate: ⛸️
:fishing_pole_and_fish: :fishing_pole_and_fish: 🎣
:diving_mask: :diving_mask: 🤿
:running_shirt_with_sash: :running_shirt_with_sash: 🎽
:ski: :ski: 🎿
:sled: :sled: 🛷
:curling_stone: :curling_stone: 🥌
:dart: :dart: 🎯
:yo_yo: :yo_yo: 🪀
:kite: :kite: 🪁
:8ball: :8ball: 🎱
:crystal_ball: :crystal_ball: 🔮
:magic_wand: :magic_wand: 🪄
:nazar_amulet: :nazar_amulet: 🧿
:video_game: :video_game: 🎮
:joystick: :joystick: 🕹️
:slot_machine: :slot_machine: 🎰
:game_die: :game_die: 🎲
:jigsaw: :jigsaw: 🧩
:teddy_bear: :teddy_bear: 🧸
:pinata: :pinata: 🪅
:nesting_dolls: :nesting_dolls: 🪆
:spades: :spades: ♠️
:hearts: :hearts: ♥️
:diamonds: :diamonds: ♦️
:clubs: :clubs: ♣️
:chess_pawn: :chess_pawn: ♟️
:black_joker: :black_joker: 🃏
:mahjong: :mahjong: 🀄
:flower_playing_cards: :flower_playing_cards: 🎴
:performing_arts: :performing_arts: 🎭
:framed_picture: :framed_picture: 🖼️
:art: :art: 🎨
:thread: :thread: 🧵
:sewing_needle: :sewing_needle: 🪡
:yarn: :yarn: 🧶
:knot: :knot: 🪢
:eyeglasses: :eyeglasses: 👓
:dark_sunglasses: :dark_sunglasses: 🕶️
:goggles: :goggles: 🥽
:lab_coat: :lab_coat: 🥼
:safety_vest: :safety_vest: 🦺
:necktie: :necktie: 👔
:shirt: :shirt: 👕
:tshirt: :tshirt: 👕
:jeans: :jeans: 👖
:scarf: :scarf: 🧣
:gloves: :gloves: 🧤
:coat: :coat: 🧥
:socks: :socks: 🧦
:dress: :dress: 👗
:kimono: :kimono: 👘
:sari: :sari: 🥻
:one_piece_swimsuit: :one_piece_swimsuit: 🩱
:swim_brief: :swim_brief: 🩲
:shorts: :shorts: 🩳
:bikini: :bikini: 👙
:womans_clothes: :womans_clothes: 👚
:purse: :purse: 👛
:handbag: :handbag: 👜
:pouch: :pouch: 👝
:shopping: :shopping: 🛍️
:school_satchel: :school_satchel: 🎒
:thong_sandal: :thong_sandal: 🩴
:mans_shoe: :mans_shoe: 👞
:shoe: :shoe: 👞
:athletic_shoe: :athletic_shoe: 👟
:hiking_boot: :hiking_boot: 🥾
:flat_shoe: :flat_shoe: 🥿
:high_heel: :high_heel: 👠
:sandal: :sandal: 👡
:ballet_shoes: :ballet_shoes: 🩰
:boot: :boot: 👢
:crown: :crown: 👑
:womans_hat: :womans_hat: 👒
:tophat: :tophat: 🎩
:mortar_board: :mortar_board: 🎓
:billed_cap: :billed_cap: 🧢
:military_helmet: :military_helmet: 🪖
:rescue_worker_helmet: :rescue_worker_helmet: ⛑️
:prayer_beads: :prayer_beads: 📿
:lipstick: :lipstick: 💄
:ring: :ring: 💍
:gem: :gem: 💎
:mute: :mute: 🔇
:speaker: :speaker: 🔈
:sound: :sound: 🔉
:loud_sound: :loud_sound: 🔊
:loudspeaker: :loudspeaker: 📢
:mega: :mega: 📣
:postal_horn: :postal_horn: 📯
:bell: :bell: 🔔
:no_bell: :no_bell: 🔕
:musical_score: :musical_score: 🎼
:musical_note: :musical_note: 🎵
:notes: :notes: 🎶
:studio_microphone: :studio_microphone: 🎙️
:level_slider: :level_slider: 🎚️
:control_knobs: :control_knobs: 🎛️
:microphone: :microphone: 🎤
:headphones: :headphones: 🎧
:radio: :radio: 📻
:saxophone: :saxophone: 🎷
:accordion: :accordion: 🪗
:guitar: :guitar: 🎸
:musical_keyboard: :musical_keyboard: 🎹
:trumpet: :trumpet: 🎺
:violin: :violin: 🎻
:banjo: :banjo: 🪕
:drum: :drum: 🥁
:long_drum: :long_drum: 🪘
:iphone: :iphone: 📱
:calling: :calling: 📲
:phone: :phone: ☎️
:telephone: :telephone: ☎️
:telephone_receiver: :telephone_receiver: 📞
:pager: :pager: 📟
:fax: :fax: 📠
:battery: :battery: 🔋
:electric_plug: :electric_plug: 🔌
:computer: :computer: 💻
:desktop_computer: :desktop_computer: 🖥️
:printer: :printer: 🖨️
:keyboard: :keyboard: ⌨️
:computer_mouse: :computer_mouse: 🖱️
:trackball: :trackball: 🖲️
:minidisc: :minidisc: 💽
:floppy_disk: :floppy_disk: 💾
:cd: :cd: 💿
:dvd: :dvd: 📀
:abacus: :abacus: 🧮
:movie_camera: :movie_camera: 🎥
:film_strip: :film_strip: 🎞️
:film_projector: :film_projector: 📽️
:clapper: :clapper: 🎬
:tv: :tv: 📺
:camera: :camera: 📷
:camera_flash: :camera_flash: 📸
:video_camera: :video_camera: 📹
:vhs: :vhs: 📼
:mag: :mag: 🔍
:mag_right: :mag_right: 🔎
:candle: :candle: 🕯️
:bulb: :bulb: 💡
:flashlight: :flashlight: 🔦
:izakaya_lantern: :izakaya_lantern: 🏮
:lantern: :lantern: 🏮
:diya_lamp: :diya_lamp: 🪔
:notebook_with_decorative_cover: :notebook_with_decorative_cover: 📔
:closed_book: :closed_book: 📕
:book: :book: 📖
:open_book: :open_book: 📖
:green_book: :green_book: 📗
:blue_book: :blue_book: 📘
:orange_book: :orange_book: 📙
:books: :books: 📚
:notebook: :notebook: 📓
:ledger: :ledger: 📒
:page_with_curl: :page_with_curl: 📃
:scroll: :scroll: 📜
:page_facing_up: :page_facing_up: 📄
:newspaper: :newspaper: 📰
:newspaper_roll: :newspaper_roll: 🗞️
:bookmark_tabs: :bookmark_tabs: 📑
:bookmark: :bookmark: 🔖
:label: :label: 🏷️
:moneybag: :moneybag: 💰
:coin: :coin: 🪙
:yen: :yen: 💴
:dollar: :dollar: 💵
:euro: :euro: 💶
:pound: :pound: 💷
:money_with_wings: :money_with_wings: 💸
:credit_card: :credit_card: 💳
:receipt: :receipt: 🧾
:chart: :chart: 💹
:envelope: :envelope: ✉️
:email: :email: 📧
:e-mail: :e-mail: 📧
:incoming_envelope: :incoming_envelope: 📨
:envelope_with_arrow: :envelope_with_arrow: 📩
:outbox_tray: :outbox_tray: 📤
:inbox_tray: :inbox_tray: 📥
:package: :package: 📦
:mailbox: :mailbox: 📫
:mailbox_closed: :mailbox_closed: 📪
:mailbox_with_mail: :mailbox_with_mail: 📬
:mailbox_with_no_mail: :mailbox_with_no_mail: 📭
:postbox: :postbox: 📮
:ballot_box: :ballot_box: 🗳️
:pencil2: :pencil2: ✏️
:black_nib: :black_nib: ✒️
:fountain_pen: :fountain_pen: 🖋️
:pen: :pen: 🖊️
:paintbrush: :paintbrush: 🖌️
:crayon: :crayon: 🖍️
:memo: :memo: 📝
:pencil: :pencil: 📝
:briefcase: :briefcase: 💼
:file_folder: :file_folder: 📁
:open_file_folder: :open_file_folder: 📂
:card_index_dividers: :card_index_dividers: 🗂️
:date: :date: 📅
:calendar: :calendar: 📆
:spiral_notepad: :spiral_notepad: 🗒️
:spiral_calendar: :spiral_calendar: 🗓️
:card_index: :card_index: 📇
:chart_with_upwards_trend: :chart_with_upwards_trend: 📈
:chart_with_downwards_trend: :chart_with_downwards_trend: 📉
:bar_chart: :bar_chart: 📊
:clipboard: :clipboard: 📋
:pushpin: :pushpin: 📌
:round_pushpin: :round_pushpin: 📍
:paperclip: :paperclip: 📎
:paperclips: :paperclips: 🖇️
:straight_ruler: :straight_ruler: 📏
:triangular_ruler: :triangular_ruler: 📐
:scissors: :scissors: ✂️
:card_file_box: :card_file_box: 🗃️
:file_cabinet: :file_cabinet: 🗄️
:wastebasket: :wastebasket: 🗑️
:lock: :lock: 🔒
:unlock: :unlock: 🔓
:lock_with_ink_pen: :lock_with_ink_pen: 🔏
:closed_lock_with_key: :closed_lock_with_key: 🔐
:key: :key: 🔑
:old_key: :old_key: 🗝️
:hammer: :hammer: 🔨
:axe: :axe: 🪓
:pick: :pick: ⛏️
:hammer_and_pick: :hammer_and_pick: ⚒️
:hammer_and_wrench: :hammer_and_wrench: 🛠️
:dagger: :dagger: 🗡️
:crossed_swords: :crossed_swords: ⚔️
:gun: :gun: 🔫
:boomerang: :boomerang: 🪃
:bow_and_arrow: :bow_and_arrow: 🏹
:shield: :shield: 🛡️
:carpentry_saw: :carpentry_saw: 🪚
:wrench: :wrench: 🔧
:screwdriver: :screwdriver: 🪛
:nut_and_bolt: :nut_and_bolt: 🔩
:gear: :gear: ⚙️
:clamp: :clamp: 🗜️
:balance_scale: :balance_scale: ⚖️
:probing_cane: :probing_cane: 🦯
:link: :link: 🔗
:chains: :chains: ⛓️
:hook: :hook: 🪝
:toolbox: :toolbox: 🧰
:magnet: :magnet: 🧲
:ladder: :ladder: 🪜
:alembic: :alembic: ⚗️
:test_tube: :test_tube: 🧪
:petri_dish: :petri_dish: 🧫
:dna: :dna: 🧬
:microscope: :microscope: 🔬
:telescope: :telescope: 🔭
:satellite: :satellite: 📡
:syringe: :syringe: 💉
:drop_of_blood: :drop_of_blood: 🩸
:pill: :pill: 💊
:adhesive_bandage: :adhesive_bandage: 🩹
:stethoscope: :stethoscope: 🩺
:door: :door: 🚪
:elevator: :elevator: 🛗
:mirror: :mirror: 🪞
:window: :window: 🪟
:bed: :bed: 🛏️
:couch_and_lamp: :couch_and_lamp: 🛋️
:chair: :chair: 🪑
:toilet: :toilet: 🚽
:plunger: :plunger: 🪠
:shower: :shower: 🚿
:bathtub: :bathtub: 🛁
:mouse_trap: :mouse_trap: 🪤
:razor: :razor: 🪒
:lotion_bottle: :lotion_bottle: 🧴
:safety_pin: :safety_pin: 🧷
:broom: :broom: 🧹
:basket: :basket: 🧺
:roll_of_paper: :roll_of_paper: 🧻
:bucket: :bucket: 🪣
:soap: :soap: 🧼
:toothbrush: :toothbrush: 🪥
:sponge: :sponge: 🧽
:fire_extinguisher: :fire_extinguisher: 🧯
:shopping_cart: :shopping_cart: 🛒
:smoking: :smoking: 🚬
:coffin: :coffin: ⚰️
:headstone: :headstone: 🪦
:funeral_urn: :funeral_urn: ⚱️
:moyai: :moyai: 🗿
:placard: :placard: 🪧
:atm: :atm: 🏧
:put_litter_in_its_place: :put_litter_in_its_place: 🚮
:potable_water: :potable_water: 🚰
:wheelchair: :wheelchair:
:mens: :mens: 🚹
:womens: :womens: 🚺
:restroom: :restroom: 🚻
:baby_symbol: :baby_symbol: 🚼
:wc: :wc: 🚾
:passport_control: :passport_control: 🛂
:customs: :customs: 🛃
:baggage_claim: :baggage_claim: 🛄
:left_luggage: :left_luggage: 🛅
:warning: :warning: ⚠️
:children_crossing: :children_crossing: 🚸
:no_entry: :no_entry:
:no_entry_sign: :no_entry_sign: 🚫
:no_bicycles: :no_bicycles: 🚳
:no_smoking: :no_smoking: 🚭
:do_not_litter: :do_not_litter: 🚯
:non-potable_water: :non-potable_water: 🚱
:no_pedestrians: :no_pedestrians: 🚷
:no_mobile_phones: :no_mobile_phones: 📵
:underage: :underage: 🔞
:radioactive: :radioactive: ☢️
:biohazard: :biohazard: ☣️
:arrow_up: :arrow_up: ⬆️
:arrow_upper_right: :arrow_upper_right: ↗️
:arrow_right: :arrow_right: ➡️
:arrow_lower_right: :arrow_lower_right: ↘️
:arrow_down: :arrow_down: ⬇️
:arrow_lower_left: :arrow_lower_left: ↙️
:arrow_left: :arrow_left: ⬅️
:arrow_upper_left: :arrow_upper_left: ↖️
:arrow_up_down: :arrow_up_down: ↕️
:left_right_arrow: :left_right_arrow: ↔️
:leftwards_arrow_with_hook: :leftwards_arrow_with_hook: ↩️
:arrow_right_hook: :arrow_right_hook: ↪️
:arrow_heading_up: :arrow_heading_up: ⤴️
:arrow_heading_down: :arrow_heading_down: ⤵️
:arrows_clockwise: :arrows_clockwise: 🔃
:arrows_counterclockwise: :arrows_counterclockwise: 🔄
:back: :back: 🔙
:end: :end: 🔚
:on: :on: 🔛
:soon: :soon: 🔜
:top: :top: 🔝
:place_of_worship: :place_of_worship: 🛐
:atom_symbol: :atom_symbol: ⚛️
:om: :om: 🕉️
:star_of_david: :star_of_david: ✡️
:wheel_of_dharma: :wheel_of_dharma: ☸️
:yin_yang: :yin_yang: ☯️
:latin_cross: :latin_cross: ✝️
:orthodox_cross: :orthodox_cross: ☦️
:star_and_crescent: :star_and_crescent: ☪️
:peace_symbol: :peace_symbol: ☮️
:menorah: :menorah: 🕎
:six_pointed_star: :six_pointed_star: 🔯
:aries: :aries:
:taurus: :taurus:
:gemini: :gemini:
:cancer: :cancer:
:leo: :leo:
:virgo: :virgo:
:libra: :libra:
:scorpius: :scorpius:
:sagittarius: :sagittarius:
:capricorn: :capricorn:
:aquarius: :aquarius:
:pisces: :pisces:
:ophiuchus: :ophiuchus:
:twisted_rightwards_arrows: :twisted_rightwards_arrows: 🔀
:repeat: :repeat: 🔁
:repeat_one: :repeat_one: 🔂
:arrow_forward: :arrow_forward: ▶️
:fast_forward: :fast_forward:
:next_track_button: :next_track_button: ⏭️
:play_or_pause_button: :play_or_pause_button: ⏯️
:arrow_backward: :arrow_backward: ◀️
:rewind: :rewind:
:previous_track_button: :previous_track_button: ⏮️
:arrow_up_small: :arrow_up_small: 🔼
:arrow_double_up: :arrow_double_up:
:arrow_down_small: :arrow_down_small: 🔽
:arrow_double_down: :arrow_double_down:
:pause_button: :pause_button: ⏸️
:stop_button: :stop_button: ⏹️
:record_button: :record_button: ⏺️
:eject_button: :eject_button: ⏏️
:cinema: :cinema: 🎦
:low_brightness: :low_brightness: 🔅
:high_brightness: :high_brightness: 🔆
:signal_strength: :signal_strength: 📶
:vibration_mode: :vibration_mode: 📳
:mobile_phone_off: :mobile_phone_off: 📴
:female_sign: :female_sign: ♀️
:male_sign: :male_sign: ♂️
:transgender_symbol: :transgender_symbol: ⚧️
:heavy_multiplication_x: :heavy_multiplication_x: ✖️
:heavy_plus_sign: :heavy_plus_sign:
:heavy_minus_sign: :heavy_minus_sign:
:heavy_division_sign: :heavy_division_sign:
:infinity: :infinity: ♾️
:bangbang: :bangbang: ‼️
:interrobang: :interrobang: ⁉️
:question: :question:
:grey_question: :grey_question:
:grey_exclamation: :grey_exclamation:
:exclamation: :exclamation:
:heavy_exclamation_mark: :heavy_exclamation_mark:
:wavy_dash: :wavy_dash: 〰️
:currency_exchange: :currency_exchange: 💱
:heavy_dollar_sign: :heavy_dollar_sign: 💲
:medical_symbol: :medical_symbol: ⚕️
:recycle: :recycle: ♻️
:fleur_de_lis: :fleur_de_lis: ⚜️
:trident: :trident: 🔱
:name_badge: :name_badge: 📛
:beginner: :beginner: 🔰
:o: :o:
:white_check_mark: :white_check_mark:
:ballot_box_with_check: :ballot_box_with_check: ☑️
:heavy_check_mark: :heavy_check_mark: ✔️
:x: :x:
:negative_squared_cross_mark: :negative_squared_cross_mark:
:curly_loop: :curly_loop:
:loop: :loop:
:part_alternation_mark: :part_alternation_mark: 〽️
:eight_spoked_asterisk: :eight_spoked_asterisk: ✳️
:eight_pointed_black_star: :eight_pointed_black_star: ✴️
:sparkle: :sparkle: ❇️
:copyright: :copyright: ©️
:registered: :registered: ®️
:tm: :tm: ™️
:hash: :hash: #️⃣
:asterisk: :asterisk: *️⃣
:zero: :zero: 0️⃣
:one: :one: 1️⃣
:two: :two: 2️⃣
:three: :three: 3️⃣
:four: :four: 4️⃣
:five: :five: 5️⃣
:six: :six: 6️⃣
:seven: :seven: 7️⃣
:eight: :eight: 8️⃣
:nine: :nine: 9️⃣
:keycap_ten: :keycap_ten: 🔟
:capital_abcd: :capital_abcd: 🔠
:abcd: :abcd: 🔡
:symbols: :symbols: 🔣
:abc: :abc: 🔤
:a: :a: 🅰️
:ab: :ab: 🆎
:b: :b: 🅱️
:cl: :cl: 🆑
:cool: :cool: 🆒
:free: :free: 🆓
:information_source: :information_source: ℹ️
:id: :id: 🆔
:m: :m: Ⓜ️
:new: :new: 🆕
:ng: :ng: 🆖
:o2: :o2: 🅾️
:ok: :ok: 🆗
:parking: :parking: 🅿️
:sos: :sos: 🆘
:up: :up: 🆙
:vs: :vs: 🆚
:koko: :koko: 🈁
:sa: :sa: 🈂️
:ideograph_advantage: :ideograph_advantage: 🉐
:accept: :accept: 🉑
:congratulations: :congratulations: ㊗️
:secret: :secret: ㊙️
:u6e80: :u6e80: 🈵
:red_circle: :red_circle: 🔴
:orange_circle: :orange_circle: 🟠
:yellow_circle: :yellow_circle: 🟡
:green_circle: :green_circle: 🟢
:large_blue_circle: :large_blue_circle: 🔵
:purple_circle: :purple_circle: 🟣
:brown_circle: :brown_circle: 🟤
:black_circle: :black_circle:
:white_circle: :white_circle:
:red_square: :red_square: 🟥
:orange_square: :orange_square: 🟧
:yellow_square: :yellow_square: 🟨
:green_square: :green_square: 🟩
:blue_square: :blue_square: 🟦
:purple_square: :purple_square: 🟪
:brown_square: :brown_square: 🟫
:black_large_square: :black_large_square:
:white_large_square: :white_large_square:
:black_medium_square: :black_medium_square: ◼️
:white_medium_square: :white_medium_square: ◻️
:black_medium_small_square: :black_medium_small_square:
:white_medium_small_square: :white_medium_small_square:
:black_small_square: :black_small_square: ▪️
:white_small_square: :white_small_square: ▫️
:large_orange_diamond: :large_orange_diamond: 🔶
:large_blue_diamond: :large_blue_diamond: 🔷
:small_orange_diamond: :small_orange_diamond: 🔸
:small_blue_diamond: :small_blue_diamond: 🔹
:small_red_triangle: :small_red_triangle: 🔺
:small_red_triangle_down: :small_red_triangle_down: 🔻
:diamond_shape_with_a_dot_inside: :diamond_shape_with_a_dot_inside: 💠
:radio_button: :radio_button: 🔘
:white_square_button: :white_square_button: 🔳
:black_square_button: :black_square_button: 🔲
:checkered_flag: :checkered_flag: 🏁
:triangular_flag_on_post: :triangular_flag_on_post: 🚩
:crossed_flags: :crossed_flags: 🎌
:black_flag: :black_flag: 🏴
:white_flag: :white_flag: 🏳️
:rainbow_flag: :rainbow_flag: 🏳️‍🌈
:transgender_flag: :transgender_flag: 🏳️‍⚧️
:pirate_flag: :pirate_flag: 🏴‍☠️
:ascension_island: :ascension_island: 🇦🇨
:andorra: :andorra: 🇦🇩
:united_arab_emirates: :united_arab_emirates: 🇦🇪
:afghanistan: :afghanistan: 🇦🇫
:antigua_barbuda: :antigua_barbuda: 🇦🇬
:anguilla: :anguilla: 🇦🇮
:albania: :albania: 🇦🇱
:armenia: :armenia: 🇦🇲
:angola: :angola: 🇦🇴
:antarctica: :antarctica: 🇦🇶
:argentina: :argentina: 🇦🇷
:american_samoa: :american_samoa: 🇦🇸
:austria: :austria: 🇦🇹
:australia: :australia: 🇦🇺
:aruba: :aruba: 🇦🇼
:aland_islands: :aland_islands: 🇦🇽
:azerbaijan: :azerbaijan: 🇦🇿
:bosnia_herzegovina: :bosnia_herzegovina: 🇧🇦
:barbados: :barbados: 🇧🇧
:bangladesh: :bangladesh: 🇧🇩
:belgium: :belgium: 🇧🇪
:burkina_faso: :burkina_faso: 🇧🇫
:bulgaria: :bulgaria: 🇧🇬
:bahrain: :bahrain: 🇧🇭
:burundi: :burundi: 🇧🇮
:benin: :benin: 🇧🇯
:st_barthelemy: :st_barthelemy: 🇧🇱
:bermuda: :bermuda: 🇧🇲
:brunei: :brunei: 🇧🇳
:bolivia: :bolivia: 🇧🇴
:caribbean_netherlands: :caribbean_netherlands: 🇧🇶
:brazil: :brazil: 🇧🇷
:bahamas: :bahamas: 🇧🇸
:bhutan: :bhutan: 🇧🇹
:bouvet_island: :bouvet_island: 🇧🇻
:botswana: :botswana: 🇧🇼
:belarus: :belarus: 🇧🇾
:belize: :belize: 🇧🇿
:canada: :canada: 🇨🇦
:cocos_islands: :cocos_islands: 🇨🇨
:congo_kinshasa: :congo_kinshasa: 🇨🇩
:central_african_republic: :central_african_republic: 🇨🇫
:congo_brazzaville: :congo_brazzaville: 🇨🇬
:switzerland: :switzerland: 🇨🇭
:cote_divoire: :cote_divoire: 🇨🇮
:cook_islands: :cook_islands: 🇨🇰
:chile: :chile: 🇨🇱
:cameroon: :cameroon: 🇨🇲
:cn: :cn: 🇨🇳
:colombia: :colombia: 🇨🇴
:clipperton_island: :clipperton_island: 🇨🇵
:costa_rica: :costa_rica: 🇨🇷
:cuba: :cuba: 🇨🇺
:cape_verde: :cape_verde: 🇨🇻
:curacao: :curacao: 🇨🇼
:christmas_island: :christmas_island: 🇨🇽
:cyprus: :cyprus: 🇨🇾
:czech_republic: :czech_republic: 🇨🇿
:de: :de: 🇩🇪
:diego_garcia: :diego_garcia: 🇩🇬
:djibouti: :djibouti: 🇩🇯
:denmark: :denmark: 🇩🇰
:dominica: :dominica: 🇩🇲
:dominican_republic: :dominican_republic: 🇩🇴
:algeria: :algeria: 🇩🇿
:ceuta_melilla: :ceuta_melilla: 🇪🇦
:ecuador: :ecuador: 🇪🇨
:estonia: :estonia: 🇪🇪
:egypt: :egypt: 🇪🇬
:western_sahara: :western_sahara: 🇪🇭
:eritrea: :eritrea: 🇪🇷
:es: :es: 🇪🇸
:ethiopia: :ethiopia: 🇪🇹
:eu: :eu: 🇪🇺
:european_union: :european_union: 🇪🇺
:finland: :finland: 🇫🇮
:fiji: :fiji: 🇫🇯
:falkland_islands: :falkland_islands: 🇫🇰
:micronesia: :micronesia: 🇫🇲
:faroe_islands: :faroe_islands: 🇫🇴
:fr: :fr: 🇫🇷
:gabon: :gabon: 🇬🇦
:gb: :gb: 🇬🇧
:uk: :uk: 🇬🇧
:grenada: :grenada: 🇬🇩
:georgia: :georgia: 🇬🇪
:french_guiana: :french_guiana: 🇬🇫
:guernsey: :guernsey: 🇬🇬
:ghana: :ghana: 🇬🇭
:gibraltar: :gibraltar: 🇬🇮
:greenland: :greenland: 🇬🇱
:gambia: :gambia: 🇬🇲
:guinea: :guinea: 🇬🇳
:guadeloupe: :guadeloupe: 🇬🇵
:equatorial_guinea: :equatorial_guinea: 🇬🇶
:greece: :greece: 🇬🇷
:south_georgia_south_sandwich_islands: :south_georgia_south_sandwich_islands: 🇬🇸
:guatemala: :guatemala: 🇬🇹
:guam: :guam: 🇬🇺
:guinea_bissau: :guinea_bissau: 🇬🇼
:guyana: :guyana: 🇬🇾
:hong_kong: :hong_kong: 🇭🇰
:heard_mcdonald_islands: :heard_mcdonald_islands: 🇭🇲
:honduras: :honduras: 🇭🇳
:croatia: :croatia: 🇭🇷
:haiti: :haiti: 🇭🇹
:hungary: :hungary: 🇭🇺
:canary_islands: :canary_islands: 🇮🇨
:indonesia: :indonesia: 🇮🇩
:ireland: :ireland: 🇮🇪
:israel: :israel: 🇮🇱
:isle_of_man: :isle_of_man: 🇮🇲
:india: :india: 🇮🇳
:british_indian_ocean_territory: :british_indian_ocean_territory: 🇮🇴
:iraq: :iraq: 🇮🇶
:iran: :iran: 🇮🇷
:iceland: :iceland: 🇮🇸
:it: :it: 🇮🇹
:jersey: :jersey: 🇯🇪
:jamaica: :jamaica: 🇯🇲
:jordan: :jordan: 🇯🇴
:jp: :jp: 🇯🇵
:kenya: :kenya: 🇰🇪
:kyrgyzstan: :kyrgyzstan: 🇰🇬
:cambodia: :cambodia: 🇰🇭
:kiribati: :kiribati: 🇰🇮
:comoros: :comoros: 🇰🇲
:st_kitts_nevis: :st_kitts_nevis: 🇰🇳
:north_korea: :north_korea: 🇰🇵
:kr: :kr: 🇰🇷
:kuwait: :kuwait: 🇰🇼
:cayman_islands: :cayman_islands: 🇰🇾
:kazakhstan: :kazakhstan: 🇰🇿
:laos: :laos: 🇱🇦
:lebanon: :lebanon: 🇱🇧
:st_lucia: :st_lucia: 🇱🇨
:liechtenstein: :liechtenstein: 🇱🇮
:sri_lanka: :sri_lanka: 🇱🇰
:liberia: :liberia: 🇱🇷
:lesotho: :lesotho: 🇱🇸
:lithuania: :lithuania: 🇱🇹
:luxembourg: :luxembourg: 🇱🇺
:latvia: :latvia: 🇱🇻
:libya: :libya: 🇱🇾
:morocco: :morocco: 🇲🇦
:monaco: :monaco: 🇲🇨
:moldova: :moldova: 🇲🇩
:montenegro: :montenegro: 🇲🇪
:st_martin: :st_martin: 🇲🇫
:madagascar: :madagascar: 🇲🇬
:marshall_islands: :marshall_islands: 🇲🇭
:macedonia: :macedonia: 🇲🇰
:mali: :mali: 🇲🇱
:myanmar: :myanmar: 🇲🇲
:mongolia: :mongolia: 🇲🇳
:macau: :macau: 🇲🇴
:northern_mariana_islands: :northern_mariana_islands: 🇲🇵
:martinique: :martinique: 🇲🇶
:mauritania: :mauritania: 🇲🇷
:montserrat: :montserrat: 🇲🇸
:malta: :malta: 🇲🇹
:mauritius: :mauritius: 🇲🇺
:maldives: :maldives: 🇲🇻
:malawi: :malawi: 🇲🇼
:mexico: :mexico: 🇲🇽
:malaysia: :malaysia: 🇲🇾
:mozambique: :mozambique: 🇲🇿
:namibia: :namibia: 🇳🇦
:new_caledonia: :new_caledonia: 🇳🇨
:niger: :niger: 🇳🇪
:norfolk_island: :norfolk_island: 🇳🇫
:nigeria: :nigeria: 🇳🇬
:nicaragua: :nicaragua: 🇳🇮
:netherlands: :netherlands: 🇳🇱
:norway: :norway: 🇳🇴
:nepal: :nepal: 🇳🇵
:nauru: :nauru: 🇳🇷
:niue: :niue: 🇳🇺
:new_zealand: :new_zealand: 🇳🇿
:oman: :oman: 🇴🇲
:panama: :panama: 🇵🇦
:peru: :peru: 🇵🇪
:french_polynesia: :french_polynesia: 🇵🇫
:papua_new_guinea: :papua_new_guinea: 🇵🇬
:philippines: :philippines: 🇵🇭
:pakistan: :pakistan: 🇵🇰
:poland: :poland: 🇵🇱
:st_pierre_miquelon: :st_pierre_miquelon: 🇵🇲
:pitcairn_islands: :pitcairn_islands: 🇵🇳
:puerto_rico: :puerto_rico: 🇵🇷
:palestinian_territories: :palestinian_territories: 🇵🇸
:portugal: :portugal: 🇵🇹
:palau: :palau: 🇵🇼
:paraguay: :paraguay: 🇵🇾
:qatar: :qatar: 🇶🇦
:reunion: :reunion: 🇷🇪
:romania: :romania: 🇷🇴
:serbia: :serbia: 🇷🇸
:ru: :ru: 🇷🇺
:rwanda: :rwanda: 🇷🇼
:saudi_arabia: :saudi_arabia: 🇸🇦
:solomon_islands: :solomon_islands: 🇸🇧
:seychelles: :seychelles: 🇸🇨
:sudan: :sudan: 🇸🇩
:sweden: :sweden: 🇸🇪
:singapore: :singapore: 🇸🇬
:st_helena: :st_helena: 🇸🇭
:slovenia: :slovenia: 🇸🇮
:svalbard_jan_mayen: :svalbard_jan_mayen: 🇸🇯
:slovakia: :slovakia: 🇸🇰
:sierra_leone: :sierra_leone: 🇸🇱
:san_marino: :san_marino: 🇸🇲
:senegal: :senegal: 🇸🇳
:somalia: :somalia: 🇸🇴
:suriname: :suriname: 🇸🇷
:south_sudan: :south_sudan: 🇸🇸
:sao_tome_principe: :sao_tome_principe: 🇸🇹
:el_salvador: :el_salvador: 🇸🇻
:sint_maarten: :sint_maarten: 🇸🇽
:syria: :syria: 🇸🇾
:swaziland: :swaziland: 🇸🇿
:tristan_da_cunha: :tristan_da_cunha: 🇹🇦
:turks_caicos_islands: :turks_caicos_islands: 🇹🇨
:chad: :chad: 🇹🇩
:french_southern_territories: :french_southern_territories: 🇹🇫
:togo: :togo: 🇹🇬
:thailand: :thailand: 🇹🇭
:tajikistan: :tajikistan: 🇹🇯
:tokelau: :tokelau: 🇹🇰
:timor_leste: :timor_leste: 🇹🇱
:turkmenistan: :turkmenistan: 🇹🇲
:tunisia: :tunisia: 🇹🇳
:tonga: :tonga: 🇹🇴
:tr: :tr: 🇹🇷
:trinidad_tobago: :trinidad_tobago: 🇹🇹
:tuvalu: :tuvalu: 🇹🇻
:taiwan: :taiwan: 🇹🇼
:tanzania: :tanzania: 🇹🇿
:ukraine: :ukraine: 🇺🇦
:uganda: :uganda: 🇺🇬
:us_outlying_islands: :us_outlying_islands: 🇺🇲
:united_nations: :united_nations: 🇺🇳
:us: :us: 🇺🇸
:uruguay: :uruguay: 🇺🇾
:uzbekistan: :uzbekistan: 🇺🇿
:vatican_city: :vatican_city: 🇻🇦
:st_vincent_grenadines: :st_vincent_grenadines: 🇻🇨
:venezuela: :venezuela: 🇻🇪
:british_virgin_islands: :british_virgin_islands: 🇻🇬
:us_virgin_islands: :us_virgin_islands: 🇻🇮
:vietnam: :vietnam: 🇻🇳
:vanuatu: :vanuatu: 🇻🇺
:wallis_futuna: :wallis_futuna: 🇼🇫
:samoa: :samoa: 🇼🇸
:kosovo: :kosovo: 🇽🇰
:yemen: :yemen: 🇾🇪
:mayotte: :mayotte: 🇾🇹
:south_africa: :south_africa: 🇿🇦
:zambia: :zambia: 🇿🇲
:zimbabwe: :zimbabwe: 🇿🇼
:england: :england: 🏴󠁧󠁢󠁥󠁮󠁧󠁿
:scotland: :scotland: 🏴󠁧󠁢󠁳󠁣󠁴󠁿
:wales: :wales: 🏴󠁧󠁢󠁷󠁬󠁳󠁿

Growiで表示できるemojiの検証

Growiで表示できるemojiの検証

Growiで利用できるemojiとは?

セミコロン」で囲った中に文字列をいれることで画面表示される際に絵文字が表示される構文のことです。

例:

emoji 表示
:smile: :smile:

Growiで使える絵文字がわからない問題

下のemojiは使えない絵文字です。 :+1: プラットフォームによってはちゃんとしっかり表示されます。

Growiには使える絵文字と使えない絵文字があって、 下記で紹介されています。 https://docs.growi.org/en/guide/features/emoji.html リンク先にgithubの登録絵文字がありますが、この中のemojiも表示できるものとできないものがあります。

問題は何が使えて何かが使えないかがはっきりしないことだと考えました。 そこでこのページで検証します。

表示できるemojiの検証

検証に使用するのは、growiの公式が提示している こちらではなく同じ階層にあるこちらjsonを使って検証します。

項目
使用するjsonデータ https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/light.json
コミットID 093dec51b4d635663e6c61b75443fa096dc5bf51

検証と結果

表示列に絵文字が表示されている場合は、使えるemojiになります。 以下が検証結果になります。

emoji 表示
:100: :100:
:1234: :1234:
:grinning: :grinning:
:smiley: :smiley:
:smile: :smile:
:grin: :grin:
:laughing: :laughing:
:satisfied: :satisfied:
:sweat_smile: :sweat_smile:
:rofl: :rofl:
:joy: :joy:
:slightly_smiling_face: :slightly_smiling_face:
:upside_down_face: :upside_down_face:
:wink: :wink:
:blush: :blush:
:innocent: :innocent:
:smiling_face_with_three_hearts: :smiling_face_with_three_hearts:
:heart_eyes: :heart_eyes:
:star_struck: :star_struck:
:kissing_heart: :kissing_heart:
:kissing: :kissing:
:relaxed: :relaxed:
:kissing_closed_eyes: :kissing_closed_eyes:
:kissing_smiling_eyes: :kissing_smiling_eyes:
:smiling_face_with_tear: :smiling_face_with_tear:
:yum: :yum:
:stuck_out_tongue: :stuck_out_tongue:
:stuck_out_tongue_winking_eye: :stuck_out_tongue_winking_eye:
:zany_face: :zany_face:
:stuck_out_tongue_closed_eyes: :stuck_out_tongue_closed_eyes:
:money_mouth_face: :money_mouth_face:
:hugs: :hugs:
:hand_over_mouth: :hand_over_mouth:
:shushing_face: :shushing_face:
:thinking: :thinking:
:zipper_mouth_face: :zipper_mouth_face:
:raised_eyebrow: :raised_eyebrow:
:neutral_face: :neutral_face:
:expressionless: :expressionless:
:no_mouth: :no_mouth:
:smirk: :smirk:
:unamused: :unamused:
:roll_eyes: :roll_eyes:
:grimacing: :grimacing:
:lying_face: :lying_face:
:relieved: :relieved:
:pensive: :pensive:
:sleepy: :sleepy:
:drooling_face: :drooling_face:
:sleeping: :sleeping:
:mask: :mask:
:face_with_thermometer: :face_with_thermometer:
:face_with_head_bandage: :face_with_head_bandage:
:nauseated_face: :nauseated_face:
:vomiting_face: :vomiting_face:
:sneezing_face: :sneezing_face:
:hot_face: :hot_face:
:cold_face: :cold_face:
:woozy_face: :woozy_face:
:dizzy_face: :dizzy_face:
:exploding_head: :exploding_head:
:cowboy_hat_face: :cowboy_hat_face:
:partying_face: :partying_face:
:disguised_face: :disguised_face:
:sunglasses: :sunglasses:
:nerd_face: :nerd_face:
:monocle_face: :monocle_face:
:confused: :confused:
:worried: :worried:
:slightly_frowning_face: :slightly_frowning_face:
:frowning_face: :frowning_face:
:open_mouth: :open_mouth:
:hushed: :hushed:
:astonished: :astonished:
:flushed: :flushed:
:pleading_face: :pleading_face:
:frowning: :frowning:
:anguished: :anguished:
:fearful: :fearful:
:cold_sweat: :cold_sweat:
:disappointed_relieved: :disappointed_relieved:
:cry: :cry:
:sob: :sob:
:scream: :scream:
:confounded: :confounded:
:persevere: :persevere:
:disappointed: :disappointed:
:sweat: :sweat:
:weary: :weary:
:tired_face: :tired_face:
:yawning_face: :yawning_face:
:triumph: :triumph:
:rage: :rage:
:pout: :pout:
:angry: :angry:
:cursing_face: :cursing_face:
:smiling_imp: :smiling_imp:
:imp: :imp:
:skull: :skull:
:skull_and_crossbones: :skull_and_crossbones:
:hankey: :hankey:
:poop: :poop:
:shit: :shit:
:clown_face: :clown_face:
:japanese_ogre: :japanese_ogre:
:japanese_goblin: :japanese_goblin:
:ghost: :ghost:
:alien: :alien:
:space_invader: :space_invader:
:robot: :robot:
:smiley_cat: :smiley_cat:
:smile_cat: :smile_cat:
:joy_cat: :joy_cat:
:heart_eyes_cat: :heart_eyes_cat:
:smirk_cat: :smirk_cat:
:kissing_cat: :kissing_cat:
:scream_cat: :scream_cat:
:crying_cat_face: :crying_cat_face:
:pouting_cat: :pouting_cat:
:see_no_evil: :see_no_evil:
:hear_no_evil: :hear_no_evil:
:speak_no_evil: :speak_no_evil:
:kiss: :kiss:
:love_letter: :love_letter:
:cupid: :cupid:
:gift_heart: :gift_heart:
:sparkling_heart: :sparkling_heart:
:heartpulse: :heartpulse:
:heartbeat: :heartbeat:
:revolving_hearts: :revolving_hearts:
:two_hearts: :two_hearts:
:heart_decoration: :heart_decoration:
:heavy_heart_exclamation: :heavy_heart_exclamation:
:broken_heart: :broken_heart:
:heart: :heart:
:orange_heart: :orange_heart:
:yellow_heart: :yellow_heart:
:green_heart: :green_heart:
:blue_heart: :blue_heart:
:purple_heart: :purple_heart:
:brown_heart: :brown_heart:
:black_heart: :black_heart:
:white_heart: :white_heart:
:anger: :anger:
:boom: :boom:
:collision: :collision:
:dizzy: :dizzy:
:sweat_drops: :sweat_drops:
:dash: :dash:
:hole: :hole:
:bomb: :bomb:
:speech_balloon: :speech_balloon:
:eye_speech_bubble: :eye_speech_bubble:
:left_speech_bubble: :left_speech_bubble:
:right_anger_bubble: :right_anger_bubble:
:thought_balloon: :thought_balloon:
:zzz: :zzz:
:wave: :wave:
:raised_back_of_hand: :raised_back_of_hand:
:raised_hand_with_fingers_splayed: :raised_hand_with_fingers_splayed:
:hand: :hand:
:raised_hand: :raised_hand:
:vulcan_salute: :vulcan_salute:
:ok_hand: :ok_hand:
:pinched_fingers: :pinched_fingers:
:pinching_hand: :pinching_hand:
:v: :v:
:crossed_fingers: :crossed_fingers:
:love_you_gesture: :love_you_gesture:
:metal: :metal:
:call_me_hand: :call_me_hand:
:point_left: :point_left:
:point_right: :point_right:
:point_up_2: :point_up_2:
:middle_finger: :middle_finger:
:fu: :fu:
:point_down: :point_down:
:point_up: :point_up:
:+1: :+1:
:thumbsup: :thumbsup:
:-1: :-1:
:thumbsdown: :thumbsdown:
:fist_raised: :fist_raised:
:fist: :fist:
:fist_oncoming: :fist_oncoming:
:facepunch: :facepunch:
:punch: :punch:
:fist_left: :fist_left:
:fist_right: :fist_right:
:clap: :clap:
:raised_hands: :raised_hands:
:open_hands: :open_hands:
:palms_up_together: :palms_up_together:
:handshake: :handshake:
:pray: :pray:
:writing_hand: :writing_hand:
:nail_care: :nail_care:
:selfie: :selfie:
:muscle: :muscle:
:mechanical_arm: :mechanical_arm:
:mechanical_leg: :mechanical_leg:
:leg: :leg:
:foot: :foot:
:ear: :ear:
:ear_with_hearing_aid: :ear_with_hearing_aid:
:nose: :nose:
:brain: :brain:
:anatomical_heart: :anatomical_heart:
:lungs: :lungs:
:tooth: :tooth:
:bone: :bone:
:eyes: :eyes:
:eye: :eye:
:tongue: :tongue:
:lips: :lips:
:baby: :baby:
:child: :child:
:boy: :boy:
:girl: :girl:
:adult: :adult:
:blond_haired_person: :blond_haired_person:
:man: :man:
:bearded_person: :bearded_person:
:red_haired_man: :red_haired_man:
:curly_haired_man: :curly_haired_man:
:white_haired_man: :white_haired_man:
:bald_man: :bald_man:
:woman: :woman:
:red_haired_woman: :red_haired_woman:
:person_red_hair: :person_red_hair:
:curly_haired_woman: :curly_haired_woman:
:person_curly_hair: :person_curly_hair:
:white_haired_woman: :white_haired_woman:
:person_white_hair: :person_white_hair:
:bald_woman: :bald_woman:
:person_bald: :person_bald:
:blond_haired_woman: :blond_haired_woman:
:blonde_woman: :blonde_woman:
:blond_haired_man: :blond_haired_man:
:older_adult: :older_adult:
:older_man: :older_man:
:older_woman: :older_woman:
:frowning_person: :frowning_person:
:frowning_man: :frowning_man:
:frowning_woman: :frowning_woman:
:pouting_face: :pouting_face:
:pouting_man: :pouting_man:
:pouting_woman: :pouting_woman:
:no_good: :no_good:
:no_good_man: :no_good_man:
:ng_man: :ng_man:
:no_good_woman: :no_good_woman:
:ng_woman: :ng_woman:
:ok_person: :ok_person:
:ok_man: :ok_man:
:ok_woman: :ok_woman:
:tipping_hand_person: :tipping_hand_person:
:information_desk_person: :information_desk_person:
:tipping_hand_man: :tipping_hand_man:
:sassy_man: :sassy_man:
:tipping_hand_woman: :tipping_hand_woman:
:sassy_woman: :sassy_woman:
:raising_hand: :raising_hand:
:raising_hand_man: :raising_hand_man:
:raising_hand_woman: :raising_hand_woman:
:deaf_person: :deaf_person:
:deaf_man: :deaf_man:
:deaf_woman: :deaf_woman:
:bow: :bow:
:bowing_man: :bowing_man:
:bowing_woman: :bowing_woman:
:facepalm: :facepalm:
:man_facepalming: :man_facepalming:
:woman_facepalming: :woman_facepalming:
:shrug: :shrug:
:man_shrugging: :man_shrugging:
:woman_shrugging: :woman_shrugging:
:health_worker: :health_worker:
:man_health_worker: :man_health_worker:
:woman_health_worker: :woman_health_worker:
:student: :student:
:man_student: :man_student:
:woman_student: :woman_student:
:teacher: :teacher:
:man_teacher: :man_teacher:
:woman_teacher: :woman_teacher:
:judge: :judge:
:man_judge: :man_judge:
:woman_judge: :woman_judge:
:farmer: :farmer:
:man_farmer: :man_farmer:
:woman_farmer: :woman_farmer:
:cook: :cook:
:man_cook: :man_cook:
:woman_cook: :woman_cook:
:mechanic: :mechanic:
:man_mechanic: :man_mechanic:
:woman_mechanic: :woman_mechanic:
:factory_worker: :factory_worker:
:man_factory_worker: :man_factory_worker:
:woman_factory_worker: :woman_factory_worker:
:office_worker: :office_worker:
:man_office_worker: :man_office_worker:
:woman_office_worker: :woman_office_worker:
:scientist: :scientist:
:man_scientist: :man_scientist:
:woman_scientist: :woman_scientist:
:technologist: :technologist:
:man_technologist: :man_technologist:
:woman_technologist: :woman_technologist:
:singer: :singer:
:man_singer: :man_singer:
:woman_singer: :woman_singer:
:artist: :artist:
:man_artist: :man_artist:
:woman_artist: :woman_artist:
:pilot: :pilot:
:man_pilot: :man_pilot:
:woman_pilot: :woman_pilot:
:astronaut: :astronaut:
:man_astronaut: :man_astronaut:
:woman_astronaut: :woman_astronaut:
:firefighter: :firefighter:
:man_firefighter: :man_firefighter:
:woman_firefighter: :woman_firefighter:
:police_officer: :police_officer:
:cop: :cop:
:policeman: :policeman:
:policewoman: :policewoman:
:detective: :detective:
:male_detective: :male_detective:
:female_detective: :female_detective:
:guard: :guard:
:guardsman: :guardsman:
:guardswoman: :guardswoman:
:ninja: :ninja:
:construction_worker: :construction_worker:
:construction_worker_man: :construction_worker_man:
:construction_worker_woman: :construction_worker_woman:
:prince: :prince:
:princess: :princess:
:person_with_turban: :person_with_turban:
:man_with_turban: :man_with_turban:
:woman_with_turban: :woman_with_turban:
:man_with_gua_pi_mao: :man_with_gua_pi_mao:
:woman_with_headscarf: :woman_with_headscarf:
:person_in_tuxedo: :person_in_tuxedo:
:man_in_tuxedo: :man_in_tuxedo:
:woman_in_tuxedo: :woman_in_tuxedo:
:person_with_veil: :person_with_veil:
:man_with_veil: :man_with_veil:
:woman_with_veil: :woman_with_veil:
:bride_with_veil: :bride_with_veil:
:pregnant_woman: :pregnant_woman:
:breast_feeding: :breast_feeding:
:woman_feeding_baby: :woman_feeding_baby:
:man_feeding_baby: :man_feeding_baby:
:person_feeding_baby: :person_feeding_baby:
:angel: :angel:
:santa: :santa:
:mrs_claus: :mrs_claus:
:mx_claus: :mx_claus:
:superhero: :superhero:
:superhero_man: :superhero_man:
:superhero_woman: :superhero_woman:
:supervillain: :supervillain:
:supervillain_man: :supervillain_man:
:supervillain_woman: :supervillain_woman:
:mage: :mage:
:mage_man: :mage_man:
:mage_woman: :mage_woman:
:fairy: :fairy:
:fairy_man: :fairy_man:
:fairy_woman: :fairy_woman:
:vampire: :vampire:
:vampire_man: :vampire_man:
:vampire_woman: :vampire_woman:
:merperson: :merperson:
:merman: :merman:
:mermaid: :mermaid:
:elf: :elf:
:elf_man: :elf_man:
:elf_woman: :elf_woman:
:genie: :genie:
:genie_man: :genie_man:
:genie_woman: :genie_woman:
:zombie: :zombie:
:zombie_man: :zombie_man:
:zombie_woman: :zombie_woman:
:massage: :massage:
:massage_man: :massage_man:
:massage_woman: :massage_woman:
:haircut: :haircut:
:haircut_man: :haircut_man:
:haircut_woman: :haircut_woman:
:walking: :walking:
:walking_man: :walking_man:
:walking_woman: :walking_woman:
:standing_person: :standing_person:
:standing_man: :standing_man:
:standing_woman: :standing_woman:
:kneeling_person: :kneeling_person:
:kneeling_man: :kneeling_man:
:kneeling_woman: :kneeling_woman:
:person_with_probing_cane: :person_with_probing_cane:
:man_with_probing_cane: :man_with_probing_cane:
:woman_with_probing_cane: :woman_with_probing_cane:
:person_in_motorized_wheelchair: :person_in_motorized_wheelchair:
:man_in_motorized_wheelchair: :man_in_motorized_wheelchair:
:woman_in_motorized_wheelchair: :woman_in_motorized_wheelchair:
:person_in_manual_wheelchair: :person_in_manual_wheelchair:
:man_in_manual_wheelchair: :man_in_manual_wheelchair:
:woman_in_manual_wheelchair: :woman_in_manual_wheelchair:
:runner: :runner:
:running: :running:
:running_man: :running_man:
:running_woman: :running_woman:
:woman_dancing: :woman_dancing:
:dancer: :dancer:
:man_dancing: :man_dancing:
:business_suit_levitating: :business_suit_levitating:
:dancers: :dancers:
:dancing_men: :dancing_men:
:dancing_women: :dancing_women:
:sauna_person: :sauna_person:
:sauna_man: :sauna_man:
:sauna_woman: :sauna_woman:
:climbing: :climbing:
:climbing_man: :climbing_man:
:climbing_woman: :climbing_woman:
:person_fencing: :person_fencing:
:horse_racing: :horse_racing:
:skier: :skier:
:snowboarder: :snowboarder:
:golfing: :golfing:
:golfing_man: :golfing_man:
:golfing_woman: :golfing_woman:
:surfer: :surfer:
:surfing_man: :surfing_man:
:surfing_woman: :surfing_woman:
:rowboat: :rowboat:
:rowing_man: :rowing_man:
:rowing_woman: :rowing_woman:
:swimmer: :swimmer:
:swimming_man: :swimming_man:
:swimming_woman: :swimming_woman:
:bouncing_ball_person: :bouncing_ball_person:
:bouncing_ball_man: :bouncing_ball_man:
:basketball_man: :basketball_man:
:bouncing_ball_woman: :bouncing_ball_woman:
:basketball_woman: :basketball_woman:
:weight_lifting: :weight_lifting:
:weight_lifting_man: :weight_lifting_man:
:weight_lifting_woman: :weight_lifting_woman:
:bicyclist: :bicyclist:
:biking_man: :biking_man:
:biking_woman: :biking_woman:
:mountain_bicyclist: :mountain_bicyclist:
:mountain_biking_man: :mountain_biking_man:
:mountain_biking_woman: :mountain_biking_woman:
:cartwheeling: :cartwheeling:
:man_cartwheeling: :man_cartwheeling:
:woman_cartwheeling: :woman_cartwheeling:
:wrestling: :wrestling:
:men_wrestling: :men_wrestling:
:women_wrestling: :women_wrestling:
:water_polo: :water_polo:
:man_playing_water_polo: :man_playing_water_polo:
:woman_playing_water_polo: :woman_playing_water_polo:
:handball_person: :handball_person:
:man_playing_handball: :man_playing_handball:
:woman_playing_handball: :woman_playing_handball:
:juggling_person: :juggling_person:
:man_juggling: :man_juggling:
:woman_juggling: :woman_juggling:
:lotus_position: :lotus_position:
:lotus_position_man: :lotus_position_man:
:lotus_position_woman: :lotus_position_woman:
:bath: :bath:
:sleeping_bed: :sleeping_bed:
:people_holding_hands: :people_holding_hands:
:two_women_holding_hands: :two_women_holding_hands:
:couple: :couple:
:two_men_holding_hands: :two_men_holding_hands:
:couplekiss: :couplekiss:
:couplekiss_man_woman: :couplekiss_man_woman:
:couplekiss_man_man: :couplekiss_man_man:
:couplekiss_woman_woman: :couplekiss_woman_woman:
:couple_with_heart: :couple_with_heart:
:couple_with_heart_woman_man: :couple_with_heart_woman_man:
:couple_with_heart_man_man: :couple_with_heart_man_man:
:couple_with_heart_woman_woman: :couple_with_heart_woman_woman:
:family: :family:
:family_man_woman_boy: :family_man_woman_boy:
:family_man_woman_girl: :family_man_woman_girl:
:family_man_woman_girl_boy: :family_man_woman_girl_boy:
:family_man_woman_boy_boy: :family_man_woman_boy_boy:
:family_man_woman_girl_girl: :family_man_woman_girl_girl:
:family_man_man_boy: :family_man_man_boy:
:family_man_man_girl: :family_man_man_girl:
:family_man_man_girl_boy: :family_man_man_girl_boy:
:family_man_man_boy_boy: :family_man_man_boy_boy:
:family_man_man_girl_girl: :family_man_man_girl_girl:
:family_woman_woman_boy: :family_woman_woman_boy:
:family_woman_woman_girl: :family_woman_woman_girl:
:family_woman_woman_girl_boy: :family_woman_woman_girl_boy:
:family_woman_woman_boy_boy: :family_woman_woman_boy_boy:
:family_woman_woman_girl_girl: :family_woman_woman_girl_girl:
:family_man_boy: :family_man_boy:
:family_man_boy_boy: :family_man_boy_boy:
:family_man_girl: :family_man_girl:
:family_man_girl_boy: :family_man_girl_boy:
:family_man_girl_girl: :family_man_girl_girl:
:family_woman_boy: :family_woman_boy:
:family_woman_boy_boy: :family_woman_boy_boy:
:family_woman_girl: :family_woman_girl:
:family_woman_girl_boy: :family_woman_girl_boy:
:family_woman_girl_girl: :family_woman_girl_girl:
:speaking_head: :speaking_head:
:bust_in_silhouette: :bust_in_silhouette:
:busts_in_silhouette: :busts_in_silhouette:
:people_hugging: :people_hugging:
:footprints: :footprints:
:monkey_face: :monkey_face:
:monkey: :monkey:
:gorilla: :gorilla:
:orangutan: :orangutan:
:dog: :dog:
:dog2: :dog2:
:guide_dog: :guide_dog:
:service_dog: :service_dog:
:poodle: :poodle:
:wolf: :wolf:
:fox_face: :fox_face:
:raccoon: :raccoon:
:cat: :cat:
:cat2: :cat2:
:black_cat: :black_cat:
:lion: :lion:
:tiger: :tiger:
:tiger2: :tiger2:
:leopard: :leopard:
:horse: :horse:
:racehorse: :racehorse:
:unicorn: :unicorn:
:zebra: :zebra:
:deer: :deer:
:bison: :bison:
:cow: :cow:
:ox: :ox:
:water_buffalo: :water_buffalo:
:cow2: :cow2:
:pig: :pig:
:pig2: :pig2:
:boar: :boar:
:pig_nose: :pig_nose:
:ram: :ram:
:sheep: :sheep:
:goat: :goat:
:dromedary_camel: :dromedary_camel:
:camel: :camel:
:llama: :llama:
:giraffe: :giraffe:
:elephant: :elephant:
:mammoth: :mammoth:
:rhinoceros: :rhinoceros:
:hippopotamus: :hippopotamus:
:mouse: :mouse:
:mouse2: :mouse2:
:rat: :rat:
:hamster: :hamster:
:rabbit: :rabbit:
:rabbit2: :rabbit2:
:chipmunk: :chipmunk:
:beaver: :beaver:
:hedgehog: :hedgehog:
:bat: :bat:
:bear: :bear:
:polar_bear: :polar_bear:
:koala: :koala:
:panda_face: :panda_face:
:sloth: :sloth:
:otter: :otter:
:skunk: :skunk:
:kangaroo: :kangaroo:
:badger: :badger:
:feet: :feet:
:paw_prints: :paw_prints:
:turkey: :turkey:
:chicken: :chicken:
:rooster: :rooster:
:hatching_chick: :hatching_chick:
:baby_chick: :baby_chick:
:hatched_chick: :hatched_chick:
:bird: :bird:
:penguin: :penguin:
:dove: :dove:
:eagle: :eagle:
:duck: :duck:
:swan: :swan:
:owl: :owl:
:dodo: :dodo:
:feather: :feather:
:flamingo: :flamingo:
:peacock: :peacock:
:parrot: :parrot:
:frog: :frog:
:crocodile: :crocodile:
:turtle: :turtle:
:lizard: :lizard:
:snake: :snake:
:dragon_face: :dragon_face:
:dragon: :dragon:
:sauropod: :sauropod:
:t-rex: :t-rex:
:whale: :whale:
:whale2: :whale2:
:dolphin: :dolphin:
:flipper: :flipper:
:seal: :seal:
:fish: :fish:
:tropical_fish: :tropical_fish:
:blowfish: :blowfish:
:shark: :shark:
:octopus: :octopus:
:shell: :shell:
:snail: :snail:
:butterfly: :butterfly:
:bug: :bug:
:ant: :ant:
:bee: :bee:
:honeybee: :honeybee:
:beetle: :beetle:
:lady_beetle: :lady_beetle:
:cricket: :cricket:
:cockroach: :cockroach:
:spider: :spider:
:spider_web: :spider_web:
:scorpion: :scorpion:
:mosquito: :mosquito:
:fly: :fly:
:worm: :worm:
:microbe: :microbe:
:bouquet: :bouquet:
:cherry_blossom: :cherry_blossom:
:white_flower: :white_flower:
:rosette: :rosette:
:rose: :rose:
:wilted_flower: :wilted_flower:
:hibiscus: :hibiscus:
:sunflower: :sunflower:
:blossom: :blossom:
:tulip: :tulip:
:seedling: :seedling:
:potted_plant: :potted_plant:
:evergreen_tree: :evergreen_tree:
:deciduous_tree: :deciduous_tree:
:palm_tree: :palm_tree:
:cactus: :cactus:
:ear_of_rice: :ear_of_rice:
:herb: :herb:
:shamrock: :shamrock:
:four_leaf_clover: :four_leaf_clover:
:maple_leaf: :maple_leaf:
:fallen_leaf: :fallen_leaf:
:leaves: :leaves:
:grapes: :grapes:
:melon: :melon:
:watermelon: :watermelon:
:tangerine: :tangerine:
:orange: :orange:
:mandarin: :mandarin:
:lemon: :lemon:
:banana: :banana:
:pineapple: :pineapple:
:mango: :mango:
:apple: :apple:
:green_apple: :green_apple:
:pear: :pear:
:peach: :peach:
:cherries: :cherries:
:strawberry: :strawberry:
:blueberries: :blueberries:
:kiwi_fruit: :kiwi_fruit:
:tomato: :tomato:
:olive: :olive:
:coconut: :coconut:
:avocado: :avocado:
:eggplant: :eggplant:
:potato: :potato:
:carrot: :carrot:
:corn: :corn:
:hot_pepper: :hot_pepper:
:bell_pepper: :bell_pepper:
:cucumber: :cucumber:
:leafy_green: :leafy_green:
:broccoli: :broccoli:
:garlic: :garlic:
:onion: :onion:
:mushroom: :mushroom:
:peanuts: :peanuts:
:chestnut: :chestnut:
:bread: :bread:
:croissant: :croissant:
:baguette_bread: :baguette_bread:
:flatbread: :flatbread:
:pretzel: :pretzel:
:bagel: :bagel:
:pancakes: :pancakes:
:waffle: :waffle:
:cheese: :cheese:
:meat_on_bone: :meat_on_bone:
:poultry_leg: :poultry_leg:
:cut_of_meat: :cut_of_meat:
:bacon: :bacon:
:hamburger: :hamburger:
:fries: :fries:
:pizza: :pizza:
:hotdog: :hotdog:
:sandwich: :sandwich:
:taco: :taco:
:burrito: :burrito:
:tamale: :tamale:
:stuffed_flatbread: :stuffed_flatbread:
:falafel: :falafel:
:egg: :egg:
:fried_egg: :fried_egg:
:shallow_pan_of_food: :shallow_pan_of_food:
:stew: :stew:
:fondue: :fondue:
:bowl_with_spoon: :bowl_with_spoon:
:green_salad: :green_salad:
:popcorn: :popcorn:
:butter: :butter:
:salt: :salt:
:canned_food: :canned_food:
:bento: :bento:
:rice_cracker: :rice_cracker:
:rice_ball: :rice_ball:
:rice: :rice:
:curry: :curry:
:ramen: :ramen:
:spaghetti: :spaghetti:
:sweet_potato: :sweet_potato:
:oden: :oden:
:sushi: :sushi:
:fried_shrimp: :fried_shrimp:
:fish_cake: :fish_cake:
:moon_cake: :moon_cake:
:dango: :dango:
:dumpling: :dumpling:
:fortune_cookie: :fortune_cookie:
:takeout_box: :takeout_box:
:crab: :crab:
:lobster: :lobster:
:shrimp: :shrimp:
:squid: :squid:
:oyster: :oyster:
:icecream: :icecream:
:shaved_ice: :shaved_ice:
:ice_cream: :ice_cream:
:doughnut: :doughnut:
:cookie: :cookie:
:birthday: :birthday:
:cake: :cake:
:cupcake: :cupcake:
:pie: :pie:
:chocolate_bar: :chocolate_bar:
:candy: :candy:
:lollipop: :lollipop:
:custard: :custard:
:honey_pot: :honey_pot:
:baby_bottle: :baby_bottle:
:milk_glass: :milk_glass:
:coffee: :coffee:
:teapot: :teapot:
:tea: :tea:
:sake: :sake:
:champagne: :champagne:
:wine_glass: :wine_glass:
:cocktail: :cocktail:
:tropical_drink: :tropical_drink:
:beer: :beer:
:beers: :beers:
:clinking_glasses: :clinking_glasses:
:tumbler_glass: :tumbler_glass:
:cup_with_straw: :cup_with_straw:
:bubble_tea: :bubble_tea:
:beverage_box: :beverage_box:
:mate: :mate:
:ice_cube: :ice_cube:
:chopsticks: :chopsticks:
:plate_with_cutlery: :plate_with_cutlery:
:fork_and_knife: :fork_and_knife:
:spoon: :spoon:
:hocho: :hocho:
:knife: :knife:
:amphora: :amphora:
:earth_africa: :earth_africa:
:earth_americas: :earth_americas:
:earth_asia: :earth_asia:
:globe_with_meridians: :globe_with_meridians:
:world_map: :world_map:
:japan: :japan:
:compass: :compass:
:mountain_snow: :mountain_snow:
:mountain: :mountain:
:volcano: :volcano:
:mount_fuji: :mount_fuji:
:camping: :camping:
:beach_umbrella: :beach_umbrella:
:desert: :desert:
:desert_island: :desert_island:
:national_park: :national_park:
:stadium: :stadium:
:classical_building: :classical_building:
:building_construction: :building_construction:
:bricks: :bricks:
:rock: :rock:
:wood: :wood:
:hut: :hut:
:houses: :houses:
:derelict_house: :derelict_house:
:house: :house:
:house_with_garden: :house_with_garden:
:office: :office:
:post_office: :post_office:
:european_post_office: :european_post_office:
:hospital: :hospital:
:bank: :bank:
:hotel: :hotel:
:love_hotel: :love_hotel:
:convenience_store: :convenience_store:
:school: :school:
:department_store: :department_store:
:factory: :factory:
:japanese_castle: :japanese_castle:
:european_castle: :european_castle:
:wedding: :wedding:
:tokyo_tower: :tokyo_tower:
:statue_of_liberty: :statue_of_liberty:
:church: :church:
:mosque: :mosque:
:hindu_temple: :hindu_temple:
:synagogue: :synagogue:
:shinto_shrine: :shinto_shrine:
:kaaba: :kaaba:
:fountain: :fountain:
:tent: :tent:
:foggy: :foggy:
:night_with_stars: :night_with_stars:
:cityscape: :cityscape:
:sunrise_over_mountains: :sunrise_over_mountains:
:sunrise: :sunrise:
:city_sunset: :city_sunset:
:city_sunrise: :city_sunrise:
:bridge_at_night: :bridge_at_night:
:hotsprings: :hotsprings:
:carousel_horse: :carousel_horse:
:ferris_wheel: :ferris_wheel:
:roller_coaster: :roller_coaster:
:barber: :barber:
:circus_tent: :circus_tent:
:steam_locomotive: :steam_locomotive:
:railway_car: :railway_car:
:bullettrain_side: :bullettrain_side:
:bullettrain_front: :bullettrain_front:
:train2: :train2:
:metro: :metro:
:light_rail: :light_rail:
:station: :station:
:tram: :tram:
:monorail: :monorail:
:mountain_railway: :mountain_railway:
:train: :train:
:bus: :bus:
:oncoming_bus: :oncoming_bus:
:trolleybus: :trolleybus:
:minibus: :minibus:
:ambulance: :ambulance:
:fire_engine: :fire_engine:
:police_car: :police_car:
:oncoming_police_car: :oncoming_police_car:
:taxi: :taxi:
:oncoming_taxi: :oncoming_taxi:
:car: :car:
:red_car: :red_car:
:oncoming_automobile: :oncoming_automobile:
:blue_car: :blue_car:
:pickup_truck: :pickup_truck:
:truck: :truck:
:articulated_lorry: :articulated_lorry:
:tractor: :tractor:
:racing_car: :racing_car:
:motorcycle: :motorcycle:
:motor_scooter: :motor_scooter:
:manual_wheelchair: :manual_wheelchair:
:motorized_wheelchair: :motorized_wheelchair:
:auto_rickshaw: :auto_rickshaw:
:bike: :bike:
:kick_scooter: :kick_scooter:
:skateboard: :skateboard:
:roller_skate: :roller_skate:
:busstop: :busstop:
:motorway: :motorway:
:railway_track: :railway_track:
:oil_drum: :oil_drum:
:fuelpump: :fuelpump:
:rotating_light: :rotating_light:
:traffic_light: :traffic_light:
:vertical_traffic_light: :vertical_traffic_light:
:stop_sign: :stop_sign:
:construction: :construction:
:anchor: :anchor:
:boat: :boat:
:sailboat: :sailboat:
:canoe: :canoe:
:speedboat: :speedboat:
:passenger_ship: :passenger_ship:
:ferry: :ferry:
:motor_boat: :motor_boat:
:ship: :ship:
:airplane: :airplane:
:small_airplane: :small_airplane:
:flight_departure: :flight_departure:
:flight_arrival: :flight_arrival:
:parachute: :parachute:
:seat: :seat:
:helicopter: :helicopter:
:suspension_railway: :suspension_railway:
:mountain_cableway: :mountain_cableway:
:aerial_tramway: :aerial_tramway:
:artificial_satellite: :artificial_satellite:
:rocket: :rocket:
:flying_saucer: :flying_saucer:
:bellhop_bell: :bellhop_bell:
:luggage: :luggage:
:hourglass: :hourglass:
:hourglass_flowing_sand: :hourglass_flowing_sand:
:watch: :watch:
:alarm_clock: :alarm_clock:
:stopwatch: :stopwatch:
:timer_clock: :timer_clock:
:mantelpiece_clock: :mantelpiece_clock:
:clock12: :clock12:
:clock1230: :clock1230:
:clock1: :clock1:
:clock130: :clock130:
:clock2: :clock2:
:clock230: :clock230:
:clock3: :clock3:
:clock330: :clock330:
:clock4: :clock4:
:clock430: :clock430:
:clock5: :clock5:
:clock530: :clock530:
:clock6: :clock6:
:clock630: :clock630:
:clock7: :clock7:
:clock730: :clock730:
:clock8: :clock8:
:clock830: :clock830:
:clock9: :clock9:
:clock930: :clock930:
:clock10: :clock10:
:clock1030: :clock1030:
:clock11: :clock11:
:clock1130: :clock1130:
:new_moon: :new_moon:
:waxing_crescent_moon: :waxing_crescent_moon:
:first_quarter_moon: :first_quarter_moon:
:moon: :moon:
:waxing_gibbous_moon: :waxing_gibbous_moon:
:full_moon: :full_moon:
:waning_gibbous_moon: :waning_gibbous_moon:
:last_quarter_moon: :last_quarter_moon:
:waning_crescent_moon: :waning_crescent_moon:
:crescent_moon: :crescent_moon:
:new_moon_with_face: :new_moon_with_face:
:first_quarter_moon_with_face: :first_quarter_moon_with_face:
:last_quarter_moon_with_face: :last_quarter_moon_with_face:
:thermometer: :thermometer:
:sunny: :sunny:
:full_moon_with_face: :full_moon_with_face:
:sun_with_face: :sun_with_face:
:ringed_planet: :ringed_planet:
:star: :star:
:star2: :star2:
:stars: :stars:
:milky_way: :milky_way:
:cloud: :cloud:
:partly_sunny: :partly_sunny:
:cloud_with_lightning_and_rain: :cloud_with_lightning_and_rain:
:sun_behind_small_cloud: :sun_behind_small_cloud:
:sun_behind_large_cloud: :sun_behind_large_cloud:
:sun_behind_rain_cloud: :sun_behind_rain_cloud:
:cloud_with_rain: :cloud_with_rain:
:cloud_with_snow: :cloud_with_snow:
:cloud_with_lightning: :cloud_with_lightning:
:tornado: :tornado:
:fog: :fog:
:wind_face: :wind_face:
:cyclone: :cyclone:
:rainbow: :rainbow:
:closed_umbrella: :closed_umbrella:
:open_umbrella: :open_umbrella:
:umbrella: :umbrella:
:parasol_on_ground: :parasol_on_ground:
:zap: :zap:
:snowflake: :snowflake:
:snowman_with_snow: :snowman_with_snow:
:snowman: :snowman:
:comet: :comet:
:fire: :fire:
:droplet: :droplet:
:ocean: :ocean:
:jack_o_lantern: :jack_o_lantern:
:christmas_tree: :christmas_tree:
:fireworks: :fireworks:
:sparkler: :sparkler:
:firecracker: :firecracker:
:sparkles: :sparkles:
:balloon: :balloon:
:tada: :tada:
:confetti_ball: :confetti_ball:
:tanabata_tree: :tanabata_tree:
:bamboo: :bamboo:
:dolls: :dolls:
:flags: :flags:
:wind_chime: :wind_chime:
:rice_scene: :rice_scene:
:red_envelope: :red_envelope:
:ribbon: :ribbon:
:gift: :gift:
:reminder_ribbon: :reminder_ribbon:
:tickets: :tickets:
:ticket: :ticket:
:medal_military: :medal_military:
:trophy: :trophy:
:medal_sports: :medal_sports:
:1st_place_medal: :1st_place_medal:
:2nd_place_medal: :2nd_place_medal:
:3rd_place_medal: :3rd_place_medal:
:soccer: :soccer:
:baseball: :baseball:
:softball: :softball:
:basketball: :basketball:
:volleyball: :volleyball:
:football: :football:
:rugby_football: :rugby_football:
:tennis: :tennis:
:flying_disc: :flying_disc:
:bowling: :bowling:
:cricket_game: :cricket_game:
:field_hockey: :field_hockey:
:ice_hockey: :ice_hockey:
:lacrosse: :lacrosse:
:ping_pong: :ping_pong:
:badminton: :badminton:
:boxing_glove: :boxing_glove:
:martial_arts_uniform: :martial_arts_uniform:
:goal_net: :goal_net:
:golf: :golf:
:ice_skate: :ice_skate:
:fishing_pole_and_fish: :fishing_pole_and_fish:
:diving_mask: :diving_mask:
:running_shirt_with_sash: :running_shirt_with_sash:
:ski: :ski:
:sled: :sled:
:curling_stone: :curling_stone:
:dart: :dart:
:yo_yo: :yo_yo:
:kite: :kite:
:8ball: :8ball:
:crystal_ball: :crystal_ball:
:magic_wand: :magic_wand:
:nazar_amulet: :nazar_amulet:
:video_game: :video_game:
:joystick: :joystick:
:slot_machine: :slot_machine:
:game_die: :game_die:
:jigsaw: :jigsaw:
:teddy_bear: :teddy_bear:
:pinata: :pinata:
:nesting_dolls: :nesting_dolls:
:spades: :spades:
:hearts: :hearts:
:diamonds: :diamonds:
:clubs: :clubs:
:chess_pawn: :chess_pawn:
:black_joker: :black_joker:
:mahjong: :mahjong:
:flower_playing_cards: :flower_playing_cards:
:performing_arts: :performing_arts:
:framed_picture: :framed_picture:
:art: :art:
:thread: :thread:
:sewing_needle: :sewing_needle:
:yarn: :yarn:
:knot: :knot:
:eyeglasses: :eyeglasses:
:dark_sunglasses: :dark_sunglasses:
:goggles: :goggles:
:lab_coat: :lab_coat:
:safety_vest: :safety_vest:
:necktie: :necktie:
:shirt: :shirt:
:tshirt: :tshirt:
:jeans: :jeans:
:scarf: :scarf:
:gloves: :gloves:
:coat: :coat:
:socks: :socks:
:dress: :dress:
:kimono: :kimono:
:sari: :sari:
:one_piece_swimsuit: :one_piece_swimsuit:
:swim_brief: :swim_brief:
:shorts: :shorts:
:bikini: :bikini:
:womans_clothes: :womans_clothes:
:purse: :purse:
:handbag: :handbag:
:pouch: :pouch:
:shopping: :shopping:
:school_satchel: :school_satchel:
:thong_sandal: :thong_sandal:
:mans_shoe: :mans_shoe:
:shoe: :shoe:
:athletic_shoe: :athletic_shoe:
:hiking_boot: :hiking_boot:
:flat_shoe: :flat_shoe:
:high_heel: :high_heel:
:sandal: :sandal:
:ballet_shoes: :ballet_shoes:
:boot: :boot:
:crown: :crown:
:womans_hat: :womans_hat:
:tophat: :tophat:
:mortar_board: :mortar_board:
:billed_cap: :billed_cap:
:military_helmet: :military_helmet:
:rescue_worker_helmet: :rescue_worker_helmet:
:prayer_beads: :prayer_beads:
:lipstick: :lipstick:
:ring: :ring:
:gem: :gem:
:mute: :mute:
:speaker: :speaker:
:sound: :sound:
:loud_sound: :loud_sound:
:loudspeaker: :loudspeaker:
:mega: :mega:
:postal_horn: :postal_horn:
:bell: :bell:
:no_bell: :no_bell:
:musical_score: :musical_score:
:musical_note: :musical_note:
:notes: :notes:
:studio_microphone: :studio_microphone:
:level_slider: :level_slider:
:control_knobs: :control_knobs:
:microphone: :microphone:
:headphones: :headphones:
:radio: :radio:
:saxophone: :saxophone:
:accordion: :accordion:
:guitar: :guitar:
:musical_keyboard: :musical_keyboard:
:trumpet: :trumpet:
:violin: :violin:
:banjo: :banjo:
:drum: :drum:
:long_drum: :long_drum:
:iphone: :iphone:
:calling: :calling:
:phone: :phone:
:telephone: :telephone:
:telephone_receiver: :telephone_receiver:
:pager: :pager:
:fax: :fax:
:battery: :battery:
:electric_plug: :electric_plug:
:computer: :computer:
:desktop_computer: :desktop_computer:
:printer: :printer:
:keyboard: :keyboard:
:computer_mouse: :computer_mouse:
:trackball: :trackball:
:minidisc: :minidisc:
:floppy_disk: :floppy_disk:
:cd: :cd:
:dvd: :dvd:
:abacus: :abacus:
:movie_camera: :movie_camera:
:film_strip: :film_strip:
:film_projector: :film_projector:
:clapper: :clapper:
:tv: :tv:
:camera: :camera:
:camera_flash: :camera_flash:
:video_camera: :video_camera:
:vhs: :vhs:
:mag: :mag:
:mag_right: :mag_right:
:candle: :candle:
:bulb: :bulb:
:flashlight: :flashlight:
:izakaya_lantern: :izakaya_lantern:
:lantern: :lantern:
:diya_lamp: :diya_lamp:
:notebook_with_decorative_cover: :notebook_with_decorative_cover:
:closed_book: :closed_book:
:book: :book:
:open_book: :open_book:
:green_book: :green_book:
:blue_book: :blue_book:
:orange_book: :orange_book:
:books: :books:
:notebook: :notebook:
:ledger: :ledger:
:page_with_curl: :page_with_curl:
:scroll: :scroll:
:page_facing_up: :page_facing_up:
:newspaper: :newspaper:
:newspaper_roll: :newspaper_roll:
:bookmark_tabs: :bookmark_tabs:
:bookmark: :bookmark:
:label: :label:
:moneybag: :moneybag:
:coin: :coin:
:yen: :yen:
:dollar: :dollar:
:euro: :euro:
:pound: :pound:
:money_with_wings: :money_with_wings:
:credit_card: :credit_card:
:receipt: :receipt:
:chart: :chart:
:envelope: :envelope:
:email: :email:
:e-mail: :e-mail:
:incoming_envelope: :incoming_envelope:
:envelope_with_arrow: :envelope_with_arrow:
:outbox_tray: :outbox_tray:
:inbox_tray: :inbox_tray:
:package: :package:
:mailbox: :mailbox:
:mailbox_closed: :mailbox_closed:
:mailbox_with_mail: :mailbox_with_mail:
:mailbox_with_no_mail: :mailbox_with_no_mail:
:postbox: :postbox:
:ballot_box: :ballot_box:
:pencil2: :pencil2:
:black_nib: :black_nib:
:fountain_pen: :fountain_pen:
:pen: :pen:
:paintbrush: :paintbrush:
:crayon: :crayon:
:memo: :memo:
:pencil: :pencil:
:briefcase: :briefcase:
:file_folder: :file_folder:
:open_file_folder: :open_file_folder:
:card_index_dividers: :card_index_dividers:
:date: :date:
:calendar: :calendar:
:spiral_notepad: :spiral_notepad:
:spiral_calendar: :spiral_calendar:
:card_index: :card_index:
:chart_with_upwards_trend: :chart_with_upwards_trend:
:chart_with_downwards_trend: :chart_with_downwards_trend:
:bar_chart: :bar_chart:
:clipboard: :clipboard:
:pushpin: :pushpin:
:round_pushpin: :round_pushpin:
:paperclip: :paperclip:
:paperclips: :paperclips:
:straight_ruler: :straight_ruler:
:triangular_ruler: :triangular_ruler:
:scissors: :scissors:
:card_file_box: :card_file_box:
:file_cabinet: :file_cabinet:
:wastebasket: :wastebasket:
:lock: :lock:
:unlock: :unlock:
:lock_with_ink_pen: :lock_with_ink_pen:
:closed_lock_with_key: :closed_lock_with_key:
:key: :key:
:old_key: :old_key:
:hammer: :hammer:
:axe: :axe:
:pick: :pick:
:hammer_and_pick: :hammer_and_pick:
:hammer_and_wrench: :hammer_and_wrench:
:dagger: :dagger:
:crossed_swords: :crossed_swords:
:gun: :gun:
:boomerang: :boomerang:
:bow_and_arrow: :bow_and_arrow:
:shield: :shield:
:carpentry_saw: :carpentry_saw:
:wrench: :wrench:
:screwdriver: :screwdriver:
:nut_and_bolt: :nut_and_bolt:
:gear: :gear:
:clamp: :clamp:
:balance_scale: :balance_scale:
:probing_cane: :probing_cane:
:link: :link:
:chains: :chains:
:hook: :hook:
:toolbox: :toolbox:
:magnet: :magnet:
:ladder: :ladder:
:alembic: :alembic:
:test_tube: :test_tube:
:petri_dish: :petri_dish:
:dna: :dna:
:microscope: :microscope:
:telescope: :telescope:
:satellite: :satellite:
:syringe: :syringe:
:drop_of_blood: :drop_of_blood:
:pill: :pill:
:adhesive_bandage: :adhesive_bandage:
:stethoscope: :stethoscope:
:door: :door:
:elevator: :elevator:
:mirror: :mirror:
:window: :window:
:bed: :bed:
:couch_and_lamp: :couch_and_lamp:
:chair: :chair:
:toilet: :toilet:
:plunger: :plunger:
:shower: :shower:
:bathtub: :bathtub:
:mouse_trap: :mouse_trap:
:razor: :razor:
:lotion_bottle: :lotion_bottle:
:safety_pin: :safety_pin:
:broom: :broom:
:basket: :basket:
:roll_of_paper: :roll_of_paper:
:bucket: :bucket:
:soap: :soap:
:toothbrush: :toothbrush:
:sponge: :sponge:
:fire_extinguisher: :fire_extinguisher:
:shopping_cart: :shopping_cart:
:smoking: :smoking:
:coffin: :coffin:
:headstone: :headstone:
:funeral_urn: :funeral_urn:
:moyai: :moyai:
:placard: :placard:
:atm: :atm:
:put_litter_in_its_place: :put_litter_in_its_place:
:potable_water: :potable_water:
:wheelchair: :wheelchair:
:mens: :mens:
:womens: :womens:
:restroom: :restroom:
:baby_symbol: :baby_symbol:
:wc: :wc:
:passport_control: :passport_control:
:customs: :customs:
:baggage_claim: :baggage_claim:
:left_luggage: :left_luggage:
:warning: :warning:
:children_crossing: :children_crossing:
:no_entry: :no_entry:
:no_entry_sign: :no_entry_sign:
:no_bicycles: :no_bicycles:
:no_smoking: :no_smoking:
:do_not_litter: :do_not_litter:
:non-potable_water: :non-potable_water:
:no_pedestrians: :no_pedestrians:
:no_mobile_phones: :no_mobile_phones:
:underage: :underage:
:radioactive: :radioactive:
:biohazard: :biohazard:
:arrow_up: :arrow_up:
:arrow_upper_right: :arrow_upper_right:
:arrow_right: :arrow_right:
:arrow_lower_right: :arrow_lower_right:
:arrow_down: :arrow_down:
:arrow_lower_left: :arrow_lower_left:
:arrow_left: :arrow_left:
:arrow_upper_left: :arrow_upper_left:
:arrow_up_down: :arrow_up_down:
:left_right_arrow: :left_right_arrow:
:leftwards_arrow_with_hook: :leftwards_arrow_with_hook:
:arrow_right_hook: :arrow_right_hook:
:arrow_heading_up: :arrow_heading_up:
:arrow_heading_down: :arrow_heading_down:
:arrows_clockwise: :arrows_clockwise:
:arrows_counterclockwise: :arrows_counterclockwise:
:back: :back:
:end: :end:
:on: :on:
:soon: :soon:
:top: :top:
:place_of_worship: :place_of_worship:
:atom_symbol: :atom_symbol:
:om: :om:
:star_of_david: :star_of_david:
:wheel_of_dharma: :wheel_of_dharma:
:yin_yang: :yin_yang:
:latin_cross: :latin_cross:
:orthodox_cross: :orthodox_cross:
:star_and_crescent: :star_and_crescent:
:peace_symbol: :peace_symbol:
:menorah: :menorah:
:six_pointed_star: :six_pointed_star:
:aries: :aries:
:taurus: :taurus:
:gemini: :gemini:
:cancer: :cancer:
:leo: :leo:
:virgo: :virgo:
:libra: :libra:
:scorpius: :scorpius:
:sagittarius: :sagittarius:
:capricorn: :capricorn:
:aquarius: :aquarius:
:pisces: :pisces:
:ophiuchus: :ophiuchus:
:twisted_rightwards_arrows: :twisted_rightwards_arrows:
:repeat: :repeat:
:repeat_one: :repeat_one:
:arrow_forward: :arrow_forward:
:fast_forward: :fast_forward:
:next_track_button: :next_track_button:
:play_or_pause_button: :play_or_pause_button:
:arrow_backward: :arrow_backward:
:rewind: :rewind:
:previous_track_button: :previous_track_button:
:arrow_up_small: :arrow_up_small:
:arrow_double_up: :arrow_double_up:
:arrow_down_small: :arrow_down_small:
:arrow_double_down: :arrow_double_down:
:pause_button: :pause_button:
:stop_button: :stop_button:
:record_button: :record_button:
:eject_button: :eject_button:
:cinema: :cinema:
:low_brightness: :low_brightness:
:high_brightness: :high_brightness:
:signal_strength: :signal_strength:
:vibration_mode: :vibration_mode:
:mobile_phone_off: :mobile_phone_off:
:female_sign: :female_sign:
:male_sign: :male_sign:
:transgender_symbol: :transgender_symbol:
:heavy_multiplication_x: :heavy_multiplication_x:
:heavy_plus_sign: :heavy_plus_sign:
:heavy_minus_sign: :heavy_minus_sign:
:heavy_division_sign: :heavy_division_sign:
:infinity: :infinity:
:bangbang: :bangbang:
:interrobang: :interrobang:
:question: :question:
:grey_question: :grey_question:
:grey_exclamation: :grey_exclamation:
:exclamation: :exclamation:
:heavy_exclamation_mark: :heavy_exclamation_mark:
:wavy_dash: :wavy_dash:
:currency_exchange: :currency_exchange:
:heavy_dollar_sign: :heavy_dollar_sign:
:medical_symbol: :medical_symbol:
:recycle: :recycle:
:fleur_de_lis: :fleur_de_lis:
:trident: :trident:
:name_badge: :name_badge:
:beginner: :beginner:
:o: :o:
:white_check_mark: :white_check_mark:
:ballot_box_with_check: :ballot_box_with_check:
:heavy_check_mark: :heavy_check_mark:
:x: :x:
:negative_squared_cross_mark: :negative_squared_cross_mark:
:curly_loop: :curly_loop:
:loop: :loop:
:part_alternation_mark: :part_alternation_mark:
:eight_spoked_asterisk: :eight_spoked_asterisk:
:eight_pointed_black_star: :eight_pointed_black_star:
:sparkle: :sparkle:
:copyright: :copyright:
:registered: :registered:
:tm: :tm:
:hash: :hash:
:asterisk: :asterisk:
:zero: :zero:
:one: :one:
:two: :two:
:three: :three:
:four: :four:
:five: :five:
:six: :six:
:seven: :seven:
:eight: :eight:
:nine: :nine:
:keycap_ten: :keycap_ten:
:capital_abcd: :capital_abcd:
:abcd: :abcd:
:symbols: :symbols:
:abc: :abc:
:a: :a:
:ab: :ab:
:b: :b:
:cl: :cl:
:cool: :cool:
:free: :free:
:information_source: :information_source:
:id: :id:
:m: :m:
:new: :new:
:ng: :ng:
:o2: :o2:
:ok: :ok:
:parking: :parking:
:sos: :sos:
:up: :up:
:vs: :vs:
:koko: :koko:
:sa: :sa:
:ideograph_advantage: :ideograph_advantage:
:accept: :accept:
:congratulations: :congratulations:
:secret: :secret:
:u6e80: :u6e80:
:red_circle: :red_circle:
:orange_circle: :orange_circle:
:yellow_circle: :yellow_circle:
:green_circle: :green_circle:
:large_blue_circle: :large_blue_circle:
:purple_circle: :purple_circle:
:brown_circle: :brown_circle:
:black_circle: :black_circle:
:white_circle: :white_circle:
:red_square: :red_square:
:orange_square: :orange_square:
:yellow_square: :yellow_square:
:green_square: :green_square:
:blue_square: :blue_square:
:purple_square: :purple_square:
:brown_square: :brown_square:
:black_large_square: :black_large_square:
:white_large_square: :white_large_square:
:black_medium_square: :black_medium_square:
:white_medium_square: :white_medium_square:
:black_medium_small_square: :black_medium_small_square:
:white_medium_small_square: :white_medium_small_square:
:black_small_square: :black_small_square:
:white_small_square: :white_small_square:
:large_orange_diamond: :large_orange_diamond:
:large_blue_diamond: :large_blue_diamond:
:small_orange_diamond: :small_orange_diamond:
:small_blue_diamond: :small_blue_diamond:
:small_red_triangle: :small_red_triangle:
:small_red_triangle_down: :small_red_triangle_down:
:diamond_shape_with_a_dot_inside: :diamond_shape_with_a_dot_inside:
:radio_button: :radio_button:
:white_square_button: :white_square_button:
:black_square_button: :black_square_button:
:checkered_flag: :checkered_flag:
:triangular_flag_on_post: :triangular_flag_on_post:
:crossed_flags: :crossed_flags:
:black_flag: :black_flag:
:white_flag: :white_flag:
:rainbow_flag: :rainbow_flag:
:transgender_flag: :transgender_flag:
:pirate_flag: :pirate_flag:
:ascension_island: :ascension_island:
:andorra: :andorra:
:united_arab_emirates: :united_arab_emirates:
:afghanistan: :afghanistan:
:antigua_barbuda: :antigua_barbuda:
:anguilla: :anguilla:
:albania: :albania:
:armenia: :armenia:
:angola: :angola:
:antarctica: :antarctica:
:argentina: :argentina:
:american_samoa: :american_samoa:
:austria: :austria:
:australia: :australia:
:aruba: :aruba:
:aland_islands: :aland_islands:
:azerbaijan: :azerbaijan:
:bosnia_herzegovina: :bosnia_herzegovina:
:barbados: :barbados:
:bangladesh: :bangladesh:
:belgium: :belgium:
:burkina_faso: :burkina_faso:
:bulgaria: :bulgaria:
:bahrain: :bahrain:
:burundi: :burundi:
:benin: :benin:
:st_barthelemy: :st_barthelemy:
:bermuda: :bermuda:
:brunei: :brunei:
:bolivia: :bolivia:
:caribbean_netherlands: :caribbean_netherlands:
:brazil: :brazil:
:bahamas: :bahamas:
:bhutan: :bhutan:
:bouvet_island: :bouvet_island:
:botswana: :botswana:
:belarus: :belarus:
:belize: :belize:
:canada: :canada:
:cocos_islands: :cocos_islands:
:congo_kinshasa: :congo_kinshasa:
:central_african_republic: :central_african_republic:
:congo_brazzaville: :congo_brazzaville:
:switzerland: :switzerland:
:cote_divoire: :cote_divoire:
:cook_islands: :cook_islands:
:chile: :chile:
:cameroon: :cameroon:
:cn: :cn:
:colombia: :colombia:
:clipperton_island: :clipperton_island:
:costa_rica: :costa_rica:
:cuba: :cuba:
:cape_verde: :cape_verde:
:curacao: :curacao:
:christmas_island: :christmas_island:
:cyprus: :cyprus:
:czech_republic: :czech_republic:
:de: :de:
:diego_garcia: :diego_garcia:
:djibouti: :djibouti:
:denmark: :denmark:
:dominica: :dominica:
:dominican_republic: :dominican_republic:
:algeria: :algeria:
:ceuta_melilla: :ceuta_melilla:
:ecuador: :ecuador:
:estonia: :estonia:
:egypt: :egypt:
:western_sahara: :western_sahara:
:eritrea: :eritrea:
:es: :es:
:ethiopia: :ethiopia:
:eu: :eu:
:european_union: :european_union:
:finland: :finland:
:fiji: :fiji:
:falkland_islands: :falkland_islands:
:micronesia: :micronesia:
:faroe_islands: :faroe_islands:
:fr: :fr:
:gabon: :gabon:
:gb: :gb:
:uk: :uk:
:grenada: :grenada:
:georgia: :georgia:
:french_guiana: :french_guiana:
:guernsey: :guernsey:
:ghana: :ghana:
:gibraltar: :gibraltar:
:greenland: :greenland:
:gambia: :gambia:
:guinea: :guinea:
:guadeloupe: :guadeloupe:
:equatorial_guinea: :equatorial_guinea:
:greece: :greece:
:south_georgia_south_sandwich_islands: :south_georgia_south_sandwich_islands:
:guatemala: :guatemala:
:guam: :guam:
:guinea_bissau: :guinea_bissau:
:guyana: :guyana:
:hong_kong: :hong_kong:
:heard_mcdonald_islands: :heard_mcdonald_islands:
:honduras: :honduras:
:croatia: :croatia:
:haiti: :haiti:
:hungary: :hungary:
:canary_islands: :canary_islands:
:indonesia: :indonesia:
:ireland: :ireland:
:israel: :israel:
:isle_of_man: :isle_of_man:
:india: :india:
:british_indian_ocean_territory: :british_indian_ocean_territory:
:iraq: :iraq:
:iran: :iran:
:iceland: :iceland:
:it: :it:
:jersey: :jersey:
:jamaica: :jamaica:
:jordan: :jordan:
:jp: :jp:
:kenya: :kenya:
:kyrgyzstan: :kyrgyzstan:
:cambodia: :cambodia:
:kiribati: :kiribati:
:comoros: :comoros:
:st_kitts_nevis: :st_kitts_nevis:
:north_korea: :north_korea:
:kr: :kr:
:kuwait: :kuwait:
:cayman_islands: :cayman_islands:
:kazakhstan: :kazakhstan:
:laos: :laos:
:lebanon: :lebanon:
:st_lucia: :st_lucia:
:liechtenstein: :liechtenstein:
:sri_lanka: :sri_lanka:
:liberia: :liberia:
:lesotho: :lesotho:
:lithuania: :lithuania:
:luxembourg: :luxembourg:
:latvia: :latvia:
:libya: :libya:
:morocco: :morocco:
:monaco: :monaco:
:moldova: :moldova:
:montenegro: :montenegro:
:st_martin: :st_martin:
:madagascar: :madagascar:
:marshall_islands: :marshall_islands:
:macedonia: :macedonia:
:mali: :mali:
:myanmar: :myanmar:
:mongolia: :mongolia:
:macau: :macau:
:northern_mariana_islands: :northern_mariana_islands:
:martinique: :martinique:
:mauritania: :mauritania:
:montserrat: :montserrat:
:malta: :malta:
:mauritius: :mauritius:
:maldives: :maldives:
:malawi: :malawi:
:mexico: :mexico:
:malaysia: :malaysia:
:mozambique: :mozambique:
:namibia: :namibia:
:new_caledonia: :new_caledonia:
:niger: :niger:
:norfolk_island: :norfolk_island:
:nigeria: :nigeria:
:nicaragua: :nicaragua:
:netherlands: :netherlands:
:norway: :norway:
:nepal: :nepal:
:nauru: :nauru:
:niue: :niue:
:new_zealand: :new_zealand:
:oman: :oman:
:panama: :panama:
:peru: :peru:
:french_polynesia: :french_polynesia:
:papua_new_guinea: :papua_new_guinea:
:philippines: :philippines:
:pakistan: :pakistan:
:poland: :poland:
:st_pierre_miquelon: :st_pierre_miquelon:
:pitcairn_islands: :pitcairn_islands:
:puerto_rico: :puerto_rico:
:palestinian_territories: :palestinian_territories:
:portugal: :portugal:
:palau: :palau:
:paraguay: :paraguay:
:qatar: :qatar:
:reunion: :reunion:
:romania: :romania:
:serbia: :serbia:
:ru: :ru:
:rwanda: :rwanda:
:saudi_arabia: :saudi_arabia:
:solomon_islands: :solomon_islands:
:seychelles: :seychelles:
:sudan: :sudan:
:sweden: :sweden:
:singapore: :singapore:
:st_helena: :st_helena:
:slovenia: :slovenia:
:svalbard_jan_mayen: :svalbard_jan_mayen:
:slovakia: :slovakia:
:sierra_leone: :sierra_leone:
:san_marino: :san_marino:
:senegal: :senegal:
:somalia: :somalia:
:suriname: :suriname:
:south_sudan: :south_sudan:
:sao_tome_principe: :sao_tome_principe:
:el_salvador: :el_salvador:
:sint_maarten: :sint_maarten:
:syria: :syria:
:swaziland: :swaziland:
:tristan_da_cunha: :tristan_da_cunha:
:turks_caicos_islands: :turks_caicos_islands:
:chad: :chad:
:french_southern_territories: :french_southern_territories:
:togo: :togo:
:thailand: :thailand:
:tajikistan: :tajikistan:
:tokelau: :tokelau:
:timor_leste: :timor_leste:
:turkmenistan: :turkmenistan:
:tunisia: :tunisia:
:tonga: :tonga:
:tr: :tr:
:trinidad_tobago: :trinidad_tobago:
:tuvalu: :tuvalu:
:taiwan: :taiwan:
:tanzania: :tanzania:
:ukraine: :ukraine:
:uganda: :uganda:
:us_outlying_islands: :us_outlying_islands:
:united_nations: :united_nations:
:us: :us:
:uruguay: :uruguay:
:uzbekistan: :uzbekistan:
:vatican_city: :vatican_city:
:st_vincent_grenadines: :st_vincent_grenadines:
:venezuela: :venezuela:
:british_virgin_islands: :british_virgin_islands:
:us_virgin_islands: :us_virgin_islands:
:vietnam: :vietnam:
:vanuatu: :vanuatu:
:wallis_futuna: :wallis_futuna:
:samoa: :samoa:
:kosovo: :kosovo:
:yemen: :yemen:
:mayotte: :mayotte:
:south_africa: :south_africa:
:zambia: :zambia:
:zimbabwe: :zimbabwe:
:england: :england:
:scotland: :scotland:
:wales: :wales:

参考

https://docs.growi.org/en/guide/features/emoji.html https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/full.json https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/data/light.json

IntelliJ IDEAのUltimateの機能検証(Python)

IntelliJ IDEAのUltimateの機能検証(Python)

はじめに

IntelliJ IDEA は基本的にJVM系言語をサポートしているIDEです。 実は、他の言語もたくさんサポートしています。

以下の記事が詳しいです。 https://www.jetbrains.com/ja-jp/idea/features/editions_comparison_matrix.html

その中でPythonもサポートしているようなので実際に環境構築ができるか検証してみました。

目標

  1. Docker機能を使って外部ライブラリを参照してコード補完ができることを検証
  2. コンテナ上のMySQLにもう一つのコンテナ上のPython Appから接続できることを検証

環境

項目 バージョン
Windows10 Pro 20H2
IntelliJ IDEA 2021.1 (Ultimate Edition)

前提

手順

Python pluginの導入

  1. 設定画面へ ctr + alt +s
  2. Pluginsカテゴリを選択し、Marcketplaceタブを選択していることを確認
  3. Pythonを探してInstallします。開発元はJetBraninsです。

    プロジェクトの作成

  4. File>New>Projectをクリック
  5. 言語でPythonを選択し、適当なSDKを選択(後で変更します。)し、Nextをクリック
  6. テンプレートを選択できますが、何も選択せずNextをクリック
  7. 任意のプロジェクト名を入力し、Finishをクリック
  8. プロジェクトの作成ができました。

現状のディレクトリ構造です。

# カレントディレクトリの名前は、4.で設定した任意のプロジェクト名になっています。
.
└─.idea

Intellijの設定ファイルのみある状態です。

Docker関連の設定ファイルとPythonファイルの追加

  1. カレントディレクトリの直下にDockerfileと依存関係を記載したrequirements.txtとdocker-compose.ymlを作成します。
ファイル名 説明
Dockerfile 今回のプロジェクトのサンプルアプリ使用するPythonのruntimeコンテナの設定を記述
requirements.txt 今回のプロジェクトのサンプルアプリが依存するライブラリ名を記述
docker-compose.yml MySQLコンテナの設定と今回のプロジェクトのサンプルアプリのコンテナの関係を定義するファイル
  1. 今回のアプリで使用するPythonファイルを作成します。Pythonファイルはmain.pyという名前にします。main.pyはpythonというディレクトリに記述するようにします。 ※ディレクトリとファイル名は任意です。 現状のディレクトリ構造です。
C:.
├─.idea
└─python

Docker関連の設定ファイルとPythonファイルの内容の記述

  1. Dockerfile
FROM python:3.8-alpine3.12

RUN apk update
RUN apk upgrade
RUN set -ex && apk --no-cache add sudo
RUN sudo apk --no-cache add python3-dev
RUN sudo apk --no-cache add build-base
RUN sudo apk --no-cache add libffi-dev
RUN sudo apk --no-cache add openssl-dev

RUN mkdir /app
WORKDIR /app

COPY /python/main.py main.py
COPY requirements.txt requirements.txt

RUN python -m pip install --upgrade pip
RUN pip install pipenv
RUN pip3 install -r requirements.txt

  1. requirements.txt
PyMySQL
cryptography==3.1.1
  1. docker-compose.yml
version: "3"

services:
  mysql_db:
    container_name: "mysql_db"
    image: mysql:8.0
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - db_volume:/var/lib/mysql
    environment: # Set up mysql database name and password
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: employees
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    networks:
      - app-tier
  python5:
    restart: always
    build: .
    container_name: "python5"
    working_dir: "/root/"
    tty: true
    depends_on:
      - mysql_db
    networks:
      - app-tier
    volumes:
      - .:/root
      - pycache_volume:/root/.cache

networks:
  app-tier:
    driver: bridge

volumes:
  db_volume:
  pycache_volume:
  1. ./python/main.py
import pymysql

con = pymysql.connect(host='mysql_db',
                      user='user',
                      password='password',
                      port=3306,
                      database='employees')




try:

    with con.cursor() as cur:

        cur.execute('SELECT VERSION()')

        version = cur.fetchone()

        print(f'Database version: {version[0]}')

finally:

    con.close()
  1. 上記でサンプルファイルの準備が整いました。

  2. ここまでの設定でコンテナ上で実行できること確認します。 コマンド

docker-compose build
docker-compose up -d
docker container ls
docker-compose logs --tail 20 python5
docker container ls
docker exec -i -t 872e0d1e1bce /bin/sh
>python ./python/main.py
>ctr p + q
# コンテナとイメージをすべて削除するので使用には気を付けること。
# docker-compose down --rmi all --volumes --remove-orphans
  1. 以下のメッセージが表示されれば成功です。
Database version: 8.0.24
  1. IntelliJで動かす 現状だと参照するライブラリが見つからないため、pymysqlのコード補完が効かない状態です。

また実行もできない状態です。

  1. プロジェクトの設定を開きProject SDKのリストを展開し画像を参考にしてPython SDK ... をクリック。
ctr + shift + alt + s

  1. InterpreterとしてDocker Composeを選択、Serviceをpython5にしてOKをクリック。

  2. Apply->OKとクリック

  3. LoadingするのでIDEがLoadするのを待つ。

  4. ロードが終わったら実行を試す。 右クリック->実行

  5. 実行が成功

  6. コード補完は効かない状態。

  7. キャッシュを削除してリスタートする。 File>Invalid Caches... をクリックし、表示されたInvalidate and Restartをクリック

  8. 再起動を待ちます。 起動後、IDEの初期化があります。待ちます。

  9. コード補完も効くようになりました。

結論

公式サイトの比較にあった通りに機能を使用できることが確認できた。 現状だと、キャッシュを削除して再起動しないとコード補完が効かないバグが存在すること確認できた。 記事には記載していなかったですが、デバッグも実行できること確認できております。

感想

感想としてはPycharmとIntelliJ IDEA 両方のUltimateを購入しなくてもよいので経済的にはお得だなと思いました。 少し癖はあるけれど、環境構築さえできればあとは十分快適に開発できるのでIntelliJ IDEAで十分かなと思いました。 IDEのリスタートに関しては、WEBに情報が無かったのでサムライズムさんにサポートメールを出して助けて頂きました。

参考

https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04 https://zetcode.com/python/pymysql/ https://qiita.com/kenjiSpecial@github/items/63d682274ad993d69c10 https://github.com/pypa/pipenv https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a https://stackoverflow.com/questions/49225976/use-sudo-inside-dockerfile-alpine https://stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory https://qiita.com/emori92/items/3751dd330e4fa6484cc0 https://qiita.com/HorikawaTokiya/items/a2a174680d7dd759ccae https://qiita.com/pottava/items/970d7b5cda565b995fe7 https://qiita.com/suin/items/19d65e191b96a0079417 https://qiita.com/tera_shin/items/8a43e904bd15990d3129 https://github.com/kenjiSpecial/docker_mysql_python_beginner https://www.jetbrains.com/ja-jp/idea/features/editions_comparison_matrix.html https://docs.docker.com/docker-for-windows/install/ https://docs.microsoft.com/en-us/windows/wsl/install-win10

GUIテキストエディタで一行コピーする

GUIテキストエディタで一行コピーする

最近効率よく一行をコピーする方法を知ったので記事を作成しました。

一行をコピーする。

普段は、一行分を選択してコピーするのではないかと思います。 例えば画像のように。

今回提案する方法

今回提案する方法は、簡単で 行にカーソルを合わせてctr + c をすることでコピーをすることができます。

例えば今は4行目にカーソルを合わせています。 上の状態で1行コピー可能です。

下の画像は5行目の25の後ろにカーソルを置いています。この状態でも一行分のコピーが可能です。

他のテキストエディタの対応状況の検証

例に挙げたのはVS Codeでした。 検証したエディタを以下に記述します。 IDEの中のテキストエディタ機能についても調べました。 1. Brackets 2. VS Code 3. IntelliJ IDEA| 4. GrowiのHackMD| 5. HackMD 6. サクラエディタ 7. Visial Studio 8. Eclipse

結果

# エディタ名 可能か
1 Brackets Yes
2 VS Code Yes
3 IntelliJ IDEA Yes
4 GrowiのHackMD Yes
5 HackMD Yes
6 サクラエディタ Yes
7 Visial Studio Yes
8 Eclipse No

結果はテーブルの通りほとんどのエディタが対応していました。 多少楽になるので使ってみると少し楽しくなるかもしれません。

Springboot AzureAD ログアウト情報を集める

参考

MS forum 2019年1月11日 の情報

AppServiceAuthSessionというCookieに情報が残っているためろぐあうとができないらしい CookieはSecureかつHttpOnlyのため、クライアントサイドのJavaScriptからじょがいできないとのこと https://social.msdn.microsoft.com/Forums/aspnet/ja-JP/7181af2d-c5c0-46eb-bce4-13c24a4d6a40/azure-ad1239512518125401247035469353881243422996353511237512383web

azure-spring-boot GithubのISSUE 2018年1月23日の情報

下記実装でうまくいくとのこと よく読むこと。

http.logout()
    .logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
    .logoutSuccessUrl("/logout.done")
    .deleteCookies("JSESSIONID")
    .invalidateHttpSession(true);

https://github.com/microsoft/azure-spring-boot/issues/364

ISSUEのリンクがあったStackoverflowの記事 2016年4月11日の質問 返答 2019年3月1日が最終更新

https://stackoverflow.com/questions/36557294/spring-security-logout-does-not-work-does-not-clear-security-context-and-authe/36562183#36562183

順に検証していくこと。

`その他

https://www.greptips.com/posts/847/

https://www.rough-and-cheap.jp/java/spring-boot-with-spring-security-login-logout/#logout

https://www.fixes.pub/program/40260.html

結論

以下サイトを参考にすることでログアウトでけた。 よかった。 AzureAD側のマニフェストには、特に設定はしなくても大丈夫でした。 "logoutUrl": null, https://docs.microsoft.com/ja-jp/azure/active-directory/develop/scenario-web-app-sign-user-sign-in?tabs=java