├── demo ├── src │ ├── assets │ │ └── .gitkeep │ ├── environments │ │ ├── environment.prod.ts │ │ └── environment.ts │ ├── favicon.ico │ ├── typings.d.ts │ ├── styles.css │ ├── tsconfig.app.json │ ├── index.html │ ├── main.ts │ ├── app │ │ ├── app.module.ts │ │ ├── app.component.css │ │ ├── app.component.ts │ │ └── app.component.html │ └── polyfills.ts ├── .editorconfig ├── tsconfig.json ├── .gitignore ├── package.json ├── .angular-cli.json └── tslint.json ├── .gitignore ├── src ├── sheets │ ├── index.ts │ ├── sheet_apple_32.png │ └── sheet_apple_map.ts ├── services │ ├── index.ts │ └── emoji-picker.service.ts ├── lib │ ├── index.ts │ ├── picker-directions.ts │ ├── emoji-event.ts │ ├── caret-event.ts │ └── emojis.data.ts ├── index.ts ├── pipes │ ├── index.ts │ └── emoji-empty-category.pipe.ts ├── styles │ ├── emoji-categories.scss │ ├── emoji-header.scss │ ├── emoji-list.scss │ ├── emoji-category.scss │ ├── emoji-footer.scss │ ├── emoji-search.scss │ ├── emoji-content.scss │ ├── _constants.scss │ └── emoji-button.scss ├── directives │ ├── index.ts │ ├── emoji-picker-caret.directive.ts │ └── emoji-picker-api.directive.ts ├── components │ ├── emoji-footer.component.ts │ ├── emoji-category.component.ts │ ├── emoji-categories.component.ts │ ├── emoji-header.component.ts │ ├── index.ts │ ├── emoji-list.component.ts │ ├── emoji-button.component.ts │ ├── emoji-search.component.ts │ ├── emoji-content.component.ts │ └── emoji-picker.component.ts ├── tsconfig.json ├── modifiers.ts └── emoji-picker.module.ts ├── .editorconfig ├── LICENSE ├── package.json ├── CHANGELOG.md └── README.md /demo/src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build/temp 3 | -------------------------------------------------------------------------------- /src/sheets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sheet_apple_map'; 2 | -------------------------------------------------------------------------------- /src/services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.service'; 2 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './caret-event'; 2 | export * from './emoji-event'; 3 | -------------------------------------------------------------------------------- /demo/src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /demo/src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsharir/angular2-emoji-picker/HEAD/demo/src/favicon.ico -------------------------------------------------------------------------------- /src/lib/picker-directions.ts: -------------------------------------------------------------------------------- 1 | export enum DIRECTIONS { 2 | top, 3 | bottom, 4 | left, 5 | right 6 | } 7 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker.module'; 2 | export * from './lib'; 3 | export * from './services'; 4 | -------------------------------------------------------------------------------- /src/sheets/sheet_apple_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lsharir/angular2-emoji-picker/HEAD/src/sheets/sheet_apple_32.png -------------------------------------------------------------------------------- /demo/src/typings.d.ts: -------------------------------------------------------------------------------- 1 | /* SystemJS module definition */ 2 | declare var module: NodeModule; 3 | interface NodeModule { 4 | id: string; 5 | } 6 | -------------------------------------------------------------------------------- /demo/src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | body { 4 | background: rgba(0,0,0,0.02); 5 | } 6 | -------------------------------------------------------------------------------- /src/pipes/index.ts: -------------------------------------------------------------------------------- 1 | import { EmojiEmptyCategoryPipe } from "./emoji-empty-category.pipe"; 2 | 3 | export const PIPES = [ 4 | EmojiEmptyCategoryPipe 5 | ]; 6 | -------------------------------------------------------------------------------- /src/styles/emoji-categories.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | :host { 4 | display: flex; 5 | flex-wrap: wrap; 6 | justify-content: space-between; 7 | margin: 0 0 10px; 8 | } 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig - http://EditorConfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | end_of_line = lf 7 | insert_final_newline = true 8 | 9 | [**.js] 10 | indent_style = space 11 | indent_size = 4 12 | -------------------------------------------------------------------------------- /src/styles/emoji-header.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | :host { 4 | display: block; 5 | border-bottom: 1px solid $ep-border-header; 6 | border-radius: $ep-border-radius $ep-border-radius 0 0; 7 | padding: $ep-padding-results; 8 | background: $ep-background-header; 9 | } 10 | -------------------------------------------------------------------------------- /src/lib/emoji-event.ts: -------------------------------------------------------------------------------- 1 | export class EmojiEvent { 2 | char: string; 3 | label: string; 4 | 5 | constructor(data) { 6 | Object.assign(this, data); 7 | } 8 | 9 | static fromArray(emojiArray) { 10 | return new EmojiEvent({ char : emojiArray[0], label : emojiArray[1]}) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /demo/.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /demo/src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "experimentalDecorators": true, 6 | "module": "es2015", 7 | "baseUrl": "", 8 | "types": [] 9 | }, 10 | "exclude": [ 11 | "test.ts", 12 | "**/*.spec.ts" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /src/directives/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-picker-caret.directive'; 2 | export * from './emoji-picker-api.directive'; 3 | 4 | import { 5 | EmojiPickerApiDirective, 6 | EmojiPickerCaretDirective 7 | } from './'; 8 | 9 | export const DIRECTIVES = [ 10 | EmojiPickerApiDirective, 11 | EmojiPickerCaretDirective 12 | ]; 13 | -------------------------------------------------------------------------------- /src/styles/emoji-list.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | :host { 4 | overflow-y: auto; 5 | } 6 | 7 | .emoji-list { 8 | padding: 0 $ep-padding-results $ep-padding-results; 9 | } 10 | 11 | .emoji-buttons { 12 | display: flex; 13 | justify-content: center; 14 | flex-wrap: wrap; 15 | margin: $ep-margin/2 0; 16 | } 17 | -------------------------------------------------------------------------------- /src/components/emoji-footer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-footer', 5 | styleUrls: ['../styles/emoji-footer.scss'], 6 | template: ` 7 | 8 | ` 9 | }) 10 | 11 | export class EmojiFooterComponent { 12 | constructor() { } 13 | } 14 | -------------------------------------------------------------------------------- /src/styles/emoji-category.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | .emoji-category { 4 | margin: 0; 5 | font-size: $ep-font-size; 6 | padding: $ep-padding/2 0 $ep-padding/2 $ep-padding/2; 7 | border-bottom: $ep-border-size solid $ep-border-input; 8 | color: $ep-category-title; 9 | font-family: $ep-font-family; 10 | } 11 | -------------------------------------------------------------------------------- /src/pipes/emoji-empty-category.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'notEmptyEmojiCategory' 5 | }) 6 | 7 | export class EmojiEmptyCategoryPipe implements PipeTransform { 8 | transform(categories: any[]): any[] { 9 | return categories.filter(category => category.emojis.length !== 0); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /demo/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Demo 6 | 7 | 8 | 9 | 10 | 11 | 12 | Loading... 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/styles/emoji-footer.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | .emoji-footer { 4 | display: flex; 5 | align-items: center; 6 | justify-content: space-between; 7 | border-top: $ep-border-size solid $ep-border-header; 8 | border-radius: 0 0 $ep-border-radius $ep-border-radius; 9 | padding: $ep-padding-results; 10 | background: $ep-background-header; 11 | } 12 | -------------------------------------------------------------------------------- /demo/src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule); 12 | -------------------------------------------------------------------------------- /src/styles/emoji-search.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | input { 4 | width: 100%; 5 | padding: $ep-padding/2 $ep-padding; 6 | border: $ep-border-size solid $ep-border-input; 7 | outline: none; 8 | font-size: $ep-input-font-size; 9 | font-weight: inherit; 10 | box-sizing: border-box; 11 | 12 | &:focus { 13 | border-color: darken($ep-border-input, 10%); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /demo/src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // The file contents for the current environment will overwrite these during build. 2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do 3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead. 4 | // The list of which env maps to which file can be found in `.angular-cli.json`. 5 | 6 | export const environment = { 7 | production: false 8 | }; 9 | -------------------------------------------------------------------------------- /src/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /demo/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "outDir": "./dist/out-tsc", 5 | "baseUrl": "src", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2016", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/modifiers.ts: -------------------------------------------------------------------------------- 1 | export const modifiers = { 2 | a: { 3 | unicode: '', 4 | char: '' 5 | }, 6 | b: { 7 | unicode: '-1f3fb', 8 | char: '🏻' 9 | }, 10 | c: { 11 | unicode: '-1f3fc', 12 | char: '🏼' 13 | }, 14 | d: { 15 | unicode: '-1f3fd', 16 | char: '🏽' 17 | }, 18 | e: { 19 | unicode: '-1f3fe', 20 | char: '🏾' 21 | }, 22 | f: { 23 | unicode: '-1f3ff', 24 | char: '🏿' 25 | } 26 | }; 27 | -------------------------------------------------------------------------------- /src/styles/emoji-content.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | :host { 4 | display: flex; 5 | flex-direction: column; 6 | width: 100vw; 7 | height: $ep-height; 8 | border-radius: $ep-border-radius; 9 | background: $ep-background-panel; 10 | text-align: left; 11 | box-shadow: 0 11px 15px -7px rgba(0,0,0,.2), 0 24px 38px 3px rgba(0,0,0,.14), 0 9px 46px 8px rgba(0,0,0,.12); 12 | 13 | @media(min-width: $ep-width) { 14 | width: $ep-width; 15 | } 16 | } 17 | 18 | emoji-list { 19 | flex-grow: 1; 20 | } 21 | -------------------------------------------------------------------------------- /src/components/emoji-category.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ElementRef } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-category', 5 | styleUrls: ['../styles/emoji-category.scss'], 6 | template: ` 7 |

{{category.name}}

8 | ` 9 | }) 10 | 11 | export class EmojiCategoryComponent { 12 | @Input('category') category; 13 | 14 | constructor(private _element: ElementRef) { } 15 | 16 | public scrollIntoView() { 17 | this._element.nativeElement.scrollIntoView(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /demo/src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { NgModule } from '@angular/core'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { HttpModule } from '@angular/http'; 5 | 6 | import { EmojiPickerModule } from '../../../src'; 7 | 8 | import { AppComponent } from './app.component'; 9 | 10 | @NgModule({ 11 | declarations: [ 12 | AppComponent 13 | ], 14 | imports: [ 15 | BrowserModule, 16 | FormsModule, 17 | HttpModule, 18 | EmojiPickerModule.forRoot() 19 | ], 20 | providers: [], 21 | bootstrap: [AppComponent] 22 | }) 23 | export class AppModule { } 24 | -------------------------------------------------------------------------------- /demo/.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | testem.log 34 | /typings 35 | 36 | # e2e 37 | /e2e/*.js 38 | /e2e/*.map 39 | 40 | # System Files 41 | .DS_Store 42 | Thumbs.db 43 | -------------------------------------------------------------------------------- /src/services/emoji-picker.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { EmojiEvent } from './../lib'; 3 | 4 | @Injectable() 5 | export class EmojiPickerOptions { 6 | private _options = {}; 7 | 8 | setEmojiSheet(config: EmojiPickerSheetOption) { 9 | if (!config || !config.url || !config.locator) { 10 | return console.error('EmojiPickerService.setEmojiSheet: cannot accept data, missing arguments'); 11 | } 12 | 13 | this._options = Object.assign({}, this._options, { 14 | sheet: config 15 | }); 16 | } 17 | 18 | get options() { 19 | return this._options; 20 | } 21 | } 22 | 23 | interface EmojiPickerSheetOption { 24 | url: string; 25 | locator: Function; 26 | } 27 | -------------------------------------------------------------------------------- /src/components/emoji-categories.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-categories', 5 | styleUrls: ['../styles/emoji-categories.scss'], 6 | template: ` 7 | 8 | 12 | 13 | ` 14 | }) 15 | 16 | export class EmojiCategoriesComponent { 17 | @Input('emojisCategories') emojisCategories; 18 | @Output('categorySelection') categorySelection = new EventEmitter(); 19 | 20 | constructor() {} 21 | 22 | handleCategorySelection(event) { 23 | this.categorySelection.emit(event); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/components/emoji-header.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'emoji-header', 5 | styleUrls: ['../styles/emoji-header.scss'], 6 | template: ` 7 | 8 | 9 | ` 10 | }) 11 | 12 | export class EmojiHeaderComponent { 13 | @Input('emojisCategories') emojisCategories; 14 | @Input('inputAutofocus') inputAutofocus; 15 | 16 | @Output('categorySelection') categorySelection = new EventEmitter(); 17 | @Output('search') searchEmitter = new EventEmitter(); 18 | 19 | constructor() { } 20 | } 21 | -------------------------------------------------------------------------------- /src/styles/_constants.scss: -------------------------------------------------------------------------------- 1 | $ep-font-family: 'Arial', 'Arial Black', 'Tahoma', 'Trebuchet MS', 'Verdana'; 2 | 3 | // Colors 4 | $ep-background-header: #FCFCFC !default; 5 | $ep-border-header: #F9F9F9 !default; 6 | $ep-background-panel: #FFF !default; 7 | $ep-border-input: #F0F0F0 !default; 8 | $ep-category-title: #777 !default; 9 | 10 | // Padding and Borders 11 | $ep-padding: 10px; 12 | $ep-margin: 10px; 13 | $ep-padding-results: $ep-padding !default; 14 | $ep-border-radius: 3px !default; 15 | 16 | // Dimensions 17 | $ep-emoji-width: 34px !default; 18 | $ep-font-size: 16px; 19 | $ep-input-font-size: 14px; 20 | $ep-border-size: 1px; 21 | 22 | $ep-width: $ep-emoji-width * 7 + ($ep-padding-results * 2); 23 | 24 | $ep-height: 25 | $ep-emoji-width * (5 + 1) + 26 | $ep-padding * 5 + 27 | $ep-border-size * 4 + 28 | $ep-input-font-size + 3px + 29 | $ep-font-size + 3px + 30 | $ep-padding * 2; 31 | -------------------------------------------------------------------------------- /demo/src/app/app.component.css: -------------------------------------------------------------------------------- 1 | .emoji-toggle-button { 2 | font-style: normal; 3 | padding: 5px; 4 | cursor: pointer; 5 | font-size: 3rem; 6 | user-select: none; 7 | } 8 | 9 | .emoji-content-editable { 10 | background: #eee; 11 | border: 1px solid #ccc; 12 | padding: 0.5rem 0.25rem; 13 | } 14 | 15 | pre.code-pre { 16 | background: #1d1f20; 17 | color: #fff; 18 | white-space: pre-wrap; 19 | padding: 2rem 1rem; 20 | line-height: 1.5; 21 | } 22 | 23 | .code-pre .code-input { 24 | color: #f3ef9c; 25 | font-family: monospace; 26 | background: none; 27 | outline: none; 28 | border: none; 29 | text-align: center; 30 | font-size: 0.75rem; 31 | } 32 | 33 | .code-pre .code-special { 34 | color: #88d2d0; 35 | } 36 | 37 | .main { 38 | text-align: center; 39 | } 40 | 41 | header { 42 | text-align: center; 43 | font-family: 'Arial', 'Arial Black', 'Tahoma', 'Trebuchet MS', 'Verdana'; 44 | } 45 | -------------------------------------------------------------------------------- /src/emoji-picker.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders } from '@angular/core'; 2 | import { CommonModule } from '@angular/common'; 3 | 4 | import { COMPONENTS } from "./components"; 5 | import { DIRECTIVES } from './directives'; 6 | import { PIPES } from './pipes'; 7 | 8 | import { EmojiPickerOptions } from './services'; 9 | 10 | import { EmojiPickerComponent } from './components'; 11 | 12 | @NgModule({ 13 | imports: [ 14 | CommonModule 15 | ], 16 | exports: [ 17 | ...DIRECTIVES, 18 | ...COMPONENTS 19 | ], 20 | declarations: [ 21 | ...PIPES, 22 | ...DIRECTIVES, 23 | ...COMPONENTS 24 | ], 25 | providers: [], 26 | entryComponents: [EmojiPickerComponent] 27 | }) 28 | export class EmojiPickerModule { 29 | static forRoot(): ModuleWithProviders { 30 | return { 31 | ngModule: EmojiPickerModule, 32 | providers: [ 33 | EmojiPickerOptions 34 | ] 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './emoji-button.component'; 2 | export * from './emoji-content.component'; 3 | export * from './emoji-picker.component'; 4 | export * from './emoji-header.component'; 5 | export * from './emoji-list.component'; 6 | export * from './emoji-categories.component'; 7 | export * from './emoji-search.component'; 8 | export * from './emoji-category.component'; 9 | export * from './emoji-footer.component'; 10 | 11 | import { 12 | EmojiButtonComponent, 13 | EmojiContentComponent, 14 | EmojiPickerComponent, 15 | EmojiListComponent, 16 | EmojiHeaderComponent, 17 | EmojiSearchComponent, 18 | EmojiCategoriesComponent, 19 | EmojiCategoryComponent, 20 | EmojiFooterComponent 21 | } from './'; 22 | 23 | export const COMPONENTS = [ 24 | EmojiButtonComponent, 25 | EmojiContentComponent, 26 | EmojiPickerComponent, 27 | EmojiListComponent, 28 | EmojiHeaderComponent, 29 | EmojiSearchComponent, 30 | EmojiCategoriesComponent, 31 | EmojiCategoryComponent, 32 | EmojiFooterComponent 33 | ]; 34 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "0.0.0", 4 | "license": "MIT", 5 | "scripts": { 6 | "ng": "ng", 7 | "start": "ng serve", 8 | "build": "ng build", 9 | "test": "ng test", 10 | "lint": "ng lint", 11 | "e2e": "ng e2e", 12 | "deploy": "ng build -sm -ec -bh lsharir.github.io && gh-pages -d dist" 13 | }, 14 | "private": true, 15 | "dependencies": { 16 | "@angular/common": "^4.0.0", 17 | "@angular/compiler": "^4.0.0", 18 | "@angular/core": "^4.0.0", 19 | "@angular/forms": "^4.0.0", 20 | "@angular/http": "^4.0.0", 21 | "@angular/platform-browser": "^4.0.0", 22 | "@angular/platform-browser-dynamic": "^4.0.0", 23 | "@angular/router": "^4.0.0", 24 | "core-js": "^2.4.1", 25 | "rxjs": "^5.1.0", 26 | "zone.js": "^0.8.4" 27 | }, 28 | "devDependencies": { 29 | "@angular/cli": "1.0.0", 30 | "@angular/compiler-cli": "^4.0.0", 31 | "@types/node": "~6.0.60", 32 | "codelyzer": "~2.0.0", 33 | "gh-pages": "^0.12.0", 34 | "ts-node": "~2.0.0", 35 | "tslint": "~4.5.0", 36 | "typescript": "~2.2.0" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Dan Bovey 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-emoji-picker", 3 | "version": "1.4.0", 4 | "description": "Emoji picker for angular2+", 5 | "repository": { 6 | "type": "git", 7 | "url": "git+https://github.com/lsharir/angular2-emoji-picker.git" 8 | }, 9 | "author": "Liran Sharir ", 10 | "main": "./lib-dist/index.js", 11 | "types": "./lib-dist/index.d.ts", 12 | "scripts": { 13 | "build:library": "nglb --rootDir src --outDir lib-dist" 14 | }, 15 | "keywords": [ 16 | "angular", 17 | "angular2", 18 | "emoji", 19 | "picker", 20 | "dropdown" 21 | ], 22 | "license": "MIT", 23 | "devDependencies": { 24 | "@types/node": "^7.0.12", 25 | "angular-library-builder": "^1.4.2" 26 | }, 27 | "dependencies": { 28 | "@angular/common": ">=2.4.0", 29 | "@angular/compiler": ">=2.4.0", 30 | "@angular/core": ">=2.4.0", 31 | "core-js": ">=2.4.1", 32 | "rxjs": ">=5.1.0", 33 | "zone.js": ">=0.7.6" 34 | }, 35 | "peerDependencies": { 36 | "@angular/common": ">=2.4.0", 37 | "@angular/compiler": ">=2.4.0", 38 | "@angular/core": ">=2.4.0", 39 | "core-js": ">=2.4.1", 40 | "rxjs": ">=5.1.0", 41 | "zone.js": ">=0.7.6" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/styles/emoji-button.scss: -------------------------------------------------------------------------------- 1 | @import '_constants.scss'; 2 | 3 | :host { 4 | display: inline-block; 5 | } 6 | 7 | .emoji-button { 8 | padding: 0; 9 | outline: none; 10 | background: none; 11 | cursor: pointer; 12 | width: $ep-emoji-width; 13 | height: $ep-emoji-width; 14 | border: 5px solid transparent; 15 | border-radius: $ep-border-radius; 16 | font-size: ($ep-emoji-width - 10px); 17 | line-height: 1.1; 18 | transition: all 0.2s; 19 | 20 | &:hover, &:focus { 21 | background: #F1F1F1; 22 | border-color: #F1F1F1; 23 | } 24 | } 25 | 26 | .emoji-button-from-sheet { 27 | padding: 0; 28 | border: none; 29 | outline: none; 30 | display: inline-block; 31 | background-repeat: no-repeat; 32 | /** box shaddowing the edges until I find a better sprite sheet */ 33 | box-shadow: 0 0 1px 1px white inset; 34 | background-size: (25px * 1568 / 32); 35 | width: 25px; 36 | height: 25px; 37 | } 38 | 39 | .emoji-button-from-sheet-enclosure { 40 | display: inline-block; 41 | cursor: pointer; 42 | line-height: 0; 43 | padding: 4.5px; 44 | border-radius: $ep-border-radius; 45 | 46 | &:hover, &:focus { 47 | background: #F1F1F1; 48 | border-color: #F1F1F1; 49 | 50 | .emoji-button-from-sheet { 51 | box-shadow: 0 0 1px 1px #F1F1F1 inset; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/components/emoji-list.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, ViewChildren, QueryList, forwardRef, Output, EventEmitter } from '@angular/core'; 2 | import { EmojiCategoryComponent } from './'; 3 | 4 | @Component({ 5 | selector: 'emoji-list', 6 | styleUrls: ['../styles/emoji-list.scss'], 7 | template: ` 8 |
9 | 10 | 11 |
12 | 16 |
17 |
18 |
19 | ` 20 | }) 21 | 22 | export class EmojiListComponent { 23 | @ViewChildren(forwardRef(() => EmojiCategoryComponent)) emojiCategoryComponents: QueryList; 24 | @Input('emojis') emojis; 25 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 26 | 27 | constructor() { } 28 | 29 | public selectCategory(event) { 30 | this.emojiCategoryComponents.forEach((categoryCmp:EmojiCategoryComponent) => { 31 | if (categoryCmp['category'].name === event.name) { 32 | categoryCmp.scrollIntoView(); 33 | } 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /demo/.angular-cli.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "project": { 4 | "name": "demo" 5 | }, 6 | "apps": [ 7 | { 8 | "root": "src", 9 | "outDir": "dist", 10 | "assets": [ 11 | "assets", 12 | "favicon.ico", 13 | { "glob": "sheet_apple_32.png", "input": "../../src/sheets/", "output": "./" } 14 | ], 15 | "index": "index.html", 16 | "main": "main.ts", 17 | "polyfills": "polyfills.ts", 18 | "tsconfig": "tsconfig.app.json", 19 | "prefix": "app", 20 | "styles": [ 21 | "styles.css" 22 | ], 23 | "scripts": [], 24 | "environmentSource": "environments/environment.ts", 25 | "environments": { 26 | "dev": "environments/environment.ts", 27 | "prod": "environments/environment.prod.ts" 28 | } 29 | } 30 | ], 31 | "e2e": { 32 | "protractor": { 33 | "config": "./protractor.conf.js" 34 | } 35 | }, 36 | "lint": [ 37 | { 38 | "project": "src/tsconfig.app.json" 39 | }, 40 | { 41 | "project": "src/tsconfig.spec.json" 42 | }, 43 | { 44 | "project": "e2e/tsconfig.e2e.json" 45 | } 46 | ], 47 | "test": { 48 | "karma": { 49 | "config": "./karma.conf.js" 50 | } 51 | }, 52 | "defaults": { 53 | "styleExt": "scss", 54 | "component": {} 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/components/emoji-button.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, EventEmitter, Output } from '@angular/core'; 2 | import { EmojiPickerOptions } from "../services"; 3 | 4 | @Component({ 5 | selector: 'emoji-button', 6 | styleUrls: ['../styles/emoji-button.scss'], 7 | template: ` 8 | 14 | 15 | 17 | 22 | 23 | 24 | 25 | ` 26 | }) 27 | 28 | export class EmojiButtonComponent { 29 | @Input('emoji') emoji; 30 | @Input('dataToEmit') dataToEmit; 31 | @Input('options') options; 32 | @Input('fitzpatrick') fitzpatrick; 33 | 34 | @Output('selection') selectionEmitter : EventEmitter = new EventEmitter(); 35 | 36 | constructor(private emojiPickerOptions: EmojiPickerOptions) {} 37 | } 38 | -------------------------------------------------------------------------------- /src/components/emoji-search.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ViewChild, Renderer, ElementRef, Input } from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import "rxjs/add/operator/throttleTime"; 4 | import "rxjs/add/operator/takeUntil"; 5 | 6 | @Component({ 7 | selector: 'emoji-search', 8 | styleUrls: ['../styles/emoji-search.scss'], 9 | template: ` 10 | 11 | ` 12 | }) 13 | 14 | export class EmojiSearchComponent { 15 | @Input('inputAutofocus') inputAutofocus: boolean; 16 | @Output('search') searchEmitter: EventEmitter = new EventEmitter(); 17 | @ViewChild('input') input: ElementRef; 18 | 19 | private _searchValue: Subject = new Subject(); 20 | private _destroyed = new Subject(); 21 | 22 | constructor(private _renderer: Renderer) { 23 | this._searchValue 24 | .takeUntil(this._destroyed) 25 | .subscribe(value => { 26 | this.searchEmitter.emit(value); 27 | }); 28 | } 29 | 30 | ngAfterViewInit() { 31 | if (this.inputAutofocus) { 32 | this._renderer.invokeElementMethod(this.input.nativeElement, 'focus'); 33 | } 34 | } 35 | 36 | handleInputChange(event) { 37 | this._searchValue.next(event); 38 | } 39 | 40 | ngOnDestroy() { 41 | this._destroyed.next(true); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /demo/src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild } from '@angular/core'; 2 | import { CaretEvent, EmojiEvent, EmojiPickerOptions } from "../../../src"; 3 | import { EmojiPickerAppleSheetLocator } from "../../../src/sheets"; 4 | 5 | @Component({ 6 | selector: 'app-root', 7 | templateUrl: './app.component.html', 8 | styleUrls: ['./app.component.css'] 9 | }) 10 | export class AppComponent { 11 | public eventMock; 12 | public eventPosMock; 13 | 14 | public direction = Math.random() > 0.5 ? (Math.random() > 0.5 ? 'top' : 'bottom') : (Math.random() > 0.5 ? 'right' : 'left'); 15 | public toggled = false; 16 | public content = 'Type letters, enter emojis, go nuts...'; 17 | 18 | private _lastCaretEvent: CaretEvent; 19 | 20 | constructor(private emojiPickerOptions: EmojiPickerOptions) { 21 | this.emojiPickerOptions.setEmojiSheet({ 22 | url: 'sheet_apple_32.png', 23 | locator: EmojiPickerAppleSheetLocator 24 | }); 25 | } 26 | 27 | handleSelection(event: EmojiEvent) { 28 | this.content = this.content.slice(0, this._lastCaretEvent.caretOffset) + event.char + this.content.slice(this._lastCaretEvent.caretOffset); 29 | this.eventMock = JSON.stringify(event); 30 | } 31 | 32 | handleCurrentCaret(event: CaretEvent) { 33 | this._lastCaretEvent = event; 34 | this.eventPosMock = `{ caretOffset : ${event.caretOffset}, caretRange: Range{...}, textContent: ${event.textContent} }`; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /demo/src/app/app.component.html: -------------------------------------------------------------------------------- 1 |
$event{{' = ' + eventPosMock}}
 5 |     {{content}}
 6 |   
 7 | 
 8 |   {{toggled}}$event{{' = ' + eventMock}}😄
16 | ]]>
17 | 18 |
19 |

Angular Emoji Picker

20 |
21 | 22 |
23 |
28 | 😄 36 |
37 | 38 |
39 | 40 |
41 | -------------------------------------------------------------------------------- /src/components/emoji-content.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewChild, forwardRef, Output, EventEmitter, Input } from '@angular/core'; 2 | import { EMOJIS } from "../lib/emojis.data"; 3 | import { EmojiListComponent } from "./"; 4 | 5 | @Component({ 6 | selector: 'emoji-content', 7 | styleUrls: ['../styles/emoji-content.scss'], 8 | template: ` 9 | 14 | 15 | 16 | ` 17 | }) 18 | 19 | export class EmojiContentComponent { 20 | @ViewChild(forwardRef(() => EmojiListComponent)) emojiListComponent: EmojiListComponent; 21 | @Output('emoji-selection') emojiSelectionEmitter = new EventEmitter(); 22 | @Input('inputAutofocus') inputAutofocus: boolean; 23 | 24 | private _emojis = EMOJIS; 25 | emojis = this._emojis.slice(); 26 | emojisCategories = this._emojis.map(category => Object.assign({}, category, { emojis : [] })); 27 | 28 | constructor() {} 29 | 30 | searchHandler(value) { 31 | let filteredEmojis = this.emojisCategories.map(category => Object.assign({}, category, { emojis : [] })); 32 | 33 | value = value.replace(/-/g, '').toLowerCase(); 34 | 35 | Object.keys(this._emojis).forEach(i => { 36 | const category = this._emojis[i]; 37 | 38 | category.emojis.forEach(emoji => { 39 | if (emoji[1].indexOf(value) !== -1) { 40 | filteredEmojis[i].emojis.push(emoji); 41 | } 42 | }); 43 | }); 44 | 45 | this.emojis = filteredEmojis; 46 | } 47 | 48 | categorySelectionHandler(event) { 49 | this.emojiListComponent.selectCategory(event); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # [1.4.0](https://github.com/lsharir/angular2-emoji-picker/compare/v1.3.0...v1.4.0) (2017-04-20) 3 | 4 | ## What's New 5 | 6 | * **EmojiPickerOptions:** root provided service to customize the picker (e.g. use of sprite sheets) 7 | * **Emoji sprite sheets:** provided sprite sheets (usage explained in readme.md) 8 | 9 | 10 | # [1.3.0](https://github.com/lsharir/angular2-emoji-picker/compare/v1.2.0...v1.3.0) (2017-04-20) 11 | 12 | ## What's New 13 | 14 | * **[emojiPickerAutofocus]="true || false":** chooses whether to autofocus the search bar or not 15 | * **[emojiPickerPreserveSelection]="true || false":** chooses whether to preserve existing document selection or not 16 | 17 | 18 | # [1.2.0](https://github.com/lsharir/angular2-emoji-picker/compare/v1.1.0...v1.2.0) (2017-04-20) 19 | 20 | ### Bug Fixes 21 | 22 | * **EmojiPickerCaret directive:** added support for input elements 23 | 24 | ### Performance Improvements 25 | * **EmojiPickerApi directive:** properly unsubscribing to event emitters 26 | * **EmojiPickerCaret directive:** improved event management, smart caret preserving event emitting when content of an editable div changes through DOM mutation. 27 | 28 | ## What's New 29 | 30 | * **(emojiPickerCaretEmitter):** emits the element textContent upon changes 31 | * **CaretEvent:** New caret event class available for use 32 | * **EmojiEvent:** New caret event class available for use 33 | 34 | ### BREAKING CHANGES 35 | 36 | * **(emojiPickerSelect) emitter:** the picker now emits an EmojiEvent object containing a char and label properties. Change usage accordingly (previous => now: event[0] => event.char, event[1] => event.label) 37 | 38 | 39 | # [1.1.0](https://github.com/lsharir/angular2-emoji-picker/compare/v1.0.5...v1.1.0) (2017-04-19) 40 | 41 | ### Design 42 | 43 | * **picker:** various design changes implemented, smaller emoji picker, more efficient use of area. 44 | 45 | ### Features 46 | 47 | * **[emojiPickerDirection]:** choose from 'top', 'bottom', 'left' and 'right' as possible pop up directions 48 | * **picker:** emoji picker is now flexible to window resizing, position will be recalculated with a short debounce for light resources 49 | 50 | ### BREAKING CHANGES 51 | 52 | * **EmojiPickerAnchor directive:** removed unnecessary directive, implemented through attribute emojiPickerIf (just drop [emojiPickerAnchor] and make sure [(emojiPickerIf)] is used in your emoji picker button element) 53 | * **EmojiPickerPosition directive:** (emojiPickerPositionEmitter) renamed to (emojiPickerCaretEmitter) if you relied on this event emitter directive for any reason, make sure to rename your usage accordingly. 54 | -------------------------------------------------------------------------------- /demo/src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/set'; 35 | 36 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 37 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 38 | 39 | /** IE10 and IE11 requires the following to support `@angular/animation`. */ 40 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 41 | 42 | 43 | /** Evergreen browsers require these. **/ 44 | import 'core-js/es6/reflect'; 45 | import 'core-js/es7/reflect'; 46 | 47 | 48 | /** ALL Firefox browsers require the following to support `@angular/animation`. **/ 49 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 50 | 51 | 52 | 53 | /*************************************************************************************************** 54 | * Zone JS is required by Angular itself. 55 | */ 56 | import 'zone.js/dist/zone'; // Included with Angular CLI. 57 | 58 | 59 | 60 | /*************************************************************************************************** 61 | * APPLICATION IMPORTS 62 | */ 63 | 64 | /** 65 | * Date, currency, decimal and percent pipes. 66 | * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 67 | */ 68 | // import 'intl'; // Run `npm install --save intl`. 69 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![npm version](https://badge.fury.io/js/angular2-emoji-picker.svg)](https://badge.fury.io/js/angular2-emoji-picker) 2 | 3 | # Emoji picker for Angular 4 | 5 | This project was forked from the [EmojiPanel](https://github.com/danbovey/EmojiPanel) project created by [DanBovey](https://github.com/danbovey) 6 | 7 | It's pretty basic right now, not very customizable but propagates necessary emoji selection events and comes with basic search and category selection functionalities. 8 | 9 | [Demo](https://lsharir.github.io/angular2-emoji-picker/) 10 | 11 | Demo uses the sprite sheets 12 | 13 | 14 | ### Usage: 15 | 16 | ``` 17 | import { EmojiPickerModule } from 'angular2-emoji-picker'; 18 | 19 | @NgModule({ 20 | ... 21 | imports: [ 22 | EmojiPickerModule.forRoot() 23 | ], 24 | ... 25 | }) 26 | export class AppModule {} 27 | 28 | ``` 29 | 30 | ### Use The Sprite Sheet 31 | 32 | ``` 33 | /** file: app.component.ts */ 34 | 35 | import { EmojiPickerOptions } from 'angular2-emoji-picker'; 36 | 37 | /** imported seperately to reduce package size for those who won't use sheets */ 38 | import { EmojiPickerAppleSheetLocator } from 'angular2-emoji-picker/sheets'; 39 | 40 | constructor(private emojiPickerOptions: EmojiPickerOptions) { 41 | this.emojiPickerOptions.setEmojiSheet({ 42 | url: 'sheet_apple_32.png', 43 | locator: EmojiPickerAppleSheetLocator 44 | }); 45 | } 46 | ``` 47 | 48 | include the sheet_apple_32.png file in your build and provide your specific file url 49 | 50 | ``` 51 | /** .angular-cli.json */ 52 | 53 | { 54 | "apps": [ 55 | { 56 | "assets": [ 57 | { "glob": "sheet_apple_32.png", "input": "../node_modules/angular2-emoji-picker/sheets/", "output": "./" } 58 | ] 59 | } 60 | ] 61 | } 62 | 63 | ``` 64 | 65 | ### Directive API: 66 | 67 | ``` 68 | 😄 75 | ``` 76 | 77 | ### Emitter `(emojiPickerSelect)="handleSelection($event)"` 78 | 79 | ``` 80 | $event = EmojiEvent{ char : "😌", label : "relieved" } 81 | ``` 82 | 83 | ## EmojiPickerCaretEmitter 84 | 85 | added for your convenience, emits information regarding a contenteditable enabled element 86 | 87 | ### Emitter `(emojiPickerCaretEmitter)="handleCaretChange($event)"` 88 | 89 | ``` 90 | $event = CaretEvent{ caretOffset: 13, caretRange: Range{...}, textContent: 'content of div or input' } 91 | ``` 92 | 93 | Emoji Picker will get placed relative the element chosen via the directive api, centered and within window borders 94 | -------------------------------------------------------------------------------- /src/directives/emoji-picker-caret.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, Output, EventEmitter, ElementRef} from '@angular/core'; 2 | import { Subject } from "rxjs/Subject"; 3 | import 'rxjs/add/operator/takeUntil'; 4 | import 'rxjs/add/operator/distinctUntilChanged'; 5 | 6 | import { CaretEvent } from "../../src"; 7 | 8 | @Directive({ 9 | selector: '[emojiPickerCaretEmitter]', 10 | host: { 11 | '(keyup)': 'updateCaretPosition()', 12 | '(mouseup)': 'updateCaretPosition()', 13 | '(selectstart)': 'updateCaretPosition()', 14 | '(focus)': 'updateCaretPosition()', 15 | '(DOMSubtreeModified)': 'updateCaretDueMutation($event)' 16 | } 17 | }) 18 | export class EmojiPickerCaretDirective { 19 | @Output('emojiPickerCaretEmitter') caretEmitter = new EventEmitter(); 20 | 21 | private _caretEvent$ = new Subject(); 22 | private _destroyed$ = new Subject(); 23 | 24 | private _lastCaretEvent: CaretEvent = CaretEvent.generateNullEvent(); 25 | 26 | private _win; 27 | private _doc; 28 | 29 | get doc() { 30 | if (!this._doc) { 31 | this._doc = this._el.nativeElement.ownerDocument || this._el.nativeElement.document || document; 32 | } 33 | 34 | return this._doc; 35 | } 36 | 37 | get win() { 38 | if (!this._win) { 39 | this._win = this.doc.defaultView || this.doc.parentWindow || window 40 | } 41 | 42 | return this._win 43 | } 44 | 45 | constructor( 46 | private _el: ElementRef 47 | ) { 48 | this._caretEvent$ 49 | .takeUntil(this._destroyed$) 50 | .distinctUntilChanged((event1, event2) => { 51 | return CaretEvent.compare(event1, event2); 52 | }) 53 | .subscribe((event: CaretEvent) => { 54 | this.caretEmitter.emit(event); 55 | this._lastCaretEvent = event.clone() 56 | }) 57 | ; 58 | } 59 | 60 | ngOnInit() { 61 | if (!this._el.nativeElement.getAttribute('contenteditable') && this._el.nativeElement.tagName.toLowerCase() !== 'input') { 62 | throw new Error('(emojiPickerPositionEmitter) should only work on contenteditable enabled or input elements'); 63 | } 64 | } 65 | 66 | ngOnDestroy() { 67 | this._destroyed$.next(true); 68 | } 69 | 70 | updateCaretPosition() { 71 | const cEvent = CaretEvent.generateCaretEvent(this.win, this.doc, this._el.nativeElement); 72 | this._caretEvent$.next(cEvent); 73 | } 74 | 75 | updateCaretDueMutation() { 76 | const cEvent = CaretEvent.generateCaretEvent(this.win, this.doc, this._el.nativeElement); 77 | let textMovement = cEvent.textContent.length - this._lastCaretEvent.textContent.length; 78 | cEvent.caretOffset = this._lastCaretEvent.caretOffset + textMovement; 79 | 80 | /** change detection after DOMSubtreeModified event is weird 81 | * ChangeDetectorRef.detectChanges(), ChangeDetectorRef.markForCheck(), ApplicationRef.tick(), NgZone.run() 82 | * all of those methods did not work as expected. 83 | * As a temporary hack I am emitting an event after a short timeout, which is fine due to the _caretEvent$ smart stream 84 | */ 85 | 86 | setTimeout(() => { 87 | this._caretEvent$.next(cEvent); 88 | }); 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /src/lib/caret-event.ts: -------------------------------------------------------------------------------- 1 | export class CaretEvent { 2 | caretOffset: number; 3 | caretRange: Range; 4 | textContent: string; 5 | 6 | constructor(data) { 7 | Object.assign(this, data); 8 | } 9 | 10 | clone(): CaretEvent { 11 | return new CaretEvent(Object.assign({}, this, { 12 | caretRange: this.caretRange && this.caretRange.cloneRange ? this.caretRange.cloneRange() : this.caretRange 13 | })); 14 | } 15 | 16 | static generateNullEvent() { 17 | return new CaretEvent({ 18 | caretOffset: 0, 19 | textContent: '' 20 | }); 21 | } 22 | 23 | static comparePropsOfObject(r1, r2) { 24 | for (let k in r1) { 25 | if (r1[k] !== r2[k]) { 26 | return false 27 | } 28 | } 29 | return true; 30 | } 31 | 32 | static compare(e1: CaretEvent, e2: CaretEvent): boolean { 33 | const changed = 34 | /** different when either caretRange is omitted while other exists */ 35 | (!e1.caretRange && e2.caretRange) || 36 | (e1.caretRange && !e2.caretRange) || 37 | /** different when offset has changed */ 38 | (e1.caretOffset !== e2.caretOffset) || 39 | /** different when textContent has changed */ 40 | (e1.textContent !== e2.textContent) || 41 | /** different when range object properties changed */ 42 | !this.comparePropsOfObject(e1.caretRange, e2.caretRange) 43 | ; 44 | 45 | return !changed; 46 | } 47 | 48 | static generateCaretEvent(win, doc, element: HTMLElement & HTMLInputElement): CaretEvent { 49 | let caretOffset = 0, sel, caretRange, textContent = element.textContent; 50 | 51 | if (element.tagName.toLowerCase() === 'input') { 52 | return new CaretEvent({ 53 | caretOffset: element.selectionEnd, 54 | textContent: element.value 55 | }) 56 | } 57 | 58 | if (typeof win.getSelection != "undefined") { 59 | sel = win.getSelection(); 60 | if (sel.rangeCount > 0) { 61 | const range = win.getSelection().getRangeAt(0); 62 | const preCaretRange = range.cloneRange(); 63 | const nodeLength = element.textContent.length; 64 | preCaretRange.selectNodeContents(element); 65 | preCaretRange.setEnd(range.endContainer, range.endOffset > nodeLength ? nodeLength : range.endOffset); 66 | caretOffset = preCaretRange.toString().length; 67 | 68 | /** Keeping a reference of the range to emit */ 69 | caretRange = range.cloneRange(); 70 | } 71 | } else if ((sel = doc.selection) && sel.type != "Control") { 72 | const textRange = sel.createRange(); 73 | const preCaretTextRange = doc.body.createTextRange(); 74 | preCaretTextRange.moveToElementText(element); 75 | preCaretTextRange.setEndPoint("EndToEnd", textRange); 76 | caretOffset = preCaretTextRange.text.length; 77 | 78 | /** Keeping a reference of the range to emit and making it compatible */ 79 | caretRange = textRange.duplicate(); 80 | caretRange.insertNode = (e) => { 81 | const container = document.createElement("div"); 82 | container.appendChild(e); 83 | caretRange.pasteHTML(container.innerHTML); 84 | }; 85 | } 86 | 87 | return new CaretEvent({ 88 | caretOffset, 89 | caretRange, 90 | textContent 91 | }); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /demo/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "callable-types": true, 7 | "class-name": true, 8 | "comment-format": [ 9 | true, 10 | "check-space" 11 | ], 12 | "curly": true, 13 | "eofline": true, 14 | "forin": true, 15 | "import-blacklist": [true, "rxjs"], 16 | "import-spacing": true, 17 | "indent": [ 18 | true, 19 | "spaces" 20 | ], 21 | "interface-over-type-literal": true, 22 | "label-position": true, 23 | "max-line-length": [ 24 | true, 25 | 140 26 | ], 27 | "member-access": false, 28 | "member-ordering": [ 29 | true, 30 | "static-before-instance", 31 | "variables-before-functions" 32 | ], 33 | "no-arg": true, 34 | "no-bitwise": true, 35 | "no-console": [ 36 | true, 37 | "debug", 38 | "info", 39 | "time", 40 | "timeEnd", 41 | "trace" 42 | ], 43 | "no-construct": true, 44 | "no-debugger": true, 45 | "no-duplicate-variable": true, 46 | "no-empty": false, 47 | "no-empty-interface": true, 48 | "no-eval": true, 49 | "no-inferrable-types": [true, "ignore-params"], 50 | "no-shadowed-variable": true, 51 | "no-string-literal": false, 52 | "no-string-throw": true, 53 | "no-switch-case-fall-through": true, 54 | "no-trailing-whitespace": true, 55 | "no-unused-expression": true, 56 | "no-use-before-declare": true, 57 | "no-var-keyword": true, 58 | "object-literal-sort-keys": false, 59 | "one-line": [ 60 | true, 61 | "check-open-brace", 62 | "check-catch", 63 | "check-else", 64 | "check-whitespace" 65 | ], 66 | "prefer-const": true, 67 | "quotemark": [ 68 | true, 69 | "single" 70 | ], 71 | "radix": true, 72 | "semicolon": [ 73 | "always" 74 | ], 75 | "triple-equals": [ 76 | true, 77 | "allow-null-check" 78 | ], 79 | "typedef-whitespace": [ 80 | true, 81 | { 82 | "call-signature": "nospace", 83 | "index-signature": "nospace", 84 | "parameter": "nospace", 85 | "property-declaration": "nospace", 86 | "variable-declaration": "nospace" 87 | } 88 | ], 89 | "typeof-compare": true, 90 | "unified-signatures": true, 91 | "variable-name": false, 92 | "whitespace": [ 93 | true, 94 | "check-branch", 95 | "check-decl", 96 | "check-operator", 97 | "check-separator", 98 | "check-type" 99 | ], 100 | 101 | "directive-selector": [true, "attribute", "app", "camelCase"], 102 | "component-selector": [true, "element", "app", "kebab-case"], 103 | "use-input-property-decorator": true, 104 | "use-output-property-decorator": true, 105 | "use-host-property-decorator": true, 106 | "no-input-rename": true, 107 | "no-output-rename": true, 108 | "use-life-cycle-interface": true, 109 | "use-pipe-transform-interface": true, 110 | "component-class-suffix": true, 111 | "directive-class-suffix": true, 112 | "no-access-missing-member": true, 113 | "templates-use-public": true, 114 | "invoke-injectable": true 115 | } 116 | } 117 | -------------------------------------------------------------------------------- /src/components/emoji-picker.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Output, ElementRef, Renderer } from '@angular/core'; 2 | import { DIRECTIONS } from "../lib/picker-directions"; 3 | import { Subject } from "rxjs/Subject"; 4 | import 'rxjs/add/operator/debounceTime'; 5 | import 'rxjs/add/operator/takeUntil'; 6 | 7 | @Component({ 8 | selector: 'emoji-picker', 9 | styles: [':host { position: absolute; z-index: 9999; }'], 10 | template: ` 11 | 12 | `, 13 | host: { 14 | '(document:mousedown)': 'onBackground($event)', 15 | '(mousedown)': '_lastHostMousedownEvent = $event', 16 | '(window:resize)': '_windowResize.next($event)' 17 | } 18 | }) 19 | 20 | export class EmojiPickerComponent { 21 | @Output('emoji-select') selectionEmitter = new EventEmitter(); 22 | @Output('picker-close') pickerCloseEmitter = new EventEmitter(); 23 | 24 | emojiPickerAutofocus: boolean; 25 | 26 | private _lastHostMousedownEvent; 27 | private _currentTarget: ElementRef; 28 | private _currentDirection: DIRECTIONS; 29 | 30 | private _windowResize = new Subject(); 31 | private _destroyed = new Subject(); 32 | 33 | constructor(private _renderer: Renderer, private _el: ElementRef) { 34 | this._windowResize 35 | .takeUntil(this._destroyed) 36 | .debounceTime(100) 37 | .subscribe(event => { 38 | this.setPosition(this._currentTarget, this._currentDirection); 39 | }) 40 | } 41 | 42 | setPosition(target: ElementRef, directionCode: DIRECTIONS = DIRECTIONS.bottom) { 43 | if (!target) { 44 | return console.error('Emoji-Picker: positioning failed due to missing target element or direction code'); 45 | } 46 | 47 | this._renderer.setElementStyle(this._el.nativeElement, 'transform', ''); 48 | 49 | /** Store anchor and direction */ 50 | this._currentTarget = target; 51 | this._currentDirection = directionCode; 52 | 53 | const targetBorders = target.nativeElement.getBoundingClientRect(), 54 | thisBorders = this._el.nativeElement.getBoundingClientRect(); 55 | 56 | let heightCorrection = 0, widthCorrection = 0; 57 | 58 | /** Setting up centering of picker for all cases */ 59 | switch (this._currentDirection) { 60 | case DIRECTIONS.top: 61 | case DIRECTIONS.bottom: 62 | widthCorrection = targetBorders.left - thisBorders.left + (targetBorders.width - thisBorders.width) / 2; 63 | break; 64 | case DIRECTIONS.left: 65 | case DIRECTIONS.right: 66 | heightCorrection = targetBorders.top - thisBorders.top + (targetBorders.height - thisBorders.height) / 2; 67 | break; 68 | } 69 | 70 | /** Setting up relative positioning for all cases */ 71 | switch (this._currentDirection) { 72 | case DIRECTIONS.top: 73 | heightCorrection = targetBorders.top - thisBorders.bottom; 74 | break; 75 | case DIRECTIONS.left: 76 | widthCorrection = targetBorders.left - thisBorders.right; 77 | break; 78 | case DIRECTIONS.right: 79 | widthCorrection = targetBorders.right - thisBorders.left; 80 | break; 81 | case DIRECTIONS.bottom: 82 | heightCorrection = targetBorders.bottom - thisBorders.top; 83 | break; 84 | } 85 | 86 | /** Correcting positioning due to overflow problems */ 87 | if (thisBorders.bottom + heightCorrection > window.innerHeight) { 88 | heightCorrection += window.innerHeight - (thisBorders.bottom + heightCorrection); 89 | } 90 | 91 | if (thisBorders.top + heightCorrection < 0) { 92 | heightCorrection -= (thisBorders.top + heightCorrection); 93 | } 94 | 95 | if (thisBorders.right + widthCorrection > window.innerWidth) { 96 | widthCorrection += window.innerWidth - (thisBorders.right + widthCorrection); 97 | } 98 | 99 | if (thisBorders.left + widthCorrection < 0) { 100 | widthCorrection -= (thisBorders.left + widthCorrection); 101 | } 102 | 103 | /** set the position adjustments to the emoji picker element */ 104 | this._renderer.setElementStyle(this._el.nativeElement, 'transform', `translate(${widthCorrection}px,${heightCorrection}px)`); 105 | } 106 | 107 | setAutofocus(value) { 108 | this.emojiPickerAutofocus = value; 109 | } 110 | 111 | onBackground(event) { 112 | /** internal mousedowns are ignored */ 113 | if (event === this._lastHostMousedownEvent || event.emojiPickerExempt) { 114 | return; 115 | } 116 | 117 | this.pickerCloseEmitter.emit(event); 118 | } 119 | 120 | ngOnDestroy() { 121 | this._destroyed.next(true); 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /src/directives/emoji-picker-api.directive.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Directive, 3 | Input, 4 | ComponentFactoryResolver, 5 | ViewContainerRef, 6 | ComponentFactory, 7 | ComponentRef, 8 | ElementRef, 9 | EventEmitter, 10 | Output 11 | } from '@angular/core'; 12 | import { Subject } from "rxjs/Subject"; 13 | import 'rxjs/add/operator/takeUntil'; 14 | import 'rxjs/add/operator/distinctUntilChanged'; 15 | 16 | import { EmojiPickerComponent } from './../components'; 17 | import { DIRECTIONS } from '../lib/picker-directions'; 18 | import { Subscription } from "rxjs/Subscription"; 19 | import { EmojiEvent } from "../"; 20 | 21 | @Directive({ 22 | selector: '[emojiPickerIf]', 23 | host: { 24 | '(mousedown)': '$event.emojiPickerExempt = true' // marking off event listening on anchor 25 | } 26 | }) 27 | export class EmojiPickerApiDirective { 28 | private _directionCode: DIRECTIONS = DIRECTIONS.bottom; 29 | 30 | /** [emojiPickerDirection]="'top' || 'bottom' || 'left' || 'right'" defaults to 'bottom' */ 31 | @Input('emojiPickerDirection') set emojiPickerDirection(direction: string) { 32 | if (DIRECTIONS[direction] === undefined) { 33 | console.error(`Emoji-Picker: direction '${direction}' passed as input does not exist in DIRECTIONS table, defaulting to 'bottom'`); 34 | this._directionCode = DIRECTIONS.bottom; 35 | } else { 36 | this._directionCode = DIRECTIONS[direction]; 37 | } 38 | } 39 | 40 | /** [emojiPickerPreserveSelection]="true || false" preserves or forgets prexisting selection while toggling picker */ 41 | @Input('emojiPickerPreserveSelection') emojiPickerPreserveSelection: boolean; 42 | 43 | /** [(emojiPickerIf)]="true || false" opens up or closes the picker */ 44 | @Input('emojiPickerIf') set emojiPickerIf(condition: boolean) { 45 | this._emojiPickerOpenState.next(condition); 46 | } 47 | @Output('emojiPickerIfChange') emojiPickerIfEmitter = new EventEmitter(); 48 | 49 | /** (emojiPickerSelect)="eventHandler($event)" // emits emoji picking event */ 50 | @Output('emojiPickerSelect') selectEmitter = new EventEmitter(); 51 | 52 | /** [emojiPickerAutofocus]="true || false" */ 53 | @Input('emojiPickerAutofocus') emojiPickerAutofocus: boolean; 54 | 55 | private _emojiPickerOpenState = new Subject(); 56 | private _destroyed = new Subject(); 57 | 58 | private _emojiPickerFactory: ComponentFactory; 59 | private _emojiPickerRef: ComponentRef; 60 | private _emojiSubs: Subscription[] = []; 61 | 62 | private _recordedSelection; 63 | 64 | constructor( 65 | private _cfr: ComponentFactoryResolver, 66 | private _vcr: ViewContainerRef, 67 | private _el: ElementRef 68 | ) { 69 | this._emojiPickerOpenState 70 | .takeUntil(this._destroyed) 71 | .distinctUntilChanged() 72 | .subscribe(value => { 73 | if (value) { 74 | this.openPicker(); 75 | } else { 76 | this.closePicker(); 77 | } 78 | }); 79 | } 80 | 81 | openPicker() { 82 | this._emojiPickerFactory = this._emojiPickerFactory || this._cfr.resolveComponentFactory(EmojiPickerComponent); 83 | this._emojiPickerRef = this._emojiPickerRef || this._vcr.createComponent(this._emojiPickerFactory); 84 | 85 | this.recordSelection(); 86 | 87 | this._emojiPickerRef.instance.setPosition(this._el, this._directionCode); 88 | this._emojiPickerRef.instance.setAutofocus(this.emojiPickerAutofocus); 89 | this._emojiSubs.push( 90 | this._emojiPickerRef.instance.pickerCloseEmitter.subscribe(event => this.emojiPickerIfEmitter.emit(false)), 91 | this._emojiPickerRef.instance.selectionEmitter.subscribe(event => this.selectEmitter.emit(EmojiEvent.fromArray(event))) 92 | ); 93 | 94 | this.restoreSelection(); 95 | } 96 | 97 | closePicker() { 98 | if (!this._emojiPickerRef || !this._emojiPickerRef.destroy) { 99 | return; 100 | } 101 | 102 | this._emojiSubs.forEach((subscription: Subscription) => subscription.unsubscribe()); 103 | this._emojiPickerRef.destroy(); 104 | 105 | this._emojiSubs = []; 106 | delete this._emojiPickerRef; 107 | } 108 | 109 | recordSelection() { 110 | if (!this.emojiPickerPreserveSelection) { 111 | return; 112 | } 113 | 114 | if (window.getSelection) { 115 | let sel = window.getSelection(); 116 | if (sel.getRangeAt && sel.rangeCount) { 117 | return this._recordedSelection = sel.getRangeAt(0); 118 | } 119 | } else if (document['selection'] && document['selection'].createRange) { 120 | return this._recordedSelection = document['selection'].createRange(); 121 | } 122 | } 123 | 124 | restoreSelection() { 125 | if (!this.emojiPickerPreserveSelection || !this._recordedSelection) { 126 | return; 127 | } 128 | 129 | if (window.getSelection) { 130 | let sel = window.getSelection(); 131 | sel.removeAllRanges(); 132 | sel.addRange(this._recordedSelection); 133 | } else if (document['selection'] && this._recordedSelection.select) { 134 | this._recordedSelection.select(); 135 | } 136 | } 137 | 138 | ngOnDestroy() { 139 | this._destroyed.next(true); 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /src/lib/emojis.data.ts: -------------------------------------------------------------------------------- 1 | export const EMOJIS = [ 2 | { 3 | "emojis": [ 4 | [ 5 | "😄", 6 | "smile" 7 | ], 8 | [ 9 | "😃", 10 | "smiley" 11 | ], 12 | [ 13 | "😀", 14 | "grinning" 15 | ], 16 | [ 17 | "😊", 18 | "blush" 19 | ], 20 | [ 21 | "☺", 22 | "relaxed" 23 | ], 24 | [ 25 | "😉", 26 | "wink" 27 | ], 28 | [ 29 | "😍", 30 | "heart_eyes" 31 | ], 32 | [ 33 | "😘", 34 | "kissing_heart" 35 | ], 36 | [ 37 | "😚", 38 | "kissing_closed_eyes" 39 | ], 40 | [ 41 | "😗", 42 | "kissing" 43 | ], 44 | [ 45 | "😙", 46 | "kissing_smiling_eyes" 47 | ], 48 | [ 49 | "😜", 50 | "stuck_out_tongue_winking_eye" 51 | ], 52 | [ 53 | "😝", 54 | "stuck_out_tongue_closed_eyes" 55 | ], 56 | [ 57 | "😛", 58 | "stuck_out_tongue" 59 | ], 60 | [ 61 | "😳", 62 | "flushed" 63 | ], 64 | [ 65 | "😁", 66 | "grin" 67 | ], 68 | [ 69 | "😔", 70 | "pensive" 71 | ], 72 | [ 73 | "😌", 74 | "relieved" 75 | ], 76 | [ 77 | "😒", 78 | "unamused" 79 | ], 80 | [ 81 | "😞", 82 | "disappointed" 83 | ], 84 | [ 85 | "😣", 86 | "persevere" 87 | ], 88 | [ 89 | "😢", 90 | "cry" 91 | ], 92 | [ 93 | "😂", 94 | "joy" 95 | ], 96 | [ 97 | "😭", 98 | "sob" 99 | ], 100 | [ 101 | "😪", 102 | "sleepy" 103 | ], 104 | [ 105 | "😥", 106 | "disappointed_relieved" 107 | ], 108 | [ 109 | "😰", 110 | "cold_sweat" 111 | ], 112 | [ 113 | "😅", 114 | "sweat_smile" 115 | ], 116 | [ 117 | "😓", 118 | "sweat" 119 | ], 120 | [ 121 | "😩", 122 | "weary" 123 | ], 124 | [ 125 | "😫", 126 | "tired_face" 127 | ], 128 | [ 129 | "😨", 130 | "fearful" 131 | ], 132 | [ 133 | "😱", 134 | "scream" 135 | ], 136 | [ 137 | "😠", 138 | "angry" 139 | ], 140 | [ 141 | "😡", 142 | "rage" 143 | ], 144 | [ 145 | "😤", 146 | "triumph" 147 | ], 148 | [ 149 | "😖", 150 | "confounded" 151 | ], 152 | [ 153 | "😆", 154 | "laughing" 155 | ], 156 | [ 157 | "😋", 158 | "yum" 159 | ], 160 | [ 161 | "😷", 162 | "mask" 163 | ], 164 | [ 165 | "😎", 166 | "sunglasses" 167 | ], 168 | [ 169 | "😴", 170 | "sleeping" 171 | ], 172 | [ 173 | "😵", 174 | "dizzy_face" 175 | ], 176 | [ 177 | "😲", 178 | "astonished" 179 | ], 180 | [ 181 | "😟", 182 | "worried" 183 | ], 184 | [ 185 | "😦", 186 | "frowning" 187 | ], 188 | [ 189 | "😧", 190 | "anguished" 191 | ], 192 | [ 193 | "👿", 194 | "imp" 195 | ], 196 | [ 197 | "😮", 198 | "open_mouth" 199 | ], 200 | [ 201 | "😬", 202 | "grimacing" 203 | ], 204 | [ 205 | "😐", 206 | "neutral_face" 207 | ], 208 | [ 209 | "😕", 210 | "confused" 211 | ], 212 | [ 213 | "😯", 214 | "hushed" 215 | ], 216 | [ 217 | "😏", 218 | "smirk" 219 | ], 220 | [ 221 | "😑", 222 | "expressionless" 223 | ], 224 | [ 225 | "👲", 226 | "man_with_gua_pi_mao" 227 | ], 228 | [ 229 | "👳", 230 | "man_with_turban" 231 | ], 232 | [ 233 | "👮", 234 | "cop" 235 | ], 236 | [ 237 | "👷", 238 | "construction_worker" 239 | ], 240 | [ 241 | "💂", 242 | "guardsman" 243 | ], 244 | [ 245 | "👶", 246 | "baby" 247 | ], 248 | [ 249 | "👦", 250 | "boy" 251 | ], 252 | [ 253 | "👧", 254 | "girl" 255 | ], 256 | [ 257 | "👨", 258 | "man" 259 | ], 260 | [ 261 | "👩", 262 | "woman" 263 | ], 264 | [ 265 | "👴", 266 | "older_man" 267 | ], 268 | [ 269 | "👵", 270 | "older_woman" 271 | ], 272 | [ 273 | "👱", 274 | "person_with_blond_hair" 275 | ], 276 | [ 277 | "👼", 278 | "angel" 279 | ], 280 | [ 281 | "👸", 282 | "princess" 283 | ], 284 | [ 285 | "😺", 286 | "smiley_cat" 287 | ], 288 | [ 289 | "😸", 290 | "smile_cat" 291 | ], 292 | [ 293 | "😻", 294 | "heart_eyes_cat" 295 | ], 296 | [ 297 | "😽", 298 | "kissing_cat" 299 | ], 300 | [ 301 | "😼", 302 | "smirk_cat" 303 | ], 304 | [ 305 | "🙀", 306 | "scream_cat" 307 | ], 308 | [ 309 | "😿", 310 | "crying_cat_face" 311 | ], 312 | [ 313 | "😹", 314 | "joy_cat" 315 | ], 316 | [ 317 | "😾", 318 | "pouting_cat" 319 | ], 320 | [ 321 | "👹", 322 | "japanese_ogre" 323 | ], 324 | [ 325 | "👺", 326 | "japanese_goblin" 327 | ], 328 | [ 329 | "🙈", 330 | "see_no_evil" 331 | ], 332 | [ 333 | "🙉", 334 | "hear_no_evil" 335 | ], 336 | [ 337 | "🙊", 338 | "speak_no_evil" 339 | ], 340 | [ 341 | "💀", 342 | "skull" 343 | ], 344 | [ 345 | "👽", 346 | "alien" 347 | ], 348 | [ 349 | "💩", 350 | "hankey" 351 | ], 352 | [ 353 | "🔥", 354 | "fire" 355 | ], 356 | [ 357 | "✨", 358 | "sparkles" 359 | ], 360 | [ 361 | "🌟", 362 | "star2" 363 | ], 364 | [ 365 | "💫", 366 | "dizzy" 367 | ], 368 | [ 369 | "💥", 370 | "boom" 371 | ], 372 | [ 373 | "💢", 374 | "anger" 375 | ], 376 | [ 377 | "💦", 378 | "sweat_drops" 379 | ], 380 | [ 381 | "💧", 382 | "droplet" 383 | ], 384 | [ 385 | "💤", 386 | "zzz" 387 | ], 388 | [ 389 | "💨", 390 | "dash" 391 | ], 392 | [ 393 | "👂", 394 | "ear" 395 | ], 396 | [ 397 | "👀", 398 | "eyes" 399 | ], 400 | [ 401 | "👃", 402 | "nose" 403 | ], 404 | [ 405 | "👅", 406 | "tongue" 407 | ], 408 | [ 409 | "👄", 410 | "lips" 411 | ], 412 | [ 413 | "👍", 414 | "+1" 415 | ], 416 | [ 417 | "👎", 418 | "-1" 419 | ], 420 | [ 421 | "👌", 422 | "ok_hand" 423 | ], 424 | [ 425 | "👊", 426 | "facepunch" 427 | ], 428 | [ 429 | "✊", 430 | "fist" 431 | ], 432 | [ 433 | "✌", 434 | "v" 435 | ], 436 | [ 437 | "👋", 438 | "wave" 439 | ], 440 | [ 441 | "✋", 442 | "hand" 443 | ], 444 | [ 445 | "👐", 446 | "open_hands" 447 | ], 448 | [ 449 | "👆", 450 | "point_up_2" 451 | ], 452 | [ 453 | "👇", 454 | "point_down" 455 | ], 456 | [ 457 | "👉", 458 | "point_right" 459 | ], 460 | [ 461 | "👈", 462 | "point_left" 463 | ], 464 | [ 465 | "🙌", 466 | "raised_hands" 467 | ], 468 | [ 469 | "🙏", 470 | "pray" 471 | ], 472 | [ 473 | "☝", 474 | "point_up" 475 | ], 476 | [ 477 | "👏", 478 | "clap" 479 | ], 480 | [ 481 | "💪", 482 | "muscle" 483 | ], 484 | [ 485 | "🚶", 486 | "walking" 487 | ], 488 | [ 489 | "🏃", 490 | "runner" 491 | ], 492 | [ 493 | "💃", 494 | "dancer" 495 | ], 496 | [ 497 | "👫", 498 | "couple" 499 | ], 500 | [ 501 | "👪", 502 | "family" 503 | ], 504 | [ 505 | "💏", 506 | "couplekiss" 507 | ], 508 | [ 509 | "💑", 510 | "couple_with_heart" 511 | ], 512 | [ 513 | "👯", 514 | "dancers" 515 | ], 516 | [ 517 | "🙆", 518 | "ok_woman" 519 | ], 520 | [ 521 | "🙅", 522 | "no_good" 523 | ], 524 | [ 525 | "💁", 526 | "information_desk_person" 527 | ], 528 | [ 529 | "🙋", 530 | "raising_hand" 531 | ], 532 | [ 533 | "💆", 534 | "massage" 535 | ], 536 | [ 537 | "💇", 538 | "haircut" 539 | ], 540 | [ 541 | "💅", 542 | "nail_care" 543 | ], 544 | [ 545 | "👰", 546 | "bride_with_veil" 547 | ], 548 | [ 549 | "🙎", 550 | "person_with_pouting_face" 551 | ], 552 | [ 553 | "🙍", 554 | "person_frowning" 555 | ], 556 | [ 557 | "🙇", 558 | "bow" 559 | ], 560 | [ 561 | "🎩", 562 | "tophat" 563 | ], 564 | [ 565 | "👑", 566 | "crown" 567 | ], 568 | [ 569 | "👒", 570 | "womans_hat" 571 | ], 572 | [ 573 | "👟", 574 | "athletic_shoe" 575 | ], 576 | [ 577 | "👞", 578 | "mans_shoe" 579 | ], 580 | [ 581 | "👡", 582 | "sandal" 583 | ], 584 | [ 585 | "👠", 586 | "high_heel" 587 | ], 588 | [ 589 | "👢", 590 | "boot" 591 | ], 592 | [ 593 | "👕", 594 | "shirt" 595 | ], 596 | [ 597 | "👔", 598 | "necktie" 599 | ], 600 | [ 601 | "👚", 602 | "womans_clothes" 603 | ], 604 | [ 605 | "👗", 606 | "dress" 607 | ], 608 | [ 609 | "🎽", 610 | "running_shirt_with_sash" 611 | ], 612 | [ 613 | "👖", 614 | "jeans" 615 | ], 616 | [ 617 | "👘", 618 | "kimono" 619 | ], 620 | [ 621 | "👙", 622 | "bikini" 623 | ], 624 | [ 625 | "💼", 626 | "briefcase" 627 | ], 628 | [ 629 | "👜", 630 | "handbag" 631 | ], 632 | [ 633 | "👝", 634 | "pouch" 635 | ], 636 | [ 637 | "👛", 638 | "purse" 639 | ], 640 | [ 641 | "👓", 642 | "eyeglasses" 643 | ], 644 | [ 645 | "🎀", 646 | "ribbon" 647 | ], 648 | [ 649 | "🌂", 650 | "closed_umbrella" 651 | ], 652 | [ 653 | "💄", 654 | "lipstick" 655 | ], 656 | [ 657 | "💛", 658 | "yellow_heart" 659 | ], 660 | [ 661 | "💙", 662 | "blue_heart" 663 | ], 664 | [ 665 | "💜", 666 | "purple_heart" 667 | ], 668 | [ 669 | "💚", 670 | "green_heart" 671 | ], 672 | [ 673 | "❤", 674 | "heart" 675 | ], 676 | [ 677 | "💔", 678 | "broken_heart" 679 | ], 680 | [ 681 | "💗", 682 | "heartpulse" 683 | ], 684 | [ 685 | "💓", 686 | "heartbeat" 687 | ], 688 | [ 689 | "💕", 690 | "two_hearts" 691 | ], 692 | [ 693 | "💖", 694 | "sparkling_heart" 695 | ], 696 | [ 697 | "💞", 698 | "revolving_hearts" 699 | ], 700 | [ 701 | "💘", 702 | "cupid" 703 | ], 704 | [ 705 | "💌", 706 | "love_letter" 707 | ], 708 | [ 709 | "💋", 710 | "kiss" 711 | ], 712 | [ 713 | "💍", 714 | "ring" 715 | ], 716 | [ 717 | "💎", 718 | "gem" 719 | ], 720 | [ 721 | "👤", 722 | "bust_in_silhouette" 723 | ], 724 | [ 725 | "💬", 726 | "speech_balloon" 727 | ], 728 | [ 729 | "👣", 730 | "footprints" 731 | ] 732 | ], 733 | "name": "People", 734 | "icon": ["😄", "smile"] 735 | }, 736 | { 737 | "emojis": [ 738 | [ 739 | "🐶", 740 | "dog" 741 | ], 742 | [ 743 | "🐺", 744 | "wolf" 745 | ], 746 | [ 747 | "🐱", 748 | "cat" 749 | ], 750 | [ 751 | "🐭", 752 | "mouse" 753 | ], 754 | [ 755 | "🐹", 756 | "hamster" 757 | ], 758 | [ 759 | "🐰", 760 | "rabbit" 761 | ], 762 | [ 763 | "🐸", 764 | "frog" 765 | ], 766 | [ 767 | "🐯", 768 | "tiger" 769 | ], 770 | [ 771 | "🐨", 772 | "koala" 773 | ], 774 | [ 775 | "🐻", 776 | "bear" 777 | ], 778 | [ 779 | "🐷", 780 | "pig" 781 | ], 782 | [ 783 | "🐽", 784 | "pig_nose" 785 | ], 786 | [ 787 | "🐮", 788 | "cow" 789 | ], 790 | [ 791 | "🐗", 792 | "boar" 793 | ], 794 | [ 795 | "🐵", 796 | "monkey_face" 797 | ], 798 | [ 799 | "🐒", 800 | "monkey" 801 | ], 802 | [ 803 | "🐴", 804 | "horse" 805 | ], 806 | [ 807 | "🐑", 808 | "sheep" 809 | ], 810 | [ 811 | "🐘", 812 | "elephant" 813 | ], 814 | [ 815 | "🐼", 816 | "panda_face" 817 | ], 818 | [ 819 | "🐧", 820 | "penguin" 821 | ], 822 | [ 823 | "🐦", 824 | "bird" 825 | ], 826 | [ 827 | "🐤", 828 | "baby_chick" 829 | ], 830 | [ 831 | "🐥", 832 | "hatched_chick" 833 | ], 834 | [ 835 | "🐣", 836 | "hatching_chick" 837 | ], 838 | [ 839 | "🐔", 840 | "chicken" 841 | ], 842 | [ 843 | "🐍", 844 | "snake" 845 | ], 846 | [ 847 | "🐢", 848 | "turtle" 849 | ], 850 | [ 851 | "🐛", 852 | "bug" 853 | ], 854 | [ 855 | "🐝", 856 | "bee" 857 | ], 858 | [ 859 | "🐜", 860 | "ant" 861 | ], 862 | [ 863 | "🐞", 864 | "beetle" 865 | ], 866 | [ 867 | "🐌", 868 | "snail" 869 | ], 870 | [ 871 | "🐙", 872 | "octopus" 873 | ], 874 | [ 875 | "🐚", 876 | "shell" 877 | ], 878 | [ 879 | "🐠", 880 | "tropical_fish" 881 | ], 882 | [ 883 | "🐟", 884 | "fish" 885 | ], 886 | [ 887 | "🐬", 888 | "dolphin" 889 | ], 890 | [ 891 | "🐳", 892 | "whale" 893 | ], 894 | [ 895 | "🐎", 896 | "racehorse" 897 | ], 898 | [ 899 | "🐲", 900 | "dragon_face" 901 | ], 902 | [ 903 | "🐡", 904 | "blowfish" 905 | ], 906 | [ 907 | "🐫", 908 | "camel" 909 | ], 910 | [ 911 | "🐩", 912 | "poodle" 913 | ], 914 | [ 915 | "🐾", 916 | "feet" 917 | ], 918 | [ 919 | "💐", 920 | "bouquet" 921 | ], 922 | [ 923 | "🌸", 924 | "cherry_blossom" 925 | ], 926 | [ 927 | "🌷", 928 | "tulip" 929 | ], 930 | [ 931 | "🍀", 932 | "four_leaf_clover" 933 | ], 934 | [ 935 | "🌹", 936 | "rose" 937 | ], 938 | [ 939 | "🌻", 940 | "sunflower" 941 | ], 942 | [ 943 | "🌺", 944 | "hibiscus" 945 | ], 946 | [ 947 | "🍁", 948 | "maple_leaf" 949 | ], 950 | [ 951 | "🍃", 952 | "leaves" 953 | ], 954 | [ 955 | "🍂", 956 | "fallen_leaf" 957 | ], 958 | [ 959 | "🌿", 960 | "herb" 961 | ], 962 | [ 963 | "🌾", 964 | "ear_of_rice" 965 | ], 966 | [ 967 | "🍄", 968 | "mushroom" 969 | ], 970 | [ 971 | "🌵", 972 | "cactus" 973 | ], 974 | [ 975 | "🌴", 976 | "palm_tree" 977 | ], 978 | [ 979 | "🌰", 980 | "chestnut" 981 | ], 982 | [ 983 | "🌱", 984 | "seedling" 985 | ], 986 | [ 987 | "🌼", 988 | "blossom" 989 | ], 990 | [ 991 | "🌑", 992 | "new_moon" 993 | ], 994 | [ 995 | "🌓", 996 | "first_quarter_moon" 997 | ], 998 | [ 999 | "🌔", 1000 | "moon" 1001 | ], 1002 | [ 1003 | "🌕", 1004 | "full_moon" 1005 | ], 1006 | [ 1007 | "🌛", 1008 | "first_quarter_moon_with_face" 1009 | ], 1010 | [ 1011 | "🌙", 1012 | "crescent_moon" 1013 | ], 1014 | [ 1015 | "🌏", 1016 | "earth_asia" 1017 | ], 1018 | [ 1019 | "🌋", 1020 | "volcano" 1021 | ], 1022 | [ 1023 | "🌌", 1024 | "milky_way" 1025 | ], 1026 | [ 1027 | "🌠", 1028 | "stars" 1029 | ], 1030 | [ 1031 | "⭐", 1032 | "star" 1033 | ], 1034 | [ 1035 | "☀", 1036 | "sunny" 1037 | ], 1038 | [ 1039 | "⛅", 1040 | "partly_sunny" 1041 | ], 1042 | [ 1043 | "☁", 1044 | "cloud" 1045 | ], 1046 | [ 1047 | "⚡", 1048 | "zap" 1049 | ], 1050 | [ 1051 | "☔", 1052 | "umbrella" 1053 | ], 1054 | [ 1055 | "❄", 1056 | "snowflake" 1057 | ], 1058 | [ 1059 | "⛄", 1060 | "snowman" 1061 | ], 1062 | [ 1063 | "🌀", 1064 | "cyclone" 1065 | ], 1066 | [ 1067 | "🌁", 1068 | "foggy" 1069 | ], 1070 | [ 1071 | "🌈", 1072 | "rainbow" 1073 | ], 1074 | [ 1075 | "🌊", 1076 | "ocean" 1077 | ] 1078 | ], 1079 | "name": "Nature", 1080 | "icon": ["🌸", "cherry_blossom"] 1081 | }, 1082 | { 1083 | "emojis": [ 1084 | [ 1085 | "🎍", 1086 | "bamboo" 1087 | ], 1088 | [ 1089 | "💝", 1090 | "gift_heart" 1091 | ], 1092 | [ 1093 | "🎎", 1094 | "dolls" 1095 | ], 1096 | [ 1097 | "🎒", 1098 | "school_satchel" 1099 | ], 1100 | [ 1101 | "🎓", 1102 | "mortar_board" 1103 | ], 1104 | [ 1105 | "🎏", 1106 | "flags" 1107 | ], 1108 | [ 1109 | "🎆", 1110 | "fireworks" 1111 | ], 1112 | [ 1113 | "🎇", 1114 | "sparkler" 1115 | ], 1116 | [ 1117 | "🎐", 1118 | "wind_chime" 1119 | ], 1120 | [ 1121 | "🎑", 1122 | "rice_scene" 1123 | ], 1124 | [ 1125 | "🎃", 1126 | "jack_o_lantern" 1127 | ], 1128 | [ 1129 | "👻", 1130 | "ghost" 1131 | ], 1132 | [ 1133 | "🎅", 1134 | "santa" 1135 | ], 1136 | [ 1137 | "🎄", 1138 | "christmas_tree" 1139 | ], 1140 | [ 1141 | "🎁", 1142 | "gift" 1143 | ], 1144 | [ 1145 | "🎋", 1146 | "tanabata_tree" 1147 | ], 1148 | [ 1149 | "🎉", 1150 | "tada" 1151 | ], 1152 | [ 1153 | "🎊", 1154 | "confetti_ball" 1155 | ], 1156 | [ 1157 | "🎈", 1158 | "balloon" 1159 | ], 1160 | [ 1161 | "🎌", 1162 | "crossed_flags" 1163 | ], 1164 | [ 1165 | "🔮", 1166 | "crystal_ball" 1167 | ], 1168 | [ 1169 | "🎥", 1170 | "movie_camera" 1171 | ], 1172 | [ 1173 | "📷", 1174 | "camera" 1175 | ], 1176 | [ 1177 | "📹", 1178 | "video_camera" 1179 | ], 1180 | [ 1181 | "📼", 1182 | "vhs" 1183 | ], 1184 | [ 1185 | "💿", 1186 | "cd" 1187 | ], 1188 | [ 1189 | "📀", 1190 | "dvd" 1191 | ], 1192 | [ 1193 | "💽", 1194 | "minidisc" 1195 | ], 1196 | [ 1197 | "💾", 1198 | "floppy_disk" 1199 | ], 1200 | [ 1201 | "💻", 1202 | "computer" 1203 | ], 1204 | [ 1205 | "📱", 1206 | "iphone" 1207 | ], 1208 | [ 1209 | "☎", 1210 | "phone" 1211 | ], 1212 | [ 1213 | "📞", 1214 | "telephone_receiver" 1215 | ], 1216 | [ 1217 | "📟", 1218 | "pager" 1219 | ], 1220 | [ 1221 | "📠", 1222 | "fax" 1223 | ], 1224 | [ 1225 | "📡", 1226 | "satellite" 1227 | ], 1228 | [ 1229 | "📺", 1230 | "tv" 1231 | ], 1232 | [ 1233 | "📻", 1234 | "radio" 1235 | ], 1236 | [ 1237 | "🔊", 1238 | "loud_sound" 1239 | ], 1240 | [ 1241 | "🔔", 1242 | "bell" 1243 | ], 1244 | [ 1245 | "📢", 1246 | "loudspeaker" 1247 | ], 1248 | [ 1249 | "📣", 1250 | "mega" 1251 | ], 1252 | [ 1253 | "⏳", 1254 | "hourglass_flowing_sand" 1255 | ], 1256 | [ 1257 | "⌛", 1258 | "hourglass" 1259 | ], 1260 | [ 1261 | "⏰", 1262 | "alarm_clock" 1263 | ], 1264 | [ 1265 | "⌚", 1266 | "watch" 1267 | ], 1268 | [ 1269 | "🔓", 1270 | "unlock" 1271 | ], 1272 | [ 1273 | "🔒", 1274 | "lock" 1275 | ], 1276 | [ 1277 | "🔏", 1278 | "lock_with_ink_pen" 1279 | ], 1280 | [ 1281 | "🔐", 1282 | "closed_lock_with_key" 1283 | ], 1284 | [ 1285 | "🔑", 1286 | "key" 1287 | ], 1288 | [ 1289 | "🔎", 1290 | "mag_right" 1291 | ], 1292 | [ 1293 | "💡", 1294 | "bulb" 1295 | ], 1296 | [ 1297 | "🔦", 1298 | "flashlight" 1299 | ], 1300 | [ 1301 | "🔌", 1302 | "electric_plug" 1303 | ], 1304 | [ 1305 | "🔋", 1306 | "battery" 1307 | ], 1308 | [ 1309 | "🔍", 1310 | "mag" 1311 | ], 1312 | [ 1313 | "🛀", 1314 | "bath" 1315 | ], 1316 | [ 1317 | "🚽", 1318 | "toilet" 1319 | ], 1320 | [ 1321 | "🔧", 1322 | "wrench" 1323 | ], 1324 | [ 1325 | "🔩", 1326 | "nut_and_bolt" 1327 | ], 1328 | [ 1329 | "🔨", 1330 | "hammer" 1331 | ], 1332 | [ 1333 | "🚪", 1334 | "door" 1335 | ], 1336 | [ 1337 | "🚬", 1338 | "smoking" 1339 | ], 1340 | [ 1341 | "💣", 1342 | "bomb" 1343 | ], 1344 | [ 1345 | "🔫", 1346 | "gun" 1347 | ], 1348 | [ 1349 | "🔪", 1350 | "hocho" 1351 | ], 1352 | [ 1353 | "💊", 1354 | "pill" 1355 | ], 1356 | [ 1357 | "💉", 1358 | "syringe" 1359 | ], 1360 | [ 1361 | "💰", 1362 | "moneybag" 1363 | ], 1364 | [ 1365 | "💴", 1366 | "yen" 1367 | ], 1368 | [ 1369 | "💵", 1370 | "dollar" 1371 | ], 1372 | [ 1373 | "💳", 1374 | "credit_card" 1375 | ], 1376 | [ 1377 | "💸", 1378 | "money_with_wings" 1379 | ], 1380 | [ 1381 | "📲", 1382 | "calling" 1383 | ], 1384 | [ 1385 | "📧", 1386 | "e-mail" 1387 | ], 1388 | [ 1389 | "📥", 1390 | "inbox_tray" 1391 | ], 1392 | [ 1393 | "📤", 1394 | "outbox_tray" 1395 | ], 1396 | [ 1397 | "✉", 1398 | "email" 1399 | ], 1400 | [ 1401 | "📩", 1402 | "envelope_with_arrow" 1403 | ], 1404 | [ 1405 | "📨", 1406 | "incoming_envelope" 1407 | ], 1408 | [ 1409 | "📫", 1410 | "mailbox" 1411 | ], 1412 | [ 1413 | "📪", 1414 | "mailbox_closed" 1415 | ], 1416 | [ 1417 | "📮", 1418 | "postbox" 1419 | ], 1420 | [ 1421 | "📦", 1422 | "package" 1423 | ], 1424 | [ 1425 | "📝", 1426 | "memo" 1427 | ], 1428 | [ 1429 | "📄", 1430 | "page_facing_up" 1431 | ], 1432 | [ 1433 | "📃", 1434 | "page_with_curl" 1435 | ], 1436 | [ 1437 | "📑", 1438 | "bookmark_tabs" 1439 | ], 1440 | [ 1441 | "📊", 1442 | "bar_chart" 1443 | ], 1444 | [ 1445 | "📈", 1446 | "chart_with_upwards_trend" 1447 | ], 1448 | [ 1449 | "📉", 1450 | "chart_with_downwards_trend" 1451 | ], 1452 | [ 1453 | "📜", 1454 | "scroll" 1455 | ], 1456 | [ 1457 | "📋", 1458 | "clipboard" 1459 | ], 1460 | [ 1461 | "📅", 1462 | "date" 1463 | ], 1464 | [ 1465 | "📆", 1466 | "calendar" 1467 | ], 1468 | [ 1469 | "📇", 1470 | "card_index" 1471 | ], 1472 | [ 1473 | "📁", 1474 | "file_folder" 1475 | ], 1476 | [ 1477 | "📂", 1478 | "open_file_folder" 1479 | ], 1480 | [ 1481 | "✂", 1482 | "scissors" 1483 | ], 1484 | [ 1485 | "📌", 1486 | "pushpin" 1487 | ], 1488 | [ 1489 | "📎", 1490 | "paperclip" 1491 | ], 1492 | [ 1493 | "✒", 1494 | "black_nib" 1495 | ], 1496 | [ 1497 | "✏", 1498 | "pencil2" 1499 | ], 1500 | [ 1501 | "📏", 1502 | "straight_ruler" 1503 | ], 1504 | [ 1505 | "📐", 1506 | "triangular_ruler" 1507 | ], 1508 | [ 1509 | "📕", 1510 | "closed_book" 1511 | ], 1512 | [ 1513 | "📗", 1514 | "green_book" 1515 | ], 1516 | [ 1517 | "📘", 1518 | "blue_book" 1519 | ], 1520 | [ 1521 | "📙", 1522 | "orange_book" 1523 | ], 1524 | [ 1525 | "📓", 1526 | "notebook" 1527 | ], 1528 | [ 1529 | "📔", 1530 | "notebook_with_decorative_cover" 1531 | ], 1532 | [ 1533 | "📒", 1534 | "ledger" 1535 | ], 1536 | [ 1537 | "📚", 1538 | "books" 1539 | ], 1540 | [ 1541 | "📖", 1542 | "book" 1543 | ], 1544 | [ 1545 | "🔖", 1546 | "bookmark" 1547 | ], 1548 | [ 1549 | "📛", 1550 | "name_badge" 1551 | ], 1552 | [ 1553 | "📰", 1554 | "newspaper" 1555 | ], 1556 | [ 1557 | "🎨", 1558 | "art" 1559 | ], 1560 | [ 1561 | "🎬", 1562 | "clapper" 1563 | ], 1564 | [ 1565 | "🎤", 1566 | "microphone" 1567 | ], 1568 | [ 1569 | "🎧", 1570 | "headphones" 1571 | ], 1572 | [ 1573 | "🎼", 1574 | "musical_score" 1575 | ], 1576 | [ 1577 | "🎵", 1578 | "musical_note" 1579 | ], 1580 | [ 1581 | "🎶", 1582 | "notes" 1583 | ], 1584 | [ 1585 | "🎹", 1586 | "musical_keyboard" 1587 | ], 1588 | [ 1589 | "🎻", 1590 | "violin" 1591 | ], 1592 | [ 1593 | "🎺", 1594 | "trumpet" 1595 | ], 1596 | [ 1597 | "🎷", 1598 | "saxophone" 1599 | ], 1600 | [ 1601 | "🎸", 1602 | "guitar" 1603 | ], 1604 | [ 1605 | "👾", 1606 | "space_invader" 1607 | ], 1608 | [ 1609 | "🎮", 1610 | "video_game" 1611 | ], 1612 | [ 1613 | "🃏", 1614 | "black_joker" 1615 | ], 1616 | [ 1617 | "🎴", 1618 | "flower_playing_cards" 1619 | ], 1620 | [ 1621 | "🀄", 1622 | "mahjong" 1623 | ], 1624 | [ 1625 | "🎲", 1626 | "game_die" 1627 | ], 1628 | [ 1629 | "🎯", 1630 | "dart" 1631 | ], 1632 | [ 1633 | "🏈", 1634 | "football" 1635 | ], 1636 | [ 1637 | "🏀", 1638 | "basketball" 1639 | ], 1640 | [ 1641 | "⚽", 1642 | "soccer" 1643 | ], 1644 | [ 1645 | "⚾", 1646 | "baseball" 1647 | ], 1648 | [ 1649 | "🎾", 1650 | "tennis" 1651 | ], 1652 | [ 1653 | "🎱", 1654 | "8ball" 1655 | ], 1656 | [ 1657 | "🎳", 1658 | "bowling" 1659 | ], 1660 | [ 1661 | "⛳", 1662 | "golf" 1663 | ], 1664 | [ 1665 | "🏁", 1666 | "checkered_flag" 1667 | ], 1668 | [ 1669 | "🏆", 1670 | "trophy" 1671 | ], 1672 | [ 1673 | "🎿", 1674 | "ski" 1675 | ], 1676 | [ 1677 | "🏂", 1678 | "snowboarder" 1679 | ], 1680 | [ 1681 | "🏊", 1682 | "swimmer" 1683 | ], 1684 | [ 1685 | "🏄", 1686 | "surfer" 1687 | ], 1688 | [ 1689 | "🎣", 1690 | "fishing_pole_and_fish" 1691 | ], 1692 | [ 1693 | "☕", 1694 | "coffee" 1695 | ], 1696 | [ 1697 | "🍵", 1698 | "tea" 1699 | ], 1700 | [ 1701 | "🍶", 1702 | "sake" 1703 | ], 1704 | [ 1705 | "🍺", 1706 | "beer" 1707 | ], 1708 | [ 1709 | "🍻", 1710 | "beers" 1711 | ], 1712 | [ 1713 | "🍸", 1714 | "cocktail" 1715 | ], 1716 | [ 1717 | "🍹", 1718 | "tropical_drink" 1719 | ], 1720 | [ 1721 | "🍷", 1722 | "wine_glass" 1723 | ], 1724 | [ 1725 | "🍴", 1726 | "fork_and_knife" 1727 | ], 1728 | [ 1729 | "🍕", 1730 | "pizza" 1731 | ], 1732 | [ 1733 | "🍔", 1734 | "hamburger" 1735 | ], 1736 | [ 1737 | "🍟", 1738 | "fries" 1739 | ], 1740 | [ 1741 | "🍗", 1742 | "poultry_leg" 1743 | ], 1744 | [ 1745 | "🍖", 1746 | "meat_on_bone" 1747 | ], 1748 | [ 1749 | "🍝", 1750 | "spaghetti" 1751 | ], 1752 | [ 1753 | "🍛", 1754 | "curry" 1755 | ], 1756 | [ 1757 | "🍤", 1758 | "fried_shrimp" 1759 | ], 1760 | [ 1761 | "🍱", 1762 | "bento" 1763 | ], 1764 | [ 1765 | "🍣", 1766 | "sushi" 1767 | ], 1768 | [ 1769 | "🍥", 1770 | "fish_cake" 1771 | ], 1772 | [ 1773 | "🍙", 1774 | "rice_ball" 1775 | ], 1776 | [ 1777 | "🍘", 1778 | "rice_cracker" 1779 | ], 1780 | [ 1781 | "🍚", 1782 | "rice" 1783 | ], 1784 | [ 1785 | "🍜", 1786 | "ramen" 1787 | ], 1788 | [ 1789 | "🍲", 1790 | "stew" 1791 | ], 1792 | [ 1793 | "🍢", 1794 | "oden" 1795 | ], 1796 | [ 1797 | "🍡", 1798 | "dango" 1799 | ], 1800 | [ 1801 | "🍳", 1802 | "egg" 1803 | ], 1804 | [ 1805 | "🍞", 1806 | "bread" 1807 | ], 1808 | [ 1809 | "🍩", 1810 | "doughnut" 1811 | ], 1812 | [ 1813 | "🍮", 1814 | "custard" 1815 | ], 1816 | [ 1817 | "🍦", 1818 | "icecream" 1819 | ], 1820 | [ 1821 | "🍨", 1822 | "ice_cream" 1823 | ], 1824 | [ 1825 | "🍧", 1826 | "shaved_ice" 1827 | ], 1828 | [ 1829 | "🎂", 1830 | "birthday" 1831 | ], 1832 | [ 1833 | "🍰", 1834 | "cake" 1835 | ], 1836 | [ 1837 | "🍪", 1838 | "cookie" 1839 | ], 1840 | [ 1841 | "🍫", 1842 | "chocolate_bar" 1843 | ], 1844 | [ 1845 | "🍬", 1846 | "candy" 1847 | ], 1848 | [ 1849 | "🍭", 1850 | "lollipop" 1851 | ], 1852 | [ 1853 | "🍯", 1854 | "honey_pot" 1855 | ], 1856 | [ 1857 | "🍎", 1858 | "apple" 1859 | ], 1860 | [ 1861 | "🍏", 1862 | "green_apple" 1863 | ], 1864 | [ 1865 | "🍊", 1866 | "tangerine" 1867 | ], 1868 | [ 1869 | "🍒", 1870 | "cherries" 1871 | ], 1872 | [ 1873 | "🍇", 1874 | "grapes" 1875 | ], 1876 | [ 1877 | "🍉", 1878 | "watermelon" 1879 | ], 1880 | [ 1881 | "🍓", 1882 | "strawberry" 1883 | ], 1884 | [ 1885 | "🍑", 1886 | "peach" 1887 | ], 1888 | [ 1889 | "🍈", 1890 | "melon" 1891 | ], 1892 | [ 1893 | "🍌", 1894 | "banana" 1895 | ], 1896 | [ 1897 | "🍍", 1898 | "pineapple" 1899 | ], 1900 | [ 1901 | "🍠", 1902 | "sweet_potato" 1903 | ], 1904 | [ 1905 | "🍆", 1906 | "eggplant" 1907 | ], 1908 | [ 1909 | "🍅", 1910 | "tomato" 1911 | ], 1912 | [ 1913 | "🌽", 1914 | "corn" 1915 | ] 1916 | ], 1917 | "name": "Objects", 1918 | "icon": ["🔔", "bell"] 1919 | }, 1920 | { 1921 | "emojis": [ 1922 | [ 1923 | "🏠", 1924 | "house" 1925 | ], 1926 | [ 1927 | "🏡", 1928 | "house_with_garden" 1929 | ], 1930 | [ 1931 | "🏫", 1932 | "school" 1933 | ], 1934 | [ 1935 | "🏢", 1936 | "office" 1937 | ], 1938 | [ 1939 | "🏣", 1940 | "post_office" 1941 | ], 1942 | [ 1943 | "🏥", 1944 | "hospital" 1945 | ], 1946 | [ 1947 | "🏦", 1948 | "bank" 1949 | ], 1950 | [ 1951 | "🏪", 1952 | "convenience_store" 1953 | ], 1954 | [ 1955 | "🏩", 1956 | "love_hotel" 1957 | ], 1958 | [ 1959 | "🏨", 1960 | "hotel" 1961 | ], 1962 | [ 1963 | "💒", 1964 | "wedding" 1965 | ], 1966 | [ 1967 | "⛪", 1968 | "church" 1969 | ], 1970 | [ 1971 | "🏬", 1972 | "department_store" 1973 | ], 1974 | [ 1975 | "🌇", 1976 | "city_sunrise" 1977 | ], 1978 | [ 1979 | "🌆", 1980 | "city_sunset" 1981 | ], 1982 | [ 1983 | "🏯", 1984 | "japanese_castle" 1985 | ], 1986 | [ 1987 | "🏰", 1988 | "european_castle" 1989 | ], 1990 | [ 1991 | "⛺", 1992 | "tent" 1993 | ], 1994 | [ 1995 | "🏭", 1996 | "factory" 1997 | ], 1998 | [ 1999 | "🗼", 2000 | "tokyo_tower" 2001 | ], 2002 | [ 2003 | "🗾", 2004 | "japan" 2005 | ], 2006 | [ 2007 | "🗻", 2008 | "mount_fuji" 2009 | ], 2010 | [ 2011 | "🌄", 2012 | "sunrise_over_mountains" 2013 | ], 2014 | [ 2015 | "🌅", 2016 | "sunrise" 2017 | ], 2018 | [ 2019 | "🌃", 2020 | "night_with_stars" 2021 | ], 2022 | [ 2023 | "🗽", 2024 | "statue_of_liberty" 2025 | ], 2026 | [ 2027 | "🌉", 2028 | "bridge_at_night" 2029 | ], 2030 | [ 2031 | "🎠", 2032 | "carousel_horse" 2033 | ], 2034 | [ 2035 | "🎡", 2036 | "ferris_wheel" 2037 | ], 2038 | [ 2039 | "⛲", 2040 | "fountain" 2041 | ], 2042 | [ 2043 | "🎢", 2044 | "roller_coaster" 2045 | ], 2046 | [ 2047 | "🚢", 2048 | "ship" 2049 | ], 2050 | [ 2051 | "⛵", 2052 | "boat" 2053 | ], 2054 | [ 2055 | "🚤", 2056 | "speedboat" 2057 | ], 2058 | [ 2059 | "⚓", 2060 | "anchor" 2061 | ], 2062 | [ 2063 | "🚀", 2064 | "rocket" 2065 | ], 2066 | [ 2067 | "✈", 2068 | "airplane" 2069 | ], 2070 | [ 2071 | "💺", 2072 | "seat" 2073 | ], 2074 | [ 2075 | "🚉", 2076 | "station" 2077 | ], 2078 | [ 2079 | "🚄", 2080 | "bullettrain_side" 2081 | ], 2082 | [ 2083 | "🚅", 2084 | "bullettrain_front" 2085 | ], 2086 | [ 2087 | "🚇", 2088 | "metro" 2089 | ], 2090 | [ 2091 | "🚃", 2092 | "railway_car" 2093 | ], 2094 | [ 2095 | "🚌", 2096 | "bus" 2097 | ], 2098 | [ 2099 | "🚙", 2100 | "blue_car" 2101 | ], 2102 | [ 2103 | "🚗", 2104 | "car" 2105 | ], 2106 | [ 2107 | "🚕", 2108 | "taxi" 2109 | ], 2110 | [ 2111 | "🚚", 2112 | "truck" 2113 | ], 2114 | [ 2115 | "🚨", 2116 | "rotating_light" 2117 | ], 2118 | [ 2119 | "🚓", 2120 | "police_car" 2121 | ], 2122 | [ 2123 | "🚒", 2124 | "fire_engine" 2125 | ], 2126 | [ 2127 | "🚑", 2128 | "ambulance" 2129 | ], 2130 | [ 2131 | "🚲", 2132 | "bike" 2133 | ], 2134 | [ 2135 | "💈", 2136 | "barber" 2137 | ], 2138 | [ 2139 | "🚏", 2140 | "busstop" 2141 | ], 2142 | [ 2143 | "🎫", 2144 | "ticket" 2145 | ], 2146 | [ 2147 | "🚥", 2148 | "traffic_light" 2149 | ], 2150 | [ 2151 | "⚠", 2152 | "warning" 2153 | ], 2154 | [ 2155 | "🚧", 2156 | "construction" 2157 | ], 2158 | [ 2159 | "🔰", 2160 | "beginner" 2161 | ], 2162 | [ 2163 | "⛽", 2164 | "fuelpump" 2165 | ], 2166 | [ 2167 | "🏮", 2168 | "izakaya_lantern" 2169 | ], 2170 | [ 2171 | "🎰", 2172 | "slot_machine" 2173 | ], 2174 | [ 2175 | "♨", 2176 | "hotsprings" 2177 | ], 2178 | [ 2179 | "🗿", 2180 | "moyai" 2181 | ], 2182 | [ 2183 | "🎪", 2184 | "circus_tent" 2185 | ], 2186 | [ 2187 | "🎭", 2188 | "performing_arts" 2189 | ], 2190 | [ 2191 | "📍", 2192 | "round_pushpin" 2193 | ], 2194 | [ 2195 | "🚩", 2196 | "triangular_flag_on_post" 2197 | ] 2198 | ], 2199 | "name": "Places", 2200 | "icon": ["🚙", "blue_car"] 2201 | }, 2202 | { 2203 | "emojis": [ 2204 | [ 2205 | "🔟", 2206 | "keycap_ten" 2207 | ], 2208 | [ 2209 | "🔢", 2210 | "1234" 2211 | ], 2212 | [ 2213 | "🔣", 2214 | "symbols" 2215 | ], 2216 | [ 2217 | "⬆", 2218 | "arrow_up" 2219 | ], 2220 | [ 2221 | "⬇", 2222 | "arrow_down" 2223 | ], 2224 | [ 2225 | "⬅", 2226 | "arrow_left" 2227 | ], 2228 | [ 2229 | "➡", 2230 | "arrow_right" 2231 | ], 2232 | [ 2233 | "🔠", 2234 | "capital_abcd" 2235 | ], 2236 | [ 2237 | "🔡", 2238 | "abcd" 2239 | ], 2240 | [ 2241 | "🔤", 2242 | "abc" 2243 | ], 2244 | [ 2245 | "↗", 2246 | "arrow_upper_right" 2247 | ], 2248 | [ 2249 | "↖", 2250 | "arrow_upper_left" 2251 | ], 2252 | [ 2253 | "↘", 2254 | "arrow_lower_right" 2255 | ], 2256 | [ 2257 | "↙", 2258 | "arrow_lower_left" 2259 | ], 2260 | [ 2261 | "↔", 2262 | "left_right_arrow" 2263 | ], 2264 | [ 2265 | "↕", 2266 | "arrow_up_down" 2267 | ], 2268 | [ 2269 | "◀", 2270 | "arrow_backward" 2271 | ], 2272 | [ 2273 | "▶", 2274 | "arrow_forward" 2275 | ], 2276 | [ 2277 | "🔼", 2278 | "arrow_up_small" 2279 | ], 2280 | [ 2281 | "🔽", 2282 | "arrow_down_small" 2283 | ], 2284 | [ 2285 | "↩", 2286 | "leftwards_arrow_with_hook" 2287 | ], 2288 | [ 2289 | "↪", 2290 | "arrow_right_hook" 2291 | ], 2292 | [ 2293 | "ℹ", 2294 | "information_source" 2295 | ], 2296 | [ 2297 | "⏪", 2298 | "rewind" 2299 | ], 2300 | [ 2301 | "⏩", 2302 | "fast_forward" 2303 | ], 2304 | [ 2305 | "⏫", 2306 | "arrow_double_up" 2307 | ], 2308 | [ 2309 | "⏬", 2310 | "arrow_double_down" 2311 | ], 2312 | [ 2313 | "⤵", 2314 | "arrow_heading_down" 2315 | ], 2316 | [ 2317 | "⤴", 2318 | "arrow_heading_up" 2319 | ], 2320 | [ 2321 | "🆗", 2322 | "ok" 2323 | ], 2324 | [ 2325 | "🆕", 2326 | "new" 2327 | ], 2328 | [ 2329 | "🆙", 2330 | "up" 2331 | ], 2332 | [ 2333 | "🆒", 2334 | "cool" 2335 | ], 2336 | [ 2337 | "🆓", 2338 | "free" 2339 | ], 2340 | [ 2341 | "🆖", 2342 | "ng" 2343 | ], 2344 | [ 2345 | "📶", 2346 | "signal_strength" 2347 | ], 2348 | [ 2349 | "🎦", 2350 | "cinema" 2351 | ], 2352 | [ 2353 | "🈁", 2354 | "koko" 2355 | ], 2356 | [ 2357 | "🈯", 2358 | "u6307" 2359 | ], 2360 | [ 2361 | "🈳", 2362 | "u7a7a" 2363 | ], 2364 | [ 2365 | "🈵", 2366 | "u6e80" 2367 | ], 2368 | [ 2369 | "🈴", 2370 | "u5408" 2371 | ], 2372 | [ 2373 | "🈲", 2374 | "u7981" 2375 | ], 2376 | [ 2377 | "🉐", 2378 | "ideograph_advantage" 2379 | ], 2380 | [ 2381 | "🈹", 2382 | "u5272" 2383 | ], 2384 | [ 2385 | "🈺", 2386 | "u55b6" 2387 | ], 2388 | [ 2389 | "🈶", 2390 | "u6709" 2391 | ], 2392 | [ 2393 | "🈚", 2394 | "u7121" 2395 | ], 2396 | [ 2397 | "🚻", 2398 | "restroom" 2399 | ], 2400 | [ 2401 | "🚹", 2402 | "mens" 2403 | ], 2404 | [ 2405 | "🚺", 2406 | "womens" 2407 | ], 2408 | [ 2409 | "🚼", 2410 | "baby_symbol" 2411 | ], 2412 | [ 2413 | "🚾", 2414 | "wc" 2415 | ], 2416 | [ 2417 | "🅿", 2418 | "parking" 2419 | ], 2420 | [ 2421 | "♿", 2422 | "wheelchair" 2423 | ], 2424 | [ 2425 | "🚭", 2426 | "no_smoking" 2427 | ], 2428 | [ 2429 | "🈷", 2430 | "u6708" 2431 | ], 2432 | [ 2433 | "🈸", 2434 | "u7533" 2435 | ], 2436 | [ 2437 | "🈂", 2438 | "sa" 2439 | ], 2440 | [ 2441 | "Ⓜ", 2442 | "m" 2443 | ], 2444 | [ 2445 | "🉑", 2446 | "accept" 2447 | ], 2448 | [ 2449 | "㊙", 2450 | "secret" 2451 | ], 2452 | [ 2453 | "㊗", 2454 | "congratulations" 2455 | ], 2456 | [ 2457 | "🆑", 2458 | "cl" 2459 | ], 2460 | [ 2461 | "🆘", 2462 | "sos" 2463 | ], 2464 | [ 2465 | "🆔", 2466 | "id" 2467 | ], 2468 | [ 2469 | "🚫", 2470 | "no_entry_sign" 2471 | ], 2472 | [ 2473 | "🔞", 2474 | "underage" 2475 | ], 2476 | [ 2477 | "⛔", 2478 | "no_entry" 2479 | ], 2480 | [ 2481 | "✳", 2482 | "eight_spoked_asterisk" 2483 | ], 2484 | [ 2485 | "❇", 2486 | "sparkle" 2487 | ], 2488 | [ 2489 | "❎", 2490 | "negative_squared_cross_mark" 2491 | ], 2492 | [ 2493 | "✅", 2494 | "white_check_mark" 2495 | ], 2496 | [ 2497 | "✴", 2498 | "eight_pointed_black_star" 2499 | ], 2500 | [ 2501 | "💟", 2502 | "heart_decoration" 2503 | ], 2504 | [ 2505 | "🆚", 2506 | "vs" 2507 | ], 2508 | [ 2509 | "📳", 2510 | "vibration_mode" 2511 | ], 2512 | [ 2513 | "📴", 2514 | "mobile_phone_off" 2515 | ], 2516 | [ 2517 | "🅰", 2518 | "a" 2519 | ], 2520 | [ 2521 | "🅱", 2522 | "b" 2523 | ], 2524 | [ 2525 | "🆎", 2526 | "ab" 2527 | ], 2528 | [ 2529 | "🅾", 2530 | "o2" 2531 | ], 2532 | [ 2533 | "💠", 2534 | "diamond_shape_with_a_dot_inside" 2535 | ], 2536 | [ 2537 | "♻", 2538 | "recycle" 2539 | ], 2540 | [ 2541 | "♈", 2542 | "aries" 2543 | ], 2544 | [ 2545 | "♉", 2546 | "taurus" 2547 | ], 2548 | [ 2549 | "♊", 2550 | "gemini" 2551 | ], 2552 | [ 2553 | "♋", 2554 | "cancer" 2555 | ], 2556 | [ 2557 | "♌", 2558 | "leo" 2559 | ], 2560 | [ 2561 | "♍", 2562 | "virgo" 2563 | ], 2564 | [ 2565 | "♎", 2566 | "libra" 2567 | ], 2568 | [ 2569 | "♏", 2570 | "scorpius" 2571 | ], 2572 | [ 2573 | "♐", 2574 | "sagittarius" 2575 | ], 2576 | [ 2577 | "♑", 2578 | "capricorn" 2579 | ], 2580 | [ 2581 | "♒", 2582 | "aquarius" 2583 | ], 2584 | [ 2585 | "♓", 2586 | "pisces" 2587 | ], 2588 | [ 2589 | "⛎", 2590 | "ophiuchus" 2591 | ], 2592 | [ 2593 | "🔯", 2594 | "six_pointed_star" 2595 | ], 2596 | [ 2597 | "🏧", 2598 | "atm" 2599 | ], 2600 | [ 2601 | "💹", 2602 | "chart" 2603 | ], 2604 | [ 2605 | "💲", 2606 | "heavy_dollar_sign" 2607 | ], 2608 | [ 2609 | "💱", 2610 | "currency_exchange" 2611 | ], 2612 | [ 2613 | "❌", 2614 | "x" 2615 | ], 2616 | [ 2617 | "‼", 2618 | "bangbang" 2619 | ], 2620 | [ 2621 | "⁉", 2622 | "interrobang" 2623 | ], 2624 | [ 2625 | "❗", 2626 | "exclamation" 2627 | ], 2628 | [ 2629 | "❓", 2630 | "question" 2631 | ], 2632 | [ 2633 | "❕", 2634 | "grey_exclamation" 2635 | ], 2636 | [ 2637 | "❔", 2638 | "grey_question" 2639 | ], 2640 | [ 2641 | "⭕", 2642 | "o" 2643 | ], 2644 | [ 2645 | "🔝", 2646 | "top" 2647 | ], 2648 | [ 2649 | "🔚", 2650 | "end" 2651 | ], 2652 | [ 2653 | "🔙", 2654 | "back" 2655 | ], 2656 | [ 2657 | "🔛", 2658 | "on" 2659 | ], 2660 | [ 2661 | "🔜", 2662 | "soon" 2663 | ], 2664 | [ 2665 | "🔃", 2666 | "arrows_clockwise" 2667 | ], 2668 | [ 2669 | "🕛", 2670 | "clock12" 2671 | ], 2672 | [ 2673 | "🕐", 2674 | "clock1" 2675 | ], 2676 | [ 2677 | "🕑", 2678 | "clock2" 2679 | ], 2680 | [ 2681 | "🕒", 2682 | "clock3" 2683 | ], 2684 | [ 2685 | "🕓", 2686 | "clock4" 2687 | ], 2688 | [ 2689 | "🕔", 2690 | "clock5" 2691 | ], 2692 | [ 2693 | "🕕", 2694 | "clock6" 2695 | ], 2696 | [ 2697 | "🕖", 2698 | "clock7" 2699 | ], 2700 | [ 2701 | "🕗", 2702 | "clock8" 2703 | ], 2704 | [ 2705 | "🕘", 2706 | "clock9" 2707 | ], 2708 | [ 2709 | "🕙", 2710 | "clock10" 2711 | ], 2712 | [ 2713 | "🕚", 2714 | "clock11" 2715 | ], 2716 | [ 2717 | "✖", 2718 | "heavy_multiplication_x" 2719 | ], 2720 | [ 2721 | "➕", 2722 | "heavy_plus_sign" 2723 | ], 2724 | [ 2725 | "➖", 2726 | "heavy_minus_sign" 2727 | ], 2728 | [ 2729 | "➗", 2730 | "heavy_division_sign" 2731 | ], 2732 | [ 2733 | "♠", 2734 | "spades" 2735 | ], 2736 | [ 2737 | "♥", 2738 | "hearts" 2739 | ], 2740 | [ 2741 | "♣", 2742 | "clubs" 2743 | ], 2744 | [ 2745 | "♦", 2746 | "diamonds" 2747 | ], 2748 | [ 2749 | "💮", 2750 | "white_flower" 2751 | ], 2752 | [ 2753 | "💯", 2754 | "100" 2755 | ], 2756 | [ 2757 | "✔", 2758 | "heavy_check_mark" 2759 | ], 2760 | [ 2761 | "☑", 2762 | "ballot_box_with_check" 2763 | ], 2764 | [ 2765 | "🔘", 2766 | "radio_button" 2767 | ], 2768 | [ 2769 | "🔗", 2770 | "link" 2771 | ], 2772 | [ 2773 | "➰", 2774 | "curly_loop" 2775 | ], 2776 | [ 2777 | "〰", 2778 | "wavy_dash" 2779 | ], 2780 | [ 2781 | "〽", 2782 | "part_alternation_mark" 2783 | ], 2784 | [ 2785 | "🔱", 2786 | "trident" 2787 | ], 2788 | [ 2789 | "◼", 2790 | "black_medium_square" 2791 | ], 2792 | [ 2793 | "◻", 2794 | "white_medium_square" 2795 | ], 2796 | [ 2797 | "◾", 2798 | "black_medium_small_square" 2799 | ], 2800 | [ 2801 | "◽", 2802 | "white_medium_small_square" 2803 | ], 2804 | [ 2805 | "▪", 2806 | "black_small_square" 2807 | ], 2808 | [ 2809 | "▫", 2810 | "white_small_square" 2811 | ], 2812 | [ 2813 | "🔺", 2814 | "small_red_triangle" 2815 | ], 2816 | [ 2817 | "🔲", 2818 | "black_square_button" 2819 | ], 2820 | [ 2821 | "🔳", 2822 | "white_square_button" 2823 | ], 2824 | [ 2825 | "⚫", 2826 | "black_circle" 2827 | ], 2828 | [ 2829 | "⚪", 2830 | "white_circle" 2831 | ], 2832 | [ 2833 | "🔴", 2834 | "red_circle" 2835 | ], 2836 | [ 2837 | "🔵", 2838 | "large_blue_circle" 2839 | ], 2840 | [ 2841 | "🔻", 2842 | "small_red_triangle_down" 2843 | ], 2844 | [ 2845 | "⬜", 2846 | "white_large_square" 2847 | ], 2848 | [ 2849 | "⬛", 2850 | "black_large_square" 2851 | ], 2852 | [ 2853 | "🔶", 2854 | "large_orange_diamond" 2855 | ], 2856 | [ 2857 | "🔷", 2858 | "large_blue_diamond" 2859 | ], 2860 | [ 2861 | "🔸", 2862 | "small_orange_diamond" 2863 | ], 2864 | [ 2865 | "🔹", 2866 | "small_blue_diamond" 2867 | ] 2868 | ], 2869 | "name": "Symbols", 2870 | "icon": ["🔠", "capital_abcd"] 2871 | } 2872 | ]; 2873 | -------------------------------------------------------------------------------- /src/sheets/sheet_apple_map.ts: -------------------------------------------------------------------------------- 1 | export function EmojiPickerAppleSheetLocator(label: string) { 2 | if (!SHEET_APPLE_MAP_OBJECT[label]) { 3 | console.error('EmojiPickerAppleSheetLocator: no emoji label found for ' + label); 4 | return { x : 0, y : 0 }; 5 | } 6 | 7 | return { 8 | x: SHEET_APPLE_MAP_OBJECT[label][0], 9 | y: SHEET_APPLE_MAP_OBJECT[label][1] 10 | } 11 | }; 12 | 13 | const SHEET_APPLE_MAP_OBJECT = { 14 | "100": [ 15 | 17, 16 | 32 17 | ], 18 | "1234": [ 19 | 19, 20 | 48 21 | ], 22 | "copyright": [ 23 | 0, 24 | 0 25 | ], 26 | "registered": [ 27 | 0, 28 | 1 29 | ], 30 | "bangbang": [ 31 | 0, 32 | 2 33 | ], 34 | "interrobang": [ 35 | 0, 36 | 3 37 | ], 38 | "tm": [ 39 | 0, 40 | 4 41 | ], 42 | "information_source": [ 43 | 0, 44 | 5 45 | ], 46 | "left_right_arrow": [ 47 | 0, 48 | 6 49 | ], 50 | "arrow_up_down": [ 51 | 0, 52 | 7 53 | ], 54 | "arrow_upper_left": [ 55 | 0, 56 | 8 57 | ], 58 | "arrow_upper_right": [ 59 | 0, 60 | 9 61 | ], 62 | "arrow_lower_right": [ 63 | 0, 64 | 10 65 | ], 66 | "arrow_lower_left": [ 67 | 0, 68 | 11 69 | ], 70 | "leftwards_arrow_with_hook": [ 71 | 0, 72 | 12 73 | ], 74 | "arrow_right_hook": [ 75 | 0, 76 | 13 77 | ], 78 | "watch": [ 79 | 0, 80 | 14 81 | ], 82 | "hourglass": [ 83 | 0, 84 | 15 85 | ], 86 | "keyboard": [ 87 | 0, 88 | 16 89 | ], 90 | "eject": [ 91 | 0, 92 | 17 93 | ], 94 | "fast_forward": [ 95 | 0, 96 | 18 97 | ], 98 | "rewind": [ 99 | 0, 100 | 19 101 | ], 102 | "arrow_double_up": [ 103 | 0, 104 | 20 105 | ], 106 | "arrow_double_down": [ 107 | 0, 108 | 21 109 | ], 110 | "black_right_pointing_double_triangle_with_vertical_bar": [ 111 | 0, 112 | 22 113 | ], 114 | "black_left_pointing_double_triangle_with_vertical_bar": [ 115 | 0, 116 | 23 117 | ], 118 | "black_right_pointing_triangle_with_double_vertical_bar": [ 119 | 0, 120 | 24 121 | ], 122 | "alarm_clock": [ 123 | 0, 124 | 25 125 | ], 126 | "stopwatch": [ 127 | 0, 128 | 26 129 | ], 130 | "timer_clock": [ 131 | 0, 132 | 27 133 | ], 134 | "hourglass_flowing_sand": [ 135 | 0, 136 | 28 137 | ], 138 | "double_vertical_bar": [ 139 | 0, 140 | 29 141 | ], 142 | "black_square_for_stop": [ 143 | 0, 144 | 30 145 | ], 146 | "black_circle_for_record": [ 147 | 0, 148 | 31 149 | ], 150 | "m": [ 151 | 0, 152 | 32 153 | ], 154 | "black_small_square": [ 155 | 0, 156 | 33 157 | ], 158 | "white_small_square": [ 159 | 0, 160 | 34 161 | ], 162 | "arrow_forward": [ 163 | 0, 164 | 35 165 | ], 166 | "arrow_backward": [ 167 | 0, 168 | 36 169 | ], 170 | "white_medium_square": [ 171 | 0, 172 | 37 173 | ], 174 | "black_medium_square": [ 175 | 0, 176 | 38 177 | ], 178 | "white_medium_small_square": [ 179 | 0, 180 | 39 181 | ], 182 | "black_medium_small_square": [ 183 | 0, 184 | 40 185 | ], 186 | "sunny": [ 187 | 0, 188 | 41 189 | ], 190 | "cloud": [ 191 | 0, 192 | 42 193 | ], 194 | "umbrella": [ 195 | 0, 196 | 43 197 | ], 198 | "snowman": [ 199 | 0, 200 | 44 201 | ], 202 | "comet": [ 203 | 0, 204 | 45 205 | ], 206 | "phone": [ 207 | 0, 208 | 46 209 | ], 210 | "ballot_box_with_check": [ 211 | 0, 212 | 47 213 | ], 214 | "umbrella_with_rain_drops": [ 215 | 0, 216 | 48 217 | ], 218 | "coffee": [ 219 | 1, 220 | 0 221 | ], 222 | "shamrock": [ 223 | 1, 224 | 1 225 | ], 226 | "point_up": [ 227 | 1, 228 | 2 229 | ], 230 | "skull_and_crossbones": [ 231 | 1, 232 | 8 233 | ], 234 | "radioactive_sign": [ 235 | 1, 236 | 9 237 | ], 238 | "biohazard_sign": [ 239 | 1, 240 | 10 241 | ], 242 | "orthodox_cross": [ 243 | 1, 244 | 11 245 | ], 246 | "star_and_crescent": [ 247 | 1, 248 | 12 249 | ], 250 | "peace_symbol": [ 251 | 1, 252 | 13 253 | ], 254 | "yin_yang": [ 255 | 1, 256 | 14 257 | ], 258 | "wheel_of_dharma": [ 259 | 1, 260 | 15 261 | ], 262 | "white_frowning_face": [ 263 | 1, 264 | 16 265 | ], 266 | "relaxed": [ 267 | 1, 268 | 17 269 | ], 270 | "female_sign": [ 271 | 1, 272 | 18 273 | ], 274 | "male_sign": [ 275 | 1, 276 | 19 277 | ], 278 | "aries": [ 279 | 1, 280 | 20 281 | ], 282 | "taurus": [ 283 | 1, 284 | 21 285 | ], 286 | "gemini": [ 287 | 1, 288 | 22 289 | ], 290 | "cancer": [ 291 | 1, 292 | 23 293 | ], 294 | "leo": [ 295 | 1, 296 | 24 297 | ], 298 | "virgo": [ 299 | 1, 300 | 25 301 | ], 302 | "libra": [ 303 | 1, 304 | 26 305 | ], 306 | "scorpius": [ 307 | 1, 308 | 27 309 | ], 310 | "sagittarius": [ 311 | 1, 312 | 28 313 | ], 314 | "capricorn": [ 315 | 1, 316 | 29 317 | ], 318 | "aquarius": [ 319 | 1, 320 | 30 321 | ], 322 | "pisces": [ 323 | 1, 324 | 31 325 | ], 326 | "spades": [ 327 | 1, 328 | 32 329 | ], 330 | "clubs": [ 331 | 1, 332 | 33 333 | ], 334 | "hearts": [ 335 | 1, 336 | 34 337 | ], 338 | "diamonds": [ 339 | 1, 340 | 35 341 | ], 342 | "hotsprings": [ 343 | 1, 344 | 36 345 | ], 346 | "recycle": [ 347 | 1, 348 | 37 349 | ], 350 | "wheelchair": [ 351 | 1, 352 | 38 353 | ], 354 | "hammer_and_pick": [ 355 | 1, 356 | 39 357 | ], 358 | "anchor": [ 359 | 1, 360 | 40 361 | ], 362 | "crossed_swords": [ 363 | 1, 364 | 41 365 | ], 366 | "staff_of_aesculapius": [ 367 | 1, 368 | 42 369 | ], 370 | "scales": [ 371 | 1, 372 | 43 373 | ], 374 | "alembic": [ 375 | 1, 376 | 44 377 | ], 378 | "gear": [ 379 | 1, 380 | 45 381 | ], 382 | "atom_symbol": [ 383 | 1, 384 | 46 385 | ], 386 | "fleur_de_lis": [ 387 | 1, 388 | 47 389 | ], 390 | "warning": [ 391 | 1, 392 | 48 393 | ], 394 | "zap": [ 395 | 2, 396 | 0 397 | ], 398 | "white_circle": [ 399 | 2, 400 | 1 401 | ], 402 | "black_circle": [ 403 | 2, 404 | 2 405 | ], 406 | "coffin": [ 407 | 2, 408 | 3 409 | ], 410 | "funeral_urn": [ 411 | 2, 412 | 4 413 | ], 414 | "soccer": [ 415 | 2, 416 | 5 417 | ], 418 | "baseball": [ 419 | 2, 420 | 6 421 | ], 422 | "snowman_without_snow": [ 423 | 2, 424 | 7 425 | ], 426 | "partly_sunny": [ 427 | 2, 428 | 8 429 | ], 430 | "thunder_cloud_and_rain": [ 431 | 2, 432 | 9 433 | ], 434 | "ophiuchus": [ 435 | 2, 436 | 10 437 | ], 438 | "pick": [ 439 | 2, 440 | 11 441 | ], 442 | "helmet_with_white_cross": [ 443 | 2, 444 | 12 445 | ], 446 | "chains": [ 447 | 2, 448 | 13 449 | ], 450 | "no_entry": [ 451 | 2, 452 | 14 453 | ], 454 | "shinto_shrine": [ 455 | 2, 456 | 15 457 | ], 458 | "church": [ 459 | 2, 460 | 16 461 | ], 462 | "mountain": [ 463 | 2, 464 | 17 465 | ], 466 | "umbrella_on_ground": [ 467 | 2, 468 | 18 469 | ], 470 | "fountain": [ 471 | 2, 472 | 19 473 | ], 474 | "golf": [ 475 | 2, 476 | 20 477 | ], 478 | "ferry": [ 479 | 2, 480 | 21 481 | ], 482 | "boat": [ 483 | 2, 484 | 22 485 | ], 486 | "skier": [ 487 | 2, 488 | 23 489 | ], 490 | "ice_skate": [ 491 | 2, 492 | 24 493 | ], 494 | "person_with_ball": [ 495 | 2, 496 | 25 497 | ], 498 | "tent": [ 499 | 2, 500 | 31 501 | ], 502 | "fuelpump": [ 503 | 2, 504 | 32 505 | ], 506 | "scissors": [ 507 | 2, 508 | 33 509 | ], 510 | "white_check_mark": [ 511 | 2, 512 | 34 513 | ], 514 | "airplane": [ 515 | 2, 516 | 35 517 | ], 518 | "email": [ 519 | 2, 520 | 36 521 | ], 522 | "fist": [ 523 | 2, 524 | 37 525 | ], 526 | "hand": [ 527 | 2, 528 | 43 529 | ], 530 | "v": [ 531 | 3, 532 | 0 533 | ], 534 | "writing_hand": [ 535 | 3, 536 | 6 537 | ], 538 | "pencil2": [ 539 | 3, 540 | 12 541 | ], 542 | "black_nib": [ 543 | 3, 544 | 13 545 | ], 546 | "heavy_check_mark": [ 547 | 3, 548 | 14 549 | ], 550 | "heavy_multiplication_x": [ 551 | 3, 552 | 15 553 | ], 554 | "latin_cross": [ 555 | 3, 556 | 16 557 | ], 558 | "star_of_david": [ 559 | 3, 560 | 17 561 | ], 562 | "sparkles": [ 563 | 3, 564 | 18 565 | ], 566 | "eight_spoked_asterisk": [ 567 | 3, 568 | 19 569 | ], 570 | "eight_pointed_black_star": [ 571 | 3, 572 | 20 573 | ], 574 | "snowflake": [ 575 | 3, 576 | 21 577 | ], 578 | "sparkle": [ 579 | 3, 580 | 22 581 | ], 582 | "x": [ 583 | 3, 584 | 23 585 | ], 586 | "negative_squared_cross_mark": [ 587 | 3, 588 | 24 589 | ], 590 | "question": [ 591 | 3, 592 | 25 593 | ], 594 | "grey_question": [ 595 | 3, 596 | 26 597 | ], 598 | "grey_exclamation": [ 599 | 3, 600 | 27 601 | ], 602 | "exclamation": [ 603 | 3, 604 | 28 605 | ], 606 | "heavy_heart_exclamation_mark_ornament": [ 607 | 3, 608 | 29 609 | ], 610 | "heart": [ 611 | 3, 612 | 30 613 | ], 614 | "heavy_plus_sign": [ 615 | 3, 616 | 31 617 | ], 618 | "heavy_minus_sign": [ 619 | 3, 620 | 32 621 | ], 622 | "heavy_division_sign": [ 623 | 3, 624 | 33 625 | ], 626 | "arrow_right": [ 627 | 3, 628 | 34 629 | ], 630 | "curly_loop": [ 631 | 3, 632 | 35 633 | ], 634 | "loop": [ 635 | 3, 636 | 36 637 | ], 638 | "arrow_heading_up": [ 639 | 3, 640 | 37 641 | ], 642 | "arrow_heading_down": [ 643 | 3, 644 | 38 645 | ], 646 | "arrow_left": [ 647 | 3, 648 | 39 649 | ], 650 | "arrow_up": [ 651 | 3, 652 | 40 653 | ], 654 | "arrow_down": [ 655 | 3, 656 | 41 657 | ], 658 | "black_large_square": [ 659 | 3, 660 | 42 661 | ], 662 | "white_large_square": [ 663 | 3, 664 | 43 665 | ], 666 | "star": [ 667 | 3, 668 | 44 669 | ], 670 | "o": [ 671 | 3, 672 | 45 673 | ], 674 | "wavy_dash": [ 675 | 3, 676 | 46 677 | ], 678 | "part_alternation_mark": [ 679 | 3, 680 | 47 681 | ], 682 | "congratulations": [ 683 | 3, 684 | 48 685 | ], 686 | "secret": [ 687 | 4, 688 | 0 689 | ], 690 | "mahjong": [ 691 | 4, 692 | 1 693 | ], 694 | "black_joker": [ 695 | 4, 696 | 2 697 | ], 698 | "a": [ 699 | 4, 700 | 3 701 | ], 702 | "b": [ 703 | 4, 704 | 4 705 | ], 706 | "o2": [ 707 | 4, 708 | 5 709 | ], 710 | "parking": [ 711 | 4, 712 | 6 713 | ], 714 | "ab": [ 715 | 4, 716 | 7 717 | ], 718 | "cl": [ 719 | 4, 720 | 8 721 | ], 722 | "cool": [ 723 | 4, 724 | 9 725 | ], 726 | "free": [ 727 | 4, 728 | 10 729 | ], 730 | "id": [ 731 | 4, 732 | 11 733 | ], 734 | "new": [ 735 | 4, 736 | 12 737 | ], 738 | "ng": [ 739 | 4, 740 | 13 741 | ], 742 | "ok": [ 743 | 4, 744 | 14 745 | ], 746 | "sos": [ 747 | 4, 748 | 15 749 | ], 750 | "up": [ 751 | 4, 752 | 16 753 | ], 754 | "vs": [ 755 | 4, 756 | 17 757 | ], 758 | "koko": [ 759 | 4, 760 | 18 761 | ], 762 | "sa": [ 763 | 4, 764 | 19 765 | ], 766 | "u7121": [ 767 | 4, 768 | 20 769 | ], 770 | "u6307": [ 771 | 4, 772 | 21 773 | ], 774 | "u7981": [ 775 | 4, 776 | 22 777 | ], 778 | "u7a7a": [ 779 | 4, 780 | 23 781 | ], 782 | "u5408": [ 783 | 4, 784 | 24 785 | ], 786 | "u6e80": [ 787 | 4, 788 | 25 789 | ], 790 | "u6709": [ 791 | 4, 792 | 26 793 | ], 794 | "u6708": [ 795 | 4, 796 | 27 797 | ], 798 | "u7533": [ 799 | 4, 800 | 28 801 | ], 802 | "u5272": [ 803 | 4, 804 | 29 805 | ], 806 | "u55b6": [ 807 | 4, 808 | 30 809 | ], 810 | "ideograph_advantage": [ 811 | 4, 812 | 31 813 | ], 814 | "accept": [ 815 | 4, 816 | 32 817 | ], 818 | "cyclone": [ 819 | 4, 820 | 33 821 | ], 822 | "foggy": [ 823 | 4, 824 | 34 825 | ], 826 | "closed_umbrella": [ 827 | 4, 828 | 35 829 | ], 830 | "night_with_stars": [ 831 | 4, 832 | 36 833 | ], 834 | "sunrise_over_mountains": [ 835 | 4, 836 | 37 837 | ], 838 | "sunrise": [ 839 | 4, 840 | 38 841 | ], 842 | "city_sunset": [ 843 | 4, 844 | 39 845 | ], 846 | "city_sunrise": [ 847 | 4, 848 | 40 849 | ], 850 | "rainbow": [ 851 | 4, 852 | 41 853 | ], 854 | "bridge_at_night": [ 855 | 4, 856 | 42 857 | ], 858 | "ocean": [ 859 | 4, 860 | 43 861 | ], 862 | "volcano": [ 863 | 4, 864 | 44 865 | ], 866 | "milky_way": [ 867 | 4, 868 | 45 869 | ], 870 | "earth_africa": [ 871 | 4, 872 | 46 873 | ], 874 | "earth_americas": [ 875 | 4, 876 | 47 877 | ], 878 | "earth_asia": [ 879 | 4, 880 | 48 881 | ], 882 | "globe_with_meridians": [ 883 | 5, 884 | 0 885 | ], 886 | "new_moon": [ 887 | 5, 888 | 1 889 | ], 890 | "waxing_crescent_moon": [ 891 | 5, 892 | 2 893 | ], 894 | "first_quarter_moon": [ 895 | 5, 896 | 3 897 | ], 898 | "moon": [ 899 | 5, 900 | 4 901 | ], 902 | "full_moon": [ 903 | 5, 904 | 5 905 | ], 906 | "waning_gibbous_moon": [ 907 | 5, 908 | 6 909 | ], 910 | "last_quarter_moon": [ 911 | 5, 912 | 7 913 | ], 914 | "waning_crescent_moon": [ 915 | 5, 916 | 8 917 | ], 918 | "crescent_moon": [ 919 | 5, 920 | 9 921 | ], 922 | "new_moon_with_face": [ 923 | 5, 924 | 10 925 | ], 926 | "first_quarter_moon_with_face": [ 927 | 5, 928 | 11 929 | ], 930 | "last_quarter_moon_with_face": [ 931 | 5, 932 | 12 933 | ], 934 | "full_moon_with_face": [ 935 | 5, 936 | 13 937 | ], 938 | "sun_with_face": [ 939 | 5, 940 | 14 941 | ], 942 | "star2": [ 943 | 5, 944 | 15 945 | ], 946 | "stars": [ 947 | 5, 948 | 16 949 | ], 950 | "thermometer": [ 951 | 5, 952 | 17 953 | ], 954 | "mostly_sunny": [ 955 | 5, 956 | 18 957 | ], 958 | "barely_sunny": [ 959 | 5, 960 | 19 961 | ], 962 | "partly_sunny_rain": [ 963 | 5, 964 | 20 965 | ], 966 | "rain_cloud": [ 967 | 5, 968 | 21 969 | ], 970 | "snow_cloud": [ 971 | 5, 972 | 22 973 | ], 974 | "lightning": [ 975 | 5, 976 | 23 977 | ], 978 | "tornado": [ 979 | 5, 980 | 24 981 | ], 982 | "fog": [ 983 | 5, 984 | 25 985 | ], 986 | "wind_blowing_face": [ 987 | 5, 988 | 26 989 | ], 990 | "hotdog": [ 991 | 5, 992 | 27 993 | ], 994 | "taco": [ 995 | 5, 996 | 28 997 | ], 998 | "burrito": [ 999 | 5, 1000 | 29 1001 | ], 1002 | "chestnut": [ 1003 | 5, 1004 | 30 1005 | ], 1006 | "seedling": [ 1007 | 5, 1008 | 31 1009 | ], 1010 | "evergreen_tree": [ 1011 | 5, 1012 | 32 1013 | ], 1014 | "deciduous_tree": [ 1015 | 5, 1016 | 33 1017 | ], 1018 | "palm_tree": [ 1019 | 5, 1020 | 34 1021 | ], 1022 | "cactus": [ 1023 | 5, 1024 | 35 1025 | ], 1026 | "hot_pepper": [ 1027 | 5, 1028 | 36 1029 | ], 1030 | "tulip": [ 1031 | 5, 1032 | 37 1033 | ], 1034 | "cherry_blossom": [ 1035 | 5, 1036 | 38 1037 | ], 1038 | "rose": [ 1039 | 5, 1040 | 39 1041 | ], 1042 | "hibiscus": [ 1043 | 5, 1044 | 40 1045 | ], 1046 | "sunflower": [ 1047 | 5, 1048 | 41 1049 | ], 1050 | "blossom": [ 1051 | 5, 1052 | 42 1053 | ], 1054 | "corn": [ 1055 | 5, 1056 | 43 1057 | ], 1058 | "ear_of_rice": [ 1059 | 5, 1060 | 44 1061 | ], 1062 | "herb": [ 1063 | 5, 1064 | 45 1065 | ], 1066 | "four_leaf_clover": [ 1067 | 5, 1068 | 46 1069 | ], 1070 | "maple_leaf": [ 1071 | 5, 1072 | 47 1073 | ], 1074 | "fallen_leaf": [ 1075 | 5, 1076 | 48 1077 | ], 1078 | "leaves": [ 1079 | 6, 1080 | 0 1081 | ], 1082 | "mushroom": [ 1083 | 6, 1084 | 1 1085 | ], 1086 | "tomato": [ 1087 | 6, 1088 | 2 1089 | ], 1090 | "eggplant": [ 1091 | 6, 1092 | 3 1093 | ], 1094 | "grapes": [ 1095 | 6, 1096 | 4 1097 | ], 1098 | "melon": [ 1099 | 6, 1100 | 5 1101 | ], 1102 | "watermelon": [ 1103 | 6, 1104 | 6 1105 | ], 1106 | "tangerine": [ 1107 | 6, 1108 | 7 1109 | ], 1110 | "lemon": [ 1111 | 6, 1112 | 8 1113 | ], 1114 | "banana": [ 1115 | 6, 1116 | 9 1117 | ], 1118 | "pineapple": [ 1119 | 6, 1120 | 10 1121 | ], 1122 | "apple": [ 1123 | 6, 1124 | 11 1125 | ], 1126 | "green_apple": [ 1127 | 6, 1128 | 12 1129 | ], 1130 | "pear": [ 1131 | 6, 1132 | 13 1133 | ], 1134 | "peach": [ 1135 | 6, 1136 | 14 1137 | ], 1138 | "cherries": [ 1139 | 6, 1140 | 15 1141 | ], 1142 | "strawberry": [ 1143 | 6, 1144 | 16 1145 | ], 1146 | "hamburger": [ 1147 | 6, 1148 | 17 1149 | ], 1150 | "pizza": [ 1151 | 6, 1152 | 18 1153 | ], 1154 | "meat_on_bone": [ 1155 | 6, 1156 | 19 1157 | ], 1158 | "poultry_leg": [ 1159 | 6, 1160 | 20 1161 | ], 1162 | "rice_cracker": [ 1163 | 6, 1164 | 21 1165 | ], 1166 | "rice_ball": [ 1167 | 6, 1168 | 22 1169 | ], 1170 | "rice": [ 1171 | 6, 1172 | 23 1173 | ], 1174 | "curry": [ 1175 | 6, 1176 | 24 1177 | ], 1178 | "ramen": [ 1179 | 6, 1180 | 25 1181 | ], 1182 | "spaghetti": [ 1183 | 6, 1184 | 26 1185 | ], 1186 | "bread": [ 1187 | 6, 1188 | 27 1189 | ], 1190 | "fries": [ 1191 | 6, 1192 | 28 1193 | ], 1194 | "sweet_potato": [ 1195 | 6, 1196 | 29 1197 | ], 1198 | "dango": [ 1199 | 6, 1200 | 30 1201 | ], 1202 | "oden": [ 1203 | 6, 1204 | 31 1205 | ], 1206 | "sushi": [ 1207 | 6, 1208 | 32 1209 | ], 1210 | "fried_shrimp": [ 1211 | 6, 1212 | 33 1213 | ], 1214 | "fish_cake": [ 1215 | 6, 1216 | 34 1217 | ], 1218 | "icecream": [ 1219 | 6, 1220 | 35 1221 | ], 1222 | "shaved_ice": [ 1223 | 6, 1224 | 36 1225 | ], 1226 | "ice_cream": [ 1227 | 6, 1228 | 37 1229 | ], 1230 | "doughnut": [ 1231 | 6, 1232 | 38 1233 | ], 1234 | "cookie": [ 1235 | 6, 1236 | 39 1237 | ], 1238 | "chocolate_bar": [ 1239 | 6, 1240 | 40 1241 | ], 1242 | "candy": [ 1243 | 6, 1244 | 41 1245 | ], 1246 | "lollipop": [ 1247 | 6, 1248 | 42 1249 | ], 1250 | "custard": [ 1251 | 6, 1252 | 43 1253 | ], 1254 | "honey_pot": [ 1255 | 6, 1256 | 44 1257 | ], 1258 | "cake": [ 1259 | 6, 1260 | 45 1261 | ], 1262 | "bento": [ 1263 | 6, 1264 | 46 1265 | ], 1266 | "stew": [ 1267 | 6, 1268 | 47 1269 | ], 1270 | "fried_egg": [ 1271 | 6, 1272 | 48 1273 | ], 1274 | "fork_and_knife": [ 1275 | 7, 1276 | 0 1277 | ], 1278 | "tea": [ 1279 | 7, 1280 | 1 1281 | ], 1282 | "sake": [ 1283 | 7, 1284 | 2 1285 | ], 1286 | "wine_glass": [ 1287 | 7, 1288 | 3 1289 | ], 1290 | "cocktail": [ 1291 | 7, 1292 | 4 1293 | ], 1294 | "tropical_drink": [ 1295 | 7, 1296 | 5 1297 | ], 1298 | "beer": [ 1299 | 7, 1300 | 6 1301 | ], 1302 | "beers": [ 1303 | 7, 1304 | 7 1305 | ], 1306 | "baby_bottle": [ 1307 | 7, 1308 | 8 1309 | ], 1310 | "knife_fork_plate": [ 1311 | 7, 1312 | 9 1313 | ], 1314 | "champagne": [ 1315 | 7, 1316 | 10 1317 | ], 1318 | "popcorn": [ 1319 | 7, 1320 | 11 1321 | ], 1322 | "ribbon": [ 1323 | 7, 1324 | 12 1325 | ], 1326 | "gift": [ 1327 | 7, 1328 | 13 1329 | ], 1330 | "birthday": [ 1331 | 7, 1332 | 14 1333 | ], 1334 | "jack_o_lantern": [ 1335 | 7, 1336 | 15 1337 | ], 1338 | "christmas_tree": [ 1339 | 7, 1340 | 16 1341 | ], 1342 | "santa": [ 1343 | 7, 1344 | 17 1345 | ], 1346 | "fireworks": [ 1347 | 7, 1348 | 23 1349 | ], 1350 | "sparkler": [ 1351 | 7, 1352 | 24 1353 | ], 1354 | "balloon": [ 1355 | 7, 1356 | 25 1357 | ], 1358 | "tada": [ 1359 | 7, 1360 | 26 1361 | ], 1362 | "confetti_ball": [ 1363 | 7, 1364 | 27 1365 | ], 1366 | "tanabata_tree": [ 1367 | 7, 1368 | 28 1369 | ], 1370 | "crossed_flags": [ 1371 | 7, 1372 | 29 1373 | ], 1374 | "bamboo": [ 1375 | 7, 1376 | 30 1377 | ], 1378 | "dolls": [ 1379 | 7, 1380 | 31 1381 | ], 1382 | "flags": [ 1383 | 7, 1384 | 32 1385 | ], 1386 | "wind_chime": [ 1387 | 7, 1388 | 33 1389 | ], 1390 | "rice_scene": [ 1391 | 7, 1392 | 34 1393 | ], 1394 | "school_satchel": [ 1395 | 7, 1396 | 35 1397 | ], 1398 | "mortar_board": [ 1399 | 7, 1400 | 36 1401 | ], 1402 | "medal": [ 1403 | 7, 1404 | 37 1405 | ], 1406 | "reminder_ribbon": [ 1407 | 7, 1408 | 38 1409 | ], 1410 | "studio_microphone": [ 1411 | 7, 1412 | 39 1413 | ], 1414 | "level_slider": [ 1415 | 7, 1416 | 40 1417 | ], 1418 | "control_knobs": [ 1419 | 7, 1420 | 41 1421 | ], 1422 | "film_frames": [ 1423 | 7, 1424 | 42 1425 | ], 1426 | "admission_tickets": [ 1427 | 7, 1428 | 43 1429 | ], 1430 | "carousel_horse": [ 1431 | 7, 1432 | 44 1433 | ], 1434 | "ferris_wheel": [ 1435 | 7, 1436 | 45 1437 | ], 1438 | "roller_coaster": [ 1439 | 7, 1440 | 46 1441 | ], 1442 | "fishing_pole_and_fish": [ 1443 | 7, 1444 | 47 1445 | ], 1446 | "microphone": [ 1447 | 7, 1448 | 48 1449 | ], 1450 | "movie_camera": [ 1451 | 8, 1452 | 0 1453 | ], 1454 | "cinema": [ 1455 | 8, 1456 | 1 1457 | ], 1458 | "headphones": [ 1459 | 8, 1460 | 2 1461 | ], 1462 | "art": [ 1463 | 8, 1464 | 3 1465 | ], 1466 | "tophat": [ 1467 | 8, 1468 | 4 1469 | ], 1470 | "circus_tent": [ 1471 | 8, 1472 | 5 1473 | ], 1474 | "ticket": [ 1475 | 8, 1476 | 6 1477 | ], 1478 | "clapper": [ 1479 | 8, 1480 | 7 1481 | ], 1482 | "performing_arts": [ 1483 | 8, 1484 | 8 1485 | ], 1486 | "video_game": [ 1487 | 8, 1488 | 9 1489 | ], 1490 | "dart": [ 1491 | 8, 1492 | 10 1493 | ], 1494 | "slot_machine": [ 1495 | 8, 1496 | 11 1497 | ], 1498 | "8ball": [ 1499 | 8, 1500 | 12 1501 | ], 1502 | "game_die": [ 1503 | 8, 1504 | 13 1505 | ], 1506 | "bowling": [ 1507 | 8, 1508 | 14 1509 | ], 1510 | "flower_playing_cards": [ 1511 | 8, 1512 | 15 1513 | ], 1514 | "musical_note": [ 1515 | 8, 1516 | 16 1517 | ], 1518 | "notes": [ 1519 | 8, 1520 | 17 1521 | ], 1522 | "saxophone": [ 1523 | 8, 1524 | 18 1525 | ], 1526 | "guitar": [ 1527 | 8, 1528 | 19 1529 | ], 1530 | "musical_keyboard": [ 1531 | 8, 1532 | 20 1533 | ], 1534 | "trumpet": [ 1535 | 8, 1536 | 21 1537 | ], 1538 | "violin": [ 1539 | 8, 1540 | 22 1541 | ], 1542 | "musical_score": [ 1543 | 8, 1544 | 23 1545 | ], 1546 | "running_shirt_with_sash": [ 1547 | 8, 1548 | 24 1549 | ], 1550 | "tennis": [ 1551 | 8, 1552 | 25 1553 | ], 1554 | "ski": [ 1555 | 8, 1556 | 26 1557 | ], 1558 | "basketball": [ 1559 | 8, 1560 | 27 1561 | ], 1562 | "checkered_flag": [ 1563 | 8, 1564 | 28 1565 | ], 1566 | "snowboarder": [ 1567 | 8, 1568 | 29 1569 | ], 1570 | "runner": [ 1571 | 8, 1572 | 35 1573 | ], 1574 | "surfer": [ 1575 | 8, 1576 | 41 1577 | ], 1578 | "sports_medal": [ 1579 | 8, 1580 | 47 1581 | ], 1582 | "trophy": [ 1583 | 8, 1584 | 48 1585 | ], 1586 | "horse_racing": [ 1587 | 9, 1588 | 0 1589 | ], 1590 | "football": [ 1591 | 9, 1592 | 6 1593 | ], 1594 | "rugby_football": [ 1595 | 9, 1596 | 7 1597 | ], 1598 | "swimmer": [ 1599 | 9, 1600 | 8 1601 | ], 1602 | "weight_lifter": [ 1603 | 9, 1604 | 14 1605 | ], 1606 | "golfer": [ 1607 | 9, 1608 | 20 1609 | ], 1610 | "racing_motorcycle": [ 1611 | 9, 1612 | 26 1613 | ], 1614 | "racing_car": [ 1615 | 9, 1616 | 27 1617 | ], 1618 | "cricket_bat_and_ball": [ 1619 | 9, 1620 | 28 1621 | ], 1622 | "volleyball": [ 1623 | 9, 1624 | 29 1625 | ], 1626 | "field_hockey_stick_and_ball": [ 1627 | 9, 1628 | 30 1629 | ], 1630 | "ice_hockey_stick_and_puck": [ 1631 | 9, 1632 | 31 1633 | ], 1634 | "table_tennis_paddle_and_ball": [ 1635 | 9, 1636 | 32 1637 | ], 1638 | "snow_capped_mountain": [ 1639 | 9, 1640 | 33 1641 | ], 1642 | "camping": [ 1643 | 9, 1644 | 34 1645 | ], 1646 | "beach_with_umbrella": [ 1647 | 9, 1648 | 35 1649 | ], 1650 | "building_construction": [ 1651 | 9, 1652 | 36 1653 | ], 1654 | "house_buildings": [ 1655 | 9, 1656 | 37 1657 | ], 1658 | "cityscape": [ 1659 | 9, 1660 | 38 1661 | ], 1662 | "derelict_house_building": [ 1663 | 9, 1664 | 39 1665 | ], 1666 | "classical_building": [ 1667 | 9, 1668 | 40 1669 | ], 1670 | "desert": [ 1671 | 9, 1672 | 41 1673 | ], 1674 | "desert_island": [ 1675 | 9, 1676 | 42 1677 | ], 1678 | "national_park": [ 1679 | 9, 1680 | 43 1681 | ], 1682 | "stadium": [ 1683 | 9, 1684 | 44 1685 | ], 1686 | "house": [ 1687 | 9, 1688 | 45 1689 | ], 1690 | "house_with_garden": [ 1691 | 9, 1692 | 46 1693 | ], 1694 | "office": [ 1695 | 9, 1696 | 47 1697 | ], 1698 | "post_office": [ 1699 | 9, 1700 | 48 1701 | ], 1702 | "european_post_office": [ 1703 | 10, 1704 | 0 1705 | ], 1706 | "hospital": [ 1707 | 10, 1708 | 1 1709 | ], 1710 | "bank": [ 1711 | 10, 1712 | 2 1713 | ], 1714 | "atm": [ 1715 | 10, 1716 | 3 1717 | ], 1718 | "hotel": [ 1719 | 10, 1720 | 4 1721 | ], 1722 | "love_hotel": [ 1723 | 10, 1724 | 5 1725 | ], 1726 | "convenience_store": [ 1727 | 10, 1728 | 6 1729 | ], 1730 | "school": [ 1731 | 10, 1732 | 7 1733 | ], 1734 | "department_store": [ 1735 | 10, 1736 | 8 1737 | ], 1738 | "factory": [ 1739 | 10, 1740 | 9 1741 | ], 1742 | "izakaya_lantern": [ 1743 | 10, 1744 | 10 1745 | ], 1746 | "japanese_castle": [ 1747 | 10, 1748 | 11 1749 | ], 1750 | "european_castle": [ 1751 | 10, 1752 | 12 1753 | ], 1754 | "waving_white_flag": [ 1755 | 10, 1756 | 13 1757 | ], 1758 | "waving_black_flag": [ 1759 | 10, 1760 | 14 1761 | ], 1762 | "rosette": [ 1763 | 10, 1764 | 15 1765 | ], 1766 | "label": [ 1767 | 10, 1768 | 16 1769 | ], 1770 | "badminton_racquet_and_shuttlecock": [ 1771 | 10, 1772 | 17 1773 | ], 1774 | "bow_and_arrow": [ 1775 | 10, 1776 | 18 1777 | ], 1778 | "amphora": [ 1779 | 10, 1780 | 19 1781 | ], 1782 | "skin-tone-2": [ 1783 | 10, 1784 | 20 1785 | ], 1786 | "skin-tone-3": [ 1787 | 10, 1788 | 21 1789 | ], 1790 | "skin-tone-4": [ 1791 | 10, 1792 | 22 1793 | ], 1794 | "skin-tone-5": [ 1795 | 10, 1796 | 23 1797 | ], 1798 | "skin-tone-6": [ 1799 | 10, 1800 | 24 1801 | ], 1802 | "rat": [ 1803 | 10, 1804 | 25 1805 | ], 1806 | "mouse2": [ 1807 | 10, 1808 | 26 1809 | ], 1810 | "ox": [ 1811 | 10, 1812 | 27 1813 | ], 1814 | "water_buffalo": [ 1815 | 10, 1816 | 28 1817 | ], 1818 | "cow2": [ 1819 | 10, 1820 | 29 1821 | ], 1822 | "tiger2": [ 1823 | 10, 1824 | 30 1825 | ], 1826 | "leopard": [ 1827 | 10, 1828 | 31 1829 | ], 1830 | "rabbit2": [ 1831 | 10, 1832 | 32 1833 | ], 1834 | "cat2": [ 1835 | 10, 1836 | 33 1837 | ], 1838 | "dragon": [ 1839 | 10, 1840 | 34 1841 | ], 1842 | "crocodile": [ 1843 | 10, 1844 | 35 1845 | ], 1846 | "whale2": [ 1847 | 10, 1848 | 36 1849 | ], 1850 | "snail": [ 1851 | 10, 1852 | 37 1853 | ], 1854 | "snake": [ 1855 | 10, 1856 | 38 1857 | ], 1858 | "racehorse": [ 1859 | 10, 1860 | 39 1861 | ], 1862 | "ram": [ 1863 | 10, 1864 | 40 1865 | ], 1866 | "goat": [ 1867 | 10, 1868 | 41 1869 | ], 1870 | "sheep": [ 1871 | 10, 1872 | 42 1873 | ], 1874 | "monkey": [ 1875 | 10, 1876 | 43 1877 | ], 1878 | "rooster": [ 1879 | 10, 1880 | 44 1881 | ], 1882 | "chicken": [ 1883 | 10, 1884 | 45 1885 | ], 1886 | "dog2": [ 1887 | 10, 1888 | 46 1889 | ], 1890 | "pig2": [ 1891 | 10, 1892 | 47 1893 | ], 1894 | "boar": [ 1895 | 10, 1896 | 48 1897 | ], 1898 | "elephant": [ 1899 | 11, 1900 | 0 1901 | ], 1902 | "octopus": [ 1903 | 11, 1904 | 1 1905 | ], 1906 | "shell": [ 1907 | 11, 1908 | 2 1909 | ], 1910 | "bug": [ 1911 | 11, 1912 | 3 1913 | ], 1914 | "ant": [ 1915 | 11, 1916 | 4 1917 | ], 1918 | "bee": [ 1919 | 11, 1920 | 5 1921 | ], 1922 | "beetle": [ 1923 | 11, 1924 | 6 1925 | ], 1926 | "fish": [ 1927 | 11, 1928 | 7 1929 | ], 1930 | "tropical_fish": [ 1931 | 11, 1932 | 8 1933 | ], 1934 | "blowfish": [ 1935 | 11, 1936 | 9 1937 | ], 1938 | "turtle": [ 1939 | 11, 1940 | 10 1941 | ], 1942 | "hatching_chick": [ 1943 | 11, 1944 | 11 1945 | ], 1946 | "baby_chick": [ 1947 | 11, 1948 | 12 1949 | ], 1950 | "hatched_chick": [ 1951 | 11, 1952 | 13 1953 | ], 1954 | "bird": [ 1955 | 11, 1956 | 14 1957 | ], 1958 | "penguin": [ 1959 | 11, 1960 | 15 1961 | ], 1962 | "koala": [ 1963 | 11, 1964 | 16 1965 | ], 1966 | "poodle": [ 1967 | 11, 1968 | 17 1969 | ], 1970 | "dromedary_camel": [ 1971 | 11, 1972 | 18 1973 | ], 1974 | "camel": [ 1975 | 11, 1976 | 19 1977 | ], 1978 | "dolphin": [ 1979 | 11, 1980 | 20 1981 | ], 1982 | "mouse": [ 1983 | 11, 1984 | 21 1985 | ], 1986 | "cow": [ 1987 | 11, 1988 | 22 1989 | ], 1990 | "tiger": [ 1991 | 11, 1992 | 23 1993 | ], 1994 | "rabbit": [ 1995 | 11, 1996 | 24 1997 | ], 1998 | "cat": [ 1999 | 11, 2000 | 25 2001 | ], 2002 | "dragon_face": [ 2003 | 11, 2004 | 26 2005 | ], 2006 | "whale": [ 2007 | 11, 2008 | 27 2009 | ], 2010 | "horse": [ 2011 | 11, 2012 | 28 2013 | ], 2014 | "monkey_face": [ 2015 | 11, 2016 | 29 2017 | ], 2018 | "dog": [ 2019 | 11, 2020 | 30 2021 | ], 2022 | "pig": [ 2023 | 11, 2024 | 31 2025 | ], 2026 | "frog": [ 2027 | 11, 2028 | 32 2029 | ], 2030 | "hamster": [ 2031 | 11, 2032 | 33 2033 | ], 2034 | "wolf": [ 2035 | 11, 2036 | 34 2037 | ], 2038 | "bear": [ 2039 | 11, 2040 | 35 2041 | ], 2042 | "panda_face": [ 2043 | 11, 2044 | 36 2045 | ], 2046 | "pig_nose": [ 2047 | 11, 2048 | 37 2049 | ], 2050 | "feet": [ 2051 | 11, 2052 | 38 2053 | ], 2054 | "chipmunk": [ 2055 | 11, 2056 | 39 2057 | ], 2058 | "eyes": [ 2059 | 11, 2060 | 40 2061 | ], 2062 | "eye": [ 2063 | 11, 2064 | 41 2065 | ], 2066 | "ear": [ 2067 | 11, 2068 | 42 2069 | ], 2070 | "nose": [ 2071 | 11, 2072 | 48 2073 | ], 2074 | "lips": [ 2075 | 12, 2076 | 5 2077 | ], 2078 | "tongue": [ 2079 | 12, 2080 | 6 2081 | ], 2082 | "point_up_2": [ 2083 | 12, 2084 | 7 2085 | ], 2086 | "point_down": [ 2087 | 12, 2088 | 13 2089 | ], 2090 | "point_left": [ 2091 | 12, 2092 | 19 2093 | ], 2094 | "point_right": [ 2095 | 12, 2096 | 25 2097 | ], 2098 | "facepunch": [ 2099 | 12, 2100 | 31 2101 | ], 2102 | "wave": [ 2103 | 12, 2104 | 37 2105 | ], 2106 | "ok_hand": [ 2107 | 12, 2108 | 43 2109 | ], 2110 | "+1": [ 2111 | 13, 2112 | 0 2113 | ], 2114 | "-1": [ 2115 | 13, 2116 | 6 2117 | ], 2118 | "clap": [ 2119 | 13, 2120 | 12 2121 | ], 2122 | "open_hands": [ 2123 | 13, 2124 | 18 2125 | ], 2126 | "crown": [ 2127 | 13, 2128 | 24 2129 | ], 2130 | "womans_hat": [ 2131 | 13, 2132 | 25 2133 | ], 2134 | "eyeglasses": [ 2135 | 13, 2136 | 26 2137 | ], 2138 | "necktie": [ 2139 | 13, 2140 | 27 2141 | ], 2142 | "shirt": [ 2143 | 13, 2144 | 28 2145 | ], 2146 | "jeans": [ 2147 | 13, 2148 | 29 2149 | ], 2150 | "dress": [ 2151 | 13, 2152 | 30 2153 | ], 2154 | "kimono": [ 2155 | 13, 2156 | 31 2157 | ], 2158 | "bikini": [ 2159 | 13, 2160 | 32 2161 | ], 2162 | "womans_clothes": [ 2163 | 13, 2164 | 33 2165 | ], 2166 | "purse": [ 2167 | 13, 2168 | 34 2169 | ], 2170 | "handbag": [ 2171 | 13, 2172 | 35 2173 | ], 2174 | "pouch": [ 2175 | 13, 2176 | 36 2177 | ], 2178 | "mans_shoe": [ 2179 | 13, 2180 | 37 2181 | ], 2182 | "athletic_shoe": [ 2183 | 13, 2184 | 38 2185 | ], 2186 | "high_heel": [ 2187 | 13, 2188 | 39 2189 | ], 2190 | "sandal": [ 2191 | 13, 2192 | 40 2193 | ], 2194 | "boot": [ 2195 | 13, 2196 | 41 2197 | ], 2198 | "footprints": [ 2199 | 13, 2200 | 42 2201 | ], 2202 | "bust_in_silhouette": [ 2203 | 13, 2204 | 43 2205 | ], 2206 | "busts_in_silhouette": [ 2207 | 13, 2208 | 44 2209 | ], 2210 | "boy": [ 2211 | 13, 2212 | 45 2213 | ], 2214 | "girl": [ 2215 | 14, 2216 | 2 2217 | ], 2218 | "man": [ 2219 | 14, 2220 | 8 2221 | ], 2222 | "woman": [ 2223 | 14, 2224 | 14 2225 | ], 2226 | "family": [ 2227 | 14, 2228 | 20 2229 | ], 2230 | "couple": [ 2231 | 14, 2232 | 21 2233 | ], 2234 | "two_men_holding_hands": [ 2235 | 14, 2236 | 22 2237 | ], 2238 | "two_women_holding_hands": [ 2239 | 14, 2240 | 23 2241 | ], 2242 | "cop": [ 2243 | 14, 2244 | 24 2245 | ], 2246 | "dancers": [ 2247 | 14, 2248 | 30 2249 | ], 2250 | "bride_with_veil": [ 2251 | 14, 2252 | 31 2253 | ], 2254 | "person_with_blond_hair": [ 2255 | 14, 2256 | 37 2257 | ], 2258 | "man_with_gua_pi_mao": [ 2259 | 14, 2260 | 43 2261 | ], 2262 | "man_with_turban": [ 2263 | 15, 2264 | 0 2265 | ], 2266 | "older_man": [ 2267 | 15, 2268 | 6 2269 | ], 2270 | "older_woman": [ 2271 | 15, 2272 | 12 2273 | ], 2274 | "baby": [ 2275 | 15, 2276 | 18 2277 | ], 2278 | "construction_worker": [ 2279 | 15, 2280 | 24 2281 | ], 2282 | "princess": [ 2283 | 15, 2284 | 30 2285 | ], 2286 | "japanese_ogre": [ 2287 | 15, 2288 | 36 2289 | ], 2290 | "japanese_goblin": [ 2291 | 15, 2292 | 37 2293 | ], 2294 | "ghost": [ 2295 | 15, 2296 | 38 2297 | ], 2298 | "angel": [ 2299 | 15, 2300 | 39 2301 | ], 2302 | "alien": [ 2303 | 15, 2304 | 45 2305 | ], 2306 | "space_invader": [ 2307 | 15, 2308 | 46 2309 | ], 2310 | "imp": [ 2311 | 15, 2312 | 47 2313 | ], 2314 | "skull": [ 2315 | 15, 2316 | 48 2317 | ], 2318 | "information_desk_person": [ 2319 | 16, 2320 | 0 2321 | ], 2322 | "guardsman": [ 2323 | 16, 2324 | 6 2325 | ], 2326 | "dancer": [ 2327 | 16, 2328 | 12 2329 | ], 2330 | "lipstick": [ 2331 | 16, 2332 | 18 2333 | ], 2334 | "nail_care": [ 2335 | 16, 2336 | 19 2337 | ], 2338 | "massage": [ 2339 | 16, 2340 | 25 2341 | ], 2342 | "haircut": [ 2343 | 16, 2344 | 31 2345 | ], 2346 | "barber": [ 2347 | 16, 2348 | 37 2349 | ], 2350 | "syringe": [ 2351 | 16, 2352 | 38 2353 | ], 2354 | "pill": [ 2355 | 16, 2356 | 39 2357 | ], 2358 | "kiss": [ 2359 | 16, 2360 | 40 2361 | ], 2362 | "love_letter": [ 2363 | 16, 2364 | 41 2365 | ], 2366 | "ring": [ 2367 | 16, 2368 | 42 2369 | ], 2370 | "gem": [ 2371 | 16, 2372 | 43 2373 | ], 2374 | "couplekiss": [ 2375 | 16, 2376 | 44 2377 | ], 2378 | "bouquet": [ 2379 | 16, 2380 | 45 2381 | ], 2382 | "couple_with_heart": [ 2383 | 16, 2384 | 46 2385 | ], 2386 | "wedding": [ 2387 | 16, 2388 | 47 2389 | ], 2390 | "heartbeat": [ 2391 | 16, 2392 | 48 2393 | ], 2394 | "broken_heart": [ 2395 | 17, 2396 | 0 2397 | ], 2398 | "two_hearts": [ 2399 | 17, 2400 | 1 2401 | ], 2402 | "sparkling_heart": [ 2403 | 17, 2404 | 2 2405 | ], 2406 | "heartpulse": [ 2407 | 17, 2408 | 3 2409 | ], 2410 | "cupid": [ 2411 | 17, 2412 | 4 2413 | ], 2414 | "blue_heart": [ 2415 | 17, 2416 | 5 2417 | ], 2418 | "green_heart": [ 2419 | 17, 2420 | 6 2421 | ], 2422 | "yellow_heart": [ 2423 | 17, 2424 | 7 2425 | ], 2426 | "purple_heart": [ 2427 | 17, 2428 | 8 2429 | ], 2430 | "gift_heart": [ 2431 | 17, 2432 | 9 2433 | ], 2434 | "revolving_hearts": [ 2435 | 17, 2436 | 10 2437 | ], 2438 | "heart_decoration": [ 2439 | 17, 2440 | 11 2441 | ], 2442 | "diamond_shape_with_a_dot_inside": [ 2443 | 17, 2444 | 12 2445 | ], 2446 | "bulb": [ 2447 | 17, 2448 | 13 2449 | ], 2450 | "anger": [ 2451 | 17, 2452 | 14 2453 | ], 2454 | "bomb": [ 2455 | 17, 2456 | 15 2457 | ], 2458 | "zzz": [ 2459 | 17, 2460 | 16 2461 | ], 2462 | "boom": [ 2463 | 17, 2464 | 17 2465 | ], 2466 | "sweat_drops": [ 2467 | 17, 2468 | 18 2469 | ], 2470 | "droplet": [ 2471 | 17, 2472 | 19 2473 | ], 2474 | "dash": [ 2475 | 17, 2476 | 20 2477 | ], 2478 | "hankey": [ 2479 | 17, 2480 | 21 2481 | ], 2482 | "muscle": [ 2483 | 17, 2484 | 22 2485 | ], 2486 | "dizzy": [ 2487 | 17, 2488 | 28 2489 | ], 2490 | "speech_balloon": [ 2491 | 17, 2492 | 29 2493 | ], 2494 | "thought_balloon": [ 2495 | 17, 2496 | 30 2497 | ], 2498 | "white_flower": [ 2499 | 17, 2500 | 31 2501 | ], 2502 | "moneybag": [ 2503 | 17, 2504 | 33 2505 | ], 2506 | "currency_exchange": [ 2507 | 17, 2508 | 34 2509 | ], 2510 | "heavy_dollar_sign": [ 2511 | 17, 2512 | 35 2513 | ], 2514 | "credit_card": [ 2515 | 17, 2516 | 36 2517 | ], 2518 | "yen": [ 2519 | 17, 2520 | 37 2521 | ], 2522 | "dollar": [ 2523 | 17, 2524 | 38 2525 | ], 2526 | "euro": [ 2527 | 17, 2528 | 39 2529 | ], 2530 | "pound": [ 2531 | 17, 2532 | 40 2533 | ], 2534 | "money_with_wings": [ 2535 | 17, 2536 | 41 2537 | ], 2538 | "chart": [ 2539 | 17, 2540 | 42 2541 | ], 2542 | "seat": [ 2543 | 17, 2544 | 43 2545 | ], 2546 | "computer": [ 2547 | 17, 2548 | 44 2549 | ], 2550 | "briefcase": [ 2551 | 17, 2552 | 45 2553 | ], 2554 | "minidisc": [ 2555 | 17, 2556 | 46 2557 | ], 2558 | "floppy_disk": [ 2559 | 17, 2560 | 47 2561 | ], 2562 | "cd": [ 2563 | 17, 2564 | 48 2565 | ], 2566 | "dvd": [ 2567 | 18, 2568 | 0 2569 | ], 2570 | "file_folder": [ 2571 | 18, 2572 | 1 2573 | ], 2574 | "open_file_folder": [ 2575 | 18, 2576 | 2 2577 | ], 2578 | "page_with_curl": [ 2579 | 18, 2580 | 3 2581 | ], 2582 | "page_facing_up": [ 2583 | 18, 2584 | 4 2585 | ], 2586 | "date": [ 2587 | 18, 2588 | 5 2589 | ], 2590 | "calendar": [ 2591 | 18, 2592 | 6 2593 | ], 2594 | "card_index": [ 2595 | 18, 2596 | 7 2597 | ], 2598 | "chart_with_upwards_trend": [ 2599 | 18, 2600 | 8 2601 | ], 2602 | "chart_with_downwards_trend": [ 2603 | 18, 2604 | 9 2605 | ], 2606 | "bar_chart": [ 2607 | 18, 2608 | 10 2609 | ], 2610 | "clipboard": [ 2611 | 18, 2612 | 11 2613 | ], 2614 | "pushpin": [ 2615 | 18, 2616 | 12 2617 | ], 2618 | "round_pushpin": [ 2619 | 18, 2620 | 13 2621 | ], 2622 | "paperclip": [ 2623 | 18, 2624 | 14 2625 | ], 2626 | "straight_ruler": [ 2627 | 18, 2628 | 15 2629 | ], 2630 | "triangular_ruler": [ 2631 | 18, 2632 | 16 2633 | ], 2634 | "bookmark_tabs": [ 2635 | 18, 2636 | 17 2637 | ], 2638 | "ledger": [ 2639 | 18, 2640 | 18 2641 | ], 2642 | "notebook": [ 2643 | 18, 2644 | 19 2645 | ], 2646 | "notebook_with_decorative_cover": [ 2647 | 18, 2648 | 20 2649 | ], 2650 | "closed_book": [ 2651 | 18, 2652 | 21 2653 | ], 2654 | "book": [ 2655 | 18, 2656 | 22 2657 | ], 2658 | "green_book": [ 2659 | 18, 2660 | 23 2661 | ], 2662 | "blue_book": [ 2663 | 18, 2664 | 24 2665 | ], 2666 | "orange_book": [ 2667 | 18, 2668 | 25 2669 | ], 2670 | "books": [ 2671 | 18, 2672 | 26 2673 | ], 2674 | "name_badge": [ 2675 | 18, 2676 | 27 2677 | ], 2678 | "scroll": [ 2679 | 18, 2680 | 28 2681 | ], 2682 | "memo": [ 2683 | 18, 2684 | 29 2685 | ], 2686 | "telephone_receiver": [ 2687 | 18, 2688 | 30 2689 | ], 2690 | "pager": [ 2691 | 18, 2692 | 31 2693 | ], 2694 | "fax": [ 2695 | 18, 2696 | 32 2697 | ], 2698 | "satellite_antenna": [ 2699 | 18, 2700 | 33 2701 | ], 2702 | "loudspeaker": [ 2703 | 18, 2704 | 34 2705 | ], 2706 | "mega": [ 2707 | 18, 2708 | 35 2709 | ], 2710 | "outbox_tray": [ 2711 | 18, 2712 | 36 2713 | ], 2714 | "inbox_tray": [ 2715 | 18, 2716 | 37 2717 | ], 2718 | "package": [ 2719 | 18, 2720 | 38 2721 | ], 2722 | "e-mail": [ 2723 | 18, 2724 | 39 2725 | ], 2726 | "incoming_envelope": [ 2727 | 18, 2728 | 40 2729 | ], 2730 | "envelope_with_arrow": [ 2731 | 18, 2732 | 41 2733 | ], 2734 | "mailbox_closed": [ 2735 | 18, 2736 | 42 2737 | ], 2738 | "mailbox": [ 2739 | 18, 2740 | 43 2741 | ], 2742 | "mailbox_with_mail": [ 2743 | 18, 2744 | 44 2745 | ], 2746 | "mailbox_with_no_mail": [ 2747 | 18, 2748 | 45 2749 | ], 2750 | "postbox": [ 2751 | 18, 2752 | 46 2753 | ], 2754 | "postal_horn": [ 2755 | 18, 2756 | 47 2757 | ], 2758 | "newspaper": [ 2759 | 18, 2760 | 48 2761 | ], 2762 | "iphone": [ 2763 | 19, 2764 | 0 2765 | ], 2766 | "calling": [ 2767 | 19, 2768 | 1 2769 | ], 2770 | "vibration_mode": [ 2771 | 19, 2772 | 2 2773 | ], 2774 | "mobile_phone_off": [ 2775 | 19, 2776 | 3 2777 | ], 2778 | "no_mobile_phones": [ 2779 | 19, 2780 | 4 2781 | ], 2782 | "signal_strength": [ 2783 | 19, 2784 | 5 2785 | ], 2786 | "camera": [ 2787 | 19, 2788 | 6 2789 | ], 2790 | "camera_with_flash": [ 2791 | 19, 2792 | 7 2793 | ], 2794 | "video_camera": [ 2795 | 19, 2796 | 8 2797 | ], 2798 | "tv": [ 2799 | 19, 2800 | 9 2801 | ], 2802 | "radio": [ 2803 | 19, 2804 | 10 2805 | ], 2806 | "vhs": [ 2807 | 19, 2808 | 11 2809 | ], 2810 | "film_projector": [ 2811 | 19, 2812 | 12 2813 | ], 2814 | "prayer_beads": [ 2815 | 19, 2816 | 13 2817 | ], 2818 | "twisted_rightwards_arrows": [ 2819 | 19, 2820 | 14 2821 | ], 2822 | "repeat": [ 2823 | 19, 2824 | 15 2825 | ], 2826 | "repeat_one": [ 2827 | 19, 2828 | 16 2829 | ], 2830 | "arrows_clockwise": [ 2831 | 19, 2832 | 17 2833 | ], 2834 | "arrows_counterclockwise": [ 2835 | 19, 2836 | 18 2837 | ], 2838 | "low_brightness": [ 2839 | 19, 2840 | 19 2841 | ], 2842 | "high_brightness": [ 2843 | 19, 2844 | 20 2845 | ], 2846 | "mute": [ 2847 | 19, 2848 | 21 2849 | ], 2850 | "speaker": [ 2851 | 19, 2852 | 22 2853 | ], 2854 | "sound": [ 2855 | 19, 2856 | 23 2857 | ], 2858 | "loud_sound": [ 2859 | 19, 2860 | 24 2861 | ], 2862 | "battery": [ 2863 | 19, 2864 | 25 2865 | ], 2866 | "electric_plug": [ 2867 | 19, 2868 | 26 2869 | ], 2870 | "mag": [ 2871 | 19, 2872 | 27 2873 | ], 2874 | "mag_right": [ 2875 | 19, 2876 | 28 2877 | ], 2878 | "lock_with_ink_pen": [ 2879 | 19, 2880 | 29 2881 | ], 2882 | "closed_lock_with_key": [ 2883 | 19, 2884 | 30 2885 | ], 2886 | "key": [ 2887 | 19, 2888 | 31 2889 | ], 2890 | "lock": [ 2891 | 19, 2892 | 32 2893 | ], 2894 | "unlock": [ 2895 | 19, 2896 | 33 2897 | ], 2898 | "bell": [ 2899 | 19, 2900 | 34 2901 | ], 2902 | "no_bell": [ 2903 | 19, 2904 | 35 2905 | ], 2906 | "bookmark": [ 2907 | 19, 2908 | 36 2909 | ], 2910 | "link": [ 2911 | 19, 2912 | 37 2913 | ], 2914 | "radio_button": [ 2915 | 19, 2916 | 38 2917 | ], 2918 | "back": [ 2919 | 19, 2920 | 39 2921 | ], 2922 | "end": [ 2923 | 19, 2924 | 40 2925 | ], 2926 | "on": [ 2927 | 19, 2928 | 41 2929 | ], 2930 | "soon": [ 2931 | 19, 2932 | 42 2933 | ], 2934 | "top": [ 2935 | 19, 2936 | 43 2937 | ], 2938 | "underage": [ 2939 | 19, 2940 | 44 2941 | ], 2942 | "keycap_ten": [ 2943 | 19, 2944 | 45 2945 | ], 2946 | "capital_abcd": [ 2947 | 19, 2948 | 46 2949 | ], 2950 | "abcd": [ 2951 | 19, 2952 | 47 2953 | ], 2954 | "symbols": [ 2955 | 20, 2956 | 0 2957 | ], 2958 | "abc": [ 2959 | 20, 2960 | 1 2961 | ], 2962 | "fire": [ 2963 | 20, 2964 | 2 2965 | ], 2966 | "flashlight": [ 2967 | 20, 2968 | 3 2969 | ], 2970 | "wrench": [ 2971 | 20, 2972 | 4 2973 | ], 2974 | "hammer": [ 2975 | 20, 2976 | 5 2977 | ], 2978 | "nut_and_bolt": [ 2979 | 20, 2980 | 6 2981 | ], 2982 | "hocho": [ 2983 | 20, 2984 | 7 2985 | ], 2986 | "gun": [ 2987 | 20, 2988 | 8 2989 | ], 2990 | "microscope": [ 2991 | 20, 2992 | 9 2993 | ], 2994 | "telescope": [ 2995 | 20, 2996 | 10 2997 | ], 2998 | "crystal_ball": [ 2999 | 20, 3000 | 11 3001 | ], 3002 | "six_pointed_star": [ 3003 | 20, 3004 | 12 3005 | ], 3006 | "beginner": [ 3007 | 20, 3008 | 13 3009 | ], 3010 | "trident": [ 3011 | 20, 3012 | 14 3013 | ], 3014 | "black_square_button": [ 3015 | 20, 3016 | 15 3017 | ], 3018 | "white_square_button": [ 3019 | 20, 3020 | 16 3021 | ], 3022 | "red_circle": [ 3023 | 20, 3024 | 17 3025 | ], 3026 | "large_blue_circle": [ 3027 | 20, 3028 | 18 3029 | ], 3030 | "large_orange_diamond": [ 3031 | 20, 3032 | 19 3033 | ], 3034 | "large_blue_diamond": [ 3035 | 20, 3036 | 20 3037 | ], 3038 | "small_orange_diamond": [ 3039 | 20, 3040 | 21 3041 | ], 3042 | "small_blue_diamond": [ 3043 | 20, 3044 | 22 3045 | ], 3046 | "small_red_triangle": [ 3047 | 20, 3048 | 23 3049 | ], 3050 | "small_red_triangle_down": [ 3051 | 20, 3052 | 24 3053 | ], 3054 | "arrow_up_small": [ 3055 | 20, 3056 | 25 3057 | ], 3058 | "arrow_down_small": [ 3059 | 20, 3060 | 26 3061 | ], 3062 | "om_symbol": [ 3063 | 20, 3064 | 27 3065 | ], 3066 | "dove_of_peace": [ 3067 | 20, 3068 | 28 3069 | ], 3070 | "kaaba": [ 3071 | 20, 3072 | 29 3073 | ], 3074 | "mosque": [ 3075 | 20, 3076 | 30 3077 | ], 3078 | "synagogue": [ 3079 | 20, 3080 | 31 3081 | ], 3082 | "menorah_with_nine_branches": [ 3083 | 20, 3084 | 32 3085 | ], 3086 | "clock1": [ 3087 | 20, 3088 | 33 3089 | ], 3090 | "clock2": [ 3091 | 20, 3092 | 34 3093 | ], 3094 | "clock3": [ 3095 | 20, 3096 | 35 3097 | ], 3098 | "clock4": [ 3099 | 20, 3100 | 36 3101 | ], 3102 | "clock5": [ 3103 | 20, 3104 | 37 3105 | ], 3106 | "clock6": [ 3107 | 20, 3108 | 38 3109 | ], 3110 | "clock7": [ 3111 | 20, 3112 | 39 3113 | ], 3114 | "clock8": [ 3115 | 20, 3116 | 40 3117 | ], 3118 | "clock9": [ 3119 | 20, 3120 | 41 3121 | ], 3122 | "clock10": [ 3123 | 20, 3124 | 42 3125 | ], 3126 | "clock11": [ 3127 | 20, 3128 | 43 3129 | ], 3130 | "clock12": [ 3131 | 20, 3132 | 44 3133 | ], 3134 | "clock130": [ 3135 | 20, 3136 | 45 3137 | ], 3138 | "clock230": [ 3139 | 20, 3140 | 46 3141 | ], 3142 | "clock330": [ 3143 | 20, 3144 | 47 3145 | ], 3146 | "clock430": [ 3147 | 20, 3148 | 48 3149 | ], 3150 | "clock530": [ 3151 | 21, 3152 | 0 3153 | ], 3154 | "clock630": [ 3155 | 21, 3156 | 1 3157 | ], 3158 | "clock730": [ 3159 | 21, 3160 | 2 3161 | ], 3162 | "clock830": [ 3163 | 21, 3164 | 3 3165 | ], 3166 | "clock930": [ 3167 | 21, 3168 | 4 3169 | ], 3170 | "clock1030": [ 3171 | 21, 3172 | 5 3173 | ], 3174 | "clock1130": [ 3175 | 21, 3176 | 6 3177 | ], 3178 | "clock1230": [ 3179 | 21, 3180 | 7 3181 | ], 3182 | "candle": [ 3183 | 21, 3184 | 8 3185 | ], 3186 | "mantelpiece_clock": [ 3187 | 21, 3188 | 9 3189 | ], 3190 | "hole": [ 3191 | 21, 3192 | 10 3193 | ], 3194 | "man_in_business_suit_levitating": [ 3195 | 21, 3196 | 11 3197 | ], 3198 | "sleuth_or_spy": [ 3199 | 21, 3200 | 17 3201 | ], 3202 | "dark_sunglasses": [ 3203 | 21, 3204 | 23 3205 | ], 3206 | "spider": [ 3207 | 21, 3208 | 24 3209 | ], 3210 | "spider_web": [ 3211 | 21, 3212 | 25 3213 | ], 3214 | "joystick": [ 3215 | 21, 3216 | 26 3217 | ], 3218 | "man_dancing": [ 3219 | 21, 3220 | 27 3221 | ], 3222 | "linked_paperclips": [ 3223 | 21, 3224 | 33 3225 | ], 3226 | "lower_left_ballpoint_pen": [ 3227 | 21, 3228 | 34 3229 | ], 3230 | "lower_left_fountain_pen": [ 3231 | 21, 3232 | 35 3233 | ], 3234 | "lower_left_paintbrush": [ 3235 | 21, 3236 | 36 3237 | ], 3238 | "lower_left_crayon": [ 3239 | 21, 3240 | 37 3241 | ], 3242 | "raised_hand_with_fingers_splayed": [ 3243 | 21, 3244 | 38 3245 | ], 3246 | "middle_finger": [ 3247 | 21, 3248 | 44 3249 | ], 3250 | "spock-hand": [ 3251 | 22, 3252 | 1 3253 | ], 3254 | "black_heart": [ 3255 | 22, 3256 | 7 3257 | ], 3258 | "desktop_computer": [ 3259 | 22, 3260 | 8 3261 | ], 3262 | "printer": [ 3263 | 22, 3264 | 9 3265 | ], 3266 | "three_button_mouse": [ 3267 | 22, 3268 | 10 3269 | ], 3270 | "trackball": [ 3271 | 22, 3272 | 11 3273 | ], 3274 | "frame_with_picture": [ 3275 | 22, 3276 | 12 3277 | ], 3278 | "card_index_dividers": [ 3279 | 22, 3280 | 13 3281 | ], 3282 | "card_file_box": [ 3283 | 22, 3284 | 14 3285 | ], 3286 | "file_cabinet": [ 3287 | 22, 3288 | 15 3289 | ], 3290 | "wastebasket": [ 3291 | 22, 3292 | 16 3293 | ], 3294 | "spiral_note_pad": [ 3295 | 22, 3296 | 17 3297 | ], 3298 | "spiral_calendar_pad": [ 3299 | 22, 3300 | 18 3301 | ], 3302 | "compression": [ 3303 | 22, 3304 | 19 3305 | ], 3306 | "old_key": [ 3307 | 22, 3308 | 20 3309 | ], 3310 | "rolled_up_newspaper": [ 3311 | 22, 3312 | 21 3313 | ], 3314 | "dagger_knife": [ 3315 | 22, 3316 | 22 3317 | ], 3318 | "speaking_head_in_silhouette": [ 3319 | 22, 3320 | 23 3321 | ], 3322 | "left_speech_bubble": [ 3323 | 22, 3324 | 24 3325 | ], 3326 | "right_anger_bubble": [ 3327 | 22, 3328 | 25 3329 | ], 3330 | "ballot_box_with_ballot": [ 3331 | 22, 3332 | 26 3333 | ], 3334 | "world_map": [ 3335 | 22, 3336 | 27 3337 | ], 3338 | "mount_fuji": [ 3339 | 22, 3340 | 28 3341 | ], 3342 | "tokyo_tower": [ 3343 | 22, 3344 | 29 3345 | ], 3346 | "statue_of_liberty": [ 3347 | 22, 3348 | 30 3349 | ], 3350 | "japan": [ 3351 | 22, 3352 | 31 3353 | ], 3354 | "moyai": [ 3355 | 22, 3356 | 32 3357 | ], 3358 | "grinning": [ 3359 | 22, 3360 | 33 3361 | ], 3362 | "grin": [ 3363 | 22, 3364 | 34 3365 | ], 3366 | "joy": [ 3367 | 22, 3368 | 35 3369 | ], 3370 | "smiley": [ 3371 | 22, 3372 | 36 3373 | ], 3374 | "smile": [ 3375 | 22, 3376 | 37 3377 | ], 3378 | "sweat_smile": [ 3379 | 22, 3380 | 38 3381 | ], 3382 | "laughing": [ 3383 | 22, 3384 | 39 3385 | ], 3386 | "innocent": [ 3387 | 22, 3388 | 40 3389 | ], 3390 | "smiling_imp": [ 3391 | 22, 3392 | 41 3393 | ], 3394 | "wink": [ 3395 | 22, 3396 | 42 3397 | ], 3398 | "blush": [ 3399 | 22, 3400 | 43 3401 | ], 3402 | "yum": [ 3403 | 22, 3404 | 44 3405 | ], 3406 | "relieved": [ 3407 | 22, 3408 | 45 3409 | ], 3410 | "heart_eyes": [ 3411 | 22, 3412 | 46 3413 | ], 3414 | "sunglasses": [ 3415 | 22, 3416 | 47 3417 | ], 3418 | "smirk": [ 3419 | 22, 3420 | 48 3421 | ], 3422 | "neutral_face": [ 3423 | 23, 3424 | 0 3425 | ], 3426 | "expressionless": [ 3427 | 23, 3428 | 1 3429 | ], 3430 | "unamused": [ 3431 | 23, 3432 | 2 3433 | ], 3434 | "sweat": [ 3435 | 23, 3436 | 3 3437 | ], 3438 | "pensive": [ 3439 | 23, 3440 | 4 3441 | ], 3442 | "confused": [ 3443 | 23, 3444 | 5 3445 | ], 3446 | "confounded": [ 3447 | 23, 3448 | 6 3449 | ], 3450 | "kissing": [ 3451 | 23, 3452 | 7 3453 | ], 3454 | "kissing_heart": [ 3455 | 23, 3456 | 8 3457 | ], 3458 | "kissing_smiling_eyes": [ 3459 | 23, 3460 | 9 3461 | ], 3462 | "kissing_closed_eyes": [ 3463 | 23, 3464 | 10 3465 | ], 3466 | "stuck_out_tongue": [ 3467 | 23, 3468 | 11 3469 | ], 3470 | "stuck_out_tongue_winking_eye": [ 3471 | 23, 3472 | 12 3473 | ], 3474 | "stuck_out_tongue_closed_eyes": [ 3475 | 23, 3476 | 13 3477 | ], 3478 | "disappointed": [ 3479 | 23, 3480 | 14 3481 | ], 3482 | "worried": [ 3483 | 23, 3484 | 15 3485 | ], 3486 | "angry": [ 3487 | 23, 3488 | 16 3489 | ], 3490 | "rage": [ 3491 | 23, 3492 | 17 3493 | ], 3494 | "cry": [ 3495 | 23, 3496 | 18 3497 | ], 3498 | "persevere": [ 3499 | 23, 3500 | 19 3501 | ], 3502 | "triumph": [ 3503 | 23, 3504 | 20 3505 | ], 3506 | "disappointed_relieved": [ 3507 | 23, 3508 | 21 3509 | ], 3510 | "frowning": [ 3511 | 23, 3512 | 22 3513 | ], 3514 | "anguished": [ 3515 | 23, 3516 | 23 3517 | ], 3518 | "fearful": [ 3519 | 23, 3520 | 24 3521 | ], 3522 | "weary": [ 3523 | 23, 3524 | 25 3525 | ], 3526 | "sleepy": [ 3527 | 23, 3528 | 26 3529 | ], 3530 | "tired_face": [ 3531 | 23, 3532 | 27 3533 | ], 3534 | "grimacing": [ 3535 | 23, 3536 | 28 3537 | ], 3538 | "sob": [ 3539 | 23, 3540 | 29 3541 | ], 3542 | "open_mouth": [ 3543 | 23, 3544 | 30 3545 | ], 3546 | "hushed": [ 3547 | 23, 3548 | 31 3549 | ], 3550 | "cold_sweat": [ 3551 | 23, 3552 | 32 3553 | ], 3554 | "scream": [ 3555 | 23, 3556 | 33 3557 | ], 3558 | "astonished": [ 3559 | 23, 3560 | 34 3561 | ], 3562 | "flushed": [ 3563 | 23, 3564 | 35 3565 | ], 3566 | "sleeping": [ 3567 | 23, 3568 | 36 3569 | ], 3570 | "dizzy_face": [ 3571 | 23, 3572 | 37 3573 | ], 3574 | "no_mouth": [ 3575 | 23, 3576 | 38 3577 | ], 3578 | "mask": [ 3579 | 23, 3580 | 39 3581 | ], 3582 | "smile_cat": [ 3583 | 23, 3584 | 40 3585 | ], 3586 | "joy_cat": [ 3587 | 23, 3588 | 41 3589 | ], 3590 | "smiley_cat": [ 3591 | 23, 3592 | 42 3593 | ], 3594 | "heart_eyes_cat": [ 3595 | 23, 3596 | 43 3597 | ], 3598 | "smirk_cat": [ 3599 | 23, 3600 | 44 3601 | ], 3602 | "kissing_cat": [ 3603 | 23, 3604 | 45 3605 | ], 3606 | "pouting_cat": [ 3607 | 23, 3608 | 46 3609 | ], 3610 | "crying_cat_face": [ 3611 | 23, 3612 | 47 3613 | ], 3614 | "scream_cat": [ 3615 | 23, 3616 | 48 3617 | ], 3618 | "slightly_frowning_face": [ 3619 | 24, 3620 | 0 3621 | ], 3622 | "slightly_smiling_face": [ 3623 | 24, 3624 | 1 3625 | ], 3626 | "upside_down_face": [ 3627 | 24, 3628 | 2 3629 | ], 3630 | "face_with_rolling_eyes": [ 3631 | 24, 3632 | 3 3633 | ], 3634 | "no_good": [ 3635 | 24, 3636 | 4 3637 | ], 3638 | "ok_woman": [ 3639 | 24, 3640 | 10 3641 | ], 3642 | "bow": [ 3643 | 24, 3644 | 16 3645 | ], 3646 | "see_no_evil": [ 3647 | 24, 3648 | 22 3649 | ], 3650 | "hear_no_evil": [ 3651 | 24, 3652 | 23 3653 | ], 3654 | "speak_no_evil": [ 3655 | 24, 3656 | 24 3657 | ], 3658 | "raising_hand": [ 3659 | 24, 3660 | 25 3661 | ], 3662 | "raised_hands": [ 3663 | 24, 3664 | 31 3665 | ], 3666 | "person_frowning": [ 3667 | 24, 3668 | 37 3669 | ], 3670 | "person_with_pouting_face": [ 3671 | 24, 3672 | 43 3673 | ], 3674 | "pray": [ 3675 | 25, 3676 | 0 3677 | ], 3678 | "rocket": [ 3679 | 25, 3680 | 6 3681 | ], 3682 | "helicopter": [ 3683 | 25, 3684 | 7 3685 | ], 3686 | "steam_locomotive": [ 3687 | 25, 3688 | 8 3689 | ], 3690 | "railway_car": [ 3691 | 25, 3692 | 9 3693 | ], 3694 | "bullettrain_side": [ 3695 | 25, 3696 | 10 3697 | ], 3698 | "bullettrain_front": [ 3699 | 25, 3700 | 11 3701 | ], 3702 | "train2": [ 3703 | 25, 3704 | 12 3705 | ], 3706 | "metro": [ 3707 | 25, 3708 | 13 3709 | ], 3710 | "light_rail": [ 3711 | 25, 3712 | 14 3713 | ], 3714 | "station": [ 3715 | 25, 3716 | 15 3717 | ], 3718 | "tram": [ 3719 | 25, 3720 | 16 3721 | ], 3722 | "train": [ 3723 | 25, 3724 | 17 3725 | ], 3726 | "bus": [ 3727 | 25, 3728 | 18 3729 | ], 3730 | "oncoming_bus": [ 3731 | 25, 3732 | 19 3733 | ], 3734 | "trolleybus": [ 3735 | 25, 3736 | 20 3737 | ], 3738 | "busstop": [ 3739 | 25, 3740 | 21 3741 | ], 3742 | "minibus": [ 3743 | 25, 3744 | 22 3745 | ], 3746 | "ambulance": [ 3747 | 25, 3748 | 23 3749 | ], 3750 | "fire_engine": [ 3751 | 25, 3752 | 24 3753 | ], 3754 | "police_car": [ 3755 | 25, 3756 | 25 3757 | ], 3758 | "oncoming_police_car": [ 3759 | 25, 3760 | 26 3761 | ], 3762 | "taxi": [ 3763 | 25, 3764 | 27 3765 | ], 3766 | "oncoming_taxi": [ 3767 | 25, 3768 | 28 3769 | ], 3770 | "car": [ 3771 | 25, 3772 | 29 3773 | ], 3774 | "oncoming_automobile": [ 3775 | 25, 3776 | 30 3777 | ], 3778 | "blue_car": [ 3779 | 25, 3780 | 31 3781 | ], 3782 | "truck": [ 3783 | 25, 3784 | 32 3785 | ], 3786 | "articulated_lorry": [ 3787 | 25, 3788 | 33 3789 | ], 3790 | "tractor": [ 3791 | 25, 3792 | 34 3793 | ], 3794 | "monorail": [ 3795 | 25, 3796 | 35 3797 | ], 3798 | "mountain_railway": [ 3799 | 25, 3800 | 36 3801 | ], 3802 | "suspension_railway": [ 3803 | 25, 3804 | 37 3805 | ], 3806 | "mountain_cableway": [ 3807 | 25, 3808 | 38 3809 | ], 3810 | "aerial_tramway": [ 3811 | 25, 3812 | 39 3813 | ], 3814 | "ship": [ 3815 | 25, 3816 | 40 3817 | ], 3818 | "rowboat": [ 3819 | 25, 3820 | 41 3821 | ], 3822 | "speedboat": [ 3823 | 25, 3824 | 47 3825 | ], 3826 | "traffic_light": [ 3827 | 25, 3828 | 48 3829 | ], 3830 | "vertical_traffic_light": [ 3831 | 26, 3832 | 0 3833 | ], 3834 | "construction": [ 3835 | 26, 3836 | 1 3837 | ], 3838 | "rotating_light": [ 3839 | 26, 3840 | 2 3841 | ], 3842 | "triangular_flag_on_post": [ 3843 | 26, 3844 | 3 3845 | ], 3846 | "door": [ 3847 | 26, 3848 | 4 3849 | ], 3850 | "no_entry_sign": [ 3851 | 26, 3852 | 5 3853 | ], 3854 | "smoking": [ 3855 | 26, 3856 | 6 3857 | ], 3858 | "no_smoking": [ 3859 | 26, 3860 | 7 3861 | ], 3862 | "put_litter_in_its_place": [ 3863 | 26, 3864 | 8 3865 | ], 3866 | "do_not_litter": [ 3867 | 26, 3868 | 9 3869 | ], 3870 | "potable_water": [ 3871 | 26, 3872 | 10 3873 | ], 3874 | "non-potable_water": [ 3875 | 26, 3876 | 11 3877 | ], 3878 | "bike": [ 3879 | 26, 3880 | 12 3881 | ], 3882 | "no_bicycles": [ 3883 | 26, 3884 | 13 3885 | ], 3886 | "bicyclist": [ 3887 | 26, 3888 | 14 3889 | ], 3890 | "mountain_bicyclist": [ 3891 | 26, 3892 | 20 3893 | ], 3894 | "walking": [ 3895 | 26, 3896 | 26 3897 | ], 3898 | "no_pedestrians": [ 3899 | 26, 3900 | 32 3901 | ], 3902 | "children_crossing": [ 3903 | 26, 3904 | 33 3905 | ], 3906 | "mens": [ 3907 | 26, 3908 | 34 3909 | ], 3910 | "womens": [ 3911 | 26, 3912 | 35 3913 | ], 3914 | "restroom": [ 3915 | 26, 3916 | 36 3917 | ], 3918 | "baby_symbol": [ 3919 | 26, 3920 | 37 3921 | ], 3922 | "toilet": [ 3923 | 26, 3924 | 38 3925 | ], 3926 | "wc": [ 3927 | 26, 3928 | 39 3929 | ], 3930 | "shower": [ 3931 | 26, 3932 | 40 3933 | ], 3934 | "bath": [ 3935 | 26, 3936 | 41 3937 | ], 3938 | "bathtub": [ 3939 | 26, 3940 | 47 3941 | ], 3942 | "passport_control": [ 3943 | 26, 3944 | 48 3945 | ], 3946 | "customs": [ 3947 | 27, 3948 | 0 3949 | ], 3950 | "baggage_claim": [ 3951 | 27, 3952 | 1 3953 | ], 3954 | "left_luggage": [ 3955 | 27, 3956 | 2 3957 | ], 3958 | "couch_and_lamp": [ 3959 | 27, 3960 | 3 3961 | ], 3962 | "sleeping_accommodation": [ 3963 | 27, 3964 | 4 3965 | ], 3966 | "shopping_bags": [ 3967 | 27, 3968 | 10 3969 | ], 3970 | "bellhop_bell": [ 3971 | 27, 3972 | 11 3973 | ], 3974 | "bed": [ 3975 | 27, 3976 | 12 3977 | ], 3978 | "place_of_worship": [ 3979 | 27, 3980 | 13 3981 | ], 3982 | "octagonal_sign": [ 3983 | 27, 3984 | 14 3985 | ], 3986 | "shopping_trolley": [ 3987 | 27, 3988 | 15 3989 | ], 3990 | "hammer_and_wrench": [ 3991 | 27, 3992 | 16 3993 | ], 3994 | "shield": [ 3995 | 27, 3996 | 17 3997 | ], 3998 | "oil_drum": [ 3999 | 27, 4000 | 18 4001 | ], 4002 | "motorway": [ 4003 | 27, 4004 | 19 4005 | ], 4006 | "railway_track": [ 4007 | 27, 4008 | 20 4009 | ], 4010 | "motor_boat": [ 4011 | 27, 4012 | 21 4013 | ], 4014 | "small_airplane": [ 4015 | 27, 4016 | 22 4017 | ], 4018 | "airplane_departure": [ 4019 | 27, 4020 | 23 4021 | ], 4022 | "airplane_arriving": [ 4023 | 27, 4024 | 24 4025 | ], 4026 | "satellite": [ 4027 | 27, 4028 | 25 4029 | ], 4030 | "passenger_ship": [ 4031 | 27, 4032 | 26 4033 | ], 4034 | "scooter": [ 4035 | 27, 4036 | 27 4037 | ], 4038 | "motor_scooter": [ 4039 | 27, 4040 | 28 4041 | ], 4042 | "canoe": [ 4043 | 27, 4044 | 29 4045 | ], 4046 | "zipper_mouth_face": [ 4047 | 27, 4048 | 30 4049 | ], 4050 | "money_mouth_face": [ 4051 | 27, 4052 | 31 4053 | ], 4054 | "face_with_thermometer": [ 4055 | 27, 4056 | 32 4057 | ], 4058 | "nerd_face": [ 4059 | 27, 4060 | 33 4061 | ], 4062 | "thinking_face": [ 4063 | 27, 4064 | 34 4065 | ], 4066 | "face_with_head_bandage": [ 4067 | 27, 4068 | 35 4069 | ], 4070 | "robot_face": [ 4071 | 27, 4072 | 36 4073 | ], 4074 | "hugging_face": [ 4075 | 27, 4076 | 37 4077 | ], 4078 | "the_horns": [ 4079 | 27, 4080 | 38 4081 | ], 4082 | "call_me_hand": [ 4083 | 27, 4084 | 44 4085 | ], 4086 | "raised_back_of_hand": [ 4087 | 28, 4088 | 1 4089 | ], 4090 | "left-facing_fist": [ 4091 | 28, 4092 | 7 4093 | ], 4094 | "right-facing_fist": [ 4095 | 28, 4096 | 13 4097 | ], 4098 | "handshake": [ 4099 | 28, 4100 | 19 4101 | ], 4102 | "hand_with_index_and_middle_fingers_crossed": [ 4103 | 28, 4104 | 20 4105 | ], 4106 | "face_with_cowboy_hat": [ 4107 | 28, 4108 | 26 4109 | ], 4110 | "clown_face": [ 4111 | 28, 4112 | 27 4113 | ], 4114 | "nauseated_face": [ 4115 | 28, 4116 | 28 4117 | ], 4118 | "rolling_on_the_floor_laughing": [ 4119 | 28, 4120 | 29 4121 | ], 4122 | "drooling_face": [ 4123 | 28, 4124 | 30 4125 | ], 4126 | "lying_face": [ 4127 | 28, 4128 | 31 4129 | ], 4130 | "face_palm": [ 4131 | 28, 4132 | 32 4133 | ], 4134 | "sneezing_face": [ 4135 | 28, 4136 | 38 4137 | ], 4138 | "pregnant_woman": [ 4139 | 28, 4140 | 39 4141 | ], 4142 | "selfie": [ 4143 | 28, 4144 | 45 4145 | ], 4146 | "prince": [ 4147 | 29, 4148 | 2 4149 | ], 4150 | "man_in_tuxedo": [ 4151 | 29, 4152 | 8 4153 | ], 4154 | "mother_christmas": [ 4155 | 29, 4156 | 14 4157 | ], 4158 | "shrug": [ 4159 | 29, 4160 | 20 4161 | ], 4162 | "person_doing_cartwheel": [ 4163 | 29, 4164 | 26 4165 | ], 4166 | "juggling": [ 4167 | 29, 4168 | 32 4169 | ], 4170 | "fencer": [ 4171 | 29, 4172 | 38 4173 | ], 4174 | "wrestlers": [ 4175 | 29, 4176 | 39 4177 | ], 4178 | "water_polo": [ 4179 | 29, 4180 | 40 4181 | ], 4182 | "handball": [ 4183 | 29, 4184 | 46 4185 | ], 4186 | "wilted_flower": [ 4187 | 30, 4188 | 3 4189 | ], 4190 | "drum_with_drumsticks": [ 4191 | 30, 4192 | 4 4193 | ], 4194 | "clinking_glasses": [ 4195 | 30, 4196 | 5 4197 | ], 4198 | "tumbler_glass": [ 4199 | 30, 4200 | 6 4201 | ], 4202 | "spoon": [ 4203 | 30, 4204 | 7 4205 | ], 4206 | "goal_net": [ 4207 | 30, 4208 | 8 4209 | ], 4210 | "first_place_medal": [ 4211 | 30, 4212 | 9 4213 | ], 4214 | "second_place_medal": [ 4215 | 30, 4216 | 10 4217 | ], 4218 | "third_place_medal": [ 4219 | 30, 4220 | 11 4221 | ], 4222 | "boxing_glove": [ 4223 | 30, 4224 | 12 4225 | ], 4226 | "martial_arts_uniform": [ 4227 | 30, 4228 | 13 4229 | ], 4230 | "croissant": [ 4231 | 30, 4232 | 14 4233 | ], 4234 | "avocado": [ 4235 | 30, 4236 | 15 4237 | ], 4238 | "cucumber": [ 4239 | 30, 4240 | 16 4241 | ], 4242 | "bacon": [ 4243 | 30, 4244 | 17 4245 | ], 4246 | "potato": [ 4247 | 30, 4248 | 18 4249 | ], 4250 | "carrot": [ 4251 | 30, 4252 | 19 4253 | ], 4254 | "baguette_bread": [ 4255 | 30, 4256 | 20 4257 | ], 4258 | "green_salad": [ 4259 | 30, 4260 | 21 4261 | ], 4262 | "shallow_pan_of_food": [ 4263 | 30, 4264 | 22 4265 | ], 4266 | "stuffed_flatbread": [ 4267 | 30, 4268 | 23 4269 | ], 4270 | "egg": [ 4271 | 30, 4272 | 24 4273 | ], 4274 | "glass_of_milk": [ 4275 | 30, 4276 | 25 4277 | ], 4278 | "peanuts": [ 4279 | 30, 4280 | 26 4281 | ], 4282 | "kiwifruit": [ 4283 | 30, 4284 | 27 4285 | ], 4286 | "pancakes": [ 4287 | 30, 4288 | 28 4289 | ], 4290 | "crab": [ 4291 | 30, 4292 | 29 4293 | ], 4294 | "lion_face": [ 4295 | 30, 4296 | 30 4297 | ], 4298 | "scorpion": [ 4299 | 30, 4300 | 31 4301 | ], 4302 | "turkey": [ 4303 | 30, 4304 | 32 4305 | ], 4306 | "unicorn_face": [ 4307 | 30, 4308 | 33 4309 | ], 4310 | "eagle": [ 4311 | 30, 4312 | 34 4313 | ], 4314 | "duck": [ 4315 | 30, 4316 | 35 4317 | ], 4318 | "bat": [ 4319 | 30, 4320 | 36 4321 | ], 4322 | "shark": [ 4323 | 30, 4324 | 37 4325 | ], 4326 | "owl": [ 4327 | 30, 4328 | 38 4329 | ], 4330 | "fox_face": [ 4331 | 30, 4332 | 39 4333 | ], 4334 | "butterfly": [ 4335 | 30, 4336 | 40 4337 | ], 4338 | "deer": [ 4339 | 30, 4340 | 41 4341 | ], 4342 | "gorilla": [ 4343 | 30, 4344 | 42 4345 | ], 4346 | "lizard": [ 4347 | 30, 4348 | 43 4349 | ], 4350 | "rhinoceros": [ 4351 | 30, 4352 | 44 4353 | ], 4354 | "shrimp": [ 4355 | 30, 4356 | 45 4357 | ], 4358 | "squid": [ 4359 | 30, 4360 | 46 4361 | ], 4362 | "cheese_wedge": [ 4363 | 30, 4364 | 47 4365 | ], 4366 | "hash": [ 4367 | 30, 4368 | 48 4369 | ], 4370 | "keycap_star": [ 4371 | 31, 4372 | 0 4373 | ], 4374 | "zero": [ 4375 | 31, 4376 | 1 4377 | ], 4378 | "one": [ 4379 | 31, 4380 | 2 4381 | ], 4382 | "two": [ 4383 | 31, 4384 | 3 4385 | ], 4386 | "three": [ 4387 | 31, 4388 | 4 4389 | ], 4390 | "four": [ 4391 | 31, 4392 | 5 4393 | ], 4394 | "five": [ 4395 | 31, 4396 | 6 4397 | ], 4398 | "six": [ 4399 | 31, 4400 | 7 4401 | ], 4402 | "seven": [ 4403 | 31, 4404 | 8 4405 | ], 4406 | "eight": [ 4407 | 31, 4408 | 9 4409 | ], 4410 | "nine": [ 4411 | 31, 4412 | 10 4413 | ], 4414 | "flag-ac": [ 4415 | 31, 4416 | 11 4417 | ], 4418 | "flag-ad": [ 4419 | 31, 4420 | 12 4421 | ], 4422 | "flag-ae": [ 4423 | 31, 4424 | 13 4425 | ], 4426 | "flag-af": [ 4427 | 31, 4428 | 14 4429 | ], 4430 | "flag-ag": [ 4431 | 31, 4432 | 15 4433 | ], 4434 | "flag-ai": [ 4435 | 31, 4436 | 16 4437 | ], 4438 | "flag-al": [ 4439 | 31, 4440 | 17 4441 | ], 4442 | "flag-am": [ 4443 | 31, 4444 | 18 4445 | ], 4446 | "flag-ao": [ 4447 | 31, 4448 | 19 4449 | ], 4450 | "flag-aq": [ 4451 | 31, 4452 | 20 4453 | ], 4454 | "flag-ar": [ 4455 | 31, 4456 | 21 4457 | ], 4458 | "flag-as": [ 4459 | 31, 4460 | 22 4461 | ], 4462 | "flag-at": [ 4463 | 31, 4464 | 23 4465 | ], 4466 | "flag-au": [ 4467 | 31, 4468 | 24 4469 | ], 4470 | "flag-aw": [ 4471 | 31, 4472 | 25 4473 | ], 4474 | "flag-ax": [ 4475 | 31, 4476 | 26 4477 | ], 4478 | "flag-az": [ 4479 | 31, 4480 | 27 4481 | ], 4482 | "flag-ba": [ 4483 | 31, 4484 | 28 4485 | ], 4486 | "flag-bb": [ 4487 | 31, 4488 | 29 4489 | ], 4490 | "flag-bd": [ 4491 | 31, 4492 | 30 4493 | ], 4494 | "flag-be": [ 4495 | 31, 4496 | 31 4497 | ], 4498 | "flag-bf": [ 4499 | 31, 4500 | 32 4501 | ], 4502 | "flag-bg": [ 4503 | 31, 4504 | 33 4505 | ], 4506 | "flag-bh": [ 4507 | 31, 4508 | 34 4509 | ], 4510 | "flag-bi": [ 4511 | 31, 4512 | 35 4513 | ], 4514 | "flag-bj": [ 4515 | 31, 4516 | 36 4517 | ], 4518 | "flag-bl": [ 4519 | 31, 4520 | 37 4521 | ], 4522 | "flag-bm": [ 4523 | 31, 4524 | 38 4525 | ], 4526 | "flag-bn": [ 4527 | 31, 4528 | 39 4529 | ], 4530 | "flag-bo": [ 4531 | 31, 4532 | 40 4533 | ], 4534 | "flag-bq": [ 4535 | 31, 4536 | 41 4537 | ], 4538 | "flag-br": [ 4539 | 31, 4540 | 42 4541 | ], 4542 | "flag-bs": [ 4543 | 31, 4544 | 43 4545 | ], 4546 | "flag-bt": [ 4547 | 31, 4548 | 44 4549 | ], 4550 | "flag-bv": [ 4551 | 31, 4552 | 45 4553 | ], 4554 | "flag-bw": [ 4555 | 31, 4556 | 46 4557 | ], 4558 | "flag-by": [ 4559 | 31, 4560 | 47 4561 | ], 4562 | "flag-bz": [ 4563 | 31, 4564 | 48 4565 | ], 4566 | "flag-ca": [ 4567 | 32, 4568 | 0 4569 | ], 4570 | "flag-cc": [ 4571 | 32, 4572 | 1 4573 | ], 4574 | "flag-cd": [ 4575 | 32, 4576 | 2 4577 | ], 4578 | "flag-cf": [ 4579 | 32, 4580 | 3 4581 | ], 4582 | "flag-cg": [ 4583 | 32, 4584 | 4 4585 | ], 4586 | "flag-ch": [ 4587 | 32, 4588 | 5 4589 | ], 4590 | "flag-ci": [ 4591 | 32, 4592 | 6 4593 | ], 4594 | "flag-ck": [ 4595 | 32, 4596 | 7 4597 | ], 4598 | "flag-cl": [ 4599 | 32, 4600 | 8 4601 | ], 4602 | "flag-cm": [ 4603 | 32, 4604 | 9 4605 | ], 4606 | "flag-cn": [ 4607 | 32, 4608 | 10 4609 | ], 4610 | "flag-co": [ 4611 | 32, 4612 | 11 4613 | ], 4614 | "flag-cp": [ 4615 | 32, 4616 | 12 4617 | ], 4618 | "flag-cr": [ 4619 | 32, 4620 | 13 4621 | ], 4622 | "flag-cu": [ 4623 | 32, 4624 | 14 4625 | ], 4626 | "flag-cv": [ 4627 | 32, 4628 | 15 4629 | ], 4630 | "flag-cw": [ 4631 | 32, 4632 | 16 4633 | ], 4634 | "flag-cx": [ 4635 | 32, 4636 | 17 4637 | ], 4638 | "flag-cy": [ 4639 | 32, 4640 | 18 4641 | ], 4642 | "flag-cz": [ 4643 | 32, 4644 | 19 4645 | ], 4646 | "flag-de": [ 4647 | 32, 4648 | 20 4649 | ], 4650 | "flag-dg": [ 4651 | 32, 4652 | 21 4653 | ], 4654 | "flag-dj": [ 4655 | 32, 4656 | 22 4657 | ], 4658 | "flag-dk": [ 4659 | 32, 4660 | 23 4661 | ], 4662 | "flag-dm": [ 4663 | 32, 4664 | 24 4665 | ], 4666 | "flag-do": [ 4667 | 32, 4668 | 25 4669 | ], 4670 | "flag-dz": [ 4671 | 32, 4672 | 26 4673 | ], 4674 | "flag-ea": [ 4675 | 32, 4676 | 27 4677 | ], 4678 | "flag-ec": [ 4679 | 32, 4680 | 28 4681 | ], 4682 | "flag-ee": [ 4683 | 32, 4684 | 29 4685 | ], 4686 | "flag-eg": [ 4687 | 32, 4688 | 30 4689 | ], 4690 | "flag-eh": [ 4691 | 32, 4692 | 31 4693 | ], 4694 | "flag-er": [ 4695 | 32, 4696 | 32 4697 | ], 4698 | "flag-es": [ 4699 | 32, 4700 | 33 4701 | ], 4702 | "flag-et": [ 4703 | 32, 4704 | 34 4705 | ], 4706 | "flag-eu": [ 4707 | 32, 4708 | 35 4709 | ], 4710 | "flag-fi": [ 4711 | 32, 4712 | 36 4713 | ], 4714 | "flag-fj": [ 4715 | 32, 4716 | 37 4717 | ], 4718 | "flag-fk": [ 4719 | 32, 4720 | 38 4721 | ], 4722 | "flag-fm": [ 4723 | 32, 4724 | 39 4725 | ], 4726 | "flag-fo": [ 4727 | 32, 4728 | 40 4729 | ], 4730 | "flag-fr": [ 4731 | 32, 4732 | 41 4733 | ], 4734 | "flag-ga": [ 4735 | 32, 4736 | 42 4737 | ], 4738 | "flag-gb": [ 4739 | 32, 4740 | 43 4741 | ], 4742 | "flag-gd": [ 4743 | 32, 4744 | 44 4745 | ], 4746 | "flag-ge": [ 4747 | 32, 4748 | 45 4749 | ], 4750 | "flag-gf": [ 4751 | 32, 4752 | 46 4753 | ], 4754 | "flag-gg": [ 4755 | 32, 4756 | 47 4757 | ], 4758 | "flag-gh": [ 4759 | 32, 4760 | 48 4761 | ], 4762 | "flag-gi": [ 4763 | 33, 4764 | 0 4765 | ], 4766 | "flag-gl": [ 4767 | 33, 4768 | 1 4769 | ], 4770 | "flag-gm": [ 4771 | 33, 4772 | 2 4773 | ], 4774 | "flag-gn": [ 4775 | 33, 4776 | 3 4777 | ], 4778 | "flag-gp": [ 4779 | 33, 4780 | 4 4781 | ], 4782 | "flag-gq": [ 4783 | 33, 4784 | 5 4785 | ], 4786 | "flag-gr": [ 4787 | 33, 4788 | 6 4789 | ], 4790 | "flag-gs": [ 4791 | 33, 4792 | 7 4793 | ], 4794 | "flag-gt": [ 4795 | 33, 4796 | 8 4797 | ], 4798 | "flag-gu": [ 4799 | 33, 4800 | 9 4801 | ], 4802 | "flag-gw": [ 4803 | 33, 4804 | 10 4805 | ], 4806 | "flag-gy": [ 4807 | 33, 4808 | 11 4809 | ], 4810 | "flag-hk": [ 4811 | 33, 4812 | 12 4813 | ], 4814 | "flag-hm": [ 4815 | 33, 4816 | 13 4817 | ], 4818 | "flag-hn": [ 4819 | 33, 4820 | 14 4821 | ], 4822 | "flag-hr": [ 4823 | 33, 4824 | 15 4825 | ], 4826 | "flag-ht": [ 4827 | 33, 4828 | 16 4829 | ], 4830 | "flag-hu": [ 4831 | 33, 4832 | 17 4833 | ], 4834 | "flag-ic": [ 4835 | 33, 4836 | 18 4837 | ], 4838 | "flag-id": [ 4839 | 33, 4840 | 19 4841 | ], 4842 | "flag-ie": [ 4843 | 33, 4844 | 20 4845 | ], 4846 | "flag-il": [ 4847 | 33, 4848 | 21 4849 | ], 4850 | "flag-im": [ 4851 | 33, 4852 | 22 4853 | ], 4854 | "flag-in": [ 4855 | 33, 4856 | 23 4857 | ], 4858 | "flag-io": [ 4859 | 33, 4860 | 24 4861 | ], 4862 | "flag-iq": [ 4863 | 33, 4864 | 25 4865 | ], 4866 | "flag-ir": [ 4867 | 33, 4868 | 26 4869 | ], 4870 | "flag-is": [ 4871 | 33, 4872 | 27 4873 | ], 4874 | "flag-it": [ 4875 | 33, 4876 | 28 4877 | ], 4878 | "flag-je": [ 4879 | 33, 4880 | 29 4881 | ], 4882 | "flag-jm": [ 4883 | 33, 4884 | 30 4885 | ], 4886 | "flag-jo": [ 4887 | 33, 4888 | 31 4889 | ], 4890 | "flag-jp": [ 4891 | 33, 4892 | 32 4893 | ], 4894 | "flag-ke": [ 4895 | 33, 4896 | 33 4897 | ], 4898 | "flag-kg": [ 4899 | 33, 4900 | 34 4901 | ], 4902 | "flag-kh": [ 4903 | 33, 4904 | 35 4905 | ], 4906 | "flag-ki": [ 4907 | 33, 4908 | 36 4909 | ], 4910 | "flag-km": [ 4911 | 33, 4912 | 37 4913 | ], 4914 | "flag-kn": [ 4915 | 33, 4916 | 38 4917 | ], 4918 | "flag-kp": [ 4919 | 33, 4920 | 39 4921 | ], 4922 | "flag-kr": [ 4923 | 33, 4924 | 40 4925 | ], 4926 | "flag-kw": [ 4927 | 33, 4928 | 41 4929 | ], 4930 | "flag-ky": [ 4931 | 33, 4932 | 42 4933 | ], 4934 | "flag-kz": [ 4935 | 33, 4936 | 43 4937 | ], 4938 | "flag-la": [ 4939 | 33, 4940 | 44 4941 | ], 4942 | "flag-lb": [ 4943 | 33, 4944 | 45 4945 | ], 4946 | "flag-lc": [ 4947 | 33, 4948 | 46 4949 | ], 4950 | "flag-li": [ 4951 | 33, 4952 | 47 4953 | ], 4954 | "flag-lk": [ 4955 | 33, 4956 | 48 4957 | ], 4958 | "flag-lr": [ 4959 | 34, 4960 | 0 4961 | ], 4962 | "flag-ls": [ 4963 | 34, 4964 | 1 4965 | ], 4966 | "flag-lt": [ 4967 | 34, 4968 | 2 4969 | ], 4970 | "flag-lu": [ 4971 | 34, 4972 | 3 4973 | ], 4974 | "flag-lv": [ 4975 | 34, 4976 | 4 4977 | ], 4978 | "flag-ly": [ 4979 | 34, 4980 | 5 4981 | ], 4982 | "flag-ma": [ 4983 | 34, 4984 | 6 4985 | ], 4986 | "flag-mc": [ 4987 | 34, 4988 | 7 4989 | ], 4990 | "flag-md": [ 4991 | 34, 4992 | 8 4993 | ], 4994 | "flag-me": [ 4995 | 34, 4996 | 9 4997 | ], 4998 | "flag-mf": [ 4999 | 34, 5000 | 10 5001 | ], 5002 | "flag-mg": [ 5003 | 34, 5004 | 11 5005 | ], 5006 | "flag-mh": [ 5007 | 34, 5008 | 12 5009 | ], 5010 | "flag-mk": [ 5011 | 34, 5012 | 13 5013 | ], 5014 | "flag-ml": [ 5015 | 34, 5016 | 14 5017 | ], 5018 | "flag-mm": [ 5019 | 34, 5020 | 15 5021 | ], 5022 | "flag-mn": [ 5023 | 34, 5024 | 16 5025 | ], 5026 | "flag-mo": [ 5027 | 34, 5028 | 17 5029 | ], 5030 | "flag-mp": [ 5031 | 34, 5032 | 18 5033 | ], 5034 | "flag-mq": [ 5035 | 34, 5036 | 19 5037 | ], 5038 | "flag-mr": [ 5039 | 34, 5040 | 20 5041 | ], 5042 | "flag-ms": [ 5043 | 34, 5044 | 21 5045 | ], 5046 | "flag-mt": [ 5047 | 34, 5048 | 22 5049 | ], 5050 | "flag-mu": [ 5051 | 34, 5052 | 23 5053 | ], 5054 | "flag-mv": [ 5055 | 34, 5056 | 24 5057 | ], 5058 | "flag-mw": [ 5059 | 34, 5060 | 25 5061 | ], 5062 | "flag-mx": [ 5063 | 34, 5064 | 26 5065 | ], 5066 | "flag-my": [ 5067 | 34, 5068 | 27 5069 | ], 5070 | "flag-mz": [ 5071 | 34, 5072 | 28 5073 | ], 5074 | "flag-na": [ 5075 | 34, 5076 | 29 5077 | ], 5078 | "flag-nc": [ 5079 | 34, 5080 | 30 5081 | ], 5082 | "flag-ne": [ 5083 | 34, 5084 | 31 5085 | ], 5086 | "flag-nf": [ 5087 | 34, 5088 | 32 5089 | ], 5090 | "flag-ng": [ 5091 | 34, 5092 | 33 5093 | ], 5094 | "flag-ni": [ 5095 | 34, 5096 | 34 5097 | ], 5098 | "flag-nl": [ 5099 | 34, 5100 | 35 5101 | ], 5102 | "flag-no": [ 5103 | 34, 5104 | 36 5105 | ], 5106 | "flag-np": [ 5107 | 34, 5108 | 37 5109 | ], 5110 | "flag-nr": [ 5111 | 34, 5112 | 38 5113 | ], 5114 | "flag-nu": [ 5115 | 34, 5116 | 39 5117 | ], 5118 | "flag-nz": [ 5119 | 34, 5120 | 40 5121 | ], 5122 | "flag-om": [ 5123 | 34, 5124 | 41 5125 | ], 5126 | "flag-pa": [ 5127 | 34, 5128 | 42 5129 | ], 5130 | "flag-pe": [ 5131 | 34, 5132 | 43 5133 | ], 5134 | "flag-pf": [ 5135 | 34, 5136 | 44 5137 | ], 5138 | "flag-pg": [ 5139 | 34, 5140 | 45 5141 | ], 5142 | "flag-ph": [ 5143 | 34, 5144 | 46 5145 | ], 5146 | "flag-pk": [ 5147 | 34, 5148 | 47 5149 | ], 5150 | "flag-pl": [ 5151 | 34, 5152 | 48 5153 | ], 5154 | "flag-pm": [ 5155 | 35, 5156 | 0 5157 | ], 5158 | "flag-pn": [ 5159 | 35, 5160 | 1 5161 | ], 5162 | "flag-pr": [ 5163 | 35, 5164 | 2 5165 | ], 5166 | "flag-ps": [ 5167 | 35, 5168 | 3 5169 | ], 5170 | "flag-pt": [ 5171 | 35, 5172 | 4 5173 | ], 5174 | "flag-pw": [ 5175 | 35, 5176 | 5 5177 | ], 5178 | "flag-py": [ 5179 | 35, 5180 | 6 5181 | ], 5182 | "flag-qa": [ 5183 | 35, 5184 | 7 5185 | ], 5186 | "flag-re": [ 5187 | 35, 5188 | 8 5189 | ], 5190 | "flag-ro": [ 5191 | 35, 5192 | 9 5193 | ], 5194 | "flag-rs": [ 5195 | 35, 5196 | 10 5197 | ], 5198 | "flag-ru": [ 5199 | 35, 5200 | 11 5201 | ], 5202 | "flag-rw": [ 5203 | 35, 5204 | 12 5205 | ], 5206 | "flag-sa": [ 5207 | 35, 5208 | 13 5209 | ], 5210 | "flag-sb": [ 5211 | 35, 5212 | 14 5213 | ], 5214 | "flag-sc": [ 5215 | 35, 5216 | 15 5217 | ], 5218 | "flag-sd": [ 5219 | 35, 5220 | 16 5221 | ], 5222 | "flag-se": [ 5223 | 35, 5224 | 17 5225 | ], 5226 | "flag-sg": [ 5227 | 35, 5228 | 18 5229 | ], 5230 | "flag-sh": [ 5231 | 35, 5232 | 19 5233 | ], 5234 | "flag-si": [ 5235 | 35, 5236 | 20 5237 | ], 5238 | "flag-sj": [ 5239 | 35, 5240 | 21 5241 | ], 5242 | "flag-sk": [ 5243 | 35, 5244 | 22 5245 | ], 5246 | "flag-sl": [ 5247 | 35, 5248 | 23 5249 | ], 5250 | "flag-sm": [ 5251 | 35, 5252 | 24 5253 | ], 5254 | "flag-sn": [ 5255 | 35, 5256 | 25 5257 | ], 5258 | "flag-so": [ 5259 | 35, 5260 | 26 5261 | ], 5262 | "flag-sr": [ 5263 | 35, 5264 | 27 5265 | ], 5266 | "flag-ss": [ 5267 | 35, 5268 | 28 5269 | ], 5270 | "flag-st": [ 5271 | 35, 5272 | 29 5273 | ], 5274 | "flag-sv": [ 5275 | 35, 5276 | 30 5277 | ], 5278 | "flag-sx": [ 5279 | 35, 5280 | 31 5281 | ], 5282 | "flag-sy": [ 5283 | 35, 5284 | 32 5285 | ], 5286 | "flag-sz": [ 5287 | 35, 5288 | 33 5289 | ], 5290 | "flag-ta": [ 5291 | 35, 5292 | 34 5293 | ], 5294 | "flag-tc": [ 5295 | 35, 5296 | 35 5297 | ], 5298 | "flag-td": [ 5299 | 35, 5300 | 36 5301 | ], 5302 | "flag-tf": [ 5303 | 35, 5304 | 37 5305 | ], 5306 | "flag-tg": [ 5307 | 35, 5308 | 38 5309 | ], 5310 | "flag-th": [ 5311 | 35, 5312 | 39 5313 | ], 5314 | "flag-tj": [ 5315 | 35, 5316 | 40 5317 | ], 5318 | "flag-tk": [ 5319 | 35, 5320 | 41 5321 | ], 5322 | "flag-tl": [ 5323 | 35, 5324 | 42 5325 | ], 5326 | "flag-tm": [ 5327 | 35, 5328 | 43 5329 | ], 5330 | "flag-tn": [ 5331 | 35, 5332 | 44 5333 | ], 5334 | "flag-to": [ 5335 | 35, 5336 | 45 5337 | ], 5338 | "flag-tr": [ 5339 | 35, 5340 | 46 5341 | ], 5342 | "flag-tt": [ 5343 | 35, 5344 | 47 5345 | ], 5346 | "flag-tv": [ 5347 | 35, 5348 | 48 5349 | ], 5350 | "flag-tw": [ 5351 | 36, 5352 | 0 5353 | ], 5354 | "flag-tz": [ 5355 | 36, 5356 | 1 5357 | ], 5358 | "flag-ua": [ 5359 | 36, 5360 | 2 5361 | ], 5362 | "flag-ug": [ 5363 | 36, 5364 | 3 5365 | ], 5366 | "flag-um": [ 5367 | 36, 5368 | 4 5369 | ], 5370 | "flag-un": [ 5371 | 36, 5372 | 5 5373 | ], 5374 | "flag-us": [ 5375 | 36, 5376 | 6 5377 | ], 5378 | "flag-uy": [ 5379 | 36, 5380 | 7 5381 | ], 5382 | "flag-uz": [ 5383 | 36, 5384 | 8 5385 | ], 5386 | "flag-va": [ 5387 | 36, 5388 | 9 5389 | ], 5390 | "flag-vc": [ 5391 | 36, 5392 | 10 5393 | ], 5394 | "flag-ve": [ 5395 | 36, 5396 | 11 5397 | ], 5398 | "flag-vg": [ 5399 | 36, 5400 | 12 5401 | ], 5402 | "flag-vi": [ 5403 | 36, 5404 | 13 5405 | ], 5406 | "flag-vn": [ 5407 | 36, 5408 | 14 5409 | ], 5410 | "flag-vu": [ 5411 | 36, 5412 | 15 5413 | ], 5414 | "flag-wf": [ 5415 | 36, 5416 | 16 5417 | ], 5418 | "flag-ws": [ 5419 | 36, 5420 | 17 5421 | ], 5422 | "flag-xk": [ 5423 | 36, 5424 | 18 5425 | ], 5426 | "flag-ye": [ 5427 | 36, 5428 | 19 5429 | ], 5430 | "flag-yt": [ 5431 | 36, 5432 | 20 5433 | ], 5434 | "flag-za": [ 5435 | 36, 5436 | 21 5437 | ], 5438 | "flag-zm": [ 5439 | 36, 5440 | 22 5441 | ], 5442 | "flag-zw": [ 5443 | 36, 5444 | 23 5445 | ], 5446 | "male-farmer": [ 5447 | 36, 5448 | 24 5449 | ], 5450 | "male-cook": [ 5451 | 36, 5452 | 30 5453 | ], 5454 | "male-student": [ 5455 | 36, 5456 | 36 5457 | ], 5458 | "male-singer": [ 5459 | 36, 5460 | 42 5461 | ], 5462 | "male-artist": [ 5463 | 36, 5464 | 48 5465 | ], 5466 | "male-teacher": [ 5467 | 37, 5468 | 5 5469 | ], 5470 | "male-factory-worker": [ 5471 | 37, 5472 | 11 5473 | ], 5474 | "man-boy": [ 5475 | 37, 5476 | 17 5477 | ], 5478 | "man-girl": [ 5479 | 37, 5480 | 18 5481 | ], 5482 | "male-technologist": [ 5483 | 37, 5484 | 19 5485 | ], 5486 | "male-office-worker": [ 5487 | 37, 5488 | 25 5489 | ], 5490 | "male-mechanic": [ 5491 | 37, 5492 | 31 5493 | ], 5494 | "male-scientist": [ 5495 | 37, 5496 | 37 5497 | ], 5498 | "male-astronaut": [ 5499 | 37, 5500 | 43 5501 | ], 5502 | "male-firefighter": [ 5503 | 38, 5504 | 0 5505 | ], 5506 | "female-farmer": [ 5507 | 38, 5508 | 6 5509 | ], 5510 | "female-cook": [ 5511 | 38, 5512 | 12 5513 | ], 5514 | "female-student": [ 5515 | 38, 5516 | 18 5517 | ], 5518 | "female-singer": [ 5519 | 38, 5520 | 24 5521 | ], 5522 | "female-artist": [ 5523 | 38, 5524 | 30 5525 | ], 5526 | "female-teacher": [ 5527 | 38, 5528 | 36 5529 | ], 5530 | "female-factory-worker": [ 5531 | 38, 5532 | 42 5533 | ], 5534 | "woman-boy": [ 5535 | 38, 5536 | 48 5537 | ], 5538 | "woman-girl": [ 5539 | 39, 5540 | 0 5541 | ], 5542 | "female-technologist": [ 5543 | 39, 5544 | 1 5545 | ], 5546 | "female-office-worker": [ 5547 | 39, 5548 | 7 5549 | ], 5550 | "female-mechanic": [ 5551 | 39, 5552 | 13 5553 | ], 5554 | "female-scientist": [ 5555 | 39, 5556 | 19 5557 | ], 5558 | "female-astronaut": [ 5559 | 39, 5560 | 25 5561 | ], 5562 | "female-firefighter": [ 5563 | 39, 5564 | 31 5565 | ], 5566 | "woman-running": [ 5567 | 39, 5568 | 37 5569 | ], 5570 | "man-running": [ 5571 | 39, 5572 | 43 5573 | ], 5574 | "woman-surfing": [ 5575 | 40, 5576 | 0 5577 | ], 5578 | "man-surfing": [ 5579 | 40, 5580 | 6 5581 | ], 5582 | "woman-swimming": [ 5583 | 40, 5584 | 12 5585 | ], 5586 | "man-swimming": [ 5587 | 40, 5588 | 18 5589 | ], 5590 | "woman-lifting-weights": [ 5591 | 40, 5592 | 24 5593 | ], 5594 | "man-lifting-weights": [ 5595 | 40, 5596 | 30 5597 | ], 5598 | "woman-golfing": [ 5599 | 40, 5600 | 36 5601 | ], 5602 | "man-golfing": [ 5603 | 40, 5604 | 42 5605 | ], 5606 | "rainbow-flag": [ 5607 | 40, 5608 | 48 5609 | ], 5610 | "eye-in-speech-bubble": [ 5611 | 41, 5612 | 0 5613 | ], 5614 | "man-boy-boy": [ 5615 | 41, 5616 | 1 5617 | ], 5618 | "man-girl-boy": [ 5619 | 41, 5620 | 2 5621 | ], 5622 | "man-girl-girl": [ 5623 | 41, 5624 | 3 5625 | ], 5626 | "man-man-boy": [ 5627 | 41, 5628 | 4 5629 | ], 5630 | "man-man-boy-boy": [ 5631 | 41, 5632 | 5 5633 | ], 5634 | "man-man-girl": [ 5635 | 41, 5636 | 6 5637 | ], 5638 | "man-man-girl-boy": [ 5639 | 41, 5640 | 7 5641 | ], 5642 | "man-man-girl-girl": [ 5643 | 41, 5644 | 8 5645 | ], 5646 | "man-woman-boy": [ 5647 | 41, 5648 | 9 5649 | ], 5650 | "man-woman-boy-boy": [ 5651 | 41, 5652 | 10 5653 | ], 5654 | "man-woman-girl": [ 5655 | 41, 5656 | 11 5657 | ], 5658 | "man-woman-girl-boy": [ 5659 | 41, 5660 | 12 5661 | ], 5662 | "man-woman-girl-girl": [ 5663 | 41, 5664 | 13 5665 | ], 5666 | "male-doctor": [ 5667 | 41, 5668 | 14 5669 | ], 5670 | "male-judge": [ 5671 | 41, 5672 | 20 5673 | ], 5674 | "male-pilot": [ 5675 | 41, 5676 | 26 5677 | ], 5678 | "man-heart-man": [ 5679 | 41, 5680 | 32 5681 | ], 5682 | "man-kiss-man": [ 5683 | 41, 5684 | 33 5685 | ], 5686 | "woman-boy-boy": [ 5687 | 41, 5688 | 34 5689 | ], 5690 | "woman-girl-boy": [ 5691 | 41, 5692 | 35 5693 | ], 5694 | "woman-girl-girl": [ 5695 | 41, 5696 | 36 5697 | ], 5698 | "woman-woman-boy": [ 5699 | 41, 5700 | 37 5701 | ], 5702 | "woman-woman-boy-boy": [ 5703 | 41, 5704 | 38 5705 | ], 5706 | "woman-woman-girl": [ 5707 | 41, 5708 | 39 5709 | ], 5710 | "woman-woman-girl-boy": [ 5711 | 41, 5712 | 40 5713 | ], 5714 | "woman-woman-girl-girl": [ 5715 | 41, 5716 | 41 5717 | ], 5718 | "female-doctor": [ 5719 | 41, 5720 | 42 5721 | ], 5722 | "female-judge": [ 5723 | 41, 5724 | 48 5725 | ], 5726 | "female-pilot": [ 5727 | 42, 5728 | 5 5729 | ], 5730 | "woman-heart-man": [ 5731 | 42, 5732 | 11 5733 | ], 5734 | "woman-heart-woman": [ 5735 | 42, 5736 | 12 5737 | ], 5738 | "woman-kiss-man": [ 5739 | 42, 5740 | 13 5741 | ], 5742 | "woman-kiss-woman": [ 5743 | 42, 5744 | 14 5745 | ], 5746 | "female-police-officer": [ 5747 | 42, 5748 | 15 5749 | ], 5750 | "male-police-officer": [ 5751 | 42, 5752 | 21 5753 | ], 5754 | "woman-with-bunny-ears-partying": [ 5755 | 42, 5756 | 27 5757 | ], 5758 | "man-with-bunny-ears-partying": [ 5759 | 42, 5760 | 28 5761 | ], 5762 | "blond-haired-woman": [ 5763 | 42, 5764 | 29 5765 | ], 5766 | "blond-haired-man": [ 5767 | 42, 5768 | 35 5769 | ], 5770 | "woman-wearing-turban": [ 5771 | 42, 5772 | 41 5773 | ], 5774 | "man-wearing-turban": [ 5775 | 42, 5776 | 47 5777 | ], 5778 | "female-construction-worker": [ 5779 | 43, 5780 | 4 5781 | ], 5782 | "male-construction-worker": [ 5783 | 43, 5784 | 10 5785 | ], 5786 | "woman-tipping-hand": [ 5787 | 43, 5788 | 16 5789 | ], 5790 | "man-tipping-hand": [ 5791 | 43, 5792 | 22 5793 | ], 5794 | "female-guard": [ 5795 | 43, 5796 | 28 5797 | ], 5798 | "male-guard": [ 5799 | 43, 5800 | 34 5801 | ], 5802 | "woman-getting-massage": [ 5803 | 43, 5804 | 40 5805 | ], 5806 | "man-getting-massage": [ 5807 | 43, 5808 | 46 5809 | ], 5810 | "woman-getting-haircut": [ 5811 | 44, 5812 | 3 5813 | ], 5814 | "man-getting-haircut": [ 5815 | 44, 5816 | 9 5817 | ], 5818 | "female-detective": [ 5819 | 44, 5820 | 15 5821 | ], 5822 | "male-detective": [ 5823 | 44, 5824 | 21 5825 | ], 5826 | "woman-gesturing-no": [ 5827 | 44, 5828 | 27 5829 | ], 5830 | "man-gesturing-no": [ 5831 | 44, 5832 | 33 5833 | ], 5834 | "woman-gesturing-ok": [ 5835 | 44, 5836 | 39 5837 | ], 5838 | "man-gesturing-ok": [ 5839 | 44, 5840 | 45 5841 | ], 5842 | "woman-bowing": [ 5843 | 45, 5844 | 2 5845 | ], 5846 | "man-bowing": [ 5847 | 45, 5848 | 8 5849 | ], 5850 | "woman-raising-hand": [ 5851 | 45, 5852 | 14 5853 | ], 5854 | "man-raising-hand": [ 5855 | 45, 5856 | 20 5857 | ], 5858 | "woman-frowning": [ 5859 | 45, 5860 | 26 5861 | ], 5862 | "man-frowning": [ 5863 | 45, 5864 | 32 5865 | ], 5866 | "woman-pouting": [ 5867 | 45, 5868 | 38 5869 | ], 5870 | "man-pouting": [ 5871 | 45, 5872 | 44 5873 | ], 5874 | "woman-rowing-boat": [ 5875 | 46, 5876 | 1 5877 | ], 5878 | "man-rowing-boat": [ 5879 | 46, 5880 | 7 5881 | ], 5882 | "woman-biking": [ 5883 | 46, 5884 | 13 5885 | ], 5886 | "man-biking": [ 5887 | 46, 5888 | 19 5889 | ], 5890 | "woman-mountain-biking": [ 5891 | 46, 5892 | 25 5893 | ], 5894 | "man-mountain-biking": [ 5895 | 46, 5896 | 31 5897 | ], 5898 | "woman-walking": [ 5899 | 46, 5900 | 37 5901 | ], 5902 | "man-walking": [ 5903 | 46, 5904 | 43 5905 | ], 5906 | "woman-facepalming": [ 5907 | 47, 5908 | 0 5909 | ], 5910 | "man-facepalming": [ 5911 | 47, 5912 | 6 5913 | ], 5914 | "woman-shrugging": [ 5915 | 47, 5916 | 12 5917 | ], 5918 | "man-shrugging": [ 5919 | 47, 5920 | 18 5921 | ], 5922 | "woman-cartwheeling": [ 5923 | 47, 5924 | 24 5925 | ], 5926 | "man-cartwheeling": [ 5927 | 47, 5928 | 30 5929 | ], 5930 | "woman-juggling": [ 5931 | 47, 5932 | 36 5933 | ], 5934 | "man-juggling": [ 5935 | 47, 5936 | 42 5937 | ], 5938 | "woman-wrestling": [ 5939 | 47, 5940 | 48 5941 | ], 5942 | "man-wrestling": [ 5943 | 48, 5944 | 0 5945 | ], 5946 | "woman-playing-water-polo": [ 5947 | 48, 5948 | 1 5949 | ], 5950 | "man-playing-water-polo": [ 5951 | 48, 5952 | 7 5953 | ], 5954 | "woman-playing-handball": [ 5955 | 48, 5956 | 13 5957 | ], 5958 | "man-playing-handball": [ 5959 | 48, 5960 | 19 5961 | ], 5962 | "woman-bouncing-ball": [ 5963 | 48, 5964 | 25 5965 | ], 5966 | "man-bouncing-ball": [ 5967 | 48, 5968 | 31 5969 | ] 5970 | }; 5971 | --------------------------------------------------------------------------------