negarmoji 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Emoji
4
- class Character
3
+ module Emoji # :nodoc:
4
+ class Character # :nodoc:
5
5
  # Inspect individual Unicode characters in a string by dumping its
6
6
  # codepoints in hexadecimal format.
7
7
  def self.hex_inspect(str)
@@ -9,7 +9,9 @@ module Emoji
9
9
  end
10
10
 
11
11
  # True if the emoji is not a standard Emoji character.
12
- def custom?() !raw end
12
+ def custom?
13
+ !raw
14
+ end
13
15
 
14
16
  # A list of names uniquely referring to this emoji.
15
17
  attr_reader :aliases
@@ -26,7 +28,9 @@ module Emoji
26
28
  # The iOS version where this emoji first debuted
27
29
  attr_accessor :ios_version
28
30
 
29
- def name() aliases.first end
31
+ def name
32
+ aliases.first
33
+ end
30
34
 
31
35
  def add_alias(name)
32
36
  aliases << name
@@ -36,7 +40,9 @@ module Emoji
36
40
  attr_reader :unicode_aliases
37
41
 
38
42
  # Raw Unicode string for an emoji. Nil if emoji is non-standard.
39
- def raw() unicode_aliases.first end
43
+ def raw
44
+ unicode_aliases.first
45
+ end
40
46
 
41
47
  def add_unicode_alias(str)
42
48
  unicode_aliases << str
@@ -81,7 +87,7 @@ module Emoji
81
87
  if custom?
82
88
  "#{name}.#{extension}"
83
89
  else
84
- hex_name = hex_inspect.gsub(/-(fe0f|200d)\b/, '')
90
+ hex_name = hex_inspect.gsub(%r{-(fe0f|200d)\b}, "")
85
91
  "#{hex_name}.#{extension}"
86
92
  end
87
93
  end
@@ -1,18 +1,18 @@
1
- # encoding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
3
  require "negarmoji/character"
5
4
  require "json"
6
5
 
7
- module Emoji
6
+ module Emoji # :nodoc:
8
7
  extend self
9
8
 
10
9
  def data_file
11
- File.expand_path("../../../db/negarmoji.json", __FILE__)
10
+ File.expand_path("../../db/negarmoji.json", __dir__)
12
11
  end
13
12
 
14
13
  def all
15
14
  return @all if defined? @all
15
+
16
16
  @all = []
17
17
  parse_data_file
18
18
  @all
@@ -22,15 +22,15 @@ module Emoji
22
22
  # The character is added to the `Emoji.all` set.
23
23
  def create(name)
24
24
  emoji = Emoji::Character.new(name)
25
- self.all << edit_emoji(emoji) { yield emoji if block_given? }
25
+ all << edit_emoji(emoji) { yield emoji if block_given? }
26
26
  emoji
27
27
  end
28
28
 
29
29
  # Public: Yield an negarmoji to the block and update the indices in case its
30
30
  # aliases or unicode_aliases lists changed.
31
31
  def edit_emoji(emoji)
32
- @names_index ||= Hash.new
33
- @unicodes_index ||= Hash.new
32
+ @names_index ||= {}
33
+ @unicodes_index ||= {}
34
34
 
35
35
  yield emoji
36
36
 
@@ -55,158 +55,83 @@ module Emoji
55
55
  end
56
56
 
57
57
  private
58
- VARIATION_SELECTOR_16 = "\u{fe0f}".freeze
58
+
59
+ VARIATION_SELECTOR_16 = "\u{fe0f}"
59
60
 
60
61
  # Characters which must have VARIATION_SELECTOR_16 to render as color negarmoji:
