gitlab-dangerfiles 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +14 -0
  3. data/.gitlab-ci.yml +43 -0
  4. data/.gitlab/merge_request_templates/Release.md +35 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Guardfile +70 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +43 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/fixtures/emojis/aliases.json +542 -0
  14. data/fixtures/emojis/digests.json +12553 -0
  15. data/gitlab-dangerfiles.gemspec +38 -0
  16. data/lib/danger/changelog.rb +39 -0
  17. data/lib/danger/helper.rb +260 -0
  18. data/lib/danger/roulette.rb +135 -0
  19. data/lib/danger/sidekiq_queues.rb +37 -0
  20. data/lib/gitlab-dangerfiles.rb +1 -0
  21. data/lib/gitlab/Dangerfile +1 -0
  22. data/lib/gitlab/dangerfiles.rb +40 -0
  23. data/lib/gitlab/dangerfiles/bundle_size/Dangerfile +38 -0
  24. data/lib/gitlab/dangerfiles/ce_ee_vue_templates/Dangerfile +56 -0
  25. data/lib/gitlab/dangerfiles/changelog/Dangerfile +90 -0
  26. data/lib/gitlab/dangerfiles/changes_size/Dangerfile +17 -0
  27. data/lib/gitlab/dangerfiles/commit_linter.rb +226 -0
  28. data/lib/gitlab/dangerfiles/commit_messages/Dangerfile +135 -0
  29. data/lib/gitlab/dangerfiles/database/Dangerfile +67 -0
  30. data/lib/gitlab/dangerfiles/documentation/Dangerfile +29 -0
  31. data/lib/gitlab/dangerfiles/duplicate_yarn_dependencies/Dangerfile +29 -0
  32. data/lib/gitlab/dangerfiles/emoji_checker.rb +45 -0
  33. data/lib/gitlab/dangerfiles/eslint/Dangerfile +31 -0
  34. data/lib/gitlab/dangerfiles/frozen_string/Dangerfile +28 -0
  35. data/lib/gitlab/dangerfiles/karma/Dangerfile +51 -0
  36. data/lib/gitlab/dangerfiles/metadata/Dangerfile +50 -0
  37. data/lib/gitlab/dangerfiles/popen.rb +55 -0
  38. data/lib/gitlab/dangerfiles/prettier/Dangerfile +41 -0
  39. data/lib/gitlab/dangerfiles/roulette/Dangerfile +97 -0
  40. data/lib/gitlab/dangerfiles/sidekiq_queues/Dangerfile +27 -0
  41. data/lib/gitlab/dangerfiles/specs/Dangerfile +42 -0
  42. data/lib/gitlab/dangerfiles/tasks.rb +19 -0
  43. data/lib/gitlab/dangerfiles/teammate.rb +106 -0
  44. data/lib/gitlab/dangerfiles/telemetry/Dangerfile +32 -0
  45. data/lib/gitlab/dangerfiles/utility_css/Dangerfile +51 -0
  46. data/lib/gitlab/dangerfiles/version.rb +5 -0
  47. metadata +191 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6298bb4b8fed9c66cd1bc9b811e9ddb93d6e8474dd8797da837780ec5bcbe1a8
