From e078a173d6fad0ec79ed252f5e268f060c37508d Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Mon, 3 Sep 2012 18:00:24 +0300 Subject: Create project via API: fixes added --- doc/api/projects.md | 6 ++++++ lib/api/projects.rb | 22 +++++++++++++++----- spec/requests/api/projects_spec.rb | 41 +++++++++++++++++++++++++++++++++++--- 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/doc/api/projects.md b/doc/api/projects.md index b0c1e65709c..32775c3216a 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -102,6 +102,12 @@ Parameters: + `name` (required) - new project name + `code` (optional) - new project code, uses project name if not set + `path` (optional) - new project path, uses project name if not set ++ `description (optional) - short project description ++ `default_branch` (optional) - 'master' by default ++ `issues_enabled` (optional) - enabled by default ++ `wall_enabled` (optional) - enabled by default ++ `merge_requests_enabled` (optional) - enabled by default ++ `wiki_enabled` (optional) - enabled by default Will return created project with status `201 Created` on success, or `404 Not found` on fail. diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 3d4fde9270f..45c25127813 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -29,14 +29,26 @@ module Gitlab # name (required) - name for new project # code (optional) - code for new project, uses project name if not set # path (optional) - path for new project, uses project name if not set + # description (optional) - short project description + # default_branch (optional) - 'master' by default + # issues_enabled (optional) - enabled by default + # wall_enabled (optional) - enabled by default + # merge_requests_enabled (optional) - enabled by default + # wiki_enabled (optional) - enabled by default # Example Request # POST /projects post do - project = {} - project[:name] = params[:name] - project[:code] = params[:code] || project[:name] - project[:path] = params[:path] || project[:name] - @project = Project.create_by_user(project, current_user) + @project = Project.create_by_user({ + name: params[:name], + code: (params[:code] || params[:name]), + path: (params[:path] || params[:name]), + description: (params[:description] || Project.columns_hash["description"].default), + default_branch: (params[:default_branch] || Project.columns_hash["default_branch"].default), + issues_enabled: (params[:issues_enabled] || Project.columns_hash["issues_enabled"].default), + wall_enabled: (params[:wall_enabled] || Project.columns_hash["wall_enabled"].default), + merge_requests_enabled: (params[:merge_requests_enabled] || Project.columns_hash["merge_requests_enabled"].default), + wiki_enabled: (params[:wiki_enabled] || Project.columns_hash["wiki_enabled"].default) + }, current_user) if @project.saved? present @project, with: Entities::Project else diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cc6843ccb66..cdab2657012 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -27,7 +27,7 @@ describe Gitlab::API do describe "POST /projects" do it "should create new project without code and path" do - lambda { + expect { name = "foo" post api("/projects", user), { name: name @@ -39,7 +39,41 @@ describe Gitlab::API do }.should change{Project.count}.by(1) end it "should create new project" do - lambda { + expect { + name = "foo" + path = "bar" + code = "bazz" + description = "fuu project" + default_branch = "default_branch" + issues_enabled = false + wall_enabled = false + merge_requests_enabled = false + wiki_enabled = false + post api("/projects", user), { + code: code, + path: path, + name: name, + description: description, + default_branch: default_branch, + issues_enabled: issues_enabled, + wall_enabled: wall_enabled, + merge_requests_enabled: merge_requests_enabled, + wiki_enabled: wiki_enabled + } + response.status.should == 201 + json_response["name"].should == name + json_response["path"].should == path + json_response["code"].should == code + json_response["description"].should == description + json_response["default_branch"].should == default_branch + json_response["issues_enabled"].should == issues_enabled + json_response["wall_enabled"].should == wall_enabled + json_response["merge_requests_enabled"].should == merge_requests_enabled + json_response["wiki_enabled"].should == wiki_enabled + }.should change{Project.count}.by(1) + end + it "should create new projects within all parameters" do + expect { name = "foo" path = "bar" code = "bazz" @@ -53,9 +87,10 @@ describe Gitlab::API do json_response["path"].should == path json_response["code"].should == code }.should change{Project.count}.by(1) + end it "should not create project without name" do - lambda { + expect { post api("/projects", user) response.status.should == 404 }.should_not change{Project.count} -- cgit v1.2.1 From f557686eb2d432f794addbc052331d5d8f0be400 Mon Sep 17 00:00:00 2001 From: randx Date: Mon, 3 Sep 2012 22:30:14 +0300 Subject: git clone panel available on files tab too --- app/assets/javascripts/projects.js | 9 +++++++++ app/assets/stylesheets/gitlab_bootstrap/blocks.scss | 2 +- app/assets/stylesheets/sections/projects.scss | 12 ++++++++---- app/views/projects/_clone_panel.html.haml | 4 ++-- app/views/projects/show.html.haml | 7 +------ app/views/refs/_head.html.haml | 9 +++++++++ app/views/refs/tree.js.haml | 2 +- 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/assets/javascripts/projects.js b/app/assets/javascripts/projects.js index be1b75b90a7..6bbfbacc382 100644 --- a/app/assets/javascripts/projects.js +++ b/app/assets/javascripts/projects.js @@ -14,3 +14,12 @@ function Projects() { disableButtonIfEmtpyField("#project_name", ".project-submit") } + +function initGitCloneSwitcher() { + var link_sel = ".project_clone_holder button"; + $(link_sel).bind("click", function(e) { + $(link_sel).removeClass("active"); + $(this).addClass("active"); + $("#project_clone").val($(this).attr("data-clone")); + }) +} diff --git a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss index 894cb3044fa..70f7889f15c 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/blocks.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/blocks.scss @@ -1,6 +1,6 @@ /** * =================================== - * Contain 3 main UI block elements: + * Contain 3 main UI block elements: * .main_box - for show pages * .ui-box - for simple block & widgets * =================================== diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss index 721b569d446..92d0fc43c88 100644 --- a/app/assets/stylesheets/sections/projects.scss +++ b/app/assets/stylesheets/sections/projects.scss @@ -75,17 +75,21 @@ padding: 4px 7px; border: 1px solid #CCC; margin-bottom:5px; - input[type=text] { +} + +.project_clone_holder { + input[type="text"] { border: 1px solid #BBB; + box-shadow: none; } } -.save-project-loader { - img { +.save-project-loader { + img { margin-top:50px; margin-bottom:50px; } - h3 { + h3 { @extend .page_title; } diff --git a/app/views/projects/_clone_panel.html.haml b/app/views/projects/_clone_panel.html.haml index 839a98a0d79..76059f32237 100644 --- a/app/views/projects/_clone_panel.html.haml +++ b/app/views/projects/_clone_panel.html.haml @@ -3,8 +3,8 @@ .span7 .form-horizontal .input-prepend.project_clone_holder - = link_to "SSH", "#", class: "btn small active", :"data-clone" => @project.ssh_url_to_repo - = link_to "HTTP", "#", class: "btn small", :"data-clone" => @project.http_url_to_repo + %button{class: "btn small active", :"data-clone" => @project.ssh_url_to_repo} SSH + %button{class: "btn small", :"data-clone" => @project.http_url_to_repo} HTTP = text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5" .span4.right .right diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index 77a0ef1ac4d..de3e9cefc06 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -5,10 +5,5 @@ :javascript $(function(){ - var link_sel = ".project_clone_holder a"; - $(link_sel).bind("click", function() { - $(link_sel).removeClass("active"); - $(this).addClass("active"); - $("#project_clone").val($(this).attr("data-clone")); - }) + initGitCloneSwitcher(); }) diff --git a/app/views/refs/_head.html.haml b/app/views/refs/_head.html.haml index 8825493a0ec..affd07cba38 100644 --- a/app/views/refs/_head.html.haml +++ b/app/views/refs/_head.html.haml @@ -7,4 +7,13 @@ %li{class: "#{'active' if (controller.controller_name == "refs") }"} = link_to tree_project_ref_path(@project, @ref) do Source + %li.right + .input-prepend.project_clone_holder + %button{class: "btn small active", :"data-clone" => @project.ssh_url_to_repo} SSH + %button{class: "btn small", :"data-clone" => @project.http_url_to_repo} HTTP + = text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5" +:javascript + $(function(){ + initGitCloneSwitcher(); + }) diff --git a/app/views/refs/tree.js.haml b/app/views/refs/tree.js.haml index 2eccf8c19a6..92e90579304 100644 --- a/app/views/refs/tree.js.haml +++ b/app/views/refs/tree.js.haml @@ -6,5 +6,5 @@ // Load last commit log for each file in tree $('#tree-slider').waitForImages(function() { - ajaxGet('#{@logs_path}'); + ajaxGet('#{@logs_path}'); }); -- cgit v1.2.1 From 5db2dbdcf110d4a5ff4180ae96ec9131ac9a1723 Mon Sep 17 00:00:00 2001 From: randx Date: Mon, 3 Sep 2012 22:57:34 +0300 Subject: fix browse file css --- app/assets/stylesheets/gitlab_bootstrap/files.scss | 2 +- app/assets/stylesheets/highlight/white.scss | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/gitlab_bootstrap/files.scss b/app/assets/stylesheets/gitlab_bootstrap/files.scss index 4ea5ed02ada..83903c538da 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/files.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/files.scss @@ -9,7 +9,7 @@ .file_title { border-bottom: 1px solid #bbb; - @include bg-gray-gradient; + @include bg-dark-gray-gradient; margin: 0; font-weight: normal; font-weight: bold; diff --git a/app/assets/stylesheets/highlight/white.scss b/app/assets/stylesheets/highlight/white.scss index a08f05bdb54..9b003b8ace5 100644 --- a/app/assets/stylesheets/highlight/white.scss +++ b/app/assets/stylesheets/highlight/white.scss @@ -1,12 +1,21 @@ -table.highlighttable -{ +table.highlighttable { margin:0px; padding:0px; font-size:12px; table-layout:fixed; background: #EEE; + box-shadow: none; + border: none; + td.linenos { + background:#eee; + border-left:none; + } + td.code { + border-right:none; + } } + td.code, td.linenos{ padding:0; -- cgit v1.2.1 From b44e9a08d5c0e012d645e75a321c6ea299b4bea1 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Mon, 3 Sep 2012 20:38:41 -0400 Subject: Add Milestone link to API help TOC [ci skip] --- app/views/help/api.html.haml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/views/help/api.html.haml b/app/views/help/api.html.haml index d7d7aed4232..35176f8e214 100644 --- a/app/views/help/api.html.haml +++ b/app/views/help/api.html.haml @@ -15,6 +15,8 @@ %a{href: "#users"} Users %li %a{href: "#issues"} Issues + %li + %a{href: "#milestones"} Milestones .file_holder#README .file_title -- cgit v1.2.1 From d29827433d77b9f9353fcae396ca321dd9016771 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 00:04:36 -0400 Subject: Update User#identifier to conform to Gitolite 2.x's user pattern Also modifies the specs a bit because I can't help myself. Closes #480 --- app/roles/account.rb | 11 +++++++-- spec/factories.rb | 2 +- spec/models/user_spec.rb | 58 ++++++++++++++++++++++++++++-------------------- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/app/roles/account.rb b/app/roles/account.rb index 63a9b5c51bf..b8c445a3d58 100644 --- a/app/roles/account.rb +++ b/app/roles/account.rb @@ -1,6 +1,13 @@ -module Account +module Account + # Returns a string for use as a Gitolite user identifier + # + # Note that Gitolite 2.x requires the following pattern for users: + # + # ^@?[0-9a-zA-Z][0-9a-zA-Z._\@+-]*$ def identifier - email.gsub /[^[:alnum:]]/, "_" + # Replace non-word chars with underscores, then make sure it starts with + # valid chars + email.gsub(/\W/, '_').gsub(/\A([\W\_])+/, '') end def is_admin? diff --git a/spec/factories.rb b/spec/factories.rb index 2e4acf39461..a8b3bc57d3f 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -28,7 +28,7 @@ FactoryGirl.define do email { Faker::Internet.email } name password "123456" - password_confirmation "123456" + password_confirmation { password } trait :admin do admin true diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ca34f07df7f..081767543e2 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -31,36 +31,46 @@ describe User do it { should respond_to(:private_token) } end - it "should return valid identifier" do - user = User.new(email: "test@mail.com") - user.identifier.should == "test_mail_com" - end + describe '#identifier' do + it "should return valid identifier" do + user = build(:user, email: "test@mail.com") + user.identifier.should == "test_mail_com" + end - it "should return identifier without + sign" do - user = User.new(email: "test+foo@mail.com") - user.identifier.should == "test_foo_mail_com" - end + it "should return identifier without + sign" do + user = build(:user, email: "test+foo@mail.com") + user.identifier.should == "test_foo_mail_com" + end - it "should execute callback when force_random_password specified" do - user = User.new(email: "test@mail.com", force_random_password: true) - user.should_receive(:generate_password) - user.save + it "should conform to Gitolite's required identifier pattern" do + user = build(:user, email: "_test@example.com") + user.identifier.should == 'test_example_com' + end end - it "should not generate password by default" do - user = Factory(:user, password: 'abcdefg', password_confirmation: 'abcdefg') - user.password.should == 'abcdefg' - end + describe '#generate_password' do + it "should execute callback when force_random_password specified" do + user = build(:user, force_random_password: true) + user.should_receive(:generate_password) + user.save + end + + it "should not generate password by default" do + user = create(:user, password: 'abcdefg') + user.password.should == 'abcdefg' + end - it "should generate password when forcing random password" do - Devise.stub(:friendly_token).and_return('123456789') - user = User.create(email: "test1@mail.com", force_random_password: true) - user.password.should == user.password_confirmation - user.password.should == '12345678' + it "should generate password when forcing random password" do + Devise.stub(:friendly_token).and_return('123456789') + user = create(:user, password: 'abcdefg', force_random_password: true) + user.password.should == '12345678' + end end - it "should have authentication token" do - user = Factory(:user) - user.authentication_token.should_not == "" + describe 'authentication token' do + it "should have authentication token" do + user = Factory(:user) + user.authentication_token.should_not be_blank + end end end -- cgit v1.2.1 From b73d4419ea458a2824a35563bcd84d519b2a5516 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Tue, 4 Sep 2012 09:38:48 +0300 Subject: json_spec added. Create project via REST API fixed --- Gemfile | 1 + Gemfile.lock | 4 +++ spec/factories.rb | 3 ++ spec/requests/api/projects_spec.rb | 62 ++++++++------------------------------ spec/spec_helper.rb | 1 + 5 files changed, 22 insertions(+), 49 deletions(-) diff --git a/Gemfile b/Gemfile index b0724fadf5b..33f9cf4c1ea 100644 --- a/Gemfile +++ b/Gemfile @@ -117,6 +117,7 @@ group :test do gem 'email_spec' gem 'resque_spec' gem "webmock" + gem 'json_spec' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index 7ec37f59dfc..ae85a43a7bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,6 +207,9 @@ GEM jquery-rails railties (>= 3.1.0) json (1.7.5) + json_spec (1.0.3) + multi_json (~> 1.0) + rspec (~> 2.0) kaminari (0.14.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -406,6 +409,7 @@ DEPENDENCIES httparty jquery-rails (= 2.0.2) jquery-ui-rails (= 0.5.0) + json_spec kaminari launchy letter_opener diff --git a/spec/factories.rb b/spec/factories.rb index 2e4acf39461..95c919fd915 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -11,6 +11,9 @@ module Factory def self.new(type, *args) FactoryGirl.build(type, *args) end + def self.attributes(type, *args) + FactoryGirl.attributes_for(type, *args) + end end FactoryGirl.define do diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index cdab2657012..43c44974bb0 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -39,55 +39,19 @@ describe Gitlab::API do }.should change{Project.count}.by(1) end it "should create new project" do - expect { - name = "foo" - path = "bar" - code = "bazz" - description = "fuu project" - default_branch = "default_branch" - issues_enabled = false - wall_enabled = false - merge_requests_enabled = false - wiki_enabled = false - post api("/projects", user), { - code: code, - path: path, - name: name, - description: description, - default_branch: default_branch, - issues_enabled: issues_enabled, - wall_enabled: wall_enabled, - merge_requests_enabled: merge_requests_enabled, - wiki_enabled: wiki_enabled - } - response.status.should == 201 - json_response["name"].should == name - json_response["path"].should == path - json_response["code"].should == code - json_response["description"].should == description - json_response["default_branch"].should == default_branch - json_response["issues_enabled"].should == issues_enabled - json_response["wall_enabled"].should == wall_enabled - json_response["merge_requests_enabled"].should == merge_requests_enabled - json_response["wiki_enabled"].should == wiki_enabled - }.should change{Project.count}.by(1) - end - it "should create new projects within all parameters" do - expect { - name = "foo" - path = "bar" - code = "bazz" - post api("/projects", user), { - code: code, - path: path, - name: name - } - response.status.should == 201 - json_response["name"].should == name - json_response["path"].should == path - json_response["code"].should == code - }.should change{Project.count}.by(1) - + attributes = Factory.attributes(:project, + name: "foo", + path: "bar", + code: "bazz", + description: "foo project", + default_branch: "default_branch", + issues_enabled: false, + wall_enabled: false, + merge_requests_enabled: false, + wiki_enabled: false) + post api("/projects", user), attributes + response.status.should == 201 + response.body.should be_json_eql(attributes.to_json).excluding("owner", "private") end it "should not create project without name" do expect { diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d381b3f1e2e..30a213bac18 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -28,6 +28,7 @@ RSpec.configure do |config| config.include LoginHelpers, type: :request config.include GitoliteStub config.include FactoryGirl::Syntax::Methods + config.include JsonSpec::Helpers # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false -- cgit v1.2.1 From 6471d8c6521ef7a88f3aa893cc11c1da8077bdc0 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 03:18:26 -0400 Subject: Change @project instance variable to a local in views/help/markdown It was erroneously appending the project name to the page's title, even though the Help system isn't specific to one project. --- app/views/help/markdown.html.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/help/markdown.html.haml b/app/views/help/markdown.html.haml index 6a4bbb02c6c..43d3d4b0f4a 100644 --- a/app/views/help/markdown.html.haml +++ b/app/views/help/markdown.html.haml @@ -88,9 +88,9 @@ for commits -# this example will only be shown if the user has a project with at least one issue - - if @project = current_user.projects.first - - if issue = @project.issues.first - %p For example in your #{link_to @project.name, project_path(@project)} project something like + - if project = current_user.projects.first + - if issue = project.issues.first + %p For example in your #{link_to project.name, project_path(project)} project something like %pre= "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." %p becomes = markdown "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." -- cgit v1.2.1 From 4bd30245805bc7814fc24686a418a9c883259800 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Tue, 4 Sep 2012 10:29:26 +0300 Subject: json_spec removed --- Gemfile | 1 - Gemfile.lock | 4 --- spec/requests/api/projects_spec.rb | 61 ++++++++++++++++++++------------------ spec/spec_helper.rb | 1 - 4 files changed, 32 insertions(+), 35 deletions(-) diff --git a/Gemfile b/Gemfile index 33f9cf4c1ea..b0724fadf5b 100644 --- a/Gemfile +++ b/Gemfile @@ -117,7 +117,6 @@ group :test do gem 'email_spec' gem 'resque_spec' gem "webmock" - gem 'json_spec' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index ae85a43a7bf..7ec37f59dfc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,9 +207,6 @@ GEM jquery-rails railties (>= 3.1.0) json (1.7.5) - json_spec (1.0.3) - multi_json (~> 1.0) - rspec (~> 2.0) kaminari (0.14.0) actionpack (>= 3.0.0) activesupport (>= 3.0.0) @@ -409,7 +406,6 @@ DEPENDENCIES httparty jquery-rails (= 2.0.2) jquery-ui-rails (= 0.5.0) - json_spec kaminari launchy letter_opener diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb index 43c44974bb0..1373748f50d 100644 --- a/spec/requests/api/projects_spec.rb +++ b/spec/requests/api/projects_spec.rb @@ -27,37 +27,40 @@ describe Gitlab::API do describe "POST /projects" do it "should create new project without code and path" do - expect { - name = "foo" - post api("/projects", user), { - name: name - } - response.status.should == 201 - json_response["name"].should == name - json_response["code"].should == name - json_response["path"].should == name - }.should change{Project.count}.by(1) - end - it "should create new project" do - attributes = Factory.attributes(:project, - name: "foo", - path: "bar", - code: "bazz", - description: "foo project", - default_branch: "default_branch", - issues_enabled: false, - wall_enabled: false, - merge_requests_enabled: false, - wiki_enabled: false) - post api("/projects", user), attributes + expect { post api("/projects", user), name: 'foo' }.to change {Project.count}.by(1) + end + + it "should not create new project without name" do + expect { post api("/projects", user) }.to_not change {Project.count} + end + + it "should respond with 201 on success" do + post api("/projects", user), name: 'foo' response.status.should == 201 - response.body.should be_json_eql(attributes.to_json).excluding("owner", "private") end - it "should not create project without name" do - expect { - post api("/projects", user) - response.status.should == 404 - }.should_not change{Project.count} + + it "should repsond with 404 on failure" do + post api("/projects", user) + response.status.should == 404 + end + + it "should assign attributes to project" do + project = Factory.attributes(:project, { + path: 'path', + code: 'code', + description: Faker::Lorem.sentence, + default_branch: 'stable', + issues_enabled: false, + wall_enabled: false, + merge_requests_enabled: false, + wiki_enabled: false + }) + + post api("/projects", user), project + + project.each_pair do |k,v| + json_response[k.to_s].should == v + end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 30a213bac18..d381b3f1e2e 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -28,7 +28,6 @@ RSpec.configure do |config| config.include LoginHelpers, type: :request config.include GitoliteStub config.include FactoryGirl::Syntax::Methods - config.include JsonSpec::Helpers # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false -- cgit v1.2.1 From 457b0f604fc005cc695627c558a39c9e14f3c6a0 Mon Sep 17 00:00:00 2001 From: Tse-Ching Ho Date: Mon, 3 Sep 2012 21:04:10 +0800 Subject: use APP_ROOT in init-gitlab to specify root of project --- lib/support/init-gitlab | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/support/init-gitlab b/lib/support/init-gitlab index f146e80f4a8..26ed11e184d 100644 --- a/lib/support/init-gitlab +++ b/lib/support/init-gitlab @@ -9,23 +9,24 @@ # Description: GitLab git repository management ### END INIT INFO -DAEMON_OPTS="-c /home/gitlab/gitlab/config/unicorn.rb -E production -D" -NAME=unicorn +APP_ROOT="/home/gitlab/gitlab" +DAEMON_OPTS="-c $APP_ROOT/config/unicorn.rb -E production -D" +NAME="unicorn" DESC="Gitlab service" -PID=/home/gitlab/gitlab/tmp/pids/unicorn.pid -RESQUE_PID=/home/gitlab/gitlab/tmp/pids/resque_worker.pid +PID="$APP_ROOT/tmp/pids/unicorn.pid" +RESQUE_PID="$APP_ROOT/tmp/pids/resque_worker.pid" case "$1" in start) - CD_TO_APP_DIR="cd /home/gitlab/gitlab" + CD_TO_APP_DIR="cd $APP_ROOT" START_DAEMON_PROCESS="bundle exec unicorn_rails $DAEMON_OPTS" START_RESQUE_PROCESS="./resque.sh" echo -n "Starting $DESC: " if [ `whoami` = root ]; then - sudo -u gitlab sh -l -c "$CD_TO_APP_DIR > /dev/null 2>&1 && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS" + sudo -u gitlab sh -l -c "$CD_TO_APP_DIR && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS" else - $CD_TO_APP_DIR > /dev/null 2>&1 && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS + $CD_TO_APP_DIR && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS fi echo "$NAME." ;; -- cgit v1.2.1 From 4cb03183ac4d9c765111174f0d657997bfb35d45 Mon Sep 17 00:00:00 2001 From: Rob Taylor Date: Tue, 14 Aug 2012 17:54:25 +0100 Subject: Text changes to API documentation --- doc/api/README.md | 11 ++++------- doc/api/projects.md | 9 +++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/doc/api/README.md b/doc/api/README.md index 3a6c7b7682a..dece3e23619 100644 --- a/doc/api/README.md +++ b/doc/api/README.md @@ -1,10 +1,8 @@ # Gitlab API -All API requests require authentication. You need to pass `private_token` parameter to authenticate. +All API requests require authentication. You need to pass a `private_token` parameter to authenticate. You can find or reset your private token in your profile. -To get or reset your token visit your profile. - -If no or invalid `private_token` provided error message will be returned with status code 401: +If no, or an invalid, `private_token` is provided then an error message will be returned with status code 401: ```json { @@ -12,10 +10,9 @@ If no or invalid `private_token` provided error message will be returned with st } ``` -API requests should be prefixed with `api` and the API version. -API version is equal to Gitlab major version number and defined in `lib/api.rb`. +API requests should be prefixed with `api` and the API version. The API version is equal to the Gitlab major version number, which is defined in `lib/api.rb`. -Example of valid API request: +Example of a valid API request: ``` GET http://example.com/api/v2/projects?private_token=QVy1PB7sTxfy4pqfZM1U diff --git a/doc/api/projects.md b/doc/api/projects.md index b0c1e65709c..e029522be18 100644 --- a/doc/api/projects.md +++ b/doc/api/projects.md @@ -1,6 +1,6 @@ ## List projects -Get a list of authenticated user's projects. +Get a list of projects owned by the authenticated user. ``` GET /projects @@ -55,7 +55,7 @@ GET /projects ## Single project -Get an authenticated user's project. +Get a specific project, identified by project ID, which is owned by the authentication user. ``` GET /projects/:id @@ -109,7 +109,7 @@ found` on fail. ## Project repository branches -Get a list of project repository branches sorted by name alphabetically. +Get a list of repository branches from a project, sorted by name alphabetically. ``` GET /projects/:id/repository/branches @@ -186,7 +186,7 @@ Parameters: ## Project repository tags -Get a list of project repository tags sorted by name in reverse alphabetical order. +Get a list of repository tags from a project, sorted by name in reverse alphabetical order. ``` GET /projects/:id/repository/tags @@ -237,3 +237,4 @@ Parameters: + `filepath` (required) - The path the file Will return the raw file contents. + -- cgit v1.2.1 From 12c57a7061d55798e77e79c3cfae293b4d773365 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 05:03:31 -0400 Subject: Change hardcoded base path to use Gitlab settings Closes #1072 --- lib/tasks/bulk_import.rake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/tasks/bulk_import.rake b/lib/tasks/bulk_import.rake index 607250f1770..5941eadb970 100644 --- a/lib/tasks/bulk_import.rake +++ b/lib/tasks/bulk_import.rake @@ -1,8 +1,9 @@ IMPORT_DIRECTORY = 'import_projects' -REPOSITORY_DIRECTORY = '/home/git/repositories' desc "Imports existing Git repos into new projects from the import_projects folder" task :import_projects, [:email] => :environment do |t, args| + REPOSITORY_DIRECTORY = Gitlab.config.git_base_path + user_email = args.email repos_to_import = Dir.glob("#{IMPORT_DIRECTORY}/*") -- cgit v1.2.1 From 11ebbb68d8c0db7b23db8b0509f160fc1571e50a Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 05:24:43 -0400 Subject: Add tmp/.gitkeep file to ensure tmp folder exists on clone The install guide lists it as a requirement, so we might as well have it by default. --- tmp/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tmp/.gitkeep diff --git a/tmp/.gitkeep b/tmp/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.1 From fc7ac316a084788f91710912e110f1aa70fd5a65 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 05:26:25 -0400 Subject: Clean up doc/installation.md Closes #939 --- doc/installation.md | 66 +++++++++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/doc/installation.md b/doc/installation.md index 4cb873f0e38..6ba14566f40 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -20,7 +20,7 @@ You might have some luck using these, but no guarantees: - MacOS X - FreeBSD -Gitlab does **not** run on Windows and we have no plans of making Gitlab compatible. +GitLab does **not** run on Windows and we have no plans of making GitLab compatible. ## This installation guide created for Debian/Ubuntu and properly tested. @@ -28,21 +28,21 @@ The installation consists of 6 steps: 1. Install packages / dependencies 2. Install ruby -3. Install gitolite -4. Install and configure Gitlab. +3. Install Gitolite +4. Install and configure GitLab. 5. Start the web front-end 6. Start a Resque worker (for background processing) ### IMPORTANT -Please make sure you have followed all the steps below before posting to the mailinglist with installation and configuration questions. +Please make sure you have followed all the steps below before posting to the mailing list with installation and configuration questions. -Only create a Github Issue if you want a specific part of this installation guide updated. +Only create a GitHub Issue if you want a specific part of this installation guide updated. Also read the [Read this before you submit an issue](https://github.com/gitlabhq/gitlabhq/wiki/Read-this-before-you-submit-an-issue) wiki page. > - - - -> First 3 steps can be easily skipped with simply install script: +> The first 3 steps of this guide can be easily skipped by executing an install script: > > # Install curl and sudo > apt-get install curl sudo @@ -50,9 +50,9 @@ Also read the [Read this before you submit an issue](https://github.com/gitlabhq > # 3 steps in 1 command :) > curl https://raw.github.com/gitlabhq/gitlabhq/master/doc/debian_ubuntu.sh | sh > -> Now you can go to step 4" +> Now you can go to [Step 4](#4-install-gitlab-and-configuration-check-status-configuration) > -> Or if you are installing on Amazon Web Services using Ubuntu 12.04 you can do all steps (1 to 6) at once with: +> Or if you are installing on Amazon Web Services using Ubuntu 12.04 you can do all steps (1 to 6) at once with: > > curl https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/aws/debian_ubuntu_aws.sh | sh > @@ -61,7 +61,11 @@ Also read the [Read this before you submit an issue](https://github.com/gitlabhq # 1. Install packages -*Keep in mind that `sudo` is not installed for debian by default. You should install it with as root:* **apt-get update && apt-get upgrade && apt-get install sudo** +*Keep in mind that `sudo` is not installed on Debian by default. You should install it as root:* + + apt-get update && apt-get upgrade && apt-get install sudo + +Now install the required packages: sudo apt-get update sudo apt-get upgrade @@ -71,7 +75,7 @@ Also read the [Read this before you submit an issue](https://github.com/gitlabhq # If you want to use MySQL: sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev -# 2. Install ruby +# 2. Install Ruby wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz tar xzfv ruby-1.9.2-p290.tar.gz @@ -80,7 +84,7 @@ Also read the [Read this before you submit an issue](https://github.com/gitlabhq make sudo make install -# 3. Install gitolite +# 3. Install Gitolite Create user for git: @@ -93,12 +97,12 @@ Create user for git: --home /home/git \ git -Create user for gitlab: +Create user for GitLab: # ubuntu/debian sudo adduser --disabled-login --gecos 'gitlab system' gitlab -Add your user to git group: +Add your user to the `git` group: sudo usermod -a -G git gitlab @@ -106,10 +110,10 @@ Generate key: sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa -Get gitolite source code: +Clone GitLab's fork of the Gitolite source code: cd /home/git - sudo -H -u git git clone git://github.com/gitlabhq/gitolite /home/git/gitolite + sudo -H -u git git clone https://github.com/gitlabhq/gitolite.git /home/git/gitolite Setup: @@ -135,23 +139,23 @@ Permissions: # if succeed you can remove it sudo rm -rf /tmp/gitolite-admin -**IMPORTANT! If you cant clone `gitolite-admin` repository - DONT PROCEED INSTALLATION** +**IMPORTANT! If you can't clone `gitolite-admin` repository - DO NOT PROCEED WITH INSTALLATION** +Check the [Trouble Shooting Guide](https://github.com/gitlabhq/gitlab-public-wiki/wiki/Trouble-Shooting-Guide) +and ensure you have followed all of the above steps carefully. -# 4. Install gitlab and configuration. Check status configuration. +# 4. Clone GitLab source and install prerequisites sudo gem install charlock_holmes --version '0.6.8' sudo pip install pygments sudo gem install bundler cd /home/gitlab - sudo -H -u gitlab git clone -b stable git://github.com/gitlabhq/gitlabhq.git gitlab + sudo -H -u gitlab git clone -b stable https://github.com/gitlabhq/gitlabhq.git gitlab cd gitlab - sudo -u gitlab mkdir tmp - # Rename config files sudo -u gitlab cp config/gitlab.yml.example config/gitlab.yml -#### Select db you want to use +#### Select the database you want to use # SQLite sudo -u gitlab cp config/database.yml.sqlite config/database.yml @@ -179,15 +183,17 @@ Permissions: sudo -u gitlab -H bundle install --without development test --deployment -#### Setup DB +#### Setup database sudo -u gitlab bundle exec rake gitlab:app:setup RAILS_ENV=production -#### Setup gitlab hooks +#### Setup GitLab hooks sudo cp ./lib/hooks/post-receive /home/git/share/gitolite/hooks/common/post-receive sudo chown git:git /home/git/share/gitolite/hooks/common/post-receive +#### Check application status + Checking status: sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production @@ -208,9 +214,9 @@ Checking status: UMASK for .gitolite.rc is 0007? ............YES /home/git/share/gitolite/hooks/common/post-receive exists? ............YES -If you got all YES - congrats! You can go to next step. +If you got all YES - congratulations! You can go to the next step. -# 5. Server up +# 5. Start the web server Application can be started with next command: @@ -225,12 +231,12 @@ You can login via web using admin generated with setup: admin@local.host 5iveL!fe -# 6. Run resque process (for processing queue). +# 6. Run Resque process (for processing job queue). # Manually sudo -u gitlab bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production BACKGROUND=yes - # Gitlab start script + # GitLab start script sudo -u gitlab ./resque.sh # if you run this as root /home/gitlab/gitlab/tmp/pids/resque_worker.pid will be owned by root # causing the resque worker not to start via init script on next boot/service restart @@ -250,7 +256,7 @@ You can login via web using admin generated with setup: sudo -u gitlab cp config/unicorn.rb.orig config/unicorn.rb sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D -Add gitlab to nginx sites & change with your host specific settings +Add GitLab to nginx sites & change with your host specific settings sudo cp /home/gitlab/gitlab/lib/support/nginx-gitlab /etc/nginx/sites-available/gitlab sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab @@ -272,10 +278,10 @@ Adding permission: sudo chmod +x /etc/init.d/gitlab -Gitlab autostart: +GitLab autostart: sudo update-rc.d gitlab defaults -Now you can start/restart/stop gitlab like: +Now you can start/restart/stop GitLab like: sudo /etc/init.d/gitlab restart -- cgit v1.2.1 From c1ff89fa2adc4809ea093833464f41ea9af5bc6f Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 11:30:49 -0400 Subject: Rename projects.js to projects.js.coffee --- app/assets/javascripts/projects.js | 25 ------------------------- app/assets/javascripts/projects.js.coffee | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 app/assets/javascripts/projects.js create mode 100644 app/assets/javascripts/projects.js.coffee diff --git a/app/assets/javascripts/projects.js b/app/assets/javascripts/projects.js deleted file mode 100644 index 6bbfbacc382..00000000000 --- a/app/assets/javascripts/projects.js +++ /dev/null @@ -1,25 +0,0 @@ -function Projects() { - $("#project_name").live("change", function(){ - var slug = slugify($(this).val()); - $("#project_code").val(slug); - $("#project_path").val(slug); - }); - - $('.new_project, .edit_project').live('ajax:before', function() { - $('.project_new_holder, .project_edit_holder').hide(); - $('.save-project-loader').show(); - }); - - $('form #project_default_branch').chosen(); - - disableButtonIfEmtpyField("#project_name", ".project-submit") -} - -function initGitCloneSwitcher() { - var link_sel = ".project_clone_holder button"; - $(link_sel).bind("click", function(e) { - $(link_sel).removeClass("active"); - $(this).addClass("active"); - $("#project_clone").val($(this).attr("data-clone")); - }) -} diff --git a/app/assets/javascripts/projects.js.coffee b/app/assets/javascripts/projects.js.coffee new file mode 100644 index 00000000000..6bbfbacc382 --- /dev/null +++ b/app/assets/javascripts/projects.js.coffee @@ -0,0 +1,25 @@ +function Projects() { + $("#project_name").live("change", function(){ + var slug = slugify($(this).val()); + $("#project_code").val(slug); + $("#project_path").val(slug); + }); + + $('.new_project, .edit_project').live('ajax:before', function() { + $('.project_new_holder, .project_edit_holder').hide(); + $('.save-project-loader').show(); + }); + + $('form #project_default_branch').chosen(); + + disableButtonIfEmtpyField("#project_name", ".project-submit") +} + +function initGitCloneSwitcher() { + var link_sel = ".project_clone_holder button"; + $(link_sel).bind("click", function(e) { + $(link_sel).removeClass("active"); + $(this).addClass("active"); + $("#project_clone").val($(this).attr("data-clone")); + }) +} -- cgit v1.2.1 From 7e76610d0a521af73459ffc2ba7b3956ab9da34c Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 11:36:14 -0400 Subject: Update the projects js file to coffeescript; refactor the clone panel switcher --- app/assets/javascripts/projects.js.coffee | 40 ++++++++++++++----------------- app/views/projects/empty.html.haml | 13 ---------- app/views/projects/show.html.haml | 5 ---- app/views/refs/_head.html.haml | 5 ---- 4 files changed, 18 insertions(+), 45 deletions(-) diff --git a/app/assets/javascripts/projects.js.coffee b/app/assets/javascripts/projects.js.coffee index 6bbfbacc382..ca8f13f6744 100644 --- a/app/assets/javascripts/projects.js.coffee +++ b/app/assets/javascripts/projects.js.coffee @@ -1,25 +1,21 @@ -function Projects() { - $("#project_name").live("change", function(){ - var slug = slugify($(this).val()); - $("#project_code").val(slug); - $("#project_path").val(slug); - }); +window.Projects = -> + $("#project_name").live "change", -> + slug = slugify($(this).val()) + $("#project_code").val(slug) + $("#project_path").val(slug) - $('.new_project, .edit_project').live('ajax:before', function() { - $('.project_new_holder, .project_edit_holder').hide(); - $('.save-project-loader').show(); - }); + $(".new_project, .edit_project").live "ajax:before", -> + $(".project_new_holder, .project_edit_holder").hide() + $(".save-project-loader").show() - $('form #project_default_branch').chosen(); + $("form #project_default_branch").chosen() + disableButtonIfEmtpyField "#project_name", ".project-submit" - disableButtonIfEmtpyField("#project_name", ".project-submit") -} - -function initGitCloneSwitcher() { - var link_sel = ".project_clone_holder button"; - $(link_sel).bind("click", function(e) { - $(link_sel).removeClass("active"); - $(this).addClass("active"); - $("#project_clone").val($(this).attr("data-clone")); - }) -} +# Git clone panel switcher +$ -> + scope = $('.project_clone_holder') + if scope.length > 0 + $('a, button', scope).click -> + $('a, button', scope).removeClass('active') + $(this).addClass('active') + $('#project_clone', scope).val($(this).data('clone')) diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index d408c0a64ae..6ec7015a82e 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -36,16 +36,3 @@ - if can? current_user, :admin_project, @project .prepend-top-20 = link_to 'Remove project', @project, confirm: 'Are you sure?', method: :delete, class: "btn danger right" - - - -:javascript - $(function(){ - var link_sel = ".project_clone_holder a"; - $(link_sel).bind("click", function() { - $(link_sel).removeClass("active"); - $(this).addClass("active"); - $("#project_clone").val($(this).attr("data-clone")); - }) - }) - diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml index de3e9cefc06..21459da256f 100644 --- a/app/views/projects/show.html.haml +++ b/app/views/projects/show.html.haml @@ -2,8 +2,3 @@ = render 'clone_panel' = render "events/event_last_push", event: @last_push .content_list= render @events - -:javascript - $(function(){ - initGitCloneSwitcher(); - }) diff --git a/app/views/refs/_head.html.haml b/app/views/refs/_head.html.haml index affd07cba38..d51602de9b7 100644 --- a/app/views/refs/_head.html.haml +++ b/app/views/refs/_head.html.haml @@ -12,8 +12,3 @@ %button{class: "btn small active", :"data-clone" => @project.ssh_url_to_repo} SSH %button{class: "btn small", :"data-clone" => @project.http_url_to_repo} HTTP = text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5" - -:javascript - $(function(){ - initGitCloneSwitcher(); - }) -- cgit v1.2.1 From a4633537737d1ea85c74b2089fa1c82e407c0cfa Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 11:37:38 -0400 Subject: Add "empty_repo?" method to Repository role Replaces two calls that this method simplifies --- app/controllers/application_controller.rb | 2 +- app/controllers/projects_controller.rb | 2 +- app/roles/repository.rb | 12 ++++++++---- spec/roles/repository_spec.rb | 22 ++++++++++++++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 spec/roles/repository_spec.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 9aab250dbd4..d53b23bb246 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -135,7 +135,7 @@ class ApplicationController < ActionController::Base end def require_non_empty_project - redirect_to @project unless @project.repo_exists? && @project.has_commits? + redirect_to @project if @project.empty_repo? end def no_cache_headers diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bd7f811e59f..170b8892936 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -50,7 +50,7 @@ class ProjectsController < ApplicationController respond_to do |format| format.html do - if @project.repo_exists? && @project.has_commits? + unless @project.empty_repo? @last_push = current_user.recent_push(@project.id) render :show else diff --git a/app/roles/repository.rb b/app/roles/repository.rb index 5fa950db6d6..5f6c35414e1 100644 --- a/app/roles/repository.rb +++ b/app/roles/repository.rb @@ -8,6 +8,10 @@ module Repository false end + def empty_repo? + !repo_exists? || !has_commits? + end + def commit(commit_id = nil) Commit.find_or_first(repo, commit_id, root_ref) end @@ -38,7 +42,7 @@ module Repository def has_post_receive_file? hook_file = File.join(path_to_repo, 'hooks', 'post-receive') - File.exists?(hook_file) + File.exists?(hook_file) end def tags @@ -67,7 +71,7 @@ module Repository def repo_exists? @repo_exists ||= (repo && !repo.branches.empty?) - rescue + rescue @repo_exists = false end @@ -94,7 +98,7 @@ module Repository !!commit end - def root_ref + def root_ref default_branch || "master" end @@ -104,7 +108,7 @@ module Repository # Archive Project to .tar.gz # - # Already packed repo archives stored at + # Already packed repo archives stored at # app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz # def archive_repo ref diff --git a/spec/roles/repository_spec.rb b/spec/roles/repository_spec.rb new file mode 100644 index 00000000000..62aecc1341f --- /dev/null +++ b/spec/roles/repository_spec.rb @@ -0,0 +1,22 @@ +require 'spec_helper' + +describe Project, "Repository" do + let(:project) { build(:project) } + + describe "#empty_repo?" do + it "should return true if the repo doesn't exist" do + project.stub(repo_exists?: false, has_commits?: true) + project.should be_empty_repo + end + + it "should return true if the repo has commits" do + project.stub(repo_exists?: true, has_commits?: false) + project.should be_empty_repo + end + + it "should return false if the repo exists and has commits" do + project.stub(repo_exists?: true, has_commits?: true) + project.should_not be_empty_repo + end + end +end -- cgit v1.2.1 From 82a399688316caa9d860d93204f5bfc9b7847a16 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 12:03:40 -0400 Subject: Remove projects/_show partial I have no earthly idea what this file was for, but I couldn't find it being rendered anywhere. --- app/views/projects/_show.html.haml | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 app/views/projects/_show.html.haml diff --git a/app/views/projects/_show.html.haml b/app/views/projects/_show.html.haml deleted file mode 100644 index e8a5b00dd0e..00000000000 --- a/app/views/projects/_show.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -%h5.title - = @project.name -%br -%div - %a.btn.info{href: tree_project_ref_path(@project, @project.root_ref)} Browse code -   - %a.btn{href: project_commits_path(@project)} Commits - %strong.right - = link_to project_path(@project) do - Switch to project → -%br -.alert-message.block-message.warning - .input - .input-prepend - %span.add-on git clone - = text_field_tag :project_clone, @project.url_to_repo, class: "xlarge one_click_select git_clone_url" - -= simple_format @project.description -- unless @events.blank? - %h4.middle_title Recent Activity - .content_list= render @events - - -- cgit v1.2.1 From 0bc4ecfedd1f8580ab861955b0c21605e5a3aadb Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 12:05:08 -0400 Subject: Change projects/empty to include the clone_panel partial instead of duplicating --- app/views/projects/_clone_panel.html.haml | 22 +++++++++++----------- app/views/projects/empty.html.haml | 10 ++-------- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/app/views/projects/_clone_panel.html.haml b/app/views/projects/_clone_panel.html.haml index 76059f32237..20891610ace 100644 --- a/app/views/projects/_clone_panel.html.haml +++ b/app/views/projects/_clone_panel.html.haml @@ -8,14 +8,14 @@ = text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5" .span4.right .right - - if can? current_user, :download_code, @project - = link_to archive_project_repository_path(@project), class: "btn small grouped" do - %i.icon-download-alt - Download - - if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project) - = link_to new_project_merge_request_path(@project), title: "New Merge Request", class: "btn small grouped" do - Merge Request - - if @project.issues_enabled && can?(current_user, :write_issue, @project) - = link_to new_project_issue_path(@project), title: "New Issue", class: "btn small grouped" do - Issue - + - unless @project.empty_repo? + - if can? current_user, :download_code, @project + = link_to archive_project_repository_path(@project), class: "btn small grouped" do + %i.icon-download-alt + Download + - if @project.merge_requests_enabled && can?(current_user, :write_merge_request, @project) + = link_to new_project_merge_request_path(@project), title: "New Merge Request", class: "btn small grouped" do + Merge Request + - if @project.issues_enabled && can?(current_user, :write_issue, @project) + = link_to new_project_issue_path(@project), title: "New Issue", class: "btn small grouped" do + Issue diff --git a/app/views/projects/empty.html.haml b/app/views/projects/empty.html.haml index 6ec7015a82e..d9a151fc706 100644 --- a/app/views/projects/empty.html.haml +++ b/app/views/projects/empty.html.haml @@ -1,12 +1,6 @@ = render 'shared/no_ssh' -.project_clone_panel - .row - .span7 - .form-horizontal - .input-prepend.project_clone_holder - = link_to "SSH", "#", class: "btn small active", :"data-clone" => @project.ssh_url_to_repo - = link_to "HTTP", "#", class: "btn small", :"data-clone" => @project.http_url_to_repo - = text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5" += render 'clone_panel' + %div.git-empty %h4 Git global setup: %pre.dark -- cgit v1.2.1 From 874a86f820466b2c9cd384483d862a3d5e2a3ae7 Mon Sep 17 00:00:00 2001 From: randx Date: Tue, 4 Sep 2012 19:44:17 +0300 Subject: update install to use recipes --- doc/installation.md | 16 +++++++------- lib/support/init-gitlab | 55 ------------------------------------------------ lib/support/nginx-gitlab | 33 ----------------------------- 3 files changed, 8 insertions(+), 96 deletions(-) delete mode 100644 lib/support/init-gitlab delete mode 100644 lib/support/nginx-gitlab diff --git a/doc/installation.md b/doc/installation.md index 6ba14566f40..462fbc573bf 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -48,15 +48,15 @@ Also read the [Read this before you submit an issue](https://github.com/gitlabhq > apt-get install curl sudo > > # 3 steps in 1 command :) -> curl https://raw.github.com/gitlabhq/gitlabhq/master/doc/debian_ubuntu.sh | sh +> curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu.sh | sh > > Now you can go to [Step 4](#4-install-gitlab-and-configuration-check-status-configuration) > > Or if you are installing on Amazon Web Services using Ubuntu 12.04 you can do all steps (1 to 6) at once with: > -> curl https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/aws/debian_ubuntu_aws.sh | sh +> curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu_aws.sh | sh > -> for more detailed instructions read the HOWTO section of [the script](https://github.com/gitlabhq/gitlabhq/blob/master/lib/support/aws/debian_ubuntu_aws.sh) +> for more detailed instructions read the HOWTO section of [the script](https://github.com/gitlabhq/gitlab-recipes/blob/master/install/debian_ubuntu_aws.sh) > - - - # 1. Install packages @@ -77,9 +77,9 @@ Now install the required packages: # 2. Install Ruby - wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz - tar xzfv ruby-1.9.2-p290.tar.gz - cd ruby-1.9.2-p290 + wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz + tar xfvz ruby-1.9.3-p194.tar.gz + cd ruby-1.9.3-p194 ./configure make sudo make install @@ -258,7 +258,7 @@ You can login via web using admin generated with setup: Add GitLab to nginx sites & change with your host specific settings - sudo cp /home/gitlab/gitlab/lib/support/nginx-gitlab /etc/nginx/sites-available/gitlab + sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab -P /etc/nginx/sites-available/ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab # Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN** @@ -272,7 +272,7 @@ Restart nginx: Create init script in /etc/init.d/gitlab: - cp /home/gitlab/gitlab/lib/support/init-gitlab /etc/init.d/gitlab + sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab -P /etc/init.d/ Adding permission: diff --git a/lib/support/init-gitlab b/lib/support/init-gitlab deleted file mode 100644 index 26ed11e184d..00000000000 --- a/lib/support/init-gitlab +++ /dev/null @@ -1,55 +0,0 @@ -#! /bin/bash -### BEGIN INIT INFO -# Provides: gitlab -# Required-Start: $local_fs $remote_fs $network $syslog redis-server -# Required-Stop: $local_fs $remote_fs $network $syslog -# Default-Start: 2 3 4 5 -# Default-Stop: 0 1 6 -# Short-Description: GitLab git repository management -# Description: GitLab git repository management -### END INIT INFO - -APP_ROOT="/home/gitlab/gitlab" -DAEMON_OPTS="-c $APP_ROOT/config/unicorn.rb -E production -D" -NAME="unicorn" -DESC="Gitlab service" -PID="$APP_ROOT/tmp/pids/unicorn.pid" -RESQUE_PID="$APP_ROOT/tmp/pids/resque_worker.pid" - -case "$1" in - start) - CD_TO_APP_DIR="cd $APP_ROOT" - START_DAEMON_PROCESS="bundle exec unicorn_rails $DAEMON_OPTS" - START_RESQUE_PROCESS="./resque.sh" - - echo -n "Starting $DESC: " - if [ `whoami` = root ]; then - sudo -u gitlab sh -l -c "$CD_TO_APP_DIR && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS" - else - $CD_TO_APP_DIR && $START_DAEMON_PROCESS && $START_RESQUE_PROCESS - fi - echo "$NAME." - ;; - stop) - echo -n "Stopping $DESC: " - kill -QUIT `cat $PID` - kill -QUIT `cat $RESQUE_PID` - echo "$NAME." - ;; - restart) - echo -n "Restarting $DESC: " - kill -USR2 `cat $PID` - echo "$NAME." - ;; - reload) - echo -n "Reloading $DESC configuration: " - kill -HUP `cat $PID` - echo "$NAME." - ;; - *) - echo "Usage: $NAME {start|stop|restart|reload}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/lib/support/nginx-gitlab b/lib/support/nginx-gitlab deleted file mode 100644 index fa15d2018c4..00000000000 --- a/lib/support/nginx-gitlab +++ /dev/null @@ -1,33 +0,0 @@ -upstream gitlab { - server unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket; -} - -server { - listen YOUR_SERVER_IP:80; # e.g., listen 192.168.1.1:80; - server_name YOUR_SERVER_FQDN; # e.g., server_name source.example.com; - root /home/gitlab/gitlab/public; - - # individual nginx logs for this gitlab vhost - access_log /var/log/nginx/gitlab_access.log; - error_log /var/log/nginx/gitlab_error.log; - - location / { - # serve static files from defined root folder;. - # @gitlab is a named location for the upstream fallback, see below - try_files $uri $uri/index.html $uri.html @gitlab; - } - - # if a file, which is not found in the root folder is requested, - # then the proxy pass the request to the upsteam (gitlab unicorn) - location @gitlab { - proxy_redirect off; - - # you need to change this to "https", if you set "ssl" directive to "on" - proxy_set_header X-FORWARDED_PROTO http; - proxy_set_header Host $http_host; - proxy_set_header X-Real-IP $remote_addr; - - proxy_pass http://gitlab; - } -} - -- cgit v1.2.1 From d59d2a197e5ffb0231f97b0ef503e12e8d383709 Mon Sep 17 00:00:00 2001 From: randx Date: Tue, 4 Sep 2012 20:29:20 +0300 Subject: cleanup gitlab from setup scripts --- doc/debian_ubuntu.sh | 45 ------------- lib/support/aws/debian_ubuntu_aws.sh | 122 ----------------------------------- 2 files changed, 167 deletions(-) delete mode 100644 doc/debian_ubuntu.sh delete mode 100644 lib/support/aws/debian_ubuntu_aws.sh diff --git a/doc/debian_ubuntu.sh b/doc/debian_ubuntu.sh deleted file mode 100644 index 5ed1e2a2f1f..00000000000 --- a/doc/debian_ubuntu.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/sh - -sudo apt-get update -sudo apt-get upgrade - -sudo DEBIAN_FRONTEND='noninteractive' apt-get install -y postfix-policyd-spf-python # Install postfix without prompting. -sudo apt-get install -y git git-core wget curl gcc checkinstall libxml2-dev libxslt-dev sqlite3 libsqlite3-dev libcurl4-openssl-dev libreadline-gplv2-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server python-dev python-pip libyaml-dev - -wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz -tar xfvz ruby-1.9.3-p194.tar.gz -cd ruby-1.9.3-p194 -./configure -make -sudo make install - -sudo adduser \ - --system \ - --shell /bin/sh \ - --gecos 'git version control' \ - --group \ - --disabled-password \ - --home /home/git \ - git - -sudo adduser --disabled-login --gecos 'gitlab system' gitlab - -sudo usermod -a -G git gitlab - -sudo -H -u gitlab ssh-keygen -q -N '' -t rsa -f /home/gitlab/.ssh/id_rsa - -cd /home/git -sudo -H -u git git clone git://github.com/gitlabhq/gitolite /home/git/gitolite - -sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; /home/git/gitolite/src/gl-system-install" -sudo cp /home/gitlab/.ssh/id_rsa.pub /home/git/gitlab.pub -sudo chmod 777 /home/git/gitlab.pub - -sudo -u git -H sed -i 's/0077/0007/g' /home/git/share/gitolite/conf/example.gitolite.rc -sudo -u git -H sh -c "PATH=/home/git/bin:$PATH; gl-setup -q /home/git/gitlab.pub" - -sudo chmod -R g+rwX /home/git/repositories/ -sudo chown -R git:git /home/git/repositories/ - -sudo -u gitlab -H git clone git@localhost:gitolite-admin.git /tmp/gitolite-admin -sudo rm -rf /tmp/gitolite-admin diff --git a/lib/support/aws/debian_ubuntu_aws.sh b/lib/support/aws/debian_ubuntu_aws.sh deleted file mode 100644 index c4103ec9195..00000000000 --- a/lib/support/aws/debian_ubuntu_aws.sh +++ /dev/null @@ -1,122 +0,0 @@ -#!/bin/sh - -# ABOUT -# This script performs a complete installation of Gitlab (master branch). -# Is can be run with one command without needing _any_ user input after that. -# This script only works on Amazon Web Services (AWS). -# The operating system used is Ubuntu 12.04 64bit. - -# HOWTO -# Signup for AWS, free tier are available at http://aws.amazon.com/free/ -# Go to EC2 tab in the AWS console EC2 https://console.aws.amazon.com/ec2/home -# Click the 'Launch Instance' button -# Select: 'Quick launch wizard' and continue -# Choose a key pair => Create New => Name it => Download it -# Choose a Launch Configuration => Select 'More Amazon Marketplace Images' -# Press 'Continue' -# Enter 'ubuntu/images/ubuntu-precise-12.04-amd64-server-20120424' and press 'Search' -# Select the only result (ami-3c994355) and press 'Continue' -# Press 'Edit details' if you want to modify something, for example make the type 'c1.medium' to make the install faster. -# Press the 'Launch' button -# Press 'Close' -# Click 'Security Groups' under the left hand menu 'NETWORK & SECURITY' -# Select the newly create seciruty group, probably named 'quicklaunch-1' -# Click on the Inbound tab -# In the 'Create a new rule' dropdown select 'HTTP' -# Press 'Add Rule' -# In the 'Create a new rule' dropdown select 'HTTPS' -# Press 'Add Rule' -# Press 'Apply Rule Changes' -# Give the following command in your local terminal while suptituting the UPPERCASE items -# 'ssh -i LOCATION_OF_AWS_KEY_PAIR_PRIVATE_KEY PUBLIC_DNS_OF_THE_NEW_SERVER' -# Execute the curl command below and when its ready follow the printed 'Log in instuctions' -# curl https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/aws/debian_ubuntu_aws.sh | sh - -# Prevent fingerprint prompt for localhost in step 1 to 3. -echo "Host localhost - StrictHostKeyChecking no - UserKnownHostsFile=/dev/null" | sudo tee -a /etc/ssh/ssh_config - -# Existing script for Step 1 to 3 -curl https://raw.github.com/gitlabhq/gitlabhq/master/doc/debian_ubuntu.sh | sh - -# Install MySQL -sudo apt-get install -y makepasswd # Needed to create a unique password non-interactively. -userPassword=$(makepasswd --char=10) # Generate a random MySQL password -# Note that the lines below creates a cleartext copy of the random password in /var/cache/debconf/passwords.dat -# This file is normally only readable by root and the password will be deleted by the package management system after install. -echo mysql-server mysql-server/root_password password $userPassword | sudo debconf-set-selections -echo mysql-server mysql-server/root_password_again password $userPassword | sudo debconf-set-selections -sudo apt-get install -y mysql-server - -# Gitlab install -sudo gem install charlock_holmes --version '0.6.8' -sudo pip install pygments -sudo gem install bundler -sudo su -l gitlab -c "git clone git://github.com/gitlabhq/gitlabhq.git gitlab" # Using master everywhere. -sudo su -l gitlab -c "cd gitlab && mkdir tmp" -sudo su -l gitlab -c "cd gitlab/config && cp gitlab.yml.example gitlab.yml" -sudo su -l gitlab -c "cd gitlab/config && cp database.yml.example database.yml" -sudo sed -i 's/"secure password"/"'$userPassword'"/' /home/gitlab/gitlab/config/database.yml # Insert the mysql root password. -sudo su -l gitlab -c "cd gitlab && bundle install --without development test --deployment" -sudo su -l gitlab -c "cd gitlab && bundle exec rake gitlab:app:setup RAILS_ENV=production" - -# Setup gitlab hooks -sudo cp /home/gitlab/gitlab/lib/hooks/post-receive /home/git/share/gitolite/hooks/common/post-receive -sudo chown git:git /home/git/share/gitolite/hooks/common/post-receive - -# Set the first occurrence of host in the Gitlab config to the publicly available domain name -sudo sed -i '0,/host/s/localhost/'`wget -qO- http://instance-data/latest/meta-data/public-hostname`'/' /home/gitlab/gitlab/config/gitlab.yml - -# Gitlab installation test (optional) -# sudo -u gitlab bundle exec rake gitlab:app:status RAILS_ENV=production -# sudo -u gitlab bundle exec rails s -e production -# sudo -u gitlab bundle exec rake environment resque:work QUEUE=* RAILS_ENV=production BACKGROUND=no - -# Install and configure Nginx -sudo apt-get install -y nginx -sudo cp /home/gitlab/gitlab/lib/support/nginx-gitlab /etc/nginx/sites-available/gitlab -sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab -sudo sed -i 's/YOUR_SERVER_IP/'`wget -qO- http://instance-data/latest/meta-data/local-ipv4`'/' /etc/nginx/sites-available/gitlab # Set private ip address (public won't work). -sudo sed -i 's/YOUR_SERVER_FQDN/'`wget -qO- http://instance-data/latest/meta-data/public-hostname`'/' /etc/nginx/sites-available/gitlab # Set public dns domain name. - -# Configure Unicorn -sudo -u gitlab cp /home/gitlab/gitlab/config/unicorn.rb.orig /home/gitlab/gitlab/config/unicorn.rb - -# Create a Gitlab service -sudo cp /home/gitlab/gitlab/lib/support/init-gitlab /etc/init.d/gitlab -sudo chmod +x /etc/init.d/gitlab && sudo update-rc.d gitlab defaults - -## Gitlab service commands (unicorn and resque) -## restart doesn't restart resque, only start/stop effect it. -sudo -u gitlab service gitlab start -# sudo -u gitlab service gitlab restart -# sudo -u gitlab service gitlab stop - -# nginx Service commands -# sudo service nginx start -sudo service nginx restart -# sudo service nginx stop - -# Manual startup commands for troubleshooting when the service commands do not work -# sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D -# sudo su -l gitlab -c "cd gitlab && ./resque.sh" - -# Monitoring commands -# sudo tail -f /var/log/nginx/access.log; -# sudo tail -f /var/log/nginx/error.log; - -# Go to gitlab directory by default on next login. -echo 'cd /home/gitlab/gitlab' >> /home/ubuntu/.bashrc - -echo '' -echo '###########################################' -echo '# Log in instuctions #' -echo '###########################################' -echo '' -echo "Surf to this Gitlab installation in your browser:" -echo "http://`wget -qO- http://instance-data/latest/meta-data/public-hostname`/" -echo '' -echo 'and login with the following Email and Password:' -echo 'admin@local.host' -echo '5iveL!fe' \ No newline at end of file -- cgit v1.2.1 From 42032956bd4d51bd954762a6f1192f20d6375885 Mon Sep 17 00:00:00 2001 From: randx Date: Tue, 4 Sep 2012 20:50:00 +0300 Subject: Cleaner install section for nginx, unicorn --- doc/installation.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/installation.md b/doc/installation.md index 462fbc573bf..327fc192822 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -246,18 +246,18 @@ You can login via web using admin generated with setup: # Nginx && Unicorn -### Install Nginx - - sudo apt-get install nginx - -## Unicorn +## 1. Unicorn cd /home/gitlab/gitlab sudo -u gitlab cp config/unicorn.rb.orig config/unicorn.rb sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D -Add GitLab to nginx sites & change with your host specific settings +## 2. Nginx + + # Install first + sudo apt-get install nginx + # Add GitLab to nginx sites & change with your host specific settings sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/nginx/gitlab -P /etc/nginx/sites-available/ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab @@ -266,16 +266,15 @@ Add GitLab to nginx sites & change with your host specific settings # of the host serving GitLab. sudo vim /etc/nginx/sites-enabled/gitlab -Restart nginx: + # Restart nginx: /etc/init.d/nginx restart +## 3. Init script + Create init script in /etc/init.d/gitlab: sudo wget https://raw.github.com/gitlabhq/gitlab-recipes/master/init.d/gitlab -P /etc/init.d/ - -Adding permission: - sudo chmod +x /etc/init.d/gitlab GitLab autostart: -- cgit v1.2.1 From 36738897bf06937056285b0eeabef13928d4d704 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Tue, 4 Sep 2012 23:57:39 -0400 Subject: Add specs for Project#discover_default_branch --- spec/roles/repository_spec.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/roles/repository_spec.rb b/spec/roles/repository_spec.rb index 62aecc1341f..579425d75b4 100644 --- a/spec/roles/repository_spec.rb +++ b/spec/roles/repository_spec.rb @@ -19,4 +19,30 @@ describe Project, "Repository" do project.should_not be_empty_repo end end + + describe "#discover_default_branch" do + let(:master) { double(name: 'master') } + let(:stable) { double(name: 'stable') } + + it "returns 'master' when master exists" do + project.should_receive(:heads).and_return([stable, master]) + project.discover_default_branch.should == 'master' + end + + it "returns non-master when master exists but default branch is set to something else" do + project.default_branch = 'stable' + project.should_receive(:heads).and_return([stable, master]) + project.discover_default_branch.should == 'stable' + end + + it "returns a non-master branch when only one exists" do + project.should_receive(:heads).and_return([stable]) + project.discover_default_branch.should == 'stable' + end + + it "returns nil when no branch exists" do + project.should_receive(:heads).and_return([]) + project.discover_default_branch.should be_nil + end + end end -- cgit v1.2.1 From f06d98e907f71dc9b3a4a2da0db1c096b6c07024 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 01:00:07 -0400 Subject: Add SetDefaultBranchDefaultToNil migration default_branch now defaults to nil, not 'master'. It will be set after the first push by discover_default_branch. --- app/models/project.rb | 2 +- ...20120905043334_set_default_branch_default_to_nil.rb | 12 ++++++++++++ db/schema.rb | 18 +++++++++--------- 3 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20120905043334_set_default_branch_default_to_nil.rb diff --git a/app/models/project.rb b/app/models/project.rb index a7735a42137..fc18ad55528 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -187,7 +187,7 @@ end # private_flag :boolean(1) default(TRUE), not null # code :string(255) # owner_id :integer(4) -# default_branch :string(255) default("master"), not null +# default_branch :string(255) # issues_enabled :boolean(1) default(TRUE), not null # wall_enabled :boolean(1) default(TRUE), not null # merge_requests_enabled :boolean(1) default(TRUE), not null diff --git a/db/migrate/20120905043334_set_default_branch_default_to_nil.rb b/db/migrate/20120905043334_set_default_branch_default_to_nil.rb new file mode 100644 index 00000000000..f5956fe8751 --- /dev/null +++ b/db/migrate/20120905043334_set_default_branch_default_to_nil.rb @@ -0,0 +1,12 @@ +class SetDefaultBranchDefaultToNil < ActiveRecord::Migration + def up + # Set the default_branch to allow nil, and default it to nil + change_column_null(:projects, :default_branch, true) + change_column_default(:projects, :default_branch, nil) + end + + def down + change_column_null(:projects, :default_branch, false) + change_column_default(:projects, :default_branch, 'master') + end +end diff --git a/db/schema.rb b/db/schema.rb index 46461e44aad..00bb55234af 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20120729131232) do +ActiveRecord::Schema.define(:version => 20120905043334) do create_table "events", :force => true do |t| t.string "target_type" @@ -98,16 +98,16 @@ ActiveRecord::Schema.define(:version => 20120729131232) do t.string "name" t.string "path" t.text "description" - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false - t.boolean "private_flag", :default => true, :null => false + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.boolean "private_flag", :default => true, :null => false t.string "code" t.integer "owner_id" - t.string "default_branch", :default => "master", :null => false - t.boolean "issues_enabled", :default => true, :null => false - t.boolean "wall_enabled", :default => true, :null => false - t.boolean "merge_requests_enabled", :default => true, :null => false - t.boolean "wiki_enabled", :default => true, :null => false + t.string "default_branch" + t.boolean "issues_enabled", :default => true, :null => false + t.boolean "wall_enabled", :default => true, :null => false + t.boolean "merge_requests_enabled", :default => true, :null => false + t.boolean "wiki_enabled", :default => true, :null => false end create_table "protected_branches", :force => true do |t| -- cgit v1.2.1 From 443e23e61a10f34e9eccc3b6e91803a0996f5050 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 01:01:20 -0400 Subject: Add Repository#discover_default_branch and add it to PushObserver --- app/roles/push_observer.rb | 16 ++++++++++++---- app/roles/repository.rb | 24 +++++++++++++++++++++--- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/app/roles/push_observer.rb b/app/roles/push_observer.rb index 1067404d5af..947ed42345d 100644 --- a/app/roles/push_observer.rb +++ b/app/roles/push_observer.rb @@ -1,3 +1,6 @@ +# Includes methods for handling Git Push events +# +# Triggered by PostReceive job module PushObserver def observe_push(oldrev, newrev, ref, user) data = post_receive_data(oldrev, newrev, ref, user) @@ -84,11 +87,10 @@ module PushObserver data end - - # This method will be called after each post receive - # and only if user present in gitlab. - # All callbacks for post receive should be placed here + # This method will be called after each post receive and only if the provided + # user is present in GitLab. # + # All callbacks for post receive should be placed here. def trigger_post_receive(oldrev, newrev, ref, user) # Create push event self.observe_push(oldrev, newrev, ref, user) @@ -101,5 +103,11 @@ module PushObserver # Create satellite self.satellite.create unless self.satellite.exists? + + # Discover the default branch, but only if it hasn't already been set to + # something else + if default_branch.nil? + update_attributes(default_branch: discover_default_branch) + end end end diff --git a/app/roles/repository.rb b/app/roles/repository.rb index 5f6c35414e1..a77de4ad5f0 100644 --- a/app/roles/repository.rb +++ b/app/roles/repository.rb @@ -94,6 +94,24 @@ module Repository end.sort_by(&:name) end + # Discovers the default branch based on the repository's available branches + # + # - If no branches are present, returns nil + # - If one branch is present, returns its name + # - If two or more branches are present, returns the one that has a name + # matching root_ref (default_branch or 'master' if default_branch is nil) + def discover_default_branch + branches = heads.collect(&:name) + + if branches.length == 0 + nil + elsif branches.length == 1 + branches.first + else + branches.select { |v| v == root_ref }.first + end + end + def has_commits? !!commit end @@ -102,7 +120,7 @@ module Repository default_branch || "master" end - def root_ref? branch + def root_ref?(branch) root_ref == branch end @@ -111,7 +129,7 @@ module Repository # Already packed repo archives stored at # app_root/tmp/repositories/project_name/project_name-commit-id.tag.gz # - def archive_repo ref + def archive_repo(ref) ref = ref || self.root_ref commit = self.commit(ref) return nil unless commit @@ -138,6 +156,6 @@ module Repository end def http_url_to_repo - http_url = [Gitlab.config.url, "/", path, ".git"].join() + http_url = [Gitlab.config.url, "/", path, ".git"].join('') end end -- cgit v1.2.1 From 861a51488a44eac143ac4f44802fdf05fbd8f4c1 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 01:02:30 -0400 Subject: Add specs for a couple more Repository methods used by discover_default_branch --- spec/roles/repository_spec.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/spec/roles/repository_spec.rb b/spec/roles/repository_spec.rb index 579425d75b4..0fda57a3e27 100644 --- a/spec/roles/repository_spec.rb +++ b/spec/roles/repository_spec.rb @@ -45,4 +45,28 @@ describe Project, "Repository" do project.discover_default_branch.should be_nil end end + + describe "#root_ref" do + it "returns default_branch when set" do + project.default_branch = 'stable' + project.root_ref.should == 'stable' + end + + it "returns 'master' when default_branch is nil" do + project.default_branch = nil + project.root_ref.should == 'master' + end + end + + describe "#root_ref?" do + it "returns true when branch is root_ref" do + project.default_branch = 'stable' + project.root_ref?('stable').should be_true + end + + it "returns false when branch is not root_ref" do + project.default_branch = nil + project.root_ref?('stable').should be_false + end + end end -- cgit v1.2.1 From a9f275bc201e666b9f26768aa228aca8250d5a94 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 01:12:44 -0400 Subject: Fix load_refs in ApplicationController after default_branch change As a last resort it was calling a method that didn't exist. Woops! --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d53b23bb246..dae2e906256 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -124,7 +124,7 @@ class ApplicationController < ActionController::Base if params[:ref].blank? @branch = params[:branch].blank? ? nil : params[:branch] @tag = params[:tag].blank? ? nil : params[:tag] - @ref = @branch || @tag || @project.try(:default_branch) || Repository.default_ref + @ref = @branch || @tag || @project.try(:default_branch) || 'master' else @ref = params[:ref] end -- cgit v1.2.1 From 5e1c63d3f0f0729a1d9d9e19c64b2fef65cc30fb Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 01:13:41 -0400 Subject: Move load_refs out of ApplicationController and into CommitsController That was the only place it was used. --- app/controllers/application_controller.rb | 10 ---------- app/controllers/commits_controller.rb | 14 +++++++++++++- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index dae2e906256..7e53b8fe5ff 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -120,16 +120,6 @@ class ApplicationController < ActionController::Base end end - def load_refs - if params[:ref].blank? - @branch = params[:branch].blank? ? nil : params[:branch] - @tag = params[:tag].blank? ? nil : params[:tag] - @ref = @branch || @tag || @project.try(:default_branch) || 'master' - else - @ref = params[:ref] - end - end - def render_404 render file: File.join(Rails.root, "public", "404"), layout: false, status: "404" end diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index 717912d9e92..5e10a1b6ee7 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -59,7 +59,7 @@ class CommitsController < ApplicationController def patch @commit = project.commit(params[:id]) - + send_data( @commit.to_patch, type: "text/plain", @@ -67,4 +67,16 @@ class CommitsController < ApplicationController filename: (@commit.id.to_s + ".patch") ) end + + protected + + def load_refs + if params[:ref].blank? + @branch = params[:branch].blank? ? nil : params[:branch] + @tag = params[:tag].blank? ? nil : params[:tag] + @ref = @branch || @tag || @project.try(:default_branch) || 'master' + else + @ref = params[:ref] + end + end end -- cgit v1.2.1 From 982a4095c193a9256b76ffcc40526e726eac14d1 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 5 Sep 2012 08:56:59 +0300 Subject: Use tw style for some buttons. Improved deploy key UI --- .../stylesheets/gitlab_bootstrap/buttons.scss | 26 ++++++---------------- app/assets/stylesheets/main.scss | 7 ++++++ app/views/deploy_keys/_form.html.haml | 11 ++++++--- app/views/deploy_keys/index.html.haml | 14 ++++++++---- app/views/deploy_keys/new.html.haml | 2 +- app/views/deploy_keys/show.html.haml | 13 ++++++++--- app/views/keys/show.html.haml | 2 +- app/views/team_members/show.html.haml | 2 +- 8 files changed, 45 insertions(+), 32 deletions(-) diff --git a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss index c838f3b2368..380fc3e3711 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss @@ -1,8 +1,5 @@ .btn { - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5)); - background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5); + @include bg-gradient(#f7f7f7, #d5d5d5); border-color:#aaa; &:hover { @include bg-gray-gradient; @@ -12,10 +9,8 @@ &.primary { background:#2a79A3; + @include bg-gradient(#47A7b7, #2585b5); border-color: #2A79A3; - background-image: -webkit-linear-gradient(#47A7b7 7.6%, #2585b5); - background-image: -moz-linear-gradient(#47A7b7 7.6%, #2585b5); - background-image: -o-linear-gradient(#47A7b7 7.6%, #2585b5); color:#fff; text-shadow: 0 1px 1px #268; &:hover { @@ -30,16 +25,11 @@ } &.success { - border-color: #4A4; - background-image: -webkit-linear-gradient(#82D482 7.6%, #22B442); - background-image: -moz-linear-gradient(#82D482 7.6%, #22B442); - background-image: -o-linear-gradient(#82D482 7.6%, #22B442); - color: #fff; - text-shadow: 0 1px 1px #141; + @extend .btn-success; &:hover { - background: #6C6; - color: #fff; + @extend .btn-success; + background: #51a351; } &.disabled { @@ -62,10 +52,8 @@ padding-right:30px; } - &.danger, - &.btn-danger { - color:#fff; - background: #DA4E49; + &.danger { + @extend .btn-danger; border-color: #BD362F; &:hover { diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index be27d754dfa..abd1ddf9bb8 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -56,6 +56,13 @@ $hover: #fdf5d9; border-radius: $radius; } +@mixin bg-gradient($from, $to) { + background-image: -webkit-gradient(linear, 0 0, 0 100%, from($from), to($to)); + background-image: -webkit-linear-gradient($from, $to); + background-image: -moz-linear-gradient($from, $to); + background-image: -o-linear-gradient($from, $to); +} + @mixin bg-gray-gradient { background:#eee; background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); diff --git a/app/views/deploy_keys/_form.html.haml b/app/views/deploy_keys/_form.html.haml index 461f1f5d84a..6beba562a95 100644 --- a/app/views/deploy_keys/_form.html.haml +++ b/app/views/deploy_keys/_form.html.haml @@ -11,8 +11,13 @@ .input= f.text_field :title .clearfix = f.label :key - .input= f.text_area :key, class: "xlarge" + .input + = f.text_area :key, class: [:xxlarge, :thin_area] + %p.hint + Paste a machine public key here. Read more about how generate it + = link_to "here", help_ssh_path + .actions - = f.submit 'Save', class: "primary btn" - = link_to "Cancel", project_deploy_keys_path(@project), class: "btn" + = f.submit 'Save', class: "save-btn btn" + = link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn" diff --git a/app/views/deploy_keys/index.html.haml b/app/views/deploy_keys/index.html.haml index 0ee9d03b0f5..b9c654a1abe 100644 --- a/app/views/deploy_keys/index.html.haml +++ b/app/views/deploy_keys/index.html.haml @@ -1,11 +1,17 @@ = render "repositories/head" -- if can? current_user, :admin_project, @project - .alert-message.block-message - Deploy keys allow read-only access to repository. + +%p.slead + Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers. + + - if can? current_user, :admin_project, @project = link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do Add Deploy Key - - if @keys.any? %table + %thead + %tr + %th Keys + %th + %th - @keys.each do |key| = render(partial: 'show', locals: {key: key}) diff --git a/app/views/deploy_keys/new.html.haml b/app/views/deploy_keys/new.html.haml index a2f1010b454..e973cb7d305 100644 --- a/app/views/deploy_keys/new.html.haml +++ b/app/views/deploy_keys/new.html.haml @@ -1,6 +1,6 @@ = render "repositories/head" -%h3 New Deploy key +%h3.page_title New Deploy key %hr = render 'form' diff --git a/app/views/deploy_keys/show.html.haml b/app/views/deploy_keys/show.html.haml index b1e0dc5ce27..c94cf10dde0 100644 --- a/app/views/deploy_keys/show.html.haml +++ b/app/views/deploy_keys/show.html.haml @@ -1,7 +1,14 @@ = render "repositories/head" -%h3= @key.title +%h3.page_title + Deploy key: + = @key.title + %small + created at + = @key.created_at.stamp("Aug 21, 2011") +.back_link + = link_to project_deploy_keys_path(@project) do + ← To keys list %hr %pre= @key.key -.actions +.right = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key" - .clear diff --git a/app/views/keys/show.html.haml b/app/views/keys/show.html.haml index ffd52b96e5a..a8cba6c8f9e 100644 --- a/app/views/keys/show.html.haml +++ b/app/views/keys/show.html.haml @@ -10,5 +10,5 @@ %hr %pre= @key.key -.actions +.right = link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn danger delete-key" diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml index 89662309ba3..3b5c78a87c7 100644 --- a/app/views/team_members/show.html.haml +++ b/app/views/team_members/show.html.haml @@ -3,7 +3,7 @@ .team_member_show - if can? current_user, :admin_project, @project - = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn btn-danger" + = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn danger" .profile_avatar_holder = image_tag gravatar_icon(user.email, 60), class: "borders" %h3 -- cgit v1.2.1 From 761c17f282c51baa6bc8e3ec169bc09dfaa43b83 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Wed, 5 Sep 2012 09:20:02 +0300 Subject: Unused routes removed --- config/routes.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/routes.rb b/config/routes.rb index 51e65721880..ed5eac0ddd0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -50,10 +50,6 @@ Gitlab::Application.routes.draw do end end resources :team_members, :only => [:edit, :update, :destroy] - get 'mailer/preview_note' - get 'mailer/preview_user_new' - get 'mailer/preview_issue_new' - resources :hooks, :only => [:index, :create, :destroy] do get :test end -- cgit v1.2.1 From 9b9dd3f9bf62e8b116213012b766abcaef3e641e Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Wed, 5 Sep 2012 11:44:47 +0300 Subject: Unnecessary code removed --- lib/api/projects.rb | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/api/projects.rb b/lib/api/projects.rb index 45c25127813..d45d1d82d40 100644 --- a/lib/api/projects.rb +++ b/lib/api/projects.rb @@ -38,17 +38,15 @@ module Gitlab # Example Request # POST /projects post do - @project = Project.create_by_user({ - name: params[:name], - code: (params[:code] || params[:name]), - path: (params[:path] || params[:name]), - description: (params[:description] || Project.columns_hash["description"].default), - default_branch: (params[:default_branch] || Project.columns_hash["default_branch"].default), - issues_enabled: (params[:issues_enabled] || Project.columns_hash["issues_enabled"].default), - wall_enabled: (params[:wall_enabled] || Project.columns_hash["wall_enabled"].default), - merge_requests_enabled: (params[:merge_requests_enabled] || Project.columns_hash["merge_requests_enabled"].default), - wiki_enabled: (params[:wiki_enabled] || Project.columns_hash["wiki_enabled"].default) - }, current_user) + params[:code] ||= params[:name] + params[:path] ||= params[:name] + project_attrs = {} + params.each_pair do |k ,v| + if Project.attribute_names.include? k + project_attrs[k] = v + end + end + @project = Project.create_by_user(project_attrs, current_user) if @project.saved? present @project, with: Entities::Project else -- cgit v1.2.1 From 2680371785bfac1d0b76e5c4e53aa1074f743f84 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Wed, 5 Sep 2012 03:05:57 -0700 Subject: bump shoulda-matchers --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7ec37f59dfc..f350b3fcc0e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -323,7 +323,7 @@ GEM multi_json (~> 1.0) rubyzip settingslogic (2.0.8) - shoulda-matchers (1.1.0) + shoulda-matchers (1.3.0) activesupport (>= 3.0.0) simplecov (0.6.4) multi_json (~> 1.0) -- cgit v1.2.1 From 0b559cdece743269a7087c8206ab2cc587ec15f2 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Wed, 5 Sep 2012 03:14:24 -0700 Subject: add validations for boolean attributes --- app/models/project.rb | 2 ++ app/roles/issue_commonality.rb | 2 +- spec/models/issue_spec.rb | 1 + spec/models/milestone_spec.rb | 1 + spec/models/project_spec.rb | 8 ++++++-- 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/models/project.rb b/app/models/project.rb index fc18ad55528..4de836c7b48 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -104,6 +104,8 @@ class Project < ActiveRecord::Base length: { within: 1..255 } validates :owner, presence: true + validates :issues_enabled, :wall_enabled, :merge_requests_enabled, + :wiki_enabled, inclusion: { in: [true, false] } validate :check_limit validate :repo_name diff --git a/app/roles/issue_commonality.rb b/app/roles/issue_commonality.rb index a8fd679df81..ac972a70df2 100644 --- a/app/roles/issue_commonality.rb +++ b/app/roles/issue_commonality.rb @@ -16,7 +16,7 @@ module IssueCommonality validates :title, presence: true, length: { within: 0..255 } - + validates :closed, inclusion: { in: [true, false] } scope :opened, where(closed: false) scope :closed, where(closed: true) diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 69829a4d13d..ca6307e72b1 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -7,6 +7,7 @@ describe Issue do describe "Validation" do it { should ensure_length_of(:description).is_within(0..2000) } + it { should ensure_inclusion_of(:closed).in_array([true, false]) } end describe 'modules' do diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb index fa15fc8f560..f0f0f88303f 100644 --- a/spec/models/milestone_spec.rb +++ b/spec/models/milestone_spec.rb @@ -9,6 +9,7 @@ describe Milestone do describe "Validation" do it { should validate_presence_of(:title) } it { should validate_presence_of(:project_id) } + it { should ensure_inclusion_of(:closed).in_array([true, false]) } end let(:milestone) { Factory :milestone } diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 5add7ff88a9..756f69ded56 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -37,6 +37,10 @@ describe Project do # TODO: Formats it { should validate_presence_of(:owner) } + it { should ensure_inclusion_of(:issues_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) } it "should not allow new projects beyond user limits" do project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1)) @@ -239,7 +243,7 @@ describe Project do end end - describe :update_merge_requests do + describe :update_merge_requests do let(:project) { Factory :project } before do @@ -259,7 +263,7 @@ describe Project do @merge_request.closed.should be_true end - it "should update merge request commits with new one if pushed to source branch" do + it "should update merge request commits with new one if pushed to source branch" do @merge_request.last_commit.should == nil project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/master", @key.user) @merge_request.reload -- cgit v1.2.1 From 21bfd1e7fc91ce9a1aa34582381c1dec716607f8 Mon Sep 17 00:00:00 2001 From: randx Date: Wed, 5 Sep 2012 23:00:10 +0300 Subject: minor css improvements --- app/assets/stylesheets/gitlab_bootstrap/files.scss | 2 +- app/assets/stylesheets/sections/header.scss | 4 ++-- app/assets/stylesheets/sections/nav.scss | 24 +++++++++++----------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/assets/stylesheets/gitlab_bootstrap/files.scss b/app/assets/stylesheets/gitlab_bootstrap/files.scss index 83903c538da..d39fdb27cd4 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/files.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/files.scss @@ -3,7 +3,7 @@ * */ .file_holder { - border:1px solid #CCC; + border:1px solid #BBB; margin-bottom:1em; @include solid_shade; diff --git a/app/assets/stylesheets/sections/header.scss b/app/assets/stylesheets/sections/header.scss index d0fb662e69e..8328a5ab9a7 100644 --- a/app/assets/stylesheets/sections/header.scss +++ b/app/assets/stylesheets/sections/header.scss @@ -22,7 +22,7 @@ header { * */ .app_logo { - width:230px; + width:200px; float:left; position:relative; top:-5px; @@ -31,7 +31,7 @@ header { h1 { padding-top: 5px; - width:102px; + width:90px; background: url('logo_dark.png') no-repeat 0px -3px; float:left; margin-left:5px; diff --git a/app/assets/stylesheets/sections/nav.scss b/app/assets/stylesheets/sections/nav.scss index 097e819732d..6f6a0e8e29f 100644 --- a/app/assets/stylesheets/sections/nav.scss +++ b/app/assets/stylesheets/sections/nav.scss @@ -2,7 +2,7 @@ * Main Menu of Application * */ -ul.main_menu { +ul.main_menu { border-radius: 4px; margin: auto; margin:30px 0; @@ -12,7 +12,7 @@ ul.main_menu { position:relative; overflow:hidden; @include shade; - .count { + .count { position: relative; top: -1px; display: inline-block; @@ -29,12 +29,12 @@ ul.main_menu { border-radius: 8px; -moz-border-radius: 8px; } - .label { + .label { background:$hover; text-shadow:none; color:$style_color; } - li { + li { list-style-type: none; margin: 0; display: table-cell; @@ -43,7 +43,7 @@ ul.main_menu { border-left: 1px solid #EEE; border-bottom:2px solid #CFCFCF; - &:first-child{ + &:first-child{ -webkit-border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; @@ -53,31 +53,31 @@ ul.main_menu { border-left: 0; } - &.current { + &.current { background-color:#D5D5D5; - border-bottom: 2px solid $style_color; + border-bottom: 1px solid #AAA; border-right: 1px solid #BBB; border-left: 1px solid #BBB; border-radius: 0 0 1px 1px; - &:first-child{ + &:first-child{ border-bottom:none; border-left:none; } } - &.home { - a { + &.home { + a { background: url(home_icon.PNG) no-repeat center center; text-indent:-9999px; min-width:20px; - img { + img { position:relative; top:4px; } } } } - a { + a { display: block; text-align: center; font-weight:bold; -- cgit v1.2.1 From d480a478c1cb1246e1dad80cc438c5556a3eb33f Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 16:04:41 -0400 Subject: Add emoji image files --- app/assets/images/emoji/+1.png | Bin 0 -> 5135 bytes app/assets/images/emoji/-1.png | Bin 0 -> 5070 bytes app/assets/images/emoji/100.png | Bin 0 -> 3302 bytes app/assets/images/emoji/109.png | Bin 0 -> 3698 bytes app/assets/images/emoji/1234.png | Bin 0 -> 4751 bytes app/assets/images/emoji/8ball.png | Bin 0 -> 4141 bytes app/assets/images/emoji/a.png | Bin 0 -> 3154 bytes app/assets/images/emoji/ab.png | Bin 0 -> 3859 bytes app/assets/images/emoji/abc.png | Bin 0 -> 4247 bytes app/assets/images/emoji/abcd.png | Bin 0 -> 4471 bytes app/assets/images/emoji/accept.png | Bin 0 -> 4729 bytes app/assets/images/emoji/aerial_tramway.png | Bin 0 -> 3489 bytes app/assets/images/emoji/airplane.png | Bin 0 -> 4740 bytes app/assets/images/emoji/alarm_clock.png | Bin 0 -> 7062 bytes app/assets/images/emoji/alien.png | Bin 0 -> 5457 bytes app/assets/images/emoji/ambulance.png | Bin 0 -> 3708 bytes app/assets/images/emoji/anchor.png | Bin 0 -> 4479 bytes app/assets/images/emoji/angel.png | Bin 0 -> 6672 bytes app/assets/images/emoji/anger.png | Bin 0 -> 3079 bytes app/assets/images/emoji/angry.png | Bin 0 -> 5037 bytes app/assets/images/emoji/ant.png | Bin 0 -> 2851 bytes app/assets/images/emoji/apple.png | Bin 0 -> 5630 bytes app/assets/images/emoji/aquarius.png | Bin 0 -> 5096 bytes app/assets/images/emoji/aries.png | Bin 0 -> 4345 bytes app/assets/images/emoji/arrow_backward.png | Bin 0 -> 3180 bytes app/assets/images/emoji/arrow_double_down.png | Bin 0 -> 3179 bytes app/assets/images/emoji/arrow_double_up.png | Bin 0 -> 3613 bytes app/assets/images/emoji/arrow_down.png | Bin 0 -> 3006 bytes app/assets/images/emoji/arrow_down_small.png | Bin 0 -> 2934 bytes app/assets/images/emoji/arrow_forward.png | Bin 0 -> 3201 bytes app/assets/images/emoji/arrow_heading_down.png | Bin 0 -> 3521 bytes app/assets/images/emoji/arrow_heading_up.png | Bin 0 -> 3520 bytes app/assets/images/emoji/arrow_left.png | Bin 0 -> 3041 bytes app/assets/images/emoji/arrow_lower_left.png | Bin 0 -> 3342 bytes app/assets/images/emoji/arrow_lower_right.png | Bin 0 -> 3334 bytes app/assets/images/emoji/arrow_right.png | Bin 0 -> 3022 bytes app/assets/images/emoji/arrow_right_hook.png | Bin 0 -> 3712 bytes app/assets/images/emoji/arrow_up.png | Bin 0 -> 3073 bytes app/assets/images/emoji/arrow_up_down.png | Bin 0 -> 3544 bytes app/assets/images/emoji/arrow_up_small.png | Bin 0 -> 3198 bytes app/assets/images/emoji/arrow_upper_left.png | Bin 0 -> 3228 bytes app/assets/images/emoji/arrow_upper_right.png | Bin 0 -> 3235 bytes app/assets/images/emoji/arrows_clockwise.png | Bin 0 -> 1399 bytes app/assets/images/emoji/arrows_counterclockwise.png | Bin 0 -> 4823 bytes app/assets/images/emoji/art.png | Bin 0 -> 6744 bytes app/assets/images/emoji/articulated_lorry.png | Bin 0 -> 2938 bytes app/assets/images/emoji/astonished.png | Bin 0 -> 6043 bytes app/assets/images/emoji/atm.png | Bin 0 -> 4072 bytes app/assets/images/emoji/b.png | Bin 0 -> 3025 bytes app/assets/images/emoji/baby.png | Bin 0 -> 5921 bytes app/assets/images/emoji/baby_bottle.png | Bin 0 -> 4461 bytes app/assets/images/emoji/baby_chick.png | Bin 0 -> 3961 bytes app/assets/images/emoji/baby_symbol.png | Bin 0 -> 2967 bytes app/assets/images/emoji/baggage_claim.png | Bin 0 -> 3502 bytes app/assets/images/emoji/balloon.png | Bin 0 -> 2300 bytes app/assets/images/emoji/ballot_box_with_check.png | Bin 0 -> 1829 bytes app/assets/images/emoji/bamboo.png | Bin 0 -> 4672 bytes app/assets/images/emoji/banana.png | Bin 0 -> 3915 bytes app/assets/images/emoji/bangbang.png | Bin 0 -> 1387 bytes app/assets/images/emoji/bank.png | Bin 0 -> 5583 bytes app/assets/images/emoji/bar_chart.png | Bin 0 -> 2460 bytes app/assets/images/emoji/barber.png | Bin 0 -> 4252 bytes app/assets/images/emoji/baseball.png | Bin 0 -> 6032 bytes app/assets/images/emoji/basketball.png | Bin 0 -> 6386 bytes app/assets/images/emoji/bath.png | Bin 0 -> 3210 bytes app/assets/images/emoji/bathtub.png | Bin 0 -> 2784 bytes app/assets/images/emoji/battery.png | Bin 0 -> 3812 bytes app/assets/images/emoji/bear.png | Bin 0 -> 5561 bytes app/assets/images/emoji/beer.png | Bin 0 -> 6097 bytes app/assets/images/emoji/beers.png | Bin 0 -> 6591 bytes app/assets/images/emoji/beetle.png | Bin 0 -> 5255 bytes app/assets/images/emoji/beginner.png | Bin 0 -> 2761 bytes app/assets/images/emoji/bell.png | Bin 0 -> 4859 bytes app/assets/images/emoji/bento.png | Bin 0 -> 5732 bytes app/assets/images/emoji/bicyclist.png | Bin 0 -> 6484 bytes app/assets/images/emoji/bike.png | Bin 0 -> 4722 bytes app/assets/images/emoji/bikini.png | Bin 0 -> 3890 bytes app/assets/images/emoji/bird.png | Bin 0 -> 4878 bytes app/assets/images/emoji/birthday.png | Bin 0 -> 5404 bytes app/assets/images/emoji/black_circle.png | Bin 0 -> 2369 bytes app/assets/images/emoji/black_joker.png | Bin 0 -> 3877 bytes app/assets/images/emoji/black_nib.png | Bin 0 -> 2352 bytes app/assets/images/emoji/black_square.png | Bin 0 -> 1332 bytes app/assets/images/emoji/blossom.png | Bin 0 -> 4232 bytes app/assets/images/emoji/blowfish.png | Bin 0 -> 3751 bytes app/assets/images/emoji/blue_book.png | Bin 0 -> 5092 bytes app/assets/images/emoji/blue_car.png | Bin 0 -> 4081 bytes app/assets/images/emoji/blue_heart.png | Bin 0 -> 4094 bytes app/assets/images/emoji/blush.png | Bin 0 -> 5188 bytes app/assets/images/emoji/boar.png | Bin 0 -> 4840 bytes app/assets/images/emoji/boat.png | Bin 0 -> 3833 bytes app/assets/images/emoji/bomb.png | Bin 0 -> 5208 bytes app/assets/images/emoji/book.png | Bin 0 -> 6050 bytes app/assets/images/emoji/bookmark.png | Bin 0 -> 4696 bytes app/assets/images/emoji/bookmark_tabs.png | Bin 0 -> 3162 bytes app/assets/images/emoji/books.png | Bin 0 -> 6539 bytes app/assets/images/emoji/boot.png | Bin 0 -> 3327 bytes app/assets/images/emoji/bouquet.png | Bin 0 -> 6915 bytes app/assets/images/emoji/bow.png | Bin 0 -> 5143 bytes app/assets/images/emoji/bowling.png | Bin 0 -> 4184 bytes app/assets/images/emoji/bowtie.png | Bin 0 -> 6478 bytes app/assets/images/emoji/boy.png | Bin 0 -> 5946 bytes app/assets/images/emoji/bread.png | Bin 0 -> 6214 bytes app/assets/images/emoji/bride_with_veil.png | Bin 0 -> 8515 bytes app/assets/images/emoji/bridge_at_night.png | Bin 0 -> 5137 bytes app/assets/images/emoji/briefcase.png | Bin 0 -> 2698 bytes app/assets/images/emoji/broken_heart.png | Bin 0 -> 4118 bytes app/assets/images/emoji/bug.png | Bin 0 -> 5945 bytes app/assets/images/emoji/bulb.png | Bin 0 -> 4490 bytes app/assets/images/emoji/bullettrain_front.png | Bin 0 -> 4992 bytes app/assets/images/emoji/bullettrain_side.png | Bin 0 -> 3842 bytes app/assets/images/emoji/bus.png | Bin 0 -> 4065 bytes app/assets/images/emoji/busstop.png | Bin 0 -> 1676 bytes app/assets/images/emoji/bust_in_silhouette.png | Bin 0 -> 2007 bytes app/assets/images/emoji/busts_in_silhouette.png | Bin 0 -> 3021 bytes app/assets/images/emoji/cactus.png | Bin 0 -> 4509 bytes app/assets/images/emoji/cake.png | Bin 0 -> 6129 bytes app/assets/images/emoji/calendar.png | Bin 0 -> 2920 bytes app/assets/images/emoji/calling.png | Bin 0 -> 4037 bytes app/assets/images/emoji/camel.png | Bin 0 -> 4485 bytes app/assets/images/emoji/camera.png | Bin 0 -> 4661 bytes app/assets/images/emoji/cancer.png | Bin 0 -> 5384 bytes app/assets/images/emoji/candy.png | Bin 0 -> 4502 bytes app/assets/images/emoji/capital_abcd.png | Bin 0 -> 5136 bytes app/assets/images/emoji/capricorn.png | Bin 0 -> 4670 bytes app/assets/images/emoji/car.png | Bin 0 -> 4278 bytes app/assets/images/emoji/card_index.png | Bin 0 -> 3749 bytes app/assets/images/emoji/carousel_horse.png | Bin 0 -> 5893 bytes app/assets/images/emoji/cat.png | Bin 0 -> 5987 bytes app/assets/images/emoji/cat2.png | Bin 0 -> 5723 bytes app/assets/images/emoji/cd.png | Bin 0 -> 6718 bytes app/assets/images/emoji/chart.png | Bin 0 -> 4331 bytes app/assets/images/emoji/chart_with_downwards_trend.png | Bin 0 -> 2910 bytes app/assets/images/emoji/chart_with_upwards_trend.png | Bin 0 -> 2939 bytes app/assets/images/emoji/checkered_flag.png | Bin 0 -> 1675 bytes app/assets/images/emoji/cherries.png | Bin 0 -> 5604 bytes app/assets/images/emoji/cherry_blossom.png | Bin 0 -> 7174 bytes app/assets/images/emoji/chestnut.png | Bin 0 -> 5875 bytes app/assets/images/emoji/chicken.png | Bin 0 -> 3988 bytes app/assets/images/emoji/children_crossing.png | Bin 0 -> 3460 bytes app/assets/images/emoji/chocolate_bar.png | Bin 0 -> 5249 bytes app/assets/images/emoji/christmas_tree.png | Bin 0 -> 4721 bytes app/assets/images/emoji/church.png | Bin 0 -> 4653 bytes app/assets/images/emoji/cinema.png | Bin 0 -> 3573 bytes app/assets/images/emoji/circus_tent.png | Bin 0 -> 4683 bytes app/assets/images/emoji/city_sunrise.png | Bin 0 -> 4312 bytes app/assets/images/emoji/city_sunset.png | Bin 0 -> 3841 bytes app/assets/images/emoji/cl.png | Bin 0 -> 3493 bytes app/assets/images/emoji/clap.png | Bin 0 -> 7110 bytes app/assets/images/emoji/clapper.png | Bin 0 -> 4192 bytes app/assets/images/emoji/clipboard.png | Bin 0 -> 4663 bytes app/assets/images/emoji/clock1.png | Bin 0 -> 2590 bytes app/assets/images/emoji/clock10.png | Bin 0 -> 2590 bytes app/assets/images/emoji/clock1030.png | Bin 0 -> 2864 bytes app/assets/images/emoji/clock11.png | Bin 0 -> 2587 bytes app/assets/images/emoji/clock1130.png | Bin 0 -> 2854 bytes app/assets/images/emoji/clock12.png | Bin 0 -> 2504 bytes app/assets/images/emoji/clock1230.png | Bin 0 -> 2797 bytes app/assets/images/emoji/clock130.png | Bin 0 -> 2842 bytes app/assets/images/emoji/clock2.png | Bin 0 -> 2595 bytes app/assets/images/emoji/clock230.png | Bin 0 -> 2853 bytes app/assets/images/emoji/clock3.png | Bin 0 -> 2492 bytes app/assets/images/emoji/clock330.png | Bin 0 -> 2739 bytes app/assets/images/emoji/clock4.png | Bin 0 -> 2619 bytes app/assets/images/emoji/clock430.png | Bin 0 -> 2847 bytes app/assets/images/emoji/clock5.png | Bin 0 -> 2624 bytes app/assets/images/emoji/clock530.png | Bin 0 -> 2832 bytes app/assets/images/emoji/clock6.png | Bin 0 -> 2577 bytes app/assets/images/emoji/clock630.png | Bin 0 -> 2730 bytes app/assets/images/emoji/clock7.png | Bin 0 -> 2615 bytes app/assets/images/emoji/clock730.png | Bin 0 -> 2820 bytes app/assets/images/emoji/clock8.png | Bin 0 -> 2603 bytes app/assets/images/emoji/clock830.png | Bin 0 -> 2847 bytes app/assets/images/emoji/clock9.png | Bin 0 -> 2486 bytes app/assets/images/emoji/clock930.png | Bin 0 -> 2746 bytes app/assets/images/emoji/closed_book.png | Bin 0 -> 4847 bytes app/assets/images/emoji/closed_lock_with_key.png | Bin 0 -> 5701 bytes app/assets/images/emoji/closed_umbrella.png | Bin 0 -> 3868 bytes app/assets/images/emoji/cloud.png | Bin 0 -> 3860 bytes app/assets/images/emoji/clubs.png | Bin 0 -> 1685 bytes app/assets/images/emoji/cn.png | Bin 0 -> 3634 bytes app/assets/images/emoji/cocktail.png | Bin 0 -> 2949 bytes app/assets/images/emoji/coffee.png | Bin 0 -> 4306 bytes app/assets/images/emoji/cold_sweat.png | Bin 0 -> 5972 bytes app/assets/images/emoji/collision.png | Bin 0 -> 3781 bytes app/assets/images/emoji/computer.png | Bin 0 -> 1705 bytes app/assets/images/emoji/confetti_ball.png | Bin 0 -> 5521 bytes app/assets/images/emoji/confounded.png | Bin 0 -> 5857 bytes app/assets/images/emoji/congratulations.png | Bin 0 -> 4883 bytes app/assets/images/emoji/construction.png | Bin 0 -> 3700 bytes app/assets/images/emoji/construction_worker.png | Bin 0 -> 6193 bytes app/assets/images/emoji/convenience_store.png | Bin 0 -> 4073 bytes app/assets/images/emoji/cookie.png | Bin 0 -> 8149 bytes app/assets/images/emoji/cool.png | Bin 0 -> 4182 bytes app/assets/images/emoji/cop.png | Bin 0 -> 7141 bytes app/assets/images/emoji/copyright.png | Bin 0 -> 1579 bytes app/assets/images/emoji/corn.png | Bin 0 -> 6694 bytes app/assets/images/emoji/couple.png | Bin 0 -> 7615 bytes app/assets/images/emoji/couple_with_heart.png | Bin 0 -> 7370 bytes app/assets/images/emoji/couplekiss.png | Bin 0 -> 7219 bytes app/assets/images/emoji/cow.png | Bin 0 -> 5745 bytes app/assets/images/emoji/cow2.png | Bin 0 -> 5303 bytes app/assets/images/emoji/credit_card.png | Bin 0 -> 2648 bytes app/assets/images/emoji/crocodile.png | Bin 0 -> 6125 bytes app/assets/images/emoji/crossed_flags.png | Bin 0 -> 4015 bytes app/assets/images/emoji/crown.png | Bin 0 -> 5655 bytes app/assets/images/emoji/cry.png | Bin 0 -> 5699 bytes app/assets/images/emoji/crying_cat_face.png | Bin 0 -> 6682 bytes app/assets/images/emoji/crystal_ball.png | Bin 0 -> 6236 bytes app/assets/images/emoji/cupid.png | Bin 0 -> 5413 bytes app/assets/images/emoji/curly_loop.png | Bin 0 -> 1264 bytes app/assets/images/emoji/currency_exchange.png | Bin 0 -> 1959 bytes app/assets/images/emoji/curry.png | Bin 0 -> 5336 bytes app/assets/images/emoji/custard.png | Bin 0 -> 5810 bytes app/assets/images/emoji/customs.png | Bin 0 -> 3899 bytes app/assets/images/emoji/cyclone.png | Bin 0 -> 4890 bytes app/assets/images/emoji/dancer.png | Bin 0 -> 3737 bytes app/assets/images/emoji/dancers.png | Bin 0 -> 7918 bytes app/assets/images/emoji/dango.png | Bin 0 -> 4449 bytes app/assets/images/emoji/dart.png | Bin 0 -> 5462 bytes app/assets/images/emoji/dash.png | Bin 0 -> 5448 bytes app/assets/images/emoji/date.png | Bin 0 -> 2977 bytes app/assets/images/emoji/de.png | Bin 0 -> 2640 bytes app/assets/images/emoji/deciduous_tree.png | Bin 0 -> 7374 bytes app/assets/images/emoji/department_store.png | Bin 0 -> 5159 bytes .../images/emoji/diamond_shape_with_a_dot_inside.png | Bin 0 -> 5698 bytes app/assets/images/emoji/diamonds.png | Bin 0 -> 2785 bytes app/assets/images/emoji/disappointed.png | Bin 0 -> 4764 bytes app/assets/images/emoji/dizzy.png | Bin 0 -> 3044 bytes app/assets/images/emoji/dizzy_face.png | Bin 0 -> 6278 bytes app/assets/images/emoji/do_not_litter.png | Bin 0 -> 5277 bytes app/assets/images/emoji/dog.png | Bin 0 -> 5945 bytes app/assets/images/emoji/dog2.png | Bin 0 -> 5931 bytes app/assets/images/emoji/dollar.png | Bin 0 -> 4622 bytes app/assets/images/emoji/dolls.png | Bin 0 -> 7138 bytes app/assets/images/emoji/dolphin.png | Bin 0 -> 4343 bytes app/assets/images/emoji/door.png | Bin 0 -> 3310 bytes app/assets/images/emoji/doughnut.png | Bin 0 -> 5209 bytes app/assets/images/emoji/dragon.png | Bin 0 -> 7828 bytes app/assets/images/emoji/dragon_face.png | Bin 0 -> 6737 bytes app/assets/images/emoji/dress.png | Bin 0 -> 3631 bytes app/assets/images/emoji/dromedary_camel.png | Bin 0 -> 5139 bytes app/assets/images/emoji/droplet.png | Bin 0 -> 3278 bytes app/assets/images/emoji/dvd.png | Bin 0 -> 6993 bytes app/assets/images/emoji/e-mail.png | Bin 0 -> 2128 bytes app/assets/images/emoji/ear.png | Bin 0 -> 4335 bytes app/assets/images/emoji/ear_of_rice.png | Bin 0 -> 4758 bytes app/assets/images/emoji/earth_africa.png | Bin 0 -> 7164 bytes app/assets/images/emoji/earth_americas.png | Bin 0 -> 7039 bytes app/assets/images/emoji/earth_asia.png | Bin 0 -> 7303 bytes app/assets/images/emoji/egg.png | Bin 0 -> 5211 bytes app/assets/images/emoji/eggplant.png | Bin 0 -> 4672 bytes app/assets/images/emoji/eight.png | Bin 0 -> 3844 bytes app/assets/images/emoji/eight_pointed_black_star.png | Bin 0 -> 3289 bytes app/assets/images/emoji/eight_spoked_asterisk.png | Bin 0 -> 4012 bytes app/assets/images/emoji/electric_plug.png | Bin 0 -> 2819 bytes app/assets/images/emoji/elephant.png | Bin 0 -> 5086 bytes app/assets/images/emoji/email.png | Bin 0 -> 2697 bytes app/assets/images/emoji/end.png | Bin 0 -> 1475 bytes app/assets/images/emoji/envelope.png | Bin 0 -> 1655 bytes app/assets/images/emoji/es.png | Bin 0 -> 4302 bytes app/assets/images/emoji/euro.png | Bin 0 -> 3942 bytes app/assets/images/emoji/european_castle.png | Bin 0 -> 5427 bytes app/assets/images/emoji/european_post_office.png | Bin 0 -> 4816 bytes app/assets/images/emoji/evergreen_tree.png | Bin 0 -> 4924 bytes app/assets/images/emoji/exclamation.png | Bin 0 -> 1175 bytes app/assets/images/emoji/eyeglasses.png | Bin 0 -> 4929 bytes app/assets/images/emoji/eyes.png | Bin 0 -> 4398 bytes app/assets/images/emoji/facepunch.png | Bin 0 -> 4873 bytes app/assets/images/emoji/factory.png | Bin 0 -> 5558 bytes app/assets/images/emoji/fallen_leaf.png | Bin 0 -> 4890 bytes app/assets/images/emoji/family.png | Bin 0 -> 7211 bytes app/assets/images/emoji/fast_forward.png | Bin 0 -> 3105 bytes app/assets/images/emoji/fax.png | Bin 0 -> 4650 bytes app/assets/images/emoji/fearful.png | Bin 0 -> 5600 bytes app/assets/images/emoji/feelsgood.png | Bin 0 -> 1150 bytes app/assets/images/emoji/feet.png | Bin 0 -> 1529 bytes app/assets/images/emoji/ferris_wheel.png | Bin 0 -> 6213 bytes app/assets/images/emoji/file_folder.png | Bin 0 -> 4013 bytes app/assets/images/emoji/finnadie.png | Bin 0 -> 1186 bytes app/assets/images/emoji/fire.png | Bin 0 -> 3886 bytes app/assets/images/emoji/fire_engine.png | Bin 0 -> 4862 bytes app/assets/images/emoji/fireworks.png | Bin 0 -> 6269 bytes app/assets/images/emoji/first_quarter_moon.png | Bin 0 -> 5967 bytes app/assets/images/emoji/first_quarter_moon_with_face.png | Bin 0 -> 4280 bytes app/assets/images/emoji/fish.png | Bin 0 -> 4721 bytes app/assets/images/emoji/fish_cake.png | Bin 0 -> 5818 bytes app/assets/images/emoji/fishing_pole_and_fish.png | Bin 0 -> 4470 bytes app/assets/images/emoji/fist.png | Bin 0 -> 5880 bytes app/assets/images/emoji/five.png | Bin 0 -> 3593 bytes app/assets/images/emoji/flags.png | Bin 0 -> 6124 bytes app/assets/images/emoji/flashlight.png | Bin 0 -> 5024 bytes app/assets/images/emoji/floppy_disk.png | Bin 0 -> 3215 bytes app/assets/images/emoji/flower_playing_cards.png | Bin 0 -> 3434 bytes app/assets/images/emoji/flushed.png | Bin 0 -> 5845 bytes app/assets/images/emoji/foggy.png | Bin 0 -> 4623 bytes app/assets/images/emoji/football.png | Bin 0 -> 6712 bytes app/assets/images/emoji/fork_and_knife.png | Bin 0 -> 3608 bytes app/assets/images/emoji/fountain.png | Bin 0 -> 5087 bytes app/assets/images/emoji/four.png | Bin 0 -> 3176 bytes app/assets/images/emoji/four_leaf_clover.png | Bin 0 -> 5995 bytes app/assets/images/emoji/fr.png | Bin 0 -> 3398 bytes app/assets/images/emoji/free.png | Bin 0 -> 3605 bytes app/assets/images/emoji/fried_shrimp.png | Bin 0 -> 7550 bytes app/assets/images/emoji/fries.png | Bin 0 -> 6405 bytes app/assets/images/emoji/frog.png | Bin 0 -> 4823 bytes app/assets/images/emoji/fuelpump.png | Bin 0 -> 4296 bytes app/assets/images/emoji/full_moon.png | Bin 0 -> 6458 bytes app/assets/images/emoji/full_moon_with_face.png | Bin 0 -> 7224 bytes app/assets/images/emoji/game_die.png | Bin 0 -> 2957 bytes app/assets/images/emoji/gb.png | Bin 0 -> 5894 bytes app/assets/images/emoji/gem.png | Bin 0 -> 4855 bytes app/assets/images/emoji/gemini.png | Bin 0 -> 4296 bytes app/assets/images/emoji/ghost.png | Bin 0 -> 4513 bytes app/assets/images/emoji/gift.png | Bin 0 -> 6712 bytes app/assets/images/emoji/gift_heart.png | Bin 0 -> 6013 bytes app/assets/images/emoji/girl.png | Bin 0 -> 6314 bytes app/assets/images/emoji/globe_with_meridians.png | Bin 0 -> 5837 bytes app/assets/images/emoji/goat.png | Bin 0 -> 4889 bytes app/assets/images/emoji/goberserk.png | Bin 0 -> 1334 bytes app/assets/images/emoji/godmode.png | Bin 0 -> 1042 bytes app/assets/images/emoji/golf.png | Bin 0 -> 3548 bytes app/assets/images/emoji/grapes.png | Bin 0 -> 5423 bytes app/assets/images/emoji/green_apple.png | Bin 0 -> 6205 bytes app/assets/images/emoji/green_book.png | Bin 0 -> 5090 bytes app/assets/images/emoji/green_heart.png | Bin 0 -> 4432 bytes app/assets/images/emoji/grey_exclamation.png | Bin 0 -> 1142 bytes app/assets/images/emoji/grey_question.png | Bin 0 -> 1057 bytes app/assets/images/emoji/grin.png | Bin 0 -> 5721 bytes app/assets/images/emoji/guardsman.png | Bin 0 -> 3587 bytes app/assets/images/emoji/guitar.png | Bin 0 -> 4382 bytes app/assets/images/emoji/gun.png | Bin 0 -> 3161 bytes app/assets/images/emoji/haircut.png | Bin 0 -> 7100 bytes app/assets/images/emoji/hamburger.png | Bin 0 -> 5706 bytes app/assets/images/emoji/hammer.png | Bin 0 -> 3670 bytes app/assets/images/emoji/hamster.png | Bin 0 -> 7221 bytes app/assets/images/emoji/hand.png | Bin 0 -> 4161 bytes app/assets/images/emoji/handbag.png | Bin 0 -> 5449 bytes app/assets/images/emoji/hankey.png | Bin 0 -> 4754 bytes app/assets/images/emoji/hash.png | Bin 0 -> 3742 bytes app/assets/images/emoji/hatched_chick.png | Bin 0 -> 5646 bytes app/assets/images/emoji/hatching_chick.png | Bin 0 -> 5928 bytes app/assets/images/emoji/headphones.png | Bin 0 -> 1910 bytes app/assets/images/emoji/hear_no_evil.png | Bin 0 -> 6550 bytes app/assets/images/emoji/heart.png | Bin 0 -> 3302 bytes app/assets/images/emoji/heart_decoration.png | Bin 0 -> 3507 bytes app/assets/images/emoji/heart_eyes.png | Bin 0 -> 5758 bytes app/assets/images/emoji/heart_eyes_cat.png | Bin 0 -> 6176 bytes app/assets/images/emoji/heartbeat.png | Bin 0 -> 4052 bytes app/assets/images/emoji/heartpulse.png | Bin 0 -> 6269 bytes app/assets/images/emoji/hearts.png | Bin 0 -> 2925 bytes app/assets/images/emoji/heavy_check_mark.png | Bin 0 -> 1103 bytes app/assets/images/emoji/heavy_division_sign.png | Bin 0 -> 340 bytes app/assets/images/emoji/heavy_dollar_sign.png | Bin 0 -> 1416 bytes app/assets/images/emoji/heavy_exclamation_mark.png | Bin 0 -> 1315 bytes app/assets/images/emoji/heavy_minus_sign.png | Bin 0 -> 197 bytes app/assets/images/emoji/heavy_multiplication_x.png | Bin 0 -> 591 bytes app/assets/images/emoji/heavy_plus_sign.png | Bin 0 -> 315 bytes app/assets/images/emoji/helicopter.png | Bin 0 -> 4100 bytes app/assets/images/emoji/herb.png | Bin 0 -> 5889 bytes app/assets/images/emoji/hibiscus.png | Bin 0 -> 8322 bytes app/assets/images/emoji/high_brightness.png | Bin 0 -> 4060 bytes app/assets/images/emoji/high_heel.png | Bin 0 -> 4557 bytes app/assets/images/emoji/hocho.png | Bin 0 -> 2506 bytes app/assets/images/emoji/honey_pot.png | Bin 0 -> 5830 bytes app/assets/images/emoji/honeybee.png | Bin 0 -> 5851 bytes app/assets/images/emoji/horse.png | Bin 0 -> 4582 bytes app/assets/images/emoji/horse_racing.png | Bin 0 -> 5905 bytes app/assets/images/emoji/hospital.png | Bin 0 -> 4887 bytes app/assets/images/emoji/hotel.png | Bin 0 -> 5123 bytes app/assets/images/emoji/hotsprings.png | Bin 0 -> 3538 bytes app/assets/images/emoji/hourglass.png | Bin 0 -> 4492 bytes app/assets/images/emoji/house.png | Bin 0 -> 3510 bytes app/assets/images/emoji/hurtrealbad.png | Bin 0 -> 1456 bytes app/assets/images/emoji/ice_cream.png | Bin 0 -> 5469 bytes app/assets/images/emoji/icecream.png | Bin 0 -> 4603 bytes app/assets/images/emoji/id.png | Bin 0 -> 3905 bytes app/assets/images/emoji/ideograph_advantage.png | Bin 0 -> 3095 bytes app/assets/images/emoji/imp.png | Bin 0 -> 6631 bytes app/assets/images/emoji/inbox_tray.png | Bin 0 -> 3700 bytes app/assets/images/emoji/incoming_envelope.png | Bin 0 -> 2206 bytes app/assets/images/emoji/information_desk_person.png | Bin 0 -> 6605 bytes app/assets/images/emoji/information_source.png | Bin 0 -> 3670 bytes app/assets/images/emoji/innocent.png | Bin 0 -> 7000 bytes app/assets/images/emoji/interrobang.png | Bin 0 -> 2875 bytes app/assets/images/emoji/iphone.png | Bin 0 -> 3499 bytes app/assets/images/emoji/it.png | Bin 0 -> 3495 bytes app/assets/images/emoji/izakaya_lantern.png | Bin 0 -> 4064 bytes app/assets/images/emoji/jack_o_lantern.png | Bin 0 -> 5633 bytes app/assets/images/emoji/japan.png | Bin 0 -> 4085 bytes app/assets/images/emoji/japanese_castle.png | Bin 0 -> 4939 bytes app/assets/images/emoji/japanese_goblin.png | Bin 0 -> 5159 bytes app/assets/images/emoji/japanese_ogre.png | Bin 0 -> 7147 bytes app/assets/images/emoji/jeans.png | Bin 0 -> 3470 bytes app/assets/images/emoji/joy.png | Bin 0 -> 6339 bytes app/assets/images/emoji/joy_cat.png | Bin 0 -> 7190 bytes app/assets/images/emoji/jp.png | Bin 0 -> 2827 bytes app/assets/images/emoji/key.png | Bin 0 -> 3452 bytes app/assets/images/emoji/keycap_ten.png | Bin 0 -> 4095 bytes app/assets/images/emoji/kimono.png | Bin 0 -> 4938 bytes app/assets/images/emoji/kiss.png | Bin 0 -> 6276 bytes app/assets/images/emoji/kissing_cat.png | Bin 0 -> 6801 bytes app/assets/images/emoji/kissing_face.png | Bin 0 -> 5563 bytes app/assets/images/emoji/kissing_heart.png | Bin 0 -> 5767 bytes app/assets/images/emoji/koala.png | Bin 0 -> 5687 bytes app/assets/images/emoji/koko.png | Bin 0 -> 2854 bytes app/assets/images/emoji/kr.png | Bin 0 -> 5105 bytes app/assets/images/emoji/large_blue_circle.png | Bin 0 -> 4637 bytes app/assets/images/emoji/large_blue_diamond.png | Bin 0 -> 3790 bytes app/assets/images/emoji/large_orange_diamond.png | Bin 0 -> 3899 bytes app/assets/images/emoji/last_quarter_moon.png | Bin 0 -> 6176 bytes app/assets/images/emoji/last_quarter_moon_with_face.png | Bin 0 -> 4328 bytes app/assets/images/emoji/laughing.png | Bin 0 -> 6347 bytes app/assets/images/emoji/leaves.png | Bin 0 -> 5571 bytes app/assets/images/emoji/ledger.png | Bin 0 -> 5921 bytes app/assets/images/emoji/left_luggage.png | Bin 0 -> 4025 bytes app/assets/images/emoji/left_right_arrow.png | Bin 0 -> 3413 bytes app/assets/images/emoji/leftwards_arrow_with_hook.png | Bin 0 -> 3775 bytes app/assets/images/emoji/lemon.png | Bin 0 -> 6055 bytes app/assets/images/emoji/leo.png | Bin 0 -> 4913 bytes app/assets/images/emoji/leopard.png | Bin 0 -> 5384 bytes app/assets/images/emoji/libra.png | Bin 0 -> 4229 bytes app/assets/images/emoji/light_rail.png | Bin 0 -> 3792 bytes app/assets/images/emoji/link.png | Bin 0 -> 2652 bytes app/assets/images/emoji/lips.png | Bin 0 -> 3738 bytes app/assets/images/emoji/lipstick.png | Bin 0 -> 3384 bytes app/assets/images/emoji/lock.png | Bin 0 -> 3676 bytes app/assets/images/emoji/lock_with_ink_pen.png | Bin 0 -> 4967 bytes app/assets/images/emoji/lollipop.png | Bin 0 -> 5771 bytes app/assets/images/emoji/loop.png | Bin 0 -> 3417 bytes app/assets/images/emoji/loudspeaker.png | Bin 0 -> 6001 bytes app/assets/images/emoji/love_hotel.png | Bin 0 -> 5941 bytes app/assets/images/emoji/love_letter.png | Bin 0 -> 2467 bytes app/assets/images/emoji/low_brightness.png | Bin 0 -> 2498 bytes app/assets/images/emoji/m.png | Bin 0 -> 4737 bytes app/assets/images/emoji/mag.png | Bin 0 -> 3040 bytes app/assets/images/emoji/mag_right.png | Bin 0 -> 3629 bytes app/assets/images/emoji/mahjong.png | Bin 0 -> 3309 bytes app/assets/images/emoji/mailbox.png | Bin 0 -> 4196 bytes app/assets/images/emoji/mailbox_closed.png | Bin 0 -> 4360 bytes app/assets/images/emoji/mailbox_with_mail.png | Bin 0 -> 4581 bytes app/assets/images/emoji/mailbox_with_no_mail.png | Bin 0 -> 3101 bytes app/assets/images/emoji/man.png | Bin 0 -> 6023 bytes app/assets/images/emoji/man_with_gua_pi_mao.png | Bin 0 -> 5324 bytes app/assets/images/emoji/man_with_turban.png | Bin 0 -> 6528 bytes app/assets/images/emoji/mans_shoe.png | Bin 0 -> 4749 bytes app/assets/images/emoji/maple_leaf.png | Bin 0 -> 4450 bytes app/assets/images/emoji/mask.png | Bin 0 -> 5235 bytes app/assets/images/emoji/massage.png | Bin 0 -> 6036 bytes app/assets/images/emoji/meat_on_bone.png | Bin 0 -> 5534 bytes app/assets/images/emoji/mega.png | Bin 0 -> 4680 bytes app/assets/images/emoji/melon.png | Bin 0 -> 8233 bytes app/assets/images/emoji/memo.png | Bin 0 -> 4945 bytes app/assets/images/emoji/mens.png | Bin 0 -> 3368 bytes app/assets/images/emoji/metal.png | Bin 0 -> 3098 bytes app/assets/images/emoji/metro.png | Bin 0 -> 3402 bytes app/assets/images/emoji/microphone.png | Bin 0 -> 3680 bytes app/assets/images/emoji/microscope.png | Bin 0 -> 4141 bytes app/assets/images/emoji/milky_way.png | Bin 0 -> 5878 bytes app/assets/images/emoji/minibus.png | Bin 0 -> 3113 bytes app/assets/images/emoji/minidisc.png | Bin 0 -> 5594 bytes app/assets/images/emoji/mobile_phone_off.png | Bin 0 -> 3521 bytes app/assets/images/emoji/money_with_wings.png | Bin 0 -> 7586 bytes app/assets/images/emoji/moneybag.png | Bin 0 -> 5500 bytes app/assets/images/emoji/monkey.png | Bin 0 -> 4973 bytes app/assets/images/emoji/monkey_face.png | Bin 0 -> 5348 bytes app/assets/images/emoji/monorail.png | Bin 0 -> 4311 bytes app/assets/images/emoji/moon.png | Bin 0 -> 3541 bytes app/assets/images/emoji/mortar_board.png | Bin 0 -> 4165 bytes app/assets/images/emoji/mount_fuji.png | Bin 0 -> 5004 bytes app/assets/images/emoji/mountain_bicyclist.png | Bin 0 -> 9511 bytes app/assets/images/emoji/mountain_cableway.png | Bin 0 -> 4405 bytes app/assets/images/emoji/mountain_railway.png | Bin 0 -> 7448 bytes app/assets/images/emoji/mouse.png | Bin 0 -> 6625 bytes app/assets/images/emoji/mouse2.png | Bin 0 -> 4087 bytes app/assets/images/emoji/movie_camera.png | Bin 0 -> 4081 bytes app/assets/images/emoji/moyai.png | Bin 0 -> 2166 bytes app/assets/images/emoji/muscle.png | Bin 0 -> 4672 bytes app/assets/images/emoji/mushroom.png | Bin 0 -> 4887 bytes app/assets/images/emoji/musical_keyboard.png | Bin 0 -> 1944 bytes app/assets/images/emoji/musical_note.png | Bin 0 -> 3188 bytes app/assets/images/emoji/musical_score.png | Bin 0 -> 1576 bytes app/assets/images/emoji/mute.png | Bin 0 -> 6635 bytes app/assets/images/emoji/nail_care.png | Bin 0 -> 5814 bytes app/assets/images/emoji/name_badge.png | Bin 0 -> 3985 bytes app/assets/images/emoji/neckbeard.png | Bin 0 -> 6421 bytes app/assets/images/emoji/necktie.png | Bin 0 -> 6116 bytes app/assets/images/emoji/negative_squared_cross_mark.png | Bin 0 -> 3853 bytes app/assets/images/emoji/neutral_face.png | Bin 0 -> 4843 bytes app/assets/images/emoji/new.png | Bin 0 -> 3927 bytes app/assets/images/emoji/new_moon.png | Bin 0 -> 5371 bytes app/assets/images/emoji/new_moon_with_face.png | Bin 0 -> 6750 bytes app/assets/images/emoji/newspaper.png | Bin 0 -> 5198 bytes app/assets/images/emoji/ng.png | Bin 0 -> 4201 bytes app/assets/images/emoji/nine.png | Bin 0 -> 3776 bytes app/assets/images/emoji/no_bell.png | Bin 0 -> 5944 bytes app/assets/images/emoji/no_bicycles.png | Bin 0 -> 5661 bytes app/assets/images/emoji/no_entry.png | Bin 0 -> 3514 bytes app/assets/images/emoji/no_entry_sign.png | Bin 0 -> 3288 bytes app/assets/images/emoji/no_good.png | Bin 0 -> 7034 bytes app/assets/images/emoji/no_mobile_phones.png | Bin 0 -> 5083 bytes app/assets/images/emoji/no_mouth.png | Bin 0 -> 4732 bytes app/assets/images/emoji/no_pedestrians.png | Bin 0 -> 5487 bytes app/assets/images/emoji/no_smoking.png | Bin 0 -> 4212 bytes app/assets/images/emoji/non-potable_water.png | Bin 0 -> 5202 bytes app/assets/images/emoji/nose.png | Bin 0 -> 3703 bytes app/assets/images/emoji/notebook.png | Bin 0 -> 6036 bytes .../images/emoji/notebook_with_decorative_cover.png | Bin 0 -> 5329 bytes app/assets/images/emoji/notes.png | Bin 0 -> 1536 bytes app/assets/images/emoji/nut_and_bolt.png | Bin 0 -> 2169 bytes app/assets/images/emoji/o.png | Bin 0 -> 2542 bytes app/assets/images/emoji/o2.png | Bin 0 -> 3498 bytes app/assets/images/emoji/ocean.png | Bin 0 -> 5777 bytes app/assets/images/emoji/octocat.png | Bin 0 -> 3933 bytes app/assets/images/emoji/octopus.png | Bin 0 -> 5779 bytes app/assets/images/emoji/oden.png | Bin 0 -> 5543 bytes app/assets/images/emoji/office.png | Bin 0 -> 5162 bytes app/assets/images/emoji/ok.png | Bin 0 -> 4158 bytes app/assets/images/emoji/ok_hand.png | Bin 0 -> 4598 bytes app/assets/images/emoji/ok_woman.png | Bin 0 -> 7527 bytes app/assets/images/emoji/older_man.png | Bin 0 -> 6733 bytes app/assets/images/emoji/older_woman.png | Bin 0 -> 5977 bytes app/assets/images/emoji/on.png | Bin 0 -> 1806 bytes app/assets/images/emoji/oncoming_automobile.png | Bin 0 -> 7469 bytes app/assets/images/emoji/oncoming_bus.png | Bin 0 -> 5305 bytes app/assets/images/emoji/oncoming_police_car.png | Bin 0 -> 5683 bytes app/assets/images/emoji/oncoming_taxi.png | Bin 0 -> 6287 bytes app/assets/images/emoji/one.png | Bin 0 -> 2825 bytes app/assets/images/emoji/open_file_folder.png | Bin 0 -> 4292 bytes app/assets/images/emoji/open_hands.png | Bin 0 -> 4951 bytes app/assets/images/emoji/ophiuchus.png | Bin 0 -> 4434 bytes app/assets/images/emoji/orange_book.png | Bin 0 -> 5085 bytes app/assets/images/emoji/outbox_tray.png | Bin 0 -> 3683 bytes app/assets/images/emoji/ox.png | Bin 0 -> 6079 bytes app/assets/images/emoji/page_facing_up.png | Bin 0 -> 2183 bytes app/assets/images/emoji/page_with_curl.png | Bin 0 -> 3729 bytes app/assets/images/emoji/pager.png | Bin 0 -> 4022 bytes app/assets/images/emoji/palm_tree.png | Bin 0 -> 3664 bytes app/assets/images/emoji/panda_face.png | Bin 0 -> 4814 bytes app/assets/images/emoji/paperclip.png | Bin 0 -> 2558 bytes app/assets/images/emoji/parking.png | Bin 0 -> 3083 bytes app/assets/images/emoji/part_alternation_mark.png | Bin 0 -> 2685 bytes app/assets/images/emoji/partly_sunny.png | Bin 0 -> 5181 bytes app/assets/images/emoji/passport_control.png | Bin 0 -> 4018 bytes app/assets/images/emoji/paw_prints.png | Bin 0 -> 2471 bytes app/assets/images/emoji/peach.png | Bin 0 -> 5920 bytes app/assets/images/emoji/pear.png | Bin 0 -> 6936 bytes app/assets/images/emoji/pencil.png | Bin 0 -> 4945 bytes app/assets/images/emoji/pencil2.png | Bin 0 -> 4450 bytes app/assets/images/emoji/penguin.png | Bin 0 -> 4746 bytes app/assets/images/emoji/pensive.png | Bin 0 -> 5062 bytes app/assets/images/emoji/performing_arts.png | Bin 0 -> 6287 bytes app/assets/images/emoji/persevere.png | Bin 0 -> 5519 bytes app/assets/images/emoji/person_frowning.png | Bin 0 -> 4826 bytes app/assets/images/emoji/person_with_blond_hair.png | Bin 0 -> 6622 bytes app/assets/images/emoji/person_with_pouting_face.png | Bin 0 -> 5428 bytes app/assets/images/emoji/phone.png | Bin 0 -> 5495 bytes app/assets/images/emoji/pig.png | Bin 0 -> 5996 bytes app/assets/images/emoji/pig2.png | Bin 0 -> 4797 bytes app/assets/images/emoji/pig_nose.png | Bin 0 -> 4761 bytes app/assets/images/emoji/pill.png | Bin 0 -> 5022 bytes app/assets/images/emoji/pineapple.png | Bin 0 -> 5634 bytes app/assets/images/emoji/pisces.png | Bin 0 -> 4458 bytes app/assets/images/emoji/pizza.png | Bin 0 -> 5273 bytes app/assets/images/emoji/plus1.png | Bin 0 -> 5075 bytes app/assets/images/emoji/point_down.png | Bin 0 -> 3225 bytes app/assets/images/emoji/point_left.png | Bin 0 -> 3085 bytes app/assets/images/emoji/point_right.png | Bin 0 -> 3079 bytes app/assets/images/emoji/point_up.png | Bin 0 -> 3431 bytes app/assets/images/emoji/point_up_2.png | Bin 0 -> 3181 bytes app/assets/images/emoji/police_car.png | Bin 0 -> 3349 bytes app/assets/images/emoji/poodle.png | Bin 0 -> 6852 bytes app/assets/images/emoji/poop.png | Bin 0 -> 4754 bytes app/assets/images/emoji/post_office.png | Bin 0 -> 5136 bytes app/assets/images/emoji/postal_horn.png | Bin 0 -> 4819 bytes app/assets/images/emoji/postbox.png | Bin 0 -> 3388 bytes app/assets/images/emoji/potable_water.png | Bin 0 -> 3934 bytes app/assets/images/emoji/pouch.png | Bin 0 -> 4691 bytes app/assets/images/emoji/poultry_leg.png | Bin 0 -> 4200 bytes app/assets/images/emoji/pound.png | Bin 0 -> 4235 bytes app/assets/images/emoji/pouting_cat.png | Bin 0 -> 4918 bytes app/assets/images/emoji/pray.png | Bin 0 -> 6203 bytes app/assets/images/emoji/princess.png | Bin 0 -> 7920 bytes app/assets/images/emoji/punch.png | Bin 0 -> 4833 bytes app/assets/images/emoji/purple_heart.png | Bin 0 -> 4295 bytes app/assets/images/emoji/purse.png | Bin 0 -> 5033 bytes app/assets/images/emoji/pushpin.png | Bin 0 -> 3793 bytes app/assets/images/emoji/put_litter_in_its_place.png | Bin 0 -> 4091 bytes app/assets/images/emoji/question.png | Bin 0 -> 1711 bytes app/assets/images/emoji/rabbit.png | Bin 0 -> 5677 bytes app/assets/images/emoji/rabbit2.png | Bin 0 -> 4517 bytes app/assets/images/emoji/racehorse.png | Bin 0 -> 4735 bytes app/assets/images/emoji/radio.png | Bin 0 -> 6150 bytes app/assets/images/emoji/radio_button.png | Bin 0 -> 2198 bytes app/assets/images/emoji/rage.png | Bin 0 -> 5410 bytes app/assets/images/emoji/rage1.png | Bin 0 -> 1086 bytes app/assets/images/emoji/rage2.png | Bin 0 -> 1098 bytes app/assets/images/emoji/rage3.png | Bin 0 -> 1119 bytes app/assets/images/emoji/rage4.png | Bin 0 -> 1270 bytes app/assets/images/emoji/railway_car.png | Bin 0 -> 3648 bytes app/assets/images/emoji/rainbow.png | Bin 0 -> 5314 bytes app/assets/images/emoji/raised_hand.png | Bin 0 -> 6177 bytes app/assets/images/emoji/raised_hands.png | Bin 0 -> 5375 bytes app/assets/images/emoji/ram.png | Bin 0 -> 6531 bytes app/assets/images/emoji/ramen.png | Bin 0 -> 6574 bytes app/assets/images/emoji/rat.png | Bin 0 -> 5441 bytes app/assets/images/emoji/recycle.png | Bin 0 -> 3704 bytes app/assets/images/emoji/red_car.png | Bin 0 -> 4278 bytes app/assets/images/emoji/red_circle.png | Bin 0 -> 3946 bytes app/assets/images/emoji/registered.png | Bin 0 -> 1613 bytes app/assets/images/emoji/relaxed.png | Bin 0 -> 5455 bytes app/assets/images/emoji/relieved.png | Bin 0 -> 5648 bytes app/assets/images/emoji/repeat.png | Bin 0 -> 4009 bytes app/assets/images/emoji/repeat_one.png | Bin 0 -> 4287 bytes app/assets/images/emoji/restroom.png | Bin 0 -> 4142 bytes app/assets/images/emoji/revolving_hearts.png | Bin 0 -> 5472 bytes app/assets/images/emoji/rewind.png | Bin 0 -> 3056 bytes app/assets/images/emoji/ribbon.png | Bin 0 -> 5581 bytes app/assets/images/emoji/rice.png | Bin 0 -> 4645 bytes app/assets/images/emoji/rice_ball.png | Bin 0 -> 5408 bytes app/assets/images/emoji/rice_cracker.png | Bin 0 -> 7787 bytes app/assets/images/emoji/rice_scene.png | Bin 0 -> 6261 bytes app/assets/images/emoji/ring.png | Bin 0 -> 5232 bytes app/assets/images/emoji/rocket.png | Bin 0 -> 5388 bytes app/assets/images/emoji/roller_coaster.png | Bin 0 -> 5148 bytes app/assets/images/emoji/rooster.png | Bin 0 -> 6168 bytes app/assets/images/emoji/rose.png | Bin 0 -> 4202 bytes app/assets/images/emoji/rotating_light.png | Bin 0 -> 6620 bytes app/assets/images/emoji/round_pushpin.png | Bin 0 -> 1936 bytes app/assets/images/emoji/rowboat.png | Bin 0 -> 5433 bytes app/assets/images/emoji/ru.png | Bin 0 -> 3920 bytes app/assets/images/emoji/rugby_football.png | Bin 0 -> 7781 bytes app/assets/images/emoji/runner.png | Bin 0 -> 3137 bytes app/assets/images/emoji/running.png | Bin 0 -> 3214 bytes app/assets/images/emoji/running_shirt_with_sash.png | Bin 0 -> 5701 bytes app/assets/images/emoji/sa.png | Bin 0 -> 3556 bytes app/assets/images/emoji/sagittarius.png | Bin 0 -> 4505 bytes app/assets/images/emoji/sailboat.png | Bin 0 -> 3833 bytes app/assets/images/emoji/sake.png | Bin 0 -> 5073 bytes app/assets/images/emoji/sandal.png | Bin 0 -> 3974 bytes app/assets/images/emoji/santa.png | Bin 0 -> 6271 bytes app/assets/images/emoji/satellite.png | Bin 0 -> 4867 bytes app/assets/images/emoji/satisfied.png | Bin 0 -> 5364 bytes app/assets/images/emoji/saxophone.png | Bin 0 -> 4252 bytes app/assets/images/emoji/school.png | Bin 0 -> 5446 bytes app/assets/images/emoji/school_satchel.png | Bin 0 -> 5741 bytes app/assets/images/emoji/scissors.png | Bin 0 -> 3839 bytes app/assets/images/emoji/scorpius.png | Bin 0 -> 4566 bytes app/assets/images/emoji/scream.png | Bin 0 -> 6482 bytes app/assets/images/emoji/scream_cat.png | Bin 0 -> 6844 bytes app/assets/images/emoji/scroll.png | Bin 0 -> 6749 bytes app/assets/images/emoji/seat.png | Bin 0 -> 6059 bytes app/assets/images/emoji/secret.png | Bin 0 -> 5364 bytes app/assets/images/emoji/see_no_evil.png | Bin 0 -> 6828 bytes app/assets/images/emoji/seedling.png | Bin 0 -> 2260 bytes app/assets/images/emoji/seven.png | Bin 0 -> 3055 bytes app/assets/images/emoji/shaved_ice.png | Bin 0 -> 5908 bytes app/assets/images/emoji/sheep.png | Bin 0 -> 4732 bytes app/assets/images/emoji/shell.png | Bin 0 -> 5115 bytes app/assets/images/emoji/ship.png | Bin 0 -> 4233 bytes app/assets/images/emoji/shipit.png | Bin 0 -> 9351 bytes app/assets/images/emoji/shirt.png | Bin 0 -> 4676 bytes app/assets/images/emoji/shit.png | Bin 0 -> 4754 bytes app/assets/images/emoji/shoe.png | Bin 0 -> 4799 bytes app/assets/images/emoji/shower.png | Bin 0 -> 7583 bytes app/assets/images/emoji/signal_strength.png | Bin 0 -> 3231 bytes app/assets/images/emoji/six.png | Bin 0 -> 3791 bytes app/assets/images/emoji/six_pointed_star.png | Bin 0 -> 4859 bytes app/assets/images/emoji/ski.png | Bin 0 -> 4167 bytes app/assets/images/emoji/skull.png | Bin 0 -> 2428 bytes app/assets/images/emoji/sleepy.png | Bin 0 -> 5837 bytes app/assets/images/emoji/slot_machine.png | Bin 0 -> 4605 bytes app/assets/images/emoji/small_blue_diamond.png | Bin 0 -> 1898 bytes app/assets/images/emoji/small_orange_diamond.png | Bin 0 -> 1944 bytes app/assets/images/emoji/small_red_triangle.png | Bin 0 -> 2054 bytes app/assets/images/emoji/small_red_triangle_down.png | Bin 0 -> 2157 bytes app/assets/images/emoji/smile.png | Bin 0 -> 5890 bytes app/assets/images/emoji/smile_cat.png | Bin 0 -> 6117 bytes app/assets/images/emoji/smiley.png | Bin 0 -> 5794 bytes app/assets/images/emoji/smiley_cat.png | Bin 0 -> 6083 bytes app/assets/images/emoji/smiling_imp.png | Bin 0 -> 7189 bytes app/assets/images/emoji/smirk.png | Bin 0 -> 5307 bytes app/assets/images/emoji/smirk_cat.png | Bin 0 -> 6062 bytes app/assets/images/emoji/smoking.png | Bin 0 -> 2875 bytes app/assets/images/emoji/snail.png | Bin 0 -> 6657 bytes app/assets/images/emoji/snake.png | Bin 0 -> 4069 bytes app/assets/images/emoji/snowboarder.png | Bin 0 -> 5356 bytes app/assets/images/emoji/snowflake.png | Bin 0 -> 5637 bytes app/assets/images/emoji/snowman.png | Bin 0 -> 4658 bytes app/assets/images/emoji/sob.png | Bin 0 -> 5709 bytes app/assets/images/emoji/soccer.png | Bin 0 -> 4878 bytes app/assets/images/emoji/soon.png | Bin 0 -> 1911 bytes app/assets/images/emoji/sos.png | Bin 0 -> 4262 bytes app/assets/images/emoji/sound.png | Bin 0 -> 5024 bytes app/assets/images/emoji/space_invader.png | Bin 0 -> 4353 bytes app/assets/images/emoji/spades.png | Bin 0 -> 1719 bytes app/assets/images/emoji/spaghetti.png | Bin 0 -> 6955 bytes app/assets/images/emoji/sparkler.png | Bin 0 -> 5696 bytes app/assets/images/emoji/sparkles.png | Bin 0 -> 2212 bytes app/assets/images/emoji/speak_no_evil.png | Bin 0 -> 5977 bytes app/assets/images/emoji/speaker.png | Bin 0 -> 5173 bytes app/assets/images/emoji/speech_balloon.png | Bin 0 -> 2130 bytes app/assets/images/emoji/speedboat.png | Bin 0 -> 3512 bytes app/assets/images/emoji/squirrel.png | Bin 0 -> 9351 bytes app/assets/images/emoji/star.png | Bin 0 -> 3628 bytes app/assets/images/emoji/star2.png | Bin 0 -> 4068 bytes app/assets/images/emoji/stars.png | Bin 0 -> 4366 bytes app/assets/images/emoji/station.png | Bin 0 -> 4836 bytes app/assets/images/emoji/statue_of_liberty.png | Bin 0 -> 6075 bytes app/assets/images/emoji/steam_locomotive.png | Bin 0 -> 5159 bytes app/assets/images/emoji/stew.png | Bin 0 -> 5365 bytes app/assets/images/emoji/straight_ruler.png | Bin 0 -> 3832 bytes app/assets/images/emoji/strawberry.png | Bin 0 -> 5477 bytes app/assets/images/emoji/sun_with_face.png | Bin 0 -> 7958 bytes app/assets/images/emoji/sunflower.png | Bin 0 -> 6567 bytes app/assets/images/emoji/sunglasses.png | Bin 0 -> 5749 bytes app/assets/images/emoji/sunny.png | Bin 0 -> 3802 bytes app/assets/images/emoji/sunrise.png | Bin 0 -> 3914 bytes app/assets/images/emoji/sunrise_over_mountains.png | Bin 0 -> 6594 bytes app/assets/images/emoji/surfer.png | Bin 0 -> 6259 bytes app/assets/images/emoji/sushi.png | Bin 0 -> 5257 bytes app/assets/images/emoji/suspect.png | Bin 0 -> 1016 bytes app/assets/images/emoji/suspension_railway.png | Bin 0 -> 3937 bytes app/assets/images/emoji/sweat.png | Bin 0 -> 5576 bytes app/assets/images/emoji/sweat_drops.png | Bin 0 -> 4782 bytes app/assets/images/emoji/sweat_smile.png | Bin 0 -> 6519 bytes app/assets/images/emoji/sweet_potato.png | Bin 0 -> 5684 bytes app/assets/images/emoji/swimmer.png | Bin 0 -> 4378 bytes app/assets/images/emoji/symbols.png | Bin 0 -> 5434 bytes app/assets/images/emoji/syringe.png | Bin 0 -> 3040 bytes app/assets/images/emoji/tada.png | Bin 0 -> 5945 bytes app/assets/images/emoji/tanabata_tree.png | Bin 0 -> 4409 bytes app/assets/images/emoji/tangerine.png | Bin 0 -> 6645 bytes app/assets/images/emoji/taurus.png | Bin 0 -> 4733 bytes app/assets/images/emoji/taxi.png | Bin 0 -> 3744 bytes app/assets/images/emoji/tea.png | Bin 0 -> 5954 bytes app/assets/images/emoji/telephone.png | Bin 0 -> 5495 bytes app/assets/images/emoji/telephone_receiver.png | Bin 0 -> 2001 bytes app/assets/images/emoji/telescope.png | Bin 0 -> 3322 bytes app/assets/images/emoji/tennis.png | Bin 0 -> 5976 bytes app/assets/images/emoji/tent.png | Bin 0 -> 4482 bytes app/assets/images/emoji/thought_balloon.png | Bin 0 -> 2582 bytes app/assets/images/emoji/three.png | Bin 0 -> 3758 bytes app/assets/images/emoji/thumbsdown.png | Bin 0 -> 5070 bytes app/assets/images/emoji/thumbsup.png | Bin 0 -> 5075 bytes app/assets/images/emoji/ticket.png | Bin 0 -> 3091 bytes app/assets/images/emoji/tiger.png | Bin 0 -> 6051 bytes app/assets/images/emoji/tiger2.png | Bin 0 -> 5744 bytes app/assets/images/emoji/tired_face.png | Bin 0 -> 6178 bytes app/assets/images/emoji/tm.png | Bin 0 -> 842 bytes app/assets/images/emoji/toilet.png | Bin 0 -> 1733 bytes app/assets/images/emoji/tokyo_tower.png | Bin 0 -> 4802 bytes app/assets/images/emoji/tomato.png | Bin 0 -> 5748 bytes app/assets/images/emoji/tongue.png | Bin 0 -> 5785 bytes app/assets/images/emoji/tongue2.png | Bin 0 -> 3662 bytes app/assets/images/emoji/top.png | Bin 0 -> 3785 bytes app/assets/images/emoji/tophat.png | Bin 0 -> 3009 bytes app/assets/images/emoji/tractor.png | Bin 0 -> 5671 bytes app/assets/images/emoji/traffic_light.png | Bin 0 -> 3545 bytes app/assets/images/emoji/train.png | Bin 0 -> 3905 bytes app/assets/images/emoji/train2.png | Bin 0 -> 4817 bytes app/assets/images/emoji/tram.png | Bin 0 -> 4869 bytes app/assets/images/emoji/triangular_flag_on_post.png | Bin 0 -> 1399 bytes app/assets/images/emoji/triangular_ruler.png | Bin 0 -> 2706 bytes app/assets/images/emoji/trident.png | Bin 0 -> 4833 bytes app/assets/images/emoji/triumph.png | Bin 0 -> 6164 bytes app/assets/images/emoji/trolleybus.png | Bin 0 -> 4431 bytes app/assets/images/emoji/trollface.png | Bin 0 -> 4905 bytes app/assets/images/emoji/trophy.png | Bin 0 -> 5520 bytes app/assets/images/emoji/tropical_drink.png | Bin 0 -> 4189 bytes app/assets/images/emoji/tropical_fish.png | Bin 0 -> 5846 bytes app/assets/images/emoji/truck.png | Bin 0 -> 3721 bytes app/assets/images/emoji/trumpet.png | Bin 0 -> 4373 bytes app/assets/images/emoji/tshirt.png | Bin 0 -> 4676 bytes app/assets/images/emoji/tulip.png | Bin 0 -> 6065 bytes app/assets/images/emoji/turtle.png | Bin 0 -> 5336 bytes app/assets/images/emoji/tv.png | Bin 0 -> 5242 bytes app/assets/images/emoji/twisted_rightwards_arrows.png | Bin 0 -> 4313 bytes app/assets/images/emoji/two.png | Bin 0 -> 3518 bytes app/assets/images/emoji/two_hearts.png | Bin 0 -> 3565 bytes app/assets/images/emoji/two_men_holding_hands.png | Bin 0 -> 6994 bytes app/assets/images/emoji/two_women_holding_hands.png | Bin 0 -> 7633 bytes app/assets/images/emoji/u5272.png | Bin 0 -> 4533 bytes app/assets/images/emoji/u5408.png | Bin 0 -> 3890 bytes app/assets/images/emoji/u55b6.png | Bin 0 -> 3411 bytes app/assets/images/emoji/u6307.png | Bin 0 -> 4103 bytes app/assets/images/emoji/u6708.png | Bin 0 -> 3011 bytes app/assets/images/emoji/u6709.png | Bin 0 -> 3198 bytes app/assets/images/emoji/u6e80.png | Bin 0 -> 4419 bytes app/assets/images/emoji/u7121.png | Bin 0 -> 3942 bytes app/assets/images/emoji/u7533.png | Bin 0 -> 3048 bytes app/assets/images/emoji/u7981.png | Bin 0 -> 5175 bytes app/assets/images/emoji/u7a7a.png | Bin 0 -> 4180 bytes app/assets/images/emoji/uk.png | Bin 0 -> 5894 bytes app/assets/images/emoji/umbrella.png | Bin 0 -> 4745 bytes app/assets/images/emoji/unamused.png | Bin 0 -> 5315 bytes app/assets/images/emoji/underage.png | Bin 0 -> 5722 bytes app/assets/images/emoji/unlock.png | Bin 0 -> 3551 bytes app/assets/images/emoji/up.png | Bin 0 -> 3721 bytes app/assets/images/emoji/us.png | Bin 0 -> 6285 bytes app/assets/images/emoji/v.png | Bin 0 -> 4669 bytes app/assets/images/emoji/vertical_traffic_light.png | Bin 0 -> 3422 bytes app/assets/images/emoji/vhs.png | Bin 0 -> 3145 bytes app/assets/images/emoji/vibration_mode.png | Bin 0 -> 3906 bytes app/assets/images/emoji/video_camera.png | Bin 0 -> 5090 bytes app/assets/images/emoji/video_game.png | Bin 0 -> 4957 bytes app/assets/images/emoji/violin.png | Bin 0 -> 5020 bytes app/assets/images/emoji/virgo.png | Bin 0 -> 4869 bytes app/assets/images/emoji/volcano.png | Bin 0 -> 6167 bytes app/assets/images/emoji/vs.png | Bin 0 -> 3424 bytes app/assets/images/emoji/walking.png | Bin 0 -> 2468 bytes app/assets/images/emoji/waning_crescent_moon.png | Bin 0 -> 5885 bytes app/assets/images/emoji/waning_gibbous_moon.png | Bin 0 -> 6510 bytes app/assets/images/emoji/warning.png | Bin 0 -> 3177 bytes app/assets/images/emoji/watch.png | Bin 0 -> 5189 bytes app/assets/images/emoji/water_buffalo.png | Bin 0 -> 4774 bytes app/assets/images/emoji/watermelon.png | Bin 0 -> 5501 bytes app/assets/images/emoji/wave.png | Bin 0 -> 5048 bytes app/assets/images/emoji/wavy_dash.png | Bin 0 -> 872 bytes app/assets/images/emoji/waxing_crescent_moon.png | Bin 0 -> 6198 bytes app/assets/images/emoji/waxing_gibbous_moon.png | Bin 0 -> 6455 bytes app/assets/images/emoji/wc.png | Bin 0 -> 4088 bytes app/assets/images/emoji/weary.png | Bin 0 -> 6279 bytes app/assets/images/emoji/wedding.png | Bin 0 -> 5847 bytes app/assets/images/emoji/whale.png | Bin 0 -> 4940 bytes app/assets/images/emoji/whale2.png | Bin 0 -> 6032 bytes app/assets/images/emoji/wheelchair.png | Bin 0 -> 4224 bytes app/assets/images/emoji/white_circle.png | Bin 0 -> 2506 bytes app/assets/images/emoji/white_flower.png | Bin 0 -> 4391 bytes app/assets/images/emoji/white_square.png | Bin 0 -> 1411 bytes app/assets/images/emoji/wind_chime.png | Bin 0 -> 3487 bytes app/assets/images/emoji/wine_glass.png | Bin 0 -> 3151 bytes app/assets/images/emoji/wink.png | Bin 0 -> 5253 bytes app/assets/images/emoji/wink2.png | Bin 0 -> 6007 bytes app/assets/images/emoji/wolf.png | Bin 0 -> 4845 bytes app/assets/images/emoji/woman.png | Bin 0 -> 6895 bytes app/assets/images/emoji/womans_clothes.png | Bin 0 -> 4075 bytes app/assets/images/emoji/womans_hat.png | Bin 0 -> 8101 bytes app/assets/images/emoji/womens.png | Bin 0 -> 3893 bytes app/assets/images/emoji/wrench.png | Bin 0 -> 2775 bytes app/assets/images/emoji/x.png | Bin 0 -> 2044 bytes app/assets/images/emoji/yellow_heart.png | Bin 0 -> 4414 bytes app/assets/images/emoji/yen.png | Bin 0 -> 4989 bytes app/assets/images/emoji/yum.png | Bin 0 -> 5886 bytes app/assets/images/emoji/zap.png | Bin 0 -> 2233 bytes app/assets/images/emoji/zero.png | Bin 0 -> 3590 bytes app/assets/images/emoji/zzz.png | Bin 0 -> 2027 bytes 847 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 app/assets/images/emoji/+1.png create mode 100755 app/assets/images/emoji/-1.png create mode 100755 app/assets/images/emoji/100.png create mode 100755 app/assets/images/emoji/109.png create mode 100755 app/assets/images/emoji/1234.png create mode 100755 app/assets/images/emoji/8ball.png create mode 100755 app/assets/images/emoji/a.png create mode 100755 app/assets/images/emoji/ab.png create mode 100755 app/assets/images/emoji/abc.png create mode 100755 app/assets/images/emoji/abcd.png create mode 100755 app/assets/images/emoji/accept.png create mode 100755 app/assets/images/emoji/aerial_tramway.png create mode 100755 app/assets/images/emoji/airplane.png create mode 100755 app/assets/images/emoji/alarm_clock.png create mode 100755 app/assets/images/emoji/alien.png create mode 100755 app/assets/images/emoji/ambulance.png create mode 100755 app/assets/images/emoji/anchor.png create mode 100755 app/assets/images/emoji/angel.png create mode 100755 app/assets/images/emoji/anger.png create mode 100755 app/assets/images/emoji/angry.png create mode 100755 app/assets/images/emoji/ant.png create mode 100755 app/assets/images/emoji/apple.png create mode 100755 app/assets/images/emoji/aquarius.png create mode 100755 app/assets/images/emoji/aries.png create mode 100755 app/assets/images/emoji/arrow_backward.png create mode 100755 app/assets/images/emoji/arrow_double_down.png create mode 100755 app/assets/images/emoji/arrow_double_up.png create mode 100755 app/assets/images/emoji/arrow_down.png create mode 100755 app/assets/images/emoji/arrow_down_small.png create mode 100755 app/assets/images/emoji/arrow_forward.png create mode 100755 app/assets/images/emoji/arrow_heading_down.png create mode 100755 app/assets/images/emoji/arrow_heading_up.png create mode 100755 app/assets/images/emoji/arrow_left.png create mode 100755 app/assets/images/emoji/arrow_lower_left.png create mode 100755 app/assets/images/emoji/arrow_lower_right.png create mode 100755 app/assets/images/emoji/arrow_right.png create mode 100755 app/assets/images/emoji/arrow_right_hook.png create mode 100755 app/assets/images/emoji/arrow_up.png create mode 100755 app/assets/images/emoji/arrow_up_down.png create mode 100755 app/assets/images/emoji/arrow_up_small.png create mode 100755 app/assets/images/emoji/arrow_upper_left.png create mode 100755 app/assets/images/emoji/arrow_upper_right.png create mode 100755 app/assets/images/emoji/arrows_clockwise.png create mode 100755 app/assets/images/emoji/arrows_counterclockwise.png create mode 100755 app/assets/images/emoji/art.png create mode 100755 app/assets/images/emoji/articulated_lorry.png create mode 100755 app/assets/images/emoji/astonished.png create mode 100755 app/assets/images/emoji/atm.png create mode 100755 app/assets/images/emoji/b.png create mode 100755 app/assets/images/emoji/baby.png create mode 100755 app/assets/images/emoji/baby_bottle.png create mode 100755 app/assets/images/emoji/baby_chick.png create mode 100755 app/assets/images/emoji/baby_symbol.png create mode 100755 app/assets/images/emoji/baggage_claim.png create mode 100755 app/assets/images/emoji/balloon.png create mode 100755 app/assets/images/emoji/ballot_box_with_check.png create mode 100755 app/assets/images/emoji/bamboo.png create mode 100755 app/assets/images/emoji/banana.png create mode 100755 app/assets/images/emoji/bangbang.png create mode 100755 app/assets/images/emoji/bank.png create mode 100755 app/assets/images/emoji/bar_chart.png create mode 100755 app/assets/images/emoji/barber.png create mode 100755 app/assets/images/emoji/baseball.png create mode 100755 app/assets/images/emoji/basketball.png create mode 100755 app/assets/images/emoji/bath.png create mode 100755 app/assets/images/emoji/bathtub.png create mode 100755 app/assets/images/emoji/battery.png create mode 100755 app/assets/images/emoji/bear.png create mode 100755 app/assets/images/emoji/beer.png create mode 100755 app/assets/images/emoji/beers.png create mode 100755 app/assets/images/emoji/beetle.png create mode 100755 app/assets/images/emoji/beginner.png create mode 100755 app/assets/images/emoji/bell.png create mode 100755 app/assets/images/emoji/bento.png create mode 100755 app/assets/images/emoji/bicyclist.png create mode 100755 app/assets/images/emoji/bike.png create mode 100755 app/assets/images/emoji/bikini.png create mode 100755 app/assets/images/emoji/bird.png create mode 100755 app/assets/images/emoji/birthday.png create mode 100755 app/assets/images/emoji/black_circle.png create mode 100755 app/assets/images/emoji/black_joker.png create mode 100755 app/assets/images/emoji/black_nib.png create mode 100755 app/assets/images/emoji/black_square.png create mode 100755 app/assets/images/emoji/blossom.png create mode 100755 app/assets/images/emoji/blowfish.png create mode 100755 app/assets/images/emoji/blue_book.png create mode 100755 app/assets/images/emoji/blue_car.png create mode 100755 app/assets/images/emoji/blue_heart.png create mode 100755 app/assets/images/emoji/blush.png create mode 100755 app/assets/images/emoji/boar.png create mode 100755 app/assets/images/emoji/boat.png create mode 100755 app/assets/images/emoji/bomb.png create mode 100755 app/assets/images/emoji/book.png create mode 100755 app/assets/images/emoji/bookmark.png create mode 100755 app/assets/images/emoji/bookmark_tabs.png create mode 100755 app/assets/images/emoji/books.png create mode 100755 app/assets/images/emoji/boot.png create mode 100755 app/assets/images/emoji/bouquet.png create mode 100755 app/assets/images/emoji/bow.png create mode 100755 app/assets/images/emoji/bowling.png create mode 100755 app/assets/images/emoji/bowtie.png create mode 100755 app/assets/images/emoji/boy.png create mode 100755 app/assets/images/emoji/bread.png create mode 100755 app/assets/images/emoji/bride_with_veil.png create mode 100755 app/assets/images/emoji/bridge_at_night.png create mode 100755 app/assets/images/emoji/briefcase.png create mode 100755 app/assets/images/emoji/broken_heart.png create mode 100755 app/assets/images/emoji/bug.png create mode 100755 app/assets/images/emoji/bulb.png create mode 100755 app/assets/images/emoji/bullettrain_front.png create mode 100755 app/assets/images/emoji/bullettrain_side.png create mode 100755 app/assets/images/emoji/bus.png create mode 100755 app/assets/images/emoji/busstop.png create mode 100755 app/assets/images/emoji/bust_in_silhouette.png create mode 100755 app/assets/images/emoji/busts_in_silhouette.png create mode 100755 app/assets/images/emoji/cactus.png create mode 100755 app/assets/images/emoji/cake.png create mode 100755 app/assets/images/emoji/calendar.png create mode 100755 app/assets/images/emoji/calling.png create mode 100755 app/assets/images/emoji/camel.png create mode 100755 app/assets/images/emoji/camera.png create mode 100755 app/assets/images/emoji/cancer.png create mode 100755 app/assets/images/emoji/candy.png create mode 100755 app/assets/images/emoji/capital_abcd.png create mode 100755 app/assets/images/emoji/capricorn.png create mode 100755 app/assets/images/emoji/car.png create mode 100755 app/assets/images/emoji/card_index.png create mode 100755 app/assets/images/emoji/carousel_horse.png create mode 100755 app/assets/images/emoji/cat.png create mode 100755 app/assets/images/emoji/cat2.png create mode 100755 app/assets/images/emoji/cd.png create mode 100755 app/assets/images/emoji/chart.png create mode 100755 app/assets/images/emoji/chart_with_downwards_trend.png create mode 100755 app/assets/images/emoji/chart_with_upwards_trend.png create mode 100755 app/assets/images/emoji/checkered_flag.png create mode 100755 app/assets/images/emoji/cherries.png create mode 100755 app/assets/images/emoji/cherry_blossom.png create mode 100755 app/assets/images/emoji/chestnut.png create mode 100755 app/assets/images/emoji/chicken.png create mode 100755 app/assets/images/emoji/children_crossing.png create mode 100755 app/assets/images/emoji/chocolate_bar.png create mode 100755 app/assets/images/emoji/christmas_tree.png create mode 100755 app/assets/images/emoji/church.png create mode 100755 app/assets/images/emoji/cinema.png create mode 100755 app/assets/images/emoji/circus_tent.png create mode 100755 app/assets/images/emoji/city_sunrise.png create mode 100755 app/assets/images/emoji/city_sunset.png create mode 100755 app/assets/images/emoji/cl.png create mode 100755 app/assets/images/emoji/clap.png create mode 100755 app/assets/images/emoji/clapper.png create mode 100755 app/assets/images/emoji/clipboard.png create mode 100755 app/assets/images/emoji/clock1.png create mode 100755 app/assets/images/emoji/clock10.png create mode 100755 app/assets/images/emoji/clock1030.png create mode 100755 app/assets/images/emoji/clock11.png create mode 100755 app/assets/images/emoji/clock1130.png create mode 100755 app/assets/images/emoji/clock12.png create mode 100755 app/assets/images/emoji/clock1230.png create mode 100755 app/assets/images/emoji/clock130.png create mode 100755 app/assets/images/emoji/clock2.png create mode 100755 app/assets/images/emoji/clock230.png create mode 100755 app/assets/images/emoji/clock3.png create mode 100755 app/assets/images/emoji/clock330.png create mode 100755 app/assets/images/emoji/clock4.png create mode 100755 app/assets/images/emoji/clock430.png create mode 100755 app/assets/images/emoji/clock5.png create mode 100755 app/assets/images/emoji/clock530.png create mode 100755 app/assets/images/emoji/clock6.png create mode 100755 app/assets/images/emoji/clock630.png create mode 100755 app/assets/images/emoji/clock7.png create mode 100755 app/assets/images/emoji/clock730.png create mode 100755 app/assets/images/emoji/clock8.png create mode 100755 app/assets/images/emoji/clock830.png create mode 100755 app/assets/images/emoji/clock9.png create mode 100755 app/assets/images/emoji/clock930.png create mode 100755 app/assets/images/emoji/closed_book.png create mode 100755 app/assets/images/emoji/closed_lock_with_key.png create mode 100755 app/assets/images/emoji/closed_umbrella.png create mode 100755 app/assets/images/emoji/cloud.png create mode 100755 app/assets/images/emoji/clubs.png create mode 100755 app/assets/images/emoji/cn.png create mode 100755 app/assets/images/emoji/cocktail.png create mode 100755 app/assets/images/emoji/coffee.png create mode 100755 app/assets/images/emoji/cold_sweat.png create mode 100755 app/assets/images/emoji/collision.png create mode 100755 app/assets/images/emoji/computer.png create mode 100755 app/assets/images/emoji/confetti_ball.png create mode 100755 app/assets/images/emoji/confounded.png create mode 100755 app/assets/images/emoji/congratulations.png create mode 100755 app/assets/images/emoji/construction.png create mode 100755 app/assets/images/emoji/construction_worker.png create mode 100755 app/assets/images/emoji/convenience_store.png create mode 100755 app/assets/images/emoji/cookie.png create mode 100755 app/assets/images/emoji/cool.png create mode 100755 app/assets/images/emoji/cop.png create mode 100755 app/assets/images/emoji/copyright.png create mode 100755 app/assets/images/emoji/corn.png create mode 100755 app/assets/images/emoji/couple.png create mode 100755 app/assets/images/emoji/couple_with_heart.png create mode 100755 app/assets/images/emoji/couplekiss.png create mode 100755 app/assets/images/emoji/cow.png create mode 100755 app/assets/images/emoji/cow2.png create mode 100755 app/assets/images/emoji/credit_card.png create mode 100755 app/assets/images/emoji/crocodile.png create mode 100755 app/assets/images/emoji/crossed_flags.png create mode 100755 app/assets/images/emoji/crown.png create mode 100755 app/assets/images/emoji/cry.png create mode 100755 app/assets/images/emoji/crying_cat_face.png create mode 100755 app/assets/images/emoji/crystal_ball.png create mode 100755 app/assets/images/emoji/cupid.png create mode 100755 app/assets/images/emoji/curly_loop.png create mode 100755 app/assets/images/emoji/currency_exchange.png create mode 100755 app/assets/images/emoji/curry.png create mode 100755 app/assets/images/emoji/custard.png create mode 100755 app/assets/images/emoji/customs.png create mode 100755 app/assets/images/emoji/cyclone.png create mode 100755 app/assets/images/emoji/dancer.png create mode 100755 app/assets/images/emoji/dancers.png create mode 100755 app/assets/images/emoji/dango.png create mode 100755 app/assets/images/emoji/dart.png create mode 100755 app/assets/images/emoji/dash.png create mode 100755 app/assets/images/emoji/date.png create mode 100755 app/assets/images/emoji/de.png create mode 100755 app/assets/images/emoji/deciduous_tree.png create mode 100755 app/assets/images/emoji/department_store.png create mode 100755 app/assets/images/emoji/diamond_shape_with_a_dot_inside.png create mode 100755 app/assets/images/emoji/diamonds.png create mode 100755 app/assets/images/emoji/disappointed.png create mode 100755 app/assets/images/emoji/dizzy.png create mode 100755 app/assets/images/emoji/dizzy_face.png create mode 100755 app/assets/images/emoji/do_not_litter.png create mode 100755 app/assets/images/emoji/dog.png create mode 100755 app/assets/images/emoji/dog2.png create mode 100755 app/assets/images/emoji/dollar.png create mode 100755 app/assets/images/emoji/dolls.png create mode 100755 app/assets/images/emoji/dolphin.png create mode 100755 app/assets/images/emoji/door.png create mode 100755 app/assets/images/emoji/doughnut.png create mode 100755 app/assets/images/emoji/dragon.png create mode 100755 app/assets/images/emoji/dragon_face.png create mode 100755 app/assets/images/emoji/dress.png create mode 100755 app/assets/images/emoji/dromedary_camel.png create mode 100755 app/assets/images/emoji/droplet.png create mode 100755 app/assets/images/emoji/dvd.png create mode 100755 app/assets/images/emoji/e-mail.png create mode 100755 app/assets/images/emoji/ear.png create mode 100755 app/assets/images/emoji/ear_of_rice.png create mode 100755 app/assets/images/emoji/earth_africa.png create mode 100755 app/assets/images/emoji/earth_americas.png create mode 100755 app/assets/images/emoji/earth_asia.png create mode 100755 app/assets/images/emoji/egg.png create mode 100755 app/assets/images/emoji/eggplant.png create mode 100755 app/assets/images/emoji/eight.png create mode 100755 app/assets/images/emoji/eight_pointed_black_star.png create mode 100755 app/assets/images/emoji/eight_spoked_asterisk.png create mode 100755 app/assets/images/emoji/electric_plug.png create mode 100755 app/assets/images/emoji/elephant.png create mode 100755 app/assets/images/emoji/email.png create mode 100755 app/assets/images/emoji/end.png create mode 100755 app/assets/images/emoji/envelope.png create mode 100755 app/assets/images/emoji/es.png create mode 100755 app/assets/images/emoji/euro.png create mode 100755 app/assets/images/emoji/european_castle.png create mode 100755 app/assets/images/emoji/european_post_office.png create mode 100755 app/assets/images/emoji/evergreen_tree.png create mode 100755 app/assets/images/emoji/exclamation.png create mode 100755 app/assets/images/emoji/eyeglasses.png create mode 100755 app/assets/images/emoji/eyes.png create mode 100755 app/assets/images/emoji/facepunch.png create mode 100755 app/assets/images/emoji/factory.png create mode 100755 app/assets/images/emoji/fallen_leaf.png create mode 100755 app/assets/images/emoji/family.png create mode 100755 app/assets/images/emoji/fast_forward.png create mode 100755 app/assets/images/emoji/fax.png create mode 100755 app/assets/images/emoji/fearful.png create mode 100755 app/assets/images/emoji/feelsgood.png create mode 100755 app/assets/images/emoji/feet.png create mode 100755 app/assets/images/emoji/ferris_wheel.png create mode 100755 app/assets/images/emoji/file_folder.png create mode 100755 app/assets/images/emoji/finnadie.png create mode 100755 app/assets/images/emoji/fire.png create mode 100755 app/assets/images/emoji/fire_engine.png create mode 100755 app/assets/images/emoji/fireworks.png create mode 100755 app/assets/images/emoji/first_quarter_moon.png create mode 100755 app/assets/images/emoji/first_quarter_moon_with_face.png create mode 100755 app/assets/images/emoji/fish.png create mode 100755 app/assets/images/emoji/fish_cake.png create mode 100755 app/assets/images/emoji/fishing_pole_and_fish.png create mode 100755 app/assets/images/emoji/fist.png create mode 100755 app/assets/images/emoji/five.png create mode 100755 app/assets/images/emoji/flags.png create mode 100755 app/assets/images/emoji/flashlight.png create mode 100755 app/assets/images/emoji/floppy_disk.png create mode 100755 app/assets/images/emoji/flower_playing_cards.png create mode 100755 app/assets/images/emoji/flushed.png create mode 100755 app/assets/images/emoji/foggy.png create mode 100755 app/assets/images/emoji/football.png create mode 100755 app/assets/images/emoji/fork_and_knife.png create mode 100755 app/assets/images/emoji/fountain.png create mode 100755 app/assets/images/emoji/four.png create mode 100755 app/assets/images/emoji/four_leaf_clover.png create mode 100755 app/assets/images/emoji/fr.png create mode 100755 app/assets/images/emoji/free.png create mode 100755 app/assets/images/emoji/fried_shrimp.png create mode 100755 app/assets/images/emoji/fries.png create mode 100755 app/assets/images/emoji/frog.png create mode 100755 app/assets/images/emoji/fuelpump.png create mode 100755 app/assets/images/emoji/full_moon.png create mode 100755 app/assets/images/emoji/full_moon_with_face.png create mode 100755 app/assets/images/emoji/game_die.png create mode 100755 app/assets/images/emoji/gb.png create mode 100755 app/assets/images/emoji/gem.png create mode 100755 app/assets/images/emoji/gemini.png create mode 100755 app/assets/images/emoji/ghost.png create mode 100755 app/assets/images/emoji/gift.png create mode 100755 app/assets/images/emoji/gift_heart.png create mode 100755 app/assets/images/emoji/girl.png create mode 100755 app/assets/images/emoji/globe_with_meridians.png create mode 100755 app/assets/images/emoji/goat.png create mode 100755 app/assets/images/emoji/goberserk.png create mode 100755 app/assets/images/emoji/godmode.png create mode 100755 app/assets/images/emoji/golf.png create mode 100755 app/assets/images/emoji/grapes.png create mode 100755 app/assets/images/emoji/green_apple.png create mode 100755 app/assets/images/emoji/green_book.png create mode 100755 app/assets/images/emoji/green_heart.png create mode 100755 app/assets/images/emoji/grey_exclamation.png create mode 100755 app/assets/images/emoji/grey_question.png create mode 100755 app/assets/images/emoji/grin.png create mode 100755 app/assets/images/emoji/guardsman.png create mode 100755 app/assets/images/emoji/guitar.png create mode 100755 app/assets/images/emoji/gun.png create mode 100755 app/assets/images/emoji/haircut.png create mode 100755 app/assets/images/emoji/hamburger.png create mode 100755 app/assets/images/emoji/hammer.png create mode 100755 app/assets/images/emoji/hamster.png create mode 100755 app/assets/images/emoji/hand.png create mode 100755 app/assets/images/emoji/handbag.png create mode 100755 app/assets/images/emoji/hankey.png create mode 100755 app/assets/images/emoji/hash.png create mode 100755 app/assets/images/emoji/hatched_chick.png create mode 100755 app/assets/images/emoji/hatching_chick.png create mode 100755 app/assets/images/emoji/headphones.png create mode 100755 app/assets/images/emoji/hear_no_evil.png create mode 100755 app/assets/images/emoji/heart.png create mode 100755 app/assets/images/emoji/heart_decoration.png create mode 100755 app/assets/images/emoji/heart_eyes.png create mode 100755 app/assets/images/emoji/heart_eyes_cat.png create mode 100755 app/assets/images/emoji/heartbeat.png create mode 100755 app/assets/images/emoji/heartpulse.png create mode 100755 app/assets/images/emoji/hearts.png create mode 100755 app/assets/images/emoji/heavy_check_mark.png create mode 100755 app/assets/images/emoji/heavy_division_sign.png create mode 100755 app/assets/images/emoji/heavy_dollar_sign.png create mode 100755 app/assets/images/emoji/heavy_exclamation_mark.png create mode 100755 app/assets/images/emoji/heavy_minus_sign.png create mode 100755 app/assets/images/emoji/heavy_multiplication_x.png create mode 100755 app/assets/images/emoji/heavy_plus_sign.png create mode 100755 app/assets/images/emoji/helicopter.png create mode 100755 app/assets/images/emoji/herb.png create mode 100755 app/assets/images/emoji/hibiscus.png create mode 100755 app/assets/images/emoji/high_brightness.png create mode 100755 app/assets/images/emoji/high_heel.png create mode 100755 app/assets/images/emoji/hocho.png create mode 100755 app/assets/images/emoji/honey_pot.png create mode 100755 app/assets/images/emoji/honeybee.png create mode 100755 app/assets/images/emoji/horse.png create mode 100755 app/assets/images/emoji/horse_racing.png create mode 100755 app/assets/images/emoji/hospital.png create mode 100755 app/assets/images/emoji/hotel.png create mode 100755 app/assets/images/emoji/hotsprings.png create mode 100755 app/assets/images/emoji/hourglass.png create mode 100755 app/assets/images/emoji/house.png create mode 100755 app/assets/images/emoji/hurtrealbad.png create mode 100755 app/assets/images/emoji/ice_cream.png create mode 100755 app/assets/images/emoji/icecream.png create mode 100755 app/assets/images/emoji/id.png create mode 100755 app/assets/images/emoji/ideograph_advantage.png create mode 100755 app/assets/images/emoji/imp.png create mode 100755 app/assets/images/emoji/inbox_tray.png create mode 100755 app/assets/images/emoji/incoming_envelope.png create mode 100755 app/assets/images/emoji/information_desk_person.png create mode 100755 app/assets/images/emoji/information_source.png create mode 100755 app/assets/images/emoji/innocent.png create mode 100755 app/assets/images/emoji/interrobang.png create mode 100755 app/assets/images/emoji/iphone.png create mode 100755 app/assets/images/emoji/it.png create mode 100755 app/assets/images/emoji/izakaya_lantern.png create mode 100755 app/assets/images/emoji/jack_o_lantern.png create mode 100755 app/assets/images/emoji/japan.png create mode 100755 app/assets/images/emoji/japanese_castle.png create mode 100755 app/assets/images/emoji/japanese_goblin.png create mode 100755 app/assets/images/emoji/japanese_ogre.png create mode 100755 app/assets/images/emoji/jeans.png create mode 100755 app/assets/images/emoji/joy.png create mode 100755 app/assets/images/emoji/joy_cat.png create mode 100755 app/assets/images/emoji/jp.png create mode 100755 app/assets/images/emoji/key.png create mode 100755 app/assets/images/emoji/keycap_ten.png create mode 100755 app/assets/images/emoji/kimono.png create mode 100755 app/assets/images/emoji/kiss.png create mode 100755 app/assets/images/emoji/kissing_cat.png create mode 100755 app/assets/images/emoji/kissing_face.png create mode 100755 app/assets/images/emoji/kissing_heart.png create mode 100755 app/assets/images/emoji/koala.png create mode 100755 app/assets/images/emoji/koko.png create mode 100755 app/assets/images/emoji/kr.png create mode 100755 app/assets/images/emoji/large_blue_circle.png create mode 100755 app/assets/images/emoji/large_blue_diamond.png create mode 100755 app/assets/images/emoji/large_orange_diamond.png create mode 100755 app/assets/images/emoji/last_quarter_moon.png create mode 100755 app/assets/images/emoji/last_quarter_moon_with_face.png create mode 100755 app/assets/images/emoji/laughing.png create mode 100755 app/assets/images/emoji/leaves.png create mode 100755 app/assets/images/emoji/ledger.png create mode 100755 app/assets/images/emoji/left_luggage.png create mode 100755 app/assets/images/emoji/left_right_arrow.png create mode 100755 app/assets/images/emoji/leftwards_arrow_with_hook.png create mode 100755 app/assets/images/emoji/lemon.png create mode 100755 app/assets/images/emoji/leo.png create mode 100755 app/assets/images/emoji/leopard.png create mode 100755 app/assets/images/emoji/libra.png create mode 100755 app/assets/images/emoji/light_rail.png create mode 100755 app/assets/images/emoji/link.png create mode 100755 app/assets/images/emoji/lips.png create mode 100755 app/assets/images/emoji/lipstick.png create mode 100755 app/assets/images/emoji/lock.png create mode 100755 app/assets/images/emoji/lock_with_ink_pen.png create mode 100755 app/assets/images/emoji/lollipop.png create mode 100755 app/assets/images/emoji/loop.png create mode 100755 app/assets/images/emoji/loudspeaker.png create mode 100755 app/assets/images/emoji/love_hotel.png create mode 100755 app/assets/images/emoji/love_letter.png create mode 100755 app/assets/images/emoji/low_brightness.png create mode 100755 app/assets/images/emoji/m.png create mode 100755 app/assets/images/emoji/mag.png create mode 100755 app/assets/images/emoji/mag_right.png create mode 100755 app/assets/images/emoji/mahjong.png create mode 100755 app/assets/images/emoji/mailbox.png create mode 100755 app/assets/images/emoji/mailbox_closed.png create mode 100755 app/assets/images/emoji/mailbox_with_mail.png create mode 100755 app/assets/images/emoji/mailbox_with_no_mail.png create mode 100755 app/assets/images/emoji/man.png create mode 100755 app/assets/images/emoji/man_with_gua_pi_mao.png create mode 100755 app/assets/images/emoji/man_with_turban.png create mode 100755 app/assets/images/emoji/mans_shoe.png create mode 100755 app/assets/images/emoji/maple_leaf.png create mode 100755 app/assets/images/emoji/mask.png create mode 100755 app/assets/images/emoji/massage.png create mode 100755 app/assets/images/emoji/meat_on_bone.png create mode 100755 app/assets/images/emoji/mega.png create mode 100755 app/assets/images/emoji/melon.png create mode 100755 app/assets/images/emoji/memo.png create mode 100755 app/assets/images/emoji/mens.png create mode 100755 app/assets/images/emoji/metal.png create mode 100755 app/assets/images/emoji/metro.png create mode 100755 app/assets/images/emoji/microphone.png create mode 100755 app/assets/images/emoji/microscope.png create mode 100755 app/assets/images/emoji/milky_way.png create mode 100755 app/assets/images/emoji/minibus.png create mode 100755 app/assets/images/emoji/minidisc.png create mode 100755 app/assets/images/emoji/mobile_phone_off.png create mode 100755 app/assets/images/emoji/money_with_wings.png create mode 100755 app/assets/images/emoji/moneybag.png create mode 100755 app/assets/images/emoji/monkey.png create mode 100755 app/assets/images/emoji/monkey_face.png create mode 100755 app/assets/images/emoji/monorail.png create mode 100755 app/assets/images/emoji/moon.png create mode 100755 app/assets/images/emoji/mortar_board.png create mode 100755 app/assets/images/emoji/mount_fuji.png create mode 100755 app/assets/images/emoji/mountain_bicyclist.png create mode 100755 app/assets/images/emoji/mountain_cableway.png create mode 100755 app/assets/images/emoji/mountain_railway.png create mode 100755 app/assets/images/emoji/mouse.png create mode 100755 app/assets/images/emoji/mouse2.png create mode 100755 app/assets/images/emoji/movie_camera.png create mode 100755 app/assets/images/emoji/moyai.png create mode 100755 app/assets/images/emoji/muscle.png create mode 100755 app/assets/images/emoji/mushroom.png create mode 100755 app/assets/images/emoji/musical_keyboard.png create mode 100755 app/assets/images/emoji/musical_note.png create mode 100755 app/assets/images/emoji/musical_score.png create mode 100755 app/assets/images/emoji/mute.png create mode 100755 app/assets/images/emoji/nail_care.png create mode 100755 app/assets/images/emoji/name_badge.png create mode 100755 app/assets/images/emoji/neckbeard.png create mode 100755 app/assets/images/emoji/necktie.png create mode 100755 app/assets/images/emoji/negative_squared_cross_mark.png create mode 100755 app/assets/images/emoji/neutral_face.png create mode 100755 app/assets/images/emoji/new.png create mode 100755 app/assets/images/emoji/new_moon.png create mode 100755 app/assets/images/emoji/new_moon_with_face.png create mode 100755 app/assets/images/emoji/newspaper.png create mode 100755 app/assets/images/emoji/ng.png create mode 100755 app/assets/images/emoji/nine.png create mode 100755 app/assets/images/emoji/no_bell.png create mode 100755 app/assets/images/emoji/no_bicycles.png create mode 100755 app/assets/images/emoji/no_entry.png create mode 100755 app/assets/images/emoji/no_entry_sign.png create mode 100755 app/assets/images/emoji/no_good.png create mode 100755 app/assets/images/emoji/no_mobile_phones.png create mode 100755 app/assets/images/emoji/no_mouth.png create mode 100755 app/assets/images/emoji/no_pedestrians.png create mode 100755 app/assets/images/emoji/no_smoking.png create mode 100755 app/assets/images/emoji/non-potable_water.png create mode 100755 app/assets/images/emoji/nose.png create mode 100755 app/assets/images/emoji/notebook.png create mode 100755 app/assets/images/emoji/notebook_with_decorative_cover.png create mode 100755 app/assets/images/emoji/notes.png create mode 100755 app/assets/images/emoji/nut_and_bolt.png create mode 100755 app/assets/images/emoji/o.png create mode 100755 app/assets/images/emoji/o2.png create mode 100755 app/assets/images/emoji/ocean.png create mode 100755 app/assets/images/emoji/octocat.png create mode 100755 app/assets/images/emoji/octopus.png create mode 100755 app/assets/images/emoji/oden.png create mode 100755 app/assets/images/emoji/office.png create mode 100755 app/assets/images/emoji/ok.png create mode 100755 app/assets/images/emoji/ok_hand.png create mode 100755 app/assets/images/emoji/ok_woman.png create mode 100755 app/assets/images/emoji/older_man.png create mode 100755 app/assets/images/emoji/older_woman.png create mode 100755 app/assets/images/emoji/on.png create mode 100755 app/assets/images/emoji/oncoming_automobile.png create mode 100755 app/assets/images/emoji/oncoming_bus.png create mode 100755 app/assets/images/emoji/oncoming_police_car.png create mode 100755 app/assets/images/emoji/oncoming_taxi.png create mode 100755 app/assets/images/emoji/one.png create mode 100755 app/assets/images/emoji/open_file_folder.png create mode 100755 app/assets/images/emoji/open_hands.png create mode 100755 app/assets/images/emoji/ophiuchus.png create mode 100755 app/assets/images/emoji/orange_book.png create mode 100755 app/assets/images/emoji/outbox_tray.png create mode 100755 app/assets/images/emoji/ox.png create mode 100755 app/assets/images/emoji/page_facing_up.png create mode 100755 app/assets/images/emoji/page_with_curl.png create mode 100755 app/assets/images/emoji/pager.png create mode 100755 app/assets/images/emoji/palm_tree.png create mode 100755 app/assets/images/emoji/panda_face.png create mode 100755 app/assets/images/emoji/paperclip.png create mode 100755 app/assets/images/emoji/parking.png create mode 100755 app/assets/images/emoji/part_alternation_mark.png create mode 100755 app/assets/images/emoji/partly_sunny.png create mode 100755 app/assets/images/emoji/passport_control.png create mode 100755 app/assets/images/emoji/paw_prints.png create mode 100755 app/assets/images/emoji/peach.png create mode 100755 app/assets/images/emoji/pear.png create mode 100755 app/assets/images/emoji/pencil.png create mode 100755 app/assets/images/emoji/pencil2.png create mode 100755 app/assets/images/emoji/penguin.png create mode 100755 app/assets/images/emoji/pensive.png create mode 100755 app/assets/images/emoji/performing_arts.png create mode 100755 app/assets/images/emoji/persevere.png create mode 100755 app/assets/images/emoji/person_frowning.png create mode 100755 app/assets/images/emoji/person_with_blond_hair.png create mode 100755 app/assets/images/emoji/person_with_pouting_face.png create mode 100755 app/assets/images/emoji/phone.png create mode 100755 app/assets/images/emoji/pig.png create mode 100755 app/assets/images/emoji/pig2.png create mode 100755 app/assets/images/emoji/pig_nose.png create mode 100755 app/assets/images/emoji/pill.png create mode 100755 app/assets/images/emoji/pineapple.png create mode 100755 app/assets/images/emoji/pisces.png create mode 100755 app/assets/images/emoji/pizza.png create mode 100755 app/assets/images/emoji/plus1.png create mode 100755 app/assets/images/emoji/point_down.png create mode 100755 app/assets/images/emoji/point_left.png create mode 100755 app/assets/images/emoji/point_right.png create mode 100755 app/assets/images/emoji/point_up.png create mode 100755 app/assets/images/emoji/point_up_2.png create mode 100755 app/assets/images/emoji/police_car.png create mode 100755 app/assets/images/emoji/poodle.png create mode 100755 app/assets/images/emoji/poop.png create mode 100755 app/assets/images/emoji/post_office.png create mode 100755 app/assets/images/emoji/postal_horn.png create mode 100755 app/assets/images/emoji/postbox.png create mode 100755 app/assets/images/emoji/potable_water.png create mode 100755 app/assets/images/emoji/pouch.png create mode 100755 app/assets/images/emoji/poultry_leg.png create mode 100755 app/assets/images/emoji/pound.png create mode 100755 app/assets/images/emoji/pouting_cat.png create mode 100755 app/assets/images/emoji/pray.png create mode 100755 app/assets/images/emoji/princess.png create mode 100755 app/assets/images/emoji/punch.png create mode 100755 app/assets/images/emoji/purple_heart.png create mode 100755 app/assets/images/emoji/purse.png create mode 100755 app/assets/images/emoji/pushpin.png create mode 100755 app/assets/images/emoji/put_litter_in_its_place.png create mode 100755 app/assets/images/emoji/question.png create mode 100755 app/assets/images/emoji/rabbit.png create mode 100755 app/assets/images/emoji/rabbit2.png create mode 100755 app/assets/images/emoji/racehorse.png create mode 100755 app/assets/images/emoji/radio.png create mode 100755 app/assets/images/emoji/radio_button.png create mode 100755 app/assets/images/emoji/rage.png create mode 100755 app/assets/images/emoji/rage1.png create mode 100755 app/assets/images/emoji/rage2.png create mode 100755 app/assets/images/emoji/rage3.png create mode 100755 app/assets/images/emoji/rage4.png create mode 100755 app/assets/images/emoji/railway_car.png create mode 100755 app/assets/images/emoji/rainbow.png create mode 100755 app/assets/images/emoji/raised_hand.png create mode 100755 app/assets/images/emoji/raised_hands.png create mode 100755 app/assets/images/emoji/ram.png create mode 100755 app/assets/images/emoji/ramen.png create mode 100755 app/assets/images/emoji/rat.png create mode 100755 app/assets/images/emoji/recycle.png create mode 100755 app/assets/images/emoji/red_car.png create mode 100755 app/assets/images/emoji/red_circle.png create mode 100755 app/assets/images/emoji/registered.png create mode 100755 app/assets/images/emoji/relaxed.png create mode 100755 app/assets/images/emoji/relieved.png create mode 100755 app/assets/images/emoji/repeat.png create mode 100755 app/assets/images/emoji/repeat_one.png create mode 100755 app/assets/images/emoji/restroom.png create mode 100755 app/assets/images/emoji/revolving_hearts.png create mode 100755 app/assets/images/emoji/rewind.png create mode 100755 app/assets/images/emoji/ribbon.png create mode 100755 app/assets/images/emoji/rice.png create mode 100755 app/assets/images/emoji/rice_ball.png create mode 100755 app/assets/images/emoji/rice_cracker.png create mode 100755 app/assets/images/emoji/rice_scene.png create mode 100755 app/assets/images/emoji/ring.png create mode 100755 app/assets/images/emoji/rocket.png create mode 100755 app/assets/images/emoji/roller_coaster.png create mode 100755 app/assets/images/emoji/rooster.png create mode 100755 app/assets/images/emoji/rose.png create mode 100755 app/assets/images/emoji/rotating_light.png create mode 100755 app/assets/images/emoji/round_pushpin.png create mode 100755 app/assets/images/emoji/rowboat.png create mode 100755 app/assets/images/emoji/ru.png create mode 100755 app/assets/images/emoji/rugby_football.png create mode 100755 app/assets/images/emoji/runner.png create mode 100755 app/assets/images/emoji/running.png create mode 100755 app/assets/images/emoji/running_shirt_with_sash.png create mode 100755 app/assets/images/emoji/sa.png create mode 100755 app/assets/images/emoji/sagittarius.png create mode 100755 app/assets/images/emoji/sailboat.png create mode 100755 app/assets/images/emoji/sake.png create mode 100755 app/assets/images/emoji/sandal.png create mode 100755 app/assets/images/emoji/santa.png create mode 100755 app/assets/images/emoji/satellite.png create mode 100755 app/assets/images/emoji/satisfied.png create mode 100755 app/assets/images/emoji/saxophone.png create mode 100755 app/assets/images/emoji/school.png create mode 100755 app/assets/images/emoji/school_satchel.png create mode 100755 app/assets/images/emoji/scissors.png create mode 100755 app/assets/images/emoji/scorpius.png create mode 100755 app/assets/images/emoji/scream.png create mode 100755 app/assets/images/emoji/scream_cat.png create mode 100755 app/assets/images/emoji/scroll.png create mode 100755 app/assets/images/emoji/seat.png create mode 100755 app/assets/images/emoji/secret.png create mode 100755 app/assets/images/emoji/see_no_evil.png create mode 100755 app/assets/images/emoji/seedling.png create mode 100755 app/assets/images/emoji/seven.png create mode 100755 app/assets/images/emoji/shaved_ice.png create mode 100755 app/assets/images/emoji/sheep.png create mode 100755 app/assets/images/emoji/shell.png create mode 100755 app/assets/images/emoji/ship.png create mode 100755 app/assets/images/emoji/shipit.png create mode 100755 app/assets/images/emoji/shirt.png create mode 100755 app/assets/images/emoji/shit.png create mode 100755 app/assets/images/emoji/shoe.png create mode 100755 app/assets/images/emoji/shower.png create mode 100755 app/assets/images/emoji/signal_strength.png create mode 100755 app/assets/images/emoji/six.png create mode 100755 app/assets/images/emoji/six_pointed_star.png create mode 100755 app/assets/images/emoji/ski.png create mode 100755 app/assets/images/emoji/skull.png create mode 100755 app/assets/images/emoji/sleepy.png create mode 100755 app/assets/images/emoji/slot_machine.png create mode 100755 app/assets/images/emoji/small_blue_diamond.png create mode 100755 app/assets/images/emoji/small_orange_diamond.png create mode 100755 app/assets/images/emoji/small_red_triangle.png create mode 100755 app/assets/images/emoji/small_red_triangle_down.png create mode 100755 app/assets/images/emoji/smile.png create mode 100755 app/assets/images/emoji/smile_cat.png create mode 100755 app/assets/images/emoji/smiley.png create mode 100755 app/assets/images/emoji/smiley_cat.png create mode 100755 app/assets/images/emoji/smiling_imp.png create mode 100755 app/assets/images/emoji/smirk.png create mode 100755 app/assets/images/emoji/smirk_cat.png create mode 100755 app/assets/images/emoji/smoking.png create mode 100755 app/assets/images/emoji/snail.png create mode 100755 app/assets/images/emoji/snake.png create mode 100755 app/assets/images/emoji/snowboarder.png create mode 100755 app/assets/images/emoji/snowflake.png create mode 100755 app/assets/images/emoji/snowman.png create mode 100755 app/assets/images/emoji/sob.png create mode 100755 app/assets/images/emoji/soccer.png create mode 100755 app/assets/images/emoji/soon.png create mode 100755 app/assets/images/emoji/sos.png create mode 100755 app/assets/images/emoji/sound.png create mode 100755 app/assets/images/emoji/space_invader.png create mode 100755 app/assets/images/emoji/spades.png create mode 100755 app/assets/images/emoji/spaghetti.png create mode 100755 app/assets/images/emoji/sparkler.png create mode 100755 app/assets/images/emoji/sparkles.png create mode 100755 app/assets/images/emoji/speak_no_evil.png create mode 100755 app/assets/images/emoji/speaker.png create mode 100755 app/assets/images/emoji/speech_balloon.png create mode 100755 app/assets/images/emoji/speedboat.png create mode 100755 app/assets/images/emoji/squirrel.png create mode 100755 app/assets/images/emoji/star.png create mode 100755 app/assets/images/emoji/star2.png create mode 100755 app/assets/images/emoji/stars.png create mode 100755 app/assets/images/emoji/station.png create mode 100755 app/assets/images/emoji/statue_of_liberty.png create mode 100755 app/assets/images/emoji/steam_locomotive.png create mode 100755 app/assets/images/emoji/stew.png create mode 100755 app/assets/images/emoji/straight_ruler.png create mode 100755 app/assets/images/emoji/strawberry.png create mode 100755 app/assets/images/emoji/sun_with_face.png create mode 100755 app/assets/images/emoji/sunflower.png create mode 100755 app/assets/images/emoji/sunglasses.png create mode 100755 app/assets/images/emoji/sunny.png create mode 100755 app/assets/images/emoji/sunrise.png create mode 100755 app/assets/images/emoji/sunrise_over_mountains.png create mode 100755 app/assets/images/emoji/surfer.png create mode 100755 app/assets/images/emoji/sushi.png create mode 100755 app/assets/images/emoji/suspect.png create mode 100755 app/assets/images/emoji/suspension_railway.png create mode 100755 app/assets/images/emoji/sweat.png create mode 100755 app/assets/images/emoji/sweat_drops.png create mode 100755 app/assets/images/emoji/sweat_smile.png create mode 100755 app/assets/images/emoji/sweet_potato.png create mode 100755 app/assets/images/emoji/swimmer.png create mode 100755 app/assets/images/emoji/symbols.png create mode 100755 app/assets/images/emoji/syringe.png create mode 100755 app/assets/images/emoji/tada.png create mode 100755 app/assets/images/emoji/tanabata_tree.png create mode 100755 app/assets/images/emoji/tangerine.png create mode 100755 app/assets/images/emoji/taurus.png create mode 100755 app/assets/images/emoji/taxi.png create mode 100755 app/assets/images/emoji/tea.png create mode 100755 app/assets/images/emoji/telephone.png create mode 100755 app/assets/images/emoji/telephone_receiver.png create mode 100755 app/assets/images/emoji/telescope.png create mode 100755 app/assets/images/emoji/tennis.png create mode 100755 app/assets/images/emoji/tent.png create mode 100755 app/assets/images/emoji/thought_balloon.png create mode 100755 app/assets/images/emoji/three.png create mode 100755 app/assets/images/emoji/thumbsdown.png create mode 100755 app/assets/images/emoji/thumbsup.png create mode 100755 app/assets/images/emoji/ticket.png create mode 100755 app/assets/images/emoji/tiger.png create mode 100755 app/assets/images/emoji/tiger2.png create mode 100755 app/assets/images/emoji/tired_face.png create mode 100755 app/assets/images/emoji/tm.png create mode 100755 app/assets/images/emoji/toilet.png create mode 100755 app/assets/images/emoji/tokyo_tower.png create mode 100755 app/assets/images/emoji/tomato.png create mode 100755 app/assets/images/emoji/tongue.png create mode 100755 app/assets/images/emoji/tongue2.png create mode 100755 app/assets/images/emoji/top.png create mode 100755 app/assets/images/emoji/tophat.png create mode 100755 app/assets/images/emoji/tractor.png create mode 100755 app/assets/images/emoji/traffic_light.png create mode 100755 app/assets/images/emoji/train.png create mode 100755 app/assets/images/emoji/train2.png create mode 100755 app/assets/images/emoji/tram.png create mode 100755 app/assets/images/emoji/triangular_flag_on_post.png create mode 100755 app/assets/images/emoji/triangular_ruler.png create mode 100755 app/assets/images/emoji/trident.png create mode 100755 app/assets/images/emoji/triumph.png create mode 100755 app/assets/images/emoji/trolleybus.png create mode 100755 app/assets/images/emoji/trollface.png create mode 100755 app/assets/images/emoji/trophy.png create mode 100755 app/assets/images/emoji/tropical_drink.png create mode 100755 app/assets/images/emoji/tropical_fish.png create mode 100755 app/assets/images/emoji/truck.png create mode 100755 app/assets/images/emoji/trumpet.png create mode 100755 app/assets/images/emoji/tshirt.png create mode 100755 app/assets/images/emoji/tulip.png create mode 100755 app/assets/images/emoji/turtle.png create mode 100755 app/assets/images/emoji/tv.png create mode 100755 app/assets/images/emoji/twisted_rightwards_arrows.png create mode 100755 app/assets/images/emoji/two.png create mode 100755 app/assets/images/emoji/two_hearts.png create mode 100755 app/assets/images/emoji/two_men_holding_hands.png create mode 100755 app/assets/images/emoji/two_women_holding_hands.png create mode 100755 app/assets/images/emoji/u5272.png create mode 100755 app/assets/images/emoji/u5408.png create mode 100755 app/assets/images/emoji/u55b6.png create mode 100755 app/assets/images/emoji/u6307.png create mode 100755 app/assets/images/emoji/u6708.png create mode 100755 app/assets/images/emoji/u6709.png create mode 100755 app/assets/images/emoji/u6e80.png create mode 100755 app/assets/images/emoji/u7121.png create mode 100755 app/assets/images/emoji/u7533.png create mode 100755 app/assets/images/emoji/u7981.png create mode 100755 app/assets/images/emoji/u7a7a.png create mode 100755 app/assets/images/emoji/uk.png create mode 100755 app/assets/images/emoji/umbrella.png create mode 100755 app/assets/images/emoji/unamused.png create mode 100755 app/assets/images/emoji/underage.png create mode 100755 app/assets/images/emoji/unlock.png create mode 100755 app/assets/images/emoji/up.png create mode 100755 app/assets/images/emoji/us.png create mode 100755 app/assets/images/emoji/v.png create mode 100755 app/assets/images/emoji/vertical_traffic_light.png create mode 100755 app/assets/images/emoji/vhs.png create mode 100755 app/assets/images/emoji/vibration_mode.png create mode 100755 app/assets/images/emoji/video_camera.png create mode 100755 app/assets/images/emoji/video_game.png create mode 100755 app/assets/images/emoji/violin.png create mode 100755 app/assets/images/emoji/virgo.png create mode 100755 app/assets/images/emoji/volcano.png create mode 100755 app/assets/images/emoji/vs.png create mode 100755 app/assets/images/emoji/walking.png create mode 100755 app/assets/images/emoji/waning_crescent_moon.png create mode 100755 app/assets/images/emoji/waning_gibbous_moon.png create mode 100755 app/assets/images/emoji/warning.png create mode 100755 app/assets/images/emoji/watch.png create mode 100755 app/assets/images/emoji/water_buffalo.png create mode 100755 app/assets/images/emoji/watermelon.png create mode 100755 app/assets/images/emoji/wave.png create mode 100755 app/assets/images/emoji/wavy_dash.png create mode 100755 app/assets/images/emoji/waxing_crescent_moon.png create mode 100755 app/assets/images/emoji/waxing_gibbous_moon.png create mode 100755 app/assets/images/emoji/wc.png create mode 100755 app/assets/images/emoji/weary.png create mode 100755 app/assets/images/emoji/wedding.png create mode 100755 app/assets/images/emoji/whale.png create mode 100755 app/assets/images/emoji/whale2.png create mode 100755 app/assets/images/emoji/wheelchair.png create mode 100755 app/assets/images/emoji/white_circle.png create mode 100755 app/assets/images/emoji/white_flower.png create mode 100755 app/assets/images/emoji/white_square.png create mode 100755 app/assets/images/emoji/wind_chime.png create mode 100755 app/assets/images/emoji/wine_glass.png create mode 100755 app/assets/images/emoji/wink.png create mode 100755 app/assets/images/emoji/wink2.png create mode 100755 app/assets/images/emoji/wolf.png create mode 100755 app/assets/images/emoji/woman.png create mode 100755 app/assets/images/emoji/womans_clothes.png create mode 100755 app/assets/images/emoji/womans_hat.png create mode 100755 app/assets/images/emoji/womens.png create mode 100755 app/assets/images/emoji/wrench.png create mode 100755 app/assets/images/emoji/x.png create mode 100755 app/assets/images/emoji/yellow_heart.png create mode 100755 app/assets/images/emoji/yen.png create mode 100755 app/assets/images/emoji/yum.png create mode 100755 app/assets/images/emoji/zap.png create mode 100755 app/assets/images/emoji/zero.png create mode 100755 app/assets/images/emoji/zzz.png diff --git a/app/assets/images/emoji/+1.png b/app/assets/images/emoji/+1.png new file mode 100755 index 00000000000..3a43ecae295 Binary files /dev/null and b/app/assets/images/emoji/+1.png differ diff --git a/app/assets/images/emoji/-1.png b/app/assets/images/emoji/-1.png new file mode 100755 index 00000000000..41c6b825d6a Binary files /dev/null and b/app/assets/images/emoji/-1.png differ diff --git a/app/assets/images/emoji/100.png b/app/assets/images/emoji/100.png new file mode 100755 index 00000000000..bce9ab14f59 Binary files /dev/null and b/app/assets/images/emoji/100.png differ diff --git a/app/assets/images/emoji/109.png b/app/assets/images/emoji/109.png new file mode 100755 index 00000000000..74b9d5d38cd Binary files /dev/null and b/app/assets/images/emoji/109.png differ diff --git a/app/assets/images/emoji/1234.png b/app/assets/images/emoji/1234.png new file mode 100755 index 00000000000..c47c2e1f9f0 Binary files /dev/null and b/app/assets/images/emoji/1234.png differ diff --git a/app/assets/images/emoji/8ball.png b/app/assets/images/emoji/8ball.png new file mode 100755 index 00000000000..c2c710d4501 Binary files /dev/null and b/app/assets/images/emoji/8ball.png differ diff --git a/app/assets/images/emoji/a.png b/app/assets/images/emoji/a.png new file mode 100755 index 00000000000..09ff6d6f184 Binary files /dev/null and b/app/assets/images/emoji/a.png differ diff --git a/app/assets/images/emoji/ab.png b/app/assets/images/emoji/ab.png new file mode 100755 index 00000000000..2a522204767 Binary files /dev/null and b/app/assets/images/emoji/ab.png differ diff --git a/app/assets/images/emoji/abc.png b/app/assets/images/emoji/abc.png new file mode 100755 index 00000000000..505d40a1557 Binary files /dev/null and b/app/assets/images/emoji/abc.png differ diff --git a/app/assets/images/emoji/abcd.png b/app/assets/images/emoji/abcd.png new file mode 100755 index 00000000000..5218470b63c Binary files /dev/null and b/app/assets/images/emoji/abcd.png differ diff --git a/app/assets/images/emoji/accept.png b/app/assets/images/emoji/accept.png new file mode 100755 index 00000000000..2d200903188 Binary files /dev/null and b/app/assets/images/emoji/accept.png differ diff --git a/app/assets/images/emoji/aerial_tramway.png b/app/assets/images/emoji/aerial_tramway.png new file mode 100755 index 00000000000..38f6dfe2334 Binary files /dev/null and b/app/assets/images/emoji/aerial_tramway.png differ diff --git a/app/assets/images/emoji/airplane.png b/app/assets/images/emoji/airplane.png new file mode 100755 index 00000000000..8407cb67575 Binary files /dev/null and b/app/assets/images/emoji/airplane.png differ diff --git a/app/assets/images/emoji/alarm_clock.png b/app/assets/images/emoji/alarm_clock.png new file mode 100755 index 00000000000..86ca8c8ed45 Binary files /dev/null and b/app/assets/images/emoji/alarm_clock.png differ diff --git a/app/assets/images/emoji/alien.png b/app/assets/images/emoji/alien.png new file mode 100755 index 00000000000..416de47be46 Binary files /dev/null and b/app/assets/images/emoji/alien.png differ diff --git a/app/assets/images/emoji/ambulance.png b/app/assets/images/emoji/ambulance.png new file mode 100755 index 00000000000..b740f45dba2 Binary files /dev/null and b/app/assets/images/emoji/ambulance.png differ diff --git a/app/assets/images/emoji/anchor.png b/app/assets/images/emoji/anchor.png new file mode 100755 index 00000000000..0c5192e6473 Binary files /dev/null and b/app/assets/images/emoji/anchor.png differ diff --git a/app/assets/images/emoji/angel.png b/app/assets/images/emoji/angel.png new file mode 100755 index 00000000000..da52c310c64 Binary files /dev/null and b/app/assets/images/emoji/angel.png differ diff --git a/app/assets/images/emoji/anger.png b/app/assets/images/emoji/anger.png new file mode 100755 index 00000000000..6fb4dca1854 Binary files /dev/null and b/app/assets/images/emoji/anger.png differ diff --git a/app/assets/images/emoji/angry.png b/app/assets/images/emoji/angry.png new file mode 100755 index 00000000000..f95bfa897ed Binary files /dev/null and b/app/assets/images/emoji/angry.png differ diff --git a/app/assets/images/emoji/ant.png b/app/assets/images/emoji/ant.png new file mode 100755 index 00000000000..b92d1cc14bd Binary files /dev/null and b/app/assets/images/emoji/ant.png differ diff --git a/app/assets/images/emoji/apple.png b/app/assets/images/emoji/apple.png new file mode 100755 index 00000000000..08aa17b9513 Binary files /dev/null and b/app/assets/images/emoji/apple.png differ diff --git a/app/assets/images/emoji/aquarius.png b/app/assets/images/emoji/aquarius.png new file mode 100755 index 00000000000..cbff66edcf3 Binary files /dev/null and b/app/assets/images/emoji/aquarius.png differ diff --git a/app/assets/images/emoji/aries.png b/app/assets/images/emoji/aries.png new file mode 100755 index 00000000000..899902237c9 Binary files /dev/null and b/app/assets/images/emoji/aries.png differ diff --git a/app/assets/images/emoji/arrow_backward.png b/app/assets/images/emoji/arrow_backward.png new file mode 100755 index 00000000000..088621834f7 Binary files /dev/null and b/app/assets/images/emoji/arrow_backward.png differ diff --git a/app/assets/images/emoji/arrow_double_down.png b/app/assets/images/emoji/arrow_double_down.png new file mode 100755 index 00000000000..2ecbebcda13 Binary files /dev/null and b/app/assets/images/emoji/arrow_double_down.png differ diff --git a/app/assets/images/emoji/arrow_double_up.png b/app/assets/images/emoji/arrow_double_up.png new file mode 100755 index 00000000000..d42979d4bf6 Binary files /dev/null and b/app/assets/images/emoji/arrow_double_up.png differ diff --git a/app/assets/images/emoji/arrow_down.png b/app/assets/images/emoji/arrow_down.png new file mode 100755 index 00000000000..e6702f02bae Binary files /dev/null and b/app/assets/images/emoji/arrow_down.png differ diff --git a/app/assets/images/emoji/arrow_down_small.png b/app/assets/images/emoji/arrow_down_small.png new file mode 100755 index 00000000000..f7f2d510137 Binary files /dev/null and b/app/assets/images/emoji/arrow_down_small.png differ diff --git a/app/assets/images/emoji/arrow_forward.png b/app/assets/images/emoji/arrow_forward.png new file mode 100755 index 00000000000..fbfe711b64d Binary files /dev/null and b/app/assets/images/emoji/arrow_forward.png differ diff --git a/app/assets/images/emoji/arrow_heading_down.png b/app/assets/images/emoji/arrow_heading_down.png new file mode 100755 index 00000000000..56dd3b9d3c8 Binary files /dev/null and b/app/assets/images/emoji/arrow_heading_down.png differ diff --git a/app/assets/images/emoji/arrow_heading_up.png b/app/assets/images/emoji/arrow_heading_up.png new file mode 100755 index 00000000000..c8f670a1ef0 Binary files /dev/null and b/app/assets/images/emoji/arrow_heading_up.png differ diff --git a/app/assets/images/emoji/arrow_left.png b/app/assets/images/emoji/arrow_left.png new file mode 100755 index 00000000000..d64ac619c9d Binary files /dev/null and b/app/assets/images/emoji/arrow_left.png differ diff --git a/app/assets/images/emoji/arrow_lower_left.png b/app/assets/images/emoji/arrow_lower_left.png new file mode 100755 index 00000000000..55fb03c4121 Binary files /dev/null and b/app/assets/images/emoji/arrow_lower_left.png differ diff --git a/app/assets/images/emoji/arrow_lower_right.png b/app/assets/images/emoji/arrow_lower_right.png new file mode 100755 index 00000000000..da8fb8294d9 Binary files /dev/null and b/app/assets/images/emoji/arrow_lower_right.png differ diff --git a/app/assets/images/emoji/arrow_right.png b/app/assets/images/emoji/arrow_right.png new file mode 100755 index 00000000000..6d483b5144f Binary files /dev/null and b/app/assets/images/emoji/arrow_right.png differ diff --git a/app/assets/images/emoji/arrow_right_hook.png b/app/assets/images/emoji/arrow_right_hook.png new file mode 100755 index 00000000000..8b4ea6e1720 Binary files /dev/null and b/app/assets/images/emoji/arrow_right_hook.png differ diff --git a/app/assets/images/emoji/arrow_up.png b/app/assets/images/emoji/arrow_up.png new file mode 100755 index 00000000000..b5b0688d3c6 Binary files /dev/null and b/app/assets/images/emoji/arrow_up.png differ diff --git a/app/assets/images/emoji/arrow_up_down.png b/app/assets/images/emoji/arrow_up_down.png new file mode 100755 index 00000000000..b718c214582 Binary files /dev/null and b/app/assets/images/emoji/arrow_up_down.png differ diff --git a/app/assets/images/emoji/arrow_up_small.png b/app/assets/images/emoji/arrow_up_small.png new file mode 100755 index 00000000000..12173319772 Binary files /dev/null and b/app/assets/images/emoji/arrow_up_small.png differ diff --git a/app/assets/images/emoji/arrow_upper_left.png b/app/assets/images/emoji/arrow_upper_left.png new file mode 100755 index 00000000000..e895fd7b628 Binary files /dev/null and b/app/assets/images/emoji/arrow_upper_left.png differ diff --git a/app/assets/images/emoji/arrow_upper_right.png b/app/assets/images/emoji/arrow_upper_right.png new file mode 100755 index 00000000000..e23790ba18d Binary files /dev/null and b/app/assets/images/emoji/arrow_upper_right.png differ diff --git a/app/assets/images/emoji/arrows_clockwise.png b/app/assets/images/emoji/arrows_clockwise.png new file mode 100755 index 00000000000..5f84d7e72b7 Binary files /dev/null and b/app/assets/images/emoji/arrows_clockwise.png differ diff --git a/app/assets/images/emoji/arrows_counterclockwise.png b/app/assets/images/emoji/arrows_counterclockwise.png new file mode 100755 index 00000000000..1933ae18b90 Binary files /dev/null and b/app/assets/images/emoji/arrows_counterclockwise.png differ diff --git a/app/assets/images/emoji/art.png b/app/assets/images/emoji/art.png new file mode 100755 index 00000000000..d45212b0340 Binary files /dev/null and b/app/assets/images/emoji/art.png differ diff --git a/app/assets/images/emoji/articulated_lorry.png b/app/assets/images/emoji/articulated_lorry.png new file mode 100755 index 00000000000..81ec1f91741 Binary files /dev/null and b/app/assets/images/emoji/articulated_lorry.png differ diff --git a/app/assets/images/emoji/astonished.png b/app/assets/images/emoji/astonished.png new file mode 100755 index 00000000000..858a83484a8 Binary files /dev/null and b/app/assets/images/emoji/astonished.png differ diff --git a/app/assets/images/emoji/atm.png b/app/assets/images/emoji/atm.png new file mode 100755 index 00000000000..c2846e79218 Binary files /dev/null and b/app/assets/images/emoji/atm.png differ diff --git a/app/assets/images/emoji/b.png b/app/assets/images/emoji/b.png new file mode 100755 index 00000000000..8742b3d2e3e Binary files /dev/null and b/app/assets/images/emoji/b.png differ diff --git a/app/assets/images/emoji/baby.png b/app/assets/images/emoji/baby.png new file mode 100755 index 00000000000..3b29da40b60 Binary files /dev/null and b/app/assets/images/emoji/baby.png differ diff --git a/app/assets/images/emoji/baby_bottle.png b/app/assets/images/emoji/baby_bottle.png new file mode 100755 index 00000000000..1b2cfe5e301 Binary files /dev/null and b/app/assets/images/emoji/baby_bottle.png differ diff --git a/app/assets/images/emoji/baby_chick.png b/app/assets/images/emoji/baby_chick.png new file mode 100755 index 00000000000..9be8d293006 Binary files /dev/null and b/app/assets/images/emoji/baby_chick.png differ diff --git a/app/assets/images/emoji/baby_symbol.png b/app/assets/images/emoji/baby_symbol.png new file mode 100755 index 00000000000..2e58725cf56 Binary files /dev/null and b/app/assets/images/emoji/baby_symbol.png differ diff --git a/app/assets/images/emoji/baggage_claim.png b/app/assets/images/emoji/baggage_claim.png new file mode 100755 index 00000000000..59ae044a45e Binary files /dev/null and b/app/assets/images/emoji/baggage_claim.png differ diff --git a/app/assets/images/emoji/balloon.png b/app/assets/images/emoji/balloon.png new file mode 100755 index 00000000000..03448970256 Binary files /dev/null and b/app/assets/images/emoji/balloon.png differ diff --git a/app/assets/images/emoji/ballot_box_with_check.png b/app/assets/images/emoji/ballot_box_with_check.png new file mode 100755 index 00000000000..f07a466c778 Binary files /dev/null and b/app/assets/images/emoji/ballot_box_with_check.png differ diff --git a/app/assets/images/emoji/bamboo.png b/app/assets/images/emoji/bamboo.png new file mode 100755 index 00000000000..fc858d0fc2c Binary files /dev/null and b/app/assets/images/emoji/bamboo.png differ diff --git a/app/assets/images/emoji/banana.png b/app/assets/images/emoji/banana.png new file mode 100755 index 00000000000..a0563afb958 Binary files /dev/null and b/app/assets/images/emoji/banana.png differ diff --git a/app/assets/images/emoji/bangbang.png b/app/assets/images/emoji/bangbang.png new file mode 100755 index 00000000000..7270f0afe6e Binary files /dev/null and b/app/assets/images/emoji/bangbang.png differ diff --git a/app/assets/images/emoji/bank.png b/app/assets/images/emoji/bank.png new file mode 100755 index 00000000000..1faa8777e42 Binary files /dev/null and b/app/assets/images/emoji/bank.png differ diff --git a/app/assets/images/emoji/bar_chart.png b/app/assets/images/emoji/bar_chart.png new file mode 100755 index 00000000000..7871cc60323 Binary files /dev/null and b/app/assets/images/emoji/bar_chart.png differ diff --git a/app/assets/images/emoji/barber.png b/app/assets/images/emoji/barber.png new file mode 100755 index 00000000000..a10cb232286 Binary files /dev/null and b/app/assets/images/emoji/barber.png differ diff --git a/app/assets/images/emoji/baseball.png b/app/assets/images/emoji/baseball.png new file mode 100755 index 00000000000..da004e2ead0 Binary files /dev/null and b/app/assets/images/emoji/baseball.png differ diff --git a/app/assets/images/emoji/basketball.png b/app/assets/images/emoji/basketball.png new file mode 100755 index 00000000000..ef694bec4c9 Binary files /dev/null and b/app/assets/images/emoji/basketball.png differ diff --git a/app/assets/images/emoji/bath.png b/app/assets/images/emoji/bath.png new file mode 100755 index 00000000000..8f75d1d2499 Binary files /dev/null and b/app/assets/images/emoji/bath.png differ diff --git a/app/assets/images/emoji/bathtub.png b/app/assets/images/emoji/bathtub.png new file mode 100755 index 00000000000..1c3f844ab26 Binary files /dev/null and b/app/assets/images/emoji/bathtub.png differ diff --git a/app/assets/images/emoji/battery.png b/app/assets/images/emoji/battery.png new file mode 100755 index 00000000000..aa7eedce4bb Binary files /dev/null and b/app/assets/images/emoji/battery.png differ diff --git a/app/assets/images/emoji/bear.png b/app/assets/images/emoji/bear.png new file mode 100755 index 00000000000..f5afe920e8e Binary files /dev/null and b/app/assets/images/emoji/bear.png differ diff --git a/app/assets/images/emoji/beer.png b/app/assets/images/emoji/beer.png new file mode 100755 index 00000000000..cd78bed7440 Binary files /dev/null and b/app/assets/images/emoji/beer.png differ diff --git a/app/assets/images/emoji/beers.png b/app/assets/images/emoji/beers.png new file mode 100755 index 00000000000..cc5e4ab5aa9 Binary files /dev/null and b/app/assets/images/emoji/beers.png differ diff --git a/app/assets/images/emoji/beetle.png b/app/assets/images/emoji/beetle.png new file mode 100755 index 00000000000..222577ca7ea Binary files /dev/null and b/app/assets/images/emoji/beetle.png differ diff --git a/app/assets/images/emoji/beginner.png b/app/assets/images/emoji/beginner.png new file mode 100755 index 00000000000..1f022d175da Binary files /dev/null and b/app/assets/images/emoji/beginner.png differ diff --git a/app/assets/images/emoji/bell.png b/app/assets/images/emoji/bell.png new file mode 100755 index 00000000000..69acceb286e Binary files /dev/null and b/app/assets/images/emoji/bell.png differ diff --git a/app/assets/images/emoji/bento.png b/app/assets/images/emoji/bento.png new file mode 100755 index 00000000000..c6d99e89b67 Binary files /dev/null and b/app/assets/images/emoji/bento.png differ diff --git a/app/assets/images/emoji/bicyclist.png b/app/assets/images/emoji/bicyclist.png new file mode 100755 index 00000000000..4e3e0549c21 Binary files /dev/null and b/app/assets/images/emoji/bicyclist.png differ diff --git a/app/assets/images/emoji/bike.png b/app/assets/images/emoji/bike.png new file mode 100755 index 00000000000..65738602722 Binary files /dev/null and b/app/assets/images/emoji/bike.png differ diff --git a/app/assets/images/emoji/bikini.png b/app/assets/images/emoji/bikini.png new file mode 100755 index 00000000000..4ff63b40f88 Binary files /dev/null and b/app/assets/images/emoji/bikini.png differ diff --git a/app/assets/images/emoji/bird.png b/app/assets/images/emoji/bird.png new file mode 100755 index 00000000000..e6be8c02786 Binary files /dev/null and b/app/assets/images/emoji/bird.png differ diff --git a/app/assets/images/emoji/birthday.png b/app/assets/images/emoji/birthday.png new file mode 100755 index 00000000000..36e8edcbec4 Binary files /dev/null and b/app/assets/images/emoji/birthday.png differ diff --git a/app/assets/images/emoji/black_circle.png b/app/assets/images/emoji/black_circle.png new file mode 100755 index 00000000000..e46f9df615f Binary files /dev/null and b/app/assets/images/emoji/black_circle.png differ diff --git a/app/assets/images/emoji/black_joker.png b/app/assets/images/emoji/black_joker.png new file mode 100755 index 00000000000..4c78f3614d7 Binary files /dev/null and b/app/assets/images/emoji/black_joker.png differ diff --git a/app/assets/images/emoji/black_nib.png b/app/assets/images/emoji/black_nib.png new file mode 100755 index 00000000000..29f6994c11a Binary files /dev/null and b/app/assets/images/emoji/black_nib.png differ diff --git a/app/assets/images/emoji/black_square.png b/app/assets/images/emoji/black_square.png new file mode 100755 index 00000000000..71da10de81c Binary files /dev/null and b/app/assets/images/emoji/black_square.png differ diff --git a/app/assets/images/emoji/blossom.png b/app/assets/images/emoji/blossom.png new file mode 100755 index 00000000000..55a97353b47 Binary files /dev/null and b/app/assets/images/emoji/blossom.png differ diff --git a/app/assets/images/emoji/blowfish.png b/app/assets/images/emoji/blowfish.png new file mode 100755 index 00000000000..a1d47cb7e69 Binary files /dev/null and b/app/assets/images/emoji/blowfish.png differ diff --git a/app/assets/images/emoji/blue_book.png b/app/assets/images/emoji/blue_book.png new file mode 100755 index 00000000000..e2b9e8c797a Binary files /dev/null and b/app/assets/images/emoji/blue_book.png differ diff --git a/app/assets/images/emoji/blue_car.png b/app/assets/images/emoji/blue_car.png new file mode 100755 index 00000000000..978291e087d Binary files /dev/null and b/app/assets/images/emoji/blue_car.png differ diff --git a/app/assets/images/emoji/blue_heart.png b/app/assets/images/emoji/blue_heart.png new file mode 100755 index 00000000000..baa29b31bcd Binary files /dev/null and b/app/assets/images/emoji/blue_heart.png differ diff --git a/app/assets/images/emoji/blush.png b/app/assets/images/emoji/blush.png new file mode 100755 index 00000000000..3a95eb61a3a Binary files /dev/null and b/app/assets/images/emoji/blush.png differ diff --git a/app/assets/images/emoji/boar.png b/app/assets/images/emoji/boar.png new file mode 100755 index 00000000000..8196ad4a14b Binary files /dev/null and b/app/assets/images/emoji/boar.png differ diff --git a/app/assets/images/emoji/boat.png b/app/assets/images/emoji/boat.png new file mode 100755 index 00000000000..ff656dc62bb Binary files /dev/null and b/app/assets/images/emoji/boat.png differ diff --git a/app/assets/images/emoji/bomb.png b/app/assets/images/emoji/bomb.png new file mode 100755 index 00000000000..3289787dcf9 Binary files /dev/null and b/app/assets/images/emoji/bomb.png differ diff --git a/app/assets/images/emoji/book.png b/app/assets/images/emoji/book.png new file mode 100755 index 00000000000..8b698415c3d Binary files /dev/null and b/app/assets/images/emoji/book.png differ diff --git a/app/assets/images/emoji/bookmark.png b/app/assets/images/emoji/bookmark.png new file mode 100755 index 00000000000..dbee45c605b Binary files /dev/null and b/app/assets/images/emoji/bookmark.png differ diff --git a/app/assets/images/emoji/bookmark_tabs.png b/app/assets/images/emoji/bookmark_tabs.png new file mode 100755 index 00000000000..0c4e3bf17df Binary files /dev/null and b/app/assets/images/emoji/bookmark_tabs.png differ diff --git a/app/assets/images/emoji/books.png b/app/assets/images/emoji/books.png new file mode 100755 index 00000000000..dca06a1ad99 Binary files /dev/null and b/app/assets/images/emoji/books.png differ diff --git a/app/assets/images/emoji/boot.png b/app/assets/images/emoji/boot.png new file mode 100755 index 00000000000..58d0fdbcd0c Binary files /dev/null and b/app/assets/images/emoji/boot.png differ diff --git a/app/assets/images/emoji/bouquet.png b/app/assets/images/emoji/bouquet.png new file mode 100755 index 00000000000..ce637832e17 Binary files /dev/null and b/app/assets/images/emoji/bouquet.png differ diff --git a/app/assets/images/emoji/bow.png b/app/assets/images/emoji/bow.png new file mode 100755 index 00000000000..024cb610492 Binary files /dev/null and b/app/assets/images/emoji/bow.png differ diff --git a/app/assets/images/emoji/bowling.png b/app/assets/images/emoji/bowling.png new file mode 100755 index 00000000000..13d8ece2ee5 Binary files /dev/null and b/app/assets/images/emoji/bowling.png differ diff --git a/app/assets/images/emoji/bowtie.png b/app/assets/images/emoji/bowtie.png new file mode 100755 index 00000000000..28ff0c787d5 Binary files /dev/null and b/app/assets/images/emoji/bowtie.png differ diff --git a/app/assets/images/emoji/boy.png b/app/assets/images/emoji/boy.png new file mode 100755 index 00000000000..f79f1f29807 Binary files /dev/null and b/app/assets/images/emoji/boy.png differ diff --git a/app/assets/images/emoji/bread.png b/app/assets/images/emoji/bread.png new file mode 100755 index 00000000000..7e7c63753d3 Binary files /dev/null and b/app/assets/images/emoji/bread.png differ diff --git a/app/assets/images/emoji/bride_with_veil.png b/app/assets/images/emoji/bride_with_veil.png new file mode 100755 index 00000000000..dd0b0cfdad1 Binary files /dev/null and b/app/assets/images/emoji/bride_with_veil.png differ diff --git a/app/assets/images/emoji/bridge_at_night.png b/app/assets/images/emoji/bridge_at_night.png new file mode 100755 index 00000000000..495b06c3dfe Binary files /dev/null and b/app/assets/images/emoji/bridge_at_night.png differ diff --git a/app/assets/images/emoji/briefcase.png b/app/assets/images/emoji/briefcase.png new file mode 100755 index 00000000000..46e82b0010c Binary files /dev/null and b/app/assets/images/emoji/briefcase.png differ diff --git a/app/assets/images/emoji/broken_heart.png b/app/assets/images/emoji/broken_heart.png new file mode 100755 index 00000000000..a1bc850ecb4 Binary files /dev/null and b/app/assets/images/emoji/broken_heart.png differ diff --git a/app/assets/images/emoji/bug.png b/app/assets/images/emoji/bug.png new file mode 100755 index 00000000000..c2eaf7a708d Binary files /dev/null and b/app/assets/images/emoji/bug.png differ diff --git a/app/assets/images/emoji/bulb.png b/app/assets/images/emoji/bulb.png new file mode 100755 index 00000000000..23afca1c73f Binary files /dev/null and b/app/assets/images/emoji/bulb.png differ diff --git a/app/assets/images/emoji/bullettrain_front.png b/app/assets/images/emoji/bullettrain_front.png new file mode 100755 index 00000000000..16651acff8e Binary files /dev/null and b/app/assets/images/emoji/bullettrain_front.png differ diff --git a/app/assets/images/emoji/bullettrain_side.png b/app/assets/images/emoji/bullettrain_side.png new file mode 100755 index 00000000000..8eca368458a Binary files /dev/null and b/app/assets/images/emoji/bullettrain_side.png differ diff --git a/app/assets/images/emoji/bus.png b/app/assets/images/emoji/bus.png new file mode 100755 index 00000000000..823aa39e49d Binary files /dev/null and b/app/assets/images/emoji/bus.png differ diff --git a/app/assets/images/emoji/busstop.png b/app/assets/images/emoji/busstop.png new file mode 100755 index 00000000000..94894847b54 Binary files /dev/null and b/app/assets/images/emoji/busstop.png differ diff --git a/app/assets/images/emoji/bust_in_silhouette.png b/app/assets/images/emoji/bust_in_silhouette.png new file mode 100755 index 00000000000..d1313986925 Binary files /dev/null and b/app/assets/images/emoji/bust_in_silhouette.png differ diff --git a/app/assets/images/emoji/busts_in_silhouette.png b/app/assets/images/emoji/busts_in_silhouette.png new file mode 100755 index 00000000000..1f3aabcff60 Binary files /dev/null and b/app/assets/images/emoji/busts_in_silhouette.png differ diff --git a/app/assets/images/emoji/cactus.png b/app/assets/images/emoji/cactus.png new file mode 100755 index 00000000000..5a2c3cc725e Binary files /dev/null and b/app/assets/images/emoji/cactus.png differ diff --git a/app/assets/images/emoji/cake.png b/app/assets/images/emoji/cake.png new file mode 100755 index 00000000000..efeb9b4b214 Binary files /dev/null and b/app/assets/images/emoji/cake.png differ diff --git a/app/assets/images/emoji/calendar.png b/app/assets/images/emoji/calendar.png new file mode 100755 index 00000000000..900b868bb94 Binary files /dev/null and b/app/assets/images/emoji/calendar.png differ diff --git a/app/assets/images/emoji/calling.png b/app/assets/images/emoji/calling.png new file mode 100755 index 00000000000..837897f261b Binary files /dev/null and b/app/assets/images/emoji/calling.png differ diff --git a/app/assets/images/emoji/camel.png b/app/assets/images/emoji/camel.png new file mode 100755 index 00000000000..496c186ae6c Binary files /dev/null and b/app/assets/images/emoji/camel.png differ diff --git a/app/assets/images/emoji/camera.png b/app/assets/images/emoji/camera.png new file mode 100755 index 00000000000..397d03b3935 Binary files /dev/null and b/app/assets/images/emoji/camera.png differ diff --git a/app/assets/images/emoji/cancer.png b/app/assets/images/emoji/cancer.png new file mode 100755 index 00000000000..ea43a4a2a04 Binary files /dev/null and b/app/assets/images/emoji/cancer.png differ diff --git a/app/assets/images/emoji/candy.png b/app/assets/images/emoji/candy.png new file mode 100755 index 00000000000..33722f236e9 Binary files /dev/null and b/app/assets/images/emoji/candy.png differ diff --git a/app/assets/images/emoji/capital_abcd.png b/app/assets/images/emoji/capital_abcd.png new file mode 100755 index 00000000000..ffc0cba4b43 Binary files /dev/null and b/app/assets/images/emoji/capital_abcd.png differ diff --git a/app/assets/images/emoji/capricorn.png b/app/assets/images/emoji/capricorn.png new file mode 100755 index 00000000000..f2044e78935 Binary files /dev/null and b/app/assets/images/emoji/capricorn.png differ diff --git a/app/assets/images/emoji/car.png b/app/assets/images/emoji/car.png new file mode 100755 index 00000000000..d70a2f06263 Binary files /dev/null and b/app/assets/images/emoji/car.png differ diff --git a/app/assets/images/emoji/card_index.png b/app/assets/images/emoji/card_index.png new file mode 100755 index 00000000000..374e94e9e84 Binary files /dev/null and b/app/assets/images/emoji/card_index.png differ diff --git a/app/assets/images/emoji/carousel_horse.png b/app/assets/images/emoji/carousel_horse.png new file mode 100755 index 00000000000..765d2c0a8bd Binary files /dev/null and b/app/assets/images/emoji/carousel_horse.png differ diff --git a/app/assets/images/emoji/cat.png b/app/assets/images/emoji/cat.png new file mode 100755 index 00000000000..09b9ef79a7d Binary files /dev/null and b/app/assets/images/emoji/cat.png differ diff --git a/app/assets/images/emoji/cat2.png b/app/assets/images/emoji/cat2.png new file mode 100755 index 00000000000..977c992c526 Binary files /dev/null and b/app/assets/images/emoji/cat2.png differ diff --git a/app/assets/images/emoji/cd.png b/app/assets/images/emoji/cd.png new file mode 100755 index 00000000000..baff835c489 Binary files /dev/null and b/app/assets/images/emoji/cd.png differ diff --git a/app/assets/images/emoji/chart.png b/app/assets/images/emoji/chart.png new file mode 100755 index 00000000000..ac2c4bb093e Binary files /dev/null and b/app/assets/images/emoji/chart.png differ diff --git a/app/assets/images/emoji/chart_with_downwards_trend.png b/app/assets/images/emoji/chart_with_downwards_trend.png new file mode 100755 index 00000000000..65b82f04413 Binary files /dev/null and b/app/assets/images/emoji/chart_with_downwards_trend.png differ diff --git a/app/assets/images/emoji/chart_with_upwards_trend.png b/app/assets/images/emoji/chart_with_upwards_trend.png new file mode 100755 index 00000000000..de3e9ba7b57 Binary files /dev/null and b/app/assets/images/emoji/chart_with_upwards_trend.png differ diff --git a/app/assets/images/emoji/checkered_flag.png b/app/assets/images/emoji/checkered_flag.png new file mode 100755 index 00000000000..ead4a68dd37 Binary files /dev/null and b/app/assets/images/emoji/checkered_flag.png differ diff --git a/app/assets/images/emoji/cherries.png b/app/assets/images/emoji/cherries.png new file mode 100755 index 00000000000..8d3e044f2f5 Binary files /dev/null and b/app/assets/images/emoji/cherries.png differ diff --git a/app/assets/images/emoji/cherry_blossom.png b/app/assets/images/emoji/cherry_blossom.png new file mode 100755 index 00000000000..e0315549990 Binary files /dev/null and b/app/assets/images/emoji/cherry_blossom.png differ diff --git a/app/assets/images/emoji/chestnut.png b/app/assets/images/emoji/chestnut.png new file mode 100755 index 00000000000..066fb6bf6df Binary files /dev/null and b/app/assets/images/emoji/chestnut.png differ diff --git a/app/assets/images/emoji/chicken.png b/app/assets/images/emoji/chicken.png new file mode 100755 index 00000000000..6d25c0ef4ad Binary files /dev/null and b/app/assets/images/emoji/chicken.png differ diff --git a/app/assets/images/emoji/children_crossing.png b/app/assets/images/emoji/children_crossing.png new file mode 100755 index 00000000000..b0302ae6258 Binary files /dev/null and b/app/assets/images/emoji/children_crossing.png differ diff --git a/app/assets/images/emoji/chocolate_bar.png b/app/assets/images/emoji/chocolate_bar.png new file mode 100755 index 00000000000..c7ec19d0796 Binary files /dev/null and b/app/assets/images/emoji/chocolate_bar.png differ diff --git a/app/assets/images/emoji/christmas_tree.png b/app/assets/images/emoji/christmas_tree.png new file mode 100755 index 00000000000..d813b9593dc Binary files /dev/null and b/app/assets/images/emoji/christmas_tree.png differ diff --git a/app/assets/images/emoji/church.png b/app/assets/images/emoji/church.png new file mode 100755 index 00000000000..4c07c6b9ea5 Binary files /dev/null and b/app/assets/images/emoji/church.png differ diff --git a/app/assets/images/emoji/cinema.png b/app/assets/images/emoji/cinema.png new file mode 100755 index 00000000000..a990ccf99c2 Binary files /dev/null and b/app/assets/images/emoji/cinema.png differ diff --git a/app/assets/images/emoji/circus_tent.png b/app/assets/images/emoji/circus_tent.png new file mode 100755 index 00000000000..4af8719aa03 Binary files /dev/null and b/app/assets/images/emoji/circus_tent.png differ diff --git a/app/assets/images/emoji/city_sunrise.png b/app/assets/images/emoji/city_sunrise.png new file mode 100755 index 00000000000..91ca2a40b69 Binary files /dev/null and b/app/assets/images/emoji/city_sunrise.png differ diff --git a/app/assets/images/emoji/city_sunset.png b/app/assets/images/emoji/city_sunset.png new file mode 100755 index 00000000000..7cb178a2cc6 Binary files /dev/null and b/app/assets/images/emoji/city_sunset.png differ diff --git a/app/assets/images/emoji/cl.png b/app/assets/images/emoji/cl.png new file mode 100755 index 00000000000..15ac67525aa Binary files /dev/null and b/app/assets/images/emoji/cl.png differ diff --git a/app/assets/images/emoji/clap.png b/app/assets/images/emoji/clap.png new file mode 100755 index 00000000000..d01c982a75a Binary files /dev/null and b/app/assets/images/emoji/clap.png differ diff --git a/app/assets/images/emoji/clapper.png b/app/assets/images/emoji/clapper.png new file mode 100755 index 00000000000..4e1dc111d76 Binary files /dev/null and b/app/assets/images/emoji/clapper.png differ diff --git a/app/assets/images/emoji/clipboard.png b/app/assets/images/emoji/clipboard.png new file mode 100755 index 00000000000..e2c74e6df82 Binary files /dev/null and b/app/assets/images/emoji/clipboard.png differ diff --git a/app/assets/images/emoji/clock1.png b/app/assets/images/emoji/clock1.png new file mode 100755 index 00000000000..9174d4e0bc0 Binary files /dev/null and b/app/assets/images/emoji/clock1.png differ diff --git a/app/assets/images/emoji/clock10.png b/app/assets/images/emoji/clock10.png new file mode 100755 index 00000000000..39f590d6945 Binary files /dev/null and b/app/assets/images/emoji/clock10.png differ diff --git a/app/assets/images/emoji/clock1030.png b/app/assets/images/emoji/clock1030.png new file mode 100755 index 00000000000..84a3bc8fbd0 Binary files /dev/null and b/app/assets/images/emoji/clock1030.png differ diff --git a/app/assets/images/emoji/clock11.png b/app/assets/images/emoji/clock11.png new file mode 100755 index 00000000000..ddb53fadad6 Binary files /dev/null and b/app/assets/images/emoji/clock11.png differ diff --git a/app/assets/images/emoji/clock1130.png b/app/assets/images/emoji/clock1130.png new file mode 100755 index 00000000000..415999ec838 Binary files /dev/null and b/app/assets/images/emoji/clock1130.png differ diff --git a/app/assets/images/emoji/clock12.png b/app/assets/images/emoji/clock12.png new file mode 100755 index 00000000000..87b132878b7 Binary files /dev/null and b/app/assets/images/emoji/clock12.png differ diff --git a/app/assets/images/emoji/clock1230.png b/app/assets/images/emoji/clock1230.png new file mode 100755 index 00000000000..a6527154d1f Binary files /dev/null and b/app/assets/images/emoji/clock1230.png differ diff --git a/app/assets/images/emoji/clock130.png b/app/assets/images/emoji/clock130.png new file mode 100755 index 00000000000..df939201900 Binary files /dev/null and b/app/assets/images/emoji/clock130.png differ diff --git a/app/assets/images/emoji/clock2.png b/app/assets/images/emoji/clock2.png new file mode 100755 index 00000000000..65b3b3af0e1 Binary files /dev/null and b/app/assets/images/emoji/clock2.png differ diff --git a/app/assets/images/emoji/clock230.png b/app/assets/images/emoji/clock230.png new file mode 100755 index 00000000000..f12c6912af7 Binary files /dev/null and b/app/assets/images/emoji/clock230.png differ diff --git a/app/assets/images/emoji/clock3.png b/app/assets/images/emoji/clock3.png new file mode 100755 index 00000000000..3e44d64e2fb Binary files /dev/null and b/app/assets/images/emoji/clock3.png differ diff --git a/app/assets/images/emoji/clock330.png b/app/assets/images/emoji/clock330.png new file mode 100755 index 00000000000..1dc9628ea24 Binary files /dev/null and b/app/assets/images/emoji/clock330.png differ diff --git a/app/assets/images/emoji/clock4.png b/app/assets/images/emoji/clock4.png new file mode 100755 index 00000000000..948ed1a380c Binary files /dev/null and b/app/assets/images/emoji/clock4.png differ diff --git a/app/assets/images/emoji/clock430.png b/app/assets/images/emoji/clock430.png new file mode 100755 index 00000000000..7726aaea1bc Binary files /dev/null and b/app/assets/images/emoji/clock430.png differ diff --git a/app/assets/images/emoji/clock5.png b/app/assets/images/emoji/clock5.png new file mode 100755 index 00000000000..b010b4f8aaf Binary files /dev/null and b/app/assets/images/emoji/clock5.png differ diff --git a/app/assets/images/emoji/clock530.png b/app/assets/images/emoji/clock530.png new file mode 100755 index 00000000000..e08d4ad2bac Binary files /dev/null and b/app/assets/images/emoji/clock530.png differ diff --git a/app/assets/images/emoji/clock6.png b/app/assets/images/emoji/clock6.png new file mode 100755 index 00000000000..76bf8cf1854 Binary files /dev/null and b/app/assets/images/emoji/clock6.png differ diff --git a/app/assets/images/emoji/clock630.png b/app/assets/images/emoji/clock630.png new file mode 100755 index 00000000000..46f0681f1c4 Binary files /dev/null and b/app/assets/images/emoji/clock630.png differ diff --git a/app/assets/images/emoji/clock7.png b/app/assets/images/emoji/clock7.png new file mode 100755 index 00000000000..d48f645d835 Binary files /dev/null and b/app/assets/images/emoji/clock7.png differ diff --git a/app/assets/images/emoji/clock730.png b/app/assets/images/emoji/clock730.png new file mode 100755 index 00000000000..18aab22fd8c Binary files /dev/null and b/app/assets/images/emoji/clock730.png differ diff --git a/app/assets/images/emoji/clock8.png b/app/assets/images/emoji/clock8.png new file mode 100755 index 00000000000..74c770d891c Binary files /dev/null and b/app/assets/images/emoji/clock8.png differ diff --git a/app/assets/images/emoji/clock830.png b/app/assets/images/emoji/clock830.png new file mode 100755 index 00000000000..ec3e382dd4c Binary files /dev/null and b/app/assets/images/emoji/clock830.png differ diff --git a/app/assets/images/emoji/clock9.png b/app/assets/images/emoji/clock9.png new file mode 100755 index 00000000000..f009d14ac11 Binary files /dev/null and b/app/assets/images/emoji/clock9.png differ diff --git a/app/assets/images/emoji/clock930.png b/app/assets/images/emoji/clock930.png new file mode 100755 index 00000000000..fd35221428f Binary files /dev/null and b/app/assets/images/emoji/clock930.png differ diff --git a/app/assets/images/emoji/closed_book.png b/app/assets/images/emoji/closed_book.png new file mode 100755 index 00000000000..484029c5ebc Binary files /dev/null and b/app/assets/images/emoji/closed_book.png differ diff --git a/app/assets/images/emoji/closed_lock_with_key.png b/app/assets/images/emoji/closed_lock_with_key.png new file mode 100755 index 00000000000..e6fdf6cb204 Binary files /dev/null and b/app/assets/images/emoji/closed_lock_with_key.png differ diff --git a/app/assets/images/emoji/closed_umbrella.png b/app/assets/images/emoji/closed_umbrella.png new file mode 100755 index 00000000000..0b719f086b1 Binary files /dev/null and b/app/assets/images/emoji/closed_umbrella.png differ diff --git a/app/assets/images/emoji/cloud.png b/app/assets/images/emoji/cloud.png new file mode 100755 index 00000000000..b31c08c0b88 Binary files /dev/null and b/app/assets/images/emoji/cloud.png differ diff --git a/app/assets/images/emoji/clubs.png b/app/assets/images/emoji/clubs.png new file mode 100755 index 00000000000..bfab5365695 Binary files /dev/null and b/app/assets/images/emoji/clubs.png differ diff --git a/app/assets/images/emoji/cn.png b/app/assets/images/emoji/cn.png new file mode 100755 index 00000000000..b30dcc53df9 Binary files /dev/null and b/app/assets/images/emoji/cn.png differ diff --git a/app/assets/images/emoji/cocktail.png b/app/assets/images/emoji/cocktail.png new file mode 100755 index 00000000000..28b45ea5145 Binary files /dev/null and b/app/assets/images/emoji/cocktail.png differ diff --git a/app/assets/images/emoji/coffee.png b/app/assets/images/emoji/coffee.png new file mode 100755 index 00000000000..57e1adcb04a Binary files /dev/null and b/app/assets/images/emoji/coffee.png differ diff --git a/app/assets/images/emoji/cold_sweat.png b/app/assets/images/emoji/cold_sweat.png new file mode 100755 index 00000000000..b9e39bc60fb Binary files /dev/null and b/app/assets/images/emoji/cold_sweat.png differ diff --git a/app/assets/images/emoji/collision.png b/app/assets/images/emoji/collision.png new file mode 100755 index 00000000000..bddeb8f49f8 Binary files /dev/null and b/app/assets/images/emoji/collision.png differ diff --git a/app/assets/images/emoji/computer.png b/app/assets/images/emoji/computer.png new file mode 100755 index 00000000000..d4d2687627e Binary files /dev/null and b/app/assets/images/emoji/computer.png differ diff --git a/app/assets/images/emoji/confetti_ball.png b/app/assets/images/emoji/confetti_ball.png new file mode 100755 index 00000000000..bd293e3d874 Binary files /dev/null and b/app/assets/images/emoji/confetti_ball.png differ diff --git a/app/assets/images/emoji/confounded.png b/app/assets/images/emoji/confounded.png new file mode 100755 index 00000000000..762c3766abc Binary files /dev/null and b/app/assets/images/emoji/confounded.png differ diff --git a/app/assets/images/emoji/congratulations.png b/app/assets/images/emoji/congratulations.png new file mode 100755 index 00000000000..dcbb1d229ed Binary files /dev/null and b/app/assets/images/emoji/congratulations.png differ diff --git a/app/assets/images/emoji/construction.png b/app/assets/images/emoji/construction.png new file mode 100755 index 00000000000..523e9f10bf6 Binary files /dev/null and b/app/assets/images/emoji/construction.png differ diff --git a/app/assets/images/emoji/construction_worker.png b/app/assets/images/emoji/construction_worker.png new file mode 100755 index 00000000000..4d648604786 Binary files /dev/null and b/app/assets/images/emoji/construction_worker.png differ diff --git a/app/assets/images/emoji/convenience_store.png b/app/assets/images/emoji/convenience_store.png new file mode 100755 index 00000000000..671696c2dfd Binary files /dev/null and b/app/assets/images/emoji/convenience_store.png differ diff --git a/app/assets/images/emoji/cookie.png b/app/assets/images/emoji/cookie.png new file mode 100755 index 00000000000..653edb258c6 Binary files /dev/null and b/app/assets/images/emoji/cookie.png differ diff --git a/app/assets/images/emoji/cool.png b/app/assets/images/emoji/cool.png new file mode 100755 index 00000000000..937dcd79210 Binary files /dev/null and b/app/assets/images/emoji/cool.png differ diff --git a/app/assets/images/emoji/cop.png b/app/assets/images/emoji/cop.png new file mode 100755 index 00000000000..43a5a84f821 Binary files /dev/null and b/app/assets/images/emoji/cop.png differ diff --git a/app/assets/images/emoji/copyright.png b/app/assets/images/emoji/copyright.png new file mode 100755 index 00000000000..38493c33fca Binary files /dev/null and b/app/assets/images/emoji/copyright.png differ diff --git a/app/assets/images/emoji/corn.png b/app/assets/images/emoji/corn.png new file mode 100755 index 00000000000..fe5d8b1287e Binary files /dev/null and b/app/assets/images/emoji/corn.png differ diff --git a/app/assets/images/emoji/couple.png b/app/assets/images/emoji/couple.png new file mode 100755 index 00000000000..9e51f40e16e Binary files /dev/null and b/app/assets/images/emoji/couple.png differ diff --git a/app/assets/images/emoji/couple_with_heart.png b/app/assets/images/emoji/couple_with_heart.png new file mode 100755 index 00000000000..c503f40a931 Binary files /dev/null and b/app/assets/images/emoji/couple_with_heart.png differ diff --git a/app/assets/images/emoji/couplekiss.png b/app/assets/images/emoji/couplekiss.png new file mode 100755 index 00000000000..d02790822ea Binary files /dev/null and b/app/assets/images/emoji/couplekiss.png differ diff --git a/app/assets/images/emoji/cow.png b/app/assets/images/emoji/cow.png new file mode 100755 index 00000000000..12e1ab6c0bd Binary files /dev/null and b/app/assets/images/emoji/cow.png differ diff --git a/app/assets/images/emoji/cow2.png b/app/assets/images/emoji/cow2.png new file mode 100755 index 00000000000..594c92155bc Binary files /dev/null and b/app/assets/images/emoji/cow2.png differ diff --git a/app/assets/images/emoji/credit_card.png b/app/assets/images/emoji/credit_card.png new file mode 100755 index 00000000000..be1c1dd3063 Binary files /dev/null and b/app/assets/images/emoji/credit_card.png differ diff --git a/app/assets/images/emoji/crocodile.png b/app/assets/images/emoji/crocodile.png new file mode 100755 index 00000000000..7435d5ab3c4 Binary files /dev/null and b/app/assets/images/emoji/crocodile.png differ diff --git a/app/assets/images/emoji/crossed_flags.png b/app/assets/images/emoji/crossed_flags.png new file mode 100755 index 00000000000..2397bcd0fc9 Binary files /dev/null and b/app/assets/images/emoji/crossed_flags.png differ diff --git a/app/assets/images/emoji/crown.png b/app/assets/images/emoji/crown.png new file mode 100755 index 00000000000..39da1d52873 Binary files /dev/null and b/app/assets/images/emoji/crown.png differ diff --git a/app/assets/images/emoji/cry.png b/app/assets/images/emoji/cry.png new file mode 100755 index 00000000000..6d0d9afd284 Binary files /dev/null and b/app/assets/images/emoji/cry.png differ diff --git a/app/assets/images/emoji/crying_cat_face.png b/app/assets/images/emoji/crying_cat_face.png new file mode 100755 index 00000000000..42d4c27cabf Binary files /dev/null and b/app/assets/images/emoji/crying_cat_face.png differ diff --git a/app/assets/images/emoji/crystal_ball.png b/app/assets/images/emoji/crystal_ball.png new file mode 100755 index 00000000000..6d2c6c42d44 Binary files /dev/null and b/app/assets/images/emoji/crystal_ball.png differ diff --git a/app/assets/images/emoji/cupid.png b/app/assets/images/emoji/cupid.png new file mode 100755 index 00000000000..4987284767c Binary files /dev/null and b/app/assets/images/emoji/cupid.png differ diff --git a/app/assets/images/emoji/curly_loop.png b/app/assets/images/emoji/curly_loop.png new file mode 100755 index 00000000000..8f051aca43e Binary files /dev/null and b/app/assets/images/emoji/curly_loop.png differ diff --git a/app/assets/images/emoji/currency_exchange.png b/app/assets/images/emoji/currency_exchange.png new file mode 100755 index 00000000000..6ebebe70afb Binary files /dev/null and b/app/assets/images/emoji/currency_exchange.png differ diff --git a/app/assets/images/emoji/curry.png b/app/assets/images/emoji/curry.png new file mode 100755 index 00000000000..7983c706a40 Binary files /dev/null and b/app/assets/images/emoji/curry.png differ diff --git a/app/assets/images/emoji/custard.png b/app/assets/images/emoji/custard.png new file mode 100755 index 00000000000..9f843b4c130 Binary files /dev/null and b/app/assets/images/emoji/custard.png differ diff --git a/app/assets/images/emoji/customs.png b/app/assets/images/emoji/customs.png new file mode 100755 index 00000000000..92691e3117c Binary files /dev/null and b/app/assets/images/emoji/customs.png differ diff --git a/app/assets/images/emoji/cyclone.png b/app/assets/images/emoji/cyclone.png new file mode 100755 index 00000000000..5fd2e4512f9 Binary files /dev/null and b/app/assets/images/emoji/cyclone.png differ diff --git a/app/assets/images/emoji/dancer.png b/app/assets/images/emoji/dancer.png new file mode 100755 index 00000000000..6885a0bc3d5 Binary files /dev/null and b/app/assets/images/emoji/dancer.png differ diff --git a/app/assets/images/emoji/dancers.png b/app/assets/images/emoji/dancers.png new file mode 100755 index 00000000000..2dfb451a73a Binary files /dev/null and b/app/assets/images/emoji/dancers.png differ diff --git a/app/assets/images/emoji/dango.png b/app/assets/images/emoji/dango.png new file mode 100755 index 00000000000..2d042aebeb5 Binary files /dev/null and b/app/assets/images/emoji/dango.png differ diff --git a/app/assets/images/emoji/dart.png b/app/assets/images/emoji/dart.png new file mode 100755 index 00000000000..0438fe54f99 Binary files /dev/null and b/app/assets/images/emoji/dart.png differ diff --git a/app/assets/images/emoji/dash.png b/app/assets/images/emoji/dash.png new file mode 100755 index 00000000000..dc2c0a8f468 Binary files /dev/null and b/app/assets/images/emoji/dash.png differ diff --git a/app/assets/images/emoji/date.png b/app/assets/images/emoji/date.png new file mode 100755 index 00000000000..6ad2efa5fdc Binary files /dev/null and b/app/assets/images/emoji/date.png differ diff --git a/app/assets/images/emoji/de.png b/app/assets/images/emoji/de.png new file mode 100755 index 00000000000..16a28548c9e Binary files /dev/null and b/app/assets/images/emoji/de.png differ diff --git a/app/assets/images/emoji/deciduous_tree.png b/app/assets/images/emoji/deciduous_tree.png new file mode 100755 index 00000000000..9bb16bdfecb Binary files /dev/null and b/app/assets/images/emoji/deciduous_tree.png differ diff --git a/app/assets/images/emoji/department_store.png b/app/assets/images/emoji/department_store.png new file mode 100755 index 00000000000..68d959c507d Binary files /dev/null and b/app/assets/images/emoji/department_store.png differ diff --git a/app/assets/images/emoji/diamond_shape_with_a_dot_inside.png b/app/assets/images/emoji/diamond_shape_with_a_dot_inside.png new file mode 100755 index 00000000000..dfd1098b394 Binary files /dev/null and b/app/assets/images/emoji/diamond_shape_with_a_dot_inside.png differ diff --git a/app/assets/images/emoji/diamonds.png b/app/assets/images/emoji/diamonds.png new file mode 100755 index 00000000000..fe0827758b1 Binary files /dev/null and b/app/assets/images/emoji/diamonds.png differ diff --git a/app/assets/images/emoji/disappointed.png b/app/assets/images/emoji/disappointed.png new file mode 100755 index 00000000000..82552008719 Binary files /dev/null and b/app/assets/images/emoji/disappointed.png differ diff --git a/app/assets/images/emoji/dizzy.png b/app/assets/images/emoji/dizzy.png new file mode 100755 index 00000000000..55213d2ddee Binary files /dev/null and b/app/assets/images/emoji/dizzy.png differ diff --git a/app/assets/images/emoji/dizzy_face.png b/app/assets/images/emoji/dizzy_face.png new file mode 100755 index 00000000000..8001d6ff8f0 Binary files /dev/null and b/app/assets/images/emoji/dizzy_face.png differ diff --git a/app/assets/images/emoji/do_not_litter.png b/app/assets/images/emoji/do_not_litter.png new file mode 100755 index 00000000000..38c7ae7af23 Binary files /dev/null and b/app/assets/images/emoji/do_not_litter.png differ diff --git a/app/assets/images/emoji/dog.png b/app/assets/images/emoji/dog.png new file mode 100755 index 00000000000..389a02bf282 Binary files /dev/null and b/app/assets/images/emoji/dog.png differ diff --git a/app/assets/images/emoji/dog2.png b/app/assets/images/emoji/dog2.png new file mode 100755 index 00000000000..c7f6a24ac80 Binary files /dev/null and b/app/assets/images/emoji/dog2.png differ diff --git a/app/assets/images/emoji/dollar.png b/app/assets/images/emoji/dollar.png new file mode 100755 index 00000000000..63de8849519 Binary files /dev/null and b/app/assets/images/emoji/dollar.png differ diff --git a/app/assets/images/emoji/dolls.png b/app/assets/images/emoji/dolls.png new file mode 100755 index 00000000000..47ce33900ca Binary files /dev/null and b/app/assets/images/emoji/dolls.png differ diff --git a/app/assets/images/emoji/dolphin.png b/app/assets/images/emoji/dolphin.png new file mode 100755 index 00000000000..9326077a927 Binary files /dev/null and b/app/assets/images/emoji/dolphin.png differ diff --git a/app/assets/images/emoji/door.png b/app/assets/images/emoji/door.png new file mode 100755 index 00000000000..83c819ae466 Binary files /dev/null and b/app/assets/images/emoji/door.png differ diff --git a/app/assets/images/emoji/doughnut.png b/app/assets/images/emoji/doughnut.png new file mode 100755 index 00000000000..ccf86912960 Binary files /dev/null and b/app/assets/images/emoji/doughnut.png differ diff --git a/app/assets/images/emoji/dragon.png b/app/assets/images/emoji/dragon.png new file mode 100755 index 00000000000..e399d60e1d8 Binary files /dev/null and b/app/assets/images/emoji/dragon.png differ diff --git a/app/assets/images/emoji/dragon_face.png b/app/assets/images/emoji/dragon_face.png new file mode 100755 index 00000000000..e5e556bd105 Binary files /dev/null and b/app/assets/images/emoji/dragon_face.png differ diff --git a/app/assets/images/emoji/dress.png b/app/assets/images/emoji/dress.png new file mode 100755 index 00000000000..6434e2e2f39 Binary files /dev/null and b/app/assets/images/emoji/dress.png differ diff --git a/app/assets/images/emoji/dromedary_camel.png b/app/assets/images/emoji/dromedary_camel.png new file mode 100755 index 00000000000..c8c7b9ffa0f Binary files /dev/null and b/app/assets/images/emoji/dromedary_camel.png differ diff --git a/app/assets/images/emoji/droplet.png b/app/assets/images/emoji/droplet.png new file mode 100755 index 00000000000..9eff46339f8 Binary files /dev/null and b/app/assets/images/emoji/droplet.png differ diff --git a/app/assets/images/emoji/dvd.png b/app/assets/images/emoji/dvd.png new file mode 100755 index 00000000000..363c83d01c5 Binary files /dev/null and b/app/assets/images/emoji/dvd.png differ diff --git a/app/assets/images/emoji/e-mail.png b/app/assets/images/emoji/e-mail.png new file mode 100755 index 00000000000..176a8e1e825 Binary files /dev/null and b/app/assets/images/emoji/e-mail.png differ diff --git a/app/assets/images/emoji/ear.png b/app/assets/images/emoji/ear.png new file mode 100755 index 00000000000..2bbbf10c9ef Binary files /dev/null and b/app/assets/images/emoji/ear.png differ diff --git a/app/assets/images/emoji/ear_of_rice.png b/app/assets/images/emoji/ear_of_rice.png new file mode 100755 index 00000000000..a9bba5c2c14 Binary files /dev/null and b/app/assets/images/emoji/ear_of_rice.png differ diff --git a/app/assets/images/emoji/earth_africa.png b/app/assets/images/emoji/earth_africa.png new file mode 100755 index 00000000000..44ce5ecb621 Binary files /dev/null and b/app/assets/images/emoji/earth_africa.png differ diff --git a/app/assets/images/emoji/earth_americas.png b/app/assets/images/emoji/earth_americas.png new file mode 100755 index 00000000000..97d71767136 Binary files /dev/null and b/app/assets/images/emoji/earth_americas.png differ diff --git a/app/assets/images/emoji/earth_asia.png b/app/assets/images/emoji/earth_asia.png new file mode 100755 index 00000000000..95ec357ca87 Binary files /dev/null and b/app/assets/images/emoji/earth_asia.png differ diff --git a/app/assets/images/emoji/egg.png b/app/assets/images/emoji/egg.png new file mode 100755 index 00000000000..c3de6ae4ea0 Binary files /dev/null and b/app/assets/images/emoji/egg.png differ diff --git a/app/assets/images/emoji/eggplant.png b/app/assets/images/emoji/eggplant.png new file mode 100755 index 00000000000..66f25fce447 Binary files /dev/null and b/app/assets/images/emoji/eggplant.png differ diff --git a/app/assets/images/emoji/eight.png b/app/assets/images/emoji/eight.png new file mode 100755 index 00000000000..7bdb422327c Binary files /dev/null and b/app/assets/images/emoji/eight.png differ diff --git a/app/assets/images/emoji/eight_pointed_black_star.png b/app/assets/images/emoji/eight_pointed_black_star.png new file mode 100755 index 00000000000..6ddaa21f47b Binary files /dev/null and b/app/assets/images/emoji/eight_pointed_black_star.png differ diff --git a/app/assets/images/emoji/eight_spoked_asterisk.png b/app/assets/images/emoji/eight_spoked_asterisk.png new file mode 100755 index 00000000000..946a20333a2 Binary files /dev/null and b/app/assets/images/emoji/eight_spoked_asterisk.png differ diff --git a/app/assets/images/emoji/electric_plug.png b/app/assets/images/emoji/electric_plug.png new file mode 100755 index 00000000000..7a3d6cee683 Binary files /dev/null and b/app/assets/images/emoji/electric_plug.png differ diff --git a/app/assets/images/emoji/elephant.png b/app/assets/images/emoji/elephant.png new file mode 100755 index 00000000000..5ca04570e24 Binary files /dev/null and b/app/assets/images/emoji/elephant.png differ diff --git a/app/assets/images/emoji/email.png b/app/assets/images/emoji/email.png new file mode 100755 index 00000000000..0e01fd5f052 Binary files /dev/null and b/app/assets/images/emoji/email.png differ diff --git a/app/assets/images/emoji/end.png b/app/assets/images/emoji/end.png new file mode 100755 index 00000000000..edb0bda2450 Binary files /dev/null and b/app/assets/images/emoji/end.png differ diff --git a/app/assets/images/emoji/envelope.png b/app/assets/images/emoji/envelope.png new file mode 100755 index 00000000000..3631861bbfd Binary files /dev/null and b/app/assets/images/emoji/envelope.png differ diff --git a/app/assets/images/emoji/es.png b/app/assets/images/emoji/es.png new file mode 100755 index 00000000000..71b30bff352 Binary files /dev/null and b/app/assets/images/emoji/es.png differ diff --git a/app/assets/images/emoji/euro.png b/app/assets/images/emoji/euro.png new file mode 100755 index 00000000000..1c5904b7144 Binary files /dev/null and b/app/assets/images/emoji/euro.png differ diff --git a/app/assets/images/emoji/european_castle.png b/app/assets/images/emoji/european_castle.png new file mode 100755 index 00000000000..8229b8a8a94 Binary files /dev/null and b/app/assets/images/emoji/european_castle.png differ diff --git a/app/assets/images/emoji/european_post_office.png b/app/assets/images/emoji/european_post_office.png new file mode 100755 index 00000000000..0f65b145305 Binary files /dev/null and b/app/assets/images/emoji/european_post_office.png differ diff --git a/app/assets/images/emoji/evergreen_tree.png b/app/assets/images/emoji/evergreen_tree.png new file mode 100755 index 00000000000..ae8ad103763 Binary files /dev/null and b/app/assets/images/emoji/evergreen_tree.png differ diff --git a/app/assets/images/emoji/exclamation.png b/app/assets/images/emoji/exclamation.png new file mode 100755 index 00000000000..77bbdeabcf4 Binary files /dev/null and b/app/assets/images/emoji/exclamation.png differ diff --git a/app/assets/images/emoji/eyeglasses.png b/app/assets/images/emoji/eyeglasses.png new file mode 100755 index 00000000000..a3cf75a27a1 Binary files /dev/null and b/app/assets/images/emoji/eyeglasses.png differ diff --git a/app/assets/images/emoji/eyes.png b/app/assets/images/emoji/eyes.png new file mode 100755 index 00000000000..dc2216f63d6 Binary files /dev/null and b/app/assets/images/emoji/eyes.png differ diff --git a/app/assets/images/emoji/facepunch.png b/app/assets/images/emoji/facepunch.png new file mode 100755 index 00000000000..2d41fd37e8d Binary files /dev/null and b/app/assets/images/emoji/facepunch.png differ diff --git a/app/assets/images/emoji/factory.png b/app/assets/images/emoji/factory.png new file mode 100755 index 00000000000..6404634793e Binary files /dev/null and b/app/assets/images/emoji/factory.png differ diff --git a/app/assets/images/emoji/fallen_leaf.png b/app/assets/images/emoji/fallen_leaf.png new file mode 100755 index 00000000000..d49f9c1757d Binary files /dev/null and b/app/assets/images/emoji/fallen_leaf.png differ diff --git a/app/assets/images/emoji/family.png b/app/assets/images/emoji/family.png new file mode 100755 index 00000000000..b4b365f3a5c Binary files /dev/null and b/app/assets/images/emoji/family.png differ diff --git a/app/assets/images/emoji/fast_forward.png b/app/assets/images/emoji/fast_forward.png new file mode 100755 index 00000000000..8830e146e59 Binary files /dev/null and b/app/assets/images/emoji/fast_forward.png differ diff --git a/app/assets/images/emoji/fax.png b/app/assets/images/emoji/fax.png new file mode 100755 index 00000000000..62be2c958f4 Binary files /dev/null and b/app/assets/images/emoji/fax.png differ diff --git a/app/assets/images/emoji/fearful.png b/app/assets/images/emoji/fearful.png new file mode 100755 index 00000000000..513fce47b68 Binary files /dev/null and b/app/assets/images/emoji/fearful.png differ diff --git a/app/assets/images/emoji/feelsgood.png b/app/assets/images/emoji/feelsgood.png new file mode 100755 index 00000000000..361f969bc1b Binary files /dev/null and b/app/assets/images/emoji/feelsgood.png differ diff --git a/app/assets/images/emoji/feet.png b/app/assets/images/emoji/feet.png new file mode 100755 index 00000000000..1b0147b1d23 Binary files /dev/null and b/app/assets/images/emoji/feet.png differ diff --git a/app/assets/images/emoji/ferris_wheel.png b/app/assets/images/emoji/ferris_wheel.png new file mode 100755 index 00000000000..54a1dcfa1ef Binary files /dev/null and b/app/assets/images/emoji/ferris_wheel.png differ diff --git a/app/assets/images/emoji/file_folder.png b/app/assets/images/emoji/file_folder.png new file mode 100755 index 00000000000..4d8bebf8a90 Binary files /dev/null and b/app/assets/images/emoji/file_folder.png differ diff --git a/app/assets/images/emoji/finnadie.png b/app/assets/images/emoji/finnadie.png new file mode 100755 index 00000000000..bfc5a0d93de Binary files /dev/null and b/app/assets/images/emoji/finnadie.png differ diff --git a/app/assets/images/emoji/fire.png b/app/assets/images/emoji/fire.png new file mode 100755 index 00000000000..f2a3149bbfd Binary files /dev/null and b/app/assets/images/emoji/fire.png differ diff --git a/app/assets/images/emoji/fire_engine.png b/app/assets/images/emoji/fire_engine.png new file mode 100755 index 00000000000..9e6c59c9976 Binary files /dev/null and b/app/assets/images/emoji/fire_engine.png differ diff --git a/app/assets/images/emoji/fireworks.png b/app/assets/images/emoji/fireworks.png new file mode 100755 index 00000000000..b4eccd5775b Binary files /dev/null and b/app/assets/images/emoji/fireworks.png differ diff --git a/app/assets/images/emoji/first_quarter_moon.png b/app/assets/images/emoji/first_quarter_moon.png new file mode 100755 index 00000000000..f38c236937f Binary files /dev/null and b/app/assets/images/emoji/first_quarter_moon.png differ diff --git a/app/assets/images/emoji/first_quarter_moon_with_face.png b/app/assets/images/emoji/first_quarter_moon_with_face.png new file mode 100755 index 00000000000..85ae2ce72dc Binary files /dev/null and b/app/assets/images/emoji/first_quarter_moon_with_face.png differ diff --git a/app/assets/images/emoji/fish.png b/app/assets/images/emoji/fish.png new file mode 100755 index 00000000000..90bdda2c920 Binary files /dev/null and b/app/assets/images/emoji/fish.png differ diff --git a/app/assets/images/emoji/fish_cake.png b/app/assets/images/emoji/fish_cake.png new file mode 100755 index 00000000000..a8f22614d62 Binary files /dev/null and b/app/assets/images/emoji/fish_cake.png differ diff --git a/app/assets/images/emoji/fishing_pole_and_fish.png b/app/assets/images/emoji/fishing_pole_and_fish.png new file mode 100755 index 00000000000..d84609c3b7b Binary files /dev/null and b/app/assets/images/emoji/fishing_pole_and_fish.png differ diff --git a/app/assets/images/emoji/fist.png b/app/assets/images/emoji/fist.png new file mode 100755 index 00000000000..ecc8874c2fd Binary files /dev/null and b/app/assets/images/emoji/fist.png differ diff --git a/app/assets/images/emoji/five.png b/app/assets/images/emoji/five.png new file mode 100755 index 00000000000..794321aa22a Binary files /dev/null and b/app/assets/images/emoji/five.png differ diff --git a/app/assets/images/emoji/flags.png b/app/assets/images/emoji/flags.png new file mode 100755 index 00000000000..540164e84e4 Binary files /dev/null and b/app/assets/images/emoji/flags.png differ diff --git a/app/assets/images/emoji/flashlight.png b/app/assets/images/emoji/flashlight.png new file mode 100755 index 00000000000..215940aa8f1 Binary files /dev/null and b/app/assets/images/emoji/flashlight.png differ diff --git a/app/assets/images/emoji/floppy_disk.png b/app/assets/images/emoji/floppy_disk.png new file mode 100755 index 00000000000..4ad56315ae6 Binary files /dev/null and b/app/assets/images/emoji/floppy_disk.png differ diff --git a/app/assets/images/emoji/flower_playing_cards.png b/app/assets/images/emoji/flower_playing_cards.png new file mode 100755 index 00000000000..cc46a6a1fa2 Binary files /dev/null and b/app/assets/images/emoji/flower_playing_cards.png differ diff --git a/app/assets/images/emoji/flushed.png b/app/assets/images/emoji/flushed.png new file mode 100755 index 00000000000..74b78c9c07a Binary files /dev/null and b/app/assets/images/emoji/flushed.png differ diff --git a/app/assets/images/emoji/foggy.png b/app/assets/images/emoji/foggy.png new file mode 100755 index 00000000000..3c7b8b04b95 Binary files /dev/null and b/app/assets/images/emoji/foggy.png differ diff --git a/app/assets/images/emoji/football.png b/app/assets/images/emoji/football.png new file mode 100755 index 00000000000..0e4e168fa8f Binary files /dev/null and b/app/assets/images/emoji/football.png differ diff --git a/app/assets/images/emoji/fork_and_knife.png b/app/assets/images/emoji/fork_and_knife.png new file mode 100755 index 00000000000..8ba4bc6535e Binary files /dev/null and b/app/assets/images/emoji/fork_and_knife.png differ diff --git a/app/assets/images/emoji/fountain.png b/app/assets/images/emoji/fountain.png new file mode 100755 index 00000000000..da126e6486e Binary files /dev/null and b/app/assets/images/emoji/fountain.png differ diff --git a/app/assets/images/emoji/four.png b/app/assets/images/emoji/four.png new file mode 100755 index 00000000000..14782ba23b9 Binary files /dev/null and b/app/assets/images/emoji/four.png differ diff --git a/app/assets/images/emoji/four_leaf_clover.png b/app/assets/images/emoji/four_leaf_clover.png new file mode 100755 index 00000000000..f2014bea44f Binary files /dev/null and b/app/assets/images/emoji/four_leaf_clover.png differ diff --git a/app/assets/images/emoji/fr.png b/app/assets/images/emoji/fr.png new file mode 100755 index 00000000000..6311c91159e Binary files /dev/null and b/app/assets/images/emoji/fr.png differ diff --git a/app/assets/images/emoji/free.png b/app/assets/images/emoji/free.png new file mode 100755 index 00000000000..c886cf2494c Binary files /dev/null and b/app/assets/images/emoji/free.png differ diff --git a/app/assets/images/emoji/fried_shrimp.png b/app/assets/images/emoji/fried_shrimp.png new file mode 100755 index 00000000000..c8c284bf14a Binary files /dev/null and b/app/assets/images/emoji/fried_shrimp.png differ diff --git a/app/assets/images/emoji/fries.png b/app/assets/images/emoji/fries.png new file mode 100755 index 00000000000..cfef66966a7 Binary files /dev/null and b/app/assets/images/emoji/fries.png differ diff --git a/app/assets/images/emoji/frog.png b/app/assets/images/emoji/frog.png new file mode 100755 index 00000000000..cfe11b18ff0 Binary files /dev/null and b/app/assets/images/emoji/frog.png differ diff --git a/app/assets/images/emoji/fuelpump.png b/app/assets/images/emoji/fuelpump.png new file mode 100755 index 00000000000..54c29aeb1db Binary files /dev/null and b/app/assets/images/emoji/fuelpump.png differ diff --git a/app/assets/images/emoji/full_moon.png b/app/assets/images/emoji/full_moon.png new file mode 100755 index 00000000000..8ff657a2593 Binary files /dev/null and b/app/assets/images/emoji/full_moon.png differ diff --git a/app/assets/images/emoji/full_moon_with_face.png b/app/assets/images/emoji/full_moon_with_face.png new file mode 100755 index 00000000000..94395a4080b Binary files /dev/null and b/app/assets/images/emoji/full_moon_with_face.png differ diff --git a/app/assets/images/emoji/game_die.png b/app/assets/images/emoji/game_die.png new file mode 100755 index 00000000000..4136e78ec98 Binary files /dev/null and b/app/assets/images/emoji/game_die.png differ diff --git a/app/assets/images/emoji/gb.png b/app/assets/images/emoji/gb.png new file mode 100755 index 00000000000..2a62c7a0810 Binary files /dev/null and b/app/assets/images/emoji/gb.png differ diff --git a/app/assets/images/emoji/gem.png b/app/assets/images/emoji/gem.png new file mode 100755 index 00000000000..8a5d8dad5c3 Binary files /dev/null and b/app/assets/images/emoji/gem.png differ diff --git a/app/assets/images/emoji/gemini.png b/app/assets/images/emoji/gemini.png new file mode 100755 index 00000000000..d926f6e88e9 Binary files /dev/null and b/app/assets/images/emoji/gemini.png differ diff --git a/app/assets/images/emoji/ghost.png b/app/assets/images/emoji/ghost.png new file mode 100755 index 00000000000..671dd0c9e2e Binary files /dev/null and b/app/assets/images/emoji/ghost.png differ diff --git a/app/assets/images/emoji/gift.png b/app/assets/images/emoji/gift.png new file mode 100755 index 00000000000..552cfdc2b98 Binary files /dev/null and b/app/assets/images/emoji/gift.png differ diff --git a/app/assets/images/emoji/gift_heart.png b/app/assets/images/emoji/gift_heart.png new file mode 100755 index 00000000000..f31c26a3fcc Binary files /dev/null and b/app/assets/images/emoji/gift_heart.png differ diff --git a/app/assets/images/emoji/girl.png b/app/assets/images/emoji/girl.png new file mode 100755 index 00000000000..ea4126941f7 Binary files /dev/null and b/app/assets/images/emoji/girl.png differ diff --git a/app/assets/images/emoji/globe_with_meridians.png b/app/assets/images/emoji/globe_with_meridians.png new file mode 100755 index 00000000000..b198646670c Binary files /dev/null and b/app/assets/images/emoji/globe_with_meridians.png differ diff --git a/app/assets/images/emoji/goat.png b/app/assets/images/emoji/goat.png new file mode 100755 index 00000000000..4be9cf30404 Binary files /dev/null and b/app/assets/images/emoji/goat.png differ diff --git a/app/assets/images/emoji/goberserk.png b/app/assets/images/emoji/goberserk.png new file mode 100755 index 00000000000..59a742aaaa5 Binary files /dev/null and b/app/assets/images/emoji/goberserk.png differ diff --git a/app/assets/images/emoji/godmode.png b/app/assets/images/emoji/godmode.png new file mode 100755 index 00000000000..7e75ab2081b Binary files /dev/null and b/app/assets/images/emoji/godmode.png differ diff --git a/app/assets/images/emoji/golf.png b/app/assets/images/emoji/golf.png new file mode 100755 index 00000000000..cba2116a7e2 Binary files /dev/null and b/app/assets/images/emoji/golf.png differ diff --git a/app/assets/images/emoji/grapes.png b/app/assets/images/emoji/grapes.png new file mode 100755 index 00000000000..0f9f007a12f Binary files /dev/null and b/app/assets/images/emoji/grapes.png differ diff --git a/app/assets/images/emoji/green_apple.png b/app/assets/images/emoji/green_apple.png new file mode 100755 index 00000000000..337205cd125 Binary files /dev/null and b/app/assets/images/emoji/green_apple.png differ diff --git a/app/assets/images/emoji/green_book.png b/app/assets/images/emoji/green_book.png new file mode 100755 index 00000000000..e86651e5c5c Binary files /dev/null and b/app/assets/images/emoji/green_book.png differ diff --git a/app/assets/images/emoji/green_heart.png b/app/assets/images/emoji/green_heart.png new file mode 100755 index 00000000000..7289cb8147c Binary files /dev/null and b/app/assets/images/emoji/green_heart.png differ diff --git a/app/assets/images/emoji/grey_exclamation.png b/app/assets/images/emoji/grey_exclamation.png new file mode 100755 index 00000000000..a50d265e9d7 Binary files /dev/null and b/app/assets/images/emoji/grey_exclamation.png differ diff --git a/app/assets/images/emoji/grey_question.png b/app/assets/images/emoji/grey_question.png new file mode 100755 index 00000000000..fb97ba752fd Binary files /dev/null and b/app/assets/images/emoji/grey_question.png differ diff --git a/app/assets/images/emoji/grin.png b/app/assets/images/emoji/grin.png new file mode 100755 index 00000000000..591cfcef8bb Binary files /dev/null and b/app/assets/images/emoji/grin.png differ diff --git a/app/assets/images/emoji/guardsman.png b/app/assets/images/emoji/guardsman.png new file mode 100755 index 00000000000..b67b335d687 Binary files /dev/null and b/app/assets/images/emoji/guardsman.png differ diff --git a/app/assets/images/emoji/guitar.png b/app/assets/images/emoji/guitar.png new file mode 100755 index 00000000000..2b7fa43c941 Binary files /dev/null and b/app/assets/images/emoji/guitar.png differ diff --git a/app/assets/images/emoji/gun.png b/app/assets/images/emoji/gun.png new file mode 100755 index 00000000000..c49dc52c6cb Binary files /dev/null and b/app/assets/images/emoji/gun.png differ diff --git a/app/assets/images/emoji/haircut.png b/app/assets/images/emoji/haircut.png new file mode 100755 index 00000000000..902d273f6c4 Binary files /dev/null and b/app/assets/images/emoji/haircut.png differ diff --git a/app/assets/images/emoji/hamburger.png b/app/assets/images/emoji/hamburger.png new file mode 100755 index 00000000000..9f1a3fdff6e Binary files /dev/null and b/app/assets/images/emoji/hamburger.png differ diff --git a/app/assets/images/emoji/hammer.png b/app/assets/images/emoji/hammer.png new file mode 100755 index 00000000000..482b1c747d1 Binary files /dev/null and b/app/assets/images/emoji/hammer.png differ diff --git a/app/assets/images/emoji/hamster.png b/app/assets/images/emoji/hamster.png new file mode 100755 index 00000000000..addfd2e6b03 Binary files /dev/null and b/app/assets/images/emoji/hamster.png differ diff --git a/app/assets/images/emoji/hand.png b/app/assets/images/emoji/hand.png new file mode 100755 index 00000000000..5e45c25a56c Binary files /dev/null and b/app/assets/images/emoji/hand.png differ diff --git a/app/assets/images/emoji/handbag.png b/app/assets/images/emoji/handbag.png new file mode 100755 index 00000000000..d7adf04ddf2 Binary files /dev/null and b/app/assets/images/emoji/handbag.png differ diff --git a/app/assets/images/emoji/hankey.png b/app/assets/images/emoji/hankey.png new file mode 100755 index 00000000000..73a4dc84008 Binary files /dev/null and b/app/assets/images/emoji/hankey.png differ diff --git a/app/assets/images/emoji/hash.png b/app/assets/images/emoji/hash.png new file mode 100755 index 00000000000..6765d7d3c2e Binary files /dev/null and b/app/assets/images/emoji/hash.png differ diff --git a/app/assets/images/emoji/hatched_chick.png b/app/assets/images/emoji/hatched_chick.png new file mode 100755 index 00000000000..39c25bc7ccd Binary files /dev/null and b/app/assets/images/emoji/hatched_chick.png differ diff --git a/app/assets/images/emoji/hatching_chick.png b/app/assets/images/emoji/hatching_chick.png new file mode 100755 index 00000000000..005a55519f1 Binary files /dev/null and b/app/assets/images/emoji/hatching_chick.png differ diff --git a/app/assets/images/emoji/headphones.png b/app/assets/images/emoji/headphones.png new file mode 100755 index 00000000000..ad83000e687 Binary files /dev/null and b/app/assets/images/emoji/headphones.png differ diff --git a/app/assets/images/emoji/hear_no_evil.png b/app/assets/images/emoji/hear_no_evil.png new file mode 100755 index 00000000000..f97a1f9a090 Binary files /dev/null and b/app/assets/images/emoji/hear_no_evil.png differ diff --git a/app/assets/images/emoji/heart.png b/app/assets/images/emoji/heart.png new file mode 100755 index 00000000000..7d7790ce4df Binary files /dev/null and b/app/assets/images/emoji/heart.png differ diff --git a/app/assets/images/emoji/heart_decoration.png b/app/assets/images/emoji/heart_decoration.png new file mode 100755 index 00000000000..b8be44db343 Binary files /dev/null and b/app/assets/images/emoji/heart_decoration.png differ diff --git a/app/assets/images/emoji/heart_eyes.png b/app/assets/images/emoji/heart_eyes.png new file mode 100755 index 00000000000..0e5794270ea Binary files /dev/null and b/app/assets/images/emoji/heart_eyes.png differ diff --git a/app/assets/images/emoji/heart_eyes_cat.png b/app/assets/images/emoji/heart_eyes_cat.png new file mode 100755 index 00000000000..eeba240e533 Binary files /dev/null and b/app/assets/images/emoji/heart_eyes_cat.png differ diff --git a/app/assets/images/emoji/heartbeat.png b/app/assets/images/emoji/heartbeat.png new file mode 100755 index 00000000000..b6628f6fa70 Binary files /dev/null and b/app/assets/images/emoji/heartbeat.png differ diff --git a/app/assets/images/emoji/heartpulse.png b/app/assets/images/emoji/heartpulse.png new file mode 100755 index 00000000000..a7491cbeae6 Binary files /dev/null and b/app/assets/images/emoji/heartpulse.png differ diff --git a/app/assets/images/emoji/hearts.png b/app/assets/images/emoji/hearts.png new file mode 100755 index 00000000000..e8947153857 Binary files /dev/null and b/app/assets/images/emoji/hearts.png differ diff --git a/app/assets/images/emoji/heavy_check_mark.png b/app/assets/images/emoji/heavy_check_mark.png new file mode 100755 index 00000000000..336d2626d0c Binary files /dev/null and b/app/assets/images/emoji/heavy_check_mark.png differ diff --git a/app/assets/images/emoji/heavy_division_sign.png b/app/assets/images/emoji/heavy_division_sign.png new file mode 100755 index 00000000000..ac757a238ec Binary files /dev/null and b/app/assets/images/emoji/heavy_division_sign.png differ diff --git a/app/assets/images/emoji/heavy_dollar_sign.png b/app/assets/images/emoji/heavy_dollar_sign.png new file mode 100755 index 00000000000..361e26aef8b Binary files /dev/null and b/app/assets/images/emoji/heavy_dollar_sign.png differ diff --git a/app/assets/images/emoji/heavy_exclamation_mark.png b/app/assets/images/emoji/heavy_exclamation_mark.png new file mode 100755 index 00000000000..4c560f5e3f4 Binary files /dev/null and b/app/assets/images/emoji/heavy_exclamation_mark.png differ diff --git a/app/assets/images/emoji/heavy_minus_sign.png b/app/assets/images/emoji/heavy_minus_sign.png new file mode 100755 index 00000000000..b8d3d82f2cd Binary files /dev/null and b/app/assets/images/emoji/heavy_minus_sign.png differ diff --git a/app/assets/images/emoji/heavy_multiplication_x.png b/app/assets/images/emoji/heavy_multiplication_x.png new file mode 100755 index 00000000000..13d66607865 Binary files /dev/null and b/app/assets/images/emoji/heavy_multiplication_x.png differ diff --git a/app/assets/images/emoji/heavy_plus_sign.png b/app/assets/images/emoji/heavy_plus_sign.png new file mode 100755 index 00000000000..61595387bb6 Binary files /dev/null and b/app/assets/images/emoji/heavy_plus_sign.png differ diff --git a/app/assets/images/emoji/helicopter.png b/app/assets/images/emoji/helicopter.png new file mode 100755 index 00000000000..8e82a0d5876 Binary files /dev/null and b/app/assets/images/emoji/helicopter.png differ diff --git a/app/assets/images/emoji/herb.png b/app/assets/images/emoji/herb.png new file mode 100755 index 00000000000..de1ff1b73bf Binary files /dev/null and b/app/assets/images/emoji/herb.png differ diff --git a/app/assets/images/emoji/hibiscus.png b/app/assets/images/emoji/hibiscus.png new file mode 100755 index 00000000000..9365ae2169f Binary files /dev/null and b/app/assets/images/emoji/hibiscus.png differ diff --git a/app/assets/images/emoji/high_brightness.png b/app/assets/images/emoji/high_brightness.png new file mode 100755 index 00000000000..ba9de7d409c Binary files /dev/null and b/app/assets/images/emoji/high_brightness.png differ diff --git a/app/assets/images/emoji/high_heel.png b/app/assets/images/emoji/high_heel.png new file mode 100755 index 00000000000..525b6a0dd69 Binary files /dev/null and b/app/assets/images/emoji/high_heel.png differ diff --git a/app/assets/images/emoji/hocho.png b/app/assets/images/emoji/hocho.png new file mode 100755 index 00000000000..18eade0acfa Binary files /dev/null and b/app/assets/images/emoji/hocho.png differ diff --git a/app/assets/images/emoji/honey_pot.png b/app/assets/images/emoji/honey_pot.png new file mode 100755 index 00000000000..73278898a4c Binary files /dev/null and b/app/assets/images/emoji/honey_pot.png differ diff --git a/app/assets/images/emoji/honeybee.png b/app/assets/images/emoji/honeybee.png new file mode 100755 index 00000000000..f53733953af Binary files /dev/null and b/app/assets/images/emoji/honeybee.png differ diff --git a/app/assets/images/emoji/horse.png b/app/assets/images/emoji/horse.png new file mode 100755 index 00000000000..78d580ad3e9 Binary files /dev/null and b/app/assets/images/emoji/horse.png differ diff --git a/app/assets/images/emoji/horse_racing.png b/app/assets/images/emoji/horse_racing.png new file mode 100755 index 00000000000..e3bbaec1d6c Binary files /dev/null and b/app/assets/images/emoji/horse_racing.png differ diff --git a/app/assets/images/emoji/hospital.png b/app/assets/images/emoji/hospital.png new file mode 100755 index 00000000000..c05c49377fe Binary files /dev/null and b/app/assets/images/emoji/hospital.png differ diff --git a/app/assets/images/emoji/hotel.png b/app/assets/images/emoji/hotel.png new file mode 100755 index 00000000000..d29f276a180 Binary files /dev/null and b/app/assets/images/emoji/hotel.png differ diff --git a/app/assets/images/emoji/hotsprings.png b/app/assets/images/emoji/hotsprings.png new file mode 100755 index 00000000000..a0bc9d75f21 Binary files /dev/null and b/app/assets/images/emoji/hotsprings.png differ diff --git a/app/assets/images/emoji/hourglass.png b/app/assets/images/emoji/hourglass.png new file mode 100755 index 00000000000..405aab41beb Binary files /dev/null and b/app/assets/images/emoji/hourglass.png differ diff --git a/app/assets/images/emoji/house.png b/app/assets/images/emoji/house.png new file mode 100755 index 00000000000..95b9ee09480 Binary files /dev/null and b/app/assets/images/emoji/house.png differ diff --git a/app/assets/images/emoji/hurtrealbad.png b/app/assets/images/emoji/hurtrealbad.png new file mode 100755 index 00000000000..146ef1a6a87 Binary files /dev/null and b/app/assets/images/emoji/hurtrealbad.png differ diff --git a/app/assets/images/emoji/ice_cream.png b/app/assets/images/emoji/ice_cream.png new file mode 100755 index 00000000000..190be01650e Binary files /dev/null and b/app/assets/images/emoji/ice_cream.png differ diff --git a/app/assets/images/emoji/icecream.png b/app/assets/images/emoji/icecream.png new file mode 100755 index 00000000000..871ce097689 Binary files /dev/null and b/app/assets/images/emoji/icecream.png differ diff --git a/app/assets/images/emoji/id.png b/app/assets/images/emoji/id.png new file mode 100755 index 00000000000..47437a76d39 Binary files /dev/null and b/app/assets/images/emoji/id.png differ diff --git a/app/assets/images/emoji/ideograph_advantage.png b/app/assets/images/emoji/ideograph_advantage.png new file mode 100755 index 00000000000..e79af78442e Binary files /dev/null and b/app/assets/images/emoji/ideograph_advantage.png differ diff --git a/app/assets/images/emoji/imp.png b/app/assets/images/emoji/imp.png new file mode 100755 index 00000000000..5acca3373b9 Binary files /dev/null and b/app/assets/images/emoji/imp.png differ diff --git a/app/assets/images/emoji/inbox_tray.png b/app/assets/images/emoji/inbox_tray.png new file mode 100755 index 00000000000..e2df0f89705 Binary files /dev/null and b/app/assets/images/emoji/inbox_tray.png differ diff --git a/app/assets/images/emoji/incoming_envelope.png b/app/assets/images/emoji/incoming_envelope.png new file mode 100755 index 00000000000..afc82712510 Binary files /dev/null and b/app/assets/images/emoji/incoming_envelope.png differ diff --git a/app/assets/images/emoji/information_desk_person.png b/app/assets/images/emoji/information_desk_person.png new file mode 100755 index 00000000000..52c0a50a3f6 Binary files /dev/null and b/app/assets/images/emoji/information_desk_person.png differ diff --git a/app/assets/images/emoji/information_source.png b/app/assets/images/emoji/information_source.png new file mode 100755 index 00000000000..9cb8b09b249 Binary files /dev/null and b/app/assets/images/emoji/information_source.png differ diff --git a/app/assets/images/emoji/innocent.png b/app/assets/images/emoji/innocent.png new file mode 100755 index 00000000000..503b614f8dc Binary files /dev/null and b/app/assets/images/emoji/innocent.png differ diff --git a/app/assets/images/emoji/interrobang.png b/app/assets/images/emoji/interrobang.png new file mode 100755 index 00000000000..64304b9f5fb Binary files /dev/null and b/app/assets/images/emoji/interrobang.png differ diff --git a/app/assets/images/emoji/iphone.png b/app/assets/images/emoji/iphone.png new file mode 100755 index 00000000000..df007103b0b Binary files /dev/null and b/app/assets/images/emoji/iphone.png differ diff --git a/app/assets/images/emoji/it.png b/app/assets/images/emoji/it.png new file mode 100755 index 00000000000..70bc9f32463 Binary files /dev/null and b/app/assets/images/emoji/it.png differ diff --git a/app/assets/images/emoji/izakaya_lantern.png b/app/assets/images/emoji/izakaya_lantern.png new file mode 100755 index 00000000000..18730ad5597 Binary files /dev/null and b/app/assets/images/emoji/izakaya_lantern.png differ diff --git a/app/assets/images/emoji/jack_o_lantern.png b/app/assets/images/emoji/jack_o_lantern.png new file mode 100755 index 00000000000..1f7667ea458 Binary files /dev/null and b/app/assets/images/emoji/jack_o_lantern.png differ diff --git a/app/assets/images/emoji/japan.png b/app/assets/images/emoji/japan.png new file mode 100755 index 00000000000..45932803597 Binary files /dev/null and b/app/assets/images/emoji/japan.png differ diff --git a/app/assets/images/emoji/japanese_castle.png b/app/assets/images/emoji/japanese_castle.png new file mode 100755 index 00000000000..f225ab217c0 Binary files /dev/null and b/app/assets/images/emoji/japanese_castle.png differ diff --git a/app/assets/images/emoji/japanese_goblin.png b/app/assets/images/emoji/japanese_goblin.png new file mode 100755 index 00000000000..bd21b187570 Binary files /dev/null and b/app/assets/images/emoji/japanese_goblin.png differ diff --git a/app/assets/images/emoji/japanese_ogre.png b/app/assets/images/emoji/japanese_ogre.png new file mode 100755 index 00000000000..e9f5471c9a2 Binary files /dev/null and b/app/assets/images/emoji/japanese_ogre.png differ diff --git a/app/assets/images/emoji/jeans.png b/app/assets/images/emoji/jeans.png new file mode 100755 index 00000000000..d721cea54c3 Binary files /dev/null and b/app/assets/images/emoji/jeans.png differ diff --git a/app/assets/images/emoji/joy.png b/app/assets/images/emoji/joy.png new file mode 100755 index 00000000000..47df693d424 Binary files /dev/null and b/app/assets/images/emoji/joy.png differ diff --git a/app/assets/images/emoji/joy_cat.png b/app/assets/images/emoji/joy_cat.png new file mode 100755 index 00000000000..6c60cb0efc8 Binary files /dev/null and b/app/assets/images/emoji/joy_cat.png differ diff --git a/app/assets/images/emoji/jp.png b/app/assets/images/emoji/jp.png new file mode 100755 index 00000000000..b786efbbd8a Binary files /dev/null and b/app/assets/images/emoji/jp.png differ diff --git a/app/assets/images/emoji/key.png b/app/assets/images/emoji/key.png new file mode 100755 index 00000000000..34673213f64 Binary files /dev/null and b/app/assets/images/emoji/key.png differ diff --git a/app/assets/images/emoji/keycap_ten.png b/app/assets/images/emoji/keycap_ten.png new file mode 100755 index 00000000000..71dac1c1cc0 Binary files /dev/null and b/app/assets/images/emoji/keycap_ten.png differ diff --git a/app/assets/images/emoji/kimono.png b/app/assets/images/emoji/kimono.png new file mode 100755 index 00000000000..34ffe137dcd Binary files /dev/null and b/app/assets/images/emoji/kimono.png differ diff --git a/app/assets/images/emoji/kiss.png b/app/assets/images/emoji/kiss.png new file mode 100755 index 00000000000..14fd9918d58 Binary files /dev/null and b/app/assets/images/emoji/kiss.png differ diff --git a/app/assets/images/emoji/kissing_cat.png b/app/assets/images/emoji/kissing_cat.png new file mode 100755 index 00000000000..adc62fbe3ce Binary files /dev/null and b/app/assets/images/emoji/kissing_cat.png differ diff --git a/app/assets/images/emoji/kissing_face.png b/app/assets/images/emoji/kissing_face.png new file mode 100755 index 00000000000..449de197048 Binary files /dev/null and b/app/assets/images/emoji/kissing_face.png differ diff --git a/app/assets/images/emoji/kissing_heart.png b/app/assets/images/emoji/kissing_heart.png new file mode 100755 index 00000000000..af9a80b7f09 Binary files /dev/null and b/app/assets/images/emoji/kissing_heart.png differ diff --git a/app/assets/images/emoji/koala.png b/app/assets/images/emoji/koala.png new file mode 100755 index 00000000000..e17bd3cf531 Binary files /dev/null and b/app/assets/images/emoji/koala.png differ diff --git a/app/assets/images/emoji/koko.png b/app/assets/images/emoji/koko.png new file mode 100755 index 00000000000..3bef28c9fdb Binary files /dev/null and b/app/assets/images/emoji/koko.png differ diff --git a/app/assets/images/emoji/kr.png b/app/assets/images/emoji/kr.png new file mode 100755 index 00000000000..b4c0c1b673d Binary files /dev/null and b/app/assets/images/emoji/kr.png differ diff --git a/app/assets/images/emoji/large_blue_circle.png b/app/assets/images/emoji/large_blue_circle.png new file mode 100755 index 00000000000..a5b4ad4aaa2 Binary files /dev/null and b/app/assets/images/emoji/large_blue_circle.png differ diff --git a/app/assets/images/emoji/large_blue_diamond.png b/app/assets/images/emoji/large_blue_diamond.png new file mode 100755 index 00000000000..f4598ec0f20 Binary files /dev/null and b/app/assets/images/emoji/large_blue_diamond.png differ diff --git a/app/assets/images/emoji/large_orange_diamond.png b/app/assets/images/emoji/large_orange_diamond.png new file mode 100755 index 00000000000..46d52e5cb6d Binary files /dev/null and b/app/assets/images/emoji/large_orange_diamond.png differ diff --git a/app/assets/images/emoji/last_quarter_moon.png b/app/assets/images/emoji/last_quarter_moon.png new file mode 100755 index 00000000000..355e3c3f79f Binary files /dev/null and b/app/assets/images/emoji/last_quarter_moon.png differ diff --git a/app/assets/images/emoji/last_quarter_moon_with_face.png b/app/assets/images/emoji/last_quarter_moon_with_face.png new file mode 100755 index 00000000000..9ece82dfec6 Binary files /dev/null and b/app/assets/images/emoji/last_quarter_moon_with_face.png differ diff --git a/app/assets/images/emoji/laughing.png b/app/assets/images/emoji/laughing.png new file mode 100755 index 00000000000..11c91eb22e6 Binary files /dev/null and b/app/assets/images/emoji/laughing.png differ diff --git a/app/assets/images/emoji/leaves.png b/app/assets/images/emoji/leaves.png new file mode 100755 index 00000000000..5229e06bdd0 Binary files /dev/null and b/app/assets/images/emoji/leaves.png differ diff --git a/app/assets/images/emoji/ledger.png b/app/assets/images/emoji/ledger.png new file mode 100755 index 00000000000..e4f72aceacf Binary files /dev/null and b/app/assets/images/emoji/ledger.png differ diff --git a/app/assets/images/emoji/left_luggage.png b/app/assets/images/emoji/left_luggage.png new file mode 100755 index 00000000000..1c08b464db1 Binary files /dev/null and b/app/assets/images/emoji/left_luggage.png differ diff --git a/app/assets/images/emoji/left_right_arrow.png b/app/assets/images/emoji/left_right_arrow.png new file mode 100755 index 00000000000..b9fd11c5158 Binary files /dev/null and b/app/assets/images/emoji/left_right_arrow.png differ diff --git a/app/assets/images/emoji/leftwards_arrow_with_hook.png b/app/assets/images/emoji/leftwards_arrow_with_hook.png new file mode 100755 index 00000000000..bc45dfefd4a Binary files /dev/null and b/app/assets/images/emoji/leftwards_arrow_with_hook.png differ diff --git a/app/assets/images/emoji/lemon.png b/app/assets/images/emoji/lemon.png new file mode 100755 index 00000000000..9814dc95989 Binary files /dev/null and b/app/assets/images/emoji/lemon.png differ diff --git a/app/assets/images/emoji/leo.png b/app/assets/images/emoji/leo.png new file mode 100755 index 00000000000..e025933b2f8 Binary files /dev/null and b/app/assets/images/emoji/leo.png differ diff --git a/app/assets/images/emoji/leopard.png b/app/assets/images/emoji/leopard.png new file mode 100755 index 00000000000..8abfc4a2729 Binary files /dev/null and b/app/assets/images/emoji/leopard.png differ diff --git a/app/assets/images/emoji/libra.png b/app/assets/images/emoji/libra.png new file mode 100755 index 00000000000..c9062dd2eeb Binary files /dev/null and b/app/assets/images/emoji/libra.png differ diff --git a/app/assets/images/emoji/light_rail.png b/app/assets/images/emoji/light_rail.png new file mode 100755 index 00000000000..bcfe801eec6 Binary files /dev/null and b/app/assets/images/emoji/light_rail.png differ diff --git a/app/assets/images/emoji/link.png b/app/assets/images/emoji/link.png new file mode 100755 index 00000000000..ffb8f62ceca Binary files /dev/null and b/app/assets/images/emoji/link.png differ diff --git a/app/assets/images/emoji/lips.png b/app/assets/images/emoji/lips.png new file mode 100755 index 00000000000..826ed1102dc Binary files /dev/null and b/app/assets/images/emoji/lips.png differ diff --git a/app/assets/images/emoji/lipstick.png b/app/assets/images/emoji/lipstick.png new file mode 100755 index 00000000000..82f990c5679 Binary files /dev/null and b/app/assets/images/emoji/lipstick.png differ diff --git a/app/assets/images/emoji/lock.png b/app/assets/images/emoji/lock.png new file mode 100755 index 00000000000..4892b023558 Binary files /dev/null and b/app/assets/images/emoji/lock.png differ diff --git a/app/assets/images/emoji/lock_with_ink_pen.png b/app/assets/images/emoji/lock_with_ink_pen.png new file mode 100755 index 00000000000..375e67e8253 Binary files /dev/null and b/app/assets/images/emoji/lock_with_ink_pen.png differ diff --git a/app/assets/images/emoji/lollipop.png b/app/assets/images/emoji/lollipop.png new file mode 100755 index 00000000000..ba55e7093f1 Binary files /dev/null and b/app/assets/images/emoji/lollipop.png differ diff --git a/app/assets/images/emoji/loop.png b/app/assets/images/emoji/loop.png new file mode 100755 index 00000000000..ef34df3a404 Binary files /dev/null and b/app/assets/images/emoji/loop.png differ diff --git a/app/assets/images/emoji/loudspeaker.png b/app/assets/images/emoji/loudspeaker.png new file mode 100755 index 00000000000..752385e523d Binary files /dev/null and b/app/assets/images/emoji/loudspeaker.png differ diff --git a/app/assets/images/emoji/love_hotel.png b/app/assets/images/emoji/love_hotel.png new file mode 100755 index 00000000000..44d7db828ad Binary files /dev/null and b/app/assets/images/emoji/love_hotel.png differ diff --git a/app/assets/images/emoji/love_letter.png b/app/assets/images/emoji/love_letter.png new file mode 100755 index 00000000000..e29981f4453 Binary files /dev/null and b/app/assets/images/emoji/love_letter.png differ diff --git a/app/assets/images/emoji/low_brightness.png b/app/assets/images/emoji/low_brightness.png new file mode 100755 index 00000000000..ea15bde4f0d Binary files /dev/null and b/app/assets/images/emoji/low_brightness.png differ diff --git a/app/assets/images/emoji/m.png b/app/assets/images/emoji/m.png new file mode 100755 index 00000000000..7424665e2bb Binary files /dev/null and b/app/assets/images/emoji/m.png differ diff --git a/app/assets/images/emoji/mag.png b/app/assets/images/emoji/mag.png new file mode 100755 index 00000000000..aa5b1d7c46f Binary files /dev/null and b/app/assets/images/emoji/mag.png differ diff --git a/app/assets/images/emoji/mag_right.png b/app/assets/images/emoji/mag_right.png new file mode 100755 index 00000000000..6e6cf11e6d7 Binary files /dev/null and b/app/assets/images/emoji/mag_right.png differ diff --git a/app/assets/images/emoji/mahjong.png b/app/assets/images/emoji/mahjong.png new file mode 100755 index 00000000000..f51ce65fdde Binary files /dev/null and b/app/assets/images/emoji/mahjong.png differ diff --git a/app/assets/images/emoji/mailbox.png b/app/assets/images/emoji/mailbox.png new file mode 100755 index 00000000000..8351e70760c Binary files /dev/null and b/app/assets/images/emoji/mailbox.png differ diff --git a/app/assets/images/emoji/mailbox_closed.png b/app/assets/images/emoji/mailbox_closed.png new file mode 100755 index 00000000000..a5982b69bb5 Binary files /dev/null and b/app/assets/images/emoji/mailbox_closed.png differ diff --git a/app/assets/images/emoji/mailbox_with_mail.png b/app/assets/images/emoji/mailbox_with_mail.png new file mode 100755 index 00000000000..dae34594367 Binary files /dev/null and b/app/assets/images/emoji/mailbox_with_mail.png differ diff --git a/app/assets/images/emoji/mailbox_with_no_mail.png b/app/assets/images/emoji/mailbox_with_no_mail.png new file mode 100755 index 00000000000..59f15c5d7da Binary files /dev/null and b/app/assets/images/emoji/mailbox_with_no_mail.png differ diff --git a/app/assets/images/emoji/man.png b/app/assets/images/emoji/man.png new file mode 100755 index 00000000000..d9bfa26a674 Binary files /dev/null and b/app/assets/images/emoji/man.png differ diff --git a/app/assets/images/emoji/man_with_gua_pi_mao.png b/app/assets/images/emoji/man_with_gua_pi_mao.png new file mode 100755 index 00000000000..7aad74b55e3 Binary files /dev/null and b/app/assets/images/emoji/man_with_gua_pi_mao.png differ diff --git a/app/assets/images/emoji/man_with_turban.png b/app/assets/images/emoji/man_with_turban.png new file mode 100755 index 00000000000..036604caf2a Binary files /dev/null and b/app/assets/images/emoji/man_with_turban.png differ diff --git a/app/assets/images/emoji/mans_shoe.png b/app/assets/images/emoji/mans_shoe.png new file mode 100755 index 00000000000..ecba9ba7d04 Binary files /dev/null and b/app/assets/images/emoji/mans_shoe.png differ diff --git a/app/assets/images/emoji/maple_leaf.png b/app/assets/images/emoji/maple_leaf.png new file mode 100755 index 00000000000..4e9b47207de Binary files /dev/null and b/app/assets/images/emoji/maple_leaf.png differ diff --git a/app/assets/images/emoji/mask.png b/app/assets/images/emoji/mask.png new file mode 100755 index 00000000000..05887e99c6b Binary files /dev/null and b/app/assets/images/emoji/mask.png differ diff --git a/app/assets/images/emoji/massage.png b/app/assets/images/emoji/massage.png new file mode 100755 index 00000000000..dd30d159755 Binary files /dev/null and b/app/assets/images/emoji/massage.png differ diff --git a/app/assets/images/emoji/meat_on_bone.png b/app/assets/images/emoji/meat_on_bone.png new file mode 100755 index 00000000000..d6b311b6b24 Binary files /dev/null and b/app/assets/images/emoji/meat_on_bone.png differ diff --git a/app/assets/images/emoji/mega.png b/app/assets/images/emoji/mega.png new file mode 100755 index 00000000000..022df2f8d64 Binary files /dev/null and b/app/assets/images/emoji/mega.png differ diff --git a/app/assets/images/emoji/melon.png b/app/assets/images/emoji/melon.png new file mode 100755 index 00000000000..11c13cbbd44 Binary files /dev/null and b/app/assets/images/emoji/melon.png differ diff --git a/app/assets/images/emoji/memo.png b/app/assets/images/emoji/memo.png new file mode 100755 index 00000000000..fc97ddbc92b Binary files /dev/null and b/app/assets/images/emoji/memo.png differ diff --git a/app/assets/images/emoji/mens.png b/app/assets/images/emoji/mens.png new file mode 100755 index 00000000000..abccfc9f2c6 Binary files /dev/null and b/app/assets/images/emoji/mens.png differ diff --git a/app/assets/images/emoji/metal.png b/app/assets/images/emoji/metal.png new file mode 100755 index 00000000000..94f1fda2241 Binary files /dev/null and b/app/assets/images/emoji/metal.png differ diff --git a/app/assets/images/emoji/metro.png b/app/assets/images/emoji/metro.png new file mode 100755 index 00000000000..4acf5ab3e29 Binary files /dev/null and b/app/assets/images/emoji/metro.png differ diff --git a/app/assets/images/emoji/microphone.png b/app/assets/images/emoji/microphone.png new file mode 100755 index 00000000000..68c74adada1 Binary files /dev/null and b/app/assets/images/emoji/microphone.png differ diff --git a/app/assets/images/emoji/microscope.png b/app/assets/images/emoji/microscope.png new file mode 100755 index 00000000000..f11d54c010a Binary files /dev/null and b/app/assets/images/emoji/microscope.png differ diff --git a/app/assets/images/emoji/milky_way.png b/app/assets/images/emoji/milky_way.png new file mode 100755 index 00000000000..901090a1265 Binary files /dev/null and b/app/assets/images/emoji/milky_way.png differ diff --git a/app/assets/images/emoji/minibus.png b/app/assets/images/emoji/minibus.png new file mode 100755 index 00000000000..c52cef23407 Binary files /dev/null and b/app/assets/images/emoji/minibus.png differ diff --git a/app/assets/images/emoji/minidisc.png b/app/assets/images/emoji/minidisc.png new file mode 100755 index 00000000000..e19cc5d0150 Binary files /dev/null and b/app/assets/images/emoji/minidisc.png differ diff --git a/app/assets/images/emoji/mobile_phone_off.png b/app/assets/images/emoji/mobile_phone_off.png new file mode 100755 index 00000000000..fa16c763c94 Binary files /dev/null and b/app/assets/images/emoji/mobile_phone_off.png differ diff --git a/app/assets/images/emoji/money_with_wings.png b/app/assets/images/emoji/money_with_wings.png new file mode 100755 index 00000000000..135e3981ed1 Binary files /dev/null and b/app/assets/images/emoji/money_with_wings.png differ diff --git a/app/assets/images/emoji/moneybag.png b/app/assets/images/emoji/moneybag.png new file mode 100755 index 00000000000..5546c04bad4 Binary files /dev/null and b/app/assets/images/emoji/moneybag.png differ diff --git a/app/assets/images/emoji/monkey.png b/app/assets/images/emoji/monkey.png new file mode 100755 index 00000000000..64070359776 Binary files /dev/null and b/app/assets/images/emoji/monkey.png differ diff --git a/app/assets/images/emoji/monkey_face.png b/app/assets/images/emoji/monkey_face.png new file mode 100755 index 00000000000..6964cf4d51a Binary files /dev/null and b/app/assets/images/emoji/monkey_face.png differ diff --git a/app/assets/images/emoji/monorail.png b/app/assets/images/emoji/monorail.png new file mode 100755 index 00000000000..913d3002462 Binary files /dev/null and b/app/assets/images/emoji/monorail.png differ diff --git a/app/assets/images/emoji/moon.png b/app/assets/images/emoji/moon.png new file mode 100755 index 00000000000..afdb450d1df Binary files /dev/null and b/app/assets/images/emoji/moon.png differ diff --git a/app/assets/images/emoji/mortar_board.png b/app/assets/images/emoji/mortar_board.png new file mode 100755 index 00000000000..2e811b097a1 Binary files /dev/null and b/app/assets/images/emoji/mortar_board.png differ diff --git a/app/assets/images/emoji/mount_fuji.png b/app/assets/images/emoji/mount_fuji.png new file mode 100755 index 00000000000..4c313e583f0 Binary files /dev/null and b/app/assets/images/emoji/mount_fuji.png differ diff --git a/app/assets/images/emoji/mountain_bicyclist.png b/app/assets/images/emoji/mountain_bicyclist.png new file mode 100755 index 00000000000..b698897566a Binary files /dev/null and b/app/assets/images/emoji/mountain_bicyclist.png differ diff --git a/app/assets/images/emoji/mountain_cableway.png b/app/assets/images/emoji/mountain_cableway.png new file mode 100755 index 00000000000..5688bb239a7 Binary files /dev/null and b/app/assets/images/emoji/mountain_cableway.png differ diff --git a/app/assets/images/emoji/mountain_railway.png b/app/assets/images/emoji/mountain_railway.png new file mode 100755 index 00000000000..1f3d1aab56c Binary files /dev/null and b/app/assets/images/emoji/mountain_railway.png differ diff --git a/app/assets/images/emoji/mouse.png b/app/assets/images/emoji/mouse.png new file mode 100755 index 00000000000..8ff162e2dbb Binary files /dev/null and b/app/assets/images/emoji/mouse.png differ diff --git a/app/assets/images/emoji/mouse2.png b/app/assets/images/emoji/mouse2.png new file mode 100755 index 00000000000..2d777e5e1ac Binary files /dev/null and b/app/assets/images/emoji/mouse2.png differ diff --git a/app/assets/images/emoji/movie_camera.png b/app/assets/images/emoji/movie_camera.png new file mode 100755 index 00000000000..9c143840925 Binary files /dev/null and b/app/assets/images/emoji/movie_camera.png differ diff --git a/app/assets/images/emoji/moyai.png b/app/assets/images/emoji/moyai.png new file mode 100755 index 00000000000..61a1a9c21a4 Binary files /dev/null and b/app/assets/images/emoji/moyai.png differ diff --git a/app/assets/images/emoji/muscle.png b/app/assets/images/emoji/muscle.png new file mode 100755 index 00000000000..19f92efb66e Binary files /dev/null and b/app/assets/images/emoji/muscle.png differ diff --git a/app/assets/images/emoji/mushroom.png b/app/assets/images/emoji/mushroom.png new file mode 100755 index 00000000000..5eeed8e7900 Binary files /dev/null and b/app/assets/images/emoji/mushroom.png differ diff --git a/app/assets/images/emoji/musical_keyboard.png b/app/assets/images/emoji/musical_keyboard.png new file mode 100755 index 00000000000..93647a4a32d Binary files /dev/null and b/app/assets/images/emoji/musical_keyboard.png differ diff --git a/app/assets/images/emoji/musical_note.png b/app/assets/images/emoji/musical_note.png new file mode 100755 index 00000000000..68b261bcba6 Binary files /dev/null and b/app/assets/images/emoji/musical_note.png differ diff --git a/app/assets/images/emoji/musical_score.png b/app/assets/images/emoji/musical_score.png new file mode 100755 index 00000000000..0c927d32fa4 Binary files /dev/null and b/app/assets/images/emoji/musical_score.png differ diff --git a/app/assets/images/emoji/mute.png b/app/assets/images/emoji/mute.png new file mode 100755 index 00000000000..4cf67c367d3 Binary files /dev/null and b/app/assets/images/emoji/mute.png differ diff --git a/app/assets/images/emoji/nail_care.png b/app/assets/images/emoji/nail_care.png new file mode 100755 index 00000000000..6a66e63d2ad Binary files /dev/null and b/app/assets/images/emoji/nail_care.png differ diff --git a/app/assets/images/emoji/name_badge.png b/app/assets/images/emoji/name_badge.png new file mode 100755 index 00000000000..2b712dcd55a Binary files /dev/null and b/app/assets/images/emoji/name_badge.png differ diff --git a/app/assets/images/emoji/neckbeard.png b/app/assets/images/emoji/neckbeard.png new file mode 100755 index 00000000000..15108fc97da Binary files /dev/null and b/app/assets/images/emoji/neckbeard.png differ diff --git a/app/assets/images/emoji/necktie.png b/app/assets/images/emoji/necktie.png new file mode 100755 index 00000000000..80461c66f3a Binary files /dev/null and b/app/assets/images/emoji/necktie.png differ diff --git a/app/assets/images/emoji/negative_squared_cross_mark.png b/app/assets/images/emoji/negative_squared_cross_mark.png new file mode 100755 index 00000000000..b47a0cece5c Binary files /dev/null and b/app/assets/images/emoji/negative_squared_cross_mark.png differ diff --git a/app/assets/images/emoji/neutral_face.png b/app/assets/images/emoji/neutral_face.png new file mode 100755 index 00000000000..682a1ba066d Binary files /dev/null and b/app/assets/images/emoji/neutral_face.png differ diff --git a/app/assets/images/emoji/new.png b/app/assets/images/emoji/new.png new file mode 100755 index 00000000000..28d1570e0a6 Binary files /dev/null and b/app/assets/images/emoji/new.png differ diff --git a/app/assets/images/emoji/new_moon.png b/app/assets/images/emoji/new_moon.png new file mode 100755 index 00000000000..540239b1f3e Binary files /dev/null and b/app/assets/images/emoji/new_moon.png differ diff --git a/app/assets/images/emoji/new_moon_with_face.png b/app/assets/images/emoji/new_moon_with_face.png new file mode 100755 index 00000000000..b9aff7a0683 Binary files /dev/null and b/app/assets/images/emoji/new_moon_with_face.png differ diff --git a/app/assets/images/emoji/newspaper.png b/app/assets/images/emoji/newspaper.png new file mode 100755 index 00000000000..d171394e6a8 Binary files /dev/null and b/app/assets/images/emoji/newspaper.png differ diff --git a/app/assets/images/emoji/ng.png b/app/assets/images/emoji/ng.png new file mode 100755 index 00000000000..2ca180ae397 Binary files /dev/null and b/app/assets/images/emoji/ng.png differ diff --git a/app/assets/images/emoji/nine.png b/app/assets/images/emoji/nine.png new file mode 100755 index 00000000000..8006cc909f3 Binary files /dev/null and b/app/assets/images/emoji/nine.png differ diff --git a/app/assets/images/emoji/no_bell.png b/app/assets/images/emoji/no_bell.png new file mode 100755 index 00000000000..613b81cd21e Binary files /dev/null and b/app/assets/images/emoji/no_bell.png differ diff --git a/app/assets/images/emoji/no_bicycles.png b/app/assets/images/emoji/no_bicycles.png new file mode 100755 index 00000000000..4b262166455 Binary files /dev/null and b/app/assets/images/emoji/no_bicycles.png differ diff --git a/app/assets/images/emoji/no_entry.png b/app/assets/images/emoji/no_entry.png new file mode 100755 index 00000000000..cf2086a8e74 Binary files /dev/null and b/app/assets/images/emoji/no_entry.png differ diff --git a/app/assets/images/emoji/no_entry_sign.png b/app/assets/images/emoji/no_entry_sign.png new file mode 100755 index 00000000000..a8444d18d2a Binary files /dev/null and b/app/assets/images/emoji/no_entry_sign.png differ diff --git a/app/assets/images/emoji/no_good.png b/app/assets/images/emoji/no_good.png new file mode 100755 index 00000000000..d459a35bc1f Binary files /dev/null and b/app/assets/images/emoji/no_good.png differ diff --git a/app/assets/images/emoji/no_mobile_phones.png b/app/assets/images/emoji/no_mobile_phones.png new file mode 100755 index 00000000000..41df57cf827 Binary files /dev/null and b/app/assets/images/emoji/no_mobile_phones.png differ diff --git a/app/assets/images/emoji/no_mouth.png b/app/assets/images/emoji/no_mouth.png new file mode 100755 index 00000000000..d9ec7ca7d79 Binary files /dev/null and b/app/assets/images/emoji/no_mouth.png differ diff --git a/app/assets/images/emoji/no_pedestrians.png b/app/assets/images/emoji/no_pedestrians.png new file mode 100755 index 00000000000..c35f530b220 Binary files /dev/null and b/app/assets/images/emoji/no_pedestrians.png differ diff --git a/app/assets/images/emoji/no_smoking.png b/app/assets/images/emoji/no_smoking.png new file mode 100755 index 00000000000..5880ddfd188 Binary files /dev/null and b/app/assets/images/emoji/no_smoking.png differ diff --git a/app/assets/images/emoji/non-potable_water.png b/app/assets/images/emoji/non-potable_water.png new file mode 100755 index 00000000000..1b29d35b98b Binary files /dev/null and b/app/assets/images/emoji/non-potable_water.png differ diff --git a/app/assets/images/emoji/nose.png b/app/assets/images/emoji/nose.png new file mode 100755 index 00000000000..ad17c16c29e Binary files /dev/null and b/app/assets/images/emoji/nose.png differ diff --git a/app/assets/images/emoji/notebook.png b/app/assets/images/emoji/notebook.png new file mode 100755 index 00000000000..07ea6087ed4 Binary files /dev/null and b/app/assets/images/emoji/notebook.png differ diff --git a/app/assets/images/emoji/notebook_with_decorative_cover.png b/app/assets/images/emoji/notebook_with_decorative_cover.png new file mode 100755 index 00000000000..4f3b14c85f3 Binary files /dev/null and b/app/assets/images/emoji/notebook_with_decorative_cover.png differ diff --git a/app/assets/images/emoji/notes.png b/app/assets/images/emoji/notes.png new file mode 100755 index 00000000000..0956d6ab2a8 Binary files /dev/null and b/app/assets/images/emoji/notes.png differ diff --git a/app/assets/images/emoji/nut_and_bolt.png b/app/assets/images/emoji/nut_and_bolt.png new file mode 100755 index 00000000000..bddfa72a7d3 Binary files /dev/null and b/app/assets/images/emoji/nut_and_bolt.png differ diff --git a/app/assets/images/emoji/o.png b/app/assets/images/emoji/o.png new file mode 100755 index 00000000000..0ededebe312 Binary files /dev/null and b/app/assets/images/emoji/o.png differ diff --git a/app/assets/images/emoji/o2.png b/app/assets/images/emoji/o2.png new file mode 100755 index 00000000000..d85f9fb98c7 Binary files /dev/null and b/app/assets/images/emoji/o2.png differ diff --git a/app/assets/images/emoji/ocean.png b/app/assets/images/emoji/ocean.png new file mode 100755 index 00000000000..f8d520cd490 Binary files /dev/null and b/app/assets/images/emoji/ocean.png differ diff --git a/app/assets/images/emoji/octocat.png b/app/assets/images/emoji/octocat.png new file mode 100755 index 00000000000..3fc20503e90 Binary files /dev/null and b/app/assets/images/emoji/octocat.png differ diff --git a/app/assets/images/emoji/octopus.png b/app/assets/images/emoji/octopus.png new file mode 100755 index 00000000000..52ce64b4687 Binary files /dev/null and b/app/assets/images/emoji/octopus.png differ diff --git a/app/assets/images/emoji/oden.png b/app/assets/images/emoji/oden.png new file mode 100755 index 00000000000..73add1c73cf Binary files /dev/null and b/app/assets/images/emoji/oden.png differ diff --git a/app/assets/images/emoji/office.png b/app/assets/images/emoji/office.png new file mode 100755 index 00000000000..ea9281a413d Binary files /dev/null and b/app/assets/images/emoji/office.png differ diff --git a/app/assets/images/emoji/ok.png b/app/assets/images/emoji/ok.png new file mode 100755 index 00000000000..6433d1a90a9 Binary files /dev/null and b/app/assets/images/emoji/ok.png differ diff --git a/app/assets/images/emoji/ok_hand.png b/app/assets/images/emoji/ok_hand.png new file mode 100755 index 00000000000..80c5aebb680 Binary files /dev/null and b/app/assets/images/emoji/ok_hand.png differ diff --git a/app/assets/images/emoji/ok_woman.png b/app/assets/images/emoji/ok_woman.png new file mode 100755 index 00000000000..e8b98194edb Binary files /dev/null and b/app/assets/images/emoji/ok_woman.png differ diff --git a/app/assets/images/emoji/older_man.png b/app/assets/images/emoji/older_man.png new file mode 100755 index 00000000000..149f0cfb8e1 Binary files /dev/null and b/app/assets/images/emoji/older_man.png differ diff --git a/app/assets/images/emoji/older_woman.png b/app/assets/images/emoji/older_woman.png new file mode 100755 index 00000000000..f839565f478 Binary files /dev/null and b/app/assets/images/emoji/older_woman.png differ diff --git a/app/assets/images/emoji/on.png b/app/assets/images/emoji/on.png new file mode 100755 index 00000000000..3595387fb63 Binary files /dev/null and b/app/assets/images/emoji/on.png differ diff --git a/app/assets/images/emoji/oncoming_automobile.png b/app/assets/images/emoji/oncoming_automobile.png new file mode 100755 index 00000000000..cb46de22cbb Binary files /dev/null and b/app/assets/images/emoji/oncoming_automobile.png differ diff --git a/app/assets/images/emoji/oncoming_bus.png b/app/assets/images/emoji/oncoming_bus.png new file mode 100755 index 00000000000..3695f762353 Binary files /dev/null and b/app/assets/images/emoji/oncoming_bus.png differ diff --git a/app/assets/images/emoji/oncoming_police_car.png b/app/assets/images/emoji/oncoming_police_car.png new file mode 100755 index 00000000000..af20e7eff03 Binary files /dev/null and b/app/assets/images/emoji/oncoming_police_car.png differ diff --git a/app/assets/images/emoji/oncoming_taxi.png b/app/assets/images/emoji/oncoming_taxi.png new file mode 100755 index 00000000000..f78cf3103b8 Binary files /dev/null and b/app/assets/images/emoji/oncoming_taxi.png differ diff --git a/app/assets/images/emoji/one.png b/app/assets/images/emoji/one.png new file mode 100755 index 00000000000..2d1f9f8c49d Binary files /dev/null and b/app/assets/images/emoji/one.png differ diff --git a/app/assets/images/emoji/open_file_folder.png b/app/assets/images/emoji/open_file_folder.png new file mode 100755 index 00000000000..2bbbbf5e7cd Binary files /dev/null and b/app/assets/images/emoji/open_file_folder.png differ diff --git a/app/assets/images/emoji/open_hands.png b/app/assets/images/emoji/open_hands.png new file mode 100755 index 00000000000..2cc25bd41a4 Binary files /dev/null and b/app/assets/images/emoji/open_hands.png differ diff --git a/app/assets/images/emoji/ophiuchus.png b/app/assets/images/emoji/ophiuchus.png new file mode 100755 index 00000000000..4eef715bc28 Binary files /dev/null and b/app/assets/images/emoji/ophiuchus.png differ diff --git a/app/assets/images/emoji/orange_book.png b/app/assets/images/emoji/orange_book.png new file mode 100755 index 00000000000..49650d59e59 Binary files /dev/null and b/app/assets/images/emoji/orange_book.png differ diff --git a/app/assets/images/emoji/outbox_tray.png b/app/assets/images/emoji/outbox_tray.png new file mode 100755 index 00000000000..7ad15e649de Binary files /dev/null and b/app/assets/images/emoji/outbox_tray.png differ diff --git a/app/assets/images/emoji/ox.png b/app/assets/images/emoji/ox.png new file mode 100755 index 00000000000..f7669802480 Binary files /dev/null and b/app/assets/images/emoji/ox.png differ diff --git a/app/assets/images/emoji/page_facing_up.png b/app/assets/images/emoji/page_facing_up.png new file mode 100755 index 00000000000..64cd2e1b2a2 Binary files /dev/null and b/app/assets/images/emoji/page_facing_up.png differ diff --git a/app/assets/images/emoji/page_with_curl.png b/app/assets/images/emoji/page_with_curl.png new file mode 100755 index 00000000000..bf8f979d31c Binary files /dev/null and b/app/assets/images/emoji/page_with_curl.png differ diff --git a/app/assets/images/emoji/pager.png b/app/assets/images/emoji/pager.png new file mode 100755 index 00000000000..e3e1fc44ee5 Binary files /dev/null and b/app/assets/images/emoji/pager.png differ diff --git a/app/assets/images/emoji/palm_tree.png b/app/assets/images/emoji/palm_tree.png new file mode 100755 index 00000000000..d534785ef96 Binary files /dev/null and b/app/assets/images/emoji/palm_tree.png differ diff --git a/app/assets/images/emoji/panda_face.png b/app/assets/images/emoji/panda_face.png new file mode 100755 index 00000000000..a794fb17f67 Binary files /dev/null and b/app/assets/images/emoji/panda_face.png differ diff --git a/app/assets/images/emoji/paperclip.png b/app/assets/images/emoji/paperclip.png new file mode 100755 index 00000000000..774412dc10f Binary files /dev/null and b/app/assets/images/emoji/paperclip.png differ diff --git a/app/assets/images/emoji/parking.png b/app/assets/images/emoji/parking.png new file mode 100755 index 00000000000..c24af81ccf6 Binary files /dev/null and b/app/assets/images/emoji/parking.png differ diff --git a/app/assets/images/emoji/part_alternation_mark.png b/app/assets/images/emoji/part_alternation_mark.png new file mode 100755 index 00000000000..45dc9b851a1 Binary files /dev/null and b/app/assets/images/emoji/part_alternation_mark.png differ diff --git a/app/assets/images/emoji/partly_sunny.png b/app/assets/images/emoji/partly_sunny.png new file mode 100755 index 00000000000..020dd5ff698 Binary files /dev/null and b/app/assets/images/emoji/partly_sunny.png differ diff --git a/app/assets/images/emoji/passport_control.png b/app/assets/images/emoji/passport_control.png new file mode 100755 index 00000000000..675b76d378c Binary files /dev/null and b/app/assets/images/emoji/passport_control.png differ diff --git a/app/assets/images/emoji/paw_prints.png b/app/assets/images/emoji/paw_prints.png new file mode 100755 index 00000000000..89b9fec9efa Binary files /dev/null and b/app/assets/images/emoji/paw_prints.png differ diff --git a/app/assets/images/emoji/peach.png b/app/assets/images/emoji/peach.png new file mode 100755 index 00000000000..ee2139ecb88 Binary files /dev/null and b/app/assets/images/emoji/peach.png differ diff --git a/app/assets/images/emoji/pear.png b/app/assets/images/emoji/pear.png new file mode 100755 index 00000000000..f24aca8c0a8 Binary files /dev/null and b/app/assets/images/emoji/pear.png differ diff --git a/app/assets/images/emoji/pencil.png b/app/assets/images/emoji/pencil.png new file mode 100755 index 00000000000..fc97ddbc92b Binary files /dev/null and b/app/assets/images/emoji/pencil.png differ diff --git a/app/assets/images/emoji/pencil2.png b/app/assets/images/emoji/pencil2.png new file mode 100755 index 00000000000..e624373b491 Binary files /dev/null and b/app/assets/images/emoji/pencil2.png differ diff --git a/app/assets/images/emoji/penguin.png b/app/assets/images/emoji/penguin.png new file mode 100755 index 00000000000..d8edbcb8fa9 Binary files /dev/null and b/app/assets/images/emoji/penguin.png differ diff --git a/app/assets/images/emoji/pensive.png b/app/assets/images/emoji/pensive.png new file mode 100755 index 00000000000..4159f3c42ff Binary files /dev/null and b/app/assets/images/emoji/pensive.png differ diff --git a/app/assets/images/emoji/performing_arts.png b/app/assets/images/emoji/performing_arts.png new file mode 100755 index 00000000000..899fbe5a791 Binary files /dev/null and b/app/assets/images/emoji/performing_arts.png differ diff --git a/app/assets/images/emoji/persevere.png b/app/assets/images/emoji/persevere.png new file mode 100755 index 00000000000..f99f6da47c1 Binary files /dev/null and b/app/assets/images/emoji/persevere.png differ diff --git a/app/assets/images/emoji/person_frowning.png b/app/assets/images/emoji/person_frowning.png new file mode 100755 index 00000000000..6f34d5e159d Binary files /dev/null and b/app/assets/images/emoji/person_frowning.png differ diff --git a/app/assets/images/emoji/person_with_blond_hair.png b/app/assets/images/emoji/person_with_blond_hair.png new file mode 100755 index 00000000000..c144301cbb8 Binary files /dev/null and b/app/assets/images/emoji/person_with_blond_hair.png differ diff --git a/app/assets/images/emoji/person_with_pouting_face.png b/app/assets/images/emoji/person_with_pouting_face.png new file mode 100755 index 00000000000..c4a95c3b2a2 Binary files /dev/null and b/app/assets/images/emoji/person_with_pouting_face.png differ diff --git a/app/assets/images/emoji/phone.png b/app/assets/images/emoji/phone.png new file mode 100755 index 00000000000..87d2559b552 Binary files /dev/null and b/app/assets/images/emoji/phone.png differ diff --git a/app/assets/images/emoji/pig.png b/app/assets/images/emoji/pig.png new file mode 100755 index 00000000000..f7f273c733b Binary files /dev/null and b/app/assets/images/emoji/pig.png differ diff --git a/app/assets/images/emoji/pig2.png b/app/assets/images/emoji/pig2.png new file mode 100755 index 00000000000..fec3374d709 Binary files /dev/null and b/app/assets/images/emoji/pig2.png differ diff --git a/app/assets/images/emoji/pig_nose.png b/app/assets/images/emoji/pig_nose.png new file mode 100755 index 00000000000..38d612446eb Binary files /dev/null and b/app/assets/images/emoji/pig_nose.png differ diff --git a/app/assets/images/emoji/pill.png b/app/assets/images/emoji/pill.png new file mode 100755 index 00000000000..cd84a78ff75 Binary files /dev/null and b/app/assets/images/emoji/pill.png differ diff --git a/app/assets/images/emoji/pineapple.png b/app/assets/images/emoji/pineapple.png new file mode 100755 index 00000000000..d6f8e287692 Binary files /dev/null and b/app/assets/images/emoji/pineapple.png differ diff --git a/app/assets/images/emoji/pisces.png b/app/assets/images/emoji/pisces.png new file mode 100755 index 00000000000..5a2da0a0599 Binary files /dev/null and b/app/assets/images/emoji/pisces.png differ diff --git a/app/assets/images/emoji/pizza.png b/app/assets/images/emoji/pizza.png new file mode 100755 index 00000000000..460367d02cd Binary files /dev/null and b/app/assets/images/emoji/pizza.png differ diff --git a/app/assets/images/emoji/plus1.png b/app/assets/images/emoji/plus1.png new file mode 100755 index 00000000000..81786c1d8f5 Binary files /dev/null and b/app/assets/images/emoji/plus1.png differ diff --git a/app/assets/images/emoji/point_down.png b/app/assets/images/emoji/point_down.png new file mode 100755 index 00000000000..658c6d91875 Binary files /dev/null and b/app/assets/images/emoji/point_down.png differ diff --git a/app/assets/images/emoji/point_left.png b/app/assets/images/emoji/point_left.png new file mode 100755 index 00000000000..38a99b43f7f Binary files /dev/null and b/app/assets/images/emoji/point_left.png differ diff --git a/app/assets/images/emoji/point_right.png b/app/assets/images/emoji/point_right.png new file mode 100755 index 00000000000..6f9f029a420 Binary files /dev/null and b/app/assets/images/emoji/point_right.png differ diff --git a/app/assets/images/emoji/point_up.png b/app/assets/images/emoji/point_up.png new file mode 100755 index 00000000000..01896e214aa Binary files /dev/null and b/app/assets/images/emoji/point_up.png differ diff --git a/app/assets/images/emoji/point_up_2.png b/app/assets/images/emoji/point_up_2.png new file mode 100755 index 00000000000..1cfe73672c0 Binary files /dev/null and b/app/assets/images/emoji/point_up_2.png differ diff --git a/app/assets/images/emoji/police_car.png b/app/assets/images/emoji/police_car.png new file mode 100755 index 00000000000..b8f17275ee1 Binary files /dev/null and b/app/assets/images/emoji/police_car.png differ diff --git a/app/assets/images/emoji/poodle.png b/app/assets/images/emoji/poodle.png new file mode 100755 index 00000000000..adac80bd97a Binary files /dev/null and b/app/assets/images/emoji/poodle.png differ diff --git a/app/assets/images/emoji/poop.png b/app/assets/images/emoji/poop.png new file mode 100755 index 00000000000..73a4dc84008 Binary files /dev/null and b/app/assets/images/emoji/poop.png differ diff --git a/app/assets/images/emoji/post_office.png b/app/assets/images/emoji/post_office.png new file mode 100755 index 00000000000..43b59e30ec2 Binary files /dev/null and b/app/assets/images/emoji/post_office.png differ diff --git a/app/assets/images/emoji/postal_horn.png b/app/assets/images/emoji/postal_horn.png new file mode 100755 index 00000000000..e9b713bbeca Binary files /dev/null and b/app/assets/images/emoji/postal_horn.png differ diff --git a/app/assets/images/emoji/postbox.png b/app/assets/images/emoji/postbox.png new file mode 100755 index 00000000000..ce04b7008ba Binary files /dev/null and b/app/assets/images/emoji/postbox.png differ diff --git a/app/assets/images/emoji/potable_water.png b/app/assets/images/emoji/potable_water.png new file mode 100755 index 00000000000..e9fd56079ca Binary files /dev/null and b/app/assets/images/emoji/potable_water.png differ diff --git a/app/assets/images/emoji/pouch.png b/app/assets/images/emoji/pouch.png new file mode 100755 index 00000000000..0bc5879fcbb Binary files /dev/null and b/app/assets/images/emoji/pouch.png differ diff --git a/app/assets/images/emoji/poultry_leg.png b/app/assets/images/emoji/poultry_leg.png new file mode 100755 index 00000000000..43ad8596518 Binary files /dev/null and b/app/assets/images/emoji/poultry_leg.png differ diff --git a/app/assets/images/emoji/pound.png b/app/assets/images/emoji/pound.png new file mode 100755 index 00000000000..f8be91d7a4b Binary files /dev/null and b/app/assets/images/emoji/pound.png differ diff --git a/app/assets/images/emoji/pouting_cat.png b/app/assets/images/emoji/pouting_cat.png new file mode 100755 index 00000000000..4325fd48dd7 Binary files /dev/null and b/app/assets/images/emoji/pouting_cat.png differ diff --git a/app/assets/images/emoji/pray.png b/app/assets/images/emoji/pray.png new file mode 100755 index 00000000000..f86c992d5a7 Binary files /dev/null and b/app/assets/images/emoji/pray.png differ diff --git a/app/assets/images/emoji/princess.png b/app/assets/images/emoji/princess.png new file mode 100755 index 00000000000..1ebb2ce9b13 Binary files /dev/null and b/app/assets/images/emoji/princess.png differ diff --git a/app/assets/images/emoji/punch.png b/app/assets/images/emoji/punch.png new file mode 100755 index 00000000000..277047b7c46 Binary files /dev/null and b/app/assets/images/emoji/punch.png differ diff --git a/app/assets/images/emoji/purple_heart.png b/app/assets/images/emoji/purple_heart.png new file mode 100755 index 00000000000..d5f875043f0 Binary files /dev/null and b/app/assets/images/emoji/purple_heart.png differ diff --git a/app/assets/images/emoji/purse.png b/app/assets/images/emoji/purse.png new file mode 100755 index 00000000000..8f06a2b932c Binary files /dev/null and b/app/assets/images/emoji/purse.png differ diff --git a/app/assets/images/emoji/pushpin.png b/app/assets/images/emoji/pushpin.png new file mode 100755 index 00000000000..540c4ecb885 Binary files /dev/null and b/app/assets/images/emoji/pushpin.png differ diff --git a/app/assets/images/emoji/put_litter_in_its_place.png b/app/assets/images/emoji/put_litter_in_its_place.png new file mode 100755 index 00000000000..c2e350c2dc6 Binary files /dev/null and b/app/assets/images/emoji/put_litter_in_its_place.png differ diff --git a/app/assets/images/emoji/question.png b/app/assets/images/emoji/question.png new file mode 100755 index 00000000000..38cedf560fb Binary files /dev/null and b/app/assets/images/emoji/question.png differ diff --git a/app/assets/images/emoji/rabbit.png b/app/assets/images/emoji/rabbit.png new file mode 100755 index 00000000000..5cb3ef6f0c6 Binary files /dev/null and b/app/assets/images/emoji/rabbit.png differ diff --git a/app/assets/images/emoji/rabbit2.png b/app/assets/images/emoji/rabbit2.png new file mode 100755 index 00000000000..5bc993e799c Binary files /dev/null and b/app/assets/images/emoji/rabbit2.png differ diff --git a/app/assets/images/emoji/racehorse.png b/app/assets/images/emoji/racehorse.png new file mode 100755 index 00000000000..4d09c64de7e Binary files /dev/null and b/app/assets/images/emoji/racehorse.png differ diff --git a/app/assets/images/emoji/radio.png b/app/assets/images/emoji/radio.png new file mode 100755 index 00000000000..ea589efe32c Binary files /dev/null and b/app/assets/images/emoji/radio.png differ diff --git a/app/assets/images/emoji/radio_button.png b/app/assets/images/emoji/radio_button.png new file mode 100755 index 00000000000..63755eec258 Binary files /dev/null and b/app/assets/images/emoji/radio_button.png differ diff --git a/app/assets/images/emoji/rage.png b/app/assets/images/emoji/rage.png new file mode 100755 index 00000000000..c65ddff552a Binary files /dev/null and b/app/assets/images/emoji/rage.png differ diff --git a/app/assets/images/emoji/rage1.png b/app/assets/images/emoji/rage1.png new file mode 100755 index 00000000000..1506ba4032a Binary files /dev/null and b/app/assets/images/emoji/rage1.png differ diff --git a/app/assets/images/emoji/rage2.png b/app/assets/images/emoji/rage2.png new file mode 100755 index 00000000000..f792e063b49 Binary files /dev/null and b/app/assets/images/emoji/rage2.png differ diff --git a/app/assets/images/emoji/rage3.png b/app/assets/images/emoji/rage3.png new file mode 100755 index 00000000000..58764cbcb3b Binary files /dev/null and b/app/assets/images/emoji/rage3.png differ diff --git a/app/assets/images/emoji/rage4.png b/app/assets/images/emoji/rage4.png new file mode 100755 index 00000000000..c726c94a295 Binary files /dev/null and b/app/assets/images/emoji/rage4.png differ diff --git a/app/assets/images/emoji/railway_car.png b/app/assets/images/emoji/railway_car.png new file mode 100755 index 00000000000..22361158fb3 Binary files /dev/null and b/app/assets/images/emoji/railway_car.png differ diff --git a/app/assets/images/emoji/rainbow.png b/app/assets/images/emoji/rainbow.png new file mode 100755 index 00000000000..6b1faa03793 Binary files /dev/null and b/app/assets/images/emoji/rainbow.png differ diff --git a/app/assets/images/emoji/raised_hand.png b/app/assets/images/emoji/raised_hand.png new file mode 100755 index 00000000000..e1741a40e74 Binary files /dev/null and b/app/assets/images/emoji/raised_hand.png differ diff --git a/app/assets/images/emoji/raised_hands.png b/app/assets/images/emoji/raised_hands.png new file mode 100755 index 00000000000..e03142bdce9 Binary files /dev/null and b/app/assets/images/emoji/raised_hands.png differ diff --git a/app/assets/images/emoji/ram.png b/app/assets/images/emoji/ram.png new file mode 100755 index 00000000000..5ea7bfbc0d8 Binary files /dev/null and b/app/assets/images/emoji/ram.png differ diff --git a/app/assets/images/emoji/ramen.png b/app/assets/images/emoji/ramen.png new file mode 100755 index 00000000000..78dc7d537fb Binary files /dev/null and b/app/assets/images/emoji/ramen.png differ diff --git a/app/assets/images/emoji/rat.png b/app/assets/images/emoji/rat.png new file mode 100755 index 00000000000..1c463dfde64 Binary files /dev/null and b/app/assets/images/emoji/rat.png differ diff --git a/app/assets/images/emoji/recycle.png b/app/assets/images/emoji/recycle.png new file mode 100755 index 00000000000..99104c0e9cd Binary files /dev/null and b/app/assets/images/emoji/recycle.png differ diff --git a/app/assets/images/emoji/red_car.png b/app/assets/images/emoji/red_car.png new file mode 100755 index 00000000000..d70a2f06263 Binary files /dev/null and b/app/assets/images/emoji/red_car.png differ diff --git a/app/assets/images/emoji/red_circle.png b/app/assets/images/emoji/red_circle.png new file mode 100755 index 00000000000..b391289b203 Binary files /dev/null and b/app/assets/images/emoji/red_circle.png differ diff --git a/app/assets/images/emoji/registered.png b/app/assets/images/emoji/registered.png new file mode 100755 index 00000000000..31c68a80b08 Binary files /dev/null and b/app/assets/images/emoji/registered.png differ diff --git a/app/assets/images/emoji/relaxed.png b/app/assets/images/emoji/relaxed.png new file mode 100755 index 00000000000..bbab82d3bb5 Binary files /dev/null and b/app/assets/images/emoji/relaxed.png differ diff --git a/app/assets/images/emoji/relieved.png b/app/assets/images/emoji/relieved.png new file mode 100755 index 00000000000..fa5f9e7f9f9 Binary files /dev/null and b/app/assets/images/emoji/relieved.png differ diff --git a/app/assets/images/emoji/repeat.png b/app/assets/images/emoji/repeat.png new file mode 100755 index 00000000000..80113b6929b Binary files /dev/null and b/app/assets/images/emoji/repeat.png differ diff --git a/app/assets/images/emoji/repeat_one.png b/app/assets/images/emoji/repeat_one.png new file mode 100755 index 00000000000..3c47bcc1f33 Binary files /dev/null and b/app/assets/images/emoji/repeat_one.png differ diff --git a/app/assets/images/emoji/restroom.png b/app/assets/images/emoji/restroom.png new file mode 100755 index 00000000000..d6c111b29b9 Binary files /dev/null and b/app/assets/images/emoji/restroom.png differ diff --git a/app/assets/images/emoji/revolving_hearts.png b/app/assets/images/emoji/revolving_hearts.png new file mode 100755 index 00000000000..ea3317c47fb Binary files /dev/null and b/app/assets/images/emoji/revolving_hearts.png differ diff --git a/app/assets/images/emoji/rewind.png b/app/assets/images/emoji/rewind.png new file mode 100755 index 00000000000..26289dc3d2c Binary files /dev/null and b/app/assets/images/emoji/rewind.png differ diff --git a/app/assets/images/emoji/ribbon.png b/app/assets/images/emoji/ribbon.png new file mode 100755 index 00000000000..63ee5ba5af2 Binary files /dev/null and b/app/assets/images/emoji/ribbon.png differ diff --git a/app/assets/images/emoji/rice.png b/app/assets/images/emoji/rice.png new file mode 100755 index 00000000000..1fd22027bc5 Binary files /dev/null and b/app/assets/images/emoji/rice.png differ diff --git a/app/assets/images/emoji/rice_ball.png b/app/assets/images/emoji/rice_ball.png new file mode 100755 index 00000000000..04f8a88067c Binary files /dev/null and b/app/assets/images/emoji/rice_ball.png differ diff --git a/app/assets/images/emoji/rice_cracker.png b/app/assets/images/emoji/rice_cracker.png new file mode 100755 index 00000000000..954c901e935 Binary files /dev/null and b/app/assets/images/emoji/rice_cracker.png differ diff --git a/app/assets/images/emoji/rice_scene.png b/app/assets/images/emoji/rice_scene.png new file mode 100755 index 00000000000..14361988db7 Binary files /dev/null and b/app/assets/images/emoji/rice_scene.png differ diff --git a/app/assets/images/emoji/ring.png b/app/assets/images/emoji/ring.png new file mode 100755 index 00000000000..8a57fd68bac Binary files /dev/null and b/app/assets/images/emoji/ring.png differ diff --git a/app/assets/images/emoji/rocket.png b/app/assets/images/emoji/rocket.png new file mode 100755 index 00000000000..783078d3798 Binary files /dev/null and b/app/assets/images/emoji/rocket.png differ diff --git a/app/assets/images/emoji/roller_coaster.png b/app/assets/images/emoji/roller_coaster.png new file mode 100755 index 00000000000..9180b9861dc Binary files /dev/null and b/app/assets/images/emoji/roller_coaster.png differ diff --git a/app/assets/images/emoji/rooster.png b/app/assets/images/emoji/rooster.png new file mode 100755 index 00000000000..fab23ad3625 Binary files /dev/null and b/app/assets/images/emoji/rooster.png differ diff --git a/app/assets/images/emoji/rose.png b/app/assets/images/emoji/rose.png new file mode 100755 index 00000000000..3479fbcbbd4 Binary files /dev/null and b/app/assets/images/emoji/rose.png differ diff --git a/app/assets/images/emoji/rotating_light.png b/app/assets/images/emoji/rotating_light.png new file mode 100755 index 00000000000..6cf4a775e0a Binary files /dev/null and b/app/assets/images/emoji/rotating_light.png differ diff --git a/app/assets/images/emoji/round_pushpin.png b/app/assets/images/emoji/round_pushpin.png new file mode 100755 index 00000000000..e498e92cf6a Binary files /dev/null and b/app/assets/images/emoji/round_pushpin.png differ diff --git a/app/assets/images/emoji/rowboat.png b/app/assets/images/emoji/rowboat.png new file mode 100755 index 00000000000..fe8ae3ecdab Binary files /dev/null and b/app/assets/images/emoji/rowboat.png differ diff --git a/app/assets/images/emoji/ru.png b/app/assets/images/emoji/ru.png new file mode 100755 index 00000000000..55fcf3549e2 Binary files /dev/null and b/app/assets/images/emoji/ru.png differ diff --git a/app/assets/images/emoji/rugby_football.png b/app/assets/images/emoji/rugby_football.png new file mode 100755 index 00000000000..f8db67d7018 Binary files /dev/null and b/app/assets/images/emoji/rugby_football.png differ diff --git a/app/assets/images/emoji/runner.png b/app/assets/images/emoji/runner.png new file mode 100755 index 00000000000..cb00429623d Binary files /dev/null and b/app/assets/images/emoji/runner.png differ diff --git a/app/assets/images/emoji/running.png b/app/assets/images/emoji/running.png new file mode 100755 index 00000000000..1ecfd9059d8 Binary files /dev/null and b/app/assets/images/emoji/running.png differ diff --git a/app/assets/images/emoji/running_shirt_with_sash.png b/app/assets/images/emoji/running_shirt_with_sash.png new file mode 100755 index 00000000000..0d68bba0910 Binary files /dev/null and b/app/assets/images/emoji/running_shirt_with_sash.png differ diff --git a/app/assets/images/emoji/sa.png b/app/assets/images/emoji/sa.png new file mode 100755 index 00000000000..387f098b99c Binary files /dev/null and b/app/assets/images/emoji/sa.png differ diff --git a/app/assets/images/emoji/sagittarius.png b/app/assets/images/emoji/sagittarius.png new file mode 100755 index 00000000000..8b5435baaa9 Binary files /dev/null and b/app/assets/images/emoji/sagittarius.png differ diff --git a/app/assets/images/emoji/sailboat.png b/app/assets/images/emoji/sailboat.png new file mode 100755 index 00000000000..ff656dc62bb Binary files /dev/null and b/app/assets/images/emoji/sailboat.png differ diff --git a/app/assets/images/emoji/sake.png b/app/assets/images/emoji/sake.png new file mode 100755 index 00000000000..1f69907e58a Binary files /dev/null and b/app/assets/images/emoji/sake.png differ diff --git a/app/assets/images/emoji/sandal.png b/app/assets/images/emoji/sandal.png new file mode 100755 index 00000000000..0bb3f663f5c Binary files /dev/null and b/app/assets/images/emoji/sandal.png differ diff --git a/app/assets/images/emoji/santa.png b/app/assets/images/emoji/santa.png new file mode 100755 index 00000000000..a2240c07e7a Binary files /dev/null and b/app/assets/images/emoji/santa.png differ diff --git a/app/assets/images/emoji/satellite.png b/app/assets/images/emoji/satellite.png new file mode 100755 index 00000000000..3481cc2ef4a Binary files /dev/null and b/app/assets/images/emoji/satellite.png differ diff --git a/app/assets/images/emoji/satisfied.png b/app/assets/images/emoji/satisfied.png new file mode 100755 index 00000000000..fe5629f431e Binary files /dev/null and b/app/assets/images/emoji/satisfied.png differ diff --git a/app/assets/images/emoji/saxophone.png b/app/assets/images/emoji/saxophone.png new file mode 100755 index 00000000000..011559a7673 Binary files /dev/null and b/app/assets/images/emoji/saxophone.png differ diff --git a/app/assets/images/emoji/school.png b/app/assets/images/emoji/school.png new file mode 100755 index 00000000000..afd922bf137 Binary files /dev/null and b/app/assets/images/emoji/school.png differ diff --git a/app/assets/images/emoji/school_satchel.png b/app/assets/images/emoji/school_satchel.png new file mode 100755 index 00000000000..edfb19aec91 Binary files /dev/null and b/app/assets/images/emoji/school_satchel.png differ diff --git a/app/assets/images/emoji/scissors.png b/app/assets/images/emoji/scissors.png new file mode 100755 index 00000000000..be916043d2b Binary files /dev/null and b/app/assets/images/emoji/scissors.png differ diff --git a/app/assets/images/emoji/scorpius.png b/app/assets/images/emoji/scorpius.png new file mode 100755 index 00000000000..67fcea1658a Binary files /dev/null and b/app/assets/images/emoji/scorpius.png differ diff --git a/app/assets/images/emoji/scream.png b/app/assets/images/emoji/scream.png new file mode 100755 index 00000000000..9e93c885dba Binary files /dev/null and b/app/assets/images/emoji/scream.png differ diff --git a/app/assets/images/emoji/scream_cat.png b/app/assets/images/emoji/scream_cat.png new file mode 100755 index 00000000000..d94cd34ff5d Binary files /dev/null and b/app/assets/images/emoji/scream_cat.png differ diff --git a/app/assets/images/emoji/scroll.png b/app/assets/images/emoji/scroll.png new file mode 100755 index 00000000000..c5a10e6b8f7 Binary files /dev/null and b/app/assets/images/emoji/scroll.png differ diff --git a/app/assets/images/emoji/seat.png b/app/assets/images/emoji/seat.png new file mode 100755 index 00000000000..d1cb864b4bf Binary files /dev/null and b/app/assets/images/emoji/seat.png differ diff --git a/app/assets/images/emoji/secret.png b/app/assets/images/emoji/secret.png new file mode 100755 index 00000000000..82e383a60d1 Binary files /dev/null and b/app/assets/images/emoji/secret.png differ diff --git a/app/assets/images/emoji/see_no_evil.png b/app/assets/images/emoji/see_no_evil.png new file mode 100755 index 00000000000..0890a622279 Binary files /dev/null and b/app/assets/images/emoji/see_no_evil.png differ diff --git a/app/assets/images/emoji/seedling.png b/app/assets/images/emoji/seedling.png new file mode 100755 index 00000000000..f0eb5a6b99a Binary files /dev/null and b/app/assets/images/emoji/seedling.png differ diff --git a/app/assets/images/emoji/seven.png b/app/assets/images/emoji/seven.png new file mode 100755 index 00000000000..354e89ae75a Binary files /dev/null and b/app/assets/images/emoji/seven.png differ diff --git a/app/assets/images/emoji/shaved_ice.png b/app/assets/images/emoji/shaved_ice.png new file mode 100755 index 00000000000..0d0b382c22b Binary files /dev/null and b/app/assets/images/emoji/shaved_ice.png differ diff --git a/app/assets/images/emoji/sheep.png b/app/assets/images/emoji/sheep.png new file mode 100755 index 00000000000..c7277d2898e Binary files /dev/null and b/app/assets/images/emoji/sheep.png differ diff --git a/app/assets/images/emoji/shell.png b/app/assets/images/emoji/shell.png new file mode 100755 index 00000000000..3145b564963 Binary files /dev/null and b/app/assets/images/emoji/shell.png differ diff --git a/app/assets/images/emoji/ship.png b/app/assets/images/emoji/ship.png new file mode 100755 index 00000000000..5d2d8b602bb Binary files /dev/null and b/app/assets/images/emoji/ship.png differ diff --git a/app/assets/images/emoji/shipit.png b/app/assets/images/emoji/shipit.png new file mode 100755 index 00000000000..a58a47f62f9 Binary files /dev/null and b/app/assets/images/emoji/shipit.png differ diff --git a/app/assets/images/emoji/shirt.png b/app/assets/images/emoji/shirt.png new file mode 100755 index 00000000000..297a6d63ed3 Binary files /dev/null and b/app/assets/images/emoji/shirt.png differ diff --git a/app/assets/images/emoji/shit.png b/app/assets/images/emoji/shit.png new file mode 100755 index 00000000000..73a4dc84008 Binary files /dev/null and b/app/assets/images/emoji/shit.png differ diff --git a/app/assets/images/emoji/shoe.png b/app/assets/images/emoji/shoe.png new file mode 100755 index 00000000000..45b82e61cf2 Binary files /dev/null and b/app/assets/images/emoji/shoe.png differ diff --git a/app/assets/images/emoji/shower.png b/app/assets/images/emoji/shower.png new file mode 100755 index 00000000000..94f82aac02e Binary files /dev/null and b/app/assets/images/emoji/shower.png differ diff --git a/app/assets/images/emoji/signal_strength.png b/app/assets/images/emoji/signal_strength.png new file mode 100755 index 00000000000..a4bd23ebf70 Binary files /dev/null and b/app/assets/images/emoji/signal_strength.png differ diff --git a/app/assets/images/emoji/six.png b/app/assets/images/emoji/six.png new file mode 100755 index 00000000000..56880556577 Binary files /dev/null and b/app/assets/images/emoji/six.png differ diff --git a/app/assets/images/emoji/six_pointed_star.png b/app/assets/images/emoji/six_pointed_star.png new file mode 100755 index 00000000000..010f8f5f95f Binary files /dev/null and b/app/assets/images/emoji/six_pointed_star.png differ diff --git a/app/assets/images/emoji/ski.png b/app/assets/images/emoji/ski.png new file mode 100755 index 00000000000..98f5cb0f460 Binary files /dev/null and b/app/assets/images/emoji/ski.png differ diff --git a/app/assets/images/emoji/skull.png b/app/assets/images/emoji/skull.png new file mode 100755 index 00000000000..bd4ee38297a Binary files /dev/null and b/app/assets/images/emoji/skull.png differ diff --git a/app/assets/images/emoji/sleepy.png b/app/assets/images/emoji/sleepy.png new file mode 100755 index 00000000000..df4f55efd9a Binary files /dev/null and b/app/assets/images/emoji/sleepy.png differ diff --git a/app/assets/images/emoji/slot_machine.png b/app/assets/images/emoji/slot_machine.png new file mode 100755 index 00000000000..26f114830b8 Binary files /dev/null and b/app/assets/images/emoji/slot_machine.png differ diff --git a/app/assets/images/emoji/small_blue_diamond.png b/app/assets/images/emoji/small_blue_diamond.png new file mode 100755 index 00000000000..5a7b5d555a5 Binary files /dev/null and b/app/assets/images/emoji/small_blue_diamond.png differ diff --git a/app/assets/images/emoji/small_orange_diamond.png b/app/assets/images/emoji/small_orange_diamond.png new file mode 100755 index 00000000000..04941d37b63 Binary files /dev/null and b/app/assets/images/emoji/small_orange_diamond.png differ diff --git a/app/assets/images/emoji/small_red_triangle.png b/app/assets/images/emoji/small_red_triangle.png new file mode 100755 index 00000000000..8c4428da8fa Binary files /dev/null and b/app/assets/images/emoji/small_red_triangle.png differ diff --git a/app/assets/images/emoji/small_red_triangle_down.png b/app/assets/images/emoji/small_red_triangle_down.png new file mode 100755 index 00000000000..94832f060c4 Binary files /dev/null and b/app/assets/images/emoji/small_red_triangle_down.png differ diff --git a/app/assets/images/emoji/smile.png b/app/assets/images/emoji/smile.png new file mode 100755 index 00000000000..81a83968996 Binary files /dev/null and b/app/assets/images/emoji/smile.png differ diff --git a/app/assets/images/emoji/smile_cat.png b/app/assets/images/emoji/smile_cat.png new file mode 100755 index 00000000000..ad333ba3b6b Binary files /dev/null and b/app/assets/images/emoji/smile_cat.png differ diff --git a/app/assets/images/emoji/smiley.png b/app/assets/images/emoji/smiley.png new file mode 100755 index 00000000000..77b581d68fa Binary files /dev/null and b/app/assets/images/emoji/smiley.png differ diff --git a/app/assets/images/emoji/smiley_cat.png b/app/assets/images/emoji/smiley_cat.png new file mode 100755 index 00000000000..dbf1b0276ab Binary files /dev/null and b/app/assets/images/emoji/smiley_cat.png differ diff --git a/app/assets/images/emoji/smiling_imp.png b/app/assets/images/emoji/smiling_imp.png new file mode 100755 index 00000000000..d904049309c Binary files /dev/null and b/app/assets/images/emoji/smiling_imp.png differ diff --git a/app/assets/images/emoji/smirk.png b/app/assets/images/emoji/smirk.png new file mode 100755 index 00000000000..bc6e5082c8c Binary files /dev/null and b/app/assets/images/emoji/smirk.png differ diff --git a/app/assets/images/emoji/smirk_cat.png b/app/assets/images/emoji/smirk_cat.png new file mode 100755 index 00000000000..351565e2461 Binary files /dev/null and b/app/assets/images/emoji/smirk_cat.png differ diff --git a/app/assets/images/emoji/smoking.png b/app/assets/images/emoji/smoking.png new file mode 100755 index 00000000000..4aad6cbd7c4 Binary files /dev/null and b/app/assets/images/emoji/smoking.png differ diff --git a/app/assets/images/emoji/snail.png b/app/assets/images/emoji/snail.png new file mode 100755 index 00000000000..e75e69a84d3 Binary files /dev/null and b/app/assets/images/emoji/snail.png differ diff --git a/app/assets/images/emoji/snake.png b/app/assets/images/emoji/snake.png new file mode 100755 index 00000000000..ef58933e2b2 Binary files /dev/null and b/app/assets/images/emoji/snake.png differ diff --git a/app/assets/images/emoji/snowboarder.png b/app/assets/images/emoji/snowboarder.png new file mode 100755 index 00000000000..aeda5c8d872 Binary files /dev/null and b/app/assets/images/emoji/snowboarder.png differ diff --git a/app/assets/images/emoji/snowflake.png b/app/assets/images/emoji/snowflake.png new file mode 100755 index 00000000000..54b68ff4f13 Binary files /dev/null and b/app/assets/images/emoji/snowflake.png differ diff --git a/app/assets/images/emoji/snowman.png b/app/assets/images/emoji/snowman.png new file mode 100755 index 00000000000..a97902e5304 Binary files /dev/null and b/app/assets/images/emoji/snowman.png differ diff --git a/app/assets/images/emoji/sob.png b/app/assets/images/emoji/sob.png new file mode 100755 index 00000000000..1561df92eee Binary files /dev/null and b/app/assets/images/emoji/sob.png differ diff --git a/app/assets/images/emoji/soccer.png b/app/assets/images/emoji/soccer.png new file mode 100755 index 00000000000..1e118b5b184 Binary files /dev/null and b/app/assets/images/emoji/soccer.png differ diff --git a/app/assets/images/emoji/soon.png b/app/assets/images/emoji/soon.png new file mode 100755 index 00000000000..9386615a324 Binary files /dev/null and b/app/assets/images/emoji/soon.png differ diff --git a/app/assets/images/emoji/sos.png b/app/assets/images/emoji/sos.png new file mode 100755 index 00000000000..e3e16ef73f8 Binary files /dev/null and b/app/assets/images/emoji/sos.png differ diff --git a/app/assets/images/emoji/sound.png b/app/assets/images/emoji/sound.png new file mode 100755 index 00000000000..6aa4dbff4c0 Binary files /dev/null and b/app/assets/images/emoji/sound.png differ diff --git a/app/assets/images/emoji/space_invader.png b/app/assets/images/emoji/space_invader.png new file mode 100755 index 00000000000..38404916747 Binary files /dev/null and b/app/assets/images/emoji/space_invader.png differ diff --git a/app/assets/images/emoji/spades.png b/app/assets/images/emoji/spades.png new file mode 100755 index 00000000000..133a1aba8a3 Binary files /dev/null and b/app/assets/images/emoji/spades.png differ diff --git a/app/assets/images/emoji/spaghetti.png b/app/assets/images/emoji/spaghetti.png new file mode 100755 index 00000000000..08de243f554 Binary files /dev/null and b/app/assets/images/emoji/spaghetti.png differ diff --git a/app/assets/images/emoji/sparkler.png b/app/assets/images/emoji/sparkler.png new file mode 100755 index 00000000000..4aabd7e0ed3 Binary files /dev/null and b/app/assets/images/emoji/sparkler.png differ diff --git a/app/assets/images/emoji/sparkles.png b/app/assets/images/emoji/sparkles.png new file mode 100755 index 00000000000..92138828df0 Binary files /dev/null and b/app/assets/images/emoji/sparkles.png differ diff --git a/app/assets/images/emoji/speak_no_evil.png b/app/assets/images/emoji/speak_no_evil.png new file mode 100755 index 00000000000..87944c4de54 Binary files /dev/null and b/app/assets/images/emoji/speak_no_evil.png differ diff --git a/app/assets/images/emoji/speaker.png b/app/assets/images/emoji/speaker.png new file mode 100755 index 00000000000..470476e182e Binary files /dev/null and b/app/assets/images/emoji/speaker.png differ diff --git a/app/assets/images/emoji/speech_balloon.png b/app/assets/images/emoji/speech_balloon.png new file mode 100755 index 00000000000..2896c278886 Binary files /dev/null and b/app/assets/images/emoji/speech_balloon.png differ diff --git a/app/assets/images/emoji/speedboat.png b/app/assets/images/emoji/speedboat.png new file mode 100755 index 00000000000..da6689b3be7 Binary files /dev/null and b/app/assets/images/emoji/speedboat.png differ diff --git a/app/assets/images/emoji/squirrel.png b/app/assets/images/emoji/squirrel.png new file mode 100755 index 00000000000..a58a47f62f9 Binary files /dev/null and b/app/assets/images/emoji/squirrel.png differ diff --git a/app/assets/images/emoji/star.png b/app/assets/images/emoji/star.png new file mode 100755 index 00000000000..1bfddc86255 Binary files /dev/null and b/app/assets/images/emoji/star.png differ diff --git a/app/assets/images/emoji/star2.png b/app/assets/images/emoji/star2.png new file mode 100755 index 00000000000..8b40ff4c8c8 Binary files /dev/null and b/app/assets/images/emoji/star2.png differ diff --git a/app/assets/images/emoji/stars.png b/app/assets/images/emoji/stars.png new file mode 100755 index 00000000000..097a84241c1 Binary files /dev/null and b/app/assets/images/emoji/stars.png differ diff --git a/app/assets/images/emoji/station.png b/app/assets/images/emoji/station.png new file mode 100755 index 00000000000..e77daa8a75f Binary files /dev/null and b/app/assets/images/emoji/station.png differ diff --git a/app/assets/images/emoji/statue_of_liberty.png b/app/assets/images/emoji/statue_of_liberty.png new file mode 100755 index 00000000000..9ad90280689 Binary files /dev/null and b/app/assets/images/emoji/statue_of_liberty.png differ diff --git a/app/assets/images/emoji/steam_locomotive.png b/app/assets/images/emoji/steam_locomotive.png new file mode 100755 index 00000000000..5495077667b Binary files /dev/null and b/app/assets/images/emoji/steam_locomotive.png differ diff --git a/app/assets/images/emoji/stew.png b/app/assets/images/emoji/stew.png new file mode 100755 index 00000000000..e9687f9ec26 Binary files /dev/null and b/app/assets/images/emoji/stew.png differ diff --git a/app/assets/images/emoji/straight_ruler.png b/app/assets/images/emoji/straight_ruler.png new file mode 100755 index 00000000000..af8cb4bcffa Binary files /dev/null and b/app/assets/images/emoji/straight_ruler.png differ diff --git a/app/assets/images/emoji/strawberry.png b/app/assets/images/emoji/strawberry.png new file mode 100755 index 00000000000..13eb827ab87 Binary files /dev/null and b/app/assets/images/emoji/strawberry.png differ diff --git a/app/assets/images/emoji/sun_with_face.png b/app/assets/images/emoji/sun_with_face.png new file mode 100755 index 00000000000..ee276636fa4 Binary files /dev/null and b/app/assets/images/emoji/sun_with_face.png differ diff --git a/app/assets/images/emoji/sunflower.png b/app/assets/images/emoji/sunflower.png new file mode 100755 index 00000000000..d9bad194a21 Binary files /dev/null and b/app/assets/images/emoji/sunflower.png differ diff --git a/app/assets/images/emoji/sunglasses.png b/app/assets/images/emoji/sunglasses.png new file mode 100755 index 00000000000..1c468a1c91e Binary files /dev/null and b/app/assets/images/emoji/sunglasses.png differ diff --git a/app/assets/images/emoji/sunny.png b/app/assets/images/emoji/sunny.png new file mode 100755 index 00000000000..d23c095e080 Binary files /dev/null and b/app/assets/images/emoji/sunny.png differ diff --git a/app/assets/images/emoji/sunrise.png b/app/assets/images/emoji/sunrise.png new file mode 100755 index 00000000000..ec58dcc94ff Binary files /dev/null and b/app/assets/images/emoji/sunrise.png differ diff --git a/app/assets/images/emoji/sunrise_over_mountains.png b/app/assets/images/emoji/sunrise_over_mountains.png new file mode 100755 index 00000000000..ebc3db14680 Binary files /dev/null and b/app/assets/images/emoji/sunrise_over_mountains.png differ diff --git a/app/assets/images/emoji/surfer.png b/app/assets/images/emoji/surfer.png new file mode 100755 index 00000000000..b067e8cb323 Binary files /dev/null and b/app/assets/images/emoji/surfer.png differ diff --git a/app/assets/images/emoji/sushi.png b/app/assets/images/emoji/sushi.png new file mode 100755 index 00000000000..0d179bd9756 Binary files /dev/null and b/app/assets/images/emoji/sushi.png differ diff --git a/app/assets/images/emoji/suspect.png b/app/assets/images/emoji/suspect.png new file mode 100755 index 00000000000..58e8921c0a7 Binary files /dev/null and b/app/assets/images/emoji/suspect.png differ diff --git a/app/assets/images/emoji/suspension_railway.png b/app/assets/images/emoji/suspension_railway.png new file mode 100755 index 00000000000..aaa45f61f1f Binary files /dev/null and b/app/assets/images/emoji/suspension_railway.png differ diff --git a/app/assets/images/emoji/sweat.png b/app/assets/images/emoji/sweat.png new file mode 100755 index 00000000000..e894b769960 Binary files /dev/null and b/app/assets/images/emoji/sweat.png differ diff --git a/app/assets/images/emoji/sweat_drops.png b/app/assets/images/emoji/sweat_drops.png new file mode 100755 index 00000000000..a83b3e960cd Binary files /dev/null and b/app/assets/images/emoji/sweat_drops.png differ diff --git a/app/assets/images/emoji/sweat_smile.png b/app/assets/images/emoji/sweat_smile.png new file mode 100755 index 00000000000..3903f717f31 Binary files /dev/null and b/app/assets/images/emoji/sweat_smile.png differ diff --git a/app/assets/images/emoji/sweet_potato.png b/app/assets/images/emoji/sweet_potato.png new file mode 100755 index 00000000000..32117fa9c7f Binary files /dev/null and b/app/assets/images/emoji/sweet_potato.png differ diff --git a/app/assets/images/emoji/swimmer.png b/app/assets/images/emoji/swimmer.png new file mode 100755 index 00000000000..d3878a06525 Binary files /dev/null and b/app/assets/images/emoji/swimmer.png differ diff --git a/app/assets/images/emoji/symbols.png b/app/assets/images/emoji/symbols.png new file mode 100755 index 00000000000..16bc1da921f Binary files /dev/null and b/app/assets/images/emoji/symbols.png differ diff --git a/app/assets/images/emoji/syringe.png b/app/assets/images/emoji/syringe.png new file mode 100755 index 00000000000..7314255e3ca Binary files /dev/null and b/app/assets/images/emoji/syringe.png differ diff --git a/app/assets/images/emoji/tada.png b/app/assets/images/emoji/tada.png new file mode 100755 index 00000000000..7411b5266a0 Binary files /dev/null and b/app/assets/images/emoji/tada.png differ diff --git a/app/assets/images/emoji/tanabata_tree.png b/app/assets/images/emoji/tanabata_tree.png new file mode 100755 index 00000000000..473346410f6 Binary files /dev/null and b/app/assets/images/emoji/tanabata_tree.png differ diff --git a/app/assets/images/emoji/tangerine.png b/app/assets/images/emoji/tangerine.png new file mode 100755 index 00000000000..fc9d4f82ad9 Binary files /dev/null and b/app/assets/images/emoji/tangerine.png differ diff --git a/app/assets/images/emoji/taurus.png b/app/assets/images/emoji/taurus.png new file mode 100755 index 00000000000..6af582f69d2 Binary files /dev/null and b/app/assets/images/emoji/taurus.png differ diff --git a/app/assets/images/emoji/taxi.png b/app/assets/images/emoji/taxi.png new file mode 100755 index 00000000000..60a50d365a4 Binary files /dev/null and b/app/assets/images/emoji/taxi.png differ diff --git a/app/assets/images/emoji/tea.png b/app/assets/images/emoji/tea.png new file mode 100755 index 00000000000..3ece0b708af Binary files /dev/null and b/app/assets/images/emoji/tea.png differ diff --git a/app/assets/images/emoji/telephone.png b/app/assets/images/emoji/telephone.png new file mode 100755 index 00000000000..87d2559b552 Binary files /dev/null and b/app/assets/images/emoji/telephone.png differ diff --git a/app/assets/images/emoji/telephone_receiver.png b/app/assets/images/emoji/telephone_receiver.png new file mode 100755 index 00000000000..36e21e0123d Binary files /dev/null and b/app/assets/images/emoji/telephone_receiver.png differ diff --git a/app/assets/images/emoji/telescope.png b/app/assets/images/emoji/telescope.png new file mode 100755 index 00000000000..51fd8a07fae Binary files /dev/null and b/app/assets/images/emoji/telescope.png differ diff --git a/app/assets/images/emoji/tennis.png b/app/assets/images/emoji/tennis.png new file mode 100755 index 00000000000..278d904ee20 Binary files /dev/null and b/app/assets/images/emoji/tennis.png differ diff --git a/app/assets/images/emoji/tent.png b/app/assets/images/emoji/tent.png new file mode 100755 index 00000000000..5c0d20e48b6 Binary files /dev/null and b/app/assets/images/emoji/tent.png differ diff --git a/app/assets/images/emoji/thought_balloon.png b/app/assets/images/emoji/thought_balloon.png new file mode 100755 index 00000000000..701bdf0f64b Binary files /dev/null and b/app/assets/images/emoji/thought_balloon.png differ diff --git a/app/assets/images/emoji/three.png b/app/assets/images/emoji/three.png new file mode 100755 index 00000000000..55644c9900c Binary files /dev/null and b/app/assets/images/emoji/three.png differ diff --git a/app/assets/images/emoji/thumbsdown.png b/app/assets/images/emoji/thumbsdown.png new file mode 100755 index 00000000000..41c6b825d6a Binary files /dev/null and b/app/assets/images/emoji/thumbsdown.png differ diff --git a/app/assets/images/emoji/thumbsup.png b/app/assets/images/emoji/thumbsup.png new file mode 100755 index 00000000000..81786c1d8f5 Binary files /dev/null and b/app/assets/images/emoji/thumbsup.png differ diff --git a/app/assets/images/emoji/ticket.png b/app/assets/images/emoji/ticket.png new file mode 100755 index 00000000000..cdacf1a70be Binary files /dev/null and b/app/assets/images/emoji/ticket.png differ diff --git a/app/assets/images/emoji/tiger.png b/app/assets/images/emoji/tiger.png new file mode 100755 index 00000000000..d6cc84a3ba9 Binary files /dev/null and b/app/assets/images/emoji/tiger.png differ diff --git a/app/assets/images/emoji/tiger2.png b/app/assets/images/emoji/tiger2.png new file mode 100755 index 00000000000..b0c7d8dc3ec Binary files /dev/null and b/app/assets/images/emoji/tiger2.png differ diff --git a/app/assets/images/emoji/tired_face.png b/app/assets/images/emoji/tired_face.png new file mode 100755 index 00000000000..3a8eefe565d Binary files /dev/null and b/app/assets/images/emoji/tired_face.png differ diff --git a/app/assets/images/emoji/tm.png b/app/assets/images/emoji/tm.png new file mode 100755 index 00000000000..c7dec75a33a Binary files /dev/null and b/app/assets/images/emoji/tm.png differ diff --git a/app/assets/images/emoji/toilet.png b/app/assets/images/emoji/toilet.png new file mode 100755 index 00000000000..e5cc4119a15 Binary files /dev/null and b/app/assets/images/emoji/toilet.png differ diff --git a/app/assets/images/emoji/tokyo_tower.png b/app/assets/images/emoji/tokyo_tower.png new file mode 100755 index 00000000000..e1cbd7a3c5d Binary files /dev/null and b/app/assets/images/emoji/tokyo_tower.png differ diff --git a/app/assets/images/emoji/tomato.png b/app/assets/images/emoji/tomato.png new file mode 100755 index 00000000000..a129700bbb5 Binary files /dev/null and b/app/assets/images/emoji/tomato.png differ diff --git a/app/assets/images/emoji/tongue.png b/app/assets/images/emoji/tongue.png new file mode 100755 index 00000000000..333716ee1fe Binary files /dev/null and b/app/assets/images/emoji/tongue.png differ diff --git a/app/assets/images/emoji/tongue2.png b/app/assets/images/emoji/tongue2.png new file mode 100755 index 00000000000..b0bab12078f Binary files /dev/null and b/app/assets/images/emoji/tongue2.png differ diff --git a/app/assets/images/emoji/top.png b/app/assets/images/emoji/top.png new file mode 100755 index 00000000000..5aa4dd442da Binary files /dev/null and b/app/assets/images/emoji/top.png differ diff --git a/app/assets/images/emoji/tophat.png b/app/assets/images/emoji/tophat.png new file mode 100755 index 00000000000..7d27134d6a5 Binary files /dev/null and b/app/assets/images/emoji/tophat.png differ diff --git a/app/assets/images/emoji/tractor.png b/app/assets/images/emoji/tractor.png new file mode 100755 index 00000000000..058fd3eda55 Binary files /dev/null and b/app/assets/images/emoji/tractor.png differ diff --git a/app/assets/images/emoji/traffic_light.png b/app/assets/images/emoji/traffic_light.png new file mode 100755 index 00000000000..50c781016cc Binary files /dev/null and b/app/assets/images/emoji/traffic_light.png differ diff --git a/app/assets/images/emoji/train.png b/app/assets/images/emoji/train.png new file mode 100755 index 00000000000..3202d80ea9f Binary files /dev/null and b/app/assets/images/emoji/train.png differ diff --git a/app/assets/images/emoji/train2.png b/app/assets/images/emoji/train2.png new file mode 100755 index 00000000000..9c0d3ab6407 Binary files /dev/null and b/app/assets/images/emoji/train2.png differ diff --git a/app/assets/images/emoji/tram.png b/app/assets/images/emoji/tram.png new file mode 100755 index 00000000000..5eb29fb71cd Binary files /dev/null and b/app/assets/images/emoji/tram.png differ diff --git a/app/assets/images/emoji/triangular_flag_on_post.png b/app/assets/images/emoji/triangular_flag_on_post.png new file mode 100755 index 00000000000..f9a3f32d711 Binary files /dev/null and b/app/assets/images/emoji/triangular_flag_on_post.png differ diff --git a/app/assets/images/emoji/triangular_ruler.png b/app/assets/images/emoji/triangular_ruler.png new file mode 100755 index 00000000000..383677cb74c Binary files /dev/null and b/app/assets/images/emoji/triangular_ruler.png differ diff --git a/app/assets/images/emoji/trident.png b/app/assets/images/emoji/trident.png new file mode 100755 index 00000000000..d79a7b4cce5 Binary files /dev/null and b/app/assets/images/emoji/trident.png differ diff --git a/app/assets/images/emoji/triumph.png b/app/assets/images/emoji/triumph.png new file mode 100755 index 00000000000..92f93bd1025 Binary files /dev/null and b/app/assets/images/emoji/triumph.png differ diff --git a/app/assets/images/emoji/trolleybus.png b/app/assets/images/emoji/trolleybus.png new file mode 100755 index 00000000000..b9740a53f87 Binary files /dev/null and b/app/assets/images/emoji/trolleybus.png differ diff --git a/app/assets/images/emoji/trollface.png b/app/assets/images/emoji/trollface.png new file mode 100755 index 00000000000..e234893cef0 Binary files /dev/null and b/app/assets/images/emoji/trollface.png differ diff --git a/app/assets/images/emoji/trophy.png b/app/assets/images/emoji/trophy.png new file mode 100755 index 00000000000..95d3b63f524 Binary files /dev/null and b/app/assets/images/emoji/trophy.png differ diff --git a/app/assets/images/emoji/tropical_drink.png b/app/assets/images/emoji/tropical_drink.png new file mode 100755 index 00000000000..55ca9eeda75 Binary files /dev/null and b/app/assets/images/emoji/tropical_drink.png differ diff --git a/app/assets/images/emoji/tropical_fish.png b/app/assets/images/emoji/tropical_fish.png new file mode 100755 index 00000000000..a6d734987bb Binary files /dev/null and b/app/assets/images/emoji/tropical_fish.png differ diff --git a/app/assets/images/emoji/truck.png b/app/assets/images/emoji/truck.png new file mode 100755 index 00000000000..3f25ba1f92a Binary files /dev/null and b/app/assets/images/emoji/truck.png differ diff --git a/app/assets/images/emoji/trumpet.png b/app/assets/images/emoji/trumpet.png new file mode 100755 index 00000000000..c84cfb13e10 Binary files /dev/null and b/app/assets/images/emoji/trumpet.png differ diff --git a/app/assets/images/emoji/tshirt.png b/app/assets/images/emoji/tshirt.png new file mode 100755 index 00000000000..297a6d63ed3 Binary files /dev/null and b/app/assets/images/emoji/tshirt.png differ diff --git a/app/assets/images/emoji/tulip.png b/app/assets/images/emoji/tulip.png new file mode 100755 index 00000000000..b3ee1102a53 Binary files /dev/null and b/app/assets/images/emoji/tulip.png differ diff --git a/app/assets/images/emoji/turtle.png b/app/assets/images/emoji/turtle.png new file mode 100755 index 00000000000..04d1d968470 Binary files /dev/null and b/app/assets/images/emoji/turtle.png differ diff --git a/app/assets/images/emoji/tv.png b/app/assets/images/emoji/tv.png new file mode 100755 index 00000000000..803dc3d412f Binary files /dev/null and b/app/assets/images/emoji/tv.png differ diff --git a/app/assets/images/emoji/twisted_rightwards_arrows.png b/app/assets/images/emoji/twisted_rightwards_arrows.png new file mode 100755 index 00000000000..25cde18b250 Binary files /dev/null and b/app/assets/images/emoji/twisted_rightwards_arrows.png differ diff --git a/app/assets/images/emoji/two.png b/app/assets/images/emoji/two.png new file mode 100755 index 00000000000..c191f8a3221 Binary files /dev/null and b/app/assets/images/emoji/two.png differ diff --git a/app/assets/images/emoji/two_hearts.png b/app/assets/images/emoji/two_hearts.png new file mode 100755 index 00000000000..b189e9aea82 Binary files /dev/null and b/app/assets/images/emoji/two_hearts.png differ diff --git a/app/assets/images/emoji/two_men_holding_hands.png b/app/assets/images/emoji/two_men_holding_hands.png new file mode 100755 index 00000000000..d1099f21ffe Binary files /dev/null and b/app/assets/images/emoji/two_men_holding_hands.png differ diff --git a/app/assets/images/emoji/two_women_holding_hands.png b/app/assets/images/emoji/two_women_holding_hands.png new file mode 100755 index 00000000000..619646c4e02 Binary files /dev/null and b/app/assets/images/emoji/two_women_holding_hands.png differ diff --git a/app/assets/images/emoji/u5272.png b/app/assets/images/emoji/u5272.png new file mode 100755 index 00000000000..2148253fc10 Binary files /dev/null and b/app/assets/images/emoji/u5272.png differ diff --git a/app/assets/images/emoji/u5408.png b/app/assets/images/emoji/u5408.png new file mode 100755 index 00000000000..03ab0d8746e Binary files /dev/null and b/app/assets/images/emoji/u5408.png differ diff --git a/app/assets/images/emoji/u55b6.png b/app/assets/images/emoji/u55b6.png new file mode 100755 index 00000000000..ba946d3f339 Binary files /dev/null and b/app/assets/images/emoji/u55b6.png differ diff --git a/app/assets/images/emoji/u6307.png b/app/assets/images/emoji/u6307.png new file mode 100755 index 00000000000..6557f5672fb Binary files /dev/null and b/app/assets/images/emoji/u6307.png differ diff --git a/app/assets/images/emoji/u6708.png b/app/assets/images/emoji/u6708.png new file mode 100755 index 00000000000..e4dfe5aa762 Binary files /dev/null and b/app/assets/images/emoji/u6708.png differ diff --git a/app/assets/images/emoji/u6709.png b/app/assets/images/emoji/u6709.png new file mode 100755 index 00000000000..cd8fb3f62a5 Binary files /dev/null and b/app/assets/images/emoji/u6709.png differ diff --git a/app/assets/images/emoji/u6e80.png b/app/assets/images/emoji/u6e80.png new file mode 100755 index 00000000000..5df1cb878f7 Binary files /dev/null and b/app/assets/images/emoji/u6e80.png differ diff --git a/app/assets/images/emoji/u7121.png b/app/assets/images/emoji/u7121.png new file mode 100755 index 00000000000..25f694ed3ff Binary files /dev/null and b/app/assets/images/emoji/u7121.png differ diff --git a/app/assets/images/emoji/u7533.png b/app/assets/images/emoji/u7533.png new file mode 100755 index 00000000000..fc4a9901b46 Binary files /dev/null and b/app/assets/images/emoji/u7533.png differ diff --git a/app/assets/images/emoji/u7981.png b/app/assets/images/emoji/u7981.png new file mode 100755 index 00000000000..f550a573da7 Binary files /dev/null and b/app/assets/images/emoji/u7981.png differ diff --git a/app/assets/images/emoji/u7a7a.png b/app/assets/images/emoji/u7a7a.png new file mode 100755 index 00000000000..c05f5cff73b Binary files /dev/null and b/app/assets/images/emoji/u7a7a.png differ diff --git a/app/assets/images/emoji/uk.png b/app/assets/images/emoji/uk.png new file mode 100755 index 00000000000..2a62c7a0810 Binary files /dev/null and b/app/assets/images/emoji/uk.png differ diff --git a/app/assets/images/emoji/umbrella.png b/app/assets/images/emoji/umbrella.png new file mode 100755 index 00000000000..1db722fa661 Binary files /dev/null and b/app/assets/images/emoji/umbrella.png differ diff --git a/app/assets/images/emoji/unamused.png b/app/assets/images/emoji/unamused.png new file mode 100755 index 00000000000..3722e6f5753 Binary files /dev/null and b/app/assets/images/emoji/unamused.png differ diff --git a/app/assets/images/emoji/underage.png b/app/assets/images/emoji/underage.png new file mode 100755 index 00000000000..a789b3c6200 Binary files /dev/null and b/app/assets/images/emoji/underage.png differ diff --git a/app/assets/images/emoji/unlock.png b/app/assets/images/emoji/unlock.png new file mode 100755 index 00000000000..22b429cd021 Binary files /dev/null and b/app/assets/images/emoji/unlock.png differ diff --git a/app/assets/images/emoji/up.png b/app/assets/images/emoji/up.png new file mode 100755 index 00000000000..829219a868a Binary files /dev/null and b/app/assets/images/emoji/up.png differ diff --git a/app/assets/images/emoji/us.png b/app/assets/images/emoji/us.png new file mode 100755 index 00000000000..38137669aa9 Binary files /dev/null and b/app/assets/images/emoji/us.png differ diff --git a/app/assets/images/emoji/v.png b/app/assets/images/emoji/v.png new file mode 100755 index 00000000000..f61267c281d Binary files /dev/null and b/app/assets/images/emoji/v.png differ diff --git a/app/assets/images/emoji/vertical_traffic_light.png b/app/assets/images/emoji/vertical_traffic_light.png new file mode 100755 index 00000000000..7a5ba35f09d Binary files /dev/null and b/app/assets/images/emoji/vertical_traffic_light.png differ diff --git a/app/assets/images/emoji/vhs.png b/app/assets/images/emoji/vhs.png new file mode 100755 index 00000000000..881081c1778 Binary files /dev/null and b/app/assets/images/emoji/vhs.png differ diff --git a/app/assets/images/emoji/vibration_mode.png b/app/assets/images/emoji/vibration_mode.png new file mode 100755 index 00000000000..a716e96c635 Binary files /dev/null and b/app/assets/images/emoji/vibration_mode.png differ diff --git a/app/assets/images/emoji/video_camera.png b/app/assets/images/emoji/video_camera.png new file mode 100755 index 00000000000..274cecdd6d4 Binary files /dev/null and b/app/assets/images/emoji/video_camera.png differ diff --git a/app/assets/images/emoji/video_game.png b/app/assets/images/emoji/video_game.png new file mode 100755 index 00000000000..59d45baeabb Binary files /dev/null and b/app/assets/images/emoji/video_game.png differ diff --git a/app/assets/images/emoji/violin.png b/app/assets/images/emoji/violin.png new file mode 100755 index 00000000000..0dba5ba2b66 Binary files /dev/null and b/app/assets/images/emoji/violin.png differ diff --git a/app/assets/images/emoji/virgo.png b/app/assets/images/emoji/virgo.png new file mode 100755 index 00000000000..72e1763f573 Binary files /dev/null and b/app/assets/images/emoji/virgo.png differ diff --git a/app/assets/images/emoji/volcano.png b/app/assets/images/emoji/volcano.png new file mode 100755 index 00000000000..9b434539b05 Binary files /dev/null and b/app/assets/images/emoji/volcano.png differ diff --git a/app/assets/images/emoji/vs.png b/app/assets/images/emoji/vs.png new file mode 100755 index 00000000000..863638850e1 Binary files /dev/null and b/app/assets/images/emoji/vs.png differ diff --git a/app/assets/images/emoji/walking.png b/app/assets/images/emoji/walking.png new file mode 100755 index 00000000000..52bc0381c72 Binary files /dev/null and b/app/assets/images/emoji/walking.png differ diff --git a/app/assets/images/emoji/waning_crescent_moon.png b/app/assets/images/emoji/waning_crescent_moon.png new file mode 100755 index 00000000000..30387780fec Binary files /dev/null and b/app/assets/images/emoji/waning_crescent_moon.png differ diff --git a/app/assets/images/emoji/waning_gibbous_moon.png b/app/assets/images/emoji/waning_gibbous_moon.png new file mode 100755 index 00000000000..8e324ec5f7f Binary files /dev/null and b/app/assets/images/emoji/waning_gibbous_moon.png differ diff --git a/app/assets/images/emoji/warning.png b/app/assets/images/emoji/warning.png new file mode 100755 index 00000000000..466658d99a8 Binary files /dev/null and b/app/assets/images/emoji/warning.png differ diff --git a/app/assets/images/emoji/watch.png b/app/assets/images/emoji/watch.png new file mode 100755 index 00000000000..d503bb87c22 Binary files /dev/null and b/app/assets/images/emoji/watch.png differ diff --git a/app/assets/images/emoji/water_buffalo.png b/app/assets/images/emoji/water_buffalo.png new file mode 100755 index 00000000000..3bcde3edd95 Binary files /dev/null and b/app/assets/images/emoji/water_buffalo.png differ diff --git a/app/assets/images/emoji/watermelon.png b/app/assets/images/emoji/watermelon.png new file mode 100755 index 00000000000..fc212be7844 Binary files /dev/null and b/app/assets/images/emoji/watermelon.png differ diff --git a/app/assets/images/emoji/wave.png b/app/assets/images/emoji/wave.png new file mode 100755 index 00000000000..e78402eb086 Binary files /dev/null and b/app/assets/images/emoji/wave.png differ diff --git a/app/assets/images/emoji/wavy_dash.png b/app/assets/images/emoji/wavy_dash.png new file mode 100755 index 00000000000..77f626cc5cd Binary files /dev/null and b/app/assets/images/emoji/wavy_dash.png differ diff --git a/app/assets/images/emoji/waxing_crescent_moon.png b/app/assets/images/emoji/waxing_crescent_moon.png new file mode 100755 index 00000000000..c8f13dd31c8 Binary files /dev/null and b/app/assets/images/emoji/waxing_crescent_moon.png differ diff --git a/app/assets/images/emoji/waxing_gibbous_moon.png b/app/assets/images/emoji/waxing_gibbous_moon.png new file mode 100755 index 00000000000..dd8c4845896 Binary files /dev/null and b/app/assets/images/emoji/waxing_gibbous_moon.png differ diff --git a/app/assets/images/emoji/wc.png b/app/assets/images/emoji/wc.png new file mode 100755 index 00000000000..dfe84d2a73a Binary files /dev/null and b/app/assets/images/emoji/wc.png differ diff --git a/app/assets/images/emoji/weary.png b/app/assets/images/emoji/weary.png new file mode 100755 index 00000000000..0c5475411c1 Binary files /dev/null and b/app/assets/images/emoji/weary.png differ diff --git a/app/assets/images/emoji/wedding.png b/app/assets/images/emoji/wedding.png new file mode 100755 index 00000000000..ead19d52cfb Binary files /dev/null and b/app/assets/images/emoji/wedding.png differ diff --git a/app/assets/images/emoji/whale.png b/app/assets/images/emoji/whale.png new file mode 100755 index 00000000000..5bb113e4289 Binary files /dev/null and b/app/assets/images/emoji/whale.png differ diff --git a/app/assets/images/emoji/whale2.png b/app/assets/images/emoji/whale2.png new file mode 100755 index 00000000000..4af657b2fdc Binary files /dev/null and b/app/assets/images/emoji/whale2.png differ diff --git a/app/assets/images/emoji/wheelchair.png b/app/assets/images/emoji/wheelchair.png new file mode 100755 index 00000000000..eddcdd7977a Binary files /dev/null and b/app/assets/images/emoji/wheelchair.png differ diff --git a/app/assets/images/emoji/white_circle.png b/app/assets/images/emoji/white_circle.png new file mode 100755 index 00000000000..da782ae297f Binary files /dev/null and b/app/assets/images/emoji/white_circle.png differ diff --git a/app/assets/images/emoji/white_flower.png b/app/assets/images/emoji/white_flower.png new file mode 100755 index 00000000000..c0929d0dd99 Binary files /dev/null and b/app/assets/images/emoji/white_flower.png differ diff --git a/app/assets/images/emoji/white_square.png b/app/assets/images/emoji/white_square.png new file mode 100755 index 00000000000..60cb19a1371 Binary files /dev/null and b/app/assets/images/emoji/white_square.png differ diff --git a/app/assets/images/emoji/wind_chime.png b/app/assets/images/emoji/wind_chime.png new file mode 100755 index 00000000000..efacf5dd4be Binary files /dev/null and b/app/assets/images/emoji/wind_chime.png differ diff --git a/app/assets/images/emoji/wine_glass.png b/app/assets/images/emoji/wine_glass.png new file mode 100755 index 00000000000..82b0f00057d Binary files /dev/null and b/app/assets/images/emoji/wine_glass.png differ diff --git a/app/assets/images/emoji/wink.png b/app/assets/images/emoji/wink.png new file mode 100755 index 00000000000..756766dd3e9 Binary files /dev/null and b/app/assets/images/emoji/wink.png differ diff --git a/app/assets/images/emoji/wink2.png b/app/assets/images/emoji/wink2.png new file mode 100755 index 00000000000..6ae9d497d30 Binary files /dev/null and b/app/assets/images/emoji/wink2.png differ diff --git a/app/assets/images/emoji/wolf.png b/app/assets/images/emoji/wolf.png new file mode 100755 index 00000000000..c60c96895f7 Binary files /dev/null and b/app/assets/images/emoji/wolf.png differ diff --git a/app/assets/images/emoji/woman.png b/app/assets/images/emoji/woman.png new file mode 100755 index 00000000000..6bf0d2b129c Binary files /dev/null and b/app/assets/images/emoji/woman.png differ diff --git a/app/assets/images/emoji/womans_clothes.png b/app/assets/images/emoji/womans_clothes.png new file mode 100755 index 00000000000..aa297c7b65e Binary files /dev/null and b/app/assets/images/emoji/womans_clothes.png differ diff --git a/app/assets/images/emoji/womans_hat.png b/app/assets/images/emoji/womans_hat.png new file mode 100755 index 00000000000..4cb2e6a6934 Binary files /dev/null and b/app/assets/images/emoji/womans_hat.png differ diff --git a/app/assets/images/emoji/womens.png b/app/assets/images/emoji/womens.png new file mode 100755 index 00000000000..110f88519e8 Binary files /dev/null and b/app/assets/images/emoji/womens.png differ diff --git a/app/assets/images/emoji/wrench.png b/app/assets/images/emoji/wrench.png new file mode 100755 index 00000000000..a87072ad132 Binary files /dev/null and b/app/assets/images/emoji/wrench.png differ diff --git a/app/assets/images/emoji/x.png b/app/assets/images/emoji/x.png new file mode 100755 index 00000000000..dff9efa8b43 Binary files /dev/null and b/app/assets/images/emoji/x.png differ diff --git a/app/assets/images/emoji/yellow_heart.png b/app/assets/images/emoji/yellow_heart.png new file mode 100755 index 00000000000..fa41ce78ac4 Binary files /dev/null and b/app/assets/images/emoji/yellow_heart.png differ diff --git a/app/assets/images/emoji/yen.png b/app/assets/images/emoji/yen.png new file mode 100755 index 00000000000..139bc936e0f Binary files /dev/null and b/app/assets/images/emoji/yen.png differ diff --git a/app/assets/images/emoji/yum.png b/app/assets/images/emoji/yum.png new file mode 100755 index 00000000000..fc39637ecd8 Binary files /dev/null and b/app/assets/images/emoji/yum.png differ diff --git a/app/assets/images/emoji/zap.png b/app/assets/images/emoji/zap.png new file mode 100755 index 00000000000..260c531b9e2 Binary files /dev/null and b/app/assets/images/emoji/zap.png differ diff --git a/app/assets/images/emoji/zero.png b/app/assets/images/emoji/zero.png new file mode 100755 index 00000000000..6e57b3343ad Binary files /dev/null and b/app/assets/images/emoji/zero.png differ diff --git a/app/assets/images/emoji/zzz.png b/app/assets/images/emoji/zzz.png new file mode 100755 index 00000000000..30be04655af Binary files /dev/null and b/app/assets/images/emoji/zzz.png differ -- cgit v1.2.1 From 880a233e6d1bcf0dbeb9d1a01fb816b77ed21cc9 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 16:05:20 -0400 Subject: Add specs for parsing Emoji --- spec/helpers/gitlab_markdown_helper_spec.rb | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb index 00164e0cdd7..e2b38f0a715 100644 --- a/spec/helpers/gitlab_markdown_helper_spec.rb +++ b/spec/helpers/gitlab_markdown_helper_spec.rb @@ -208,6 +208,40 @@ describe GitlabMarkdownHelper do gfm(actual).should match(expected) end end + + describe "emoji" do + it "matches at the start of a string" do + gfm(":+1:").should match(/ big time/) + end + + it "ignores invalid emoji" do + gfm(":invalid-emoji:").should_not match(/ Date: Wed, 5 Sep 2012 16:06:03 -0400 Subject: Move the entire `gfm` method to Gitlab::Markdown, which will be a module now --- app/helpers/gitlab_markdown_helper.rb | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb index 9da695b5d23..ca2cb01f35d 100644 --- a/app/helpers/gitlab_markdown_helper.rb +++ b/app/helpers/gitlab_markdown_helper.rb @@ -1,38 +1,5 @@ module GitlabMarkdownHelper - # Replaces references (i.e. @abc, #123, !456, ...) in the text with links to - # the appropriate items in Gitlab. - # - # text - the source text - # html_options - extra options for the reference links as given to link_to - # - # note: reference links will only be generated if @project is set - # - # see Gitlab::Markdown for details on the supported syntax - def gfm(text, html_options = {}) - return text if text.nil? - return text if @project.nil? - - # Extract pre blocks so they are not altered - # from http://github.github.com/github-flavored-markdown/ - extractions = {} - text.gsub!(%r{
.*?
|.*?}m) do |match| - md5 = Digest::MD5.hexdigest(match) - extractions[md5] = match - "{gfm-extraction-#{md5}}" - end - - # TODO: add popups with additional information - - parser = Gitlab::Markdown.new(@project, html_options) - text = parser.parse(text) - - # Insert pre block extractions - text.gsub!(/\{gfm-extraction-(\h{32})\}/) do - extractions[$1] - end - - sanitize text.html_safe, attributes: ActionView::Base.sanitized_allowed_attributes + %w(id class ) - end + include Gitlab::Markdown # Use this in places where you would normally use link_to(gfm(...), ...). # -- cgit v1.2.1 From 67a6a0b29b1ca9563244f914bd0eaf0165389efd Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 16:07:39 -0400 Subject: Change Gitlab::Markdown to a module; add emoji parsing --- lib/gitlab/markdown.rb | 82 ++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 13 deletions(-) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index 9a07133d0b3..f000ffb4e24 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -1,7 +1,8 @@ module Gitlab # Custom parser for Gitlab-flavored Markdown # - # It replaces references in the text with links to the appropriate items in Gitlab. + # It replaces references in the text with links to the appropriate items in + # Gitlab. # # Supported reference formats are: # * @foo for team members @@ -10,19 +11,20 @@ module Gitlab # * $123 for snippets # * 123456 for commits # - # Examples + # It also parses Emoji codes to insert images. See + # http://www.emoji-cheat-sheet.com/ for a list of the supported icons. # - # >> m = Markdown.new(...) + # Examples # - # >> m.parse("Hey @david, can you fix this?") + # >> gfm("Hey @david, can you fix this?") # => "Hey @david, can you fix this?" # - # >> m.parse("Commit 35d5f7c closes #1234") + # >> gfm("Commit 35d5f7c closes #1234") # => "Commit 35d5f7c closes #1234" - class Markdown - include Rails.application.routes.url_helpers - include ActionView::Helpers - + # + # >> gfm(":trollface:") + # => "\":trollface:\" + module Markdown REFERENCE_PATTERN = %r{ ([^\w&;])? # Prefix (1) ( # Reference (2) @@ -33,15 +35,52 @@ module Gitlab ([^\w&;])? # Suffix (6) }x.freeze + EMOJI_PATTERN = %r{(:([\w\-\+]+):)}.freeze + attr_reader :html_options - def initialize(project, html_options = {}) - @project = project + # Public: Parse the provided text with GitLab-Flavored Markdown + # + # text - the source text + # html_options - extra options for the reference links as given to link_to + # + # Note: reference links will only be generated if @project is set + def gfm(text, html_options = {}) + return text if text.nil? + return text if @project.nil? + @html_options = html_options + + # Extract pre blocks so they are not altered + # from http://github.github.com/github-flavored-markdown/ + extractions = {} + text.gsub!(%r{
.*?
|.*?}m) do |match| + md5 = Digest::MD5.hexdigest(match) + extractions[md5] = match + "{gfm-extraction-#{md5}}" + end + + # TODO: add popups with additional information + + text = parse(text) + + # Insert pre block extractions + text.gsub!(/\{gfm-extraction-(\h{32})\}/) do + extractions[$1] + end + + sanitize text.html_safe, attributes: ActionView::Base.sanitized_allowed_attributes + %w(id class) end + private + + # Private: Parses text for references and emoji + # + # text - Text to parse + # + # Returns parsed text def parse(text) - text.gsub(REFERENCE_PATTERN) do |match| + text = text.gsub(REFERENCE_PATTERN) do |match| prefix = $1 || '' reference = $2 identifier = $3 || $4 || $5 @@ -53,9 +92,26 @@ module Gitlab match end end + + text = text.gsub(EMOJI_PATTERN) do |match| + if valid_emoji?($2) + helper.image_tag("#{$2}.png", class: 'emoji', title: $1, alt: $1) + else + match + end + end + + text end - private + # Private: Checks if an emoji icon exists in the image asset directory + # + # emoji - Identifier of the emoji as a string (e.g., "+1", "heart") + # + # Returns boolean + def valid_emoji?(emoji) + File.exists?(Rails.root.join('app', 'assets', 'images', 'emoji', "#{emoji}.png")) + end # Private: Dispatches to a dedicated processing method based on reference # -- cgit v1.2.1 From b3bbf53e9bd0d3eb4b947f0e1f01887120e7a2fb Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 5 Sep 2012 16:14:54 -0400 Subject: Set the size of emoji to be 20x20 Forgot they were so big! --- lib/gitlab/markdown.rb | 2 +- spec/helpers/gitlab_markdown_helper_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index f000ffb4e24..5fa921239ad 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -95,7 +95,7 @@ module Gitlab text = text.gsub(EMOJI_PATTERN) do |match| if valid_emoji?($2) - helper.image_tag("#{$2}.png", class: 'emoji', title: $1, alt: $1) + helper.image_tag("#{$2}.png", size: "20x20", class: 'emoji', title: $1, alt: $1) else match end diff --git a/spec/helpers/gitlab_markdown_helper_spec.rb b/spec/helpers/gitlab_markdown_helper_spec.rb index e2b38f0a715..3e7a02c6e35 100644 --- a/spec/helpers/gitlab_markdown_helper_spec.rb +++ b/spec/helpers/gitlab_markdown_helper_spec.rb @@ -234,6 +234,12 @@ describe GitlabMarkdownHelper do gfm(":+1:").should match('class="emoji"') end + it "sets height and width" do + actual = gfm(":+1:") + actual.should match(/width="20"/) + actual.should match(/height="20"/) + end + it "keeps whitespace intact" do gfm("This deserves a :+1: big time.").should match(/deserves a big time/) end -- cgit v1.2.1 From adb724f65e5f5056e9e4f489e0399cfa2dbce75a Mon Sep 17 00:00:00 2001 From: Sytse Sijbrandij Date: Wed, 5 Sep 2012 22:22:33 +0200 Subject: Ignore chef dir. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 760487ca9b3..d22760e7780 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,4 @@ config/unicorn.rb db/data.yml .idea .DS_Store - +.chef -- cgit v1.2.1 From e4447de23fa41fd67db31e3ca97dbee7349a026c Mon Sep 17 00:00:00 2001 From: randx Date: Thu, 6 Sep 2012 09:15:51 +0300 Subject: Cucumber refactoring --- features/projects/issues/issues.feature | 30 ++++++- features/step_definitions/common_steps.rb | 21 +++++ features/step_definitions/dashboard_steps.rb | 20 +---- features/step_definitions/profile/profile_steps.rb | 12 --- .../step_definitions/project/browse_code_steps.rb | 12 --- .../project/project_commits_steps.rb | 26 +------ .../project/project_issues_steps.rb | 24 +++--- .../project/project_merge_requests_steps.rb | 15 +--- .../project/project_milestones_steps.rb | 5 -- .../step_definitions/project/project_team_steps.rb | 12 +-- .../step_definitions/project/project_wiki_steps.rb | 4 - .../step_definitions/project/projects_steps.rb | 10 --- features/step_definitions/visit_steps.rb | 91 ++++++++++++++++++++++ 13 files changed, 163 insertions(+), 119 deletions(-) create mode 100644 features/step_definitions/common_steps.rb create mode 100644 features/step_definitions/visit_steps.rb diff --git a/features/projects/issues/issues.feature b/features/projects/issues/issues.feature index 180710cf6bc..42a3d8736e0 100644 --- a/features/projects/issues/issues.feature +++ b/features/projects/issues/issues.feature @@ -4,7 +4,7 @@ Feature: Issues And I own project "Shop" And project "Shop" have "Release 0.4" open issue And project "Shop" have "Release 0.3" closed issue - And I visit project "Shop" issues page + And I visit project "Shop" issues page Scenario: I should see open issues Given I should see "Release 0.4" in issues @@ -36,3 +36,31 @@ Feature: Issues Given I visit issue page "Release 0.4" And I leave a comment like "XML attached" Then I should see comment "XML attached" + + @javascript + Scenario: I search issue + Given I fill in issue search with "Release" + Then I should see "Release 0.4" in issues + And I should not see "Release 0.3" in issues + + @javascript + Scenario: I search issue that not exist + Given I fill in issue search with "Bug" + Then I should not see "Release 0.4" in issues + And I should not see "Release 0.3" in issues + + + @javascript + Scenario: I search all issues + Given I click link "All" + And I fill in issue search with "0.3" + Then I should see "Release 0.3" in issues + And I should not see "Release 0.4" in issues + + @javascript + Scenario: I clear search + Given I click link "All" + And I fill in issue search with "Something" + And I fill in issue search with "" + Then I should see "Release 0.4" in issues + And I should see "Release 0.3" in issues diff --git a/features/step_definitions/common_steps.rb b/features/step_definitions/common_steps.rb new file mode 100644 index 00000000000..e9023f9278f --- /dev/null +++ b/features/step_definitions/common_steps.rb @@ -0,0 +1,21 @@ +include LoginHelpers + +Given /^I signin as a user$/ do + login_as :user +end + +When /^I click link "(.*?)"$/ do |link| + click_link link +end + +When /^I click button "(.*?)"$/ do |button| + click_button button +end + +When /^I fill in "(.*?)" with "(.*?)"$/ do |field, value| + fill_in field, :with => value +end + +Given /^show me page$/ do + save_and_open_page +end diff --git a/features/step_definitions/dashboard_steps.rb b/features/step_definitions/dashboard_steps.rb index a4edd224dc0..867233c82cb 100644 --- a/features/step_definitions/dashboard_steps.rb +++ b/features/step_definitions/dashboard_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit dashboard page$/ do - visit dashboard_path -end - Then /^I should see "(.*?)" link$/ do |arg1| page.should have_link(arg1) end @@ -51,10 +47,10 @@ Then /^I click "(.*?)" link$/ do |arg1| end Then /^I see prefilled new Merge Request page$/ do - current_path.should == new_project_merge_request_path(@project) - find("#merge_request_source_branch").value.should == "new_design" - find("#merge_request_target_branch").value.should == "master" - find("#merge_request_title").value.should == "New Design" + current_path.should == new_project_merge_request_path(@project) + find("#merge_request_source_branch").value.should == "new_design" + find("#merge_request_target_branch").value.should == "master" + find("#merge_request_title").value.should == "New Design" end Given /^I visit dashboard search page$/ do @@ -66,10 +62,6 @@ Given /^I search for "(.*?)"$/ do |arg1| click_button "Search" end -Given /^I visit dashboard issues page$/ do - visit dashboard_issues_path -end - Then /^I should see issues assigned to me$/ do issues = @user.issues issues.each do |issue| @@ -78,10 +70,6 @@ Then /^I should see issues assigned to me$/ do end end -Given /^I visit dashboard merge requests page$/ do - visit dashboard_merge_requests_path -end - Then /^I should see my merge requests$/ do merge_requests = @user.merge_requests merge_requests.each do |mr| diff --git a/features/step_definitions/profile/profile_steps.rb b/features/step_definitions/profile/profile_steps.rb index 4661139c180..525d43f5fda 100644 --- a/features/step_definitions/profile/profile_steps.rb +++ b/features/step_definitions/profile/profile_steps.rb @@ -1,17 +1,9 @@ -Given /^I visit profile page$/ do - visit profile_path -end - Then /^I should see my profile info$/ do page.should have_content "Profile" page.should have_content @user.name page.should have_content @user.email end -Given /^I visit profile password page$/ do - visit profile_password_path -end - Then /^I change my password$/ do fill_in "user_password", :with => "222333" fill_in "user_password_confirmation", :with => "222333" @@ -22,10 +14,6 @@ Then /^I should be redirected to sign in page$/ do current_path.should == new_user_session_path end -Given /^I visit profile token page$/ do - visit profile_token_path -end - Then /^I reset my token$/ do @old_token = @user.private_token click_button "Reset" diff --git a/features/step_definitions/project/browse_code_steps.rb b/features/step_definitions/project/browse_code_steps.rb index 7f9001bb989..d2ed9a0af28 100644 --- a/features/step_definitions/project/browse_code_steps.rb +++ b/features/step_definitions/project/browse_code_steps.rb @@ -1,17 +1,9 @@ -Given /^I visit project source page$/ do - visit tree_project_ref_path(@project, @project.root_ref) -end - Then /^I should see files from repository$/ do page.should have_content("app") page.should have_content("History") page.should have_content("Gemfile") end -Given /^I visit project source page for "(.*?)"$/ do |arg1| - visit tree_project_ref_path(@project, arg1) -end - Then /^I should see files from repository for "(.*?)"$/ do |arg1| current_path.should == tree_project_ref_path(@project, arg1) page.should have_content("app") @@ -31,10 +23,6 @@ Given /^I click on raw button$/ do click_link "raw" end -Given /^I visit blob file from repo$/ do - visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) -end - Then /^I should see raw file content$/ do page.source.should == ValidCommit::BLOB_FILE end diff --git a/features/step_definitions/project/project_commits_steps.rb b/features/step_definitions/project/project_commits_steps.rb index 35fcb4d11ab..7f20ade41d1 100644 --- a/features/step_definitions/project/project_commits_steps.rb +++ b/features/step_definitions/project/project_commits_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit project commits page$/ do - visit project_commits_path(@project) -end - Then /^I see project commits$/ do current_path.should == project_commits_path(@project) @@ -23,19 +19,11 @@ Then /^I see commits atom feed$/ do page.body.should have_selector("entry summary", :text => commit.description) end -Given /^I click on commit link$/ do - visit project_commit_path(@project, ValidCommit::ID) -end - Then /^I see commit info$/ do page.should have_content ValidCommit::MESSAGE page.should have_content "Showing 1 changed file" end -Given /^I visit compare refs page$/ do - visit compare_project_commits_path(@project) -end - Given /^I fill compare fields with refs$/ do fill_in "from", :with => "master" fill_in "to", :with => "stable" @@ -48,18 +36,6 @@ Given /^I see compared refs$/ do page.should have_content "Showing 73 changed files" end -Given /^I visit project branches page$/ do - visit branches_project_repository_path(@project) -end - -Given /^I visit project commit page$/ do - visit project_commit_path(@project, ValidCommit::ID) -end - -Given /^I visit project tags page$/ do - visit tags_project_repository_path(@project) -end - Then /^I should see "(.*?)" recent branches list$/ do |arg1| page.should have_content("Branches") page.should have_content("master") @@ -76,7 +52,7 @@ Then /^I should see "(.*?)" all tags list$/ do |arg1| end Then /^I should see "(.*?)" protected branches list$/ do |arg1| - within "table" do + within "table" do page.should have_content "stable" page.should_not have_content "master" end diff --git a/features/step_definitions/project/project_issues_steps.rb b/features/step_definitions/project/project_issues_steps.rb index 27de03d5489..e46c1f42f75 100644 --- a/features/step_definitions/project/project_issues_steps.rb +++ b/features/step_definitions/project/project_issues_steps.rb @@ -8,16 +8,12 @@ Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2| Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true) end -Given /^I visit project "(.*?)" issues page$/ do |arg1| - visit project_issues_path(Project.find_by_name(arg1)) -end - Given /^I should see "(.*?)" in issues$/ do |arg1| - page.should have_content arg1 + page.should have_content arg1 end Given /^I should not see "(.*?)" in issues$/ do |arg1| - page.should_not have_content arg1 + page.should_not have_content arg1 end Then /^I should see issue "(.*?)"$/ do |arg1| @@ -27,11 +23,6 @@ Then /^I should see issue "(.*?)"$/ do |arg1| page.should have_content issue.project.name end -Given /^I visit issue page "(.*?)"$/ do |arg1| - issue = Issue.find_by_title(arg1) - visit project_issue_path(issue.project, issue) -end - Given /^I submit new issue "(.*?)"$/ do |arg1| fill_in "issue_title", with: arg1 click_button "Submit new issue" @@ -51,7 +42,16 @@ Given /^I visit project "(.*?)" labels page$/ do |arg1| end Then /^I should see label "(.*?)"$/ do |arg1| - within ".labels-table" do + within ".labels-table" do page.should have_content arg1 end end + +Given /^I fill in issue search with "(.*?)"$/ do |arg1| + # Because fill_in, with: "" triggers nothing + # we need to trigger a keyup event + if arg1 == '' + page.execute_script("$('.issue_search').val('').keyup();"); + end + fill_in 'issue_search', with: arg1 +end diff --git a/features/step_definitions/project/project_merge_requests_steps.rb b/features/step_definitions/project/project_merge_requests_steps.rb index 2bdb967d3c5..fddb18add08 100644 --- a/features/step_definitions/project/project_merge_requests_steps.rb +++ b/features/step_definitions/project/project_merge_requests_steps.rb @@ -8,21 +8,17 @@ Given /^project "(.*?)" have "(.*?)" closed merge request$/ do |arg1, arg2| Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true) end -Given /^I visit project "(.*?)" merge requests page$/ do |arg1| - visit project_merge_requests_path(Project.find_by_name(arg1)) -end - Then /^I should see "(.*?)" in merge requests$/ do |arg1| - page.should have_content arg1 + page.should have_content arg1 end Then /^I should not see "(.*?)" in merge requests$/ do |arg1| - page.should_not have_content arg1 + page.should_not have_content arg1 end Then /^I should see merge request "(.*?)"$/ do |arg1| merge_request = MergeRequest.find_by_title(arg1) - page.should have_content(merge_request.title[0..10]) + page.should have_content(merge_request.title[0..10]) page.should have_content(merge_request.target_branch) page.should have_content(merge_request.source_branch) end @@ -34,11 +30,6 @@ Given /^I submit new merge request "(.*?)"$/ do |arg1| click_button "Save" end -Given /^I visit merge request page "(.*?)"$/ do |arg1| - mr = MergeRequest.find_by_title(arg1) - visit project_merge_request_path(mr.project, mr) -end - Then /^I should see closed merge request "(.*?)"$/ do |arg1| mr = MergeRequest.find_by_title(arg1) mr.closed.should be_true diff --git a/features/step_definitions/project/project_milestones_steps.rb b/features/step_definitions/project/project_milestones_steps.rb index 6749773e2b5..936c52df8d7 100644 --- a/features/step_definitions/project/project_milestones_steps.rb +++ b/features/step_definitions/project/project_milestones_steps.rb @@ -12,11 +12,6 @@ Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2| end end -Given /^I visit project "(.*?)" milestones page$/ do |arg1| - @project = Project.find_by_name(arg1) - visit project_milestones_path(@project) -end - Then /^I should see active milestones$/ do milestone = @project.milestones.first page.should have_content(milestone.title[0..10]) diff --git a/features/step_definitions/project/project_team_steps.rb b/features/step_definitions/project/project_team_steps.rb index f0bab29a6f8..0979a6ea8c3 100644 --- a/features/step_definitions/project/project_team_steps.rb +++ b/features/step_definitions/project/project_team_steps.rb @@ -8,10 +8,6 @@ Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2| project.add_access(user, :write) end -Given /^I visit project "(.*?)" team page$/ do |arg1| - visit team_project_path(Project.find_by_name(arg1)) -end - Then /^I should be able to see myself in team$/ do page.should have_content(@user.name) page.should have_content(@user.email) @@ -23,13 +19,9 @@ Then /^I should see "(.*?)" in team list$/ do |arg1| page.should have_content(user.email) end -Given /^I click link "(.*?)"$/ do |arg1| - click_link arg1 -end - Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2| user = User.find_by_name(arg1) - within "#new_team_member" do + within "#new_team_member" do select user.name, :from => "team_member_user_id" select arg2, :from => "team_member_project_access" end @@ -44,7 +36,7 @@ end Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2| user = User.find_by_name(arg1) - within ".user_#{user.id}" do + within ".user_#{user.id}" do select arg2, :from => "team_member_project_access" end end diff --git a/features/step_definitions/project/project_wiki_steps.rb b/features/step_definitions/project/project_wiki_steps.rb index 10de38d9ae3..31fc050aa4c 100644 --- a/features/step_definitions/project/project_wiki_steps.rb +++ b/features/step_definitions/project/project_wiki_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit project wiki page$/ do - visit project_wiki_path(@project, :index) -end - Given /^I create Wiki page$/ do fill_in "Title", :with => 'Test title' fill_in "Content", :with => '[link test](test)' diff --git a/features/step_definitions/project/projects_steps.rb b/features/step_definitions/project/projects_steps.rb index d981e1f3802..d22b805f1df 100644 --- a/features/step_definitions/project/projects_steps.rb +++ b/features/step_definitions/project/projects_steps.rb @@ -1,9 +1,3 @@ -include LoginHelpers - -Given /^I signin as a user$/ do - login_as :user -end - When /^I visit new project page$/ do visit new_project_path end @@ -65,10 +59,6 @@ Given /^I visit project "(.*?)" network page$/ do |arg1| visit graph_project_path(project) end -Given /^show me page$/ do - save_and_open_page -end - Given /^page should have network graph$/ do page.should have_content "Project Network Graph" within ".graph" do diff --git a/features/step_definitions/visit_steps.rb b/features/step_definitions/visit_steps.rb new file mode 100644 index 00000000000..35fc6d44a15 --- /dev/null +++ b/features/step_definitions/visit_steps.rb @@ -0,0 +1,91 @@ +Given /^I visit project "(.*?)" issues page$/ do |arg1| + visit project_issues_path(Project.find_by_name(arg1)) +end + +Given /^I visit issue page "(.*?)"$/ do |arg1| + issue = Issue.find_by_title(arg1) + visit project_issue_path(issue.project, issue) +end + +Given /^I visit project "(.*?)" merge requests page$/ do |arg1| + visit project_merge_requests_path(Project.find_by_name(arg1)) +end + +Given /^I visit merge request page "(.*?)"$/ do |arg1| + mr = MergeRequest.find_by_title(arg1) + visit project_merge_request_path(mr.project, mr) +end + +Given /^I visit project "(.*?)" milestones page$/ do |arg1| + @project = Project.find_by_name(arg1) + visit project_milestones_path(@project) +end + +Given /^I visit project commits page$/ do + visit project_commits_path(@project) +end + +Given /^I visit compare refs page$/ do + visit compare_project_commits_path(@project) +end + +Given /^I visit project branches page$/ do + visit branches_project_repository_path(@project) +end + +Given /^I visit project commit page$/ do + visit project_commit_path(@project, ValidCommit::ID) +end + +Given /^I visit project tags page$/ do + visit tags_project_repository_path(@project) +end + +Given /^I click on commit link$/ do + visit project_commit_path(@project, ValidCommit::ID) +end + +Given /^I visit project source page$/ do + visit tree_project_ref_path(@project, @project.root_ref) +end + +Given /^I visit project source page for "(.*?)"$/ do |arg1| + visit tree_project_ref_path(@project, arg1) +end + +Given /^I visit blob file from repo$/ do + visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) +end + +Given /^I visit project "(.*?)" team page$/ do |arg1| + visit team_project_path(Project.find_by_name(arg1)) +end + +Given /^I visit project wiki page$/ do + visit project_wiki_path(@project, :index) +end + +Given /^I visit profile page$/ do + visit profile_path +end + +Given /^I visit profile token page$/ do + visit profile_token_path +end + +Given /^I visit profile password page$/ do + visit profile_password_path +end + +Given /^I visit dashboard page$/ do + visit dashboard_path +end + +Given /^I visit dashboard issues page$/ do + visit dashboard_issues_path +end + +Given /^I visit dashboard merge requests page$/ do + visit dashboard_merge_requests_path +end + -- cgit v1.2.1 From 09a86bd4d6dcf89f5e5393145900593bb22f1080 Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Thu, 6 Sep 2012 10:50:47 +0300 Subject: Capitlization of /gitlab/i normalized. #1367 --- app/assets/stylesheets/main.scss | 8 ++++---- app/helpers/gitlab_markdown_helper.rb | 2 +- app/mailers/notify.rb | 8 ++++---- app/views/errors/gitolite.html.haml | 2 +- app/views/help/index.html.haml | 2 +- app/views/help/markdown.html.haml | 6 +++--- app/views/help/ssh.html.haml | 4 ++-- app/views/help/system_hooks.html.haml | 2 +- app/views/help/web_hooks.html.haml | 4 ++-- app/views/help/workflow.html.haml | 2 +- app/views/hooks/_data_ex.html.erb | 2 +- app/views/issues/_form.html.haml | 2 +- app/views/keys/index.html.haml | 2 +- app/views/layouts/notify.html.haml | 4 ++-- app/views/milestones/_form.html.haml | 2 +- app/views/notes/_form.html.haml | 2 +- app/views/notify/new_user_email.html.haml | 2 +- app/views/wikis/_form.html.haml | 2 +- doc/api/README.md | 4 ++-- doc/installation.md | 2 +- lib/gitlab/backend/gitolite.rb | 2 +- lib/gitlab/markdown.rb | 2 +- lib/hooks/post-receive | 2 +- lib/tasks/gitlab/write_hook.rake | 2 +- 24 files changed, 36 insertions(+), 36 deletions(-) diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index be27d754dfa..e99ab47938a 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -1,13 +1,13 @@ @import "bootstrap"; @import "bootstrap-responsive"; -/** GITLAB colors **/ +/** GitLab colors **/ $link_color:#3A89A3; $blue_link: #2fa0bb; $style_color: #474d57; $hover: #fdf5d9; -/** GITLAB Fonts **/ +/** GitLab Fonts **/ @font-face { font-family: Korolev; src: url('korolev-medium-compressed.otf'); } /** MIXINS **/ @@ -106,9 +106,9 @@ $hover: #fdf5d9; @import "themes/ui_modern.scss"; /** - * Gitlab bootstrap. + * GitLab bootstrap. * Overrides some styles of twitter bootstrap. - * Also give some common classes for gitlab app + * Also give some common classes for GitLab app */ @import "gitlab_bootstrap/common.scss"; @import "gitlab_bootstrap/typography.scss"; diff --git a/app/helpers/gitlab_markdown_helper.rb b/app/helpers/gitlab_markdown_helper.rb index 9da695b5d23..a7ab7c6c38c 100644 --- a/app/helpers/gitlab_markdown_helper.rb +++ b/app/helpers/gitlab_markdown_helper.rb @@ -1,6 +1,6 @@ module GitlabMarkdownHelper # Replaces references (i.e. @abc, #123, !456, ...) in the text with links to - # the appropriate items in Gitlab. + # the appropriate items in GitLab. # # text - the source text # html_options - extra options for the reference links as given to link_to diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb index 91136fee95e..0afc1d31ef4 100644 --- a/app/mailers/notify.rb +++ b/app/mailers/notify.rb @@ -111,18 +111,18 @@ class Notify < ActionMailer::Base # Examples # # >> subject('Lorem ipsum') - # => "gitlab | Lorem ipsum" + # => "GitLab | Lorem ipsum" # # # Automatically inserts Project name when @project is set # >> @project = Project.last # => # # >> subject('Lorem ipsum') - # => "gitlab | Lorem ipsum | Ruby on Rails" + # => "GitLab | Lorem ipsum | Ruby on Rails" # # # Accepts multiple arguments # >> subject('Lorem ipsum', 'Dolor sit amet') - # => "gitlab | Lorem ipsum | Dolor sit amet" + # => "GitLab | Lorem ipsum | Dolor sit amet" def subject(*extra) - "gitlab | " << extra.join(' | ') << (@project ? " | #{@project.name}" : "") + "GitLab | " << extra.join(' | ') << (@project ? " | #{@project.name}" : "") end end diff --git a/app/views/errors/gitolite.html.haml b/app/views/errors/gitolite.html.haml index d5f51951d5e..699e6984db6 100644 --- a/app/views/errors/gitolite.html.haml +++ b/app/views/errors/gitolite.html.haml @@ -1,6 +1,6 @@ %h1 Git Error %hr -%h2 Gitlab was unable to access your Gitolite system. +%h2 GitLab was unable to access your Gitolite system. .git_error_tips %h4 Tips for Administrator: diff --git a/app/views/help/index.html.haml b/app/views/help/index.html.haml index 02549577282..962f2175126 100644 --- a/app/views/help/index.html.haml +++ b/app/views/help/index.html.haml @@ -30,7 +30,7 @@ %h5= link_to "API", help_api_path %li - %h5= link_to "Gitlab Markdown", help_markdown_path + %h5= link_to "GitLab Markdown", help_markdown_path %li %h5= link_to "SSH keys", help_ssh_path diff --git a/app/views/help/markdown.html.haml b/app/views/help/markdown.html.haml index 43d3d4b0f4a..15ad4a5b06b 100644 --- a/app/views/help/markdown.html.haml +++ b/app/views/help/markdown.html.haml @@ -1,4 +1,4 @@ -%h3.page_title Gitlab Flavored Markdown +%h3.page_title GitLab Flavored Markdown .back_link = link_to help_path do ← to index @@ -7,7 +7,7 @@ .row .span8 %p - For Gitlab we developed something we call "Gitlab Flavored Markdown" (GFM). + For GitLab we developed something we call "GitLab Flavored Markdown" (GFM). It extends the standard Markdown in a few significant ways adds some useful functionality. %p You can use GFM in: @@ -62,7 +62,7 @@ %p becomes = markdown %Q{```ruby\nrequire 'redcarpet'\nmarkdown = Redcarpet.new("Hello World!")\nputs markdown.to_html\n```} - %h4 Special Gitlab references + %h4 Special GitLab references %p GFM recognizes special references. diff --git a/app/views/help/ssh.html.haml b/app/views/help/ssh.html.haml index 6a5812040e7..3f082333a76 100644 --- a/app/views/help/ssh.html.haml +++ b/app/views/help/ssh.html.haml @@ -5,7 +5,7 @@ %hr %p.slead - SSH key allows you to establish a secure connection between your computer and Gitlab + SSH key allows you to establish a secure connection between your computer and GitLab %p.slead To generate a new SSH key just open your terminal and use code below. @@ -17,7 +17,7 @@ \# Generating public/private rsa key pair... %p.slead - Next just use code below to dump your public key and add to GITLAB SSH Keys + Next just use code below to dump your public key and add to GitLab SSH Keys %pre.dark cat ~/.ssh/id_rsa.pub diff --git a/app/views/help/system_hooks.html.haml b/app/views/help/system_hooks.html.haml index 9fc8cbabf17..736c818bc57 100644 --- a/app/views/help/system_hooks.html.haml +++ b/app/views/help/system_hooks.html.haml @@ -5,7 +5,7 @@ %hr %p.slead - Your Gitlab instance can perform HTTP POST request on next event: create_project, delete_project, create_user, delete_user, change_team_member. + Your GitLab instance can perform HTTP POST request on next event: create_project, delete_project, create_user, delete_user, change_team_member. %br System Hooks can be used for logging or change information in LDAP server. %br diff --git a/app/views/help/web_hooks.html.haml b/app/views/help/web_hooks.html.haml index 263eadf6583..65036613fa7 100644 --- a/app/views/help/web_hooks.html.haml +++ b/app/views/help/web_hooks.html.haml @@ -5,11 +5,11 @@ %hr %p.slead - Every Gitlab project can trigger a web server whenever the repo is pushed to. + Every GitLab project can trigger a web server whenever the repo is pushed to. %br Web Hooks can be used to update an external issue tracker, trigger CI builds, update a backup mirror, or even deploy to your production server. %br - GITLAB will send POST request with commits information on every push. + GitLab will send POST request with commits information on every push. %h5 Hooks request example: = render "hooks/data_ex" diff --git a/app/views/help/workflow.html.haml b/app/views/help/workflow.html.haml index a3fe3b01d46..6062ca091bd 100644 --- a/app/views/help/workflow.html.haml +++ b/app/views/help/workflow.html.haml @@ -24,7 +24,7 @@ git commit -am "My feature is ready" %li - %p Push your branch to gitlabhq + %p Push your branch to GitLab .bash %pre.dark git push origin $feature_name diff --git a/app/views/hooks/_data_ex.html.erb b/app/views/hooks/_data_ex.html.erb index e43714e965b..7dd6b9e0750 100644 --- a/app/views/hooks/_data_ex.html.erb +++ b/app/views/hooks/_data_ex.html.erb @@ -32,7 +32,7 @@ :timestamp => "2012-01-03T23:36:29+02:00", :url => "http://localhost/diaspora/commits/da1560886d...", :author => { - :name => "gitlab dev user", + :name => "GitLab dev user", :email => "gitlabdev@dv6700.(none)" } } diff --git a/app/views/issues/_form.html.haml b/app/views/issues/_form.html.haml index db7920b993d..23de7e8ed15 100644 --- a/app/views/issues/_form.html.haml +++ b/app/views/issues/_form.html.haml @@ -38,7 +38,7 @@ = f.label :description, "Details" .input = f.text_area :description, maxlength: 2000, class: "xxlarge", rows: 14 - %p.hint Issues are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. + %p.hint Issues are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. .actions diff --git a/app/views/keys/index.html.haml b/app/views/keys/index.html.haml index 8f7e2bab1b4..3e919c5c419 100644 --- a/app/views/keys/index.html.haml +++ b/app/views/keys/index.html.haml @@ -4,7 +4,7 @@ %hr %p.slead - SSH key allows you to establish a secure connection between your computer and Gitlab + SSH key allows you to establish a secure connection between your computer and GitLab %table#keys-table diff --git a/app/views/layouts/notify.html.haml b/app/views/layouts/notify.html.haml index a1938df43a1..7b79897b653 100644 --- a/app/views/layouts/notify.html.haml +++ b/app/views/layouts/notify.html.haml @@ -2,7 +2,7 @@ %head %meta{content: "text/html; charset=utf-8", "http-equiv" => "Content-Type"} %title - gitlabhq + GitLab :css .header h1 {color: #BBBBBB !important; font: bold 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;} .header p {color: #c6c6c6; font: normal 12px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 18px;} @@ -21,7 +21,7 @@ \  %td{align: "left", style: "padding: 18px 0 10px;", width: "580"} %h1{style: "color: #BBBBBB; font: normal 32px Helvetica, Arial, sans-serif; margin: 0; padding: 0; line-height: 40px;"} - gitlab + GITLAB - if @project | #{@project.name} %table{align: "center", bgcolor: "#fff", border: "0", cellpadding: "0", cellspacing: "0", style: "font-family: Helvetica, Arial, sans-serif; background: #fff;", width: "600"} diff --git a/app/views/milestones/_form.html.haml b/app/views/milestones/_form.html.haml index 41cbd6abcad..ce4145ba3e6 100644 --- a/app/views/milestones/_form.html.haml +++ b/app/views/milestones/_form.html.haml @@ -22,7 +22,7 @@ = f.label :description, "Description", class: "control-label" .controls = f.text_area :description, maxlength: 2000, class: "input-xlarge", rows: 10 - %p.hint Milestones are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. + %p.hint Milestones are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. .span6 .control-group = f.label :due_date, "Due Date", class: "control-label" diff --git a/app/views/notes/_form.html.haml b/app/views/notes/_form.html.haml index 7211a0ae471..6d559cfc790 100644 --- a/app/views/notes/_form.html.haml +++ b/app/views/notes/_form.html.haml @@ -11,7 +11,7 @@ = f.text_area :note, size: 255, class: 'note-text' #preview-note.preview_note.hide .hint - .right Comments are parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. + .right Comments are parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. .clearfix .row.note_advanced_opts.hide diff --git a/app/views/notify/new_user_email.html.haml b/app/views/notify/new_user_email.html.haml index d96afc92fe2..93bf7c50229 100644 --- a/app/views/notify/new_user_email.html.haml +++ b/app/views/notify/new_user_email.html.haml @@ -6,7 +6,7 @@ %h2{style: "color:#646464; font-weight: bold; margin: 0; padding: 0; line-height: 26px; font-size: 18px; font-family: Helvetica, Arial, sans-serif; "} Hi #{@user['name']}! %p{style: "color:#767676; font-weight: normal; margin: 0; padding: 0; line-height: 20px; font-size: 12px;font-family: Helvetica, Arial, sans-serif; "} - Administrator created account for you. Now you are a member of company gitlab application. + Administrator created account for you. Now you are a member of company GitLab application. %td{style: "font-size: 1px; line-height: 1px;", width: "21"} %tr %td{style: "font-size: 1px; line-height: 1px;", width: "21"} diff --git a/app/views/wikis/_form.html.haml b/app/views/wikis/_form.html.haml index 12b57e032a4..b05d0a78992 100644 --- a/app/views/wikis/_form.html.haml +++ b/app/views/wikis/_form.html.haml @@ -14,7 +14,7 @@ .middle_box_content .input %span.cgray - Wiki content is parsed with #{link_to "Gitlab Flavored Markdown", help_markdown_path, target: '_blank'}. + Wiki content is parsed with #{link_to "GitLab Flavored Markdown", help_markdown_path, target: '_blank'}. To link to a (new) page you can just type %code [Link Title](page-slug) \. diff --git a/doc/api/README.md b/doc/api/README.md index dece3e23619..93919b42852 100644 --- a/doc/api/README.md +++ b/doc/api/README.md @@ -1,4 +1,4 @@ -# Gitlab API +# GitLab API All API requests require authentication. You need to pass a `private_token` parameter to authenticate. You can find or reset your private token in your profile. @@ -10,7 +10,7 @@ If no, or an invalid, `private_token` is provided then an error message will be } ``` -API requests should be prefixed with `api` and the API version. The API version is equal to the Gitlab major version number, which is defined in `lib/api.rb`. +API requests should be prefixed with `api` and the API version. The API version is equal to the GitLab major version number, which is defined in `lib/api.rb`. Example of a valid API request: diff --git a/doc/installation.md b/doc/installation.md index 327fc192822..e14ec711e7b 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -167,7 +167,7 @@ and ensure you have followed all of the above steps carefully. # Login to MySQL $ mysql -u root -p - # Create the gitlabhq production database + # Create the GitLab production database mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; # Create the MySQL User change $password to a real password diff --git a/lib/gitlab/backend/gitolite.rb b/lib/gitlab/backend/gitolite.rb index b69f4663c35..3dfb574c4d5 100644 --- a/lib/gitlab/backend/gitolite.rb +++ b/lib/gitlab/backend/gitolite.rb @@ -170,7 +170,7 @@ module Gitlab def push Dir.chdir(File.join(@local_dir, "gitolite")) `git add -A` - `git commit -am "Gitlab"` + `git commit -am "GitLab"` `git push` Dir.chdir(Rails.root) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index 9a07133d0b3..a387b503ccb 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -1,5 +1,5 @@ module Gitlab - # Custom parser for Gitlab-flavored Markdown + # Custom parser for GitLab-flavored Markdown # # It replaces references in the text with links to the appropriate items in Gitlab. # diff --git a/lib/hooks/post-receive b/lib/hooks/post-receive index d38bd13e19d..a4fa9f1c234 100755 --- a/lib/hooks/post-receive +++ b/lib/hooks/post-receive @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# This file was placed here by Gitlab. It makes sure that your pushed commits +# This file was placed here by GitLab. It makes sure that your pushed commits # will be processed properly. while read oldrev newrev ref diff --git a/lib/tasks/gitlab/write_hook.rake b/lib/tasks/gitlab/write_hook.rake index 9ec9c8383e2..5e9fc8eb3d1 100644 --- a/lib/tasks/gitlab/write_hook.rake +++ b/lib/tasks/gitlab/write_hook.rake @@ -1,6 +1,6 @@ namespace :gitlab do namespace :gitolite do - desc "GITLAB | Write GITLAB hook for gitolite" + desc "GITLAB | Write GitLab hook for gitolite" task :write_hooks => :environment do gitolite_hooks_path = File.join(Gitlab.config.git_hooks_path, "common") gitlab_hooks_path = Rails.root.join("lib", "hooks") -- cgit v1.2.1 From a65ce748430d922ea2967f226eb40039040dc43d Mon Sep 17 00:00:00 2001 From: Alex Denisov <1101.debian@gmail.com> Date: Thu, 6 Sep 2012 11:40:16 +0300 Subject: Spec fixed --- spec/mailers/notify_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/mailers/notify_spec.rb b/spec/mailers/notify_spec.rb index cf50b429f23..4a9f142e50d 100644 --- a/spec/mailers/notify_spec.rb +++ b/spec/mailers/notify_spec.rb @@ -24,7 +24,7 @@ describe Notify do end it 'has the correct subject' do - should have_subject /^gitlab \| Account was created for you$/ + should have_subject /^gitlab \| Account was created for you$/i end it 'contains the new user\'s login name' do -- cgit v1.2.1 From c106bb7096e3bb8bada454dcf7794877204f0e34 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 04:03:46 -0700 Subject: minor refactoring of commits controller --- app/controllers/commits_controller.rb | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/app/controllers/commits_controller.rb b/app/controllers/commits_controller.rb index 5e10a1b6ee7..4ab40c304dd 100644 --- a/app/controllers/commits_controller.rb +++ b/app/controllers/commits_controller.rb @@ -64,19 +64,14 @@ class CommitsController < ApplicationController @commit.to_patch, type: "text/plain", disposition: 'attachment', - filename: (@commit.id.to_s + ".patch") + filename: "#{@commit.id.patch}" ) end protected def load_refs - if params[:ref].blank? - @branch = params[:branch].blank? ? nil : params[:branch] - @tag = params[:tag].blank? ? nil : params[:tag] - @ref = @branch || @tag || @project.try(:default_branch) || 'master' - else - @ref = params[:ref] - end + @ref ||= params[:ref].presence || params[:branch].presence || params[:tag].presence + @ref ||= @ref || @project.try(:default_branch) || 'master' end end -- cgit v1.2.1 From 60e18e2636b8ca3e6f25c5a9adaa4118f5a2d3ad Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 04:32:01 -0700 Subject: rewrite admin.js in coffeescript --- app/assets/javascripts/admin.js | 11 ----------- app/assets/javascripts/admin.js.coffee | 8 ++++++++ 2 files changed, 8 insertions(+), 11 deletions(-) delete mode 100644 app/assets/javascripts/admin.js create mode 100644 app/assets/javascripts/admin.js.coffee diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js deleted file mode 100644 index bb0a499a607..00000000000 --- a/app/assets/javascripts/admin.js +++ /dev/null @@ -1,11 +0,0 @@ -$(document).ready(function(){ - $('input#user_force_random_password').on('change', function(elem) { - var elems = $('#user_password, #user_password_confirmation'); - - if ($(this).attr('checked')) { - elems.val('').attr('disabled', true); - } else { - elems.removeAttr('disabled'); - } - }); -}); diff --git a/app/assets/javascripts/admin.js.coffee b/app/assets/javascripts/admin.js.coffee new file mode 100644 index 00000000000..269a7a767ed --- /dev/null +++ b/app/assets/javascripts/admin.js.coffee @@ -0,0 +1,8 @@ +$ -> + $('input#user_force_random_password').on 'change', (elem) -> + elems = $('#user_password, #user_password_confirmation') + + if $(@).attr 'checked' + elems.val('').attr 'disabled', true + else + elems.removeAttr 'disabled' -- cgit v1.2.1 From 08d9421dd9c291def896c78f703fec933d1c540f Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 04:32:31 -0700 Subject: rewrite graph.js in coffeescript --- app/assets/javascripts/graph.js | 10 ---------- app/assets/javascripts/graph.js.coffee | 10 ++++++++++ 2 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 app/assets/javascripts/graph.js create mode 100644 app/assets/javascripts/graph.js.coffee diff --git a/app/assets/javascripts/graph.js b/app/assets/javascripts/graph.js deleted file mode 100644 index 434cf70ac65..00000000000 --- a/app/assets/javascripts/graph.js +++ /dev/null @@ -1,10 +0,0 @@ -function initGraphNav() { - $(".graph svg").css("position", "relative"); - $("body").bind("keyup", function(e) { - if(e.keyCode == 37) { // left - $(".graph svg").animate({ left: "+=400" }); - } else if(e.keyCode == 39) { // right - $(".graph svg").animate({ left: "-=400" }); - } - }); -} diff --git a/app/assets/javascripts/graph.js.coffee b/app/assets/javascripts/graph.js.coffee new file mode 100644 index 00000000000..5fe8ae3f020 --- /dev/null +++ b/app/assets/javascripts/graph.js.coffee @@ -0,0 +1,10 @@ +initGraphNav = -> + $('.graph svg').css 'position', 'relative' + + $('body').bind 'keyup', (e) -> + if e.keyCode is 37 # left + $('.graph svg').animate left: '+=400' + else if e.keyCode is 39 # right + $('.graph svg').animate left: '-=400' + +window.initGraphNav = initGraphNav -- cgit v1.2.1 From f8b588808ec180c836402395afdc1303b7189abc Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 04:37:14 -0700 Subject: rewrite loader.js in coffeescript --- app/assets/javascripts/loader.js | 11 ----------- app/assets/javascripts/loader.js.coffee | 5 +++++ 2 files changed, 5 insertions(+), 11 deletions(-) delete mode 100644 app/assets/javascripts/loader.js create mode 100644 app/assets/javascripts/loader.js.coffee diff --git a/app/assets/javascripts/loader.js b/app/assets/javascripts/loader.js deleted file mode 100644 index 6fa0b525814..00000000000 --- a/app/assets/javascripts/loader.js +++ /dev/null @@ -1,11 +0,0 @@ -var Loader = { - img_src: "/assets/ajax-loader.gif", - - html: - function(width) { - img = $(""); - img.attr("width", width); - img.attr("src", this.img_src); - return img; - } -} diff --git a/app/assets/javascripts/loader.js.coffee b/app/assets/javascripts/loader.js.coffee new file mode 100644 index 00000000000..66f8e8b1bb3 --- /dev/null +++ b/app/assets/javascripts/loader.js.coffee @@ -0,0 +1,5 @@ +Loader = + html: (width) -> + $('').attr src: '/assets/ajax-loader.gif', width: width + +window.Loader = Loader -- cgit v1.2.1 From 06acc115ed8e5641932f85568c6d03dcb30c9923 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 04:51:42 -0700 Subject: rewrite snippets.js in coffeescript --- app/assets/javascripts/snippets.js | 9 --------- app/assets/javascripts/snippets.js.coffee | 6 ++++++ 2 files changed, 6 insertions(+), 9 deletions(-) delete mode 100644 app/assets/javascripts/snippets.js create mode 100644 app/assets/javascripts/snippets.js.coffee diff --git a/app/assets/javascripts/snippets.js b/app/assets/javascripts/snippets.js deleted file mode 100644 index 11e18eb779e..00000000000 --- a/app/assets/javascripts/snippets.js +++ /dev/null @@ -1,9 +0,0 @@ -$(document).ready(function(){ - $("#snippets-table .snippet").live('click', function(e){ - if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { - location.href = $(this).attr("url"); - e.stopPropagation(); - return false; - } - }); -}); diff --git a/app/assets/javascripts/snippets.js.coffee b/app/assets/javascripts/snippets.js.coffee new file mode 100644 index 00000000000..af4385deb51 --- /dev/null +++ b/app/assets/javascripts/snippets.js.coffee @@ -0,0 +1,6 @@ +$ -> + $('#snippets-table .snippet').live 'click', (e) -> + if e.target.nodeName isnt 'A' and e.target.nodeName isnt 'INPUT' + location.href = $(@).attr 'url' + e.stopPropagation() + false -- cgit v1.2.1 From e7c2ee57aa40e13aac987fb107794cdc3128ed8a Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 05:06:01 -0700 Subject: delete unnecessary team.js --- app/assets/javascripts/team.js | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 app/assets/javascripts/team.js diff --git a/app/assets/javascripts/team.js b/app/assets/javascripts/team.js deleted file mode 100644 index f4b04354f53..00000000000 --- a/app/assets/javascripts/team.js +++ /dev/null @@ -1,8 +0,0 @@ -function backToMembers(){ - $("#new_team_member").hide("slide", { direction: "right" }, 150, function(){ - $("#team-table").show("slide", { direction: "left" }, 150, function() { - $("#new_team_member").remove(); - $(".add_new").show(); - }); - }); -} -- cgit v1.2.1 From 88d394d396f09fe018317443105cd08bd69e1d3f Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 05:44:44 -0700 Subject: cleanup projects.coffee --- app/assets/javascripts/projects.js.coffee | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/app/assets/javascripts/projects.js.coffee b/app/assets/javascripts/projects.js.coffee index ca8f13f6744..7700cf98489 100644 --- a/app/assets/javascripts/projects.js.coffee +++ b/app/assets/javascripts/projects.js.coffee @@ -1,21 +1,20 @@ window.Projects = -> - $("#project_name").live "change", -> - slug = slugify($(this).val()) - $("#project_code").val(slug) - $("#project_path").val(slug) + $('#project_name').on 'change', -> + slug = slugify $(@).val() + $('#project_code').val slug - $(".new_project, .edit_project").live "ajax:before", -> - $(".project_new_holder, .project_edit_holder").hide() - $(".save-project-loader").show() + $('.new_project, .edit_project').on 'ajax:before', -> + $('.project_new_holder, .project_edit_holder').hide() + $('.save-project-loader').show() - $("form #project_default_branch").chosen() - disableButtonIfEmtpyField "#project_name", ".project-submit" + $('form #project_default_branch').chosen() + disableButtonIfEmtpyField '#project_name', '.project-submit' # Git clone panel switcher $ -> - scope = $('.project_clone_holder') + scope = $ '.project_clone_holder' if scope.length > 0 $('a, button', scope).click -> - $('a, button', scope).removeClass('active') - $(this).addClass('active') - $('#project_clone', scope).val($(this).data('clone')) + $('a, button', scope).removeClass 'active' + $(@).addClass 'active' + $('#project_clone', scope).val $(@).data 'clone' -- cgit v1.2.1 From 66684d6d50e9d8e0ae31db9df6b5bd7626db74ef Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 05:47:13 -0700 Subject: move code from application.js to separate file --- app/assets/javascripts/application.js | 131 ---------------------------------- app/assets/javascripts/main.js | 130 +++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 131 deletions(-) create mode 100644 app/assets/javascripts/main.js diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index f69fd6f9a44..4c487ec1d38 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -17,134 +17,3 @@ //= require raphael //= require branch-graph //= require_tree . - -$(document).ready(function(){ - - $(".one_click_select").live("click", function(){ - $(this).select(); - }); - - $('body').on('ajax:complete, ajax:beforeSend, submit', 'form', function(e){ - var buttons = $('[type="submit"]', this); - switch( e.type ){ - case 'ajax:beforeSend': - case 'submit': - buttons.attr('disabled', 'disabled'); - break; - case ' ajax:complete': - default: - buttons.removeAttr('disabled'); - break; - } - }) - - $(".account-box").mouseenter(showMenu); - $(".account-box").mouseleave(resetMenu); - - $("#projects-list .project").live('click', function(e){ - if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { - location.href = $(this).attr("url"); - e.stopPropagation(); - return false; - } - }); - - /** - * Focus search field by pressing 's' key - */ - $(document).keypress(function(e) { - if( $(e.target).is(":input") ) return; - switch(e.which) { - case 115: focusSearch(); - e.preventDefault(); - } - }); - - /** - * Commit show suppressed diff - * - */ - $(".supp_diff_link").bind("click", function() { - showDiff(this); - }); - - /** - * Note markdown preview - * - */ - $(document).on('click', '#preview-link', function(e) { - $('#preview-note').text('Loading...'); - - var previewLinkText = ($(this).text() == 'Preview' ? 'Edit' : 'Preview'); - $(this).text(previewLinkText); - - var note = $('#note_note').val(); - if (note.trim().length === 0) { note = 'Nothing to preview'; } - $.post($(this).attr('href'), {note: note}, function(data) { - $('#preview-note').html(data); - }); - - $('#preview-note, #note_note').toggle(); - e.preventDefault(); - }); -}); - -function focusSearch() { - $("#search").focus(); -} - -function updatePage(data){ - $.ajax({type: "GET", url: location.href, data: data, dataType: "script"}); -} - -function showMenu() { - $(this).toggleClass('hover'); -} - -function resetMenu() { - $(this).removeClass("hover"); -} - -function slugify(text) { - return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); -} - -function showDiff(link) { - $(link).next('table').show(); - $(link).remove(); -} - -(function($){ - var _chosen = $.fn.chosen; - $.fn.extend({ - chosen: function(options) { - var default_options = {'search_contains' : 'true'}; - $.extend(default_options, options); - return _chosen.apply(this, [default_options]); - }}) -})(jQuery); - - -function ajaxGet(url) { - $.ajax({type: "GET", url: url, dataType: "script"}); -} - -/** - * Disable button if text field is empty - */ -function disableButtonIfEmtpyField(field_selector, button_selector) { - field = $(field_selector); - if(field.val() == "") { - field.closest("form").find(button_selector).attr("disabled", "disabled").addClass("disabled"); - } - - field.on('keyup', function(){ - var field = $(this); - var closest_submit = field.closest("form").find(button_selector); - if(field.val() == "") { - closest_submit.attr("disabled", "disabled").addClass("disabled"); - } else { - closest_submit.removeAttr("disabled").removeClass("disabled"); - } - }) -} diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js new file mode 100644 index 00000000000..61af1dc3d19 --- /dev/null +++ b/app/assets/javascripts/main.js @@ -0,0 +1,130 @@ +$(document).ready(function(){ + + $(".one_click_select").live("click", function(){ + $(this).select(); + }); + + $('body').on('ajax:complete, ajax:beforeSend, submit', 'form', function(e){ + var buttons = $('[type="submit"]', this); + switch( e.type ){ + case 'ajax:beforeSend': + case 'submit': + buttons.attr('disabled', 'disabled'); + break; + case ' ajax:complete': + default: + buttons.removeAttr('disabled'); + break; + } + }) + + $(".account-box").mouseenter(showMenu); + $(".account-box").mouseleave(resetMenu); + + $("#projects-list .project").live('click', function(e){ + if(e.target.nodeName != "A" && e.target.nodeName != "INPUT") { + location.href = $(this).attr("url"); + e.stopPropagation(); + return false; + } + }); + + /** + * Focus search field by pressing 's' key + */ + $(document).keypress(function(e) { + if( $(e.target).is(":input") ) return; + switch(e.which) { + case 115: focusSearch(); + e.preventDefault(); + } + }); + + /** + * Commit show suppressed diff + * + */ + $(".supp_diff_link").bind("click", function() { + showDiff(this); + }); + + /** + * Note markdown preview + * + */ + $(document).on('click', '#preview-link', function(e) { + $('#preview-note').text('Loading...'); + + var previewLinkText = ($(this).text() == 'Preview' ? 'Edit' : 'Preview'); + $(this).text(previewLinkText); + + var note = $('#note_note').val(); + if (note.trim().length === 0) { note = 'Nothing to preview'; } + $.post($(this).attr('href'), {note: note}, function(data) { + $('#preview-note').html(data); + }); + + $('#preview-note, #note_note').toggle(); + e.preventDefault(); + }); +}); + +function focusSearch() { + $("#search").focus(); +} + +function updatePage(data){ + $.ajax({type: "GET", url: location.href, data: data, dataType: "script"}); +} + +function showMenu() { + $(this).toggleClass('hover'); +} + +function resetMenu() { + $(this).removeClass("hover"); +} + +function slugify(text) { + return text.replace(/[^-a-zA-Z0-9]+/g, '_').toLowerCase(); +} + +function showDiff(link) { + $(link).next('table').show(); + $(link).remove(); +} + +(function($){ + var _chosen = $.fn.chosen; + $.fn.extend({ + chosen: function(options) { + var default_options = {'search_contains' : 'true'}; + $.extend(default_options, options); + return _chosen.apply(this, [default_options]); + }}) +})(jQuery); + + +function ajaxGet(url) { + $.ajax({type: "GET", url: url, dataType: "script"}); +} + +/** + * Disable button if text field is empty + */ +function disableButtonIfEmtpyField(field_selector, button_selector) { + field = $(field_selector); + if(field.val() == "") { + field.closest("form").find(button_selector).attr("disabled", "disabled").addClass("disabled"); + } + + field.on('keyup', function(){ + var field = $(this); + var closest_submit = field.closest("form").find(button_selector); + if(field.val() == "") { + closest_submit.attr("disabled", "disabled").addClass("disabled"); + } else { + closest_submit.removeAttr("disabled").removeClass("disabled"); + } + }) +} -- cgit v1.2.1 From d861023cb9dc71b5943916fdd6011dab32085626 Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 07:52:01 -0700 Subject: refactor factory specs --- spec/factories_spec.rb | 90 +++----------------------------------------------- 1 file changed, 4 insertions(+), 86 deletions(-) diff --git a/spec/factories_spec.rb b/spec/factories_spec.rb index 5760aad423b..5ccc17bddc9 100644 --- a/spec/factories_spec.rb +++ b/spec/factories_spec.rb @@ -1,91 +1,9 @@ require 'spec_helper' -describe "Factories" do - describe 'User' do - it "builds a valid instance" do - build(:user).should be_valid - end - - it "builds a valid admin instance" do - build(:admin).should be_valid - end - end - - describe 'Project' do - it "builds a valid instance" do - build(:project).should be_valid - end - end - - describe 'Issue' do - it "builds a valid instance" do - build(:issue).should be_valid - end - - it "builds a valid closed instance" do - build(:closed_issue).should be_valid - end - end - - describe 'MergeRequest' do - it "builds a valid instance" do - build(:merge_request).should be_valid - end - end - - describe 'Note' do - it "builds a valid instance" do - build(:note).should be_valid - end - end - - describe 'Event' do - it "builds a valid instance" do - build(:event).should be_valid - end - end - - describe 'Key' do - it "builds a valid instance" do - build(:key).should be_valid - end - - it "builds a valid deploy key instance" do - build(:deploy_key).should be_valid - end - - it "builds a valid personal key instance" do - build(:personal_key).should be_valid - end - end - - describe 'Milestone' do - it "builds a valid instance" do - build(:milestone).should be_valid - end - end - - describe 'SystemHook' do - it "builds a valid instance" do - build(:system_hook).should be_valid - end - end - - describe 'ProjectHook' do - it "builds a valid instance" do - build(:project_hook).should be_valid - end - end - - describe 'Wiki' do - it "builds a valid instance" do - build(:wiki).should be_valid - end - end - - describe 'Snippet' do - it "builds a valid instance" do - build(:snippet).should be_valid +FactoryGirl.factories.map(&:name).each do |factory_name| + describe "#{factory_name} factory" do + it 'should be valid' do + build(factory_name).should be_valid end end end -- cgit v1.2.1 From 46b9aafc396278a9ce0732d9a877ca01c45dbc0e Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Thu, 6 Sep 2012 07:56:33 -0700 Subject: add missing selector to projects.js --- app/assets/javascripts/projects.js.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/projects.js.coffee b/app/assets/javascripts/projects.js.coffee index 7700cf98489..85ab2a06dff 100644 --- a/app/assets/javascripts/projects.js.coffee +++ b/app/assets/javascripts/projects.js.coffee @@ -1,7 +1,7 @@ window.Projects = -> $('#project_name').on 'change', -> slug = slugify $(@).val() - $('#project_code').val slug + $('#project_code, #project_path').val slug $('.new_project, .edit_project').on 'ajax:before', -> $('.project_new_holder, .project_edit_holder').hide() -- cgit v1.2.1 From 3a63f6f31622c5f96ff167b0c8df1367abbf5eda Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 15:26:55 -0400 Subject: Simplify EMOJI_PATTERN --- lib/gitlab/markdown.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index 2af2e9be652..57b37764ce2 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -35,7 +35,7 @@ module Gitlab ([^\w&;])? # Suffix (6) }x.freeze - EMOJI_PATTERN = %r{(:([\w\-\+]+):)}.freeze + EMOJI_PATTERN = %r{(:(\S+):)}.freeze attr_reader :html_options -- cgit v1.2.1 From 2faa4bba40909778c1732894faf42a0f00e87cc4 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 15:31:25 -0400 Subject: Update Note#upvote? to support emoji voting --- app/models/note.rb | 2 +- spec/models/note_spec.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/note.rb b/app/models/note.rb index 711a4ee6935..d8494edd532 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -103,7 +103,7 @@ class Note < ActiveRecord::Base # Returns true if this is an upvote note, # otherwise false is returned def upvote? - note =~ /^\+1/ ? true : false + note.start_with?('+1') || note.start_with?(':+1:') end end # == Schema Information diff --git a/spec/models/note_spec.rb b/spec/models/note_spec.rb index ffaf442d9a4..dddfd34c499 100644 --- a/spec/models/note_spec.rb +++ b/spec/models/note_spec.rb @@ -35,6 +35,16 @@ describe Note do note = Factory(:note, note: "-1 for this") note.should_not be_upvote end + + it "recognizes a +1 emoji as a vote" do + note = build(:note, note: ":+1: for this") + note.should be_upvote + end + + it "recognizes a neutral emoji note" do + note = build(:note, note: "I would :+1: this, but I don't want to") + note.should_not be_upvote + end end let(:project) { create(:project) } -- cgit v1.2.1 From bde19c061a73a7756cad4ba02e52187b1eb22fc5 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 16:51:28 -0400 Subject: Update failure message for UsersProject uniqueness validation Was "User has already been taken", is now "User already exists in project". --- app/models/users_project.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/users_project.rb b/app/models/users_project.rb index 7d1729343bb..1b5984834e4 100644 --- a/app/models/users_project.rb +++ b/app/models/users_project.rb @@ -14,7 +14,7 @@ class UsersProject < ActiveRecord::Base after_save :update_repository after_destroy :update_repository - validates_uniqueness_of :user_id, scope: [:project_id] + validates_uniqueness_of :user_id, scope: [:project_id], message: "already exists in project" validates_presence_of :user_id validates_presence_of :project_id @@ -48,10 +48,10 @@ class UsersProject < ActiveRecord::Base def self.access_roles { - "Guest" => GUEST, - "Reporter" => REPORTER, + "Guest" => GUEST, + "Reporter" => REPORTER, "Developer" => DEVELOPER, - "Master" => MASTER + "Master" => MASTER } end -- cgit v1.2.1 From 8f3b1d6ea4c72665e1b0ffbc554727595cbe60b0 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 17:05:23 -0400 Subject: Fix spec broken by bde19c0 --- spec/models/users_project_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/models/users_project_spec.rb b/spec/models/users_project_spec.rb index 3197ba6eb6b..33cb358e7bd 100644 --- a/spec/models/users_project_spec.rb +++ b/spec/models/users_project_spec.rb @@ -10,7 +10,7 @@ describe UsersProject do let!(:users_project) { create(:users_project) } it { should validate_presence_of(:user_id) } - it { should validate_uniqueness_of(:user_id).scoped_to(:project_id) } + it { should validate_uniqueness_of(:user_id).scoped_to(:project_id).with_message(/already exists/) } it { should validate_presence_of(:project_id) } end -- cgit v1.2.1 From 34a48d55cc9763fb65c50b80e545c99350ebc6ca Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 17:17:56 -0400 Subject: Revert "Change @project instance variable to a local in views/help/markdown" This reverts commit 6471d8c6521ef7a88f3aa893cc11c1da8077bdc0. --- app/views/help/markdown.html.haml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/help/markdown.html.haml b/app/views/help/markdown.html.haml index 15ad4a5b06b..0644ede3e9f 100644 --- a/app/views/help/markdown.html.haml +++ b/app/views/help/markdown.html.haml @@ -88,9 +88,9 @@ for commits -# this example will only be shown if the user has a project with at least one issue - - if project = current_user.projects.first - - if issue = project.issues.first - %p For example in your #{link_to project.name, project_path(project)} project something like + - if @project = current_user.projects.first + - if issue = @project.issues.first + %p For example in your #{link_to @project.name, project_path(@project)} project something like %pre= "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." %p becomes = markdown "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." -- cgit v1.2.1 From 8fdeb43c36767fc10a0298598fd7452fa609faee Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Thu, 6 Sep 2012 17:20:57 -0400 Subject: Fix Help/Markdown: Take 2 --- app/views/help/markdown.html.haml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/views/help/markdown.html.haml b/app/views/help/markdown.html.haml index 0644ede3e9f..2086b08c890 100644 --- a/app/views/help/markdown.html.haml +++ b/app/views/help/markdown.html.haml @@ -90,12 +90,11 @@ -# this example will only be shown if the user has a project with at least one issue - if @project = current_user.projects.first - if issue = @project.issues.first - %p For example in your #{link_to @project.name, project_path(@project)} project something like + %p For example in your #{link_to @project.name, project_path(@project)} project, writing: %pre= "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." - %p becomes - = markdown "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." - - + %p becomes: + %pre= gfm "This is related to ##{issue.id}. @#{current_user.name} is working on solving it." + - @project = nil # Prevent this from bubbling up to page title .span4.right .alert.alert-info -- cgit v1.2.1 From 0eb8a0398197a4a586d83e4e18e7e070f547243f Mon Sep 17 00:00:00 2001 From: Nihad Abbasov Date: Fri, 7 Sep 2012 07:01:04 +0600 Subject: add mysql service for travis-ci MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see http://about.travis-ci.org/blog/august-2012-upcoming-ci-environment-updates --- .travis.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.travis.yml b/.travis.yml index da67e37dbd0..bb4c4a79245 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,6 +9,8 @@ branches: - 'master' rvm: - 1.9.3 +services: + - mysql before_script: - "cp config/database.yml.$DB config/database.yml" - "cp config/gitlab.yml.example config/gitlab.yml" -- cgit v1.2.1 From 5cb9e7eedc24c418bbb3bce2f48a7c585f9cb439 Mon Sep 17 00:00:00 2001 From: randx Date: Fri, 7 Sep 2012 09:16:04 +0300 Subject: Fix emojii --- lib/gitlab/markdown.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/markdown.rb b/lib/gitlab/markdown.rb index 57b37764ce2..17f865bba70 100644 --- a/lib/gitlab/markdown.rb +++ b/lib/gitlab/markdown.rb @@ -95,7 +95,7 @@ module Gitlab text = text.gsub(EMOJI_PATTERN) do |match| if valid_emoji?($2) - helper.image_tag("#{$2}.png", size: "20x20", class: 'emoji', title: $1, alt: $1) + image_tag("emoji/#{$2}.png", size: "20x20", class: 'emoji', title: $1, alt: $1) else match end -- cgit v1.2.1