61
- TEXT_GLYPHS = [
62
- "\u{1f237}", # Japanese monthly amount button
63
- "\u{1f202}", # Japanese service charge button
64
- "\u{1f170}", # A button (blood type)
65
- "\u{1f171}", # B button (blood type)
66
- "\u{1f17e}", # O button (blood type)
67
- "\u{00a9}", # copyright
68
- "\u{00ae}", # registered
69
- "\u{2122}", # trade mark
70
- "\u{3030}", # wavy dash
71
- "\u{263a}", # smiling face
72
- "\u{261D}", # index pointing up
73
- "\u{270C}", # victory hand
74
- "\u{270D}", # writing hand
75
- "\u{2764}", # red heart
76
- "\u{2763}", # heavy heart exclamation
77
- "\u{2668}", # hot springs
78
- "\u{2708}", # airplane
79
- "\u{2600}", # sun
80
- "\u{2601}", # cloud
81
- "\u{2602}", # umbrella
82
- "\u{2744}", # snowflake
83
- "\u{2603}", # snowman
84
- "\u{2660}", # spade suit
85
- "\u{2665}", # heart suit
86
- "\u{2666}", # diamond suit
87
- "\u{2663}", # club suit
88
- "\u{260e}", # telephone
89
- "\u{2709}", # envelope
90
- "\u{270F}", # pencil
91
- "\u{2712}", # black nib
92
- "\u{2702}", # scissors
93
- "\u{26a0}", # warning
94
- "\u{2B06}", # up arrow
95
- "\u{2197}", # up-right arrow
96
- "\u{27A1}", # right arrow
97
- "\u{2198}", # down-right arrow
98
- "\u{2B07}", # down arrow
99
- "\u{2199}", # down-left arrow
100
- "\u{2B05}", # left arrow
101
- "\u{2196}", # up-left arrow
102
- "\u{2195}", # up-down arrow
103
- "\u{2194}", # left-right arrow
104
- "\u{21A9}", # right arrow curving left
105
- "\u{21AA}", # left arrow curving right
106
- "\u{2934}", # right arrow curving up
107
- "\u{2935}", # right arrow curving down
108
- "\u{2721}", # star of David
109
- "\u{262F}", # yin yang
110
- "\u{271D}", # latin cross
111
- "\u{25B6}", # play button
112
- "\u{25C0}", # reverse button
113
- "\u{23CF}", # eject button
114
- "\u{2640}", # female sign
115
- "\u{2642}", # male sign
116
- "\u{267B}", # recycling symbol
117
- "\u{2611}", # ballot box with check
118
- "\u{2714}", # heavy check mark
119
- "\u{2716}", # heavy multiplication x
120
- "\u{303D}", # part alternation mark
121
- "\u{2733}", # eight-spoked asterisk
122
- "\u{2734}", # eight-pointed star
123
- "\u{2747}", # sparkle
124
- "\u{203C}", # double exclamation mark
125
- "\u{2049}", # exclamation question mark
126
- "\u{23}\u{20E3}", # keycap: #
127
- "\u{2A}\u{20E3}", # keycap: *
128
- "\u{30}\u{20E3}", # keycap: 0
129
- "\u{31}\u{20E3}", # keycap: 1
130
- "\u{32}\u{20E3}", # keycap: 2
131
- "\u{33}\u{20E3}", # keycap: 3
132
- "\u{34}\u{20E3}", # keycap: 4
133
- "\u{35}\u{20E3}", # keycap: 5
134
- "\u{36}\u{20E3}", # keycap: 6
135
- "\u{37}\u{20E3}", # keycap: 7
136
- "\u{38}\u{20E3}", # keycap: 8
137
- "\u{39}\u{20E3}", # keycap: 9
138
- "\u{2139}", # information
139
- "\u{24C2}", # circled M
140
- "\u{1F17F}", # P button
141
- "\u{3297}", # Japanese “congratulations” button
142
- "\u{3299}", # Japanese “secret” button
143
- "\u{25AA}", # black small square
144
- "\u{25AB}", # white small square
145
- "\u{25FB}", # white medium square
146
- "\u{25FC}", # black medium square
147
- ].freeze
148
-
149
- private_constant :VARIATION_SELECTOR_16, :TEXT_GLYPHS
150
-
151
- def parse_data_file
152
- data = File.open(data_file, "r:UTF-8") do |file|
153
- JSON.parse(file.read, symbolize_names: true)
154
- end
62
+ TEXT_GLYPHS = [
63
+ "\u{1f237}", # Japanese "monthly amount" button
64
+ "\u{1f202}", # Japanese "service charge" button
65
+ "\u{1f170}", # A button (blood type)
66
+ "\u{1f171}", # B button (blood type)
67
+ "\u{1f17e}", # O button (blood type)
68
+ "\u{00a9}", # copyright
69
+ "\u{00ae}", # registered
70
+ "\u{2122}", # trade mark
71
+ "\u{3030}" # wavy dash
72
+ ].freeze
73
+
74
+ private_constant :VARIATION_SELECTOR_16, :TEXT_GLYPHS
75
+
76
+ def parse_data_file
77
+ data = File.open(data_file, "r:UTF-8") do |file|
78
+ JSON.parse(file.read, :symbolize_names => true)
79
+ end
155
80
 
156
- if "".respond_to?(:-@)
157
- # Ruby >= 2.3 this is equivalent to .freeze
158
- # Ruby >= 2.5 this will freeze and dedup
159
- dedup = lambda { |str| -str }
160
- else
161
- dedup = lambda { |str| str.freeze }
162
- end
81
+ dedup = if "".respond_to?(:-@)
82
+ # Ruby >= 2.3 this is equivalent to .freeze
83
+ # Ruby >= 2.5 this will freeze and dedup
84
+ ->(str) { -str }
85
+ else
86
+ ->(str) { str.freeze }
87
+ end
163
88
 
164
- append_unicode = lambda do |emoji, raw|
165
- unless TEXT_GLYPHS.include?(raw) || emoji.unicode_aliases.include?(raw)
166
- emoji.add_unicode_alias(dedup.call(raw))
167
- end
89
+ append_unicode = lambda do |emoji, raw|
90
+ unless TEXT_GLYPHS.include?(raw) || emoji.unicode_aliases.include?(raw)
91
+ emoji.add_unicode_alias(dedup.call(raw))
168
92
  end