4
+ data.tar.gz: 2be36370906090104ebba958d4910d5f105cf3b8d0619849c78dbb5b625dcd9a
5
+ SHA512:
6
+ metadata.gz: 9c09bdec93ab9d0b1a73565e62a46e400204907f758cb924c0d27d27eda7aae0871e45a02d7ac1f6846d2aa0f6a8c41d341f57147d5e04d94ac4351a2b6b64d1
7
+ data.tar.gz: 67710acb881d9f5229944ccb3dc40bb7d9c4ae0d66743190cfb3fac7e560f22f3ca8a7ca7b7b60119e6f595b4a4e00d3235df0728a79370d60723985cb4d0b93
@@ -0,0 +1,14 @@
1
+ /.DS_Store
2
+ /vendor/
3
+ /.rspec
4
+ /.bundle/
5
+ /.yardoc
6
+ /Gemfile.lock
7
+ /_yardoc/
8
+ /coverage/
9
+ /pkg/
10
+ /spec/reports/
11
+ /tmp/
12
+
13
+ # rspec failure tracking
14
+ .rspec_status
@@ -0,0 +1,43 @@
1
+ stages:
2
+ - test
3
+ - deploy
4
+
5
+ workflow:
6
+ rules:
7
+ # For merge requests, create a pipeline.
8
+ - if: '$CI_MERGE_REQUEST_IID'
9
+ # For `master` branch, create a pipeline (this includes on schedules, pushes, merges, etc.).
10
+ - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
11
+ # For tags, create a pipeline.
12
+ - if: '$CI_COMMIT_TAG'
13
+
14
+ default:
15
+ image: ruby:2.7
16
+ tags:
17
+ - gitlab-org
18
+ before_script:
19
+ - gem install bundler
20
+ - bundle install -j $(nproc) --path vendor
21
+ cache:
22
+ key:
23
+ files:
24
+ - Gemfile
25
+ - gitlab-dangerfiles.gemspec
26
+ paths:
27
+ - vendor/ruby
28
+ - Gemfile.lock
29
+ policy: pull
30
+
31
+ test:rspec:
32
+ stage: test
33
+ script:
34
+ - bundle exec rspec
35
+
36
+ test:rufo:
37
+ stage: test
38
+ script:
39
+ - bundle exec rufo --check .
40
+
41
+ include:
42
+ - project: 'gitlab-org/quality/pipeline-common'
43
+ file: '/ci/gem-release.yml'
@@ -0,0 +1,35 @@
1
+ <!-- Replace `v4.5.0` with the previous release here, and `e18d76b309e42888759c1effe96767f13e34ae55`
2
+ with the latest commit from https://gitlab.com/gitlab-org/gitlab-dangerfiles/commits/master that will be included in the release. -->
3
+ - Diff: https://gitlab.com/gitlab-org/gitlab-dangerfiles/compare/v4.5.0...e18d76b309e42888759c1effe96767f13e34ae55
4
+
5
+ - Release notes:
6
+
7
+ <!-- Keep the sections order but remove the empty sections -->
8
+
9
+ ```markdown
10
+ ### New features and features updates
11
+
12
+ - !aaa <Title of the aaa MR>.
13
+
14
+ ### Fixes
15
+
16
+ - !bbb <Title of the bbb MR>.
17
+
18
+ ### Doc changes
19
+
20
+ - !ccc <Title of the ccc MR>.
21
+
22
+ ### Other changes (tooling, technical debt)
23
+
24
+ - !ddd <Title of the ddd MR>.
25
+ ```
26
+
27
+ - Checklist before merging:
28
+ - [ ] Diff link is up-to-date.
29
+ - [ ] Based on the diff, `lib/gitlab/dangerfiles/version.rb` is updated, according to [SemVer](https://semver.org).
30
+ - [ ] Release notes are accurate.
31
+
32
+ - Checklist after merging:
33
+ - [ ] [Update the release notes for the newly created tag](docs/release_process.md#how-to).
34
+
35
+ /label ~"Engineering Productivity" ~"ep::workflow" ~"tooling::workflow" ~tooling ~"Danger bot"
@@ -0,0 +1,74 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at remy@rymai.me. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [https://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: https://contributor-covenant.org
74
+ [version]: https://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in gitlab-dangerfiles.gemspec
4
+ gemspec
5
+
6
+ gem "rake", "~> 12.0"
7
+ gem "guard-rspec"
@@ -0,0 +1,70 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: "bundle exec rspec" do
28
+ require "guard/rspec/dsl"
29
+ dsl = Guard::RSpec::Dsl.new(self)
30
+
31
+ # Feel free to open issues for suggestions and improvements
32
+
33
+ # RSpec files
34
+ rspec = dsl.rspec
35
+ watch(rspec.spec_helper) { rspec.spec_dir }
36
+ watch(rspec.spec_support) { rspec.spec_dir }
37
+ watch(rspec.spec_files)
38
+
39
+ # Ruby files
40
+ ruby = dsl.ruby
41
+ dsl.watch_spec_files_for(ruby.lib_files)
42
+
43
+ # Rails files
44
+ rails = dsl.rails(view_extensions: %w(erb haml slim))
45
+ dsl.watch_spec_files_for(rails.app_files)
46
+ dsl.watch_spec_files_for(rails.views)
47
+
48
+ watch(rails.controllers) do |m|
49
+ [
50
+ rspec.spec.call("routing/#{m[1]}_routing"),
51
+ rspec.spec.call("controllers/#{m[1]}_controller"),
52
+ rspec.spec.call("acceptance/#{m[1]}")
53
+ ]
54
+ end
55
+
56
+ # Rails config changes
57
+ watch(rails.spec_helper) { rspec.spec_dir }
58
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
59
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
60
+
61
+ # Capybara features specs
62
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
63
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
64
+
65
+ # Turnip features and steps
66
+ watch(%r{^spec/acceptance/(.+)\.feature$})
67
+ watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
68
+ Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
69
+ end
70
+ end
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Rémy Coutable
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
13
+ all 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
21
+ THE SOFTWARE.
@@ -0,0 +1,43 @@
1
+ # Gitlab::Dangerfiles
2
+
3
+ Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/gitlab/dangerfiles`. To experiment with that code, run `bin/console` for an interactive prompt.
4
+
5
+ TODO: Delete this and the text above, and describe your gem
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem 'gitlab-dangerfiles'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle install
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install gitlab-dangerfiles
22
+
23
+ ## Usage
24
+
25
+ TODO: Write usage instructions here
26
+
27
+ ## Development
28
+
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
+
33
+ ## Contributing
34
+
35
+ Bug reports and merge requests are welcome at https://gitlab.com/gitlab-org/gitlab-dangerfiles. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://gitlab.com/gitlab-org/gitlab-dangerfiles/blob/master/CODE_OF_CONDUCT.md).
36
+
37
+ ## License
38
+
39
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
40
+
41
+ ## Code of Conduct
42
+
43
+ Everyone interacting in the Gitlab::Danger project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://gitlab.com/gitlab-org/gitlab-dangerfiles/blob/master/CODE_OF_CONDUCT.md).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "gitlab/dangerfiles"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,542 @@
1
+ {
2
+ "small_airplane":"airplane_small",
3
+ "right_anger_bubble":"anger_right",
4
+ "keycap_asterisk":"asterisk",
5
+ "atom_symbol":"atom",
6
+ "ballot_box_with_ballot":"ballot_box",
7
+ "person_with_ball":"basketball_player",
8
+ "person_with_ball_tone1":"basketball_player_tone1",
9
+ "person_with_ball_tone2":"basketball_player_tone2",
10
+ "person_with_ball_tone3":"basketball_player_tone3",
11
+ "person_with_ball_tone4":"basketball_player_tone4",
12
+ "person_with_ball_tone5":"basketball_player_tone5",
13
+ "beach_with_umbrella":"beach",
14
+ "umbrella_on_ground":"beach_umbrella",
15
+ "bellhop_bell":"bellhop",
16
+ "biohazard_sign":"biohazard",
17
+ "archery":"bow_and_arrow",
18
+ "boxing_gloves":"boxing_glove",
19
+ "spiral_calendar_pad":"calendar_spiral",
20
+ "call_me_hand":"call_me",
21
+ "call_me_hand_tone1":"call_me_tone1",
22
+ "call_me_hand_tone2":"call_me_tone2",
23
+ "call_me_hand_tone3":"call_me_tone3",
24
+ "call_me_hand_tone4":"call_me_tone4",
25
+ "call_me_hand_tone5":"call_me_tone5",
26
+ "kayak":"canoe",
27
+ "card_file_box":"card_box",
28
+ "person_doing_cartwheel":"cartwheel",
29
+ "person_doing_cartwheel_tone1":"cartwheel_tone1",
30
+ "person_doing_cartwheel_tone2":"cartwheel_tone2",
31
+ "person_doing_cartwheel_tone3":"cartwheel_tone3",
32
+ "person_doing_cartwheel_tone4":"cartwheel_tone4",
33
+ "person_doing_cartwheel_tone5":"cartwheel_tone5",
34
+ "bottle_with_popping_cork":"champagne",
35
+ "clinking_glass":"champagne_glass",
36
+ "cheese_wedge":"cheese",
37
+ "city_sunrise":"city_sunset",
38
+ "mantlepiece_clock":"clock",
39
+ "cloud_with_lightning":"cloud_lightning",
40
+ "cloud_with_rain":"cloud_rain",
41
+ "cloud_with_snow":"cloud_snow",
42
+ "cloud_with_tornado":"cloud_tornado",
43
+ "clown_face":"clown",
44
+ "building_construction":"construction_site",
45
+ "couch_and_lamp":"couch",
46
+ "couple_with_heart_mm":"couple_mm",
47
+ "couple_with_heart_ww":"couple_ww",
48
+ "face_with_cowboy_hat":"cowboy",
49
+ "lower_left_crayon":"crayon",
50
+ "cricket_bat_ball":"cricket",
51
+ "latin_cross":"cross",
52
+ "passenger_ship":"cruise_ship",
53
+ "dagger_knife":"dagger",
54
+ "desktop_computer":"desktop",
55
+ "card_index_dividers":"dividers",
56
+ "dove_of_peace":"dove",
57
+ "drool":"drooling_face",
58
+ "drum_with_drumsticks":"drum",
59
+ "email":"e-mail",
60
+ "eject_symbol":"eject",
61
+ "facepalm":"face_palm",
62
+ "facepalm_tone1":"face_palm_tone1",
63
+ "facepalm_tone2":"face_palm_tone2",
64
+ "facepalm_tone3":"face_palm_tone3",
65
+ "facepalm_tone4":"face_palm_tone4",
66
+ "facepalm_tone5":"face_palm_tone5",
67
+ "fencing":"fencer",
68
+ "hand_with_index_and_middle_finger_crossed":"fingers_crossed",
69
+ "hand_with_index_and_middle_fingers_crossed_tone1":"fingers_crossed_tone1",
70
+ "hand_with_index_and_middle_fingers_crossed_tone2":"fingers_crossed_tone2",
71
+ "hand_with_index_and_middle_fingers_crossed_tone3":"fingers_crossed_tone3",
72
+ "hand_with_index_and_middle_fingers_crossed_tone4":"fingers_crossed_tone4",
73
+ "hand_with_index_and_middle_fingers_crossed_tone5":"fingers_crossed_tone5",
74
+ "flame":"fire",
75
+ "first_place_medal":"first_place",
76
+ "ac":"flag_ac",
77
+ "ad":"flag_ad",
78
+ "ae":"flag_ae",
79
+ "af":"flag_af",
80
+ "ag":"flag_ag",
81
+ "ai":"flag_ai",
82
+ "al":"flag_al",
83
+ "am":"flag_am",
84
+ "ao":"flag_ao",
85
+ "aq":"flag_aq",
86
+ "ar":"flag_ar",
87
+ "as":"flag_as",
88
+ "at":"flag_at",
89
+ "au":"flag_au",
90
+ "aw":"flag_aw",
91
+ "ax":"flag_ax",
92
+ "az":"flag_az",
93
+ "ba":"flag_ba",
94
+ "bb":"flag_bb",
95
+ "bd":"flag_bd",
96
+ "be":"flag_be",
97
+ "bf":"flag_bf",
98
+ "bg":"flag_bg",
99
+ "bh":"flag_bh",
100
+ "bi":"flag_bi",
101
+ "bj":"flag_bj",
102
+ "bl":"flag_bl",
103
+ "waving_black_flag":"flag_black",
104
+ "bm":"flag_bm",
105
+ "bn":"flag_bn",
106
+ "bo":"flag_bo",
107
+ "bq":"flag_bq",
108
+ "br":"flag_br",
109
+ "bs":"flag_bs",
110
+ "bt":"flag_bt",
111
+ "bv":"flag_bv",
112
+ "bw":"flag_bw",
113
+ "by":"flag_by",
114
+ "bz":"flag_bz",
115
+ "ca":"flag_ca",
116
+ "cc":"flag_cc",
117
+ "congo":"flag_cd",
118
+ "cf":"flag_cf",
119
+ "cg":"flag_cg",
120
+ "ch":"flag_ch",
121
+ "ci":"flag_ci",
122
+ "ck":"flag_ck",
123
+ "chile":"flag_cl",
124
+ "cm":"flag_cm",
125
+ "cn":"flag_cn",
126
+ "co":"flag_co",
127
+ "cp":"flag_cp",
128
+ "cr":"flag_cr",
129
+ "cu":"flag_cu",
130
+ "cv":"flag_cv",
131
+ "cw":"flag_cw",
132
+ "cx":"flag_cx",
133
+ "cy":"flag_cy",
134
+ "cz":"flag_cz",
135
+ "de":"flag_de",
136
+ "dg":"flag_dg",
137
+ "dj":"flag_dj",
138
+ "dk":"flag_dk",
139
+ "dm":"flag_dm",
140
+ "do":"flag_do",
141
+ "dz":"flag_dz",
142
+ "ea":"flag_ea",
143
+ "ec":"flag_ec",
144
+ "ee":"flag_ee",
145
+ "eg":"flag_eg",
146
+ "eh":"flag_eh",
147
+ "er":"flag_er",
148
+ "es":"flag_es",
149
+ "et":"flag_et",
150
+ "eu":"flag_eu",
151
+ "fi":"flag_fi",
152
+ "fj":"flag_fj",
153
+ "fk":"flag_fk",
154
+ "fm":"flag_fm",
155
+ "fo":"flag_fo",
156
+ "fr":"flag_fr",
157
+ "ga":"flag_ga",
158
+ "gb":"flag_gb",
159
+ "gd":"flag_gd",
160
+ "ge":"flag_ge",
161
+ "gf":"flag_gf",
162
+ "gg":"flag_gg",
163
+ "gh":"flag_gh",
164
+ "gi":"flag_gi",
165
+ "gl":"flag_gl",
166
+ "gm":"flag_gm",
167
+ "gn":"flag_gn",
168
+ "gp":"flag_gp",
169
+ "gq":"flag_gq",
170
+ "gr":"flag_gr",
171
+ "gs":"flag_gs",
172
+ "gt":"flag_gt",
173
+ "gu":"flag_gu",
174
+ "gw":"flag_gw",
175
+ "gy":"flag_gy",
176
+ "hk":"flag_hk",
177
+ "hm":"flag_hm",
178
+ "hn":"flag_hn",
179
+ "hr":"flag_hr",
180
+ "ht":"flag_ht",
181
+ "hu":"flag_hu",
182
+ "ic":"flag_ic",
183
+ "indonesia":"flag_id",
184
+ "ie":"flag_ie",
185
+ "il":"flag_il",
186
+ "im":"flag_im",
187
+ "in":"flag_in",
188
+ "io":"flag_io",
189
+ "iq":"flag_iq",
190
+ "ir":"flag_ir",
191
+ "is":"flag_is",
192
+ "it":"flag_it",
193
+ "je":"flag_je",
194
+ "jm":"flag_jm",
195
+ "jo":"flag_jo",
196
+ "jp":"flag_jp",
197
+ "ke":"flag_ke",
198
+ "kg":"flag_kg",
199
+ "kh":"flag_kh",
200
+ "ki":"flag_ki",
201
+ "km":"flag_km",
202
+ "kn":"flag_kn",
203
+ "kp":"flag_kp",
204
+ "kr":"flag_kr",
205
+ "kw":"flag_kw",
206
+ "ky":"flag_ky",
207
+ "kz":"flag_kz",
208
+ "la":"flag_la",
209
+ "lb":"flag_lb",
210
+ "lc":"flag_lc",
211
+ "li":"flag_li",
212
+ "lk":"flag_lk",
213
+ "lr":"flag_lr",
214
+ "ls":"flag_ls",
215
+ "lt":"flag_lt",
216
+ "lu":"flag_lu",
217
+ "lv":"flag_lv",
218
+ "ly":"flag_ly",
219
+ "ma":"flag_ma",
220
+ "mc":"flag_mc",
221
+ "md":"flag_md",
222
+ "me":"flag_me",
223
+ "mf":"flag_mf",
224
+ "mg":"flag_mg",
225
+ "mh":"flag_mh",
226
+ "mk":"flag_mk",
227
+ "ml":"flag_ml",
228
+ "mm":"flag_mm",
229
+ "mn":"flag_mn",
230
+ "mo":"flag_mo",
231
+ "mp":"flag_mp",
232
+ "mq":"flag_mq",
233
+ "mr":"flag_mr",
234
+ "ms":"flag_ms",
235
+ "mt":"flag_mt",
236
+ "mu":"flag_mu",
237
+ "mv":"flag_mv",
238
+ "mw":"flag_mw",
239
+ "mx":"flag_mx",
240
+ "my":"flag_my",
241
+ "mz":"flag_mz",
242
+ "na":"flag_na",
243
+ "nc":"flag_nc",
244
+ "ne":"flag_ne",
245
+ "nf":"flag_nf",
246
+ "nigeria":"flag_ng",
247
+ "ni":"flag_ni",
248
+ "nl":"flag_nl",
249
+ "no":"flag_no",
250
+ "np":"flag_np",
251
+ "nr":"flag_nr",
252
+ "nu":"flag_nu",
253
+ "nz":"flag_nz",
254
+ "om":"flag_om",
255
+ "pa":"flag_pa",
256
+ "pe":"flag_pe",
257
+ "pf":"flag_pf",
258
+ "pg":"flag_pg",
259
+ "ph":"flag_ph",
260
+ "pk":"flag_pk",
261
+ "pl":"flag_pl",
262
+ "pm":"flag_pm",
263
+ "pn":"flag_pn",
264
+ "pr":"flag_pr",
265
+ "ps":"flag_ps",
266
+ "pt":"flag_pt",
267
+ "pw":"flag_pw",
268
+ "py":"flag_py",
269
+ "qa":"flag_qa",
270
+ "re":"flag_re",
271
+ "ro":"flag_ro",
272
+ "rs":"flag_rs",
273
+ "ru":"flag_ru",
274
+ "rw":"flag_rw",
275
+ "saudiarabia":"flag_sa",
276
+ "saudi":"flag_sa",
277
+ "sb":"flag_sb",
278
+ "sc":"flag_sc",
279
+ "sd":"flag_sd",
280
+ "se":"flag_se",
281
+ "sg":"flag_sg",
282
+ "sh":"flag_sh",
283
+ "si":"flag_si",
284
+ "sj":"flag_sj",
285
+ "sk":"flag_sk",
286
+ "sl":"flag_sl",
287
+ "sm":"flag_sm",
288
+ "sn":"flag_sn",
289
+ "so":"flag_so",
290
+ "sr":"flag_sr",
291
+ "ss":"flag_ss",
292
+ "st":"flag_st",
293
+ "sv":"flag_sv",
294
+ "sx":"flag_sx",
295
+ "sy":"flag_sy",
296
+ "sz":"flag_sz",
297
+ "ta":"flag_ta",
298
+ "tc":"flag_tc",
299
+ "td":"flag_td",
300
+ "tf":"flag_tf",
301
+ "tg":"flag_tg",
302
+ "th":"flag_th",
303
+ "tj":"flag_tj",
304
+ "tk":"flag_tk",
305
+ "tl":"flag_tl",
306
+ "turkmenistan":"flag_tm",
307
+ "tn":"flag_tn",
308
+ "to":"flag_to",
309
+ "tr":"flag_tr",
310
+ "tt":"flag_tt",
311
+ "tuvalu":"flag_tv",
312
+ "tw":"flag_tw",
313
+ "tz":"flag_tz",
314
+ "ua":"flag_ua",
315
+ "ug":"flag_ug",
316
+ "um":"flag_um",
317
+ "us":"flag_us",
318
+ "uy":"flag_uy",
319
+ "uz":"flag_uz",
320
+ "va":"flag_va",
321
+ "vc":"flag_vc",
322
+ "ve":"flag_ve",
323
+ "vg":"flag_vg",
324
+ "vi":"flag_vi",
325
+ "vn":"flag_vn",
326
+ "vu":"flag_vu",
327
+ "wf":"flag_wf",
328
+ "waving_white_flag":"flag_white",
329
+ "ws":"flag_ws",
330
+ "xk":"flag_xk",
331
+ "ye":"flag_ye",
332
+ "yt":"flag_yt",
333
+ "za":"flag_za",
334
+ "zm":"flag_zm",
335
+ "zw":"flag_zw",
336
+ "fork_and_knife_with_plate":"fork_knife_plate",
337
+ "fox_face":"fox",
338
+ "frame_with_picture":"frame_photo",
339
+ "baguette_bread":"french_bread",
340
+ "anguished":"frowning",
341
+ "white_frowning_face":"frowning2",
342
+ "rainbow_flag":"gay_pride_flag",
343
+ "goal_net":"goal",
344
+ "hammer_and_pick":"hammer_pick",
345
+ "raised_hand_with_fingers_splayed":"hand_splayed",
346
+ "raised_hand_with_fingers_splayed_tone1":"hand_splayed_tone1",
347
+ "raised_hand_with_fingers_splayed_tone2":"hand_splayed_tone2",
348
+ "raised_hand_with_fingers_splayed_tone3":"hand_splayed_tone3",
349
+ "raised_hand_with_fingers_splayed_tone4":"hand_splayed_tone4",
350
+ "raised_hand_with_fingers_splayed_tone5":"hand_splayed_tone5",
351
+ "shaking_hands":"handshake",
352
+ "shaking_hands_tone1":"handshake_tone1",
353
+ "shaking_hands_tone2":"handshake_tone2",
354
+ "shaking_hands_tone3":"handshake_tone3",
355
+ "shaking_hands_tone4":"handshake_tone4",
356
+ "shaking_hands_tone5":"handshake_tone5",
357
+ "face_with_head_bandage":"head_bandage",
358
+ "heavy_heart_exclamation_mark_ornament":"heart_exclamation",
359
+ "helmet_with_white_cross":"helmet_with_cross",
360
+ "house_buildings":"homes",
361
+ "hot_dog":"hotdog",
362
+ "derelict_house_building":"house_abandoned",
363
+ "hugging_face":"hugging",
364
+ "desert_island":"island",
365
+ "juggler":"juggling",
366
+ "juggler_tone1":"juggling_tone1",
367
+ "juggler_tone2":"juggling_tone2",
368
+ "juggler_tone3":"juggling_tone3",
369
+ "juggler_tone4":"juggling_tone4",
370
+ "juggler_tone5":"juggling_tone5",
371
+ "old_key":"key2",
372
+ "couplekiss_mm":"kiss_mm",
373
+ "couplekiss_ww":"kiss_ww",
374
+ "kiwifruit":"kiwi",
375
+ "satisfied":"laughing",
376
+ "left_fist":"left_facing_fist",
377
+ "left_fist_tone1":"left_facing_fist_tone1",
378
+ "left_fist_tone2":"left_facing_fist_tone2",
379
+ "left_fist_tone3":"left_facing_fist_tone3",
380
+ "left_fist_tone4":"left_facing_fist_tone4",
381
+ "left_fist_tone5":"left_facing_fist_tone5",
382
+ "man_in_business_suit_levitating":"levitate",
383
+ "weight_lifter":"lifter",
384
+ "weight_lifter_tone1":"lifter_tone1",
385
+ "weight_lifter_tone2":"lifter_tone2",
386
+ "weight_lifter_tone3":"lifter_tone3",
387
+ "weight_lifter_tone4":"lifter_tone4",
388
+ "weight_lifter_tone5":"lifter_tone5",
389
+ "lion":"lion_face",
390
+ "liar":"lying_face",
391
+ "male_dancer":"man_dancing",
392
+ "male_dancer_tone1":"man_dancing_tone1",
393
+ "male_dancer_tone2":"man_dancing_tone2",
394
+ "male_dancer_tone3":"man_dancing_tone3",
395
+ "male_dancer_tone4":"man_dancing_tone4",
396
+ "male_dancer_tone5":"man_dancing_tone5",
397
+ "tuxedo_tone1":"man_in_tuxedo_tone1",
398
+ "tuxedo_tone2":"man_in_tuxedo_tone2",
399
+ "tuxedo_tone3":"man_in_tuxedo_tone3",
400
+ "tuxedo_tone4":"man_in_tuxedo_tone4",
401
+ "tuxedo_tone5":"man_in_tuxedo_tone5",
402
+ "world_map":"map",
403
+ "karate_uniform":"martial_arts_uniform",
404
+ "sports_medal":"medal",
405
+ "sign_of_the_horns":"metal",
406
+ "sign_of_the_horns_tone1":"metal_tone1",
407
+ "sign_of_the_horns_tone2":"metal_tone2",
408
+ "sign_of_the_horns_tone3":"metal_tone3",
409
+ "sign_of_the_horns_tone4":"metal_tone4",
410
+ "sign_of_the_horns_tone5":"metal_tone5",
411
+ "studio_microphone":"microphone2",
412
+ "reversed_hand_with_middle_finger_extended":"middle_finger",
413
+ "reversed_hand_with_middle_finger_extended_tone1":"middle_finger_tone1",
414
+ "reversed_hand_with_middle_finger_extended_tone2":"middle_finger_tone2",
415
+ "reversed_hand_with_middle_finger_extended_tone3":"middle_finger_tone3",
416
+ "reversed_hand_with_middle_finger_extended_tone4":"middle_finger_tone4",
417
+ "reversed_hand_with_middle_finger_extended_tone5":"middle_finger_tone5",
418
+ "glass_of_milk":"milk",
419
+ "money_mouth_face":"money_mouth",
420
+ "motorbike":"motor_scooter",
421
+ "racing_motorcycle":"motorcycle",
422
+ "snow_capped_mountain":"mountain_snow",
423
+ "three_button_mouse":"mouse_three_button",
424
+ "mother_christmas":"mrs_claus",
425
+ "mother_christmas_tone1":"mrs_claus_tone1",
426
+ "mother_christmas_tone2":"mrs_claus_tone2",
427
+ "mother_christmas_tone3":"mrs_claus_tone3",
428
+ "mother_christmas_tone4":"mrs_claus_tone4",
429
+ "mother_christmas_tone5":"mrs_claus_tone5",
430
+ "sick":"nauseated_face",
431
+ "nerd_face":"nerd",
432
+ "rolled_up_newspaper":"newspaper2",
433
+ "spiral_note_pad":"notepad_spiral",
434
+ "stop_sign":"octagonal_sign",
435
+ "oil_drum":"oil",
436
+ "grandma":"older_woman",
437
+ "grandma_tone1":"older_woman_tone1",
438
+ "grandma_tone2":"older_woman_tone2",
439
+ "grandma_tone3":"older_woman_tone3",
440
+ "grandma_tone4":"older_woman_tone4",
441
+ "grandma_tone5":"older_woman_tone5",
442
+ "lower_left_paintbrush":"paintbrush",
443
+ "linked_paperclips":"paperclips",
444
+ "national_park":"park",
445
+ "double_vertical_bar":"pause_button",
446
+ "peace_symbol":"peace",
447
+ "shelled_peanut":"peanuts",
448
+ "lower_left_ballpoint_pen":"pen_ballpoint",
449
+ "lower_left_fountain_pen":"pen_fountain",
450
+ "memo":"pencil",
451
+ "table_tennis":"ping_pong",
452
+ "worship_symbol":"place_of_worship",
453
+ "shit":"poop",
454
+ "hankey":"poop",
455
+ "poo":"poop",
456
+ "expecting_woman":"pregnant_woman",
457
+ "expecting_woman_tone1":"pregnant_woman_tone1",
458
+ "expecting_woman_tone2":"pregnant_woman_tone2",
459
+ "expecting_woman_tone3":"pregnant_woman_tone3",
460
+ "expecting_woman_tone4":"pregnant_woman_tone4",
461
+ "expecting_woman_tone5":"pregnant_woman_tone5",
462
+ "film_projector":"projector",
463
+ "racing_car":"race_car",
464
+ "radioactive_sign":"radioactive",
465
+ "railroad_track":"railway_track",
466
+ "back_of_hand":"raised_back_of_hand",
467
+ "back_of_hand_tone1":"raised_back_of_hand_tone1",
468
+ "back_of_hand_tone2":"raised_back_of_hand_tone2",
469
+ "back_of_hand_tone3":"raised_back_of_hand_tone3",
470
+ "back_of_hand_tone4":"raised_back_of_hand_tone4",
471
+ "back_of_hand_tone5":"raised_back_of_hand_tone5",
472
+ "rhinoceros":"rhino",
473
+ "right_fist":"right_facing_fist",
474
+ "right_fist_tone1":"right_facing_fist_tone1",
475
+ "right_fist_tone2":"right_facing_fist_tone2",
476
+ "right_fist_tone3":"right_facing_fist_tone3",
477
+ "right_fist_tone4":"right_facing_fist_tone4",
478
+ "right_fist_tone5":"right_facing_fist_tone5",
479
+ "robot_face":"robot",
480
+ "rolling_on_the_floor_laughing":"rofl",
481
+ "face_with_rolling_eyes":"rolling_eyes",
482
+ "green_salad":"salad",
483
+ "second_place_medal":"second_place",
484
+ "paella":"shallow_pan_of_food",
485
+ "shopping_trolley":"shopping_cart",
486
+ "skeleton":"skull",
487
+ "skull_and_crossbones":"skull_crossbones",
488
+ "slightly_frowning_face":"slight_frown",
489
+ "slightly_smiling_face":"slight_smile",
490
+ "sneeze":"sneezing_face",
491
+ "speaking_head_in_silhouette":"speaking_head",
492
+ "left_speech_bubble":"speech_left",
493
+ "sleuth_or_spy":"spy",
494
+ "sleuth_or_spy_tone1":"spy_tone1",
495
+ "sleuth_or_spy_tone2":"spy_tone2",
496
+ "sleuth_or_spy_tone3":"spy_tone3",
497
+ "sleuth_or_spy_tone4":"spy_tone4",
498
+ "sleuth_or_spy_tone5":"spy_tone5",
499
+ "stuffed_pita":"stuffed_flatbread",
500
+ "face_with_thermometer":"thermometer_face",
501
+ "thinking_face":"thinking",
502
+ "third_place_medal":"third_place",
503
+ "-1":"thumbsdown",
504
+ "-1_tone1":"thumbsdown_tone1",
505
+ "-1_tone2":"thumbsdown_tone2",
506
+ "-1_tone3":"thumbsdown_tone3",
507
+ "-1_tone4":"thumbsdown_tone4",
508
+ "-1_tone5":"thumbsdown_tone5",
509
+ "+1":"thumbsup",
510
+ "+1_tone1":"thumbsup_tone1",
511
+ "+1_tone2":"thumbsup_tone2",
512
+ "+1_tone3":"thumbsup_tone3",
513
+ "+1_tone4":"thumbsup_tone4",
514
+ "+1_tone5":"thumbsup_tone5",
515
+ "thunder_cloud_and_rain":"thunder_cloud_rain",
516
+ "admission_tickets":"tickets",
517
+ "timer_clock":"timer",
518
+ "hammer_and_wrench":"tools",
519
+ "next_track":"track_next",
520
+ "previous_track":"track_previous",
521
+ "whisky":"tumbler_glass",
522
+ "unicorn_face":"unicorn",
523
+ "upside_down_face":"upside_down",
524
+ "funeral_urn":"urn",
525
+ "raised_hand_with_part_between_middle_and_ring_fingers":"vulcan",
526
+ "raised_hand_with_part_between_middle_and_ring_fingers_tone1":"vulcan_tone1",
527
+ "raised_hand_with_part_between_middle_and_ring_fingers_tone2":"vulcan_tone2",
528
+ "raised_hand_with_part_between_middle_and_ring_fingers_tone3":"vulcan_tone3",
529
+ "raised_hand_with_part_between_middle_and_ring_fingers_tone4":"vulcan_tone4",
530
+ "raised_hand_with_part_between_middle_and_ring_fingers_tone5":"vulcan_tone5",
531
+ "white_sun_behind_cloud":"white_sun_cloud",
532
+ "white_sun_behind_cloud_with_rain":"white_sun_rain_cloud",
533
+ "white_sun_with_small_cloud":"white_sun_small_cloud",
534
+ "wilted_flower":"wilted_rose",
535
+ "wrestling":"wrestlers",
536
+ "wrestling_tone1":"wrestlers_tone1",
537
+ "wrestling_tone2":"wrestlers_tone2",
538
+ "wrestling_tone3":"wrestlers_tone3",
539
+ "wrestling_tone4":"wrestlers_tone4",
540
+ "wrestling_tone5":"wrestlers_tone5",
541
+ "zipper_mouth_face":"zipper_mouth"
542
+ }