93
+ end
169
94
 
170
- data.each do |raw_emoji|
171
- self.create(nil) do |emoji|
172
- raw_emoji.fetch(:aliases).each { |name| emoji.add_alias(dedup.call(name)) }
173
- if (raw = raw_emoji[:emoji])
174
- append_unicode.call(emoji, raw)
175
- start_pos = 0
176
- while (found_index = raw.index(VARIATION_SELECTOR_16, start_pos))
177
- # register every variant where one VARIATION_SELECTOR_16 is removed
178
- raw_alternate = raw.dup
179
- raw_alternate[found_index] = ""
180
- append_unicode.call(emoji, raw_alternate)
181
- start_pos = found_index + 1
182
- end
183
- if start_pos > 0
184
- # register a variant with all VARIATION_SELECTOR_16 removed
185
- append_unicode.call(emoji, raw.gsub(VARIATION_SELECTOR_16, ""))
186
- else
187
- # register a variant where VARIATION_SELECTOR_16 is added
188
- append_unicode.call(emoji, "#{raw}#{VARIATION_SELECTOR_16}")
189
- end
95
+ data.each do |raw_emoji|
96
+ create(nil) do |emoji|
97
+ raw_emoji.fetch(:aliases).each { |name| emoji.add_alias(dedup.call(name)) }
98
+ if (raw = raw_emoji[:emoji])
99
+ append_unicode.call(emoji, raw)
100
+ start_pos = 0
101
+ while (found_index = raw.index(VARIATION_SELECTOR_16, start_pos))
102
+ # register every variant where one VARIATION_SELECTOR_16 is removed
103
+ raw_alternate = raw.dup
104
+ raw_alternate[found_index] = ""
105
+ append_unicode.call(emoji, raw_alternate)
106
+ start_pos = found_index + 1
107
+ end
108
+ if start_pos.positive?
109
+ # register a variant with all VARIATION_SELECTOR_16 removed
110
+ append_unicode.call(emoji, raw.gsub(VARIATION_SELECTOR_16, ""))
111
+ else
112
+ # register a variant where VARIATION_SELECTOR_16 is added
113
+ append_unicode.call(emoji, "#{raw}#{VARIATION_SELECTOR_16}")
190
114
  end
191
- raw_emoji.fetch(:tags).each { |tag| emoji.add_tag(dedup.call(tag)) }
192
-
193
- emoji.category = dedup.call(raw_emoji[:category])
194
- emoji.description = dedup.call(raw_emoji[:description])
195
- emoji.unicode_version = dedup.call(raw_emoji[:unicode_version])
196
- emoji.ios_version = dedup.call(raw_emoji[:ios_version])
197
115
  end
116
+ raw_emoji.fetch(:tags).each { |tag| emoji.add_tag(dedup.call(tag)) }
117
+
118
+ emoji.category = dedup.call(raw_emoji[:category])
119
+ emoji.description = dedup.call(raw_emoji[:description])
120
+ emoji.unicode_version = dedup.call(raw_emoji[:unicode_version])
121
+ emoji.ios_version = dedup.call(raw_emoji[:ios_version])
198
122
  end
199
123
  end
124
+ end
200
125
 
201
- def names_index
202
- all unless defined? @all
203
- @names_index
204
- end
126
+ def names_index
127
+ all unless defined? @all
128
+ @names_index
129
+ end
205
130
 
206
- def unicodes_index
207
- all unless defined? @all
208
- @unicodes_index
209
- end
131
+ def unicodes_index
132
+ all unless defined? @all
133
+ @unicodes_index
134
+ end
210
135
  end
211
136
 
212
137
  # Preload negarmoji into memory
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Emoji
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.3"
5
5
  end
data/logo.svg ADDED
@@ -0,0 +1,200 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="100mm" height="100mm" version="1.1" viewBox="0 0 100.001 100" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Negareh Emoji Library Logo</title>
4
+ <defs>
5
+ <polygon id="d" points="1 1 2 1 1 2"/>
6
+ <polygon id="c" points="-1 -1 -2 -1 -1 -2"/>
7
+ </defs>
8
+ <metadata>
9
+ <rdf:RDF>
10
+ <cc:Work rdf:about="">
11
+ <dc:format>image/svg+xml</dc:format>
12
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
13
+ <dc:title>Negareh Emoji Library Logo</dc:title>
14
+ <cc:license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/4.0/"/>
15
+ <dc:date>2019/11/27</dc:date>
16
+ <dc:creator>
17
+ <cc:Agent>
18
+ <dc:title>Mohammad Mahdi Baghbani Pourvahid</dc:title>
19
+ </cc:Agent>
20
+ </dc:creator>
21
+ <dc:publisher>
22
+ <cc:Agent>
23
+ <dc:title>Azadeh Afzar</dc:title>
24
+ </cc:Agent>
25
+ </dc:publisher>
26
+ <dc:source>OpenMoji</dc:source>
27
+ </cc:Work>
28
+ <cc:License rdf:about="http://creativecommons.org/licenses/by-nc-sa/4.0/">
29
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
30
+ <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
31
+ <cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/>
32
+ <cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/>
33
+ <cc:prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse"/>
34
+ <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
35
+ <cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/>
36
+ </cc:License>
37
+ </rdf:RDF>
38
+ </metadata>
39
+ <g transform="translate(-68.817 16.149)">
40
+ <g transform="matrix(2.0047 0 0 2.0047 -63.847 -89.535)">
41
+ <g transform="translate(0 -1.3339)">
42
+ <g transform="matrix(.26458 0 0 .26458 75.775 49.185)">
43
+ <circle cx="35.034" cy="36.051" r="23" fill="#fcea2b"/>
44
+ <path d="m25.533 27.489c-1.2653-3.3541-6.441-3.5687-6.1168 1.3178 0.0431 0.6485 0.281 1.2724 0.6414 1.8135l5.3179 6.4224 5.2212-6.266c0.5796-0.6964 0.9224-1.5779 0.905-2.4853-0.0863-4.3523-5.0509-4.0351-6.1274-0.8036" fill="#d22f27"/>
45
+ <path d="m44.835 27.489c-1.2547-3.3541-6.3873-3.5687-6.0658 1.3178 0.0428 0.6485 0.2787 1.2724 0.6361 1.8135l5.2737 6.4224 5.1777-6.266c0.5747-0.6964 0.9147-1.5779 0.8974-2.4853-0.0856-4.3523-5.0089-4.0351-6.0763-0.8036" fill="#d22f27"/>
46
+ <polygon points="40.572 44.181 22.558 43.423 24.905 50.12 30.624 52.777 39.103 52.777 44.576 50.12 46.692 47.272 47.39 43.423" fill="#fff"/>
47
+ <g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2">
48
+ <path d="m47.145 44.598"/>
49
+ <path d="m22.968 44.598"/>
50
+ <circle cx="35.034" cy="36.051" r="23"/>
51
+ <path d="m22.558 42.724s12.758 3.0979 24.894 0.0669"/>
52
+ <path d="m47.62 42.724c0 5.6296-4.1784 10.105-12.554 10.105-8.3738 0-12.607-4.4888-12.607-10.105"/>
53
+ <path d="m25.533 27.489c-1.2653-3.3541-6.441-3.5687-6.1168 1.3178 0.0431 0.6485 0.281 1.2724 0.6414 1.8135l5.3179 6.4224 5.2212-6.266c0.5796-0.6964 0.9224-1.5779 0.905-2.4853-0.0863-4.3523-5.0509-4.0351-6.1274-0.8036"/>
54
+ <path d="m44.835 27.489c-1.2547-3.3541-6.3873-3.5687-6.0658 1.3178 0.0428 0.6485 0.2787 1.2724 0.6361 1.8135l5.2737 6.4224 5.1777-6.266c0.5747-0.6964 0.9147-1.5779 0.8974-2.4853-0.0856-4.3523-5.0089-4.0351-6.0763-0.8036"/>
55
+ </g>
56
+ </g>
57
+ <g transform="matrix(.26458 0 0 .26458 97.867 38.332)">
58
+ <clipPath id="b">
59
+ <use width="100%" height="100%" overflow="visible" xlink:href="#d"/>
60
+ </clipPath>
61
+ <clipPath id="a" clip-path="url(#b)">
62
+ <use width="100%" height="100%" overflow="visible" xlink:href="#c"/>
63
+ </clipPath>
64
+ <rect x="8.6371" y="8.0565" width="55.25" height="56" clip-path="url(#a)" fill="#fcea2b"/>
65
+ <circle cx="35.887" cy="36.056" r="23" fill="#fcea2b"/>
66
+ <path d="m45.331 38.564c3.9628 0 7.1782-2.8618 7.1782-6.3889 0-1.7646 0.4473-3.5291-0.8519-4.6852s-4.3449-1.7037-6.3264-1.7037c-2.3567 0-5.1428 0.1434-6.4514 1.7037-0.8933 1.0652-0.7268 3.2534-0.7268 4.6852 1e-4 3.5271 3.2128 6.3889 7.1783 6.3889z" fill="#3f3f3f"/>
67
+ <path d="m25.738 38.564c3.9628 0 7.1782-2.8618 7.1782-6.3889 0-1.7646 0.4473-3.5291-0.8519-4.6852s-4.3449-1.7037-6.3264-1.7037c-2.3567 0-5.1428 0.1434-6.4514 1.7037-0.8933 1.0652-0.7268 3.2534-0.7268 4.6852 1e-4 3.5271 3.2128 6.3889 7.1783 6.3889z" fill="#3f3f3f"/>
68
+ <path d="m33.816 35.632" fill="#9b9b9a" stroke="#9b9b9a" stroke-miterlimit="10" stroke-width="2"/>
69
+ <g fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2">
70
+ <circle cx="35.887" cy="36.056" r="23"/>
71
+ <path d="m45.702 44.862c-6.574 3.5248-14.045 3.6576-19.63 0"/>
72
+ <path d="m18.883 30.464s-0.953 8.5508 6.8608 7.9185c2.6197-0.212 7.8164-0.6507 7.867-8.3427 0.0046-0.6979-0.0078-1.5989-0.8108-2.6298-1.0647-1.3669-3.5716-1.9711-9.9446-1.422 1e-4 1e-4 -3.4462-0.099-3.9724 4.476z"/>
73
+ <polyline points="18.953 29.931 18.52 26.559 22.353 26.032"/>
74
+ <path d="m52.741 30.464s0.953 8.5508-6.8608 7.9185c-2.6197-0.212-7.8164-0.6507-7.867-8.3427-0.0046-0.6979 0.0078-1.5989 0.8108-2.6298 1.0647-1.3669 3.5716-1.9711 9.9446-1.422 0 1e-4 3.4463-0.099 3.9724 4.476z"/>
75
+ <path d="m31.505 26.416s4.1241 2.5339 8.6569 0"/>
76
+ <path d="m38.014 30.04"/>
77
+ <path d="m33.61 30.04"/>
78
+ <path d="m33.536 31.318s2.2019-3.7509 4.5362 0"/>
79
+ <polyline points="52.664 29.933 53.097 26.562 49.264 26.034"/>
80
+ <path d="m33.955 30.027s1.7954-3.7509 3.6988 0"/>
81
+ </g>
82
+ </g>
83
+ <g transform="matrix(.26458 0 0 .26458 67.864 38.114)">
84
+ <circle cx="35.782" cy="36.8" r="23.928" fill="#fcea2b"/>
85
+ <path d="m50.46 43.15c0 1.59-0.29 3.11-0.87 4.49-12.49 3.03-25.43 0.34-27.49-0.13-0.55-1.34-0.83-2.81-0.83-4.36h0.11s14.8 3.59 28.89 0.07z" fill="#fff"/>
86
+ <path d="m49.59 47.64c-1.79 4.27-6.35 7.23-13.69 7.23-7.41 0-12.03-3.03-13.8-7.36 2.06 0.4699 15 3.1599 27.49 0.13z" fill="#ea5a47"/>
87
+ <path d="m14.446 39.904c-1.8659 0.1575-5.6386 0.7325-7.7337 2.8276-0.6567 0.6547-1.0168 1.5262-1.0168 2.451 0 0.9268 0.3601 1.7984 1.0168 2.4552 1.3115 1.3114 3.5968 1.3114 4.9062 0 2.095-2.0951 2.6699-5.8679 2.8275-7.7338z" fill="#92d3f5"/>
88
+ <path d="m59.582 47.638c1.3094 1.3114 3.5947 1.3114 4.9062 0 0.6567-0.6568 1.0168-1.5283 1.0168-2.4552 0-0.9248-0.3601-1.7963-1.0168-2.451-2.095-2.0951-5.8678-2.67-7.7337-2.8276 0.1576 1.866 0.7325 5.6388 2.8275 7.7338z" fill="#92d3f5"/>
89
+ <path d="m34.682 29.837" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
90
+ <path d="m34.682 30.473" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
91
+ <path d="m58.629 34.141c-0.0064-0.0559-0.0131-0.1118-0.0199-0.1675-1.3934-11.369-11.083-20.173-22.828-20.173-11.622 0-21.245 8.7256-22.796 19.92-0.0148 0.1069-0.0386 0.3127-0.052 0.4201" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
92
+ <path d="m16.965 50.029c4.179 5.7684 11.149 9.771 18.817 9.771 7.6676 0 14.578-3.9186 18.757-9.6871" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
93
+ <path d="m31.576 36.994c-0.3672 0-0.7207-0.2032-0.8965-0.5528-0.0098-0.0195-1.2129-2.3222-3.418-2.3222-2.2305 0-3.4062 2.2988-3.418 2.3222-0.2461 0.4942-0.8457 0.6934-1.3418 0.4473-0.4941-0.2481-0.6933-0.8477-0.4472-1.3418 0.0703-0.1406 1.7539-3.4277 5.207-3.4277s5.1367 3.2871 5.207 3.4277c0.2481 0.4941 0.0469 1.0937-0.4472 1.3418-0.1426 0.0703-0.2969 0.1055-0.4453 0.1055z"/>
94
+ <path d="m48.826 36.994c-0.3672 0-0.7207-0.2032-0.8965-0.5528-0.0098-0.0195-1.2129-2.3222-3.418-2.3222-2.2305 0-3.4062 2.2988-3.418 2.3222-0.2461 0.4942-0.8457 0.6934-1.3418 0.4473-0.4941-0.2481-0.6933-0.8477-0.4472-1.3418 0.0703-0.1406 1.7539-3.4277 5.207-3.4277s5.1367 3.2871 5.207 3.4277c0.2481 0.4941 0.0469 1.0937-0.4472 1.3418-0.1426 0.0703-0.2969 0.1055-0.4453 0.1055z"/>
95
+ <path d="m9.165 50.75c-1.4854 0-2.8827-0.5791-3.9344-1.6307-1.0516-1.0516-1.6306-2.449-1.6306-3.9364 0-1.4854 0.579-2.8827 1.6306-3.9323 3.4618-3.4618 10.044-3.5006 10.322-3.5006 0.579 0 1.0475 0.4686 1.0475 1.0475 0 0.2782-0.0388 6.86-3.5006 10.322-1.0496 1.0517-2.447 1.6307-3.9344 1.6307zm5.2806-10.846c-1.8659 0.1575-5.6386 0.7325-7.7337 2.8276-0.6567 0.6547-1.0168 1.5262-1.0168 2.451 0 0.9268 0.3601 1.7984 1.0168 2.4552 1.3115 1.3114 3.5968 1.3114 4.9062 0 2.095-2.0951 2.6699-5.8679 2.8275-7.7338z"/>
96
+ <path d="m58.101 49.119c-3.4618-3.4617-3.5006-10.044-3.5006-10.322 0-0.579 0.4686-1.0475 1.0475-1.0475 0.2783 0 6.8601 0.0389 10.322 3.5006 1.0516 1.0496 1.6306 2.4469 1.6306 3.9322 0 1.4874-0.579 2.8848-1.6306 3.9364-1.0517 1.0516-2.449 1.6307-3.9344 1.6307-1.4874 0-2.8848-0.579-3.9344-1.6307zm1.4813-1.4812c1.3094 1.3114 3.5947 1.3114 4.9062 0 0.6567-0.6568 1.0168-1.5283 1.0168-2.4552 0-0.9248-0.3601-1.7963-1.0168-2.451-2.095-2.0951-5.8678-2.67-7.7337-2.8276 0.1576 1.866 0.7325 5.6388 2.8275 7.7338z"/>
97
+ <path d="m20.124 29c0.7207-1.3857 1.9278-2.4541 3.3907-3 1.4052-0.7002 3.0205-0.8486 4.5302-0.4209" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
98
+ <path d="m50.735 29c-1.582-2.7724-4.8037-4.1699-7.9092-3.4306" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
99
+ <path d="m50.46 43.15c0 1.59-0.29 3.11-0.87 4.49-12.49 3.03-25.43 0.34-27.49-0.13-0.55-1.34-0.83-2.81-0.83-4.36h0.11s14.8 3.59 28.89 0.07z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
100
+ <path d="m49.59 47.64c-1.79 4.27-6.35 7.23-13.69 7.23-7.41 0-12.03-3.03-13.8-7.36 2.06 0.4699 15 3.1599 27.49 0.13z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
101
+ </g>
102
+ <g transform="matrix(.26458 0 0 .26458 83.663 37.469)">
103
+ <path d="m34.109 61c12.702 0 23-10.165 23-22.703 0-5.6768-2.1107-10.867-5.5995-14.847-0.0837-0.0955-0.1683-0.1904-0.2536-0.2845-1.2483-1.3773-2.6643-2.6032-4.2165-3.6466-3.6847-2.4769-8.1363-3.9248-12.93-3.9248-12.703 0-23 10.164-23 22.703 0 12.538 10.297 22.703 23 22.703z" fill="#fcea2b"/>
104
+ <path d="m34.109 61c12.702 0 23-10.165 23-22.703 0-5.6768-2.1107-10.867-5.5995-14.847-0.0837-0.0955-0.1683-0.1904-0.2536-0.2845-1.2483-1.3773-2.6643-2.6032-4.2165-3.6466-3.6847-2.4769-8.1363-3.9248-12.93-3.9248-12.703 0-23 10.164-23 22.703 0 12.538 10.297 22.703 23 22.703z" fill="none" stroke="#fcea2b" stroke-miterlimit="10" stroke-width="1.8"/>
105
+ <path d="m43.924 47.4c-5.8513 4.7083-14.1 4.6878-19.63 0" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
106
+ <path d="m29.993 36.787c-0.3672 0-0.7207-0.2032-0.8965-0.5528-0.0098-0.0195-1.2129-2.3222-3.418-2.3222-2.2305 0-3.4062 2.2988-3.418 2.3222-0.2461 0.4942-0.8457 0.6934-1.3418 0.4473-0.4941-0.2481-0.6933-0.8477-0.4472-1.3418 0.0703-0.1406 1.7539-3.4277 5.207-3.4277s5.1367 3.2871 5.207 3.4277c0.2481 0.4941 0.0469 1.0937-0.4472 1.3418-0.1426 0.0704-0.2969 0.1055-0.4453 0.1055z"/>
107
+ <path d="m47.243 36.787c-0.3672 0-0.7207-0.2032-0.8965-0.5528-0.0098-0.0195-1.2129-2.3222-3.418-2.3222-2.2305 0-3.4062 2.2988-3.418 2.3222-0.2461 0.4942-0.8457 0.6934-1.3418 0.4473-0.4941-0.2481-0.6933-0.8477-0.4472-1.3418 0.0703-0.1406 1.7539-3.4277 5.207-3.4277s5.1367 3.2871 5.207 3.4277c0.2481 0.4941 0.0469 1.0937-0.4472 1.3418-0.1426 0.0704-0.2969 0.1055-0.4453 0.1055z"/>
108
+ <path d="m45.88 18.664c-3.4345-2.0487-7.4493-3.2257-11.739-3.2257-4.2227 0-8.179 1.1403-11.578 3.1299" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
109
+ <path d="m15.821 24.564c-2.9048 3.8443-4.6276 8.6317-4.6276 13.822-1e-4 12.674 10.273 22.948 22.948 22.948 12.674 1e-4 22.948-10.274 22.948-22.948 0-5.2484-1.7617-10.085-4.7262-13.951" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
110
+ <ellipse cx="34" cy="17" rx="25" ry="5.2885" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/>
111
+ <ellipse cx="34" cy="17" rx="25" ry="5.2885" fill="none" stroke="#61b2e4" stroke-miterlimit="10" stroke-width="2.1"/>
112
+ </g>
113
+ <g transform="matrix(.26458 0 0 .26458 90.094 49.082)">
114
+ <circle cx="37.03" cy="36.4" r="22.569" fill="#fcea2b"/>
115
+ <path d="m53.698 44.439c-1.9101-0.5703-3.9277 0.5201-4.498 2.4301-0.1899 0.6362-0.2018 1.3099-0.0342 1.948l0.111 0.3522 3.797 9.7215 8.5568-6.0862c0.6097-0.4613 1.0532-1.1008 1.275-1.8435 0.5703-1.91-0.5199-3.9283-2.4306-4.4987-1.3381-0.3995-2.7576-0.0041-3.7038 1.0317-0.0808 0.0887-0.2057 0.1237-0.3214 0.0892-0.1151-0.0344-0.2004-0.1321-0.2199-0.2508-0.2229-1.3849-1.1932-2.4938-2.5319-2.8935z" fill="#d22f27"/>
116
+ <path d="m49.549 47.429" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
117
+ <path d="m21.275 30.056c0.4075-1.5078 1.358-2.8098 2.6702-3.656 1.2228-0.9847 2.769-1.4753 4.3352-1.3805" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
118
+ <path d="m51.744 31.12c-2.2698-2.2443-5.7488-2.7231-8.5407-1.1752" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
119
+ <path d="m47.728 35.911c-0.8065-0.4709-1.7748-0.9088-2.8803-0.9263-1.1197-0.0177-2.1249 0.3098-3.1914 0.7782" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
120
+ <path d="m59.056 41.412c0.4107-1.7201 0.6282-3.5153 0.6282-5.3612 0-12.703-10.298-23-23-23-12.703 0-23 10.297-23 23 0 12.702 10.297 23 23 23 3.6206 0 7.0459-0.8367 10.093-2.3272" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
121
+ <circle cx="28.724" cy="35.357" r="2.5549"/>
122
+ <path d="m37.099 42.142s10.525 3.1956 0 5.5637c0 0 10.458 2.9883 0 4.9125" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
123
+ <path d="m52.838 59.681c-0.0922-0.0275-0.1669-0.0965-0.2021-0.1863l-3.9508-10.116-0.1223-0.387c-0.2011-0.7638-0.1868-1.5548 0.036-2.301 0.6693-2.2418 3.0375-3.521 5.2787-2.8519 1.3869 0.4141 2.4365 1.4756 2.8438 2.836 1.087-0.9142 2.5469-1.2265 3.9332-0.8126 2.2424 0.6695 3.5216 3.0377 2.8523 5.2795-0.2602 0.8716-0.781 1.622-1.5054 2.1699l-8.8916 6.3252c-0.0787 0.0557-0.179 0.0724-0.2718 0.0447zm0.86-15.242c-1.9101-0.5703-3.9277 0.5201-4.498 2.4301-0.1899 0.6362-0.2018 1.3099-0.0342 1.948l0.111 0.3522 3.797 9.7215 8.5568-6.0862c0.6097-0.4613 1.0532-1.1008 1.275-1.8435 0.5703-1.91-0.5199-3.9283-2.4306-4.4987-1.3381-0.3995-2.7576-0.0041-3.7038 1.0317-0.0808 0.0887-0.2057 0.1237-0.3214 0.0892-0.1151-0.0344-0.2004-0.1321-0.2199-0.2508-0.2229-1.3849-1.1932-2.4938-2.5319-2.8935z" fill="none" stroke="#000" stroke-miterlimit="10"/>
124
+ </g>
125
+ </g>
126
+ <g transform="matrix(1.9426 0 0 1.9426 -27.201 -11.684)">
127
+ <g transform="matrix(.85101 0 0 .85101 28.652 27.699)">
128
+ <g transform="matrix(.35278 0 0 -.35278 33.489 16.876)">
129
+ <path d="m0 0h-4v-7h4" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
130
+ </g>
131
+ <g transform="matrix(.35278 0 0 -.35278 32.078 18.111)">
132
+ <path d="m0 0h3" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
133
+ </g>
134
+ </g>
135
+ </g>
136
+ <g transform="matrix(1.6509 0 0 1.6509 59.026 42.171)">
137
+ <g transform="matrix(.35278 0 0 -.35278 21.495 19.345)">
138
+ <path d="m0 0-3 7-3-7" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
139
+ </g>
140
+ <g transform="matrix(.35278 0 0 -.35278 19.731 18.754)">
141
+ <path d="m0 0h4" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
142
+ </g>
143
+ </g>
144
+ <g transform="matrix(1.648 0 0 1.648 40.818 42.226)">
145
+ <g transform="matrix(.35278 0 0 -.35278 40.545 16.876)">
146
+ <path d="m0 0v-7" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
147
+ </g>
148
+ <g transform="matrix(.35278 0 0 -.35278 41.956 16.876)">
149
+ <path d="m0 0v-7" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
150
+ </g>
151
+ <path d="m41.956 18.106h-1.4111" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width=".70556"/>
152
+ </g>
153
+ <g transform="matrix(.58141 0 0 -.58141 75.938 74.108)">
154
+ <path d="m0 0v7l5-7v7" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
155
+ </g>
156
+ <g transform="matrix(.58322 0 0 -.58322 88.15 70.4)">
157
+ <path d="m0 0c-0.441 0.392-1.022 0.629-1.659 0.629-1.38 0-2.5-1.119-2.5-2.5v-2c0-1.38 1.12-2.5 2.5-2.5 1.381 0 2.5 1.12 2.5 2.5v1.014h-2" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
158
+ </g>
159
+ <g transform="matrix(1.6506 0 0 1.6506 -26.639 34.574)">
160
+ <g transform="matrix(.35278 0 0 -.35278 75.126 23.951)">
161
+ <path d="m0 0v7h2.669c0.963 0 1.744-0.781 1.744-1.744s-0.781-1.743-1.744-1.743h-2.669" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
162
+ </g>
163
+ <g transform="matrix(.35278 0 0 -.35278 76.072 22.712)">
164
+ <path d="m0 0 1.517-3.513" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
165
+ </g>
166
+ </g>
167
+ <g transform="matrix(1.9426 0 0 1.9426 -6.0344 -11.684)">
168
+ <g transform="matrix(.85101 0 0 .85101 28.652 27.699)">
169
+ <g transform="matrix(.35278 0 0 -.35278 33.489 16.876)">
170
+ <path d="m0 0h-4v-7h4" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
171
+ </g>
172
+ <g transform="matrix(.35278 0 0 -.35278 32.078 18.111)">
173
+ <path d="m0 0h3" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
174
+ </g>
175
+ </g>
176
+ </g>
177
+ <g transform="matrix(.58232 0 0 -.58232 88.53 83.26)">
178
+ <path d="m0 0v7l-3-6-3 6v-7" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
179
+ </g>
180
+ <g transform="matrix(.58322 0 0 -.58322 92.763 83.26)">
181
+ <path d="m0 0v0c-1.38 0-2.5 1.119-2.5 2.5v2c0 1.381 1.12 2.5 2.5 2.5 1.381 0 2.5-1.119 2.5-2.5v-2c0-1.381-1.119-2.5-2.5-2.5z" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
182
+ </g>
183
+ <g transform="matrix(.5823 0 0 -.5823 98.924 78.981)">
184
+ <path d="m0 0v-4.5c0-1.381-1.119-2.5-2.5-2.5-0.643 0-1.229 0.243-1.673 0.642" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
185
+ </g>
186
+ <g transform="matrix(1.9426 0 0 1.9426 -28.635 -2.5312)">
187
+ <g transform="matrix(.85101 0 0 .85101 28.652 27.699)">
188
+ <g transform="matrix(.35278 0 0 -.35278 33.489 16.876)">
189
+ <path d="m0 0h-4v-7h4" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
190
+ </g>
191
+ <g transform="matrix(.35278 0 0 -.35278 32.078 18.111)">
192
+ <path d="m0 0h3" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2"/>
193
+ </g>
194
+ </g>
195
+ </g>
196
+ <path d="m101.76 78.956v4.3044" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width=".93151"/>
197
+ </g>
198
+ </g>
199
+ </svg>
200
+