Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget) - Version 1.0.1

Version Description

  • Fix: Some minor issues
Download this release

Release Info

Developer thehappymonster
Plugin Icon 128x128 Happy Addons for Elementor (Mega Menu, Post Grid, Woocommerce Product Grid, Table, Event Calendar, Slider Elementor Widget)
Version 1.0.1
Comparing to
See all releases

Code changes from version 0.0.1 to 1.0.1

Files changed (72) hide show
  1. addons/class-addon-base.php +0 -70
  2. addons/class-blurb.php +0 -655
  3. addons/class-icon-box.php +0 -349
  4. assets/admin/css/main.css +37 -0
  5. assets/admin/css/main.min.css +1 -0
  6. assets/admin/js/happy-addons.js +12 -0
  7. assets/admin/js/happy-addons.min.js +1 -0
  8. assets/css/main.css +397 -80
  9. assets/css/main.min.css +1 -1
  10. assets/dev/admin/js/happy-addon.js +12 -0
  11. assets/dev/admin/sass/main.scss +27 -0
  12. assets/dev/js/happy-addons.js +140 -0
  13. assets/dev/sass/_btn.scss +28 -0
  14. assets/dev/sass/_card.scss +146 -0
  15. assets/dev/sass/_common.scss +28 -0
  16. assets/dev/sass/_dual-btn.scss +83 -0
  17. assets/dev/sass/_gallery-filter.scss +39 -0
  18. assets/dev/sass/_gradient-heading.scss +9 -0
  19. assets/dev/sass/_icon-box.scss +48 -0
  20. assets/dev/sass/_image-comparison.scss +9 -0
  21. assets/dev/sass/_image-grid.scss +184 -0
  22. assets/dev/sass/_infobox.scss +48 -0
  23. assets/dev/sass/_justified-gallery.scss +48 -0
  24. assets/dev/sass/_link.scss +23 -0
  25. assets/dev/sass/_logo-grid.scss +97 -0
  26. assets/dev/sass/_member.scss +61 -0
  27. assets/dev/sass/_mixins.scss +15 -0
  28. assets/dev/sass/_review.scss +138 -0
  29. assets/dev/sass/_skills.scss +69 -0
  30. assets/dev/sass/_slider-carousel.scss +110 -0
  31. assets/dev/sass/_testimonial.scss +89 -0
  32. assets/dev/sass/_variables.scss +2 -0
  33. assets/dev/sass/main.scss +21 -0
  34. assets/fonts/Happy-Addons-Icon.eot +0 -0
  35. assets/fonts/Happy-Addons-Icon.svg +409 -0
  36. assets/fonts/Happy-Addons-Icon.ttf +0 -0
  37. assets/fonts/Happy-Addons-Icon.woff +0 -0
  38. assets/fonts/style.css +1223 -0
  39. assets/fonts/style.min.css +1 -0
  40. assets/imgs/happy-addons-placeholder-small.jpg +0 -0
  41. assets/imgs/placeholder.jpg +0 -0
  42. assets/js/happy-addons.js +140 -0
  43. assets/js/happy-addons.min.js +1 -0
  44. assets/vendor/anime/LICENSE.md +9 -0
  45. assets/vendor/anime/README.md +109 -0
  46. assets/vendor/anime/lib/anime.es.js +1296 -0
  47. assets/vendor/anime/lib/anime.js +1298 -0
  48. assets/vendor/anime/lib/anime.min.js +8 -0
  49. assets/vendor/twentytwenty/.gitignore +5 -0
  50. assets/vendor/twentytwenty/css/twentytwenty.css +223 -0
  51. assets/vendor/twentytwenty/js/jquery.event.move.js +599 -0
  52. assets/vendor/twentytwenty/js/jquery.twentytwenty.js +151 -0
  53. base.php +21 -46
  54. base/widget-base.php +161 -0
  55. classes/asset-manager.php +148 -0
  56. classes/widget-manager.php +411 -0
  57. controls/foreground.php +252 -0
  58. inc/functions.php +193 -0
  59. inc/happy-icons.php +409 -0
  60. plugin.php +7 -3
  61. readme.txt +48 -11
  62. widgets/calderaform/widget.php +545 -0
  63. addons/class-card.php → widgets/card/widget.php +387 -228
  64. addons/class-cf7.php → widgets/cf7/widget.php +75 -95
  65. widgets/gradient-heading/widget.php +252 -0
  66. widgets/icon-box/widget.php +753 -0
  67. widgets/image-compare/widget.php +590 -0
  68. widgets/infobox/widget.php +841 -0
  69. widgets/member/widget.php +964 -0
  70. widgets/review/widget.php +791 -0
  71. widgets/skills/widget.php +331 -0
  72. widgets/weform/widget.php +601 -0
addons/class-addon-base.php DELETED
@@ -1,70 +0,0 @@
1
- <?php
2
- /**
3
- * Addon base
4
- *
5
- * @package Happy_Addons
6
- */
7
- namespace Happy_Addons\Elementor\Addons;
8
-
9
- use Elementor\Widget_Base;
10
-
11
- defined( 'ABSPATH' ) || die();
12
-
13
- abstract class Addon_Base extends Widget_Base {
14
-
15
- /**
16
- * Get widget name.
17
- *
18
- * @since 1.0.0
19
- * @access public
20
- *
21
- * @return string Widget name.
22
- */
23
- public function get_name() {
24
- /**
25
- * Automatically generate widget name from class
26
- *
27
- * Card will be card
28
- * Blog_Card will be blog-card
29
- */
30
- $name = str_replace( __NAMESPACE__, '', $this->get_class_name() );
31
- $name = str_replace( '_', '-', $name );
32
- $name = ltrim( $name, '\\' );
33
- $name = strtolower( $name );
34
- return 'ha-' . $name;
35
- }
36
-
37
- /**
38
- * Get widget categories.
39
- *
40
- * @since 1.0.0
41
- * @access public
42
- *
43
- * @return array Widget categories.
44
- */
45
- public function get_categories() {
46
- return [ 'happy_addons' ];
47
- }
48
-
49
- /**
50
- * Override from addon to add custom wrapper class.
51
- *
52
- * @return string
53
- */
54
- protected function get_custom_wrapper_class() {
55
- return '';
56
- }
57
-
58
- /**
59
- * Overriding default function to add custom html class.
60
- *
61
- * @return string
62
- */
63
- public function get_html_wrapper_class() {
64
- $html_class = parent::get_html_wrapper_class();
65
- $html_class .= ' happy-addon';
66
- $html_class .= ' ' . $this->get_name();
67
- $html_class .= ' ' . $this->get_custom_wrapper_class();
68
- return rtrim( $html_class );
69
- }
70
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
addons/class-blurb.php DELETED
@@ -1,655 +0,0 @@
1
- <?php
2
- /**
3
- * Blurb addon class
4
- *
5
- * @package Happy_Addons
6
- */
7
- namespace Happy_Addons\Elementor\Addons;
8
-
9
- use Elementor\Control_Media;
10
- use Elementor\Group_Control_Border;
11
- use Elementor\Group_Control_Box_Shadow;
12
- use Elementor\Group_Control_Image_Size;
13
- use Elementor\Group_Control_Typography;
14
- use Elementor\Controls_Manager;
15
- use Elementor\Utils;
16
-
17
- defined( 'ABSPATH' ) || die();
18
-
19
- class Blurb extends Addon_Base {
20
-
21
- /**
22
- * Get widget title.
23
- *
24
- * @since 1.0.0
25
- * @access public
26
- *
27
- * @return string Widget title.
28
- */
29
- public function get_title() {
30
- return __( 'Happy Blurb', 'happy_addons' );
31
- }
32
-
33
- /**
34
- * Get widget icon.
35
- *
36
- * @since 1.0.0
37
- * @access public
38
- *
39
- * @return string Widget icon.
40
- */
41
- public function get_icon() {
42
- return 'fa fa-smile-o';
43
- }
44
-
45
- public function get_keywords() {
46
- return [ 'info', 'blub', 'box', 'text', 'content' ];
47
- }
48
-
49
- protected function _register_controls() {
50
- $this->start_controls_section(
51
- 'media_section',
52
- [
53
- 'label' => __( 'Media (Icon/Image)', 'happy_addons' ),
54
- 'tab' => Controls_Manager::TAB_CONTENT,
55
- ]
56
- );
57
-
58
- $this->add_control(
59
- 'type',
60
- [
61
- 'label' => __( 'Type', 'happy_addons' ),
62
- 'type' => Controls_Manager::CHOOSE,
63
- 'options' => [
64
- 'icon' => [
65
- 'title' => __( 'Icon', 'happy_addons' ),
66
- 'icon' => 'fa fa-font-awesome',
67
- ],
68
- 'image' => [
69
- 'title' => __( 'Image', 'happy_addons' ),
70
- 'icon' => 'fa fa-image',
71
- ],
72
- ],
73
- 'default' => 'icon',
74
- 'toggle' => false,
75
- ]
76
- );
77
-
78
- $this->add_control(
79
- 'image',
80
- [
81
- 'label' => __( 'Image', 'happy_addons' ),
82
- 'type' => Controls_Manager::MEDIA,
83
- 'default' => [
84
- 'url' => Utils::get_placeholder_image_src(),
85
- ],
86
- 'condition' => [
87
- 'type' => 'image'
88
- ]
89
- ]
90
- );
91
-
92
- $this->add_group_control(
93
- Group_Control_Image_Size::get_type(),
94
- [
95
- 'name' => 'image',
96
- 'default' => 'thumbnail',
97
- 'separator' => 'none',
98
- 'exclude' => [
99
- 'full',
100
- 'custom',
101
- 'large',
102
- 'shop_catalog',
103
- 'shop_single',
104
- 'shop_thumbnail'
105
- ],
106
- 'condition' => [
107
- 'type' => 'image'
108
- ]
109
- ]
110
- );
111
-
112
- $this->add_control(
113
- 'icon',
114
- [
115
- 'label' => __( 'Icon', 'happy_addons' ),
116
- 'type' => Controls_Manager::ICON,
117
- 'default' => 'fa fa-smile-o',
118
- 'condition' => [
119
- 'type' => 'icon'
120
- ]
121
- ]
122
- );
123
-
124
- $this->end_controls_section();
125
-
126
- $this->start_controls_section(
127
- 'title_section',
128
- [
129
- 'label' => __( 'Title & Description', 'happy_addons' ),
130
- 'tab' => Controls_Manager::TAB_CONTENT,
131
- ]
132
- );
133
-
134
- $this->add_control(
135
- 'title',
136
- [
137
- 'label' => __( 'Title', 'happy_addons' ),
138
- 'label_block' => true,
139
- 'type' => Controls_Manager::TEXT,
140
- 'default' => __( 'Default title', 'happy_addons' ),
141
- 'placeholder' => __( 'Type your blurb title', 'happy_addons' ),
142
- ]
143
- );
144
-
145
- $this->add_control(
146
- 'description',
147
- [
148
- 'label' => __( 'Description', 'happy_addons' ),
149
- 'type' => Controls_Manager::TEXTAREA,
150
- 'default' => __( 'Default description', 'happy_addons' ),
151
- 'placeholder' => __( 'Type your blurb description', 'happy_addons' ),
152
- 'rows' => 5
153
- ]
154
- );
155
-
156
- $this->add_control(
157
- 'title_tag',
158
- [
159
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
160
- 'type' => Controls_Manager::SELECT,
161
- 'options' => [
162
- 'h1' => __( 'H1', 'happy_addons' ),
163
- 'h2' => __( 'H2', 'happy_addons' ),
164
- 'h3' => __( 'H3', 'happy_addons' ),
165
- 'h4' => __( 'H4', 'happy_addons' ),
166
- 'h5' => __( 'H5', 'happy_addons' ),
167
- 'h6' => __( 'H6', 'happy_addons' ),
168
- ],
169
- 'default' => 'h2',
170
- ]
171
- );
172
-
173
- $this->add_responsive_control(
174
- 'align',
175
- [
176
- 'label' => __( 'Alignment', 'happy_addons' ),
177
- 'type' => Controls_Manager::CHOOSE,
178
- 'options' => [
179
- 'left' => [
180
- 'title' => __( 'Left', 'happy_addons' ),
181
- 'icon' => 'fa fa-align-left',
182
- ],
183
- 'center' => [
184
- 'title' => __( 'Center', 'happy_addons' ),
185
- 'icon' => 'fa fa-align-center',
186
- ],
187
- 'right' => [
188
- 'title' => __( 'Right', 'happy_addons' ),
189
- 'icon' => 'fa fa-align-right',
190
- ],
191
- ],
192
- 'desktop_default' => 'left',
193
- 'toggle' => false,
194
- 'devices' => [ 'desktop', 'tablet', 'mobile' ],
195
- 'prefix_class' => 'ha-text--%s'
196
- ]
197
- );
198
-
199
- $this->end_controls_section();
200
-
201
- $this->start_controls_section(
202
- 'link_section',
203
- [
204
- 'label' => __( 'Link', 'happy_addons' ),
205
- 'tab' => Controls_Manager::TAB_CONTENT,
206
- ]
207
- );
208
-
209
- $this->add_control(
210
- 'link_text',
211
- [
212
- 'label' => __( 'Text', 'happy_addons' ),
213
- 'type' => Controls_Manager::TEXT,
214
- 'default' => __( 'Default text', 'happy_addons' ),
215
- 'placeholder' => __( 'Type your link text', 'happy_addons' ),
216
- ]
217
- );
218
-
219
- $this->add_control(
220
- 'link_url',
221
- [
222
- 'label' => __( 'URL', 'happy_addons' ),
223
- 'type' => Controls_Manager::URL,
224
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
225
- 'default' => [
226
- 'url' => '#',
227
- ],
228
- ]
229
- );
230
-
231
- $this->end_controls_section();
232
-
233
- $this->start_controls_section(
234
- 'media_style',
235
- [
236
- 'label' => __( 'Media (Icon/Image)', 'happy_addons' ),
237
- 'tab' => Controls_Manager::TAB_STYLE,
238
- ]
239
- );
240
-
241
- $this->add_responsive_control(
242
- 'media_size',
243
- [
244
- 'label' => __( 'Size', 'happy_addons' ),
245
- 'type' => Controls_Manager::SLIDER,
246
- 'default' => [
247
- 'unit' => 'px',
248
- ],
249
- 'tablet_default' => [
250
- 'unit' => 'px',
251
- ],
252
- 'mobile_default' => [
253
- 'unit' => 'px',
254
- ],
255
- 'size_units' => [ 'px', 'em', '%'],
256
- 'range' => [
257
- '%' => [
258
- 'min' => 1,
259
- 'max' => 40,
260
- ],
261
- 'px' => [
262
- 'min' => 1,
263
- 'max' => 250,
264
- ],
265
- 'em' => [
266
- 'min' => 1,
267
- 'max' => 20,
268
- ],
269
- ],
270
- 'selectors' => [
271
- '{{WRAPPER}} .ha-blurb-figure--image' => 'width: {{SIZE}}{{UNIT}};',
272
- '{{WRAPPER}} .ha-blurb-figure--icon > i' => 'font-size: {{SIZE}}{{UNIT}};',
273
- ],
274
- ]
275
- );
276
-
277
- $this->add_responsive_control(
278
- 'media_offset',
279
- [
280
- 'label' => __( 'Offset', 'happy_addons' ),
281
- 'type' => Controls_Manager::DIMENSIONS,
282
- 'size_units' => [ 'px', '%' ],
283
- 'allowed_dimensions' => ['top', 'left'],
284
- 'selectors' => [
285
- '{{WRAPPER}} .ha-blurb-figure' => '-ms-transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}}); -webkit-transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}}); transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}});',
286
- '{{WRAPPER}} .ha-blurb-body' => 'margin-top: {{TOP}}{{UNIT}};',
287
- ],
288
- 'default' => [
289
- 'isLinked' => false,
290
- ]
291
- ]
292
- );
293
-
294
- $this->add_responsive_control(
295
- 'media_padding',
296
- [
297
- 'label' => __( 'Padding', 'happy_addons' ),
298
- 'type' => Controls_Manager::DIMENSIONS,
299
- 'size_units' => [ 'px', 'em', '%' ],
300
- 'selectors' => [
301
- '{{WRAPPER}} .ha-blurb-figure--image > img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
302
- '{{WRAPPER}} .ha-blurb-figure--icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
303
- ],
304
- ]
305
- );
306
-
307
- $this->add_group_control(
308
- Group_Control_Border::get_type(),
309
- [
310
- 'name' => 'media_border',
311
- 'selector' => '{{WRAPPER}} .ha-blurb-figure--image > img, {{WRAPPER}} .ha-blurb-figure--icon'
312
- ]
313
- );
314
-
315
- $this->add_responsive_control(
316
- 'media_border_radius',
317
- [
318
- 'label' => __( 'Border Radius', 'happy_addons' ),
319
- 'type' => Controls_Manager::DIMENSIONS,
320
- 'size_units' => [ 'px', '%' ],
321
- 'selectors' => [
322
- '{{WRAPPER}} .ha-blurb-figure--image > img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
323
- '{{WRAPPER}} .ha-blurb-figure--icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
324
- ],
325
- ]
326
- );
327
-
328
- $this->add_group_control(
329
- Group_Control_Box_Shadow::get_type(),
330
- [
331
- 'name' => 'media_box_shadow',
332
- 'exclude' => [
333
- 'box_shadow_position',
334
- ],
335
- 'selector' => '{{WRAPPER}} .ha-blurb-figure--image > img, {{WRAPPER}} .ha-blurb-figure--icon'
336
- ]
337
- );
338
-
339
- $this->add_control(
340
- 'icon_color',
341
- [
342
- 'label' => __( 'Color', 'happy_addons' ),
343
- 'type' => Controls_Manager::COLOR,
344
- 'selectors' => [
345
- '{{WRAPPER}} .ha-blurb-figure--icon' => 'color: {{VALUE}}',
346
- ],
347
- 'condition' => [
348
- 'type' => 'icon'
349
- ]
350
- ]
351
- );
352
-
353
- $this->add_control(
354
- 'icon_bg_color',
355
- [
356
- 'label' => __( 'Background Color', 'happy_addons' ),
357
- 'type' => Controls_Manager::COLOR,
358
- 'selectors' => [
359
- '{{WRAPPER}} .ha-blurb-figure--icon' => 'background-color: {{VALUE}}',
360
- ],
361
- 'condition' => [
362
- 'type' => 'icon'
363
- ]
364
- ]
365
- );
366
-
367
- $this->end_controls_section();
368
-
369
- $this->start_controls_section(
370
- 'content_style',
371
- [
372
- 'label' => __( 'Title & Description', 'happy_addons' ),
373
- 'tab' => Controls_Manager::TAB_STYLE,
374
- ]
375
- );
376
-
377
- $this->add_responsive_control(
378
- 'content_padding',
379
- [
380
- 'label' => __( 'Padding', 'happy_addons' ),
381
- 'type' => Controls_Manager::DIMENSIONS,
382
- 'size_units' => [ 'px', 'em', '%' ],
383
- 'selectors' => [
384
- '{{WRAPPER}} .ha-blurb-body' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
385
- ],
386
- ]
387
- );
388
-
389
- $this->add_control(
390
- 'title_heading',
391
- [
392
- 'type' => Controls_Manager::HEADING,
393
- 'label' => __( 'Title', 'happy_addons' ),
394
- 'separator' => 'before'
395
- ]
396
- );
397
-
398
- $this->add_responsive_control(
399
- 'title_margin',
400
- [
401
- 'label' => __( 'Margin', 'happy_addons' ),
402
- 'type' => Controls_Manager::DIMENSIONS,
403
- 'size_units' => [ 'px', '%' ],
404
- 'selectors' => [
405
- '{{WRAPPER}} .ha-blurb-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
406
- ],
407
- ]
408
- );
409
-
410
- $this->add_control(
411
- 'title_color',
412
- [
413
- 'label' => __( 'Text Color', 'happy_addons' ),
414
- 'type' => Controls_Manager::COLOR,
415
- 'selectors' => [
416
- '{{WRAPPER}} .ha-blurb-title' => 'color: {{VALUE}}',
417
- ],
418
- ]
419
- );
420
-
421
- $this->add_group_control(
422
- Group_Control_Typography::get_type(),
423
- [
424
- 'name' => 'title_typography',
425
- 'label' => __( 'Typography', 'happy_addons' ),
426
- 'selector' => '{{WRAPPER}} .ha-blurb-title',
427
- ]
428
- );
429
-
430
- $this->add_control(
431
- 'description_heading',
432
- [
433
- 'type' => Controls_Manager::HEADING,
434
- 'label' => __( 'Description', 'happy_addons' ),
435
- 'separator' => 'before'
436
- ]
437
- );
438
-
439
- $this->add_responsive_control(
440
- 'description_margin',
441
- [
442
- 'label' => __( 'Margin', 'happy_addons' ),
443
- 'type' => Controls_Manager::DIMENSIONS,
444
- 'size_units' => [ 'px', '%' ],
445
- 'selectors' => [
446
- '{{WRAPPER}} .ha-blurb-text' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
447
- ],
448
- ]
449
- );
450
-
451
- $this->add_control(
452
- 'description_color',
453
- [
454
- 'label' => __( 'Text Color', 'happy_addons' ),
455
- 'type' => Controls_Manager::COLOR,
456
- 'selectors' => [
457
- '{{WRAPPER}} .ha-blurb-text' => 'color: {{VALUE}}',
458
- ],
459
- ]
460
- );
461
-
462
- $this->add_group_control(
463
- Group_Control_Typography::get_type(),
464
- [
465
- 'name' => 'description_typography',
466
- 'label' => __( 'Typography', 'happy_addons' ),
467
- 'selector' => '{{WRAPPER}} .ha-blurb-text',
468
- ]
469
- );
470
-
471
- $this->end_controls_section();
472
-
473
- $this->start_controls_section(
474
- 'link_style',
475
- [
476
- 'label' => __( 'Link', 'happy_addons' ),
477
- 'tab' => Controls_Manager::TAB_STYLE,
478
- ]
479
- );
480
-
481
- $this->add_responsive_control(
482
- 'link_padding',
483
- [
484
- 'label' => __( 'Padding', 'happy_addons' ),
485
- 'type' => Controls_Manager::DIMENSIONS,
486
- 'size_units' => [ 'px', 'em', '%' ],
487
- 'selectors' => [
488
- '{{WRAPPER}} .ha-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
489
- ],
490
- ]
491
- );
492
-
493
- $this->add_group_control(
494
- Group_Control_Typography::get_type(),
495
- [
496
- 'name' => 'btn_typography',
497
- 'selector' => '{{WRAPPER}} .ha-link',
498
- ]
499
- );
500
-
501
- $this->start_controls_tabs( 'tabs_link_style' );
502
-
503
- $this->start_controls_tab(
504
- 'tab_link_normal',
505
- [
506
- 'label' => __( 'Normal', 'happy_addons' ),
507
- ]
508
- );
509
-
510
- $this->add_control(
511
- 'link_color',
512
- [
513
- 'label' => __( 'Text Color', 'happy_addons' ),
514
- 'type' => Controls_Manager::COLOR,
515
- 'default' => '',
516
- 'selectors' => [
517
- '{{WRAPPER}} .ha-link' => 'color: {{VALUE}};',
518
- ],
519
- ]
520
- );
521
-
522
- $this->end_controls_tab();
523
-
524
- $this->start_controls_tab(
525
- 'tab_link_hover',
526
- [
527
- 'label' => __( 'Hover', 'happy_addons' ),
528
- ]
529
- );
530
-
531
- $this->add_control(
532
- 'link_hover_color',
533
- [
534
- 'label' => __( 'Text Color', 'happy_addons' ),
535
- 'type' => Controls_Manager::COLOR,
536
- 'selectors' => [
537
- '{{WRAPPER}} .ha-link:hover, {{WRAPPER}} .ha-link:focus' => 'color: {{VALUE}};',
538
- ],
539
- ]
540
- );
541
-
542
- $this->end_controls_tab();
543
- $this->end_controls_tabs();
544
-
545
- $this->end_controls_section();
546
- }
547
-
548
- protected function render() {
549
- $settings = $this->get_settings_for_display();
550
-
551
- $this->add_inline_editing_attributes( 'title', 'none' );
552
- $this->add_render_attribute( 'title', 'class', 'ha-blurb-title' );
553
-
554
- $this->add_inline_editing_attributes( 'description', 'basic' );
555
- $this->add_render_attribute( 'description', 'class', 'ha-blurb-text' );
556
-
557
- $this->add_inline_editing_attributes( 'link_text', 'none' );
558
- $this->add_render_attribute( 'link_text', 'class', 'ha-link' );
559
-
560
- $this->add_render_attribute( 'link_text', 'href', esc_url( $settings['link_url']['url'] ) );
561
- if ( ! empty( $settings['link_url']['is_external'] ) ) {
562
- $this->add_render_attribute( 'link_text', 'target', '_blank' );
563
- }
564
- if ( ! empty( $settings['link_url']['nofollow'] ) ) {
565
- $this->set_render_attribute( 'link_text', 'rel', 'nofollow' );
566
- }
567
- ?>
568
-
569
- <?php if ( $settings['type'] === 'image' ) : ?>
570
- <?php if ( ! empty( $settings['image']['url'] ) ) :
571
- $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
572
- $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
573
- $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
574
- $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
575
- ?>
576
- <figure class="ha-blurb-figure ha-blurb-figure--image">
577
- <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'image', 'image' ); ?>
578
- </figure>
579
- <?php endif; ?>
580
- <?php else: ?>
581
- <figure class="ha-blurb-figure ha-blurb-figure--icon">
582
- <i aria-hidden="true" class="<?php echo esc_attr( $settings['icon'] ); ?>"></i>
583
- </figure>
584
- <?php endif; ?>
585
-
586
- <div class="ha-blurb-body">
587
- <?php printf( '<%1$s %2$s>%3$s</%1$s>',
588
- tag_escape( $settings['title_tag'] ),
589
- $this->get_render_attribute_string( 'title' ),
590
- esc_html( $settings['title' ] )
591
- ); ?>
592
- <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
593
- <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
594
- </div>
595
- <?php
596
- if ( $settings['link_text'] ):
597
- printf( '<a %1$s>%2$s</a>',
598
- $this->get_render_attribute_string( 'link_text' ),
599
- esc_html( $settings['link_text'] )
600
- );
601
- endif;
602
- ?>
603
- </div>
604
- <?php
605
- }
606
-
607
- public function _content_template() {
608
- ?>
609
- <#
610
- view.addInlineEditingAttributes( 'title', 'none' );
611
- view.addRenderAttribute( 'title', 'class', 'ha-blurb-title' );
612
-
613
- view.addInlineEditingAttributes( 'description', 'basic' );
614
- view.addRenderAttribute( 'description', 'class', 'ha-blurb-text' );
615
-
616
- view.addInlineEditingAttributes( 'link_text', 'none' );
617
- view.addRenderAttribute( 'link_text', 'class', 'ha-link' );
618
- view.addRenderAttribute( 'link_text', 'href', settings.link_url.url );
619
-
620
- if ( settings.type === 'image' ) {
621
- if ( settings.image.url ) {
622
- var image = {
623
- id: settings.image.id,
624
- url: settings.image.url,
625
- size: settings.image_size,
626
- dimension: settings.image_custom_dimension,
627
- model: view.getEditModel()
628
- };
629
-
630
- var image_url = elementor.imagesManager.getImageUrl( image );
631
- #>
632
- <figure class="ha-blurb-figure ha-blurb-figure--image">
633
- <img src="{{ image_url }}">
634
- </figure>
635
- <# }
636
- } else { #>
637
- <figure class="ha-blurb-figure ha-blurb-figure--icon">
638
- <i aria-hidden="true" class="{{ settings.icon }}"></i>
639
- </figure>
640
- <# } #>
641
-
642
- <div class="ha-blurb-body">
643
- <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
644
-
645
- <div {{{ view.getRenderAttributeString( 'description' ) }}}>
646
- <p>{{{ settings.description }}}</p>
647
- </div>
648
-
649
- <# if ( settings.link_text ) { #>
650
- <a {{{ view.getRenderAttributeString( 'link_text' ) }}}>{{ settings.link_text }}</a>
651
- <# } #>
652
- </div>
653
- <?php
654
- }
655
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
addons/class-icon-box.php DELETED
@@ -1,349 +0,0 @@
1
- <?php
2
- /**
3
- * Icon Box addon class
4
- *
5
- * @package Happy_Addons
6
- */
7
- namespace Happy_Addons\Elementor\Addons;
8
-
9
- use Elementor\Group_Control_Border;
10
- use Elementor\Group_Control_Box_Shadow;
11
- use Elementor\Group_Control_Typography;
12
- use Elementor\Controls_Manager;
13
-
14
- defined( 'ABSPATH' ) || die();
15
-
16
- class Icon_Box extends Addon_Base {
17
-
18
- /**
19
- * Get widget title.
20
- *
21
- * @since 1.0.0
22
- * @access public
23
- *
24
- * @return string Widget title.
25
- */
26
- public function get_title() {
27
- return __( 'Happy Icon Box', 'happy_addons' );
28
- }
29
-
30
- /**
31
- * Get widget icon.
32
- *
33
- * @since 1.0.0
34
- * @access public
35
- *
36
- * @return string Widget icon.
37
- */
38
- public function get_icon() {
39
- return 'fa fa-smile-o';
40
- }
41
-
42
- public function get_keywords() {
43
- return [ 'info', 'box', 'icon' ];
44
- }
45
-
46
- protected function _register_controls() {
47
- $this->start_controls_section(
48
- 'content',
49
- [
50
- 'label' => __( 'Icon & Title', 'happy_addons' ),
51
- 'tab' => Controls_Manager::TAB_CONTENT,
52
- ]
53
- );
54
-
55
- $this->add_control(
56
- 'icon',
57
- [
58
- 'label' => __( 'Icon', 'happy_addons' ),
59
- 'type' => Controls_Manager::ICON,
60
- 'default' => 'fa fa-smile-o',
61
- ]
62
- );
63
-
64
- $this->add_control(
65
- 'title',
66
- [
67
- 'label' => __( 'Title', 'happy_addons' ),
68
- 'label_block' => true,
69
- 'type' => Controls_Manager::TEXT,
70
- 'default' => __( 'Default title', 'happy_addons' ),
71
- 'placeholder' => __( 'Type your blurb title', 'happy_addons' ),
72
- ]
73
- );
74
-
75
- $this->add_control(
76
- 'title_tag',
77
- [
78
- 'label' => __( 'Title HTML Tag', 'happy_addons' ),
79
- 'type' => Controls_Manager::SELECT,
80
- 'options' => [
81
- 'h1' => __( 'H1', 'happy_addons' ),
82
- 'h2' => __( 'H2', 'happy_addons' ),
83
- 'h3' => __( 'H3', 'happy_addons' ),
84
- 'h4' => __( 'H4', 'happy_addons' ),
85
- 'h5' => __( 'H5', 'happy_addons' ),
86
- 'h6' => __( 'H6', 'happy_addons' ),
87
- ],
88
- 'default' => 'h2',
89
- ]
90
- );
91
-
92
- $this->add_responsive_control(
93
- 'align',
94
- [
95
- 'label' => __( 'Alignment', 'happy_addons' ),
96
- 'type' => Controls_Manager::CHOOSE,
97
- 'options' => [
98
- 'left' => [
99
- 'title' => __( 'Left', 'happy_addons' ),
100
- 'icon' => 'fa fa-align-left',
101
- ],
102
- 'center' => [
103
- 'title' => __( 'Center', 'happy_addons' ),
104
- 'icon' => 'fa fa-align-center',
105
- ],
106
- 'right' => [
107
- 'title' => __( 'Right', 'happy_addons' ),
108
- 'icon' => 'fa fa-align-right',
109
- ],
110
- ],
111
- 'desktop_default' => 'left',
112
- 'toggle' => false,
113
- 'devices' => [ 'desktop', 'tablet', 'mobile' ],
114
- 'prefix_class' => 'ha-text--%s'
115
- ]
116
- );
117
-
118
- $this->add_control(
119
- 'has_link',
120
- [
121
- 'label' => __( 'Add Link?', 'plugin-domain' ),
122
- 'type' => Controls_Manager::SWITCHER,
123
- 'label_on' => __( 'Yes', 'your-plugin' ),
124
- 'label_off' => __( 'No', 'your-plugin' ),
125
- 'return_value' => 'yes',
126
- 'default' => 'no',
127
- ]
128
- );
129
-
130
- $this->add_control(
131
- 'link',
132
- [
133
- 'label' => __( 'Link', 'happy_addons' ),
134
- 'type' => Controls_Manager::URL,
135
- 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
136
- 'condition' => [
137
- 'has_link' => 'yes',
138
- ],
139
- 'default' => [
140
- 'url' => '#',
141
- ],
142
- ]
143
- );
144
-
145
- $this->end_controls_section();
146
-
147
- $this->start_controls_section(
148
- 'Icon',
149
- [
150
- 'label' => __( 'Icon', 'happy_addons' ),
151
- 'tab' => Controls_Manager::TAB_STYLE,
152
- ]
153
- );
154
-
155
- $this->add_responsive_control(
156
- 'icon_size',
157
- [
158
- 'label' => __( 'Size', 'happy_addons' ),
159
- 'type' => Controls_Manager::SLIDER,
160
- 'default' => [
161
- 'unit' => 'px',
162
- ],
163
- 'tablet_default' => [
164
- 'unit' => 'px',
165
- ],
166
- 'mobile_default' => [
167
- 'unit' => 'px',
168
- ],
169
- 'size_units' => [ 'px', 'em' ],
170
- 'range' => [
171
- 'px' => [
172
- 'min' => 1,
173
- 'max' => 250,
174
- ],
175
- 'em' => [
176
- 'min' => 1,
177
- 'max' => 20,
178
- ],
179
- ],
180
- 'selectors' => [
181
- '{{WRAPPER}} .ha-icon-box-icon > i' => 'font-size: {{SIZE}}{{UNIT}};',
182
- ],
183
- ]
184
- );
185
-
186
- $this->add_responsive_control(
187
- 'icon_padding',
188
- [
189
- 'label' => __( 'Padding', 'happy_addons' ),
190
- 'type' => Controls_Manager::DIMENSIONS,
191
- 'size_units' => [ 'px', 'em', '%' ],
192
- 'selectors' => [
193
- '{{WRAPPER}} .ha-icon-box-icon' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
194
- ],
195
- ]
196
- );
197
-
198
- $this->add_group_control(
199
- Group_Control_Border::get_type(),
200
- [
201
- 'name' => 'icon_border',
202
- 'selector' => '{{WRAPPER}} .ha-icon-box-icon'
203
- ]
204
- );
205
-
206
- $this->add_responsive_control(
207
- 'icon_border_radius',
208
- [
209
- 'label' => __( 'Border Radius', 'happy_addons' ),
210
- 'type' => Controls_Manager::DIMENSIONS,
211
- 'size_units' => [ 'px', '%' ],
212
- 'selectors' => [
213
- '{{WRAPPER}} .ha-icon-box-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
214
- ],
215
- ]
216
- );
217
-
218
- $this->add_group_control(
219
- Group_Control_Box_Shadow::get_type(),
220
- [
221
- 'name' => 'icon_box_shadow',
222
- 'exclude' => [
223
- 'box_shadow_position',
224
- ],
225
- 'selector' => '{{WRAPPER}} .ha-icon-box-icon'
226
- ]
227
- );
228
-
229
- $this->add_control(
230
- 'icon_color',
231
- [
232
- 'label' => __( 'Color', 'happy_addons' ),
233
- 'type' => Controls_Manager::COLOR,
234
- 'selectors' => [
235
- '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}}',
236
- ],
237
- ]
238
- );
239
-
240
- $this->add_control(
241
- 'icon_bg_color',
242
- [
243
- 'label' => __( 'Background Color', 'happy_addons' ),
244
- 'type' => Controls_Manager::COLOR,
245
- 'selectors' => [
246
- '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}}',
247
- ],
248
- ]
249
- );
250
-
251
- $this->end_controls_section();
252
-
253
- $this->start_controls_section(
254
- 'content_style',
255
- [
256
- 'label' => __( 'Title', 'happy_addons' ),
257
- 'tab' => Controls_Manager::TAB_STYLE,
258
- ]
259
- );
260
-
261
- $this->add_responsive_control(
262
- 'title_margin',
263
- [
264
- 'label' => __( 'Margin', 'happy_addons' ),
265
- 'type' => Controls_Manager::DIMENSIONS,
266
- 'size_units' => [ 'px', '%' ],
267
- 'selectors' => [
268
- '{{WRAPPER}} .ha-icon-box-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
269
- ],
270
- ]
271
- );
272
-
273
- $this->add_control(
274
- 'title_color',
275
- [
276
- 'label' => __( 'Text Color', 'happy_addons' ),
277
- 'type' => Controls_Manager::COLOR,
278
- 'selectors' => [
279
- '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}}',
280
- ],
281
- ]
282
- );
283
-
284
- $this->add_group_control(
285
- Group_Control_Typography::get_type(),
286
- [
287
- 'name' => 'title_typography',
288
- 'label' => __( 'Typography', 'happy_addons' ),
289
- 'selector' => '{{WRAPPER}} .ha-icon-box-title',
290
- ]
291
- );
292
-
293
- $this->end_controls_section();
294
- }
295
-
296
- protected function render() {
297
- $settings = $this->get_settings_for_display();
298
-
299
- $this->add_inline_editing_attributes( 'title', 'none' );
300
- $this->add_render_attribute( 'title', 'class', 'ha-icon-box-title' );
301
-
302
- if ( $settings['has_link'] === 'yes' ) :
303
- $this->add_render_attribute( 'link', 'class', 'ha-icon-box-link' );
304
- $this->add_render_attribute( 'link', 'href', esc_url( $settings['link']['url'] ) );
305
- if ( ! empty( $settings['link']['is_external'] ) ) {
306
- $this->add_render_attribute( 'link', 'target', '_blank' );
307
- }
308
- if ( ! empty( $settings['link']['nofollow'] ) ) {
309
- $this->set_render_attribute( 'link', 'rel', 'nofollow' );
310
- }
311
- printf( '<a %1$s>', $this->get_render_attribute_string( 'link' ) );
312
- endif;
313
- ?>
314
- <span class="ha-icon-box-icon">
315
- <i aria-hidden="true" class="<?php echo esc_attr( $settings['icon'] ); ?>"></i>
316
- </span>
317
- <?php printf( '<%1$s %2$s>%3$s</%1$s>',
318
- tag_escape( $settings['title_tag'] ),
319
- $this->get_render_attribute_string( 'title' ),
320
- esc_html( $settings['title' ] )
321
- );
322
- if ( $settings['has_link'] === 'yes' ) :
323
- echo '</a>';
324
- endif;
325
- }
326
-
327
- public function _content_template() {
328
- ?>
329
- <#
330
- view.addInlineEditingAttributes( 'title', 'none' );
331
- view.addRenderAttribute( 'title', 'class', 'ha-icon-box-title' );
332
-
333
- if ( settings.has_link === 'yes' ) {
334
- view.addRenderAttribute( 'link', 'class', 'ha-icon-box-link' );
335
- view.addRenderAttribute( 'link', 'href', settings.link.url );
336
-
337
- print( '<a ' + view.getRenderAttributeString( 'link' ) + '>' );
338
- } #>
339
- <span class="ha-icon-box-icon">
340
- <i class="{{ settings.icon }}"></i>
341
- </span>
342
- <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
343
- <#
344
- if ( settings.has_link === 'yes' ) {
345
- print( '</a>' );
346
- } #>
347
- <?php
348
- }
349
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/admin/css/main.css ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element,
2
+ .elementor-panel #elementor-panel-elements .happy-addons-addon {
3
+ -webkit-transition: background-image .3s;
4
+ transition: background-image .3s;
5
+ }
6
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element .icon,
7
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element .title,
8
+ .elementor-panel #elementor-panel-elements .happy-addons-addon .icon,
9
+ .elementor-panel #elementor-panel-elements .happy-addons-addon .title {
10
+ background-image: -webkit-linear-gradient(315deg, #e2498a 25%, #562dd4 100%);
11
+ background-image: linear-gradient(135deg, #e2498a 25%, #562dd4 100%);
12
+ -webkit-background-clip: text;
13
+ -webkit-transition: background-image .2s, color .2s;
14
+ transition: background-image .2s, color .2s;
15
+
16
+ -webkit-text-fill-color: transparent;
17
+ }
18
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover,
19
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus,
20
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:hover,
21
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:focus {
22
+ background-image: -webkit-linear-gradient(315deg, #e2498a 0%, #562dd4 100%);
23
+ background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
24
+ }
25
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .icon,
26
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .title,
27
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .icon,
28
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .title,
29
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,
30
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title,
31
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,
32
+ .elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title {
33
+ background: transparent;
34
+ color: #fff;
35
+
36
+ -webkit-text-fill-color: initial;
37
+ }
assets/admin/css/main.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .elementor-panel #elementor-panel-category-happy_addons .elementor-element,.elementor-panel #elementor-panel-elements .happy-addons-addon{-webkit-transition:background-image .3s;transition:background-image .3s}.elementor-panel #elementor-panel-category-happy_addons .elementor-element .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element .title,.elementor-panel #elementor-panel-elements .happy-addons-addon .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon .title{background-image:-webkit-linear-gradient(315deg,#e2498a 25%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 25%,#562dd4 100%);-webkit-background-clip:text;-webkit-transition:background-image .2s,color .2s;transition:background-image .2s,color .2s;-webkit-text-fill-color:transparent}.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover{background-image:-webkit-linear-gradient(315deg,#e2498a 0%,#562dd4 100%);background-image:linear-gradient(135deg,#e2498a 0%,#562dd4 100%)}.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:focus .title,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .icon,.elementor-panel #elementor-panel-category-happy_addons .elementor-element:hover .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:focus .title,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .icon,.elementor-panel #elementor-panel-elements .happy-addons-addon:hover .title{background:0 0;color:#fff;-webkit-text-fill-color:initial}
assets/admin/js/happy-addons.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function($, elementor) {
2
+ 'use strict';
3
+
4
+ elementor.on('panel:init', function() {
5
+ $('#elementor-panel-elements-search-input').on('keyup', _.debounce(function() {
6
+ $('#elementor-panel-elements')
7
+ .find('.hm')
8
+ .parents('.elementor-element')
9
+ .addClass('happy-addons-addon');
10
+ }, 170));
11
+ });
12
+ }(jQuery, window.elementor));
assets/admin/js/happy-addons.min.js ADDED
@@ -0,0 +1 @@
 
1
+ !function(e,n){"use strict";n.on("panel:init",function(){e("#elementor-panel-elements-search-input").on("keyup",_.debounce(function(){e("#elementor-panel-elements").find(".hm").parents(".elementor-element").addClass("happy-addons-addon")},170))})}(jQuery,window.elementor);
assets/css/main.css CHANGED
@@ -1,23 +1,47 @@
1
- .happy-addon,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  .happy-addon * {
3
  box-sizing: border-box;
4
  }
 
 
 
5
 
6
- .ha-text--left {
7
- text-align: left;
 
 
 
8
  }
9
 
10
- .ha-text--center {
11
- text-align: center;
 
 
12
  }
13
 
14
- .ha-text--right {
15
- text-align: right;
16
  }
17
 
18
  .ha-btn {
19
  display: inline-block;
20
- padding: .575rem 1.3rem;
21
  border-radius: .25rem;
22
  background-color: #8c8c8c;
23
  color: #fff;
@@ -26,7 +50,7 @@
26
  text-decoration: none;
27
  font-weight: bold;
28
  font-size: 14px;
29
- line-height: 1.5;
30
  -webkit-transition: all .3s;
31
  transition: all .3s;
32
  }
@@ -37,6 +61,10 @@
37
  .ha-btn--block {
38
  display: block;
39
  }
 
 
 
 
40
 
41
  .ha-link {
42
  position: relative;
@@ -59,26 +87,16 @@
59
  right: -25px;
60
  }
61
 
62
- .ha-card .elementor-widget-container {
63
- border-radius: .5rem;
64
- background-color: #fff;
65
- word-wrap: break-word;
66
-
67
- overflow-wrap: break-word;
68
- }
69
-
70
  .ha-card-figure {
71
  position: relative;
72
- display: inline-block;
73
  }
74
  .ha-card-figure > img {
75
- width: 100%;
 
76
  border-top-left-radius: calc(.5rem - 1px);
77
  border-top-right-radius: calc(.5rem - 1px);
78
- vertical-align: bottom;
79
-
80
- -o-object-fit: cover;
81
- object-fit: cover;
82
  }
83
 
84
  .ha-card-body {
@@ -103,8 +121,12 @@
103
  margin-bottom: 0;
104
  }
105
 
106
- .ha-card--right .elementor-widget-container,
107
- .ha-card--left .elementor-widget-container {
 
 
 
 
108
  display: -webkit-box;
109
  display: -webkit-flex;
110
  display: -ms-flexbox;
@@ -120,173 +142,468 @@
120
  flex-direction: row;
121
  }
122
 
123
- .ha-card--right .ha-card-figure,
124
- .ha-card--right .ha-card-body,
125
- .ha-card--left .ha-card-figure,
126
- .ha-card--left .ha-card-body {
127
- -webkit-box-flex: 1;
128
- -webkit-flex-grow: 1;
129
- -ms-flex-positive: 1;
130
- flex-grow: 1;
131
- }
132
-
133
  .ha-card--right .ha-card-figure,
134
  .ha-card--left .ha-card-figure {
 
 
 
 
135
  max-width: 50%;
136
  }
137
 
138
  .ha-card--right .ha-card-body,
139
  .ha-card--left .ha-card-body {
 
 
 
 
140
  padding: 2.5rem;
 
141
  }
142
 
143
  .ha-card--left .ha-card-figure > img {
144
  border-radius: calc(.5rem - 1px) 0 0 calc(.5rem - 1px);
145
  }
146
 
147
- .ha-card--right .elementor-widget-container {
148
  -webkit-box-orient: horizontal;
149
  -webkit-box-direction: reverse;
150
  -webkit-flex-direction: row-reverse;
151
  -ms-flex-direction: row-reverse;
152
  flex-direction: row-reverse;
 
153
  }
154
 
155
  .ha-card--right .ha-card-figure > img {
156
  border-radius: 0 calc(.5rem - 1px) calc(.5rem - 1px) 0;
157
  }
158
 
159
- .ha-card .ha-label {
160
  position: absolute;
161
  }
162
 
163
- .ha-label {
164
  padding: .475rem 1.1rem;
165
  border-radius: 50px;
166
  background-color: #fff;
167
- font-weight: bold;
168
- font-size: 14px;
169
  }
170
- .ha-label--top-left {
171
  top: 1rem;
172
  left: 1rem;
173
  }
174
- .ha-label--top-center {
175
  top: 1rem;
176
  left: 50%;
177
  -webkit-transform: translateX(-50%);
178
  -ms-transform: translateX(-50%);
179
  transform: translateX(-50%);
180
  }
181
- .ha-label--top-right {
182
  top: 1rem;
183
  right: 1rem;
184
  }
185
- .ha-label--middle-left {
186
  top: 50%;
187
  left: 1rem;
188
  -webkit-transform: translateY(-50%);
189
  -ms-transform: translateY(-50%);
190
  transform: translateY(-50%);
191
  }
192
- .ha-label--middle-center {
193
  top: 50%;
194
  left: 50%;
195
  -webkit-transform: translate(-50%, -50%);
196
  -ms-transform: translate(-50%, -50%);
197
  transform: translate(-50%, -50%);
198
  }
199
- .ha-label--middle-right {
200
  top: 50%;
201
  right: 1rem;
202
  -webkit-transform: translateY(-50%);
203
  -ms-transform: translateY(-50%);
204
  transform: translateY(-50%);
205
  }
206
- .ha-label--bottom-left {
207
  bottom: 1rem;
208
  left: 1rem;
209
  }
210
- .ha-label--bottom-center {
211
  bottom: 1rem;
212
  left: 50%;
213
  -webkit-transform: translateX(-50%);
214
  -ms-transform: translateX(-50%);
215
  transform: translateX(-50%);
216
  }
217
- .ha-label--bottom-right {
218
  right: 1rem;
219
  bottom: 1rem;
220
  }
221
 
222
- .ha-blurb .elementor-widget-container {
223
- padding: 1.5rem;
224
- word-wrap: break-word;
225
-
226
- overflow-wrap: break-word;
227
  }
228
 
229
- .ha-blurb-title {
230
  margin-top: 0;
231
  margin-bottom: 1rem;
232
  color: #151515;
233
  font-size: 24px;
234
  }
235
 
236
- .ha-blurb-figure {
237
  display: inline-block;
238
  margin: 0 0 1.5rem !important;
239
  }
240
- .ha-blurb-figure > i {
 
241
  font-size: 3rem;
242
- line-height: .86;
243
  }
244
- .ha-blurb-figure > img {
245
- width: 100%;
246
- height: auto;
247
-
248
- -o-object-fit: cover;
249
- object-fit: cover;
250
  }
251
- .ha-blurb-figure--image {
252
- max-width: 250px;
253
- width: 250px;
 
254
  }
255
 
256
- .ha-blurb-text + .ha-link {
257
  margin-top: 1rem;
258
  }
259
 
260
- .ha-blurb-text > p {
261
  margin-top: 0;
262
  margin-bottom: 0;
263
  }
264
 
265
- .ha-icon-box .elementor-widget-container {
266
- word-wrap: break-word;
267
-
268
- overflow-wrap: break-word;
269
  }
270
 
271
  .ha-icon-box-title {
272
  margin-top: 0;
273
- margin-bottom: 1rem;
274
  color: #151515;
275
  font-size: 24px;
 
 
276
  }
277
 
278
  .ha-icon-box-icon {
279
  display: inline-block;
280
- margin-bottom: 1.5rem;
281
- }
282
- .ha-icon-box-icon i {
283
- color: inherit;
284
  font-size: 3rem;
285
- line-height: .86;
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
287
 
288
  .ha-icon-box-link {
289
  display: block;
290
- color: #151515;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
291
  text-decoration: none;
292
  }
1
+ .ha-card > .elementor-widget-container,
2
+ .ha-infobox > .elementor-widget-container,
3
+ .ha-icon-box > .elementor-widget-container,
4
+ .ha-member > .elementor-widget-container,
5
+ .ha-review > .elementor-widget-container,
6
+ .ha-image-compare > .elementor-widget-container {
7
+ border-radius: .5rem;
8
+ background-color: #fff;
9
+ box-shadow: 0 .2rem 2.8rem rgba(36, 36, 36, .1);
10
+ word-wrap: break-word;
11
+
12
+ overflow-wrap: break-word;
13
+ }
14
+
15
+ .happy-addon {
16
+ box-sizing: border-box;
17
+ }
18
  .happy-addon * {
19
  box-sizing: border-box;
20
  }
21
+ .happy-addon img {
22
+ max-width: 100%;
23
+ height: auto;
24
 
25
+ -o-object-fit: cover;
26
+ object-fit: cover;
27
+ }
28
+ .happy-addon p:empty {
29
+ display: none;
30
  }
31
 
32
+ .ha-cf:before,
33
+ .ha-cf:after {
34
+ display: table;
35
+ content: " ";
36
  }
37
 
38
+ .ha-cf:after {
39
+ clear: both;
40
  }
41
 
42
  .ha-btn {
43
  display: inline-block;
44
+ padding: .7rem 1.3rem;
45
  border-radius: .25rem;
46
  background-color: #8c8c8c;
47
  color: #fff;
50
  text-decoration: none;
51
  font-weight: bold;
52
  font-size: 14px;
53
+ line-height: 1;
54
  -webkit-transition: all .3s;
55
  transition: all .3s;
56
  }
61
  .ha-btn--block {
62
  display: block;
63
  }
64
+ .ha-btn-icon + .ha-btn-text,
65
+ .ha-btn-text + .ha-btn-icon {
66
+ margin-left: 5px;
67
+ }
68
 
69
  .ha-link {
70
  position: relative;
87
  right: -25px;
88
  }
89
 
 
 
 
 
 
 
 
 
90
  .ha-card-figure {
91
  position: relative;
92
+ height: 250px;
93
  }
94
  .ha-card-figure > img {
95
+ width: 100%;
96
+ height: 100%;
97
  border-top-left-radius: calc(.5rem - 1px);
98
  border-top-right-radius: calc(.5rem - 1px);
99
+ vertical-align: bottom;
 
 
 
100
  }
101
 
102
  .ha-card-body {
121
  margin-bottom: 0;
122
  }
123
 
124
+ .ha-card--top .ha-card-figure {
125
+ display: inline-block;
126
+ }
127
+
128
+ .ha-card--right > .elementor-widget-container,
129
+ .ha-card--left > .elementor-widget-container {
130
  display: -webkit-box;
131
  display: -webkit-flex;
132
  display: -ms-flexbox;
142
  flex-direction: row;
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
145
  .ha-card--right .ha-card-figure,
146
  .ha-card--left .ha-card-figure {
147
+ -webkit-box-flex: 0;
148
+ -webkit-flex: 0 0 50%;
149
+ -ms-flex: 0 0 50%;
150
+ flex: 0 0 50%;
151
  max-width: 50%;
152
  }
153
 
154
  .ha-card--right .ha-card-body,
155
  .ha-card--left .ha-card-body {
156
+ -webkit-box-flex: 0;
157
+ -webkit-flex: 0 0 50%;
158
+ -ms-flex: 0 0 50%;
159
+ flex: 0 0 50%;
160
  padding: 2.5rem;
161
+ max-width: 50%;
162
  }
163
 
164
  .ha-card--left .ha-card-figure > img {
165
  border-radius: calc(.5rem - 1px) 0 0 calc(.5rem - 1px);
166
  }
167
 
168
+ .ha-card--right > .elementor-widget-container {
169
  -webkit-box-orient: horizontal;
170
  -webkit-box-direction: reverse;
171
  -webkit-flex-direction: row-reverse;
172
  -ms-flex-direction: row-reverse;
173
  flex-direction: row-reverse;
174
+ text-align: right;
175
  }
176
 
177
  .ha-card--right .ha-card-figure > img {
178
  border-radius: 0 calc(.5rem - 1px) calc(.5rem - 1px) 0;
179
  }
180
 
181
+ .ha-card .ha-badge {
182
  position: absolute;
183
  }
184
 
185
+ .ha-badge {
186
  padding: .475rem 1.1rem;
187
  border-radius: 50px;
188
  background-color: #fff;
189
+ font-size: 12px;
 
190
  }
191
+ .ha-badge--top-left {
192
  top: 1rem;
193
  left: 1rem;
194
  }
195
+ .ha-badge--top-center {
196
  top: 1rem;
197
  left: 50%;
198
  -webkit-transform: translateX(-50%);
199
  -ms-transform: translateX(-50%);
200
  transform: translateX(-50%);
201
  }
202
+ .ha-badge--top-right {
203
  top: 1rem;
204
  right: 1rem;
205
  }
206
+ .ha-badge--middle-left {
207
  top: 50%;
208
  left: 1rem;
209
  -webkit-transform: translateY(-50%);
210
  -ms-transform: translateY(-50%);
211
  transform: translateY(-50%);
212
  }
213
+ .ha-badge--middle-center {
214
  top: 50%;
215
  left: 50%;
216
  -webkit-transform: translate(-50%, -50%);
217
  -ms-transform: translate(-50%, -50%);
218
  transform: translate(-50%, -50%);
219
  }
220
+ .ha-badge--middle-right {
221
  top: 50%;
222
  right: 1rem;
223
  -webkit-transform: translateY(-50%);
224
  -ms-transform: translateY(-50%);
225
  transform: translateY(-50%);
226
  }
227
+ .ha-badge--bottom-left {
228
  bottom: 1rem;
229
  left: 1rem;
230
  }
231
+ .ha-badge--bottom-center {
232
  bottom: 1rem;
233
  left: 50%;
234
  -webkit-transform: translateX(-50%);
235
  -ms-transform: translateX(-50%);
236
  transform: translateX(-50%);
237
  }
238
+ .ha-badge--bottom-right {
239
  right: 1rem;
240
  bottom: 1rem;
241
  }
242
 
243
+ .ha-infobox > .elementor-widget-container {
244
+ padding: 1.5rem;
 
 
 
245
  }
246
 
247
+ .ha-infobox-title {
248
  margin-top: 0;
249
  margin-bottom: 1rem;
250
  color: #151515;
251
  font-size: 24px;
252
  }
253
 
254
+ .ha-infobox-figure {
255
  display: inline-block;
256
  margin: 0 0 1.5rem !important;
257
  }
258
+ .ha-infobox-figure--icon {
259
+ text-align: center;
260
  font-size: 3rem;
 
261
  }
262
+ .ha-infobox-figure > i {
263
+ position: relative;
264
+ display: block;
265
+ width: 1em;
266
+ height: 1em;
 
267
  }
268
+ .ha-infobox-figure > img {
269
+ width: 100%;
270
+ height: 100%;
271
+ vertical-align: bottom;
272
  }
273
 
274
+ .ha-infobox-text + .ha-link {
275
  margin-top: 1rem;
276
  }
277
 
278
+ .ha-infobox-text > p {
279
  margin-top: 0;
280
  margin-bottom: 0;
281
  }
282
 
283
+ .ha-icon-box > .elementor-widget-container {
284
+ position: relative;
285
+ padding: 1.25rem;
 
286
  }
287
 
288
  .ha-icon-box-title {
289
  margin-top: 0;
290
+ margin-bottom: 0;
291
  color: #151515;
292
  font-size: 24px;
293
+ -webkit-transition: color .3s;
294
+ transition: color .3s;
295
  }
296
 
297
  .ha-icon-box-icon {
298
  display: inline-block;
299
+ margin-bottom: 1rem;
300
+ color: #151515;
301
+ text-align: center;
 
302
  font-size: 3rem;
303
+ -webkit-transition: border .3s, background .3s, color .3s, -webkit-transform .3s;
304
+ transition: border .3s, background .3s, color .3s, -webkit-transform .3s;
305
+ transition: transform .3s, border .3s, background .3s, color .3s;
306
+ transition: transform .3s, border .3s, background .3s, color .3s, -webkit-transform .3s;
307
+ }
308
+ .ha-icon-box-icon > i {
309
+ display: block;
310
+ width: 1em;
311
+ height: 1em;
312
+ -webkit-transition: -webkit-transform .3s;
313
+ transition: -webkit-transform .3s;
314
+ transition: transform .3s;
315
+ transition: transform .3s, -webkit-transform .3s;
316
  }
317
 
318
  .ha-icon-box-link {
319
  display: block;
320
+ color: transparent;
321
+ text-decoration: none;
322
+ }
323
+
324
+ .ha-icon-box .ha-badge {
325
+ position: absolute;
326
+ z-index: 9999;
327
+ background-color: #e2498a;
328
+ color: #fff;
329
+ }
330
+
331
+ .ha-member > .elementor-widget-container {
332
+ padding: 1.25rem;
333
+ }
334
+
335
+ .ha-member-figure {
336
+ display: inline-block;
337
+ margin: 0 0 1.5rem !important;
338
+ }
339
+ .ha-member-figure img {
340
+ width: 100%;
341
+ height: 100%;
342
+ vertical-align: bottom;
343
+ }
344
+
345
+ .ha-member-name {
346
+ margin-top: 0;
347
+ margin-bottom: .5rem;
348
+ color: #151515;
349
+ font-size: 18px;
350
+ }
351
+
352
+ .ha-member-position {
353
+ margin-bottom: 1.5rem;
354
+ color: #7f7f7f;
355
+ font-size: 14px;
356
+ }
357
+
358
+ .ha-member-bio {
359
+ margin-bottom: 1.5rem;
360
+ font-size: 14px;
361
+ line-height: 1.6;
362
+ }
363
+
364
+ .ha-member-links > a {
365
+ display: inline-block;
366
+ color: #9895ad;
367
+ text-align: center;
368
+ line-height: 1;
369
+ -webkit-transition: all .2s;
370
+ transition: all .2s;
371
+ }
372
+ .ha-member-links > a:hover,
373
+ .ha-member-links > a:focus {
374
+ color: #222;
375
+ }
376
+ .ha-member-links > a > i {
377
+ width: 1em;
378
+ height: 1em;
379
+ }
380
+ .ha-member-links > a:not(:last-child) {
381
+ margin-right: .3rem;
382
+ }
383
+
384
+ .ha-review-header {
385
+ margin-top: 1.5rem;
386
+ }
387
+
388
+ .ha-review-figure {
389
+ margin: 0;
390
+ }
391
+ .ha-review-figure > img {
392
+ width: 100%;
393
+ height: 100%;
394
+ border-radius: 50%;
395
+ vertical-align: bottom;
396
+ }
397
+
398
+ .ha-review-reviewer {
399
+ margin-top: 0;
400
+ margin-bottom: .3rem;
401
+ color: #151515;
402
+ font-size: 18px;
403
+ }
404
+
405
+ .ha-review-position {
406
+ margin-bottom: .5rem;
407
+ color: #7f7f7f;
408
+ font-size: 15px;
409
+ }
410
+
411
+ .ha-review-ratting {
412
+ display: inline-block;
413
+ font-size: 12px;
414
+ line-height: 1;
415
+ }
416
+
417
+ .ha-review-ratting--num {
418
+ padding: .25em .66em;
419
+ border-radius: 2.5em;
420
+ background-color: #287dfe;
421
+ color: #fff;
422
+ }
423
+
424
+ .ha-review-ratting--star {
425
+ display: inline-block;
426
+ color: #ffbf36;
427
+ font-family: "Fontawesome";
428
+ }
429
+ .ha-review-ratting--star > span {
430
+ position: relative;
431
+ overflow: hidden;
432
+ height: 1em;
433
+ }
434
+ .ha-review-ratting--star span > span {
435
+ position: absolute;
436
+ top: 0;
437
+ left: 0;
438
+ overflow: hidden;
439
+ padding-top: 1.5em;
440
+ }
441
+ span .ha-review-ratting--star:before,
442
+ .ha-review-ratting--star span > span:before {
443
+ position: absolute;
444
+ top: 0;
445
+ left: 0;
446
+ }
447
+ .ha-review-ratting--star span:before {
448
+ content: "\f006\f006\f006\f006\f006";
449
+ }
450
+ .ha-review-ratting--star span > span:before {
451
+ content: "\f005\f005\f005\f005\f005";
452
+ }
453
+
454
+ .ha-review-desc {
455
+ margin-top: 1.5rem;
456
+ font-size: 16px;
457
+ line-height: 1.6;
458
+ }
459
+ .ha-review-desc p {
460
+ margin: 0;
461
+ }
462
+
463
+ .ha-review--top > .elementor-widget-container {
464
+ padding: 2rem;
465
+ }
466
+
467
+ .ha-review--top .ha-review-figure {
468
+ display: inline-block;
469
+ max-width: 70px;
470
+ height: 70px;
471
+ }
472
+
473
+ .ha-review--left > .elementor-widget-container,
474
+ .ha-review--right > .elementor-widget-container {
475
+ display: -webkit-box;
476
+ display: -webkit-flex;
477
+ display: -ms-flexbox;
478
+ display: flex;
479
+ -webkit-box-align: center;
480
+ -webkit-align-items: center;
481
+ align-items: center;
482
+ -ms-flex-align: center;
483
+ -webkit-box-orient: horizontal;
484
+ -webkit-box-direction: normal;
485
+ -webkit-flex-direction: row;
486
+ -ms-flex-direction: row;
487
+ flex-direction: row;
488
+ padding-left: 2rem;
489
+ }
490
+
491
+ .ha-review--left .ha-review-figure,
492
+ .ha-review--right .ha-review-figure {
493
+ -webkit-box-flex: 0;
494
+ -webkit-flex: 0 0 150px;
495
+ -ms-flex: 0 0 150px;
496
+ flex: 0 0 150px;
497
+ max-width: 150px;
498
+ height: 150px;
499
+ }
500
+
501
+ .ha-review--left .ha-review-body,
502
+ .ha-review--right .ha-review-body {
503
+ -webkit-box-flex: 0;
504
+ -webkit-flex: 0 0 calc(100% - 150px);
505
+ -ms-flex: 0 0 calc(100% - 150px);
506
+ flex: 0 0 calc(100% - 150px);
507
+ padding: 2rem;
508
+ max-width: calc(100% - 150px);
509
+ }
510
+ .ha-review--left .ha-review-body > :first-child,
511
+ .ha-review--right .ha-review-body > :first-child {
512
+ margin-top: 0;
513
+ }
514
+
515
+ .ha-review--right > .elementor-widget-container {
516
+ -webkit-box-orient: horizontal;
517
+ -webkit-box-direction: reverse;
518
+ -webkit-flex-direction: row-reverse;
519
+ -ms-flex-direction: row-reverse;
520
+ flex-direction: row-reverse;
521
+ padding-right: 2rem;
522
+ padding-left: 0;
523
+ text-align: right;
524
+ }
525
+
526
+ .ha-image-compare .twentytwenty-container,
527
+ .ha-image-compare .twentytwenty-wrapper {
528
+ border-radius: inherit;
529
+ }
530
+
531
+ .ha-skills > .elementor-widget-container {
532
+ padding-top: 1px;
533
+ }
534
+
535
+ .ha-skill {
536
+ display: -webkit-box;
537
+ display: -webkit-flex;
538
+ display: -ms-flexbox;
539
+ display: flex;
540
+ background-color: #e9ecef;
541
+ font-size: .75rem;
542
+ }
543
+ .ha-skill--outside .ha-skill-info,
544
+ .ha-skill--inside .ha-skill-info {
545
+ text-align: left;
546
+ font-size: 14px;
547
+ }
548
+ .ha-skill--outside .ha-skill-level-text,
549
+ .ha-skill--inside .ha-skill-level-text {
550
+ float: right;
551
+ }
552
+ .ha-skill--outside {
553
+ height: 2px;
554
+ }
555
+ .ha-skill--outside .ha-skill-level {
556
+ position: relative;
557
+ }
558
+ .ha-skill--outside .ha-skill-info {
559
+ position: absolute;
560
+ top: -25px;
561
+ width: 100%;
562
+ color: #242424;
563
+ }
564
+ .ha-skill--inside {
565
+ overflow: hidden;
566
+ height: 30px;
567
+ border-radius: .3rem;
568
+ }
569
+ .ha-skill--inside .ha-skill-info {
570
+ padding-right: 1rem;
571
+ padding-left: 1rem;
572
+ color: #fff;
573
+ }
574
+ .ha-skill-level {
575
+ display: -webkit-box;
576
+ display: -webkit-flex;
577
+ display: -ms-flexbox;
578
+ display: flex;
579
+ -webkit-box-orient: vertical;
580
+ -webkit-box-direction: normal;
581
+ -webkit-flex-direction: column;
582
+ -ms-flex-direction: column;
583
+ flex-direction: column;
584
+ -webkit-box-pack: center;
585
+ -ms-flex-pack: center;
586
+ -webkit-justify-content: center;
587
+ justify-content: center;
588
+ background-color: #007bff;
589
+ color: #fff;
590
+ text-align: center;
591
+ white-space: nowrap;
592
+ -webkit-transition: width .6s ease;
593
+ transition: width .6s ease;
594
+ }
595
+ .ha-skill--outside {
596
+ margin-top: 40px;
597
+ }
598
+ .ha-skill--inside:not(:first-child) {
599
+ margin-top: 20px;
600
+ }
601
+
602
+ .ha-gradient-heading {
603
+ margin-top: 0;
604
+ margin-bottom: 0;
605
+ }
606
+ .ha-gradient-heading > a {
607
+ color: inherit;
608
  text-decoration: none;
609
  }
assets/css/main.min.css CHANGED
@@ -1 +1 @@
1
- .happy-addon,.happy-addon *{box-sizing:border-box}.ha-text--left{text-align:left}.ha-text--center{text-align:center}.ha-text--right{text-align:right}.ha-btn{display:inline-block;padding:.575rem 1.3rem;border-radius:.25rem;background-color:#8c8c8c;color:#fff;vertical-align:middle;text-align:center;text-decoration:none;font-weight:700;font-size:14px;line-height:1.5;-webkit-transition:all .3s;transition:all .3s}.ha-btn:focus,.ha-btn:hover{background-color:#242424}.ha-btn--block{display:block}.ha-link{margin-right:15px;color:#3ca6ff;text-decoration:none}.ha-link:after{position:absolute;top:2px;right:-15px;content:"\f105";font-size:15px;font-family:"FontAwesome";-webkit-transition:all .3s;transition:all .3s}.ha-link:hover:after{right:-25px}.ha-card .elementor-widget-container{border-radius:.5rem;background-color:#fff;word-wrap:break-word;overflow-wrap:break-word}.ha-card-figure,.ha-link{position:relative;display:inline-block}.ha-blurb-figure>img,.ha-card-figure>img{width:100%;-o-object-fit:cover;object-fit:cover}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px);vertical-align:bottom}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-size:24px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-blurb-text>p,.ha-card-text>p{margin-top:0;margin-bottom:0}.ha-card--left .elementor-widget-container,.ha-card--right .elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left .elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.ha-card--left .ha-card-figure,.ha-card--right .ha-card-figure{max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right .elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-label{position:absolute}.ha-label{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-weight:700;font-size:14px}.ha-label--top-left{top:1rem;left:1rem}.ha-label--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-label--top-right{top:1rem;right:1rem}.ha-label--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-label--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-label--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-label--bottom-left{bottom:1rem;left:1rem}.ha-label--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-label--bottom-right{right:1rem;bottom:1rem}.ha-blurb .elementor-widget-container{padding:1.5rem;word-wrap:break-word;overflow-wrap:break-word}.ha-blurb-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-blurb-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-blurb-figure>i,.ha-icon-box-icon i{font-size:3rem;line-height:.86}.ha-blurb-figure>img{height:auto}.ha-blurb-figure--image{max-width:250px;width:250px}.ha-blurb-text+.ha-link{margin-top:1rem}.ha-icon-box .elementor-widget-container{word-wrap:break-word;overflow-wrap:break-word}.ha-icon-box-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-icon-box-icon{display:inline-block;margin-bottom:1.5rem}.ha-icon-box-icon i{color:inherit}.ha-icon-box-link{display:block;color:#151515;text-decoration:none}
1
+ .ha-card>.elementor-widget-container,.ha-icon-box>.elementor-widget-container,.ha-image-compare>.elementor-widget-container,.ha-infobox>.elementor-widget-container,.ha-member>.elementor-widget-container,.ha-review>.elementor-widget-container{border-radius:.5rem;background-color:#fff;box-shadow:0 .2rem 2.8rem rgba(36,36,36,.1);word-wrap:break-word;overflow-wrap:break-word}.happy-addon,.happy-addon *{box-sizing:border-box}.happy-addon img{max-width:100%;height:auto;-o-object-fit:cover;object-fit:cover}.happy-addon p:empty{display:none}.ha-cf:after,.ha-cf:before{display:table;content:" "}.ha-cf:after{clear:both}.ha-btn{display:inline-block;padding:.7rem 1.3rem;border-radius:.25rem;background-color:#8c8c8c;color:#fff;vertical-align:middle;text-align:center;text-decoration:none;font-weight:700;font-size:14px;line-height:1;-webkit-transition:all .3s;transition:all .3s}.ha-btn:focus,.ha-btn:hover{background-color:#242424}.ha-btn--block{display:block}.ha-btn-icon+.ha-btn-text,.ha-btn-text+.ha-btn-icon{margin-left:5px}.ha-link{position:relative;display:inline-block;margin-right:15px;color:#3ca6ff;text-decoration:none}.ha-link:after{position:absolute;top:2px;right:-15px;content:"\f105";font-size:15px;font-family:"FontAwesome";-webkit-transition:all .3s;transition:all .3s}.ha-link:hover:after{right:-25px}.ha-card-figure{position:relative;height:250px}.ha-card-figure>img{border-top-left-radius:calc(.5rem - 1px);border-top-right-radius:calc(.5rem - 1px)}.ha-card-body{padding:1.5rem}.ha-card-title{margin-top:0;margin-bottom:.75rem;color:#151515;font-size:24px}.ha-card-text{margin-bottom:2rem;color:#616161;font-size:16px;line-height:1.7}.ha-card-text>p,.ha-infobox-text>p{margin-top:0;margin-bottom:0}.ha-card--top .ha-card-figure,.ha-member-links>a{display:inline-block}.ha-card--left>.elementor-widget-container,.ha-card--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center}.ha-card--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-card--left .ha-card-body,.ha-card--left .ha-card-figure,.ha-card--right .ha-card-body,.ha-card--right .ha-card-figure{-webkit-box-flex:0;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.ha-card--left .ha-card-body,.ha-card--right .ha-card-body{padding:2.5rem}.ha-card--left .ha-card-figure>img{border-radius:calc(.5rem - 1px) 0 0 calc(.5rem - 1px)}.ha-card--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;text-align:right}.ha-card--right .ha-card-figure>img{border-radius:0 calc(.5rem - 1px) calc(.5rem - 1px) 0}.ha-card .ha-badge{position:absolute}.ha-badge{padding:.475rem 1.1rem;border-radius:50px;background-color:#fff;font-size:12px}.ha-badge--top-left{top:1rem;left:1rem}.ha-badge--top-center{top:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--top-right{top:1rem;right:1rem}.ha-badge--middle-left{top:50%;left:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--middle-center{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.ha-badge--middle-right{top:50%;right:1rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%)}.ha-badge--bottom-left{bottom:1rem;left:1rem}.ha-badge--bottom-center{bottom:1rem;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.ha-badge--bottom-right{right:1rem;bottom:1rem}.ha-infobox>.elementor-widget-container{padding:1.5rem}.ha-infobox-title{margin-top:0;margin-bottom:1rem;color:#151515;font-size:24px}.ha-infobox-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-infobox-figure--icon{text-align:center;font-size:3rem}.ha-infobox-figure>i{position:relative;display:block;width:1em;height:1em}.ha-card-figure>img,.ha-infobox-figure>img,.ha-member-figure img{width:100%;height:100%;vertical-align:bottom}.ha-infobox-text+.ha-link{margin-top:1rem}.ha-icon-box>.elementor-widget-container{position:relative;padding:1.25rem}.ha-icon-box-title{margin-top:0;margin-bottom:0;color:#151515;font-size:24px;-webkit-transition:color .3s;transition:color .3s}.ha-icon-box-icon{display:inline-block;margin-bottom:1rem;color:#151515;text-align:center;font-size:3rem;-webkit-transition:border .3s,background .3s,color .3s,-webkit-transform .3s;transition:transform .3s,border .3s,background .3s,color .3s;transition:transform .3s,border .3s,background .3s,color .3s,-webkit-transform .3s}.ha-icon-box-icon>i{display:block;width:1em;height:1em;-webkit-transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.ha-icon-box-link{display:block;color:transparent;text-decoration:none}.ha-icon-box .ha-badge{position:absolute;z-index:9999;background-color:#e2498a;color:#fff}.ha-member>.elementor-widget-container{padding:1.25rem}.ha-member-figure{display:inline-block;margin:0 0 1.5rem!important}.ha-member-name{margin-top:0;margin-bottom:.5rem;color:#151515;font-size:18px}.ha-member-position{margin-bottom:1.5rem;color:#7f7f7f;font-size:14px}.ha-member-bio{margin-bottom:1.5rem;font-size:14px;line-height:1.6}.ha-member-links>a{color:#9895ad;text-align:center;line-height:1;-webkit-transition:all .2s;transition:all .2s}.ha-member-links>a:focus,.ha-member-links>a:hover{color:#222}.ha-member-links>a>i{width:1em;height:1em}.ha-member-links>a:not(:last-child){margin-right:.3rem}.ha-review-header{margin-top:1.5rem}.ha-review-desc p,.ha-review-figure{margin:0}.ha-review-figure>img{width:100%;height:100%;border-radius:50%;vertical-align:bottom}.ha-review-reviewer{margin-top:0;margin-bottom:.3rem;color:#151515;font-size:18px}.ha-review-position{margin-bottom:.5rem;color:#7f7f7f;font-size:15px}.ha-review-ratting{display:inline-block;font-size:12px;line-height:1}.ha-review-ratting--num{padding:.25em .66em;border-radius:2.5em;background-color:#287dfe;color:#fff}.ha-review-ratting--star{display:inline-block;color:#ffbf36;font-family:"Fontawesome"}.ha-review-ratting--star>span{position:relative;overflow:hidden;height:1em}.ha-review-ratting--star span>span{position:absolute;top:0;left:0;overflow:hidden;padding-top:1.5em}.ha-review-ratting--star span>span:before,span .ha-review-ratting--star:before{position:absolute;top:0;left:0}.ha-review-ratting--star span:before{content:"\f006\f006\f006\f006\f006"}.ha-review-ratting--star span>span:before{content:"\f005\f005\f005\f005\f005"}.ha-review-desc{margin-top:1.5rem;font-size:16px;line-height:1.6}.ha-review--top>.elementor-widget-container{padding:2rem}.ha-review--top .ha-review-figure{display:inline-block;max-width:70px;height:70px}.ha-review--left>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row}.ha-review--left>.elementor-widget-container,.ha-review--right>.elementor-widget-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-ms-flex-align:center;padding-left:2rem}.ha-review--left .ha-review-figure,.ha-review--right .ha-review-figure{-webkit-box-flex:0;-webkit-flex:0 0 150px;-ms-flex:0 0 150px;flex:0 0 150px;max-width:150px;height:150px}.ha-review--left .ha-review-body,.ha-review--right .ha-review-body{-webkit-box-flex:0;-webkit-flex:0 0 calc(100% - 150px);-ms-flex:0 0 calc(100% - 150px);flex:0 0 calc(100% - 150px);padding:2rem;max-width:calc(100% - 150px)}.ha-review--left .ha-review-body>:first-child,.ha-review--right .ha-review-body>:first-child{margin-top:0}.ha-review--right>.elementor-widget-container{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;padding-right:2rem;padding-left:0;text-align:right}.ha-image-compare .twentytwenty-container,.ha-image-compare .twentytwenty-wrapper{border-radius:inherit}.ha-skills>.elementor-widget-container{padding-top:1px}.ha-skill{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#e9ecef;font-size:.75rem}.ha-skill--inside .ha-skill-info,.ha-skill--outside .ha-skill-info{text-align:left;font-size:14px}.ha-skill--inside .ha-skill-level-text,.ha-skill--outside .ha-skill-level-text{float:right}.ha-skill--outside{height:2px}.ha-skill--outside .ha-skill-level{position:relative}.ha-skill--outside .ha-skill-info{position:absolute;top:-25px;width:100%;color:#242424}.ha-skill--inside{overflow:hidden;height:30px;border-radius:.3rem}.ha-skill--inside .ha-skill-info{padding-right:1rem;padding-left:1rem;color:#fff}.ha-skill-level{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;background-color:#007bff;color:#fff;text-align:center;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.ha-skill--outside{margin-top:40px}.ha-skill--inside:not(:first-child){margin-top:20px}.ha-gradient-heading{margin-top:0;margin-bottom:0}.ha-gradient-heading>a{color:inherit;text-decoration:none}
assets/dev/admin/js/happy-addon.js ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ;(function($, elementor) {
2
+ 'use strict';
3
+
4
+ elementor.on('panel:init', function() {
5
+ $('#elementor-panel-elements-search-input').on('keyup', _.debounce(function() {
6
+ $('#elementor-panel-elements')
7
+ .find('.hm')
8
+ .parents('.elementor-element')
9
+ .addClass('happy-addons-addon');
10
+ }, 170));
11
+ });
12
+ }(jQuery, window.elementor));
assets/dev/admin/sass/main.scss ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .elementor-panel {
2
+ #elementor-panel-category-happy_addons .elementor-element,
3
+ #elementor-panel-elements .happy-addons-addon {
4
+ transition: background-image .3s;
5
+
6
+ .icon,
7
+ .title {
8
+ background-image: linear-gradient(135deg, #e2498a 25%, #562dd4 100%);
9
+ -webkit-background-clip: text;
10
+ -webkit-text-fill-color: transparent;
11
+
12
+ transition: background-image .2s, color .2s;
13
+ }
14
+
15
+ &:hover,
16
+ &:focus {
17
+ background-image: linear-gradient(135deg, #e2498a 0%, #562dd4 100%);
18
+
19
+ .icon,
20
+ .title {
21
+ color: #fff;
22
+ background: transparent;
23
+ -webkit-text-fill-color: initial;
24
+ }
25
+ }
26
+ }
27
+ }
assets/dev/js/happy-addons.js ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ window.Happy = window.Happy || {};
3
+
4
+ (function ($, Happy) {
5
+ var $window = $(window);
6
+
7
+ $.fn.getHappySettings = function() {
8
+ return this.data('happy-settings');
9
+ };
10
+
11
+ Happy.initImageComparison = function($scope) {
12
+ var $item = $scope.find('.hajs-image-comparison'),
13
+ settings = $item.getHappySettings(),
14
+ fieldMap = {
15
+ on_hover: 'move_slider_on_hover',
16
+ on_swipe: 'move_with_handle_only',
17
+ on_click: 'click_to_move'
18
+ };
19
+
20
+ settings[fieldMap[settings.move_handle || 'on_swipe']] = true;
21
+ delete settings.move_handle;
22
+ $item.imagesLoaded().done(function() {
23
+ $item.twentytwenty(settings);
24
+ });
25
+ };
26
+
27
+ $window.on( 'elementor/frontend/init', function() {
28
+ var FloatingFx = elementorModules.frontend.handlers.Base.extend({
29
+ onInit: function() {
30
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
31
+ this.run();
32
+ },
33
+
34
+ getTheElement: function() {
35
+ return this.$element.find('.elementor-widget-container')[0];
36
+ },
37
+
38
+ resetFx: function() {
39
+ anime.remove(this.getTheElement());
40
+ this.getTheElement() && this.getTheElement().removeAttribute('style');
41
+ },
42
+
43
+ onDestroy: function() {
44
+ elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this, arguments);
45
+ this.resetFx();
46
+ },
47
+
48
+ onElementChange: function() {
49
+ this.resetFx();
50
+ this.run();
51
+ },
52
+
53
+ run: function() {
54
+ var settings = this.getElementSettings(),
55
+ fxSettings = {
56
+ targets: this.getTheElement(),
57
+ loop: true,
58
+ direction: 'alternate',
59
+ easing: 'easeInOutSine'
60
+ };
61
+
62
+ if (settings.ha_floating_fx_translate_toggle) {
63
+ if (settings.ha_floating_fx_translate_x.size) {
64
+ fxSettings.translateX = {
65
+ value: settings.ha_floating_fx_translate_x.size,
66
+ duration: settings.ha_floating_fx_translate_duration.size,
67
+ delay: settings.ha_floating_fx_translate_delay.size || 0
68
+ }
69
+ }
70
+ if (settings.ha_floating_fx_translate_y.size) {
71
+ fxSettings.translateY = {
72
+ value: settings.ha_floating_fx_translate_y.size,
73
+ duration: settings.ha_floating_fx_translate_duration.size,
74
+ delay: settings.ha_floating_fx_translate_delay.size || 0
75
+ }
76
+ }
77
+ }
78
+
79
+ if (settings.ha_floating_fx_rotate_toggle) {
80
+ if (settings.ha_floating_fx_rotate_x.size) {
81
+ fxSettings.rotateX = {
82
+ value: settings.ha_floating_fx_rotate_x.size,
83
+ duration: settings.ha_floating_fx_rotate_duration.size,
84
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
85
+ }
86
+ }
87
+ if (settings.ha_floating_fx_rotate_y.size) {
88
+ fxSettings.rotateY = {
89
+ value: settings.ha_floating_fx_rotate_y.size,
90
+ duration: settings.ha_floating_fx_rotate_duration.size,
91
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
92
+ }
93
+ }
94
+ if (settings.ha_floating_fx_rotate_z.size) {
95
+ fxSettings.rotateZ = {
96
+ value: settings.ha_floating_fx_rotate_z.size,
97
+ duration: settings.ha_floating_fx_rotate_duration.size,
98
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
99
+ }
100
+ }
101
+ }
102
+
103
+ if (settings.ha_floating_fx_scale_toggle) {
104
+ if (settings.ha_floating_fx_scale_x.size) {
105
+ fxSettings.scaleX = {
106
+ value: settings.ha_floating_fx_scale_x.size,
107
+ duration: settings.ha_floating_fx_scale_duration.size,
108
+ delay: settings.ha_floating_fx_scale_delay.size || 0
109
+ }
110
+ }
111
+ if (settings.ha_floating_fx_scale_y.size) {
112
+ fxSettings.scaleY = {
113
+ value: settings.ha_floating_fx_scale_y.size,
114
+ duration: settings.ha_floating_fx_scale_duration.size,
115
+ delay: settings.ha_floating_fx_scale_delay.size || 0
116
+ }
117
+ }
118
+ }
119
+
120
+ if (settings.ha_floating_fx_translate_toggle || settings.ha_floating_fx_rotate_toggle || settings.ha_floating_fx_scale_toggle) {
121
+ this.getTheElement() && this.getTheElement().style.setProperty('will-change', 'transform');
122
+ anime(fxSettings);
123
+ }
124
+ }
125
+ });
126
+
127
+ elementorFrontend.hooks.addAction(
128
+ 'frontend/element_ready/ha-image-compare.default',
129
+ Happy.initImageComparison
130
+ );
131
+
132
+ elementorFrontend.hooks.addAction(
133
+ 'frontend/element_ready/widget',
134
+ function ($scope) {
135
+ new FloatingFx({ $element: $scope });
136
+ }
137
+ );
138
+ });
139
+
140
+ } (jQuery, Happy));
assets/dev/sass/_btn.scss ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-btn {
2
+ background-color: #8c8c8c;
3
+ color: #fff;
4
+ text-decoration: none;
5
+ padding: .7rem 1.3rem;
6
+ line-height: 1;
7
+ border-radius: .25rem;
8
+ text-align: center;
9
+ vertical-align: middle;
10
+ display: inline-block;
11
+ font-size: 14px;
12
+ font-weight: bold;
13
+ transition: all .3s;
14
+
15
+ &:hover,
16
+ &:focus {
17
+ background-color: #242424;
18
+ }
19
+
20
+ &--block {
21
+ display: block;
22
+ }
23
+
24
+ &-icon + &-text,
25
+ &-text + &-icon {
26
+ margin-left: 5px;
27
+ }
28
+ }
assets/dev/sass/_card.scss ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-card {
2
+
3
+ @extend %happyWidgetContainer;
4
+
5
+ &-figure {
6
+ position: relative;
7
+ height: 250px;
8
+
9
+ > img {
10
+ border-top-left-radius: calc(.5rem - 1px);
11
+ border-top-right-radius: calc(.5rem - 1px);
12
+ vertical-align: bottom;
13
+ height: 100%;
14
+ width: 100%;
15
+ }
16
+ }
17
+
18
+ &-body {
19
+ padding: 1.5rem;
20
+ }
21
+
22
+ &-title {
23
+ margin-top: 0;
24
+ margin-bottom: .75rem;
25
+ color: #151515;
26
+ font-size: 24px;
27
+ }
28
+
29
+ &-text {
30
+ margin-bottom: 2rem;
31
+ color: #616161;
32
+ font-size: 16px;
33
+ line-height: 1.7;
34
+
35
+ > p {
36
+ margin-top: 0;
37
+ margin-bottom: 0;
38
+ }
39
+ }
40
+
41
+ // Card variation
42
+ &--top {
43
+ .ha-card-figure {
44
+ display: inline-block;
45
+ }
46
+ }
47
+
48
+ &--right,
49
+ &--left {
50
+ @include widgetContainer {
51
+ display: flex;
52
+ flex-direction: row;
53
+ align-items: center;
54
+ }
55
+
56
+ .ha-card-figure {
57
+ flex: 0 0 50%;
58
+ max-width: 50%;
59
+ }
60
+
61
+ .ha-card-body {
62
+ padding: 2.5rem;
63
+ flex: 0 0 50%;
64
+ max-width: 50%;
65
+ }
66
+ }
67
+
68
+ &--left {
69
+ .ha-card-figure > img {
70
+ border-radius: calc(.5rem - 1px) 0 0 calc(.5rem - 1px);
71
+ }
72
+ }
73
+
74
+ &--right {
75
+ @include widgetContainer {
76
+ flex-direction: row-reverse;
77
+ text-align: right;
78
+ }
79
+
80
+ .ha-card-figure > img {
81
+ border-radius: 0 calc(.5rem - 1px) calc(.5rem - 1px) 0;
82
+ }
83
+ }
84
+ }
85
+
86
+ // Card label
87
+ .ha-card .ha-badge {
88
+ position: absolute;
89
+ }
90
+
91
+ .ha-badge {
92
+ background-color: #fff;
93
+ padding: .475rem 1.1rem;
94
+ border-radius: 50px;
95
+ font-size: 12px;
96
+
97
+ &--top-left {
98
+ left: 1rem;
99
+ top: 1rem;
100
+ }
101
+
102
+ &--top-center {
103
+ left: 50%;
104
+ transform: translateX(-50%);
105
+ top: 1rem;
106
+ }
107
+
108
+ &--top-right {
109
+ right: 1rem;
110
+ top: 1rem;
111
+ }
112
+
113
+ &--middle-left {
114
+ top: 50%;
115
+ transform: translateY(-50%);
116
+ left: 1rem;
117
+ }
118
+
119
+ &--middle-center {
120
+ left: 50%;
121
+ top: 50%;
122
+ transform: translate(-50%,-50%);
123
+ }
124
+
125
+ &--middle-right {
126
+ top: 50%;
127
+ transform: translateY(-50%);
128
+ right: 1rem;
129
+ }
130
+
131
+ &--bottom-left {
132
+ left: 1rem;
133
+ bottom: 1rem;
134
+ }
135
+
136
+ &--bottom-center {
137
+ left: 50%;
138
+ transform: translateX(-50%);
139
+ bottom: 1rem;
140
+ }
141
+
142
+ &--bottom-right {
143
+ right: 1rem;
144
+ bottom: 1rem;
145
+ }
146
+ }
assets/dev/sass/_common.scss ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .happy-addon {
2
+ box-sizing: border-box;
3
+ * {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ img {
8
+ max-width: 100%;
9
+ height: auto;
10
+ object-fit: cover;
11
+ }
12
+
13
+ p:empty {
14
+ display: none;
15
+ }
16
+ }
17
+
18
+ .ha-cf {
19
+ &:before,
20
+ &:after {
21
+ content: " ";
22
+ display: table;
23
+ }
24
+
25
+ &:after {
26
+ clear: both;
27
+ }
28
+ }
assets/dev/sass/_dual-btn.scss ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-dual-btn{
2
+ position: relative;
3
+ display: inline-block;
4
+ &-link {
5
+ float: left;
6
+ position: relative;
7
+ .ha-dual-btn-link-primary{
8
+ background: #3266fd;
9
+ border: none;
10
+ color: #fff
11
+ }
12
+ .ha-dual-btn-link-secondary{
13
+ background: #27374c;
14
+ border: none;
15
+ color: #fff
16
+ }
17
+ a{
18
+ display: block;
19
+ vertical-align: middle;
20
+ overflow: hidden;
21
+ text-align: center;
22
+ position: relative;
23
+ transition: border-color ease .5s,background ease .5s,color ease .5s;
24
+ font-size: 14px;
25
+ font-weight: 400;
26
+ line-height: 1.428571429;
27
+ color: #7f7f7f;
28
+ border: 1px solid #e7e7e7;
29
+ background-color: #fff;
30
+ padding: 1.2rem 3rem;
31
+ text-transform: uppercase;
32
+ text-decoration: none;
33
+ box-sizing: initial;
34
+ border-radius: 50px;
35
+ i{
36
+ position: relative;
37
+ top: 3px;
38
+ }
39
+ }
40
+
41
+ }
42
+
43
+ &-link:first-child a{
44
+ border-top-right-radius: 0;
45
+ border-bottom-right-radius: 0;
46
+ border-right: none;
47
+ i {
48
+ float: left;
49
+ padding-right: 1rem;
50
+ }
51
+ }
52
+ &-link:last-child a{
53
+ border-top-left-radius: 0;
54
+ border-bottom-left-radius: 0;
55
+ i {
56
+ float: right;
57
+ padding-left: 1rem;
58
+ }
59
+ }
60
+
61
+ .ha-middle-text {
62
+ display: block;
63
+ position: absolute;
64
+ top: 50%;
65
+ right: 0;
66
+ transform: translate(50%,-50%);
67
+ height: 30px;
68
+ width: 30px;
69
+ line-height: 30px;
70
+ text-align: center;
71
+ background: #fff;
72
+ color: #7f7f7f;
73
+ box-sizing: content-box;
74
+ border-radius: 100%;
75
+ font-size: 12px;
76
+ //border: 5px solid rgba(255,255,255, .6);
77
+ box-shadow: 0 0 0 5px rgba(255,255,255,0.3);
78
+ font-weight: 400;
79
+ z-index: 12;
80
+ transition: border-color ease .5s,background ease .5s,color ease .5s;
81
+ text-transform: uppercase;
82
+ }
83
+ }
assets/dev/sass/_gallery-filter.scss ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-gallery-filter {
2
+ list-style: none;
3
+ margin-bottom: 2rem;
4
+ padding: 0;
5
+
6
+ > li {
7
+ display: inline-block;
8
+ margin-right: 5px;
9
+ margin-bottom: 20px;
10
+ margin-left: 5px;
11
+
12
+ > button {
13
+ color: #000;
14
+ background-color: transparent;
15
+ text-transform: capitalize;
16
+ font-size: 16px;
17
+ border: 1px solid transparent;
18
+ padding: .3rem 1rem;
19
+ transition: all .3s;
20
+ cursor: pointer;
21
+
22
+ &:hover {
23
+ color: #b0b0b0;
24
+ border-color: #b0b0b0;
25
+ }
26
+
27
+ &:focus {
28
+ outline: 0;
29
+ }
30
+ }
31
+ }
32
+
33
+ > .ha-filter-active {
34
+ > button {
35
+ color: #b0b0b0;
36
+ border-color: #b0b0b0;
37
+ }
38
+ }
39
+ }
assets/dev/sass/_gradient-heading.scss ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ .ha-gradient-heading {
2
+ margin-top: 0;
3
+ margin-bottom: 0;
4
+
5
+ > a {
6
+ color: inherit;
7
+ text-decoration: none;
8
+ }
9
+ }
assets/dev/sass/_icon-box.scss ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-icon-box {
2
+ @extend %happyWidgetContainer;
3
+
4
+ @include widgetContainer {
5
+ position: relative;
6
+ padding: 1.25rem;
7
+ }
8
+
9
+ &-title {
10
+ margin-top: 0;
11
+ margin-bottom: 0;
12
+ color: #151515;
13
+ font-size: 24px;
14
+
15
+ transition: color .3s;
16
+ }
17
+
18
+ &-icon {
19
+ display: inline-block;
20
+ margin-bottom: 1rem;
21
+ font-size: 3rem;
22
+ text-align: center;
23
+ color: #151515;
24
+
25
+ transition: transform .3s, border .3s, background .3s, color .3s;
26
+
27
+ > i {
28
+ width: 1em;
29
+ height: 1em;
30
+ display: block;
31
+
32
+ transition: transform .3s;
33
+ }
34
+ }
35
+
36
+ &-link {
37
+ display: block;
38
+ text-decoration: none;
39
+ color: transparent;
40
+ }
41
+
42
+ .ha-badge {
43
+ position: absolute;
44
+ background-color: $secondary-color;
45
+ color: #fff;
46
+ z-index: 9999;
47
+ }
48
+ }
assets/dev/sass/_image-comparison.scss ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ .ha-image-compare {
2
+
3
+ @extend %happyWidgetContainer;
4
+
5
+ .twentytwenty-container,
6
+ .twentytwenty-wrapper {
7
+ border-radius: inherit;
8
+ }
9
+ }
assets/dev/sass/_image-grid.scss ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-image-grid {
2
+ &-item {
3
+ float: left;
4
+ }
5
+
6
+ &-link {
7
+ display: block;
8
+ text-decoration: none;
9
+ position: relative;
10
+ overflow: hidden;
11
+ margin: 10px;
12
+
13
+ &:focus {
14
+ outline: none;
15
+ }
16
+
17
+ img {
18
+ vertical-align: bottom;
19
+ transition: transform 0.25s linear;
20
+ }
21
+
22
+ &:hover {
23
+ img {
24
+ transform: scale(1.25);
25
+ }
26
+
27
+ .ha-image-grid {
28
+ &-overlay {
29
+ opacity: 1;
30
+ }
31
+ &-content {
32
+ opacity: 1;
33
+ &:before {
34
+ width: 80px;
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+
41
+ &-overlay {
42
+ position: absolute;
43
+ top: 0;
44
+ right: 0;
45
+ bottom: 0;
46
+ left: 0;
47
+ opacity: 0;
48
+ background-color: rgba(0, 0, 0, .8);
49
+ padding: 30px;
50
+ transition: opacity .5s;
51
+ }
52
+
53
+ &-content {
54
+ position: absolute;
55
+ transition: opacity .5s;
56
+ color: #fff;
57
+ font-size: 16px;
58
+ width: 100%;
59
+ opacity: 0;
60
+
61
+ &:before {
62
+ content: '';
63
+ background: #fe413b;
64
+ width: 35px;
65
+ height: 1px;
66
+ position: absolute;
67
+ top: -15px;
68
+ transition: all .3s;
69
+ }
70
+
71
+ &--topleft {
72
+ top: 2.9rem;
73
+ left: 2rem;
74
+ text-align: left;
75
+ &:before {
76
+ left: 0;
77
+ }
78
+ }
79
+
80
+ &--topcenter {
81
+ top: 2.9rem;
82
+ left: 50%;
83
+ transform: translateX(-50%);
84
+ text-align: center;
85
+ &:before {
86
+ left: 50%;
87
+ transform: translateX(-50%);
88
+ }
89
+ }
90
+
91
+ &--topright {
92
+ top: 2.9rem;
93
+ right: 2rem;
94
+ text-align: right;
95
+ &:before {
96
+ right: 0;
97
+ }
98
+ }
99
+
100
+ &--bottomleft {
101
+ bottom: 2rem;
102
+ left: 2rem;
103
+ text-align: left;
104
+ &:before {
105
+ left: 0;
106
+ }
107
+ }
108
+
109
+ &--bottomcenter {
110
+ bottom: 2rem;
111
+ left: 50%;
112
+ transform: translateX(-50%);
113
+ text-align: center;
114
+ &:before {
115
+ left: 50%;
116
+ transform: translateX(-50%);
117
+ }
118
+ }
119
+
120
+ &--bottomright {
121
+ bottom: 2rem;
122
+ right: 2rem;
123
+ text-align: right;
124
+ &:before {
125
+ right: 0;
126
+ }
127
+ }
128
+
129
+ &--middleleft {
130
+ top: 50%;
131
+ transform: translateY(-50%);
132
+ left: 2rem;
133
+ text-align: left;
134
+ &:before {
135
+ left: 0;
136
+ }
137
+ }
138
+
139
+ &--middlecenter {
140
+ top: 50%;
141
+ transform: translateX(-50%);
142
+ left: 50%;
143
+ text-align: center;
144
+ &:before {
145
+ left: 50%;
146
+ transform: translateX(-50%);
147
+ }
148
+ }
149
+
150
+ &--middleright {
151
+ top: 50%;
152
+ transform: translateY(-50%);
153
+ right: 2rem;
154
+ text-align: right;
155
+ &:before {
156
+ right: 0;
157
+ }
158
+ }
159
+ }
160
+
161
+ &--col-2 {
162
+ .ha-image-grid-item {
163
+ width: 50%;
164
+ }
165
+ }
166
+
167
+ &--col-3 {
168
+ .ha-image-grid-item {
169
+ width: 33.33%;
170
+ }
171
+ }
172
+
173
+ &--col-4 {
174
+ .ha-image-grid-item {
175
+ width: 25%;
176
+ }
177
+ }
178
+
179
+ &--col-5 {
180
+ .ha-image-grid-item {
181
+ width: 20%;
182
+ }
183
+ }
184
+ }
assets/dev/sass/_infobox.scss ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-infobox {
2
+ @extend %happyWidgetContainer;
3
+
4
+ @include widgetContainer {
5
+ padding: 1.5rem;
6
+ }
7
+
8
+ &-title {
9
+ margin-top: 0;
10
+ margin-bottom: 1rem;
11
+ color: #151515;
12
+ font-size: 24px;
13
+ }
14
+
15
+ &-figure {
16
+ display: inline-block;
17
+ margin: 0 0 1.5rem !important;
18
+
19
+ &--icon {
20
+ font-size: 3rem;
21
+ text-align: center;
22
+ }
23
+
24
+ > i {
25
+ width: 1em;
26
+ height: 1em;
27
+ position: relative;
28
+ display: block;
29
+ }
30
+
31
+ > img {
32
+ width: 100%;
33
+ height: 100%;
34
+ vertical-align: bottom;
35
+ }
36
+ }
37
+
38
+ &-text {
39
+ & + .ha-link {
40
+ margin-top: 1rem;
41
+ }
42
+
43
+ > p {
44
+ margin-top: 0;
45
+ margin-bottom: 0;
46
+ }
47
+ }
48
+ }
assets/dev/sass/_justified-gallery.scss ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-justified-gallery-item {
2
+ transition: all .3s;
3
+ border-radius: 6px;
4
+
5
+ > img {
6
+ width: 100%;
7
+ transition: all 0.25s !important;
8
+ }
9
+
10
+ &:hover {
11
+ > img {
12
+ transform: scale(1.25);
13
+ }
14
+ }
15
+ }
16
+
17
+ //modified justified gallery css
18
+ .justified-gallery > a > .caption,
19
+ .justified-gallery > div > .caption,
20
+ .justified-gallery > figure > .caption{
21
+ padding: 10px;
22
+ }
23
+
24
+ .justified-gallery > a > .caption,
25
+ .justified-gallery > div > .caption,
26
+ .justified-gallery > figure > .caption {
27
+ bottom: -100px !important;
28
+ transition: all 0.25s !important;
29
+ animation: haSmoothReveal .3s forwards;
30
+ }
31
+
32
+ .justified-gallery > a > .caption.caption-visible,
33
+ .justified-gallery > div > .caption.caption-visible,
34
+ .justified-gallery > figure > .caption.caption-visible {
35
+ bottom: 0 !important;
36
+ }
37
+
38
+ @keyframes haSmoothReveal {
39
+ 0% {
40
+ -webkit-transform: translateY(100px);
41
+ transform: translateY(100px)
42
+ }
43
+
44
+ to {
45
+ -webkit-transform: translateY(0);
46
+ transform: translateY(0)
47
+ }
48
+ }
assets/dev/sass/_link.scss ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-link {
2
+ display: inline-block;
3
+ position: relative;
4
+ text-decoration: none;
5
+ color: #3ca6ff;
6
+ margin-right: 15px;
7
+
8
+ &:after {
9
+ font-family: "FontAwesome";
10
+ font-size: 15px;
11
+ position: absolute;
12
+ top: 2px;
13
+ right: -15px;
14
+ content: "\f105";
15
+ transition: all .3s;
16
+ }
17
+
18
+ &:hover {
19
+ &:after {
20
+ right: -25px;
21
+ }
22
+ }
23
+ }
assets/dev/sass/_logo-grid.scss ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-logo-grid {
2
+ &-wrapper {
3
+ @extend .ha-cf;
4
+ }
5
+
6
+ &-item {
7
+ height: 180px;
8
+ float: left;
9
+ overflow: hidden;
10
+ padding: 30px;
11
+ border-color: #e7e7e7;
12
+ }
13
+
14
+ &-img {
15
+ object-fit: cover;
16
+ width: 100%;
17
+ }
18
+
19
+ @for $i from 2 through 6 {
20
+ &--col-#{$i} > &-item {
21
+ width: calc(100% / #{$i});
22
+ }
23
+ }
24
+
25
+ // TicTacToe style
26
+ &--tictactoe &-item {
27
+ border-width: 2px 2px 0 0;
28
+ border-style: solid;
29
+ }
30
+
31
+ @for $i from 2 through 6 {
32
+ &--tictactoe #{&}--col-#{$i} > &-item {
33
+ &:nth-child(#{$i}n) {
34
+ border-right-width: 0 !important;
35
+ }
36
+
37
+ &:nth-child(-n + #{$i}) {
38
+ border-top-width: 0 !important;
39
+ }
40
+ }
41
+ }
42
+
43
+ // Border style
44
+ &--border {
45
+ border-radius: .5rem;
46
+ }
47
+
48
+ &--border &-item {
49
+ border-width: 0 2px 2px 0;
50
+ border-style: solid;
51
+
52
+ &:first-child {
53
+ border-top-left-radius: 10px;
54
+ }
55
+
56
+ &:last-child {
57
+ border-bottom-right-radius: 10px;
58
+ }
59
+ }
60
+
61
+ @for $i from 2 through 6 {
62
+ &--border #{&}--col-#{$i} > &-item {
63
+ &:nth-child(-n + #{$i}) {
64
+ border-top-width: 3px;
65
+ }
66
+
67
+ &:nth-child(#{$i}n + 1) {
68
+ border-left-width: 3px;
69
+ }
70
+
71
+ &:nth-child(#{$i}) {
72
+ border-top-right-radius: 10px;
73
+ }
74
+
75
+ &:nth-last-child(#{$i}) {
76
+ border-bottom-left-radius: 10px;
77
+ }
78
+ }
79
+ }
80
+
81
+ &--box &-wrapper {
82
+ margin: -.5rem;
83
+ }
84
+
85
+ &--box &-item {
86
+ margin: .5rem;
87
+ border-radius: .5rem;
88
+ border-width: 2px;
89
+ border-style: solid;
90
+ }
91
+
92
+ @for $i from 2 through 6 {
93
+ &--box #{&}--col-#{$i} > &-item {
94
+ width: calc((100% / #{$i}) - 1rem);
95
+ }
96
+ }
97
+ }
assets/dev/sass/_member.scss ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-member {
2
+ @extend %happyWidgetContainer;
3
+
4
+ @include widgetContainer {
5
+ padding: 1.25rem;
6
+ }
7
+
8
+ &-figure {
9
+ display: inline-block;
10
+ margin: 0 0 1.5rem !important;
11
+
12
+ img {
13
+ width: 100%;
14
+ height: 100%;
15
+ vertical-align: bottom;
16
+ }
17
+ }
18
+
19
+ &-name {
20
+ margin-top: 0;
21
+ margin-bottom: .5rem;
22
+ color: #151515;
23
+ font-size: 18px;
24
+ }
25
+
26
+ &-position {
27
+ color: #7f7f7f;
28
+ font-size: 14px;
29
+ margin-bottom: 1.5rem;
30
+ }
31
+
32
+ &-bio {
33
+ font-size: 14px;
34
+ line-height: 1.6;
35
+ margin-bottom: 1.5rem;
36
+ }
37
+
38
+ &-links {
39
+ > a {
40
+ color: #9895ad;
41
+ transition: all .2s;
42
+ text-align: center;
43
+ display: inline-block;
44
+ line-height: 1;
45
+
46
+ &:hover,
47
+ &:focus {
48
+ color: #222;
49
+ }
50
+
51
+ > i {
52
+ width: 1em;
53
+ height: 1em;
54
+ }
55
+
56
+ &:not(:last-child) {
57
+ margin-right: .3rem;
58
+ }
59
+ }
60
+ }
61
+ }
assets/dev/sass/_mixins.scss ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @mixin widgetContainer {
2
+ > .elementor-widget-container {
3
+ @content;
4
+ }
5
+ }
6
+
7
+ %happyWidgetContainer {
8
+ @include widgetContainer {
9
+ background-color: #fff;
10
+ box-shadow: 0 0.2rem 2.8rem rgba(36, 36, 36, .1);
11
+ word-wrap: break-word;
12
+ overflow-wrap: break-word;
13
+ border-radius: .5rem;
14
+ }
15
+ }
assets/dev/sass/_review.scss ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-review {
2
+ @extend %happyWidgetContainer;
3
+
4
+ &-header {
5
+ margin-top: 1.5rem;
6
+ }
7
+
8
+ &-figure {
9
+ margin: 0;
10
+
11
+ > img {
12
+ border-radius: 50%;
13
+ vertical-align: bottom;
14
+ height: 100%;
15
+ width: 100%;
16
+ }
17
+ }
18
+
19
+ &-reviewer {
20
+ margin-top: 0;
21
+ margin-bottom: .3rem;
22
+ color: #151515;
23
+ font-size: 18px;
24
+ }
25
+
26
+ &-position {
27
+ color: #7f7f7f;
28
+ font-size: 15px;
29
+ margin-bottom: .5rem;
30
+ }
31
+
32
+ &-ratting {
33
+ display: inline-block;
34
+ font-size: 12px;
35
+ line-height: 1;
36
+ }
37
+
38
+ &-ratting--num {
39
+ background-color: #287dfe;
40
+ color: #fff;
41
+ padding: .25em .66em;
42
+ border-radius: 2.5em;
43
+ }
44
+
45
+ &-ratting--star {
46
+ display: inline-block;
47
+ color: #ffbf36;
48
+ font-family: "Fontawesome";
49
+
50
+ > span {
51
+ overflow: hidden;
52
+ position: relative;
53
+ height: 1em;
54
+ }
55
+
56
+ span > span {
57
+ padding-top: 1.5em;
58
+ overflow: hidden;
59
+ top: 0;
60
+ left: 0;
61
+ position: absolute;
62
+ }
63
+
64
+ span &:before,
65
+ span > span:before {
66
+ top: 0;
67
+ left: 0;
68
+ position: absolute;
69
+ }
70
+
71
+ span:before {
72
+ content: "\f006\f006\f006\f006\f006";
73
+ }
74
+
75
+ span > span:before {
76
+ content: "\f005\f005\f005\f005\f005";
77
+ }
78
+ }
79
+
80
+ &-desc {
81
+ margin-top: 1.5rem;
82
+ font-size: 16px;
83
+ line-height: 1.6;
84
+
85
+ p {
86
+ margin: 0;
87
+ }
88
+ }
89
+
90
+ &--top {
91
+ @include widgetContainer {
92
+ padding: 2rem;
93
+ }
94
+
95
+ .ha-review-figure {
96
+ display: inline-block;
97
+ max-width: 70px;
98
+ height: 70px;
99
+ }
100
+ }
101
+
102
+ &--left,
103
+ &--right {
104
+ @include widgetContainer {
105
+ display: flex;
106
+ flex-direction: row;
107
+ padding-left: 2rem;
108
+ align-items: center;
109
+ }
110
+
111
+ .ha-review {
112
+ &-figure {
113
+ flex: 0 0 150px;
114
+ max-width: 150px;
115
+ height: 150px;
116
+ }
117
+
118
+ &-body {
119
+ flex: 0 0 calc(100% - 150px);
120
+ max-width: calc(100% - 150px);
121
+ padding: 2rem;
122
+
123
+ > :first-child {
124
+ margin-top: 0;
125
+ }
126
+ }
127
+ }
128
+ }
129
+
130
+ &--right {
131
+ @include widgetContainer {
132
+ flex-direction: row-reverse;
133
+ padding-right: 2rem;
134
+ padding-left: 0;
135
+ text-align: right;
136
+ }
137
+ }
138
+ }
assets/dev/sass/_skills.scss ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-skills {
2
+ @include widgetContainer {
3
+ padding-top: 1px;
4
+ }
5
+ }
6
+
7
+ .ha-skill {
8
+ display: flex;
9
+ font-size: .75rem;
10
+ background-color: #e9ecef;
11
+
12
+ &--outside,
13
+ &--inside {
14
+ .ha-skill-info {
15
+ font-size: 14px;
16
+ text-align: left;
17
+ }
18
+
19
+ .ha-skill-level-text {
20
+ float: right;
21
+ }
22
+ }
23
+
24
+ &--outside {
25
+ height: 2px;
26
+
27
+ .ha-skill-level {
28
+ position: relative;
29
+ }
30
+
31
+ .ha-skill-info {
32
+ position: absolute;
33
+ width: 100%;
34
+ top: -25px;
35
+ color: #242424;
36
+ }
37
+ }
38
+
39
+ &--inside {
40
+ height: 30px;
41
+ overflow: hidden;
42
+ border-radius: .3rem;
43
+
44
+ .ha-skill-info {
45
+ padding-right: 1rem;
46
+ padding-left: 1rem;
47
+ color: #fff;
48
+ }
49
+ }
50
+
51
+ &-level {
52
+ display: flex;
53
+ flex-direction: column;
54
+ justify-content: center;
55
+ color: #fff;
56
+ text-align: center;
57
+ white-space: nowrap;
58
+ background-color: #007bff;
59
+ transition: width .6s ease;
60
+ }
61
+
62
+ &--outside {
63
+ margin-top: 40px;
64
+ }
65
+
66
+ &--inside:not(:first-child) {
67
+ margin-top: 20px;
68
+ }
69
+ }
assets/dev/sass/_slider-carousel.scss ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-slider,
2
+ .ha-carousel {
3
+ .slick-prev,
4
+ .slick-next {
5
+ color: #8c8c8c;
6
+ background-color: rgba(255,255,255,.8);
7
+ border: 1px solid rgba(255,255,255,.8);
8
+ font-size: 12px;
9
+ text-align: center;
10
+ border-radius: 50%;
11
+ z-index: 999;
12
+ opacity: 1;
13
+ padding: 0;
14
+
15
+ &:hover,
16
+ &:focus {
17
+ background-color: white;
18
+ }
19
+
20
+ &:before {
21
+ content: '';
22
+ }
23
+ }
24
+
25
+ .slick-disabled {
26
+ opacity: .7;
27
+ }
28
+
29
+ .slick-prev {
30
+ left: 25px;
31
+ }
32
+
33
+ .slick-next {
34
+ right: 25px;
35
+ }
36
+
37
+ .slick-dots {
38
+ bottom: -40px;
39
+
40
+ li {
41
+ margin-left: 2px;
42
+ margin-right: 2px;
43
+ }
44
+
45
+ li button:before {
46
+ color: #1b1b1b;
47
+ opacity: 1;
48
+ }
49
+
50
+ li button:hover:before,
51
+ .slick-active button:before {
52
+ transform: scale(1.5);
53
+ }
54
+ }
55
+ }
56
+
57
+ .ha-carousel {
58
+ .slick-prev,
59
+ .slick-next {
60
+ width: 40px;
61
+ height: 40px;
62
+ line-height: 40px;
63
+ }
64
+ }
65
+
66
+ .ha-slider {
67
+ .slick-prev,
68
+ .slick-next {
69
+ width: 50px;
70
+ height: 50px;
71
+ line-height: 50px;
72
+ }
73
+ }
74
+
75
+ .ha-carousel {
76
+ .slick-slide > div {
77
+ padding-left: 5px;
78
+ padding-right: 5px;
79
+ }
80
+ .slick-slide > div + div {
81
+ padding-top: 10px;
82
+ }
83
+ }
84
+
85
+ .ha-slider {
86
+ &-item {
87
+ position: relative;
88
+ vertical-align: bottom;
89
+ }
90
+
91
+ &-content {
92
+ position: absolute;
93
+ bottom: 0;
94
+ padding: 1.5rem;
95
+ background: linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0.3));
96
+ width: 100%;
97
+ }
98
+
99
+ &-title {
100
+ font-size: 20px;
101
+ margin-top: 0;
102
+ margin-bottom: .2rem;
103
+ color: #fff;
104
+ }
105
+
106
+ &-subtitle {
107
+ margin: 0;
108
+ color: #fff;
109
+ }
110
+ }
assets/dev/sass/_testimonial.scss ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ha-testimonial{
2
+ &:before {
3
+ visibility: hidden;
4
+ height: 0;
5
+ display: block;
6
+ clear: both;
7
+ }
8
+ &-info{
9
+ background-color: #fff;
10
+ box-shadow: 0 0.2rem 2.8rem rgba(36, 36, 36, .1);
11
+ border-radius: 6px;
12
+ line-height: 1.6rem;
13
+ }
14
+
15
+ &-thumb{
16
+ display: inline-block;
17
+ width: 65px;
18
+ height: auto;
19
+ img{
20
+ width: 100%;
21
+ height: auto;
22
+ border-radius: 50%;
23
+ }
24
+ }
25
+ &-author{
26
+ font-size: 18px;
27
+ font-weight: bold;
28
+ color: #242424;
29
+ }
30
+ &-designation{
31
+ font-size: 16px;
32
+ color: #8c8c8c;
33
+ }
34
+ }
35
+
36
+ // left align
37
+ .ha-position--left {
38
+ .ha-testimonial-media{
39
+ display: block;
40
+ text-align: left;
41
+ }
42
+ .ha-testimonial-media-body{
43
+ flex: 1;
44
+ }
45
+ .ha-testimonial-thumb{
46
+ margin-right: 1rem;
47
+ }
48
+ .ha-testimonial-info {
49
+ text-align: left;
50
+ }
51
+ }
52
+
53
+ .ha-position--center {
54
+ .ha-testimonial-media{
55
+ display: block;
56
+ text-align: center;
57
+ }
58
+ .ha-testimonial-thumb{
59
+ margin-right: 0;
60
+ }
61
+ .ha-testimonial-media-body{
62
+ align-self: center;
63
+ }
64
+ .ha-testimonial-info {
65
+ text-align: center;
66
+ }
67
+ }
68
+
69
+
70
+ // right align
71
+
72
+ .ha-position--right {
73
+ .ha-testimonial-media{
74
+ display: block;
75
+ text-align: right;
76
+ }
77
+ .ha-testimonial-media-body{
78
+ flex: 1;
79
+ }
80
+ .ha-testimonial-thumb{
81
+ margin-left: 1rem;
82
+ }
83
+ .ha-testimonial-media-body{
84
+ align-self: center;
85
+ }
86
+ .ha-testimonial-info {
87
+ text-align: right;
88
+ }
89
+ }
assets/dev/sass/_variables.scss ADDED
@@ -0,0 +1,2 @@
 
 
1
+ $primary-color: #562dd4;
2
+ $secondary-color: #e2498a;
assets/dev/sass/main.scss ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import "variables";
2
+
3
+ @import "mixins";
4
+ @import "common";
5
+ @import "btn";
6
+ @import "link";
7
+ @import "card";
8
+ @import "infobox";
9
+ @import "icon-box";
10
+ @import "member";
11
+ @import "review";
12
+ @import "image-comparison";
13
+ //@import "gallery-filter";
14
+ //@import "image-grid";
15
+ //@import "justified-gallery";
16
+ //@import "slider-carousel";
17
+ @import "skills";
18
+ @import "gradient-heading";
19
+ //@import "logo-grid";
20
+ //@import "dual-btn";
21
+ //@import "testimonial";
assets/fonts/Happy-Addons-Icon.eot ADDED
Binary file
assets/fonts/Happy-Addons-Icon.svg ADDED
@@ -0,0 +1,409 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" standalone="no"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
+ <svg xmlns="http://www.w3.org/2000/svg">
4
+ <metadata>Generated by IcoMoon</metadata>
5
+ <defs>
6
+ <font id="Happy-Addons-Icon" horiz-adv-x="1024">
7
+ <font-face units-per-em="1024" ascent="960" descent="-64" />
8
+ <missing-glyph horiz-adv-x="1024" />
9
+ <glyph unicode="&#x20;" horiz-adv-x="512" d="" />
10
+ <glyph unicode="&#xe900;" glyph-name="3d-rotate" d="M512 611.2c-9.6 0-16-6.4-16-16s6.4-16 16-16c281.6 0 480-76.8 480-144 0-54.4-121.6-112-310.4-134.4 3.2 48 6.4 96 6.4 147.2 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-54.4-3.2-102.4-6.4-150.4-41.6-3.2-89.6-6.4-137.6-6.4s-92.8 3.2-137.6 6.4c-6.4 48-6.4 96-6.4 150.4 0 281.6 76.8 480 144 480 41.6 0 83.2-70.4 112-185.6l-57.6 25.6c-6.4 3.2-16 0-22.4-6.4-3.2-6.4 0-16 6.4-22.4l108.8-51.2 48 108.8c3.2 9.6 0 16-6.4 22.4-6.4 3.2-16 0-22.4-6.4l-25.6-57.6c-28.8 128-83.2 204.8-140.8 204.8-115.2 0-176-262.4-176-512 0-48 3.2-99.2 6.4-147.2-188.8 22.4-310.4 80-310.4 134.4 0 41.6 70.4 83.2 185.6 112l-25.6-57.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l51.2 108.8-108.8 48c-6.4 3.2-16 0-22.4-6.4-3.2-9.6 0-16 6.4-22.4l57.6-25.6c-134.4-32-208-83.2-208-144 0-89.6 160-147.2 345.6-166.4 25.6-182.4 83.2-332.8 169.6-332.8s144 150.4 166.4 332.8c185.6 22.4 345.6 76.8 345.6 166.4 0 115.2-262.4 176-512 176zM512-32c-51.2 0-108.8 115.2-131.2 297.6 44.8-3.2 89.6-6.4 131.2-6.4s89.6 3.2 131.2 6.4c-22.4-182.4-80-297.6-131.2-297.6z" />
11
+ <glyph unicode="&#xe901;" glyph-name="degree" d="M326.4 582.4c-12.8 0-16 3.2-22.4 6.4-6.4 6.4-6.4 9.6-6.4 19.2 0 3.2 0 6.4 0 6.4-3.2 0-3.2 3.2-9.6 3.2-3.2 0-6.4 0-6.4-3.2 0 0-3.2-3.2-3.2-6.4 0-9.6 3.2-22.4 12.8-28.8s22.4-12.8 41.6-12.8c16 0 28.8 3.2 38.4 12.8s12.8 22.4 12.8 41.6v6.4c0 19.2-6.4 35.2-25.6 41.6 6.4 3.2 12.8 9.6 16 16s6.4 16 6.4 28.8c0 28.8-16 44.8-48 44.8-9.6 0-19.2 0-25.6-3.2-6.4-12.8-12.8-16-16-19.2-3.2-6.4-6.4-9.6-6.4-12.8-3.2-6.4-3.2-9.6-3.2-16 0-3.2 0-6.4 3.2-9.6s3.2 0 9.6 0c6.4 0 9.6 3.2 9.6 9.6s3.2 12.8 6.4 16c3.2 6.4 12.8 6.4 22.4 6.4 19.2 0 28.8-9.6 28.8-28.8 0-12.8-3.2-19.2-6.4-22.4-6.4-6.4-12.8-6.4-22.4-6.4-6.4 0-6.4-3.2-6.4-9.6s-6.4-9.6 0-9.6c22.4 0 25.6-9.6 25.6-32v-6.4c0-22.4-3.2-32-25.6-32zM473.6 732.8c9.6 0 12.8-3.2 19.2-6.4s6.4-9.6 6.4-19.2c0-6.4 3.2-9.6 9.6-9.6s9.6 3.2 9.6 9.6c0 12.8-6.4 22.4-16 32s-22.4 12.8-41.6 12.8-22.4-6.4-32-16c-9.6-6.4-12.8-22.4-12.8-41.6v-76.8c0-19.2 3.2-32 12.8-41.6s22.4-12.8 38.4-12.8c16 0 25.6 3.2 35.2 12.8s9.6 22.4 9.6 41.6v6.4c0 35.2-3.2 51.2-38.4 51.2-16 0-25.6-6.4-25.6-16v35.2c0 25.6 3.2 38.4 25.6 38.4zM480 656c22.4 0 32-12.8 32-35.2v-6.4c0-25.6-9.6-35.2-32-35.2s-32 12.8-32 35.2v6.4c0 25.6 9.6 35.2 32 35.2zM601.6 563.2c16 0 38.4 3.2 48 12.8s22.4 22.4 22.4 41.6v76.8c0 19.2-12.8 32-22.4 41.6s-25.6 12.8-44.8 12.8c-16 0-32-3.2-44.8-12.8-6.4-6.4-16-22.4-16-41.6v-76.8c0-19.2 6.4-32 16-41.6s25.6-12.8 41.6-12.8zM576 694.4c0 25.6 6.4 35.2 28.8 35.2 9.6 0 19.2-3.2 25.6-9.6s9.6-12.8 9.6-25.6v-76.8c0-12.8-6.4-22.4-9.6-28.8s-12.8-9.6-22.4-9.6c-22.4 0-32 12.8-32 35.2v80zM601.6 646.4c3.2 0 6.4 0 6.4 3.2 3.2 3.2 3.2 3.2 3.2 6.4s0 6.4-3.2 6.4-3.2 3.2-6.4 3.2-6.4 0-6.4-3.2-3.2-3.2-3.2-6.4 0-6.4 3.2-6.4 3.2-3.2 6.4-3.2zM720 697.6c6.4 6.4 6.4 9.6 6.4 16v16c0 6.4-3.2 12.8-6.4 16-6.4 6.4-9.6 6.4-19.2 6.4s-12.8-3.2-19.2-6.4c-6.4-6.4-6.4-9.6-6.4-16v-12.8c0-6.4 3.2-12.8 6.4-16s9.6-6.4 19.2-6.4c9.6-3.2 12.8 0 19.2 3.2zM688 716.8v12.8c0 3.2 0 6.4 3.2 9.6s6.4 3.2 9.6 3.2c3.2 0 6.4 0 9.6-3.2s3.2-6.4 3.2-9.6v-12.8c0-3.2 0-6.4-3.2-9.6s-6.4-3.2-9.6-3.2c-3.2 0-6.4 0-9.6 3.2-3.2 0-3.2 3.2-3.2 9.6zM752 675.2c-9.6 3.2-16-3.2-19.2-12.8s3.2-16 12.8-19.2c150.4-38.4 246.4-115.2 246.4-195.2 0-112-185.6-208-422.4-224-9.6 0-16-9.6-16-16 0-9.6 6.4-16 16-16 0 0 0 0 0 0 259.2 0 454.4 124.8 454.4 256 0 96-105.6 182.4-272 227.2zM384 278.4c-6.4-6.4-6.4-16 0-22.4l25.6-25.6c-217.6 22.4-377.6 112-377.6 217.6 0 70.4 73.6 137.6 198.4 182.4 9.6 3.2 12.8 12.8 9.6 19.2 0 6.4-9.6 12.8-19.2 9.6-137.6-48-220.8-128-220.8-211.2 0-124.8 172.8-217.6 416-249.6l-32-32c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2l70.4 70.4-70.4 70.4c-9.6 0-19.2 0-25.6-6.4z" />
12
+ <glyph unicode="&#xe902;" glyph-name="accordion-horizontal" horiz-adv-x="1408" d="M220.8-28.8c3.2-22.4 22.4-35.2 44.8-35.2 3.2 0 9.6 0 12.8 3.2l262.4 73.6c12.8 3.2 22.4 12.8 28.8 22.4 6.4 12.8 6.4 25.6 3.2 35.2l-217.6 726.4c-6.4 25.6-35.2 38.4-57.6 32l-262.4-73.6c-12.8-3.2-22.4-12.8-28.8-22.4-6.4-12.8-9.6-25.6-3.2-38.4l217.6-723.2zM35.2 716.8c3.2 3.2 6.4 6.4 9.6 6.4l262.4 76.8c0 0 3.2 0 3.2 0 6.4 0 12.8-3.2 16-12.8l217.6-723.2c0-3.2 0-9.6 0-12.8-3.2-3.2-6.4-6.4-9.6-6.4l-265.6-76.8c-9.6-3.2-16 3.2-19.2 9.6l-217.6 726.4c0 3.2 0 9.6 3.2 12.8zM1372.8 752l-256 76.8c-25.6 6.4-51.2-6.4-60.8-32l-224-723.2c0-9.6 0-22.4 6.4-35.2s16-19.2 28.8-22.4l256-76.8c3.2 0 9.6-3.2 12.8-3.2 22.4 0 38.4 12.8 44.8 35.2l224 723.2c6.4 9.6 3.2 22.4-3.2 32-6.4 12.8-16 22.4-28.8 25.6zM1376 700.8l-224-723.2c-3.2-9.6-12.8-12.8-19.2-9.6l-256 76.8c-3.2 0-6.4 3.2-9.6 6.4-3.2 6.4-3.2 12.8-3.2 16l224 723.2c3.2 3.2 9.6 9.6 16 9.6 0 0 3.2 0 3.2 0l256-76.8c3.2 0 6.4-3.2 9.6-6.4 3.2-6.4 3.2-12.8 3.2-16zM704 0v928c0 9.6-6.4 16-16 16s-16-6.4-16-16v-928c0-9.6 6.4-16 16-16s16 6.4 16 16z" />
13
+ <glyph unicode="&#xe903;" glyph-name="accordion-vertical" d="M128 960c-9.6 0-16-6.4-16-16s6.4-16 16-16h736c9.6 0 16 6.4 16 16s-6.4 16-16 16h-736zM976 800h-928c-25.6 0-48-22.4-48-48v-608c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v608c0 25.6-22.4 48-48 48zM992 144c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v608c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-608zM864-32h-736c-9.6 0-16-6.4-16-16s6.4-16 16-16h736c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
14
+ <glyph unicode="&#xe904;" glyph-name="alarm-clock" d="M512 800c-236.8 0-432-192-432-432 0-112 41.6-211.2 112-288l-118.4-118.4c-6.4-6.4-6.4-16 0-22.4 3.2 0 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l115.2 115.2c76.8-70.4 182.4-118.4 297.6-118.4s220.8 44.8 300.8 121.6l115.2-118.4c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 9.6 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4l-115.2 118.4c67.2 76.8 112 176 112 288-3.2 243.2-195.2 435.2-435.2 435.2zM512-32c-220.8 0-400 179.2-400 400s179.2 400 400 400 400-179.2 400-400-179.2-400-400-400zM281.6 928c54.4 0 99.2-35.2 115.2-86.4 0-9.6 9.6-12.8 19.2-9.6s12.8 12.8 9.6 19.2c-19.2 64-76.8 108.8-144 108.8-86.4 0-153.6-67.2-153.6-153.6 0-35.2 12.8-70.4 38.4-96 3.2-6.4 6.4-6.4 9.6-6.4s6.4 0 9.6 3.2c6.4 6.4 6.4 16 3.2 22.4-19.2 22.4-28.8 48-28.8 76.8 0 67.2 54.4 121.6 121.6 121.6zM835.2 710.4c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c22.4 28.8 35.2 60.8 35.2 96 0 83.2-67.2 153.6-153.6 153.6-67.2 0-124.8-44.8-144-108.8-3.2-9.6 3.2-16 9.6-19.2 9.6-3.2 16 3.2 19.2 9.6 16 48 60.8 83.2 115.2 83.2 67.2 0 121.6-54.4 121.6-121.6 0-28.8-9.6-54.4-28.8-76.8-6.4-3.2-3.2-16 3.2-19.2zM528 688c-9.6 0-16-6.4-16-16v-284.8l-137.6-128c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l144 134.4c3.2 3.2 6.4 6.4 6.4 12.8v291.2c-3.2 9.6-9.6 16-19.2 16z" />
15
+ <glyph unicode="&#xe905;" glyph-name="alien-gun" horiz-adv-x="1248" d="M80 384c44.8 0 80 35.2 80 80s-35.2 80-80 80-80-35.2-80-80 35.2-80 80-80zM80 512c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 22.4-48 48 22.4 48 48 48zM764.8 576c-60.8 0-112-51.2-112-112s51.2-112 112-112 112 51.2 112 112-48 112-112 112zM764.8 384c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80zM1152 544c0 0 0 0 0 0-41.6 105.6-160 192-307.2 217.6 0 3.2 3.2 6.4 3.2 6.4v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0 0 0-3.2 0-3.2-19.2 3.2-41.6 3.2-64 3.2 0 0 0 0 0 0v0 160c0 9.6-6.4 16-16 16s-16-6.4-16-16v-160c0 0 0 0 0 0-22.4 0-44.8-3.2-67.2-9.6 3.2 3.2 3.2 6.4 3.2 9.6v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-6.4 3.2-9.6 9.6-12.8-112-25.6-204.8-83.2-252.8-163.2-28.8 25.6-64 41.6-102.4 48-22.4 3.2-38.4-12.8-38.4-38.4v-121.6h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h32v-121.6c0-25.6 16-38.4 32-38.4 0 0 3.2 0 6.4 0 38.4 6.4 73.6 22.4 102.4 48 67.2-105.6 214.4-179.2 374.4-179.2 9.6 0 19.2 0 28.8 0 0-3.2 0-3.2 0-6.4l70.4-153.6c19.2-41.6 60.8-64 102.4-64 12.8 0 28.8 3.2 41.6 9.6 28.8 12.8 51.2 32 60.8 60.8 9.6 25.6 9.6 54.4-3.2 80l-64 131.2c0 0 0 0 0 3.2 64 35.2 115.2 80 144 134.4h16c54.4 0 96 41.6 96 96s-41.6 96-96 96zM272 320c0 0 0 0 0 0v0zM272 320c0 0 0 3.2 0 6.4v278.4c0 3.2 0 6.4 3.2 6.4 73.6-9.6 124.8-70.4 124.8-144 0-76.8-54.4-137.6-128-147.2zM966.4 201.6l64-131.2c6.4-16 9.6-38.4 0-54.4-6.4-19.2-22.4-35.2-44.8-41.6-41.6-16-89.6 0-105.6 38.4l-70.4 150.4c57.6 6.4 108.8 19.2 156.8 38.4 0 0 0 0 0 0zM752 192c-156.8 0-294.4 67.2-352 172.8 19.2 28.8 32 64 32 99.2 0 38.4-12.8 70.4-32 99.2 57.6 102.4 198.4 172.8 352 172.8 211.2 0 380.8-121.6 380.8-272s-169.6-272-380.8-272zM1152 384v0c6.4 25.6 12.8 51.2 12.8 80 0 16-3.2 32-6.4 48 32-3.2 57.6-32 57.6-64 0-35.2-28.8-64-64-64z" />
16
+ <glyph unicode="&#xe906;" glyph-name="alien" horiz-adv-x="896" d="M355.2-25.6c25.6-25.6 57.6-38.4 92.8-38.4s67.2 12.8 92.8 38.4l224 224c86.4 86.4 131.2 198.4 131.2 320s-48 233.6-134.4 316.8c-86.4 80-195.2 124.8-313.6 124.8s-227.2-44.8-313.6-124.8c-86.4-86.4-134.4-198.4-134.4-320s44.8-233.6 131.2-320l224-220.8zM156.8 809.6c80 76.8 182.4 118.4 291.2 118.4s211.2-41.6 291.2-118.4c80-76.8 124.8-182.4 124.8-294.4s-41.6-217.6-121.6-297.6l-224-224c-38.4-38.4-102.4-38.4-140.8 0l-224 224c-80 83.2-121.6 185.6-121.6 297.6s44.8 217.6 124.8 294.4zM505.6 224c12.8 0 22.4-3.2 35.2-3.2 70.4 0 137.6 28.8 182.4 80 54.4 60.8 80 144 70.4 243.2 0 16-12.8 25.6-28.8 28.8-86.4 9.6-163.2-19.2-217.6-76.8-54.4-60.8-80-144-70.4-243.2 0-16 12.8-25.6 28.8-28.8zM569.6 473.6c41.6 44.8 96 70.4 160 70.4 9.6 0 19.2 0 32-3.2 9.6-86.4-12.8-163.2-60.8-214.4-41.6-44.8-96-70.4-160-70.4-9.6 0-19.2 0-32 3.2-9.6 83.2 12.8 160 60.8 214.4zM348.8 220.8c12.8 0 22.4 0 35.2 3.2s25.6 12.8 25.6 28.8c9.6 96-16 179.2-70.4 240-48 51.2-112 80-182.4 80-12.8 0-22.4 0-35.2-3.2s-25.6-12.8-25.6-28.8c-9.6-96 16-179.2 70.4-240 48-51.2 112-80 182.4-80zM128 540.8c9.6 0 19.2 3.2 32 3.2 64 0 118.4-25.6 160-70.4 48-54.4 70.4-131.2 60.8-217.6-76.8-9.6-144 16-188.8 67.2-51.2 54.4-73.6 131.2-64 217.6z" />
17
+ <glyph unicode="&#xe907;" glyph-name="anchor" horiz-adv-x="1088" d="M16 416h80c6.4-236.8 195.2-425.6 432-435.2v-12.8c0-9.6 6.4-16 16-16s16 6.4 16 16v12.8c236.8 9.6 425.6 198.4 432 435.2h80c6.4 0 12.8 3.2 16 9.6s0 12.8-3.2 16l-96 96c-6.4 6.4-16 6.4-22.4 0l-96-96c-6.4-3.2-6.4-9.6-6.4-16s9.6-9.6 16-9.6h80c-6.4-217.6-182.4-393.6-400-403.2v595.2h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96v89.6c54.4 6.4 96 54.4 96 112 0 60.8-51.2 112-112 112s-112-51.2-112-112c0-54.4 41.6-102.4 96-108.8v-92.8h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96v-595.2c-217.6 9.6-393.6 185.6-400 403.2h80c6.4 0 12.8 3.2 16 9.6s0 12.8-3.2 16l-96 96c-6.4 6.4-16 6.4-22.4 0l-96-96c-6.4-3.2-6.4-9.6-6.4-16s9.6-9.6 16-9.6zM976 505.6l57.6-57.6h-115.2l57.6 57.6zM464 841.6c0 44.8 35.2 80 80 80s80-35.2 80-80-35.2-80-80-80-80 35.2-80 80zM112 505.6l57.6-57.6h-115.2l57.6 57.6z" />
18
+ <glyph unicode="&#xe908;" glyph-name="android" horiz-adv-x="832" d="M160 208c0-25.6 22.4-48 48-48h48v-160c0-35.2 28.8-64 64-64s64 28.8 64 64v160h64v-160c0-35.2 28.8-64 64-64s64 28.8 64 64v160h48c25.6 0 48 22.4 48 48v416c0 25.6-22.4 48-48 48h-416c-25.6 0-48-22.4-48-48v-416zM352 0c0-19.2-12.8-32-32-32s-32 12.8-32 32v160h64v-160zM544 0c0-19.2-12.8-32-32-32s-32 12.8-32 32v160h64v-160zM192 624c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16v-416c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16v416zM128 384v224c0 35.2-28.8 64-64 64s-64-28.8-64-64v-224c0-35.2 28.8-64 64-64s64 28.8 64 64zM32 384v224c0 19.2 12.8 32 32 32s32-12.8 32-32v-224c0-19.2-12.8-32-32-32s-32 12.8-32 32zM832 384v224c0 35.2-28.8 64-64 64s-64-28.8-64-64v-224c0-35.2 28.8-64 64-64s64 28.8 64 64zM736 384v224c0 19.2 12.8 32 32 32s32-12.8 32-32v-224c0-19.2-12.8-32-32-32s-32 12.8-32 32zM278.4 784c0-32 25.6-57.6 57.6-57.6s57.6 25.6 57.6 57.6-25.6 57.6-57.6 57.6-57.6-25.6-57.6-57.6zM361.6 784c0-12.8-12.8-25.6-25.6-25.6s-25.6 12.8-25.6 25.6 12.8 25.6 25.6 25.6 25.6-12.8 25.6-25.6zM438.4 784c0-32 25.6-57.6 57.6-57.6s57.6 25.6 57.6 57.6-25.6 57.6-57.6 57.6-57.6-25.6-57.6-57.6zM521.6 784c0-12.8-12.8-25.6-25.6-25.6s-25.6 12.8-25.6 25.6 12.8 25.6 25.6 25.6 25.6-12.8 25.6-25.6zM160 704c0-9.6 6.4-16 16-16s16 6.4 16 16c0 124.8 99.2 224 224 224s224-99.2 224-224v0c0-9.6 6.4-16 16-16s16 6.4 16 16c0 0 0 3.2 0 3.2-3.2 140.8-115.2 252.8-256 252.8s-256-115.2-256-256z" />
19
+ <glyph unicode="&#xe909;" glyph-name="angle-down" d="M512 192c-3.2 0-9.6 0-12.8 3.2l-480 480c-6.4 6.4-6.4 16 0 22.4s16 6.4 22.4 0l470.4-467.2 467.2 470.4c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-480-480c0-6.4-6.4-6.4-9.6-6.4z" />
20
+ <glyph unicode="&#xe90a;" glyph-name="angle-left" d="M752-48c-3.2 0-9.6 0-12.8 3.2l-480 480c-6.4 6.4-6.4 16 0 22.4l480 480c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-467.2-467.2 467.2-467.2c6.4-6.4 6.4-16 0-22.4 0-6.4-6.4-6.4-9.6-6.4z" />
21
+ <glyph unicode="&#xe90b;" glyph-name="angle-right" d="M272-48c-3.2 0-9.6 0-12.8 3.2-6.4 6.4-6.4 16 0 22.4l470.4 470.4-470.4 467.2c-3.2 6.4-3.2 19.2 0 25.6s16 6.4 22.4 0l480-480c6.4-6.4 6.4-16 0-22.4l-480-480c0-6.4-6.4-6.4-9.6-6.4z" />
22
+ <glyph unicode="&#xe90c;" glyph-name="angle-up" d="M992 192c-3.2 0-9.6 0-12.8 3.2l-467.2 470.4-467.2-470.4c-6.4-6.4-16-6.4-22.4 0s-6.4 16 0 22.4l480 480c6.4 6.4 16 6.4 22.4 0l480-480c6.4-6.4 6.4-16 0-22.4-3.2-3.2-9.6-3.2-12.8-3.2z" />
23
+ <glyph unicode="&#xe90d;" glyph-name="apple" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM758.4 352c-41.6 22.4-67.2 54.4-67.2 92.8-3.2 38.4 16 73.6 54.4 102.4 3.2 3.2 6.4 6.4 6.4 12.8 0 3.2 0 9.6-3.2 12.8-41.6 51.2-92.8 60.8-128 60.8-19.2 0-41.6-3.2-60.8-9.6-6.4-3.2-9.6-3.2-12.8-6.4-16-6.4-25.6-9.6-38.4-6.4-3.2 0-9.6 3.2-12.8 6.4-16 6.4-41.6 16-73.6 16-16 0-35.2-3.2-51.2-9.6-51.2-16-92.8-60.8-108.8-115.2-16-57.6-6.4-131.2 22.4-198.4 12.8-28.8 25.6-54.4 41.6-76.8 32-44.8 64-64 99.2-64 3.2 0 6.4 0 9.6 0 16 0 28.8 6.4 38.4 9.6s19.2 6.4 32 9.6c25.6 3.2 38.4 0 57.6-9.6 12.8-3.2 25.6-9.6 41.6-12.8 70.4-12.8 137.6 89.6 160 153.6v3.2c9.6 19.2-3.2 25.6-6.4 28.8zM611.2 201.6c-12.8 3.2-25.6 6.4-35.2 9.6-22.4 9.6-44.8 16-76.8 9.6-16-3.2-28.8-9.6-38.4-12.8s-19.2-6.4-28.8-9.6c-25.6-3.2-51.2 12.8-76.8 51.2-16 22.4-28.8 44.8-38.4 70.4-25.6 57.6-32 124.8-19.2 176 12.8 44.8 44.8 80 83.2 92.8 12.8 3.2 28.8 6.4 41.6 6.4 25.6 0 44.8-9.6 60.8-16 6.4-3.2 12.8-6.4 16-6.4 22.4-6.4 38.4 0 60.8 6.4 3.2 3.2 9.6 3.2 12.8 6.4 16 6.4 32 9.6 48 9.6 25.6 0 60.8-6.4 92.8-35.2-38.4-32-57.6-76.8-54.4-121.6s28.8-86.4 73.6-112c-25.6-57.6-76.8-131.2-121.6-124.8zM521.6 640v0c67.2 0 128 57.6 131.2 128 0 6.4 0 22.4 0 28.8-3.2 3.2-6.4 9.6-12.8 9.6 0 0-3.2 0-6.4 0s-16 0-16-3.2c-54.4-9.6-115.2-51.2-118.4-118.4 0-6.4 0-28.8 0-35.2 6.4-3.2 12.8-9.6 22.4-9.6zM537.6 688c0 41.6 41.6 73.6 83.2 83.2 0 0 0 0 0-3.2-3.2-44.8-41.6-86.4-83.2-96 0 6.4 0 12.8 0 16z" />
24
+ <glyph unicode="&#xe90e;" glyph-name="arrow-left" d="M137.6 416h832c25.6 0 44.8 22.4 44.8 48s-19.2 48-44.8 48h-832l275.2 272c16 16 16 44.8 0 60.8s-44.8 16-60.8 0l-352-348.8c-16-16-16-44.8 0-60.8l348.8-348.8c9.6-9.6 19.2-12.8 32-12.8 9.6 0 22.4 3.2 32 12.8 16 16 16 41.6 0 60.8l-275.2 268.8z" />
25
+ <glyph unicode="&#xe90f;" glyph-name="arrow-right" d="M0 464c0-22.4 19.2-48 41.6-48h809.6l-259.2-256c-16-16-16-41.6 0-57.6 9.6-9.6 19.2-12.8 28.8-12.8s22.4 3.2 28.8 12.8l329.6 329.6c16 16 16 41.6 0 57.6l-329.6 332.8c-16 16-41.6 16-57.6 0s-16-38.4 0-54.4l259.2-256h-809.6c-22.4 0-41.6-25.6-41.6-48z" />
26
+ <glyph unicode="&#xe910;" glyph-name="arrow-zoom-out" d="M400 352l-336-332.8v236.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-272c0-9.6 6.4-16 16-16h272c9.6 0 16 6.4 16 16s-6.4 16-16 16h-230.4l329.6 329.6c6.4 6.4 6.4 16 0 22.4s-12.8 6.4-19.2 0zM976 928h-272c-9.6 0-16-6.4-16-16s6.4-16 16-16h236.8l-342.4-342.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l336 339.2v-230.4c0-9.6 6.4-16 16-16s16 6.4 16 16v272c0 9.6-6.4 16-16 16z" />
27
+ <glyph unicode="&#xe911;" glyph-name="arrow-corner" d="M1024 406.4v0c-144 0-284.8 57.6-387.2 160l-112 112-108.8-112c-102.4-102.4-243.2-160-387.2-160h-28.8v-41.6h1024v41.6z" />
28
+ <glyph unicode="&#xe912;" glyph-name="arrow-down" d="M828.8 300.8c-6.4 6.4-16 6.4-22.4 0l-294.4-294.4v921.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-921.6l-291.2 291.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l320-320c0 0 3.2-3.2 6.4-3.2s3.2 0 6.4 0 3.2 0 6.4 0 3.2 3.2 6.4 3.2l320 320c0 6.4 0 19.2-3.2 25.6z" />
29
+ <glyph unicode="&#xe913;" glyph-name="arrow-left1" d="M992 448h-921.6l291.2 291.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-320-320c0 0-3.2-3.2-3.2-6.4-3.2-3.2-3.2-9.6 0-12.8 0-3.2 3.2-3.2 3.2-6.4l320-320c3.2 0 9.6 0 12.8 0s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-294.4 294.4h921.6c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
30
+ <glyph unicode="&#xe914;" glyph-name="arrow-right1" d="M1008 425.6c3.2 3.2 3.2 9.6 0 12.8 0 3.2-3.2 3.2-3.2 6.4l-320 320c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l291.2-291.2h-921.6c-9.6 0-16-6.4-16-16s6.4-19.2 16-19.2h921.6l-291.2-291.2c-6.4-6.4-6.4-16 0-22.4 0-6.4 6.4-6.4 9.6-6.4s9.6 0 12.8 3.2l320 320c0 3.2 0 3.2 3.2 6.4z" />
31
+ <glyph unicode="&#xe915;" glyph-name="arrow-up" d="M860.8 620.8l-320 320c0 0-3.2 3.2-6.4 3.2-3.2 3.2-9.6 3.2-12.8 0-3.2 0-3.2-3.2-6.4-3.2l-320-320c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l294.4 291.2v-921.6c0-9.6 6.4-16 16-16s16 6.4 16 16v921.6l291.2-291.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c3.2 3.2 3.2 16 0 22.4z" />
32
+ <glyph unicode="&#xe916;" glyph-name="article" horiz-adv-x="1216" d="M1168 960h-1120c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h1120c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM1184-16c0-9.6-6.4-16-16-16h-1120c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h1120c9.6 0 16-6.4 16-16v-928zM560 448h-352c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h352c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48zM576 144c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-256zM1008 800h-800c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM1024 592c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-160zM1024 416h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 288h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 160h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
33
+ <glyph unicode="&#xe917;" glyph-name="avatar-man" horiz-adv-x="1088" d="M835.2 208c-99.2 12.8-108.8 76.8-108.8 96 44.8 64 57.6 140.8 64 169.6 35.2 9.6 54.4 60.8 54.4 140.8 0 32-9.6 54.4-25.6 67.2-6.4 3.2-12.8 6.4-19.2 9.6v44.8c0 6.4 6.4 16 9.6 25.6l3.2 3.2c12.8 25.6 51.2 108.8-38.4 163.2-108.8 64-214.4 19.2-268.8-12.8-16-12.8-35.2-19.2-54.4-19.2h-48c-67.2 0-115.2-54.4-115.2-124.8v-80c-6.4 0-12.8-3.2-19.2-9.6-16-12.8-25.6-35.2-25.6-67.2 0-76.8 22.4-128 57.6-140.8 6.4-28.8 19.2-99.2 64-163.2 0-9.6-3.2-35.2-22.4-57.6-16-19.2-44.8-28.8-83.2-28.8 0 0-3.2 0-3.2 0-188.8-35.2-256-163.2-256-265.6 0-9.6 6.4-16 16-16s16 9.6 16 16c0 89.6 60.8 201.6 227.2 233.6 48 0 86.4 12.8 108.8 38.4 32 35.2 28.8 83.2 28.8 83.2 0 3.2 0 6.4-3.2 6.4-51.2 73.6-60.8 163.2-60.8 163.2 0 9.6-6.4 12.8-16 12.8-22.4 0-38.4 48-38.4 108.8 0 35.2 6.4 44.8 9.6 51.2 3.2 3.2 9.6 3.2 9.6 3.2 6.4 0 9.6 0 12.8 3.2 6.4 0 9.6 6.4 9.6 9.6v96c0 57.6 35.2 96 83.2 96h48c25.6 0 51.2 6.4 73.6 22.4 48 28.8 140.8 70.4 233.6 12.8 60.8-35.2 41.6-89.6 25.6-118.4l-3.2-3.2c-6.4-12.8-12.8-25.6-12.8-41.6v-64c0-6.4 3.2-9.6 6.4-12.8s9.6-3.2 12.8-3.2c0 0 6.4 0 9.6-3.2 6.4-6.4 12.8-22.4 12.8-41.6 0-64-16-108.8-35.2-108.8-9.6 0-16-6.4-16-16 0 0-9.6-96-60.8-169.6-3.2-3.2-3.2-6.4-3.2-9.6 0 0-6.4-118.4 137.6-134.4 166.4-25.6 227.2-137.6 227.2-224 0-9.6 6.4-16 16-16s16 6.4 16 16c-3.2 102.4-70.4 230.4-256 259.2z" />
34
+ <glyph unicode="&#xe918;" glyph-name="avatar-woman" horiz-adv-x="1088" d="M835.2 204.8c-41.6 6.4-73.6 19.2-89.6 41.6-12.8 19.2-16 38.4-16 51.2 35.2 9.6 150.4 44.8 230.4 124.8 3.2 3.2 6.4 9.6 3.2 16 0 6.4-3.2 9.6-9.6 12.8 0 0-124.8 54.4-137.6 249.6-9.6 124.8-105.6 259.2-268.8 259.2s-259.2-134.4-268.8-259.2c-9.6-195.2-131.2-249.6-137.6-249.6-3.2-3.2-6.4-6.4-9.6-9.6 0-3.2 0-9.6 3.2-12.8s64-80 230.4-134.4c-3.2-22.4-16-76.8-108.8-86.4-188.8-28.8-256-153.6-256-252.8 0-12.8 6.4-19.2 16-19.2s16 6.4 16 16c0 86.4 60.8 195.2 227.2 220.8 147.2 16 137.6 128 137.6 131.2 0 6.4-6.4 12.8-12.8 12.8-121.6 38.4-185.6 89.6-211.2 112 41.6 25.6 128 99.2 137.6 268.8 6.4 112 89.6 230.4 236.8 230.4 144 0 230.4-118.4 236.8-230.4 9.6-166.4 96-243.2 134.4-268.8-86.4-76.8-208-105.6-211.2-105.6-6.4 0-9.6-6.4-12.8-12.8 0-3.2-6.4-44.8 22.4-86.4 22.4-32 60.8-48 112-54.4 166.4-25.6 227.2-137.6 227.2-220.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 102.4-67.2 227.2-252.8 256z" />
35
+ <glyph unicode="&#xe919;" glyph-name="badge1" horiz-adv-x="736" d="M368 809.6c-115.2 0-208-92.8-208-208s92.8-208 208-208 208 92.8 208 208-92.8 208-208 208zM368 425.6c-96 0-176 80-176 176s80 176 176 176 176-80 176-176-80-176-176-176zM691.2 729.6c6.4 28.8 3.2 54.4-9.6 73.6s-35.2 32-64 35.2c-9.6 60.8-51.2 89.6-112 76.8-32 51.2-86.4 64-137.6 28.8-51.2 35.2-105.6 25.6-137.6-28.8-57.6 16-102.4-16-112-73.6-28.8-3.2-51.2-16-64-35.2-12.8-22.4-16-48-9.6-76.8-25.6-16-41.6-35.2-48-60.8s0-51.2 19.2-76.8c-19.2-25.6-25.6-51.2-19.2-76.8 6.4-22.4 22.4-44.8 48-60.8-6.4-28.8-3.2-54.4 9.6-73.6s35.2-32 64-35.2c9.6-60.8 51.2-89.6 112-76.8 32-51.2 86.4-64 137.6-28.8 19.2-12.8 41.6-22.4 60.8-22.4 32 0 57.6 16 76.8 48 60.8-12.8 102.4 16 112 76.8 28.8 3.2 51.2 16 64 35.2s16 44.8 9.6 73.6c25.6 16 41.6 35.2 48 60.8s0 51.2-19.2 76.8c19.2 25.6 25.6 51.2 19.2 76.8-6.4 28.8-22.4 48-48 64zM688 582.4c19.2-22.4 25.6-41.6 22.4-60.8-3.2-22.4-25.6-35.2-41.6-44.8-6.4-3.2-9.6-12.8-9.6-19.2 6.4-16 9.6-41.6-3.2-60.8s-35.2-22.4-54.4-25.6c-9.6 0-16-6.4-16-16-3.2-28.8-12.8-60.8-51.2-60.8-9.6 0-19.2 3.2-32 6.4-6.4 3.2-16 0-19.2-9.6-9.6-19.2-25.6-41.6-54.4-41.6-16 0-32 6.4-51.2 22.4-3.2 3.2-6.4 3.2-9.6 3.2s-6.4 0-9.6-3.2c-19.2-16-35.2-22.4-51.2-22.4-25.6 0-44.8 22.4-54.4 41.6-3.2 6.4-12.8 9.6-19.2 9.6-12.8-3.2-22.4-6.4-32-6.4-41.6 0-51.2 35.2-51.2 60.8 0 9.6-6.4 16-16 16-19.2 0-41.6 6.4-54.4 25.6s-6.4 41.6-3.2 60.8c3.2 6.4 0 16-9.6 19.2-16 9.6-38.4 22.4-41.6 44.8-3.2 19.2 3.2 38.4 22.4 60.8 6.4 6.4 6.4 12.8 0 19.2-16 22.4-22.4 41.6-19.2 60.8 3.2 22.4 25.6 35.2 41.6 44.8 6.4 3.2 9.6 12.8 9.6 19.2-6.4 16-12.8 41.6 0 60.8s35.2 22.4 54.4 25.6c9.6 0 16 6.4 16 16 3.2 28.8 12.8 60.8 51.2 60.8 9.6 0 19.2-3.2 32-6.4 6.4-3.2 16 0 19.2 9.6 9.6 19.2 25.6 41.6 54.4 41.6 16 0 32-6.4 51.2-22.4 6.4-6.4 12.8-6.4 19.2 0 19.2 16 35.2 22.4 51.2 22.4 25.6 0 44.8-22.4 54.4-41.6 3.2-6.4 12.8-9.6 19.2-9.6 12.8 3.2 22.4 6.4 32 6.4 41.6 0 51.2-35.2 51.2-60.8 0-9.6 6.4-16 16-16 19.2 0 41.6-6.4 54.4-25.6s6.4-41.6 3.2-60.8c-3.2-6.4 0-16 9.6-19.2 16-9.6 38.4-22.4 41.6-44.8 3.2-19.2-3.2-38.4-22.4-60.8-6.4-6.4-6.4-12.8 0-19.2zM160 224c-9.6 0-16-6.4-16-16v-220.8c0-19.2 9.6-35.2 28.8-41.6 19.2-9.6 41.6-6.4 57.6 6.4l137.6 108.8 140.8-108.8c9.6-6.4 22.4-12.8 32-12.8s16 3.2 25.6 6.4c16 9.6 28.8 25.6 28.8 44.8v224c0 9.6-6.4 16-16 16s-16-6.4-16-16v-224c0-9.6-6.4-12.8-9.6-16-6.4-3.2-16-3.2-22.4 3.2l-64 51.2v118.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96l-54.4 41.6c-6.4 3.2-12.8 3.2-19.2 0l-54.4-41.6v92.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-118.4l-64-48c-9.6-9.6-19.2-9.6-25.6-6.4-3.2 0-9.6 6.4-9.6 16v220.8c0 9.6-6.4 16-16 16zM457.6 691.2l-112-147.2-70.4 70.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l83.2-80c3.2-3.2 6.4 0 12.8 0 0 0 0 0 0 0 3.2 0 9.6 0 12.8 3.2l121.6 160c6.4 6.4 3.2 16-3.2 22.4-6.4 3.2-16 3.2-22.4-6.4z" />
36
+ <glyph unicode="&#xe91a;" glyph-name="badge2" horiz-adv-x="704" d="M704 608c0 195.2-156.8 352-352 352s-352-156.8-352-352c0-115.2 54.4-217.6 140.8-281.6l-112-294.4c-3.2-6.4 0-12.8 3.2-16s9.6-6.4 16-6.4l121.6 22.4 83.2-89.6c0-3.2 6.4-6.4 9.6-6.4 0 0 3.2 0 3.2 0 6.4 0 9.6 6.4 12.8 9.6l86.4 224 86.4-224c3.2-6.4 6.4-9.6 12.8-9.6 0 0 3.2 0 3.2 0 3.2 0 9.6 3.2 12.8 6.4l83.2 89.6 124.8-19.2c6.4 0 12.8 0 16 6.4 3.2 3.2 3.2 9.6 3.2 16l-118.4 304c67.2 64 115.2 160 115.2 268.8zM32 608c0 176 144 320 320 320s320-144 320-320-144-320-320-320-320 144-320 320zM320 252.8l19.2-35.2-86.4-233.6-70.4 76.8c0 3.2-6.4 3.2-9.6 3.2l-105.6-16 99.2 262.4c48-28.8 96-48 156.8-51.2l-3.2-6.4c0 0 0 0 0 0zM659.2 48l-105.6 16c-6.4 0-9.6 0-12.8-6.4l-70.4-76.8-105.6 275.2c70.4 3.2 134.4 25.6 188.8 64l105.6-272zM528 608c0 96-80 176-176 176s-176-80-176-176 80-176 176-176 176 80 176 176zM208 608c0 80 64 144 144 144s144-64 144-144-64-144-144-144-144 64-144 144z" />
37
+ <glyph unicode="&#xe91b;" glyph-name="badge3" horiz-adv-x="736" d="M0-16c0-19.2 9.6-35.2 25.6-41.6 6.4-3.2 16-6.4 22.4-6.4 9.6 0 19.2 3.2 28.8 9.6l291.2 214.4 291.2-214.4c16-9.6 35.2-12.8 51.2-3.2s25.6 25.6 25.6 41.6v624c0 9.6-6.4 16-16 16s-16-6.4-16-16v-624c0-6.4-3.2-12.8-9.6-12.8-6.4-3.2-12.8-3.2-16 0l-300.8 220.8c-6.4 3.2-12.8 3.2-19.2 0l-300.8-220.8c-6.4-3.2-9.6-3.2-16 0-6.4 0-9.6 6.4-9.6 12.8v624c0 9.6-6.4 16-16 16s-16-6.4-16-16v-624zM48 672h640c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-640c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48zM32 912c0 9.6 6.4 16 16 16h640c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v192z" />
38
+ <glyph unicode="&#xe91c;" glyph-name="bamboo" horiz-adv-x="864" d="M537.6 502.4c-41.6 192 0 435.2 0 438.4s0 9.6-3.2 12.8c-3.2 3.2-6.4 6.4-9.6 6.4h-192c-6.4 0-9.6-3.2-12.8-6.4s-6.4-9.6-3.2-12.8c0-3.2 38.4-192 0-441.6 0-3.2 0-9.6 3.2-12.8s6.4-6.4 12.8-6.4h192c0 0 0 0 0 0 9.6 0 16 6.4 16 16 0 3.2-3.2 6.4-3.2 6.4zM502.4 512h-153.6c28.8 201.6 9.6 361.6 0 416h153.6c-6.4-60.8-32-249.6 0-416zM320-57.6c3.2-3.2 6.4-6.4 12.8-6.4h192c0 0 0 0 0 0 9.6 0 16 6.4 16 16 0 3.2 0 6.4-3.2 6.4-41.6 192 0 435.2 0 438.4s0 9.6-3.2 12.8c-3.2 3.2-6.4 6.4-12.8 6.4h-192c-6.4 0-9.6-3.2-12.8-6.4s-3.2-9.6-3.2-12.8c0-3.2 38.4-192 0-441.6 0-6.4 3.2-9.6 6.4-12.8zM352 384h153.6c-9.6-60.8-32-249.6 0-416h-153.6c28.8 201.6 6.4 361.6 0 416zM284.8 483.2c3.2 3.2 6.4 6.4 6.4 12.8 0 0-3.2 156.8-153.6 204.8-3.2 0-9.6 0-12.8 0-3.2-3.2-6.4-6.4-6.4-12.8 0 0-19.2-134.4 150.4-208 3.2 0 3.2 0 6.4 0s6.4 0 9.6 3.2zM147.2 662.4c76.8-35.2 102.4-102.4 108.8-140.8-89.6 48-105.6 108.8-108.8 140.8zM115.2 518.4c-35.2 0-67.2-9.6-99.2-25.6-3.2-3.2-6.4-6.4-9.6-9.6 0-3.2 0-9.6 3.2-12.8s48-64 144-64c35.2 0 73.6 9.6 112 22.4 6.4 3.2 9.6 6.4 9.6 12.8s0 9.6-3.2 16c-6.4 3.2-67.2 60.8-156.8 60.8zM153.6 438.4c-51.2 0-86.4 19.2-102.4 35.2 22.4 9.6 44.8 12.8 64 12.8 48 0 86.4-19.2 108.8-35.2-25.6-6.4-48-12.8-70.4-12.8zM569.6 870.4c-3.2-3.2-6.4-6.4-6.4-12.8 0 0 3.2-156.8 153.6-204.8 3.2 0 3.2 0 6.4 0s6.4 0 9.6 3.2c0 0 3.2 3.2 3.2 9.6 0 0 19.2 134.4-150.4 208-6.4 0-12.8 0-16-3.2zM704 691.2c-76.8 35.2-102.4 102.4-108.8 140.8 89.6-48 105.6-108.8 108.8-140.8zM739.2 835.2c35.2 0 73.6 9.6 108.8 25.6 3.2 3.2 6.4 6.4 9.6 9.6 0 3.2 0 9.6-3.2 12.8s-51.2 64-153.6 64c-38.4 0-76.8-6.4-118.4-22.4-6.4-3.2-9.6-6.4-9.6-12.8s0-9.6 6.4-16c-3.2-3.2 64-60.8 160-60.8 0 0 0 0 0 0zM700.8 915.2c57.6 0 92.8-19.2 112-35.2-22.4-9.6-48-12.8-73.6-12.8v0c-51.2 0-96 19.2-121.6 35.2 28.8 6.4 57.6 12.8 83.2 12.8z" />
39
+ <glyph unicode="&#xe91d;" glyph-name="basketball" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM992 448c0-22.4-3.2-48-6.4-70.4-166.4 6.4-316.8 86.4-416 204.8 140.8 115.2 262.4 179.2 291.2 192 83.2-83.2 131.2-198.4 131.2-326.4zM838.4 800c-41.6-22.4-156.8-83.2-284.8-192-64 89.6-105.6 195.2-108.8 313.6 19.2 3.2 44.8 6.4 67.2 6.4 124.8 0 240-48 326.4-128zM409.6 918.4c6.4-121.6 48-236.8 115.2-326.4-57.6-51.2-118.4-108.8-179.2-176-89.6 64-195.2 102.4-310.4 108.8 35.2 192 182.4 348.8 374.4 393.6zM35.2 489.6c108.8-3.2 211.2-41.6 294.4-99.2-64-76.8-121.6-166.4-169.6-262.4-80 83.2-128 195.2-128 320 0 12.8 0 28.8 3.2 41.6zM182.4 102.4c48 102.4 108.8 192 172.8 268.8 118.4-96 192-240 198.4-400-12.8-3.2-28.8-3.2-41.6-3.2-128 0-243.2 51.2-329.6 134.4zM585.6-25.6c-6.4 169.6-86.4 320-211.2 419.2 54.4 64 115.2 121.6 172.8 169.6 105.6-128 259.2-208 435.2-217.6-41.6-192-201.6-342.4-396.8-371.2z" />
40
+ <glyph unicode="&#xe91e;" glyph-name="battery" horiz-adv-x="1120" d="M352 160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-304c-9.6 0-16 6.4-16 16v480c0 9.6 6.4 16 16 16h304c9.6 0 16 6.4 16 16s-6.4 16-16 16h-304c-25.6 0-48-22.4-48-48v-480c0-25.6 22.4-48 48-48h304zM992 576v112c0 25.6-22.4 48-48 48h-304c-9.6 0-16-6.4-16-16s6.4-16 16-16h304c9.6 0 16-6.4 16-16v-480c0-9.6-6.4-16-16-16h-336c-9.6 0-16-6.4-16-16s6.4-16 16-16h336c25.6 0 48 22.4 48 48v80h80c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-80zM1088 528v-192c0-9.6-6.4-16-16-16h-80v224h80c9.6 0 16-6.4 16-16zM412.8-54.4c3.2 0 3.2 0 6.4 0 6.4 0 9.6 3.2 12.8 9.6l342.4 601.6c3.2 6.4 3.2 9.6 0 16s-9.6 6.4-12.8 6.4h-227.2l99.2 371.2c3.2 6.4-3.2 16-9.6 19.2s-16 0-19.2-6.4l-371.2-553.6c-3.2-6.4-3.2-12.8 0-16 3.2-6.4 9.6-9.6 12.8-9.6h252.8l-99.2-422.4c0-6.4 6.4-12.8 12.8-16zM537.6 396.8c0 3.2 0 9.6-3.2 12.8s-6.4 6.4-12.8 6.4h-243.2l297.6 448-80-297.6c0-3.2 0-9.6 3.2-12.8s9.6-9.6 12.8-9.6h220.8l-272-480 76.8 332.8z" />
41
+ <glyph unicode="&#xe91f;" glyph-name="beach-seat" horiz-adv-x="1248" d="M1248-48c0 9.6-6.4 16-16 16h-345.6l86.4 233.6c0 0 0 0 0 0 32 9.6 60.8 25.6 83.2 48l124.8 115.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-124.8-115.2c-35.2-35.2-83.2-51.2-134.4-51.2h-515.2c0 0 0 0 0 0s0 0-3.2 0c-51.2 0-99.2-19.2-137.6-48l-137.6-108.8c-9.6-3.2-9.6-12.8-3.2-19.2 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l137.6 105.6c28.8 22.4 60.8 35.2 96 38.4l-83.2-217.6h-259.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h1216c9.6 0 16 6.4 16 16zM934.4 195.2l-83.2-227.2h-252.8l83.2 224h220.8c9.6 0 22.4 0 32 3.2zM393.6 192h252.8l-83.2-224h-252.8l83.2 224zM832 960c-118.4 0-246.4-44.8-332.8-118.4-9.6-9.6-16-25.6-12.8-41.6s12.8-32 28.8-35.2l320-121.6-150.4-348.8c-3.2-9.6 0-16 9.6-22.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l150.4 352 320-121.6c6.4-3.2 12.8-3.2 16-3.2 12.8 0 25.6 6.4 35.2 16s12.8 22.4 12.8 35.2c-19.2 233.6-195.2 400-419.2 400zM1216 544c-3.2-3.2-6.4-6.4-12.8-6.4-3.2 0-3.2 0-6.4 0l-672 252.8c-6.4 3.2-9.6 6.4-9.6 12.8 0 3.2 0 9.6 3.2 12.8 83.2 70.4 201.6 112 313.6 112 208 0 368-153.6 387.2-374.4 3.2-3.2 0-6.4-3.2-9.6z" />
42
+ <glyph unicode="&#xe920;" glyph-name="bell" d="M912 256h-16v192c0 192-140.8 348.8-323.2 377.6 12.8 12.8 19.2 32 19.2 54.4 0 44.8-35.2 80-80 80s-80-35.2-80-80c0-19.2 6.4-38.4 19.2-54.4-182.4-28.8-323.2-185.6-323.2-377.6v-192h-16c-60.8 0-112-51.2-112-112s51.2-112 112-112h288c6.4-54.4 54.4-96 112-96s102.4 41.6 112 96h288c60.8 0 112 51.2 112 112s-51.2 112-112 112zM512 928c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 22.4-48 48 22.4 48 48 48zM912 64h-304c-9.6 0-16-6.4-16-16 0-44.8-35.2-80-80-80s-80 35.2-80 80c0 9.6-6.4 16-16 16h-304c-44.8 0-80 35.2-80 80s35.2 80 80 80h80c9.6 0 16 6.4 16 16s-6.4 16-16 16h-32v192c0 195.2 156.8 352 352 352s352-156.8 352-352v-192h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h80c44.8 0 80-35.2 80-80s-35.2-80-80-80zM524.8 723.2c-153.6 0-281.6-124.8-281.6-281.6 0-9.6 6.4-16 16-16s16 6.4 16 16c0 137.6 112 249.6 249.6 249.6 9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
43
+ <glyph unicode="&#xe921;" glyph-name="bicycle" horiz-adv-x="1696" d="M1360 601.6c-38.4 0-73.6-6.4-108.8-19.2l-25.6 64c131.2 48 272 28.8 387.2-51.2 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 6.4 6.4 3.2 16-3.2 22.4-121.6 86.4-275.2 105.6-416 54.4l-108.8 252.8h140.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-163.2c-6.4 0-9.6-3.2-12.8-6.4s-3.2-9.6 0-16l96-233.6h-496v128h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h64v-128c-3.2 0-9.6-3.2-9.6-6.4l-51.2-67.2c-179.2 118.4-416 96-569.6-57.6-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 140.8 140.8 361.6 163.2 528 54.4l-41.6-54.4c-51.2 35.2-115.2 54.4-182.4 54.4-188.8-3.2-339.2-153.6-339.2-339.2s150.4-336 336-336c182.4 0 329.6 144 336 326.4h192c0 0 0 0 0 0 3.2 0 3.2 0 6.4 3.2 0 0 0 0 0 0 3.2 0 3.2 3.2 6.4 3.2 0 0 0 0 0 0l307.2 406.4 38.4-96c-115.2-54.4-198.4-169.6-198.4-307.2 0-185.6 150.4-336 336-336s336 153.6 336 336-150.4 336-336 336zM643.2 662.4l195.2-374.4h-166.4c-6.4 99.2-54.4 185.6-128 243.2l99.2 131.2zM640 288h-278.4l163.2 217.6c64-51.2 108.8-128 115.2-217.6zM336-38.4c-166.4 0-304 137.6-304 304s137.6 304 304 304c60.8 0 115.2-16 163.2-48l-182.4-243.2c-3.2-6.4-3.2-12.8 0-16 3.2-6.4 9.6-9.6 12.8-9.6h310.4c-6.4-160-140.8-291.2-304-291.2zM867.2 300.8l-192 371.2h470.4l-278.4-371.2zM1360-38.4c-166.4 0-304 137.6-304 304 0 121.6 73.6 227.2 179.2 275.2l118.4-284.8c3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0 9.6 3.2 12.8 12.8 9.6 22.4l-118.4 284.8c28.8 9.6 64 16 96 16 166.4 0 304-137.6 304-304s-140.8-304-307.2-304z" />
44
+ <glyph unicode="&#xe922;" glyph-name="blog-content" d="M976 960h-928c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48zM992 656c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-256zM1008 560c-9.6 0-16-6.4-16-16v-560c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v560c0 9.6-6.4 16-16 16s-16-6.4-16-16v-560c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v560c0 9.6-6.4 16-16 16zM432 96c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48h-256c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h256zM160 144v256c0 9.6 6.4 16 16 16h256c9.6 0 16-6.4 16-16v-256c0-9.6-6.4-16-16-16h-256c-9.6 0-16 6.4-16 16zM576 384h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16zM576 256h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16zM576 128h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
45
+ <glyph unicode="&#xe923;" glyph-name="bluetooth" horiz-adv-x="608" d="M304 451.2v-9.6l-297.6-288c-6.4-6.4-6.4-19.2 0-25.6s16-6.4 22.4 0l275.2 265.6v-409.6c0-19.2 12.8-38.4 28.8-44.8 6.4-3.2 12.8-3.2 19.2-3.2 12.8 0 25.6 6.4 35.2 16l198.4 208c19.2 19.2 16 48 0 67.2l-227.2 217.6 227.2 220.8c19.2 19.2 19.2 48 3.2 67.2l-198.4 211.2c-12.8 16-35.2 19.2-51.2 12.8-19.2-6.4-32-25.6-32-44.8v-416l-278.4 262.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l297.6-284.8zM336 912c0 9.6 6.4 12.8 9.6 16 0 0 3.2 0 6.4 0s6.4 0 12.8-6.4l198.4-211.2c6.4-6.4 6.4-16 0-22.4l-224-217.6v441.6zM336 419.2l224-217.6c6.4-6.4 6.4-16 0-22.4l-198.4-208c-6.4-6.4-16-3.2-16-3.2-3.2 0-9.6 3.2-9.6 16v435.2z" />
46
+ <glyph unicode="&#xe924;" glyph-name="board" d="M1024 336v576c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48v-576c0-25.6 22.4-48 48-48h128l-160-329.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l160 332.8c3.2 3.2 3.2 6.4 0 9.6h640c0-3.2 0-6.4 0-9.6l128-332.8c3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0 9.6 3.2 12.8 12.8 9.6 19.2l-128 329.6h96c28.8 3.2 51.2 25.6 51.2 51.2zM48 320c-9.6 0-16 6.4-16 16v576c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-576c0-9.6-6.4-16-16-16h-928z" />
47
+ <glyph unicode="&#xe925;" glyph-name="body" horiz-adv-x="1056" d="M22.4 348.8c9.6 3.2 12.8 12.8 12.8 19.2 0 0-22.4 115.2 51.2 204.8 3.2 3.2 3.2 9.6 3.2 16 0 0-41.6 112 9.6 192 35.2 54.4 102.4 83.2 201.6 92.8 3.2 0 6.4 3.2 9.6 3.2 0 0 51.2 44.8 99.2 48 9.6 0 16 9.6 16 16s-6.4 19.2-16 19.2c-51.2-3.2-102.4-41.6-115.2-54.4-105.6-6.4-179.2-41.6-220.8-105.6-51.2-83.2-25.6-182.4-16-214.4-76.8-99.2-54.4-217.6-54.4-224 3.2-6.4 9.6-12.8 19.2-12.8-3.2 0 0 0 0 0zM265.6-57.6c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4-22.4 25.6-19.2 105.6-9.6 153.6 0 3.2 3.2 83.2-25.6 156.8-19.2 51.2-22.4 118.4-22.4 150.4 0 6.4 0 9.6 0 16 0 9.6-6.4 16-16 16s-16-6.4-16-16c0 0 0-6.4 0-16-3.2-96-60.8-172.8-60.8-172.8-6.4-6.4-3.2-16 3.2-22.4s16-3.2 22.4 3.2c3.2 3.2 25.6 35.2 44.8 86.4 3.2-19.2 9.6-38.4 16-54.4 25.6-67.2 25.6-140.8 25.6-140.8-6.4-16-25.6-134.4 16-179.2zM982.4 800c-38.4 60.8-112 96-220.8 105.6-16 12.8-64 51.2-115.2 54.4-9.6 0-16-6.4-16-16s6.4-16 16-16c48-3.2 99.2-48 99.2-48 3.2-3.2 6.4-3.2 9.6-3.2 99.2-6.4 166.4-38.4 201.6-92.8 51.2-83.2 12.8-192 9.6-195.2-3.2-6.4 0-12.8 3.2-16 73.6-89.6 51.2-204.8 51.2-204.8-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8 0 6.4 22.4 124.8-54.4 224 9.6 32 35.2 134.4-16 214.4zM848 316.8c19.2-51.2 41.6-83.2 44.8-86.4 6.4-6.4 16-9.6 22.4-3.2s9.6 16 3.2 22.4c0 0-57.6 76.8-60.8 172.8 0 9.6 0 16 0 16 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-6.4 0-9.6 0-16 0-28.8-3.2-99.2-22.4-150.4-28.8-73.6-25.6-153.6-25.6-160 9.6-44.8 12.8-124.8-9.6-150.4-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c41.6 44.8 22.4 163.2 19.2 176 0 0-3.2 76.8 25.6 144 6.4 16 9.6 35.2 12.8 54.4zM851.2 627.2c-9.6 0-16-6.4-16-16 0-86.4-73.6-160-163.2-160-51.2 0-99.2 22.4-131.2 64-6.4 6.4-19.2 6.4-25.6 0-32-41.6-80-64-131.2-64-89.6 0-163.2 70.4-163.2 160 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-105.6 86.4-192 195.2-192 54.4 0 105.6 22.4 144 60.8 35.2-38.4 86.4-60.8 144-60.8 105.6 0 195.2 86.4 195.2 192 0 9.6-6.4 16-16 16zM668.8 787.2c-51.2-12.8-112-54.4-134.4-73.6-60.8 54.4-137.6 73.6-144 73.6-9.6 3.2-16-3.2-19.2-12.8s3.2-16 12.8-19.2c0 0 83.2-19.2 137.6-76.8 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 0 0 76.8 60.8 134.4 76.8 9.6 3.2 12.8 9.6 12.8 19.2-3.2 12.8-12.8 19.2-22.4 16z" />
48
+ <glyph unicode="&#xe926;" glyph-name="bomb" horiz-adv-x="832" d="M483.2 928c54.4 0 96-38.4 96-89.6 0-64 41.6-105.6 102.4-105.6s102.4 41.6 102.4 102.4c0 9.6 0 35.2 16 35.2 9.6 0 16 6.4 16 16s-6.4 16-16 16c-9.6 0-48-3.2-48-67.2 0-44.8-25.6-70.4-70.4-70.4s-70.4 28.8-70.4 73.6c0 67.2-57.6 121.6-128 121.6-73.6 0-131.2-54.4-131.2-121.6v-70.4c0 0 0-3.2 0-3.2-51.2-12.8-89.6-54.4-96-108.8-156.8-60.8-288-243.2-230.4-444.8 44.8-163.2 192-275.2 358.4-275.2 0 0 0 0 0 0 6.4 0 9.6 0 16 0 201.6 9.6 358.4 169.6 358.4 371.2 0 166.4-121.6 300.8-246.4 348.8-6.4 64-57.6 112-121.6 112h-6.4v70.4c0 57.6 51.2 89.6 99.2 89.6zM387.2 736c51.2 0 92.8-41.6 92.8-92.8 0-6.4 3.2-12.8 9.6-16 115.2-41.6 233.6-166.4 233.6-323.2 0-182.4-144-329.6-326.4-339.2-3.2 0-9.6 0-12.8 0 0 0 0 0 0 0-150.4 0-288 102.4-329.6 252.8-51.2 188.8 76.8 358.4 224 412.8 6.4 0 9.6 6.4 9.6 12.8 0 51.2 41.6 92.8 92.8 92.8h6.4zM272 547.2c-131.2-64-188.8-220.8-124.8-352 3.2-6.4 9.6-9.6 16-9.6 3.2 0 6.4 0 6.4 3.2 9.6 3.2 12.8 12.8 9.6 22.4-54.4 115.2-6.4 252.8 108.8 307.2 9.6 3.2 12.8 12.8 9.6 22.4-6.4 6.4-16 9.6-25.6 6.4z" />
49
+ <glyph unicode="&#xe927;" glyph-name="bond-hand" horiz-adv-x="1088" d="M601.6 656c3.2 0 9.6 0 12.8 3.2l54.4 54.4c3.2 6.4 3.2 16 0 22.4s-16 6.4-22.4 0l-54.4-54.4c-6.4-6.4-6.4-16 0-22.4 0-3.2 6.4-3.2 9.6-3.2zM326.4 486.4c3.2 0 9.6 0 12.8 3.2 6.4 6.4 6.4 16 0 22.4l-54.4 54.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l54.4-54.4c0-3.2 6.4-3.2 9.6-3.2zM473.6 236.8l-54.4-54.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l54.4 54.4c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM1036.8 460.8c-9.6 9.6-22.4 12.8-35.2 16 0 12.8-6.4 25.6-16 35.2s-22.4 12.8-35.2 16c0 12.8-6.4 25.6-16 35.2s-22.4 12.8-35.2 16c0 12.8-6.4 25.6-16 35.2s-19.2 12.8-32 12.8l-144 144c12.8 22.4 9.6 54.4-9.6 73.6l-105.6 105.6c-19.2 19.2-51.2 19.2-70.4 0-3.2-16-9.6-25.6-9.6-38.4-12.8 0-25.6-6.4-35.2-16s-12.8-22.4-16-35.2c-12.8 0-25.6-6.4-35.2-16-3.2-6.4-9.6-19.2-9.6-28.8-12.8 0-25.6-6.4-35.2-16-12.8-12.8-16-32-12.8-48l-137.6-137.6c-22.4 12.8-54.4 9.6-73.6-9.6l-105.6-105.6c-19.2-19.2-19.2-51.2 0-70.4 9.6-9.6 22.4-12.8 35.2-16 0-12.8 6.4-25.6 16-35.2s22.4-12.8 35.2-16c0-12.8 6.4-25.6 16-35.2s22.4-12.8 35.2-16c0-12.8 6.4-25.6 16-35.2s22.4-16 35.2-16c0 0 3.2 0 3.2 0l137.6-137.6c-6.4-9.6-9.6-19.2-9.6-32 0-16 6.4-32 19.2-44.8l105.6-105.6c9.6-9.6 22.4-16 35.2-16s25.6 6.4 35.2 16c9.6 9.6 12.8 22.4 16 35.2 12.8 0 25.6 6.4 35.2 16s12.8 22.4 16 35.2c12.8 0 25.6 6.4 35.2 16s12.8 22.4 16 35.2c12.8 0 25.6 6.4 35.2 16s16 25.6 12.8 38.4l137.6 137.6c22.4-12.8 54.4-9.6 73.6 9.6l105.6 105.6c6.4 25.6 6.4 57.6-12.8 76.8zM406.4 777.6c6.4 6.4 19.2 6.4 25.6 0l38.4-41.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-41.6 41.6c-6.4 6.4-6.4 19.2 0 25.6s19.2 6.4 25.6 0l41.6-41.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-41.6 41.6c-6.4 6.4-6.4 19.2 0 25.6s19.2 6.4 25.6 0l41.6-41.6c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-44.8 41.6c-6.4 6.4-6.4 19.2 0 25.6s19.2 6.4 25.6 0l105.6-105.6c12.8-12.8 12.8-28.8 0-41.6-6.4-6.4-6.4-16 0-22.4l144-144c-3.2 0-3.2-3.2-6.4-3.2l-102.4-102.4-140.8 144c-6.4 6.4-16 6.4-22.4 0-9.6-9.6-32-9.6-41.6 0l-105.6 105.6c-9.6 6.4-9.6 19.2 0 25.6zM704 425.6l-137.6-137.6c-16 3.2-32 3.2-44.8-6.4l-131.2 134.4c3.2 16 3.2 32-6.4 44.8l144 144c12.8 0 25.6 0 35.2 6.4l137.6-137.6c-6.4-12.8-6.4-32 3.2-48zM220.8 329.6l41.6 41.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-41.6-41.6c-6.4-6.4-19.2-6.4-25.6 0s-6.4 19.2 0 25.6l41.6 41.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-41.6-41.6c-6.4-6.4-19.2-6.4-25.6 0s-6.4 19.2 0 25.6l41.6 41.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-44.8-41.6c-6.4-6.4-19.2-6.4-25.6 0s-6.4 19.2 0 25.6l105.6 105.6c12.8 9.6 32 9.6 41.6 0 6.4-6.4 16-6.4 22.4 0l144 144 99.2-99.2c3.2-3.2 3.2-3.2 6.4-3.2l-140.8-147.2c-6.4-6.4-6.4-16 0-22.4 12.8-12.8 12.8-28.8 0-41.6l-105.6-105.6c-6.4-6.4-19.2-6.4-25.6 0-9.6 6.4-9.6 19.2 0 25.6zM681.6 118.4c-6.4-6.4-19.2-6.4-25.6 0l-41.6 41.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l41.6-41.6c6.4-6.4 6.4-19.2 0-25.6s-19.2-6.4-25.6 0l-41.6 41.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l41.6-41.6c6.4-6.4 6.4-19.2 0-25.6s-19.2-6.4-25.6 0l-41.6 41.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l41.6-41.6c6.4-6.4 6.4-19.2 0-25.6s-19.2-6.4-25.6 0l-105.6 105.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4c3.2 3.2 3.2 6.4 3.2 12.8s-3.2 9.6-3.2 12.8l-137.6 137.6c0 0 0 0 0 0l105.6 105.6 137.6-137.6c6.4-6.4 16-6.4 22.4 0 12.8 9.6 32 9.6 41.6 0l105.6-105.6c6.4-12.8 6.4-25.6 0-32zM1014.4 412.8l-105.6-105.6c-9.6-9.6-32-9.6-41.6 0-6.4 6.4-16 6.4-22.4 0l-140.8-140.8c0 0 0 0 0 0l-105.6 105.6 137.6 137.6c3.2 3.2 3.2 6.4 3.2 12.8s-3.2 9.6-3.2 12.8c-12.8 12.8-12.8 28.8 0 41.6l105.6 105.6c6.4 6.4 19.2 6.4 25.6 0s6.4-19.2 0-25.6l-41.6-41.6c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l41.6 41.6c6.4 6.4 19.2 6.4 25.6 0s6.4-19.2 0-25.6l-41.6-41.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l41.6 41.6c6.4 6.4 19.2 6.4 25.6 0s6.4-19.2 0-25.6l-41.6-41.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l41.6 41.6c6.4 6.4 19.2 6.4 25.6 0 3.2-6.4 3.2-19.2-3.2-25.6zM774.4 396.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l54.4-54.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-57.6 54.4z" />
50
+ <glyph unicode="&#xe928;" glyph-name="bond" d="M204.8 864c0-54.4 41.6-96 96-96s96 41.6 96 96-41.6 96-96 96-96-41.6-96-96zM364.8 864c0-35.2-28.8-64-64-64s-64 28.8-64 64 28.8 64 64 64 64-28.8 64-64zM28.8 528c0-44.8 35.2-80 80-80 32 0 60.8 19.2 73.6 48l140.8-25.6c-3.2-12.8-3.2-22.4-3.2-35.2 0-89.6 70.4-160 160-160 67.2 0 124.8 41.6 147.2 99.2l188.8-64c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6-3.2 16-9.6 19.2l-188.8 64c3.2 9.6 3.2 19.2 3.2 28.8 0 89.6-70.4 160-160 160-16 0-28.8-3.2-44.8-6.4l-60.8 153.6c-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2l60.8-153.6c-32-16-57.6-41.6-70.4-73.6l-144 25.6c0 0 0 0 0 3.2 0 44.8-35.2 80-80 80s-86.4-38.4-86.4-83.2zM476.8 563.2c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128 57.6 128 128 128zM108.8 576c25.6 0 48-22.4 48-48s-19.2-48-48-48-48 22.4-48 48 22.4 48 48 48zM160-64c89.6 0 160 70.4 160 160 0 41.6-16 76.8-41.6 105.6l80 83.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-80-83.2c-25.6 19.2-60.8 32-96 32-89.6 0-160-70.4-160-160s70.4-160 160-160zM160 224c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128 57.6 128 128 128zM944 195.2c44.8 0 80 35.2 80 80s-35.2 80-80 80-80-35.2-80-80 35.2-80 80-80zM944 323.2c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 19.2-48 48 22.4 48 48 48zM636.8 553.6c3.2 0 9.6 0 12.8 3.2l57.6 57.6c22.4-16 48-28.8 80-28.8 70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128c0-28.8 9.6-54.4 25.6-76.8l-57.6-57.6c-6.4-6.4-6.4-16 0-22.4 0 0 6.4-3.2 9.6-3.2zM784 812.8c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 44.8 96 96 96z" />
51
+ <glyph unicode="&#xe929;" glyph-name="bonsai" d="M1008 758.4c0 38.4-32 70.4-70.4 70.4s-73.6-32-73.6-70.4c0-6.4 0-12.8 3.2-19.2-44.8 3.2-99.2-16-140.8-60.8-6.4-6.4-12.8-12.8-19.2-22.4-22.4 48-51.2 86.4-86.4 112 12.8 19.2 19.2 41.6 19.2 64 0 70.4-57.6 128-128 128s-128-57.6-128-128c0-22.4 6.4-44.8 19.2-64-35.2-28.8-67.2-70.4-86.4-118.4-28.8 25.6-60.8 41.6-89.6 44.8-38.4 6.4-70.4-3.2-96-25.6-22.4-22.4-32-57.6-25.6-96s28.8-73.6 57.6-105.6c35.2-35.2 76.8-57.6 118.4-64 9.6-25.6 16-51.2 25.6-83.2h-233.6c-9.6 0-16-6.4-16-12.8 0-211.2 176-371.2 403.2-371.2h89.6c227.2 0 403.2 160 403.2 371.2 0 9.6-6.4 12.8-16 12.8h-220.8c12.8 32 22.4 86.4 25.6 131.2 6.4 0 12.8 0 19.2 0 44.8 0 92.8 22.4 131.2 60.8 54.4 54.4 73.6 128 51.2 176 35.2 3.2 64 32 64 70.4zM416 835.2c0 54.4 41.6 96 96 96s96-41.6 96-96c0-16-3.2-32-12.8-48-25.6 12.8-54.4 22.4-83.2 22.4s-57.6-9.6-83.2-22.4c-9.6 16-12.8 32-12.8 48zM188.8 489.6c-25.6 25.6-44.8 57.6-51.2 89.6-6.4 28.8 0 51.2 16 67.2s38.4 22.4 67.2 16c28.8-3.2 57.6-19.2 80-44.8-12.8-41.6-22.4-89.6-22.4-140.8 0-12.8 0-25.6 3.2-35.2-32 3.2-64 22.4-92.8 48zM550.4-32h-89.6c-201.6 0-361.6 128-371.2 320h240c0 0 0 0 0 0s0 0 0 0h364.8c0 0 0 0 0 0h227.2c-9.6-192-169.6-320-371.2-320zM339.2 320c-19.2 64-28.8 99.2-28.8 153.6 0 124.8 51.2 233.6 121.6 278.4 0 0 0 0 0 0s0 0 0 0c25.6 16 51.2 25.6 76.8 25.6 28.8 0 54.4-9.6 76.8-22.4 0 0 0 0 0 0s0 0 0 0c41.6-25.6 76.8-73.6 96-134.4 0 0 0 0 0 0 16-41.6 22.4-92.8 22.4-144 0-54.4-9.6-89.6-28.8-153.6h-336zM918.4 620.8c-6.4-32-22.4-60.8-51.2-89.6-38.4-38.4-89.6-57.6-128-51.2 0 48-9.6 96-22.4 137.6 6.4 12.8 16 22.4 28.8 35.2 51.2 51.2 124.8 67.2 156.8 35.2 16-12.8 22.4-38.4 16-67.2zM934.4 716.8c-22.4 0-38.4 19.2-38.4 41.6s19.2 38.4 41.6 38.4 38.4-19.2 38.4-38.4-19.2-41.6-41.6-41.6z" />
52
+ <glyph unicode="&#xe92a;" glyph-name="book" horiz-adv-x="736" d="M0-16c0-25.6 22.4-48 48-48h640c25.6 0 48 22.4 48 48v736c0 25.6-22.4 48-48 48h-576c-44.8 0-80 35.2-80 80s35.2 80 80 80h592c9.6 0 16 6.4 16 16s-6.4 16-16 16h-592c-60.8 0-112-51.2-112-112 0-3.2 0-6.4 0-12.8 0 0 0-3.2 0-3.2v-848zM32 771.2c19.2-22.4 48-35.2 80-35.2h576c9.6 0 16-6.4 16-16v-736c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v787.2zM704 864h-576c-9.6 0-16-6.4-16-16s6.4-16 16-16h576c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
53
+ <glyph unicode="&#xe92b;" glyph-name="bowl" horiz-adv-x="1152" d="M288 51.2c0-3.2 0-3.2 0 0v-67.2c0-25.6 22.4-48 48-48h480c25.6 0 48 22.4 48 48v64c0 0 0 0 0 0 166.4 102.4 278.4 297.6 288 508.8 0 12.8-3.2 25.6-12.8 35.2s-22.4 16-35.2 16h-524.8l326.4 326.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-348.8-348.8h-486.4c-12.8 0-25.6-6.4-35.2-16s-12.8-19.2-12.8-35.2c12.8-208 124.8-406.4 288-505.6zM832-16c0-9.6-6.4-16-16-16h-480c-9.6 0-16 6.4-16 16v48h512v-48zM1104 576c3.2 0 9.6-3.2 12.8-6.4s3.2-6.4 3.2-9.6c-12.8-211.2-128-403.2-294.4-496h-288c-211.2 92.8-243.2 358.4-243.2 508.8 0 0 0 0 0 3.2h809.6zM38.4 569.6c3.2 3.2 6.4 6.4 9.6 6.4h214.4c0 0 0 0 0-3.2 0-243.2 73.6-422.4 208-508.8h-144c-166.4 92.8-281.6 284.8-294.4 496 0 3.2 3.2 6.4 6.4 9.6z" />
54
+ <glyph unicode="&#xe92c;" glyph-name="brick-wall" horiz-adv-x="1344" d="M48 672h352c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-352c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48zM32 912c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v192zM992 720v192c0 25.6-22.4 48-48 48h-352c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h352c25.6 0 48 22.4 48 48zM576 720v192c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16zM1136 928h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v192c0 9.6 6.4 16 16 16zM1296 576h-352c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h352c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM1312 368c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-160zM752 576h-352c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h352c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM768 368c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-160zM208 352h-176c-9.6 0-16-6.4-16-16s6.4-16 16-16h176c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48h-176c-9.6 0-16-6.4-16-16s6.4-16 16-16h176c9.6 0 16-6.4 16-16v-160c0-9.6-6.4-16-16-16zM48-64h352c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-352c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48zM32 176c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v192zM544 176v-192c0-25.6 22.4-48 48-48h352c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-352c-25.6 0-48-22.4-48-48zM960 176v-192c0-9.6-6.4-16-16-16h-352c-9.6 0-16 6.4-16 16v192c0 9.6 6.4 16 16 16h352c9.6 0 16-6.4 16-16zM1136 192h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v192c0 9.6 6.4 16 16 16z" />
55
+ <glyph unicode="&#xe92d;" glyph-name="brush-paint" horiz-adv-x="1120" d="M972.8 940.8l-454.4-371.2c-6.4-6.4-6.4-16-3.2-22.4 6.4-6.4 16-6.4 22.4-3.2l454.4 371.2c22.4 19.2 54.4 16 76.8-3.2s22.4-51.2 6.4-73.6l-364.8-460.8c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l364.8 457.6c28.8 35.2 25.6 86.4-9.6 118.4-32 32-83.2 35.2-118.4 6.4zM297.6-64c70.4 0 140.8 16 198.4 48 140.8 76.8 172.8 230.4 179.2 291.2 0 16-3.2 32-16 44.8l-147.2 144c-9.6 9.6-22.4 16-35.2 16-240 16-281.6-153.6-307.2-262.4v-6.4c-19.2-73.6-92.8-96-134.4-105.6-12.8-3.2-22.4-9.6-25.6-22.4s-3.2-25.6 6.4-35.2c54.4-70.4 163.2-112 281.6-112zM32 73.6c0 0 3.2 0 0 0 51.2 12.8 140.8 41.6 163.2 131.2v6.4c25.6 105.6 60.8 236.8 249.6 236.8 9.6 0 19.2 0 28.8 0 6.4 0 9.6-3.2 12.8-6.4l147.2-144c6.4-3.2 6.4-12.8 6.4-19.2-6.4-57.6-32-198.4-160-268.8-51.2-28.8-115.2-44.8-182.4-44.8-105.6 0-211.2 38.4-265.6 102.4 0 3.2 0 3.2 0 6.4z" />
56
+ <glyph unicode="&#xe92e;" glyph-name="brush-roll" horiz-adv-x="896" d="M768 720v192c0 25.6-22.4 48-48 48h-512c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h512c25.6 0 48 22.4 48 48zM192 720v192c0 9.6 6.4 16 16 16h512c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-512c-9.6 0-16 6.4-16 16zM48 800h35.2c9.6 0 16 6.4 16 16s-9.6 16-16 16h-35.2c-25.6 0-48-19.2-48-44.8v-230.4c0-25.6 22.4-44.8 48-44.8h384c9.6 0 16-9.6 16-19.2v-57.6c0-9.6 6.4-16 16-16s16 6.4 16 16v57.6c0 25.6-22.4 51.2-48 51.2h-384c-9.6 0-16 3.2-16 12.8v230.4c0 6.4 6.4 12.8 16 12.8zM848 835.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h32c9.6 0 16 6.4 16 16s-6.4 16-16 16h-32zM576 304c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h128c25.6 0 48 22.4 48 48v320zM544-16c0-9.6-6.4-16-16-16h-128c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-320z" />
57
+ <glyph unicode="&#xe92f;" glyph-name="brush" horiz-adv-x="736" d="M0 912v-256c0-25.6 22.4-48 48-48h640c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48h-128c-9.6 0-16-6.4-16-16v-70.4l-41.6 80c-3.2 3.2-9.6 6.4-12.8 6.4h-441.6c-25.6 0-48-22.4-48-48zM144 784c9.6 0 16 6.4 16 16v128h96v-192c0-9.6 6.4-16 16-16s16 6.4 16 16v192h192l67.2-128c3.2-6.4 9.6-9.6 19.2-9.6 3.2 3.2 9.6 9.6 9.6 16v121.6h112c9.6 0 16-6.4 16-16v-256c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h80v-128c0-9.6 6.4-16 16-16zM0 432c0-25.6 22.4-48 48-48h185.6c22.4 0 44.8-9.6 60.8-28.8 16-16 22.4-38.4 19.2-60.8l-25.6-249.6c0-57.6 51.2-105.6 112-105.6s112 48 112 108.8l-28.8 246.4c-3.2 22.4 6.4 44.8 19.2 60.8 16 19.2 38.4 28.8 60.8 28.8h121.6c25.6 0 48 22.4 48 48v112c0 9.6-6.4 16-16 16s-12.8-6.4-12.8-16v-112c0-9.6-6.4-16-16-16h-121.6c-32 0-64-12.8-86.4-38.4s-32-54.4-28.8-86.4l28.8-246.4c0-41.6-35.2-76.8-80-76.8s-80 35.2-80 73.6l28.8 249.6c3.2 32-6.4 64-28.8 86.4-22.4 25.6-54.4 38.4-86.4 38.4h-185.6c-9.6 0-16 6.4-16 16v112c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112z" />
58
+ <glyph unicode="&#xe930;" glyph-name="bug" d="M-16 368c0-9.6 6.4-16 16-16h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128c-9.6 0-16-6.4-16-16zM256 694.4l-102.4 96c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l102.4-96c0 0 0 0 3.2 0-57.6-80-92.8-182.4-92.8-291.2 0-89.6 22.4-172.8 60.8-243.2l-96-96c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l89.6 89.6c64-105.6 169.6-172.8 288-172.8s220.8 67.2 291.2 169.6l89.6-89.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-96 96c35.2 64 57.6 137.6 60.8 217.6h108.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-112c0 108.8-35.2 208-92.8 288 0 0 0 0 3.2 0l102.4 96c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-102.4-96c-19.2 22.4-41.6 41.6-67.2 60.8 0 0 0 0 0 0 0 28.8-16 57.6-41.6 76.8 0 0 3.2 0 3.2 3.2l96 96c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-96-96c-3.2-3.2-3.2-6.4-3.2-9.6-32 19.2-76.8 28.8-128 28.8-48 0-89.6-9.6-124.8-28.8 0 3.2-3.2 6.4-3.2 6.4l-102.4 96c-6.4 12.8-16 9.6-22.4 3.2s-6.4-16 0-22.4l102.4-96c0 0 0 0 0 0-25.6-22.4-41.6-48-41.6-80 0-3.2 0-3.2 0-3.2-22.4-16-41.6-35.2-60.8-57.6zM508.8 848c83.2 0 153.6-38.4 160-86.4-51.2-48-105.6-73.6-160-73.6 0 0 0 0 0 0-83.2 0-144 57.6-160 73.6 6.4 48 76.8 86.4 160 86.4zM339.2 729.6c28.8-25.6 89.6-70.4 169.6-70.4 0 0 0 0 0 0s3.2 0 3.2 0v-51.2c0-9.6 6.4-16 16-16s16 6.4 16 16v51.2c48 9.6 92.8 32 137.6 70.4 102.4-73.6 166.4-208 166.4-352 0-211.2-134.4-387.2-304-406.4v508.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-512c0 0 0 0 0 0-185.6 0-336 182.4-336 409.6 0 144 60.8 275.2 163.2 352z" />
59
+ <glyph unicode="&#xe931;" glyph-name="bulb" horiz-adv-x="704" d="M512 96h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16zM528 16c0 9.6-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16zM288-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160zM544 144v19.2c0 80 28.8 160 86.4 233.6 48 60.8 73.6 134.4 73.6 214.4 0 192-156.8 348.8-352 348.8-12.8 0-25.6 0-41.6-3.2-153.6-16-284.8-140.8-307.2-294.4-16-108.8 19.2-214.4 92.8-291.2 60.8-64 96-144 96-224v-3.2c0-9.6 6.4-16 16-16h320c9.6 0 16 6.4 16 16zM288 512h-57.6c-32 0-57.6 28.8-57.6 57.6s25.6 57.6 57.6 57.6 57.6-22.4 57.6-51.2v-64zM384 160h-64v320h64v-320zM512 160h-96v320h57.6c48 0 89.6 41.6 89.6 89.6s-38.4 89.6-89.6 89.6-89.6-35.2-89.6-83.2v-64h-64v64c0 48-38.4 86.4-89.6 86.4s-89.6-41.6-89.6-89.6 41.6-92.8 89.6-92.8h57.6v-320h-64c-3.2 83.2-38.4 166.4-102.4 233.6-67.2 70.4-99.2 166.4-83.2 265.6 19.2 140.8 137.6 252.8 278.4 268.8 192 22.4 355.2-128 355.2-316.8 0-70.4-22.4-137.6-67.2-195.2-60.8-76.8-92.8-163.2-92.8-252.8v-3.2zM416 512v64c0 28.8 25.6 54.4 57.6 54.4s57.6-28.8 57.6-57.6-28.8-60.8-57.6-60.8h-57.6z" />
60
+ <glyph unicode="&#xe932;" glyph-name="calculation" d="M0 528c0-25.6 22.4-48 48-48h384c25.6 0 48 22.4 48 48v384c0 25.6-22.4 48-48 48h-384c-25.6 0-48-22.4-48-48v-384zM32 912c0 9.6 6.4 16 16 16h384c9.6 0 16-6.4 16-16v-384c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v384zM1024 912c0 25.6-22.4 48-48 48h-384c-25.6 0-48-22.4-48-48v-384c0-25.6 22.4-48 48-48h384c25.6 0 48 22.4 48 48v384zM992 528c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v384c0 9.6 6.4 16 16 16h384c9.6 0 16-6.4 16-16v-384zM0-16c0-25.6 22.4-48 48-48h384c25.6 0 48 22.4 48 48v384c0 25.6-22.4 48-48 48h-384c-25.6 0-48-22.4-48-48v-384zM32 368c0 9.6 6.4 16 16 16h384c9.6 0 16-6.4 16-16v-384c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v384zM592-64h384c25.6 0 48 22.4 48 48v384c0 25.6-22.4 48-48 48h-384c-25.6 0-48-22.4-48-48v-384c0-25.6 22.4-48 48-48zM576 368c0 9.6 6.4 16 16 16h384c9.6 0 16-6.4 16-16v-384c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v384zM160 704h64v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16zM864 736h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM704 192h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16zM704 128h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16zM160 80c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l64 64 64-64c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-64 64 64 64c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-64-64-64 64c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l64-64-64-64c-12.8-6.4-12.8-16-6.4-22.4z" />
61
+ <glyph unicode="&#xe933;" glyph-name="calendar" d="M48 832h80c9.6 0 16 6.4 16 16s-6.4 16-16 16h-80c-25.6 0-48-22.4-48-48v-832c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v832c0 25.6-22.4 48-48 48h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80c9.6 0 16-6.4 16-16v-176h-960v176c0 9.6 6.4 16 16 16zM992 608v-624c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v624h960zM608 832c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192zM336 96h96c12.8 0 22.4 6.4 32 12.8 9.6-6.4 19.2-12.8 32-12.8h96c25.6 0 48 22.4 48 48v96c0 6.4-3.2 16-6.4 22.4 6.4-3.2 12.8-6.4 22.4-6.4h96c25.6 0 48 22.4 48 48v96c0 25.6-22.4 48-48 48h-96c-12.8 0-22.4-6.4-32-12.8-9.6 6.4-19.2 12.8-32 12.8h-96c-12.8 0-22.4-6.4-32-12.8-9.6 6.4-19.2 12.8-32 12.8h-96c-25.6 0-48-22.4-48-48v-96c0-12.8 6.4-22.4 12.8-32-6.4-9.6-12.8-19.2-12.8-32v-96c0-25.6 22.4-48 48-48zM432 128h-96c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16h96c9.6 0 16-6.4 16-16v-96c0-9.6-6.4-16-16-16zM608 144c0-9.6-6.4-16-16-16h-96c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16h96c9.6 0 16-6.4 16-16v-96zM656 416h96c9.6 0 16-6.4 16-16v-96c0-9.6-6.4-16-16-16h-96c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16zM496 416h96c9.6 0 16-6.4 16-16v-96c0-9.6-6.4-16-16-16h-96c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16zM320 400c0 9.6 6.4 16 16 16h96c9.6 0 16-6.4 16-16v-96c0-9.6-6.4-16-16-16h-96c-9.6 0-16 6.4-16 16v96zM352 816v64c0 44.8-35.2 80-80 80s-80-35.2-80-80v-64c0-44.8 35.2-80 80-80s80 35.2 80 80zM224 816v64c0 25.6 22.4 48 48 48s48-22.4 48-48v-64c0-25.6-22.4-48-48-48s-48 22.4-48 48zM832 816v64c0 44.8-35.2 80-80 80s-80-35.2-80-80v-64c0-44.8 35.2-80 80-80s80 35.2 80 80zM704 816v64c0 25.6 22.4 48 48 48s48-22.4 48-48v-64c0-25.6-22.4-48-48-48s-48 22.4-48 48z" />
62
+ <glyph unicode="&#xe934;" glyph-name="camera" horiz-adv-x="1216" d="M48-64h1120c25.6 0 48 22.4 48 48v800c0 25.6-22.4 48-48 48h-1120c-25.6 0-48-22.4-48-48v-800c0-25.6 22.4-48 48-48zM32 784c0 9.6 6.4 16 16 16h1120c9.6 0 16-6.4 16-16v-800c0-9.6-6.4-16-16-16h-1120c-9.6 0-16 6.4-16 16v800zM608 128c160 0 288 128 288 288s-128 288-288 288-288-128-288-288c0-160 128-288 288-288zM608 672c140.8 0 256-115.2 256-256s-115.2-256-256-256-256 115.2-256 256c0 140.8 115.2 256 256 256zM608 214.4c9.6 0 16 6.4 16 16s-6.4 16-16 16c-92.8 0-169.6 76.8-169.6 169.6 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-112 89.6-201.6 201.6-201.6zM518.4 860.8c9.6 0 16 6.4 16 16 0 28.8 22.4 51.2 51.2 51.2h172.8c28.8 0 51.2-22.4 51.2-51.2 0-9.6 6.4-16 16-16s16 6.4 16 16c0 44.8-38.4 83.2-83.2 83.2h-172.8c-44.8 0-83.2-38.4-83.2-83.2 0-6.4 9.6-16 16-16zM208 864c9.6 0 16 6.4 16 16 0 25.6 22.4 48 48 48s48-22.4 48-48c0-9.6 6.4-16 16-16s16 6.4 16 16c0 44.8-35.2 80-80 80s-80-35.2-80-80c0-9.6 6.4-16 16-16z" />
63
+ <glyph unicode="&#xe935;" glyph-name="candle" horiz-adv-x="672" d="M0 80v-96c0-25.6 22.4-48 48-48h576c25.6 0 48 22.4 48 48v96c0 25.6-22.4 48-48 48h-19.2c3.2 6.4 3.2 9.6 3.2 16v384c0 25.6-22.4 48-48 48h-208v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-208c-25.6 0-48-22.4-48-48v-384c0-6.4 0-9.6 3.2-16h-19.2c-25.6 0-48-22.4-48-48zM96 528c0 9.6 6.4 16 16 16h304v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64h112c9.6 0 16-6.4 16-16v-384c0-9.6-6.4-16-16-16h-448c-9.6 0-16 6.4-16 16v384zM112 96h512c9.6 0 16-6.4 16-16v-96c0-9.6-6.4-16-16-16h-576c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16h64zM265.6 611.2c6.4 3.2 9.6 6.4 9.6 12.8 6.4 83.2 41.6 124.8 60.8 140.8 54.4-57.6 70.4-140.8 70.4-140.8 0-6.4 6.4-12.8 12.8-12.8 6.4-3.2 12.8 0 16 6.4 38.4 51.2 54.4 102.4 48 156.8-16 108.8-121.6 182.4-128 185.6s-12.8 3.2-19.2 0c-86.4-60.8-134.4-124.8-140.8-195.2-6.4-86.4 51.2-147.2 51.2-147.2 3.2-3.2 6.4-3.2 12.8-3.2 3.2-3.2 3.2-3.2 6.4-3.2zM227.2 761.6c6.4 57.6 44.8 112 118.4 166.4 25.6-19.2 92.8-80 105.6-156.8 3.2-35.2-3.2-70.4-22.4-105.6-12.8 35.2-35.2 92.8-80 134.4-3.2 3.2-6.4 3.2-9.6 3.2s-6.4 0-9.6-3.2c-3.2 0-60.8-38.4-80-131.2-12.8 22.4-25.6 54.4-22.4 92.8zM176 176c9.6 0 16 6.4 16 16v288c0 9.6-6.4 16-16 16s-16-6.4-16-16v-288c0-9.6 6.4-16 16-16z" />
64
+ <glyph unicode="&#xe936;" glyph-name="candles" d="M217.6 854.4c-22.4-41.6 9.6-80 32-96 0 0 3.2-3.2 6.4-3.2s9.6 3.2 12.8 6.4c32 38.4 44.8 80 41.6 115.2-6.4 51.2-41.6 80-44.8 80-6.4 3.2-12.8 6.4-19.2 0-3.2-3.2-6.4-9.6-6.4-16 6.4-28.8-3.2-44.8-22.4-83.2v-3.2zM246.4 838.4l3.2 3.2c9.6 22.4 16 38.4 22.4 57.6 3.2-6.4 6.4-16 6.4-25.6 3.2-25.6-6.4-51.2-22.4-80-9.6 12.8-19.2 28.8-9.6 44.8zM633.6 649.6c-22.4-41.6 9.6-80 32-96 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c32 38.4 44.8 80 41.6 115.2-6.4 51.2-41.6 76.8-44.8 80-6.4 3.2-12.8 3.2-19.2 0s-9.6-9.6-6.4-16c6.4-28.8-3.2-48-22.4-83.2l-3.2-3.2zM662.4 633.6l3.2 3.2c9.6 22.4 19.2 38.4 25.6 54.4 3.2-6.4 6.4-16 6.4-25.6 3.2-25.6-6.4-51.2-22.4-80-12.8 16-22.4 32-12.8 48zM16-38.4c-3.2-6.4-3.2-12.8 0-16 0-6.4 6.4-9.6 12.8-9.6h947.2c9.6 0 16 6.4 16 16 0 3.2 0 6.4-3.2 9.6-44.8 64-83.2 102.4-121.6 121.6 60.8 57.6 96 134.4 96 217.6 0 105.6-48 201.6-121.6 240-6.4 3.2-12.8 6.4-22.4 6.4h-300.8c-9.6 0-16-3.2-22.4-6.4-70.4-35.2-121.6-134.4-121.6-240 0-76.8 28.8-147.2 80-204.8h-102.4v592c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-592c0-3.2 3.2-9.6 3.2-9.6-32-12.8-64-38.4-96-92.8l-19.2-32zM406.4 300.8c0 89.6 44.8 179.2 102.4 211.2 3.2 0 3.2 0 6.4 0h124.8v-192c0-9.6 6.4-16 16-16s16 6.4 16 16v192h64v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96h51.2c3.2 0 6.4 0 6.4-3.2 60.8-32 102.4-118.4 102.4-211.2 0-76.8-32-147.2-89.6-198.4-3.2-3.2-3.2-3.2-3.2-6.4-9.6 3.2-19.2 3.2-28.8 3.2h-307.2c0 0 0 0 0 0-60.8 54.4-92.8 124.8-92.8 204.8zM160 96v592c0 9.6 6.4 16 16 16h80v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64h16c9.6 0 16-6.4 16-16v-592h-131.2c-9.6 0-19.2 0-28.8 0 0-3.2 0 0 0 0zM64-25.6c32 57.6 73.6 89.6 121.6 89.6h620.8c48 0 86.4-25.6 137.6-96h-883.2l3.2 6.4z" />
65
+ <glyph unicode="&#xe937;" glyph-name="car" horiz-adv-x="1408" d="M1305.6 592c35.2 16 67.2 35.2 92.8 54.4 6.4 6.4 9.6 16 3.2 22.4s-16 9.6-22.4 3.2c-35.2-22.4-73.6-44.8-121.6-64l-60.8 227.2c-19.2 73.6-86.4 124.8-163.2 124.8h-659.2c-76.8 0-144-51.2-169.6-124.8l-57.6-227.2c0 0-3.2 0-3.2 0-44.8 19.2-86.4 38.4-118.4 64-6.4 3.2-19.2 3.2-22.4-6.4s-3.2-16 3.2-22.4c25.6-16 54.4-32 89.6-48-57.6-25.6-96-89.6-96-163.2v-128c0-80 54.4-150.4 128-169.6 0-3.2 0-3.2 0-6.4v-44.8c0-80 64-147.2 144-147.2s144 67.2 144 147.2v44.8h576v-44.8c0-83.2 64-147.2 144-147.2s144 67.2 144 147.2v44.8c0 3.2 0 3.2 0 6.4 73.6 19.2 128 89.6 128 169.6v128c0 70.4-35.2 131.2-102.4 160zM236.8 825.6c19.2 60.8 73.6 102.4 137.6 102.4h659.2c64 0 118.4-41.6 137.6-102.4l57.6-217.6c-3.2 0-6.4 0-12.8 0v-19.2c-140.8-48-320-76.8-512-76.8-198.4 0-384 28.8-528 83.2l60.8 230.4zM384 83.2c0-64-51.2-115.2-112-115.2s-112 51.2-112 115.2v44.8c0 0 0 0 0 0 6.4 0 9.6 0 16 0h208v-44.8zM1248 128v-44.8c0-64-51.2-115.2-112-115.2s-112 51.2-112 115.2v44.8h208c6.4 0 9.6 0 16 0 0 0 0 0 0 0zM1376 304c0-80-64-144-144-144h-1056c-80 0-144 64-144 144v128c0 70.4 51.2 131.2 108.8 140.8 150.4-57.6 352-92.8 563.2-92.8 208 0 406.4 32 553.6 89.6 70.4-16 118.4-70.4 118.4-137.6v-128zM230.4 464c-54.4 0-96-41.6-96-96s41.6-96 96-96 96 41.6 96 96-44.8 96-96 96zM230.4 304c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM1190.4 464c-54.4 0-96-41.6-96-96s41.6-96 96-96 96 41.6 96 96-44.8 96-96 96zM1190.4 304c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM598.4 704c3.2 0 9.6 0 12.8 3.2l86.4 86.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-86.4-86.4c-6.4-6.4-6.4-16 0-22.4 0-3.2 3.2-3.2 9.6-3.2zM598.4 566.4c3.2 0 9.6 0 12.8 3.2l227.2 227.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-227.2-227.2c-6.4-6.4-6.4-16 0-22.4 0 0 3.2-3.2 9.6-3.2zM688 400c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM560 400c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM816 400c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16z" />
66
+ <glyph unicode="&#xe938;" glyph-name="card" d="M416 624c41.6 0 73.6 32 73.6 73.6s-32 73.6-73.6 73.6-73.6-32-73.6-73.6 35.2-73.6 73.6-73.6zM416 742.4c22.4 0 41.6-19.2 41.6-41.6s-19.2-44.8-41.6-44.8-41.6 19.2-41.6 41.6 19.2 44.8 41.6 44.8zM323.2 464c3.2 0 9.6 3.2 12.8 6.4l83.2 86.4 28.8-28.8c6.4-6.4 12.8-6.4 19.2-6.4s12.8 3.2 19.2 9.6l137.6 140.8 118.4-121.6c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-124.8 121.6c-3.2 6.4-9.6 9.6-19.2 9.6s-12.8-3.2-19.2-9.6l-137.6-140.8-28.8 28.8c-9.6 9.6-28.8 9.6-38.4 0l-86.4-89.6c-6.4-6.4-6.4-16 0-22.4 3.2-6.4 9.6-6.4 12.8-6.4zM774.4 224h-480c-9.6 0-16-6.4-16-16s6.4-16 12.8-16h480c9.6 0 16 6.4 16 16s-3.2 16-12.8 16zM774.4 313.6h-480c-9.6 0-16-6.4-16-16s6.4-16 16-16h480c9.6 0 16 6.4 16 16s-6.4 16-16 16zM515.2 137.6h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h220.8c9.6 0 16 6.4 16 16s-3.2 16-12.8 16zM864 956.8h-704c-44.8 0-80-35.2-80-80v-864c0-44.8 35.2-80 80-80h704c44.8 0 80 35.2 80 80v864c0 44.8-35.2 80-80 80zM912 12.8c0-25.6-22.4-48-48-48h-704c-25.6 0-48 22.4-48 48v864c0 25.6 22.4 48 48 48h704c25.6 0 48-22.4 48-48v-864z" />
67
+ <glyph unicode="&#xe939;" glyph-name="caret-down" d="M512 44.8c-19.2 0-41.6 9.6-51.2 25.6l-451.2 636.8c-12.8 19.2-16 44.8-3.2 67.2 9.6 22.4 32 35.2 57.6 35.2h902.4c25.6 0 44.8-12.8 57.6-35.2 9.6-22.4 9.6-48-3.2-67.2l-457.6-636.8c-9.6-16-32-25.6-51.2-25.6zM60.8 777.6c-12.8 0-22.4-6.4-28.8-19.2s-3.2-22.4 3.2-32l451.2-636.8c12.8-16 41.6-16 51.2 0l451.2 636.8c6.4 9.6 6.4 22.4 3.2 32s-16 16-28.8 16h-902.4z" />
68
+ <glyph unicode="&#xe93a;" glyph-name="caret-fill-down" d="M16 681.6l460.8-528c19.2-22.4 54.4-22.4 73.6 0l457.6 528c25.6 32 6.4 80-35.2 80h-918.4c-44.8 0-64-48-38.4-80z" />
69
+ <glyph unicode="&#xe93b;" glyph-name="caret-fill-left" d="M745.6 944l-528-460.8c-22.4-19.2-22.4-54.4 0-73.6l528-460.8c32-25.6 80-6.4 80 35.2v918.4c-3.2 48-51.2 67.2-80 41.6z" />
70
+ <glyph unicode="&#xe93c;" glyph-name="caret-fill-right" d="M278.4-51.2l531.2 464c22.4 19.2 22.4 54.4 0 73.6l-531.2 460.8c-32 25.6-80 6.4-80-35.2v-928c0-41.6 48-64 80-35.2z" />
71
+ <glyph unicode="&#xe93d;" glyph-name="caret-fill-up" d="M1008 214.4l-460.8 528c-19.2 22.4-54.4 22.4-73.6 0l-457.6-528c-25.6-32-6.4-80 35.2-80h918.4c44.8 0 64 48 38.4 80z" />
72
+ <glyph unicode="&#xe93e;" glyph-name="caret-left" d="M828.8-67.2v0c-12.8 0-25.6 3.2-38.4 12.8l-633.6 451.2c-16 12.8-25.6 32-25.6 51.2s9.6 41.6 25.6 51.2l636.8 451.2c9.6 6.4 22.4 12.8 38.4 12.8 35.2 0 64-28.8 64-64v-902.4c0-19.2-6.4-35.2-19.2-44.8-12.8-12.8-32-19.2-48-19.2zM828.8 931.2c-6.4 0-12.8-3.2-19.2-6.4l-633.6-451.2c-9.6-6.4-12.8-16-12.8-25.6s6.4-19.2 12.8-25.6l636.8-451.2c6.4-3.2 12.8-6.4 19.2-6.4v0c9.6 0 16 3.2 22.4 9.6 3.2 3.2 9.6 12.8 9.6 22.4v902.4c-3.2 19.2-19.2 32-35.2 32z" />
73
+ <glyph unicode="&#xe93f;" glyph-name="caret-right" d="M195.2-67.2v0c-35.2 0-64 28.8-64 64v902.4c0 35.2 28.8 64 64 64 12.8 0 25.6-3.2 38.4-12.8l636.8-451.2c16-12.8 25.6-32 25.6-51.2s-9.6-41.6-25.6-51.2l-640-451.2c-9.6-9.6-22.4-12.8-35.2-12.8zM195.2 931.2c-16 0-32-12.8-32-32v-902.4c0-19.2 16-32 32-32v0c6.4 0 12.8 3.2 19.2 6.4l636.8 451.2c9.6 6.4 12.8 16 12.8 25.6s-6.4 19.2-12.8 25.6l-640 451.2c-3.2 3.2-9.6 6.4-16 6.4z" />
74
+ <glyph unicode="&#xe940;" glyph-name="caret-up" d="M963.2 64h-902.4c-22.4 0-44.8 12.8-57.6 35.2-9.6 22.4-9.6 48 3.2 67.2l454.4 636.8c12.8 16 32 25.6 51.2 25.6 22.4 0 41.6-9.6 51.2-25.6l451.2-636.8c12.8-19.2 16-44.8 3.2-67.2-9.6-22.4-32-35.2-54.4-35.2zM512 796.8c-9.6 0-19.2-6.4-25.6-12.8l-451.2-636.8c-6.4-9.6-6.4-22.4-3.2-35.2 6.4-9.6 16-16 28.8-16h902.4c12.8 0 22.4 6.4 28.8 16s6.4 22.4-3.2 35.2l-451.2 636.8c-6.4 9.6-16 12.8-25.6 12.8z" />
75
+ <glyph unicode="&#xe941;" glyph-name="carousal" horiz-adv-x="1056" d="M784 960h-512c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h512c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM800-16c0-9.6-6.4-16-16-16h-512c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h512c9.6 0 16-6.4 16-16v-928zM1014.4 51.2c-3.2 0-9.6-3.2-16 3.2l-67.2 64c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l67.2-64c9.6-9.6 22.4-12.8 32-12.8 6.4 0 12.8 0 19.2 3.2 19.2 6.4 28.8 25.6 28.8 44.8v764.8c0 19.2-9.6 35.2-28.8 44.8s-38.4 3.2-51.2-9.6l-70.4-64c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l70.4 64c6.4 6.4 16 3.2 16 3.2 3.2-3.2 9.6-6.4 9.6-16v-761.6c0-12.8-6.4-16-9.6-19.2zM41.6 848c3.2 0 9.6 3.2 16-3.2l83.2-70.4c6.4-3.2 19.2-3.2 22.4 3.2s6.4 19.2 0 22.4l-83.2 70.4c-16 12.8-35.2 16-51.2 6.4-19.2-6.4-28.8-22.4-28.8-41.6v-771.2c0-19.2 9.6-35.2 28.8-44.8 6.4-3.2 12.8-3.2 19.2-3.2 12.8 0 22.4 3.2 32 12.8l80 67.2c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-80-67.2c-6.4-6.4-16-3.2-16-3.2-6.4-3.2-12.8 3.2-12.8 12.8v771.2c0 9.6 6.4 12.8 9.6 12.8z" />
76
+ <glyph unicode="&#xe942;" glyph-name="cart-empty" horiz-adv-x="1152" d="M1136 672h-656c-9.6 0-16-6.4-16-16s6.4-16 16-16h636.8l-70.4-384h-672l-188.8 691.2c0 6.4-6.4 12.8-16 12.8h-137.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h124.8l188.8-691.2c3.2-6.4 9.6-12.8 16-12.8h694.4c6.4 0 12.8 6.4 16 12.8l76.8 416c0 3.2 0 9.6-3.2 12.8 0 3.2-6.4 6.4-9.6 6.4zM534.4 28.8c0 51.2-41.6 92.8-92.8 92.8s-92.8-41.6-92.8-92.8 41.6-92.8 92.8-92.8 92.8 41.6 92.8 92.8zM380.8 28.8c0 32 25.6 60.8 60.8 60.8s60.8-25.6 60.8-60.8-25.6-60.8-60.8-60.8-60.8 25.6-60.8 60.8zM937.6 121.6c-51.2 0-92.8-41.6-92.8-92.8s41.6-92.8 92.8-92.8 92.8 41.6 92.8 92.8-41.6 92.8-92.8 92.8zM937.6-32c-32 0-60.8 25.6-60.8 60.8s25.6 60.8 60.8 60.8 60.8-25.6 60.8-60.8-25.6-60.8-60.8-60.8zM608 352v192c0 9.6-6.4 16-16 16s-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16zM832 352v192c0 9.6-6.4 16-16 16s-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16z" />
77
+ <glyph unicode="&#xe943;" glyph-name="cart-full" horiz-adv-x="1120" d="M1062.4 672h-598.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h598.4c6.4 0 9.6-3.2 12.8-6.4s3.2-9.6 3.2-12.8l-60.8-345.6c-3.2-9.6-9.6-19.2-16-19.2h-611.2c-3.2 0-12.8 9.6-16 19.2l-169.6 617.6c-6.4 22.4-25.6 35.2-44.8 35.2h-144c-9.6 0-16-6.4-16-16s6.4-16 16-16h144c6.4 0 12.8-3.2 16-9.6l169.6-617.6c6.4-19.2 22.4-41.6 44.8-41.6h611.2c25.6 0 44.8 22.4 48 44.8l60.8 345.6c3.2 12.8 0 28.8-9.6 41.6-9.6 6.4-22.4 12.8-38.4 12.8zM441.6 118.4c-48 0-89.6-41.6-89.6-89.6s41.6-89.6 89.6-89.6 89.6 41.6 89.6 89.6-41.6 89.6-89.6 89.6zM441.6-28.8c-32 0-57.6 25.6-57.6 57.6s25.6 57.6 57.6 57.6 57.6-25.6 57.6-57.6-28.8-57.6-57.6-57.6zM918.4 118.4c-48 0-89.6-41.6-89.6-89.6s41.6-89.6 89.6-89.6c48 0 89.6 41.6 89.6 89.6s-41.6 89.6-89.6 89.6zM918.4-28.8c-32 0-57.6 25.6-57.6 57.6s25.6 57.6 57.6 57.6c32 0 57.6-25.6 57.6-57.6s-25.6-57.6-57.6-57.6zM592 352v192c0 9.6-6.4 16-16 16s-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16zM816 352v192c0 9.6-6.4 16-16 16s-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16zM1024 752c9.6 0 16 6.4 16 16v83.2c0 22.4-12.8 41.6-35.2 48l-227.2 57.6c-12.8 3.2-28.8 0-41.6-9.6-6.4-6.4-9.6-12.8-12.8-19.2l-195.2-67.2c-19.2-6.4-35.2-25.6-35.2-44.8v-48c0-9.6 6.4-16 16-16s16 6.4 16 16v48c0 6.4 6.4 12.8 12.8 16l179.2 60.8v-124.8c0-9.6 6.4-16 16-16s16 6.4 16 16v140.8c0 6.4 3.2 9.6 6.4 12.8s9.6 3.2 12.8 3.2l230.4-60.8c9.6-3.2 9.6-12.8 9.6-16v-80c0-9.6 6.4-16 16-16z" />
78
+ <glyph unicode="&#xe944;" glyph-name="caution" horiz-adv-x="1184" d="M592 99.2c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 35.2 80 80c0 44.8-35.2 80-80 80zM592-28.8c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48zM592 681.6c-54.4 0-96-41.6-96-89.6l22.4-352c0-38.4 32-67.2 70.4-67.2s70.4 28.8 70.4 67.2l28.8 355.2c0 44.8-41.6 86.4-96 86.4zM627.2 236.8c0-19.2-19.2-35.2-38.4-35.2s-38.4 16-38.4 35.2l-22.4 352c0 32 28.8 57.6 64 57.6s64-25.6 64-57.6l-28.8-352zM115.2 0h281.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-281.6c-32 0-57.6 16-73.6 41.6-12.8 25.6-12.8 57.6 3.2 83.2l476.8 732.8c16 25.6 41.6 38.4 70.4 38.4s54.4-12.8 70.4-38.4l476.8-732.8c16-25.6 19.2-57.6 3.2-83.2s-41.6-41.6-73.6-41.6h-281.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h281.6c41.6 0 80 22.4 102.4 60.8 19.2 38.4 19.2 80-3.2 115.2l-480 732.8c-22.4 32-57.6 51.2-96 51.2s-73.6-19.2-96-51.2l-476.8-732.8c-22.4-35.2-25.6-80-3.2-115.2 19.2-38.4 54.4-60.8 99.2-60.8z" />
79
+ <glyph unicode="&#xe945;" glyph-name="chair" horiz-adv-x="896" d="M652.8 435.2c0-9.6 3.2-16 12.8-19.2 0 0 0 0 3.2 0 6.4 0 16 6.4 16 12.8l51.2 348.8c6.4 44.8-9.6 92.8-38.4 124.8-28.8 38.4-73.6 57.6-121.6 57.6h-249.6c-48 0-92.8-19.2-124.8-54.4s-44.8-80-38.4-128l51.2-348.8c3.2-6.4 9.6-12.8 19.2-12.8s16 9.6 12.8 19.2l-51.2 345.6c-3.2 35.2 6.4 73.6 32 102.4 22.4 28.8 60.8 44.8 99.2 44.8h249.6c38.4 0 73.6-16 99.2-44.8s35.2-64 32-99.2l-54.4-348.8zM668.8-64c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6-9.6 16-19.2 19.2-73.6 22.4-124.8 32-220.8 32v64c0 9.6-6.4 16-16 16s-19.2-3.2-19.2-12.8v-64c-96-3.2-198.4-32-204.8-32-9.6-3.2-9.6-12.8-6.4-19.2 3.2-9.6 12.8-12.8 22.4-9.6 3.2-3.2 227.2 67.2 441.6-3.2zM64 576h51.2c9.6 0 16 6.4 16 16s-9.6 16-16 16h-51.2c-19.2 0-35.2-12.8-48-25.6s-19.2-35.2-16-54.4c28.8-230.4 220.8-406.4 448-406.4s419.2 172.8 448 406.4c3.2 19.2-3.2 41.6-16 57.6-12.8 9.6-28.8 22.4-48 22.4h-48c-9.6 0-16-6.4-16-16s6.4-16 16-16h48c9.6 0 16-9.6 22.4-16s9.6-19.2 9.6-28.8c-25.6-214.4-204.8-380.8-416-380.8s-390.4 163.2-416 377.6c0 9.6 3.2 25.6 9.6 32s12.8 16 22.4 16z" />
80
+ <glyph unicode="&#xe946;" glyph-name="chair2" horiz-adv-x="800" d="M790.4 950.4c-6.4 3.2-16 0-22.4-6.4-121.6-240-137.6-438.4-137.6-496h-470.4c-22.4 0-41.6-16-48-35.2l-112-460.8c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8l112 460.8c3.2 3.2 9.6 9.6 16 9.6h473.6l108.8-467.2c3.2-6.4 9.6-12.8 16-12.8 0 0 3.2 0 3.2 0 9.6 3.2 12.8 9.6 12.8 19.2l-115.2 486.4c0 44.8 12.8 246.4 137.6 489.6 6.4 6.4 3.2 16-6.4 19.2z" />
81
+ <glyph unicode="&#xe947;" glyph-name="chat-bubble-single" horiz-adv-x="1120" d="M835.2 656c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 35.2 80 80-38.4 80-80 80zM835.2 528c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48zM592 656c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 38.4 80 80-35.2 80-80 80zM592 528c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-19.2 48-48-22.4-48-48-48zM348.8 656c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 35.2 80 80-35.2 80-80 80zM348.8 528c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-19.2-48-48-48zM1072 960h-1024c-25.6 0-48-22.4-48-48v-704c0-25.6 22.4-48 48-48h192c9.6 0 16-6.4 16-16v-192c0-6.4 3.2-12.8 9.6-12.8 0-3.2 3.2-3.2 6.4-3.2s6.4 0 9.6 3.2l304 217.6c3.2 3.2 6.4 3.2 9.6 3.2h476.8c25.6 0 48 22.4 48 48v704c0 25.6-22.4 48-48 48zM1088 208c0-9.6-6.4-16-16-16h-476.8c-9.6 0-19.2-3.2-28.8-9.6l-278.4-198.4v160c0 25.6-22.4 48-48 48h-192c-9.6 0-16 6.4-16 16v704c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-704z" />
82
+ <glyph unicode="&#xe948;" glyph-name="chat-bubble" horiz-adv-x="1184" d="M204.8 316.8l-60.8-131.2c-3.2-6.4 0-12.8 3.2-19.2 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 3.2 0 6.4 0l217.6 99.2c25.6-3.2 48-3.2 70.4-3.2 249.6 0 451.2 156.8 451.2 348.8s-201.6 348.8-451.2 348.8-457.6-153.6-457.6-345.6c0-118.4 76.8-227.2 208-294.4zM451.2 928c230.4 0 419.2-140.8 419.2-316.8s-188.8-316.8-419.2-316.8c-22.4 0-44.8 0-70.4 6.4-3.2 0-6.4 0-9.6 0l-182.4-83.2 51.2 102.4c3.2 3.2 3.2 9.6 0 12.8s-3.2 6.4-9.6 9.6c-124.8 57.6-201.6 160-201.6 272 0 172.8 188.8 313.6 422.4 313.6zM230.4 534.4c6.4 0 9.6-3.2 16-3.2 19.2 0 38.4 9.6 51.2 25.6s16 35.2 12.8 54.4c-6.4 22.4-22.4 41.6-48 48s-51.2-3.2-67.2-22.4c-12.8-16-16-35.2-12.8-54.4 6.4-25.6 25.6-44.8 48-48zM220.8 614.4c6.4 6.4 16 12.8 25.6 12.8 3.2 0 6.4 0 9.6 0 9.6-3.2 19.2-12.8 22.4-22.4s0-19.2-6.4-28.8c-6.4-9.6-19.2-12.8-32-12.8-9.6 3.2-19.2 12.8-22.4 22.4-6.4 12.8-3.2 22.4 3.2 28.8zM419.2 534.4c6.4 0 9.6-3.2 16-3.2 19.2 0 38.4 9.6 51.2 25.6s16 35.2 12.8 54.4c-6.4 22.4-22.4 41.6-48 48s-51.2-3.2-67.2-22.4c-12.8-16-16-35.2-12.8-54.4 6.4-25.6 25.6-44.8 48-48zM409.6 614.4c6.4 6.4 16 12.8 25.6 12.8 3.2 0 6.4 0 9.6 0 9.6-3.2 19.2-12.8 22.4-22.4s0-19.2-6.4-28.8c-6.4-9.6-19.2-12.8-32-12.8-9.6 3.2-19.2 12.8-22.4 22.4-6.4 12.8-3.2 22.4 3.2 28.8zM608 534.4c6.4 0 9.6-3.2 16-3.2 19.2 0 38.4 9.6 51.2 25.6s16 35.2 12.8 54.4c-6.4 22.4-22.4 41.6-48 48s-51.2-3.2-67.2-22.4c-12.8-16-16-35.2-12.8-54.4 6.4-25.6 25.6-44.8 48-48zM598.4 614.4c6.4 6.4 16 12.8 25.6 12.8 3.2 0 6.4 0 9.6 0 9.6-3.2 19.2-12.8 22.4-22.4s0-19.2-6.4-28.8c-6.4-9.6-19.2-12.8-32-12.8-9.6 3.2-19.2 12.8-22.4 22.4-6.4 12.8-3.2 22.4 3.2 28.8zM956.8 569.6c-9.6 3.2-16-3.2-19.2-9.6-3.2-9.6 3.2-16 9.6-19.2 121.6-35.2 204.8-128 204.8-227.2 0-86.4-60.8-166.4-160-211.2-6.4-3.2-9.6-9.6-9.6-19.2l19.2-92.8-102.4 76.8c-3.2 3.2-6.4 3.2-12.8 3.2-22.4-3.2-41.6-3.2-60.8-3.2-118.4 0-230.4 60.8-275.2 144-3.2 6.4-12.8 9.6-22.4 6.4-6.4-3.2-9.6-12.8-6.4-22.4 51.2-96 176-163.2 304-163.2 19.2 0 38.4 0 60.8 3.2l131.2-99.2c3.2 0 6.4 0 9.6 0s6.4 0 9.6 3.2 9.6 9.6 6.4 16l-25.6 121.6c102.4 51.2 166.4 140.8 166.4 233.6 3.2 115.2-89.6 217.6-227.2 259.2z" />
83
+ <glyph unicode="&#xe949;" glyph-name="cheese" horiz-adv-x="1248" d="M1158.4 864l-96 64c-57.6 35.2-124.8 44.8-192 22.4l-752-246.4c0 0 0 0 0 0h-70.4c-25.6 0-48-22.4-48-48v-310.4c0-9.6 6.4-16 16-16 76.8 0 124.8-48 124.8-124.8s-48-124.8-124.8-124.8c-9.6 0-16-6.4-16-16v-64c0-64 41.6-64 64-64h1136c25.6 0 48 22.4 48 48v672c0 3.2 0 6.4 0 9.6 0 0 0 3.2 0 3.2 0 89.6-28.8 153.6-89.6 195.2zM880 918.4c57.6 16 118.4 9.6 166.4-19.2l96-64c41.6-28.8 67.2-73.6 73.6-134.4-6.4 3.2-9.6 3.2-16 3.2h-979.2l659.2 214.4zM1216-16c0-9.6-6.4-16-16-16h-1136c-22.4 0-32 0-32 32v48c86.4 6.4 140.8 67.2 140.8 156.8s-54.4 150.4-140.8 156.8v294.4c0 9.6 6.4 16 16 16h1152c9.6 0 16-6.4 16-16v-672zM512 358.4c-86.4 0-160-70.4-160-160s70.4-160 160-160c86.4 0 160 70.4 160 160s-73.6 160-160 160zM512 70.4c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128-57.6-128-128-128zM387.2 518.4c0 41.6-35.2 76.8-76.8 76.8s-76.8-35.2-76.8-76.8 35.2-76.8 76.8-76.8 76.8 32 76.8 76.8zM310.4 470.4c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8c0-22.4-19.2-44.8-44.8-44.8zM752 499.2c-32 0-60.8-25.6-60.8-60.8 0-32 25.6-60.8 60.8-60.8s60.8 25.6 60.8 60.8c-3.2 35.2-28.8 60.8-60.8 60.8zM752 412.8c-16 0-28.8 12.8-28.8 28.8s12.8 28.8 28.8 28.8 28.8-12.8 28.8-28.8c-3.2-16-16-28.8-28.8-28.8zM924.8 252.8c-41.6 0-76.8-35.2-76.8-76.8s35.2-76.8 76.8-76.8c41.6 0 76.8 35.2 76.8 76.8s-35.2 76.8-76.8 76.8zM924.8 128c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8c25.6 0 44.8-19.2 44.8-44.8s-19.2-44.8-44.8-44.8zM1043.2 576c-57.6 0-105.6-48-105.6-105.6s48-105.6 105.6-105.6 105.6 48 105.6 105.6-48 105.6-105.6 105.6zM1043.2 396.8c-38.4 0-73.6 32-73.6 73.6s32 73.6 73.6 73.6 73.6-32 73.6-73.6-32-73.6-73.6-73.6z" />
84
+ <glyph unicode="&#xe94a;" glyph-name="chef-cap" horiz-adv-x="1056" d="M176 387.2v-403.2c0-25.6 22.4-48 48-48h576c25.6 0 48 22.4 48 48v403.2c64 6.4 118.4 38.4 156.8 86.4 38.4 51.2 51.2 118.4 38.4 185.6-19.2 80-80 144-160 163.2-41.6 9.6-80 9.6-118.4-3.2-41.6 83.2-128 137.6-224 137.6-99.2 0-185.6-57.6-227.2-147.2-51.2 22.4-105.6 25.6-160 9.6-70.4-22.4-128-80-150.4-147.2-19.2-64-9.6-128 28.8-185.6 35.2-51.2 89.6-86.4 144-99.2zM816-16c0-9.6-6.4-16-16-16h-576c-9.6 0-16 6.4-16 16v144h608v-144zM35.2 662.4c19.2 57.6 67.2 105.6 128 124.8 19.2 6.4 41.6 9.6 60.8 9.6 32 0 60.8-6.4 89.6-22.4 3.2-3.2 9.6-3.2 12.8 0s6.4 6.4 9.6 9.6c32 86.4 112 140.8 204.8 140.8 86.4 0 166.4-51.2 201.6-131.2 3.2-6.4 12.8-12.8 19.2-9.6 35.2 16 73.6 16 112 6.4 67.2-16 121.6-70.4 137.6-137.6 12.8-57.6 3.2-115.2-32-160s-86.4-70.4-147.2-73.6c-9.6 0-16-6.4-16-16v-243.2h-128v160c0 9.6-6.4 16-16 16s-16-6.4-16-16v-160h-128v256c0 9.6-6.4 16-16 16s-16-6.4-16-16v-256h-128v160c0 9.6-6.4 16-16 16s-16-6.4-16-16v-160h-128v243.2c0 9.6-6.4 16-12.8 16-51.2 6.4-102.4 38.4-134.4 86.4s-41.6 102.4-25.6 156.8z" />
85
+ <glyph unicode="&#xe94b;" glyph-name="clip-board" horiz-adv-x="736" d="M352 512c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256zM608 352h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16zM608 192h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16zM262.4 524.8l-48-44.8-19.2 19.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l32-32c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l57.6 57.6c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM262.4 387.2l-44.8-44.8-19.2 19.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l32-32c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l57.6 57.6c6.4 6.4 6.4 16 0 22.4s-22.4 6.4-28.8 0zM262.4 217.6l-44.8-44.8-22.4 19.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l32-32c3.2-3.2 6.4-3.2 12.8-3.2s9.6 3.2 12.8 3.2l57.6 57.6c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM464 960h-192c-9.6 0-16-6.4-16-16v-48h-80c-25.6 0-48-22.4-48-48v-16h-80c-25.6 0-48-22.4-48-48v-800c0-25.6 22.4-48 48-48h640c25.6 0 48 22.4 48 48v800c0 25.6-22.4 48-48 48h-80v16c0 25.6-22.4 48-48 48h-80v48c0 9.6-6.4 16-16 16zM688 800c9.6 0 16-6.4 16-16v-800c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v800c0 9.6 6.4 16 16 16h80v-16c0-25.6 22.4-48 48-48h384c25.6 0 48 22.4 48 48v16h80zM560 864c9.6 0 16-6.4 16-16v-64c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v64c0 9.6 6.4 16 16 16h96c9.6 0 16 6.4 16 16v48h160v-48c0-9.6 6.4-16 16-16h96z" />
86
+ <glyph unicode="&#xe94c;" glyph-name="clip" horiz-adv-x="1056" d="M646.4 700.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-390.4-380.8c-25.6-25.6-38.4-57.6-38.4-92.8s12.8-70.4 38.4-92.8c51.2-51.2 137.6-51.2 192 0l444.8 435.2c41.6 41.6 64 96 64 153.6s-22.4 112-64 153.6c-86.4 83.2-227.2 83.2-313.6 0l-467.2-457.6c-57.6-57.6-89.6-131.2-89.6-211.2s32-153.6 89.6-208c57.6-57.6 134.4-86.4 211.2-86.4s153.6 28.8 214.4 86.4l534.4 521.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-534.4-521.6c-105.6-102.4-278.4-102.4-384 0-48 51.2-76.8 115.2-76.8 185.6s28.8 137.6 80 185.6l467.2 457.6c73.6 73.6 195.2 73.6 268.8 0 35.2-35.2 54.4-80 54.4-131.2s-19.2-96-54.4-131.2l-444.8-435.2c-41.6-38.4-105.6-38.4-147.2 0-19.2 19.2-28.8 44.8-28.8 70.4s9.6 54.4 28.8 73.6l390.4 380.8z" />
87
+ <glyph unicode="&#xe94d;" glyph-name="cloud-down" horiz-adv-x="1504" d="M1136 688c-3.2 0-9.6 0-12.8 0s-6.4 0-9.6 0c-44.8 160-195.2 272-361.6 272-208 0-384-169.6-384-380.8 0 0 0-3.2 0-3.2 0 3.2-38.4 6.4-57.6 6.4-169.6 0-310.4-147.2-310.4-323.2s140.8-323.2 310.4-323.2h313.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-313.6c-153.6 0-281.6 134.4-281.6 291.2s128 291.2 281.6 291.2c25.6 0 51.2-3.2 73.6-9.6 0 0 0 0 0 0 48-12.8 89.6-38.4 124.8-73.6 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4-35.2 35.2-80 60.8-128 76.8 0 3.2 0 9.6 0 12.8 0 192 156.8 348.8 348.8 348.8 150.4 0 284.8-99.2 329.6-243.2-166.4-22.4-332.8-153.6-332.8-406.4v-249.6l-80 76.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l105.6-105.6c3.2-3.2 6.4-9.6 9.6-9.6 0 0 0 0 0 0 3.2 0 9.6 6.4 12.8 9.6l96 105.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-67.2-73.6v246.4c0 246.4 172.8 368 332.8 377.6 3.2 0 3.2 0 6.4 0s9.6 0 12.8 0c185.6 0 336-153.6 336-342.4 3.2-185.6-150.4-345.6-332.8-345.6h-227.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h227.2c201.6 0 368 172.8 368 377.6 0 208-166.4 374.4-371.2 374.4z" />
88
+ <glyph unicode="&#xe94e;" glyph-name="cloud-up" horiz-adv-x="1568" d="M1187.2 681.6h-9.6c-6.4 0-9.6 0-16 0-48 163.2-201.6 278.4-377.6 278.4-217.6 0-393.6-176-393.6-393.6 0-3.2 0-3.2 0-6.4-44.8 9.6-92.8 9.6-137.6-3.2-131.2-28.8-224-124.8-246.4-246.4-16-96 6.4-188.8 67.2-259.2 60.8-73.6 153.6-115.2 252.8-115.2h179.2c150.4 0 307.2 102.4 307.2 272v105.6l73.6-76.8c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-99.2 105.6c0 0 0 0 0 0-3.2 3.2-6.4 6.4-12.8 6.4-3.2 0-3.2 0-6.4 0s-3.2-3.2-6.4-3.2v0l-102.4-105.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2l76.8 76.8v-105.6c0-150.4-140.8-240-275.2-240h-179.2c-89.6 0-172.8 38.4-230.4 105.6-54.4 64-73.6 147.2-60.8 233.6 19.2 108.8 105.6 195.2 220.8 220.8 48 9.6 96 9.6 144-3.2 6.4 0 9.6 0 12.8 3.2s6.4 9.6 6.4 12.8c0 9.6 0 16 0 25.6 0 195.2 163.2 358.4 361.6 358.4 163.2 0 307.2-108.8 348.8-268.8 16-64 12.8-134.4-6.4-192-3.2-9.6 3.2-16 9.6-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8 19.2 60.8 22.4 128 9.6 192 3.2 0 6.4 0 6.4 0h9.6c99.2 0 192-38.4 259.2-108.8 64-67.2 96-160 89.6-256-12.8-179.2-166.4-316.8-361.6-316.8h-259.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h259.2c211.2 0 380.8 150.4 393.6 345.6 6.4 105.6-28.8 204.8-99.2 278.4-64 73.6-166.4 118.4-275.2 118.4z" />
89
+ <glyph unicode="&#xe94f;" glyph-name="cloud" horiz-adv-x="1568" d="M1187.2 675.2l-19.2-3.2c0 0-3.2 0-3.2 0 0 3.2-3.2 3.2-3.2 3.2-51.2 156.8-201.6 278.4-374.4 278.4-217.6 0-393.6-172.8-393.6-390.4 0-3.2 0-3.2 0-6.4-44.8 9.6-92.8 9.6-137.6-3.2-131.2-28.8-224-124.8-246.4-246.4-16-96 6.4-188.8 67.2-259.2 60.8-73.6 153.6-115.2 252.8-115.2h844.8c211.2 0 380.8 147.2 393.6 345.6 6.4 105.6-28.8 201.6-99.2 278.4s-176 118.4-281.6 118.4zM1536 284.8c-12.8-179.2-166.4-316.8-361.6-316.8h-848c-89.6 0-172.8 38.4-230.4 105.6-54.4 64-73.6 147.2-60.8 233.6 19.2 108.8 105.6 195.2 220.8 220.8 22.4 6.4 44.8 6.4 67.2 6.4 25.6 0 51.2-3.2 76.8-9.6 6.4 0 9.6 0 12.8 3.2s6.4 9.6 6.4 12.8c0 9.6 0 16 0 25.6 3.2 198.4 166.4 361.6 364.8 361.6 163.2 0 307.2-108.8 348.8-268.8 16-64 12.8-134.4-6.4-192-3.2-9.6 3.2-16 9.6-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8 19.2 60.8 22.4 128 9.6 192h16c99.2 0 192-38.4 259.2-108.8 70.4-73.6 102.4-163.2 96-259.2z" />
90
+ <glyph unicode="&#xe950;" glyph-name="code-browser" horiz-adv-x="1152" d="M454.4 444.8c-6.4 6.4-16 6.4-22.4 0l-112-112c-3.2-3.2-3.2-6.4-3.2-12.8s3.2-9.6 3.2-12.8l112-112c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-105.6 102.4 102.4 102.4c6.4 6.4 6.4 16 0 22.4zM636.8 198.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l112 112c6.4 6.4 6.4 16 0 22.4l-112 112c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l96-102.4-102.4-102.4c-3.2-3.2-3.2-12.8 3.2-19.2zM556.8 438.4l-54.4-224c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8l54.4 224c3.2 9.6-3.2 16-12.8 19.2-9.6 0-19.2-6.4-19.2-12.8zM0-16c0-25.6 22.4-48 48-48h1056c25.6 0 48 22.4 48 48v576c0 9.6-6.4 16-16 16s-16-6.4-16-16v-576c0-9.6-6.4-16-16-16h-1056c-9.6 0-16 6.4-16 16v576c0 9.6-6.4 16-16 16s-16-6.4-16-16v-576zM1104 960h-1056c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h1056c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48zM1120 656c0-9.6-6.4-16-16-16h-1056c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h1056c9.6 0 16-6.4 16-16v-256zM160 784c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM256 784c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM352 784c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
91
+ <glyph unicode="&#xe951;" glyph-name="code-clean" horiz-adv-x="1056" d="M748.8 438.4c-25.6-28.8-22.4-76.8 6.4-102.4l99.2-99.2c3.2-3.2 3.2-3.2 3.2-6.4s0-3.2-3.2-6.4l-99.2-96c-28.8-28.8-32-76.8-6.4-105.6 16-16 35.2-25.6 57.6-25.6 19.2 0 38.4 6.4 54.4 22.4l169.6 169.6c12.8 12.8 19.2 28.8 19.2 44.8s-6.4 32-19.2 44.8l-169.6 169.6c-32 25.6-86.4 25.6-112-9.6zM1014.4 230.4c0-9.6-3.2-16-9.6-22.4l-169.6-169.6c-16-16-48-16-64 3.2-16 16-12.8 44.8 6.4 60.8l99.2 99.2c6.4 6.4 12.8 16 12.8 28.8 0 9.6-3.2 19.2-12.8 28.8l-99.2 99.2c-16 16-19.2 44.8-6.4 60.8 9.6 9.6 19.2 16 35.2 16 12.8 0 22.4-3.2 32-12.8l169.6-169.6c3.2-6.4 6.4-12.8 6.4-22.4zM32 195.2c3.2-16 12.8-32 25.6-41.6l192-140.8c12.8-9.6 28.8-16 44.8-16 28.8 0 54.4 16 67.2 38.4 19.2 32 6.4 76.8-25.6 99.2l-112 83.2c-3.2 3.2-3.2 6.4-3.2 9.6l86.4 115.2c12.8 16 16 38.4 12.8 60.8s-16 38.4-35.2 51.2c-32 19.2-76.8 9.6-102.4-22.4l-140.8-188.8c-6.4-12.8-12.8-32-9.6-48zM70.4 224l140.8 188.8c9.6 12.8 22.4 19.2 38.4 19.2 6.4 0 16-3.2 19.2-6.4 9.6-6.4 19.2-16 19.2-28.8 3.2-12.8 0-25.6-6.4-35.2l-86.4-115.2c-12.8-19.2-9.6-41.6 9.6-54.4l112-83.2c19.2-12.8 25.6-38.4 16-57.6-12.8-22.4-44.8-28.8-64-16l-192 140.8c-6.4 9.6-12.8 16-12.8 25.6s0 16 6.4 22.4zM460.8-60.8c6.4-3.2 16-3.2 22.4-3.2 32 0 64 22.4 73.6 54.4l137.6 438.4c12.8 38.4-9.6 83.2-51.2 96-38.4 12.8-83.2-9.6-96-51.2l-137.6-438.4c-6.4-19.2-3.2-38.4 6.4-57.6s25.6-32 44.8-38.4zM441.6 25.6l134.4 438.4c6.4 19.2 22.4 32 41.6 32 3.2 0 9.6 0 12.8-3.2 22.4-6.4 35.2-32 28.8-54.4l-134.4-438.4c-6.4-22.4-32-35.2-54.4-28.8-9.6 3.2-19.2 9.6-25.6 22.4-6.4 9.6-6.4 19.2-3.2 32zM272 755.2c-9.6 0-16-6.4-16-16v-67.2h-38.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h38.4v-38.4c0-9.6 6.4-16 16-16s16 9.6 16 16v38.4h67.2c9.6 0 16 6.4 16 16s-9.6 16-16 16h-67.2v67.2c0 9.6-6.4 16-16 16zM176 960c-9.6 0-16-6.4-16-16v-48h-25.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h25.6v-22.4c0-9.6 6.4-16 16-16s16 6.4 16 16v22.4h44.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-44.8v48c0 9.6-6.4 16-16 16zM25.6 736h6.4v-28.8c0-9.6 6.4-16 16-16s16 6.4 16 16v28.8h28.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-28.8v6.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-6.4h-6.4c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
92
+ <glyph unicode="&#xe952;" glyph-name="code" d="M48-64h928c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM32 912c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v928zM646.4 307.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l128 128c6.4 6.4 6.4 16 0 22.4l-128 128c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l118.4-118.4-118.4-118.4c-9.6-3.2-9.6-12.8-3.2-19.2zM348.8 307.2c3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 6.4 6.4 3.2 16-3.2 22.4l-134.4 99.2 99.2 134.4c6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2l-108.8-147.2c-6.4-6.4-3.2-16 3.2-22.4l147.2-108.8zM448 256c0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8l108.8 352c3.2 9.6-3.2 16-9.6 19.2-9.6 3.2-16-3.2-19.2-9.6l-108.8-352c-3.2-9.6 3.2-19.2 9.6-22.4z" />
93
+ <glyph unicode="&#xe953;" glyph-name="cog" horiz-adv-x="1696" d="M534.4 233.6c112 0 204.8 92.8 204.8 204.8s-92.8 204.8-204.8 204.8-204.8-92.8-204.8-204.8 92.8-204.8 204.8-204.8zM534.4 611.2c96 0 172.8-76.8 172.8-172.8s-76.8-172.8-172.8-172.8-172.8 76.8-172.8 172.8 76.8 172.8 172.8 172.8zM211.2 243.2l-38.4-35.2c-16-16-25.6-38.4-25.6-64s9.6-48 25.6-64c32-32 92.8-35.2 131.2 0l32 35.2c25.6-16 54.4-28.8 83.2-38.4v-51.2c0-48 44.8-89.6 96-89.6s96 41.6 96 89.6v41.6c54.4 9.6 89.6 25.6 121.6 48l38.4-38.4c35.2-35.2 96-35.2 128 0 35.2 35.2 35.2 92.8 0 128l-38.4 35.2c12.8 25.6 25.6 51.2 35.2 76.8h44.8c48 0 89.6 44.8 89.6 96s-41.6 96-89.6 96h-35.2c-9.6 54.4-25.6 89.6-48 121.6l38.4 38.4c35.2 35.2 35.2 92.8 0 128s-96 35.2-128 0l-41.6-41.6c-32 19.2-64 38.4-118.4 44.8v70.4c0 48-44.8 89.6-96 89.6s-96-41.6-96-89.6v-70.4c-28.8-9.6-54.4-22.4-80-38.4l-38.4 41.6c-35.2 35.2-92.8 35.2-128 0-16-19.2-25.6-41.6-22.4-67.2 0-25.6 9.6-48 28.8-64l38.4-38.4c-25.6-38.4-38.4-73.6-48-121.6h-64c-48 0-89.6-44.8-89.6-96s41.6-96 89.6-96h76.8c6.4-28.8 19.2-54.4 32-76.8zM41.6 416c0 35.2 28.8 64 57.6 64h80c9.6 0 16 6.4 16 12.8 6.4 57.6 22.4 89.6 51.2 134.4 3.2 6.4 3.2 16-3.2 19.2l-48 48c-9.6 12.8-16 28.8-16 44.8s6.4 32 16 41.6c22.4 19.2 60.8 19.2 80 0l44.8-51.2c6.4-6.4 12.8-6.4 19.2-3.2 28.8 19.2 60.8 35.2 96 44.8 9.6 3.2 12.8 9.6 12.8 16v83.2c0 32 28.8 57.6 64 57.6s64-28.8 64-57.6v-73.6c0-9.6 6.4-16 12.8-16 60.8-6.4 92.8-25.6 131.2-51.2 6.4-3.2 16-3.2 19.2 3.2l51.2 48c22.4 22.4 60.8 22.4 83.2 0s22.4-60.8 0-83.2l-48-48c-6.4-6.4-6.4-12.8-3.2-19.2 25.6-38.4 44.8-70.4 51.2-134.4 0-6.4 6.4-12.8 16-12.8h48c32 0 57.6-28.8 57.6-64s-28.8-64-57.6-64h-57.6c-6.4 0-12.8-3.2-16-12.8-9.6-32-25.6-64-41.6-92.8-3.2-6.4-3.2-16 3.2-19.2l48-44.8c22.4-22.4 22.4-60.8 0-83.2s-60.8-22.4-83.2 0l-48 48c-6.4 6.4-12.8 6.4-19.2 3.2-35.2-22.4-70.4-41.6-134.4-51.2-6.4 0-12.8-6.4-12.8-16v-54.4c0-32-28.8-57.6-64-57.6s-64 28.8-64 57.6v60.8c0 6.4-3.2 12.8-12.8 16-35.2 9.6-67.2 25.6-96 44.8-3.2 3.2-6.4 3.2-9.6 3.2s-9.6-3.2-12.8-6.4l-38.4-44.8c-22.4-22.4-60.8-22.4-83.2 0-9.6 9.6-16 25.6-16 41.6s6.4 28.8 16 41.6l48 44.8c6.4 6.4 6.4 12.8 3.2 19.2-19.2 28.8-32 60.8-41.6 92.8-3.2 3.2-9.6 6.4-16 6.4h-89.6c-32 0-57.6 28.8-57.6 64zM1622.4 640h-32c-6.4 28.8-16 64-32 92.8l22.4 25.6c9.6 12.8 19.2 28.8 19.2 48s-6.4 35.2-19.2 48c-25.6 25.6-70.4 25.6-92.8 3.2l-25.6-22.4c-22.4 12.8-54.4 25.6-83.2 32v35.2c0 35.2-28.8 64-64 64s-64-28.8-64-64v-38.4c-25.6-6.4-51.2-19.2-73.6-32l-25.6 25.6c-25.6 25.6-67.2 25.6-89.6 0-25.6-25.6-25.6-73.6 0-99.2l22.4-28.8c-16-28.8-25.6-64-32-92.8h-32c-35.2 0-64-28.8-64-64s28.8-64 64-64h35.2c6.4-22.4 16-44.8 32-67.2l-25.6-25.6c-25.6-25.6-25.6-60.8 0-86.4 12.8-12.8 25.6-16 44.8-16 16 0 28.8 6.4 44.8 19.2l22.4 25.6c22.4-12.8 48-25.6 76.8-32v-35.2c0-35.2 28.8-64 64-64s64 28.8 64 64v32c32 6.4 60.8 19.2 83.2 32l22.4-22.4c22.4-22.4 70.4-25.6 92.8 0 25.6 25.6 25.6 60.8 0 86.4l-25.6 22.4c16 22.4 25.6 44.8 32 67.2h38.4c35.2 0 64 28.8 64 64s-28.8 67.2-64 67.2zM1622.4 544h-51.2c-6.4 0-12.8-6.4-16-12.8-6.4-28.8-19.2-51.2-38.4-80-6.4-6.4-3.2-16 3.2-22.4l35.2-28.8c16-16 9.6-28.8 0-38.4-12.8-12.8-38.4-12.8-48 0l-32 32c-6.4 6.4-12.8 6.4-19.2 3.2-28.8-19.2-70.4-32-96-38.4-6.4 0-12.8-9.6-12.8-16v-44.8c0-19.2-12.8-32-32-32s-32 16-32 32v48c0 6.4-6.4 12.8-12.8 16-32 6.4-64 19.2-89.6 38.4-3.2 3.2-6.4 3.2-9.6 3.2s-9.6-3.2-12.8-6.4l-32-35.2c-9.6-9.6-16-9.6-22.4-9.6-9.6 0-19.2 3.2-22.4 6.4-12.8 12.8-12.8 28.8 0 41.6l38.4 32c6.4 6.4 6.4 16 3.2 22.4-19.2 28.8-32 51.2-38.4 80-3.2 6.4-9.6 12.8-16 12.8h-51.2c-19.2 0-32 12.8-32 32s16 32 32 32h44.8c6.4 0 16 6.4 16 12.8 6.4 32 19.2 76.8 35.2 105.6 3.2 6.4 3.2 12.8 0 19.2l-32 38.4c-12.8 12.8-12.8 41.6 0 54.4s32 12.8 44.8 0l35.2-35.2c6.4-6.4 12.8-6.4 19.2-3.2 25.6 16 57.6 32 86.4 38.4 6.4-3.2 12.8 3.2 12.8 12.8v48c0 19.2 12.8 32 32 32s32-16 32-32v-48c0-6.4 6.4-12.8 12.8-16 28.8-6.4 67.2-19.2 96-38.4 6.4-3.2 12.8-3.2 19.2 0l35.2 32c12.8 12.8 35.2 9.6 48-3.2 6.4-3.2 12.8-12.8 12.8-22.4s-3.2-19.2-9.6-25.6l-32-35.2c-3.2-6.4-6.4-12.8 0-19.2 19.2-28.8 32-73.6 38.4-105.6 0-6.4 6.4-12.8 16-12.8h44.8c19.2 0 32-12.8 32-32s-16-32-35.2-32zM1318.4 752c-83.2 0-153.6-67.2-153.6-153.6s67.2-153.6 153.6-153.6c83.2 0 153.6 67.2 153.6 153.6s-67.2 153.6-153.6 153.6zM1318.4 476.8c-67.2 0-121.6 54.4-121.6 121.6s54.4 121.6 121.6 121.6 121.6-54.4 121.6-121.6-54.4-121.6-121.6-121.6z" />
94
+ <glyph unicode="&#xe954;" glyph-name="color-card" d="M995.2 371.2c-3.2 9.6-6.4 19.2-12.8 28.8 0 0 0 0 0 0l-83.2 185.6c-6.4 9.6-12.8 16-19.2 25.6 0 0 0 0 0 0l-134.4 150.4c0 0 0 0 0 0s0 0 0 0l-176 121.6c-16 6.4-32 12.8-48 12.8l-179.2 57.6c-12.8 6.4-25.6 6.4-41.6 3.2 0 3.2-3.2 3.2-6.4 3.2h-182.4c-60.8 0-112-51.2-112-112v-832c0-44.8 35.2-80 80-80h864c44.8 0 80 35.2 80 80v160c0 9.6-3.2 19.2-6.4 28.8l-22.4 166.4zM963.2 364.8l16-118.4c-9.6 6.4-22.4 9.6-35.2 9.6h-710.4l630.4 163.2c44.8 12.8 86.4-12.8 99.2-54.4zM870.4 569.6l54.4-124.8c-22.4 9.6-44.8 9.6-67.2 3.2l-640-166.4 544 313.6c38.4 25.6 89.6 12.8 108.8-25.6zM707.2 745.6l16-9.6 86.4-96c-22.4 0-41.6-3.2-60.8-16l-544-313.6 412.8 416c22.4 28.8 60.8 35.2 89.6 19.2zM550.4 854.4l102.4-70.4c-22.4-3.2-44.8-12.8-60.8-32l-467.2-473.6 313.6 544c9.6 19.2 28.8 32 48 38.4 25.6 6.4 44.8 3.2 64-6.4zM272 915.2c19.2 12.8 41.6 12.8 60.8 9.6l124.8-41.6c-19.2-9.6-35.2-25.6-44.8-41.6l-339.2-585.6c0 0-3.2 0-3.2 0l166.4 611.2c3.2 22.4 19.2 38.4 35.2 48zM32 848c0 44.8 35.2 80 80 80h124.8c-16-12.8-25.6-32-32-51.2l-169.6-633.6c0 0 0 0 0-3.2 0 0-3.2-3.2-3.2-3.2v611.2zM992 16c0-25.6-22.4-48-48-48h-864c-25.6 0-48 22.4-48 48v160c0 25.6 22.4 48 48 48h864c25.6 0 48-22.4 48-48v-160zM160 163.2c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM160 67.2c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32z" />
95
+ <glyph unicode="&#xe955;" glyph-name="color-plate" horiz-adv-x="1088" d="M345.6 777.6c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 35.2 80 80-35.2 80-80 80zM345.6 649.6c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-19.2-48-48-48zM688 665.6c0 44.8-35.2 80-80 80s-80-35.2-80-80 35.2-80 80-80 80 35.2 80 80zM560 665.6c0 25.6 22.4 48 48 48s48-22.4 48-48-22.4-48-48-48-48 19.2-48 48zM732.8 524.8c-44.8 0-80-35.2-80-80s35.2-80 80-80 80 35.2 80 80-38.4 80-80 80zM732.8 396.8c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48zM652.8 288c-54.4 0-96-41.6-96-96s41.6-96 96-96 96 41.6 96 96-44.8 96-96 96zM652.8 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM544 960c-300.8 0-544-246.4-544-550.4 0-150.4 57.6-291.2 160-390.4 28.8-28.8 60.8-44.8 89.6-44.8 25.6 0 44.8 12.8 57.6 35.2 19.2 35.2 9.6 86.4-22.4 128-16 22.4-19.2 44.8-9.6 64 6.4 12.8 19.2 19.2 35.2 19.2 19.2 0 70.4-9.6 144-105.6 115.2-147.2 224-179.2 294.4-179.2 60.8 0 115.2 22.4 160 64 115.2 105.6 179.2 252.8 179.2 409.6 0 304-243.2 550.4-544 550.4zM886.4 22.4c-38.4-35.2-86.4-54.4-140.8-54.4-64 0-163.2 28.8-272 166.4-60.8 76.8-121.6 118.4-169.6 118.4-28.8 0-51.2-12.8-64-38.4-16-28.8-9.6-67.2 12.8-96 28.8-38.4 32-76.8 19.2-96-3.2-9.6-12.8-19.2-28.8-19.2-19.2 0-41.6 12.8-67.2 35.2-89.6 96-144 230.4-144 371.2 0 284.8 230.4 518.4 512 518.4s512-233.6 512-518.4c0-147.2-60.8-288-169.6-387.2z" />
96
+ <glyph unicode="&#xe956;" glyph-name="compass-math" horiz-adv-x="800" d="M406.4 659.2c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-22.4-48-48 19.2-48 48-48zM406.4 723.2c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 6.4-16 16 6.4 16 16 16zM9.6-60.8c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l140.8 316.8c67.2-41.6 144-64 224-64 86.4 0 166.4 25.6 236.8 73.6l134.4-326.4c3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0 9.6 3.2 12.8 12.8 9.6 22.4l-140.8 332.8c12.8 9.6 25.6 19.2 35.2 32 25.6 25.6 25.6 67.2 0 92.8s-64 25.6-89.6 3.2l-83.2 198.4c19.2 25.6 35.2 54.4 35.2 89.6 0 57.6-41.6 105.6-73.6 128v54.4c0 35.2-28.8 64-64 64s-64-28.8-64-64v-57.6c-64-22.4-86.4-73.6-86.4-128 0-32 9.6-64 28.8-89.6l-96-211.2c-3.2 3.2-9.6 6.4-12.8 9.6-25.6 25.6-70.4 25.6-96 0s-25.6-67.2 0-92.8c16-16 32-28.8 48-41.6l-140.8-320c-3.2-9.6 3.2-19.2 9.6-22.4zM384 892.8c0 19.2 12.8 32 32 32s32-12.8 32-32v-44.8c-32 3.2-22.4 3.2-32 3.2s-32 0-32-3.2v44.8zM406.4 819.2c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 48 112 112 112zM316.8 595.2c25.6-19.2 54.4-32 89.6-32 32 0 64 12.8 89.6 32l83.2-198.4c-51.2-41.6-115.2-64-182.4-64-60.8 0-121.6 19.2-169.6 54.4l89.6 208zM115.2 393.6c6.4 6.4 16 9.6 25.6 9.6s19.2-3.2 25.6-9.6c60.8-60.8 140.8-96 227.2-96 80 0 153.6 28.8 214.4 80 0 0 0 0 0 0 3.2 3.2 9.6 9.6 12.8 12.8 12.8 12.8 35.2 12.8 48 0s12.8-35.2 0-48c-73.6-73.6-172.8-115.2-278.4-115.2-80 0-153.6 22.4-217.6 67.2 0 3.2-3.2 3.2-6.4 6.4 0 0 0 0 0 0-19.2 12.8-35.2 28.8-51.2 44.8-12.8 12.8-12.8 35.2 0 48z" />
97
+ <glyph unicode="&#xe957;" glyph-name="compass" horiz-adv-x="864" d="M499.2 793.6c19.2 16 28.8 41.6 28.8 70.4 0 54.4-41.6 96-96 96s-96-41.6-96-96c0-28.8 12.8-51.2 28.8-70.4-204.8-32-364.8-211.2-364.8-425.6 0-236.8 195.2-432 432-432s432 195.2 432 432c0 214.4-160 393.6-364.8 425.6zM368 864c0 35.2 28.8 64 64 64s64-28.8 64-64c0-35.2-28.8-64-64-64 0 0 0 0 0 0s0 0 0 0c-35.2 0-64 28.8-64 64zM448-32v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c-208 9.6-374.4 176-384 384h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64c9.6 208 176 374.4 384 384v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64c208-9.6 374.4-176 384-384h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c-9.6-208-176-374.4-384-384zM649.6 608l-281.6-134.4c-3.2 0-6.4-3.2-6.4-6.4l-137.6-284.8c0-6.4 0-12.8 3.2-19.2 3.2 0 9.6-3.2 12.8-3.2s3.2 0 6.4 0l281.6 134.4c3.2 0 6.4 3.2 6.4 6.4l134.4 281.6c3.2 6.4 3.2 12.8-3.2 19.2-3.2 6.4-9.6 6.4-16 6.4zM512 320l-236.8-112 108.8 240 236.8 112-108.8-240zM403.2 339.2c12.8-12.8 28.8-19.2 44.8-19.2s32 6.4 44.8 19.2 19.2 28.8 19.2 44.8c0 16-6.4 32-19.2 44.8-25.6 25.6-67.2 25.6-89.6 0-12.8-12.8-19.2-28.8-19.2-44.8s6.4-32 19.2-44.8zM425.6 406.4c6.4 6.4 12.8 9.6 22.4 9.6s16-3.2 22.4-9.6c6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4c-12.8-12.8-32-12.8-44.8 0-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4z" />
98
+ <glyph unicode="&#xe958;" glyph-name="corner" d="M1024 300.8c-60.8 0-121.6 22.4-166.4 60.8l-268.8 220.8c-44.8 35.2-108.8 35.2-153.6 0l-262.4-220.8c-48-38.4-105.6-60.8-169.6-60.8v-38.4h1024l-3.2 38.4z" />
99
+ <glyph unicode="&#xe959;" glyph-name="crop" d="M1008 64h-848c-9.6 0-16 6.4-16 16v848c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96v-720c0-25.6 22.4-48 48-48h720v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96h96c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 144c9.6 0 16 6.4 16 16v624c0 25.6-22.4 48-48 48h-624c-9.6 0-16-6.4-16-16s6.4-16 16-16h624c9.6 0 16-6.4 16-16v-624c0-9.6 6.4-16 16-16z" />
100
+ <glyph unicode="&#xe95a;" glyph-name="cross-circle" d="M512 960c-137.6 0-265.6-54.4-361.6-150.4s-150.4-224-150.4-361.6 54.4-265.6 150.4-361.6c96-96 224-150.4 361.6-150.4s265.6 54.4 361.6 150.4c96 96 150.4 224 150.4 361.6s-54.4 265.6-150.4 361.6c-96 96-224 150.4-361.6 150.4zM851.2 108.8c-89.6-89.6-211.2-140.8-339.2-140.8s-249.6 51.2-339.2 140.8-140.8 211.2-140.8 339.2 51.2 249.6 140.8 339.2 211.2 140.8 339.2 140.8 249.6-51.2 339.2-140.8 140.8-211.2 140.8-339.2-51.2-249.6-140.8-339.2zM704 640c-6.4 6.4-16 6.4-22.4 0l-169.6-169.6-169.6 169.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l169.6-169.6-169.6-169.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l169.6 169.6 169.6-169.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-176 169.6 169.6 169.6c6.4 6.4 6.4 16 0 22.4z" />
101
+ <glyph unicode="&#xe95b;" glyph-name="cross-game" d="M406.4 707.2c3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2 99.2-99.2c3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-102.4 102.4 99.2 99.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-99.2-99.2-99.2 99.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2-99.2-99.2c-9.6-6.4-9.6-19.2-3.2-25.6zM3.2 310.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 102.4 99.2-99.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-99.2 99.2 99.2 99.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-102.4-99.2-99.2 99.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2-99.2-99.2c-6.4-9.6-6.4-19.2-3.2-25.6zM771.2 310.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2 99.2-99.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-99.2 99.2 99.2 99.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-102.4-96-99.2 99.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2-99.2-99.2c-6.4-9.6-6.4-19.2-3.2-25.6zM128 704c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM128 928c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM896 704c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM896 928c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM406.4-60.8c3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2 99.2-99.2c3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-102.4 102.4 99.2 99.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-99.2-99.2-99.2 99.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2-99.2-99.2c-9.6-6.4-9.6-19.2-3.2-25.6zM896-64c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM896 160c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM128-64c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM128 160c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM531.2 307.2c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM531.2 531.2c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96z" />
102
+ <glyph unicode="&#xe95c;" glyph-name="cross-gap" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM566.4 416c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l134.4-134.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-137.6 134.4zM345.6 636.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l134.4-134.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-137.6 134.4zM457.6 416l-134.4-134.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l134.4 134.4c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM678.4 636.8l-134.4-134.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l134.4 134.4c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0z" />
103
+ <glyph unicode="&#xe95d;" glyph-name="cross" d="M534.4 448l470.4 467.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-470.4-467.2-467.2 470.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l467.2-470.4-470.4-467.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l467.2 467.2 467.2-467.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-470.4 467.2z" />
104
+ <glyph unicode="&#xe95e;" glyph-name="crown" horiz-adv-x="1184" d="M1091.2 640c54.4 0 96 41.6 96 96s-41.6 96-96 96-96-41.6-96-96c0-25.6 9.6-48 25.6-67.2-51.2-19.2-153.6-64-240-160l-172.8 262.4c38.4 12.8 70.4 48 70.4 92.8 0 54.4-41.6 96-96 96s-96-41.6-96-96c0-44.8 28.8-80 70.4-92.8l-150.4-256c-86.4 92.8-188.8 137.6-236.8 156.8 12.8 12.8 22.4 38.4 22.4 64 0 54.4-41.6 96-96 96s-96-44.8-96-96 41.6-96 96-96c9.6 0 16 0 22.4 3.2l89.6-515.2h-112c-54.4 0-96-41.6-96-96s41.6-96 96-96h992c54.4 0 96 41.6 96 96s-41.6 96-96 96h-112l89.6 515.2c9.6-3.2 16-3.2 25.6-3.2zM1091.2 800c35.2 0 64-28.8 64-64s-28.8-64-64-64-64 28.8-64 64 28.8 64 64 64zM515.2 864c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64zM32 736c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64zM1152 32c0-35.2-28.8-64-64-64h-992c-35.2 0-64 28.8-64 64s28.8 64 64 64h992c35.2 0 64-28.8 64-64zM944 128h-704l-89.6 512c67.2-25.6 256-108.8 329.6-316.8 3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2-22.4 60.8-54.4 112-89.6 153.6l153.6 265.6 179.2-268.8c0 0 0 0 0 0-32-41.6-64-89.6-86.4-150.4-3.2-9.6 0-16 9.6-19.2s16 0 19.2 9.6c76.8 208 262.4 291.2 329.6 316.8l-80-512z" />
105
+ <glyph unicode="&#xe95f;" glyph-name="cube" horiz-adv-x="864" d="M0 185.6c0-6.4 3.2-9.6 9.6-12.8l416-233.6c3.2 0 6.4-3.2 6.4-3.2s6.4 0 6.4 3.2l416 233.6c6.4 3.2 9.6 9.6 9.6 12.8v524.8c0 0 0 0 0 0 0 3.2 0 3.2 0 6.4 0 0 0 0 0 3.2s-3.2 9.6-6.4 9.6c0 0 0 6.4 0 6.4s0 0 0 0l-400 227.2c-6.4 3.2-9.6 0-16-3.2l-432-230.4c-6.4-3.2-9.6-12.8-9.6-19.2 0 0 0 0 0 0v-524.8zM832 195.2l-400-224-400 224v489.6l384-214.4v-406.4c0-9.6 6.4-16 16-16s16 6.4 16 16v403.2l384 214.4v-486.4zM448 924.8l368-214.4-384-214.4c0 0 0 0 0 0s0 0 0 0l-384 214.4 400 214.4z" />
106
+ <glyph unicode="&#xe960;" glyph-name="cup-coffee" horiz-adv-x="1056" d="M304 720c9.6 0 16 6.4 16 16v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-9.6 6.4-16 16-16zM432 720c9.6 0 16 6.4 16 16v192c0 9.6-6.4 16-16 16s-16-6.4-16-16v-192c0-9.6 6.4-16 16-16zM560 720c9.6 0 16 6.4 16 16v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-9.6 6.4-16 16-16zM32-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h832c9.6 0 16 6.4 16 16s-6.4 16-16 16h-832zM403.2 64h-115.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-86.4c105.6 9.6 195.2 48 265.6 108.8 32-32 73.6-51.2 121.6-51.2 92.8 0 166.4 73.6 166.4 166.4 0 86.4-67.2 156.8-150.4 166.4 0 12.8 3.2 25.6 3.2 38.4v134.4c0 3.2-3.2 9.6-3.2 12.8-3.2 3.2-6.4 3.2-12.8 3.2h-864c-9.6-3.2-16-9.6-16-19.2v-128c0-233.6 169.6-412.8 403.2-432zM886.4 419.2c67.2-6.4 121.6-64 121.6-134.4 0-73.6-60.8-134.4-134.4-134.4-38.4 0-70.4 16-96 44.8 57.6 60.8 96 137.6 108.8 224zM32 608h828.8v-118.4c0-230.4-172.8-396.8-412.8-396.8-236.8 0-416 172.8-416 403.2v112z" />
107
+ <glyph unicode="&#xe961;" glyph-name="cup" horiz-adv-x="1152" d="M784-64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-416c-9.6 0-16-6.4-16-16s6.4-16 16-16h416zM54.4 544c3.2 0 3.2 0 6.4 0 9.6 3.2 12.8 12.8 9.6 19.2l-32 83.2c-12.8 35.2-6.4 73.6 12.8 105.6 22.4 28.8 54.4 48 92.8 48h32v-240c0-214.4 169.6-390.4 384-400 0 0 0 0 0 0v-96h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96v96c0 0 0 0 0 0 214.4 9.6 384 182.4 384 400v240h32c38.4 0 73.6-19.2 92.8-51.2s25.6-70.4 9.6-105.6l-35.2-76.8c-3.2-6.4 0-16 6.4-22.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l35.2 76.8c19.2 44.8 16 96-12.8 137.6s-70.4 64-121.6 64h-32v80c3.2 25.6-19.2 48-44.8 48h-704c-25.6 0-48-22.4-48-48v-80h-32c-48 0-92.8-22.4-118.4-64s-32-89.6-16-134.4l28.8-80c3.2-6.4 9.6-9.6 16-9.6zM208 912c0 9.6 6.4 16 16 16h704c9.6 0 16-6.4 16-16v-352c0-201.6-166.4-368-368-368s-368 166.4-368 368v352z" />
108
+ <glyph unicode="&#xe962;" glyph-name="currency-paper" d="M768 707.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-99.2h-448v99.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-131.2h512v131.2zM960 608h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c19.2 0 32-12.8 32-32v-544c0-16-12.8-32-32-32h-896c-19.2 0-32 12.8-32 32v544c0 16 12.8 32 32 32h99.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-99.2c-35.2 0-64-28.8-64-64v-544c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v544c0 35.2-28.8 64-64 64zM592 652.8c9.6 0 16 6.4 16 16v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-6.4 6.4-16 16-16zM592 844.8c9.6 0 16 6.4 16 16v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-6.4 6.4-16 16-16zM432 748.8c9.6 0 16 6.4 16 16v160c0 9.6-6.4 16-16 16s-16-6.4-16-16v-160c0-6.4 6.4-16 16-16zM96 368v-201.6c0-9.6 6.4-16 16-16 51.2 0 83.2-28.8 83.2-70.4 0-9.6 9.6-16 19.2-16 3.2 0 3.2 0 6.4 0 22.4 0 265.6 0 428.8 0 166.4 0 166.4 0 166.4 16 0 41.6 41.6 70.4 64 70.4 9.6 0 16 6.4 16 16v204.8c0 9.6-6.4 16-16 16-22.4 3.2-60.8 19.2-60.8 76.8 0 9.6-6.4 16-16 16h-585.6c-9.6 0-16-6.4-16-16 0-51.2-32-76.8-89.6-76.8-9.6-3.2-16-9.6-16-19.2zM128 352c60.8 3.2 99.2 38.4 105.6 92.8h556.8c6.4-51.2 38.4-80 73.6-89.6v-176c-32-9.6-70.4-41.6-80-83.2-16 0-54.4 0-137.6 0-150.4 0-368 0-419.2 0 0 0-3.2 0-3.2 0-6.4 48-44.8 83.2-99.2 86.4v169.6z" />
109
+ <glyph unicode="&#xe963;" glyph-name="dashboard" d="M1024 448c0 281.6-230.4 512-512 512s-512-230.4-512-512 230.4-512 512-512 512 230.4 512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM748.8 707.2l-188.8-188.8c-12.8 9.6-32 16-48 16-48 0-86.4-38.4-86.4-86.4s38.4-86.4 86.4-86.4 86.4 38.4 86.4 86.4c0 19.2-6.4 35.2-16 48l188.8 188.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0zM512 393.6c-28.8 0-54.4 25.6-54.4 54.4s25.6 54.4 54.4 54.4 54.4-25.6 54.4-54.4-25.6-54.4-54.4-54.4zM208 464c0 9.6-6.4 16-16 16h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16zM224 585.6l-64 25.6c-9.6 3.2-16 0-22.4-9.6-3.2-9.6 0-16 9.6-22.4l64-25.6c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6-3.2 19.2-9.6 22.4zM246.4 736c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l51.2-51.2c3.2-3.2 6.4-6.4 12.8-6.4s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-54.4 54.4zM374.4 736c3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0 9.6 3.2 12.8 12.8 9.6 22.4l-25.6 64c-3.2 9.6-12.8 12.8-22.4 9.6s-12.8-12.8-9.6-22.4l25.6-64zM496 752c9.6 0 16 6.4 16 16v70.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-70.4c0-9.6 6.4-16 16-16zM627.2 726.4c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l25.6 64c3.2 9.6 0 16-9.6 22.4-9.6 3.2-16 0-22.4-9.6l-25.6-64c-3.2-9.6 3.2-19.2 9.6-22.4zM806.4 553.6c3.2 0 3.2 0 6.4 0l64 25.6c9.6 3.2 12.8 12.8 9.6 22.4s-12.8 12.8-22.4 9.6l-64-25.6c-9.6-3.2-12.8-12.8-9.6-22.4 3.2-6.4 9.6-9.6 16-9.6zM902.4 448h-70.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h70.4c9.6 0 16 6.4 16 16s-6.4 16-16 16zM876.8 313.6l-64 25.6c-9.6 3.2-16 0-22.4-9.6s0-16 9.6-22.4l64-25.6c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6 0 19.2-9.6 22.4zM211.2 339.2l-64-25.6c-9.6-3.2-12.8-12.8-9.6-22.4 3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0l64 25.6c9.6 3.2 12.8 12.8 9.6 22.4s-12.8 16-22.4 9.6zM656 256h-288c-25.6 0-48-22.4-48-48v-32c0-25.6 22.4-48 48-48h288c25.6 0 48 22.4 48 48v32c0 25.6-22.4 48-48 48zM672 176c0-9.6-6.4-16-16-16h-288c-9.6 0-16 6.4-16 16v32c0 9.6 6.4 16 16 16h288c9.6 0 16-6.4 16-16v-32z" />
110
+ <glyph unicode="&#xe964;" glyph-name="delivery-van" horiz-adv-x="1280" d="M720 960h-672c-25.6 0-48-22.4-48-48v-704c0-25.6 22.4-48 48-48h672c25.6 0 48 22.4 48 48v704c0 25.6-22.4 48-48 48zM736 208c0-9.6-6.4-16-16-16h-672c-9.6 0-16 6.4-16 16v704c0 9.6 6.4 16 16 16h672c9.6 0 16-6.4 16-16v-704zM1158.4 774.4c-6.4 16-22.4 25.6-41.6 25.6h-204.8c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h208c9.6 0 16 6.4 16 16s-6.4 16-16 16h-208c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h204.8c6.4 0 12.8-3.2 12.8-9.6l115.2-224c0-3.2 3.2-3.2 3.2-6.4v-320c0-9.6-6.4-16-16-16h-368c-9.6 0-16-6.4-16-16s6.4-16 16-16h368c25.6 0 48 22.4 48 48v320c0 6.4-3.2 16-6.4 22.4l-115.2 224zM640 512h-480c-9.6 0-16-6.4-16-16s6.4-16 16-16h480c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1168 96c-9.6 0-16-6.4-16-16 0-60.8-51.2-112-112-112s-112 51.2-112 112c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-80 64-144 144-144s144 64 144 144c0 9.6-6.4 16-16 16zM368 96c-9.6 0-16-6.4-16-16 0-60.8-51.2-112-112-112s-112 51.2-112 112c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-80 64-144 144-144s144 64 144 144c0 9.6-6.4 16-16 16z" />
111
+ <glyph unicode="&#xe965;" glyph-name="diamond-ring" horiz-adv-x="864" d="M0 374.4c0-236.8 195.2-432 432-432s432 195.2 432 432c0 182.4-118.4 348.8-291.2 406.4l32 44.8c12.8 16 12.8 38.4 0 57.6l-41.6 57.6c-6.4 12.8-19.2 19.2-35.2 19.2h-192c-16 0-28.8-6.4-38.4-19.2l-41.6-57.6c-12.8-16-12.8-41.6 0-57.6l32-44.8c-169.6-57.6-288-220.8-288-406.4zM281.6 844.8c-3.2 6.4-3.2 12.8 0 19.2l41.6 57.6c3.2 3.2 6.4 6.4 12.8 6.4h192c6.4 0 9.6-3.2 12.8-6.4l41.6-57.6c3.2-6.4 3.2-12.8 0-19.2l-137.6-182.4c-6.4-9.6-19.2-9.6-25.6 0l-137.6 182.4zM476.8 656c134.4-22.4 236.8-140.8 236.8-278.4 0-156.8-128-284.8-284.8-284.8s-284.8 128-284.8 284.8c0 137.6 102.4 256 236.8 278.4l6.4-9.6c9.6-12.8 22.4-19.2 38.4-19.2s28.8 6.4 38.4 19.2l12.8 9.6zM310.4 755.2l54.4-73.6c-144-32-246.4-160-246.4-307.2 0-172.8 140.8-316.8 316.8-316.8 172.8 0 316.8 140.8 316.8 316.8 0 150.4-105.6 278.4-249.6 307.2l54.4 73.6c160-51.2 275.2-208 275.2-380.8 0-220.8-179.2-400-400-400s-400 179.2-400 400c0 172.8 115.2 329.6 278.4 380.8z" />
112
+ <glyph unicode="&#xe966;" glyph-name="direction-both" d="M873.6 576c3.2 0 9.6 3.2 12.8 3.2l128 128c6.4 6.4 6.4 16 0 22.4l-128 128c-3.2 3.2-6.4 6.4-12.8 6.4h-297.6v80c0 9.6-6.4 16-16 16h-96c-9.6 0-16-6.4-16-16v-80h-118.4c-25.6 0-41.6-22.4-41.6-48v-192c0-25.6 16-48 41.6-48h118.4v-32h-294.4c-3.2 0-9.6-3.2-12.8-6.4l-131.2-144c-6.4-6.4-6.4-16 0-22.4l131.2-144c3.2 0 6.4-3.2 12.8-3.2h294.4v-256c0-9.6 6.4-16 16-16s16 6.4 16 16v256h64v-160c0-9.6 6.4-16 16-16s16 6.4 16 16v160h150.4c25.6 0 41.6 22.4 41.6 48v224c0 25.6-16 48-41.6 48h-150.4v32h297.6zM480 928h64v-64h-64v64zM329.6 608c-9.6 0-9.6 6.4-9.6 16v192c0 9.6 0 16 9.6 16h537.6l112-112-112-112h-537.6zM726.4 512c9.6 0 9.6-6.4 9.6-16v-224c0-9.6 0-16-9.6-16h-566.4l-118.4 128 118.4 128h566.4zM544 544h-64v32h64v-32zM569.6 336c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-22.4-48-48 22.4-48 48-48zM569.6 400c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 6.4-16 16 9.6 16 16 16zM432 336c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-19.2-48-48 19.2-48 48-48zM432 400c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 9.6-16 16 6.4 16 16 16zM291.2 336c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-19.2-48-48 22.4-48 48-48zM291.2 400c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 9.6-16 16 6.4 16 16 16zM544 736h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16s-6.4 16-16 16zM736 736h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
113
+ <glyph unicode="&#xe967;" glyph-name="direction-right" horiz-adv-x="672" d="M352 944c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM368-64v480c0 9.6-6.4 16-16 16s-16-6.4-16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16zM592 752c-9.6 9.6-22.4 16-38.4 16h-489.6c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h492.8c16 0 28.8 6.4 38.4 19.2l73.6 102.4c3.2 6.4 3.2 12.8 0 19.2l-76.8 99.2zM569.6 550.4c-3.2-3.2-6.4-6.4-12.8-6.4h-492.8c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h489.6c6.4 0 9.6-3.2 12.8-6.4l70.4-86.4-67.2-92.8z" />
114
+ <glyph unicode="&#xe968;" glyph-name="disable-person" horiz-adv-x="832" d="M688 326.4c-9.6 16-25.6 25.6-41.6 25.6h-150.4c-9.6 0-16 6.4-16 16v176h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-336c0-25.6 22.4-48 48-48h150.4c6.4 0 12.8-3.2 12.8-9.6l140.8-278.4c3.2-6.4 9.6-9.6 12.8-9.6s6.4 0 6.4 3.2c6.4 3.2 9.6 12.8 6.4 22.4l-137.6 278.4zM364.8 857.6c0-54.4 41.6-96 96-96s96 41.6 96 96-41.6 96-96 96-96-41.6-96-96zM524.8 857.6c0-35.2-28.8-64-64-64s-64 28.8-64 64 28.8 64 64 64 64-28.8 64-64zM694.4 150.4c-6.4 3.2-16 3.2-22.4-6.4-60.8-105.6-172.8-169.6-294.4-169.6-188.8 0-339.2 153.6-339.2 339.2s150.4 339.2 339.2 339.2c9.6 0 16 6.4 16 16s-9.6 16-16 16c-204.8 0-371.2-166.4-371.2-371.2s166.4-371.2 371.2-371.2c131.2 0 256 70.4 323.2 185.6 3.2 6.4 0 16-6.4 22.4z" />
115
+ <glyph unicode="&#xe969;" glyph-name="disc" d="M512 784c9.6 0 16 6.4 16 16s-6.4 16-16 16c-208 0-377.6-169.6-377.6-377.6 0-9.6 6.4-16 16-16s16 6.4 16 16c0 192 153.6 345.6 345.6 345.6zM512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM336 448c0-96 80-176 176-176s176 80 176 176-80 176-176 176-176-80-176-176zM656 448c0-80-64-144-144-144s-144 64-144 144 64 144 144 144 144-64 144-144z" />
116
+ <glyph unicode="&#xe96a;" glyph-name="dislike" d="M928 873.6c-12.8 51.2-60.8 86.4-112 86.4h-252.8c0 0-3.2 0-3.2 0l-230.4-64h-73.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h73.6c0 0 3.2 0 3.2 0l230.4 64h252.8c38.4 0 70.4-25.6 80-64l86.4-352c6.4-22.4 0-44.8-9.6-64-12.8-19.2-32-32-57.6-38.4l-208-38.4c-38.4-6.4-67.2-41.6-67.2-80v-249.6c0-22.4-6.4-41.6-22.4-57.6s-38.4-22.4-64-19.2c-41.6 6.4-73.6 41.6-73.6 86.4v70.4c0 44.8-16 86.4-44.8 118.4l-44.8 51.2c-32 38.4-83.2 60.8-134.4 60.8-9.6 0-16-6.4-16-16s6.4-16 16-16c41.6 0 83.2-19.2 112-51.2l44.8-51.2c22.4-25.6 35.2-60.8 35.2-99.2v-70.4c0-60.8 44.8-112 105.6-115.2 3.2 0 6.4 0 9.6 0 28.8 0 57.6 9.6 76.8 28.8 22.4 19.2 32 48 32 80v252.8c0 22.4 16 44.8 38.4 48l208 38.4c32 6.4 60.8 25.6 76.8 51.2s22.4 57.6 16 89.6l-83.2 352zM80 960c-44.8 0-80-35.2-80-80v-512c0-44.8 35.2-80 80-80s80 35.2 80 80v512c0 44.8-35.2 80-80 80zM128 368c0-25.6-22.4-48-48-48s-48 22.4-48 48v512c0 25.6 22.4 48 48 48s48-22.4 48-48v-512z" />
117
+ <glyph unicode="&#xe96b;" glyph-name="dollar-on-hand" d="M483.2 400c150.4 0 272 121.6 272 272s-121.6 272-272 272-272-121.6-272-272 124.8-272 272-272zM483.2 912c131.2 0 240-108.8 240-240s-108.8-240-240-240-240 108.8-240 240 108.8 240 240 240zM972.8 297.6c-16 25.6-51.2 35.2-76.8 19.2l-16-9.6-6.4 9.6c-16 22.4-44.8 32-70.4 19.2l-28.8-12.8-9.6 16c-16 25.6-48 35.2-76.8 19.2l-150.4-83.2-60.8-3.2c-19.2 0-38.4 3.2-54.4 12.8l-128 67.2c-32 16-67.2 19.2-102.4 9.6l-128-38.4c-9.6-3.2-12.8-12.8-9.6-19.2s9.6-16 16-12.8l131.2 38.4c25.6 6.4 54.4 6.4 76.8-6.4l128-67.2c22.4-12.8 48-16 73.6-16l144 9.6c12.8 0 25.6-9.6 25.6-19.2s-6.4-22.4-16-25.6l-134.4-51.2c-32-12.8-64-12.8-96-6.4l-76.8 16c-9.6 3.2-16-3.2-19.2-12.8s3.2-16 12.8-19.2l76.8-16c16-3.2 28.8-6.4 44.8-6.4 22.4 0 48 3.2 70.4 12.8l134.4 51.2c25.6 9.6 38.4 32 35.2 57.6-3.2 28.8-28.8 51.2-60.8 48h-9.6l89.6 48c12.8 6.4 25.6 3.2 32-9.6l9.6-12.8-22.4-9.6c-6.4-3.2-12.8-12.8-6.4-22.4 3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0l80 38.4c9.6 6.4 25.6 3.2 32-9.6l6.4-9.6-54.4-32c-6.4-3.2-9.6-12.8-6.4-22.4 3.2-6.4 12.8-9.6 22.4-6.4l96 57.6c12.8 6.4 25.6 3.2 35.2-9.6 3.2-6.4 3.2-12.8 3.2-19.2-3.2-6.4-6.4-12.8-12.8-16l-428.8-240c-38.4-19.2-83.2-28.8-124.8-19.2l-156.8 32c-32 6.4-67.2 6.4-99.2-3.2l-70.4-3.2c-9.6-3.2-12.8-9.6-12.8-19.2 3.2-9.6 12.8-16 19.2-12.8l70.4 19.2c25.6 6.4 57.6 6.4 83.2 3.2l156.8-32c12.8-3.2 28.8-3.2 41.6-3.2 35.2 0 73.6 9.6 105.6 25.6l428.8 240c12.8 6.4 22.4 19.2 28.8 35.2 3.2 12.8 0 28.8-6.4 41.6zM480 672h32c19.2 0 32-12.8 32-32s-12.8-32-32-32h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h32v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v32c35.2 0 64 28.8 64 64s-28.8 64-64 64h-32c-19.2 0-32 12.8-32 32s12.8 32 32 32h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-32v32c0 9.6-6.4 16-16 16s-16-6.4-16-16v-32c-35.2 0-64-28.8-64-64s28.8-64 64-64z" />
118
+ <glyph unicode="&#xe96c;" glyph-name="door-path" d="M720 800h-416c-25.6 0-48-22.4-48-48v-608c0-25.6 22.4-48 48-48h416c25.6 0 48 22.4 48 48v608c0 25.6-22.4 48-48 48zM736 144c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16v608c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16v-608zM144 16c9.6 0 16 6.4 16 16v832c0 9.6-6.4 16-16 16s-16-6.4-16-16v-832c0-9.6 6.4-16 16-16zM16-48c9.6 0 16 6.4 16 16v960c0 9.6-6.4 16-16 16s-16-6.4-16-16v-960c0-9.6 6.4-16 16-16zM1008-48c9.6 0 16 6.4 16 16v960c0 9.6-6.4 16-16 16s-16-6.4-16-16v-960c0-9.6 6.4-16 16-16zM864 864v-832c0-9.6 6.4-16 16-16s16 6.4 16 16v832c0 9.6-6.4 16-16 16s-16-6.4-16-16z" />
119
+ <glyph unicode="&#xe96d;" glyph-name="Download-circle" d="M512-64c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512-230.4-512-512-512zM512 928c-265.6 0-480-214.4-480-480s214.4-480 480-480 480 214.4 480 480-214.4 480-480 480zM668.8 483.2c-6.4 6.4-16 6.4-22.4 0l-102.4-99.2v256c0 9.6-6.4 16-16 16s-16-6.4-16-16v-256l-99.2 99.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l128-128c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l128 128c0 6.4 0 16-3.2 22.4zM704 224h-352c-9.6 0-16 6.4-16 16s6.4 16 16 16h352c9.6 0 16-6.4 16-16s-6.4-16-16-16z" />
120
+ <glyph unicode="&#xe96e;" glyph-name="download" d="M976 560c-9.6 0-16-6.4-16-16v-352c0-19.2-12.8-32-32-32h-864c-19.2 0-32 12.8-32 32v352c0 9.6-6.4 16-16 16s-16-6.4-16-16v-352c0-35.2 28.8-64 64-64h864c35.2 0 64 28.8 64 64v352c0 9.6-6.4 16-16 16zM496 880c-9.6 0-16-6.4-16-16v-473.6l-179.2 179.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l220.8-220.8 220.8 220.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-185.6-179.2v473.6c0 9.6-6.4 16-16 16z" />
121
+ <glyph unicode="&#xe96f;" glyph-name="drag-inside" d="M816 704h160c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-6.4 3.2-16 6.4-22.4l-358.4-387.2v233.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-272c0-9.6 6.4-16 16-16h240c9.6 0 16 6.4 16 16s-6.4 16-16 16h-201.6l358.4 387.2c6.4 0 12.8-3.2 19.2-3.2zM800 912c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160zM48-64h928c25.6 0 48 22.4 48 48v560c0 9.6-6.4 16-16 16s-16-6.4-16-16v-560c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h560c9.6 0 16 6.4 16 16s-6.4 16-16 16h-560c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48z" />
122
+ <glyph unicode="&#xe970;" glyph-name="drag-outside" d="M0-48c0-9.6 6.4-16 16-16h992c9.6 0 16 6.4 16 16v592c0 9.6-6.4 16-16 16s-16-6.4-16-16v-576h-960v960h544c9.6 0 16 6.4 16 16s-6.4 16-16 16h-560c-9.6 0-16-6.4-16-16v-992zM1008 688c9.6 0 16 6.4 16 16v240c0 9.6-6.4 16-16 16h-272c-9.6 0-16-6.4-16-16s6.4-16 16-16h230.4l-348.8-348.8c-3.2-3.2-3.2-6.4-3.2-9.6-6.4 3.2-16 6.4-22.4 6.4h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160c0 9.6-3.2 16-6.4 25.6 3.2 0 6.4 3.2 6.4 3.2l352 352v-204.8c0-9.6 6.4-16 16-16zM608 368c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160z" />
123
+ <glyph unicode="&#xe971;" glyph-name="drag" d="M704 662.4l-320-320c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l320 320c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM1008 736c9.6 0 16 6.4 16 16v192c0 3.2 0 3.2 0 6.4-3.2 3.2-3.2 6.4-9.6 9.6-3.2 0-3.2 0-6.4 0h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h153.6l-131.2-131.2c0 0 0 0 0 0-9.6 0-16 3.2-22.4 3.2h-480c-25.6 0-48-22.4-48-48v-480c0-9.6 3.2-19.2 6.4-25.6-3.2 0-9.6 0-12.8-3.2l-192-192c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l192 192c3.2 3.2 3.2 6.4 3.2 12.8 6.4-3.2 16-6.4 25.6-6.4h480c25.6 0 48 22.4 48 48v480c0 6.4-3.2 12.8-6.4 19.2 0 0 0 0 0 0l134.4 131.2v-153.6c0-9.6 6.4-16 16-16zM832 272c0-9.6-6.4-16-16-16h-480c-9.6 0-16 6.4-16 16v480c0 9.6 6.4 16 16 16h480c9.6 0 16-6.4 16-16v-480zM48 480h112c9.6 0 16 6.4 16 16s-6.4 16-16 16h-112c-25.6 0-48-22.4-48-48v-480c0-25.6 22.4-48 48-48h480c25.6 0 48 22.4 48 48v121.6c0 9.6-6.4 16-16 16s-16-9.6-16-16v-121.6c0-9.6-6.4-16-16-16h-480c-9.6 0-16 6.4-16 16v480c0 9.6 6.4 16 16 16z" />
124
+ <glyph unicode="&#xe972;" glyph-name="drawer" d="M0-16c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v256c0 12.8-6.4 22.4-12.8 32 6.4 9.6 12.8 19.2 12.8 32v256c0 12.8-6.4 22.4-12.8 32 6.4 9.6 12.8 19.2 12.8 32v288c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48v-288c0-12.8 6.4-22.4 12.8-32-6.4-9.6-12.8-19.2-12.8-32v-256c0-12.8 6.4-22.4 12.8-32-6.4-9.6-12.8-19.2-12.8-32v-256zM32 912c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-288c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v288zM32 560c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-256c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v256zM32 240c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-256c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v256zM416 768h192c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16zM416 448h192c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16zM416 128h192c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
125
+ <glyph unicode="&#xe973;" glyph-name="dribbble" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM512 192c140.8 0 256 115.2 256 256s-115.2 256-256 256-256-115.2-256-256 115.2-256 256-256zM512 224c-48 0-92.8 16-128 41.6 19.2 25.6 73.6 83.2 169.6 108.8 16-41.6 28.8-86.4 38.4-131.2-25.6-12.8-51.2-19.2-80-19.2zM620.8 252.8c-9.6 44.8-22.4 86.4-35.2 124.8 38.4 6.4 86.4 3.2 137.6-6.4-19.2-51.2-54.4-92.8-102.4-118.4zM736 448c0-16-3.2-32-6.4-44.8-57.6 12.8-108.8 12.8-156.8 6.4-9.6 25.6-19.2 48-28.8 70.4 51.2 19.2 102.4 54.4 144 105.6 32-38.4 48-86.4 48-137.6zM512 672c60.8 0 115.2-22.4 153.6-64-38.4-51.2-86.4-80-137.6-99.2-35.2 70.4-70.4 124.8-86.4 150.4 22.4 9.6 44.8 12.8 70.4 12.8zM412.8 649.6c16-22.4 51.2-76.8 86.4-150.4-89.6-25.6-172.8-19.2-208-12.8 12.8 70.4 57.6 131.2 121.6 163.2zM288 454.4c16-3.2 44.8-6.4 80-6.4 41.6 0 92.8 3.2 147.2 19.2 9.6-22.4 19.2-41.6 28.8-67.2-99.2-25.6-160-89.6-182.4-118.4-44.8 44.8-73.6 102.4-73.6 166.4 0 3.2 0 3.2 0 6.4z" />
126
+ <glyph unicode="&#xe974;" glyph-name="dropper" d="M28.8-35.2c16-19.2 41.6-28.8 67.2-28.8s48 9.6 67.2 28.8l32 32c64-16 128 3.2 172.8 48l268.8 268.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-272-272c-38.4-38.4-96-54.4-150.4-38.4-6.4 3.2-12.8 0-16-3.2l-38.4-38.4c-25.6-25.6-64-25.6-89.6 0-9.6 12.8-16 28.8-16 44.8s6.4 32 19.2 44.8l38.4 38.4c3.2 3.2 6.4 9.6 3.2 16-16 54.4-3.2 112 38.4 150.4l268.8 268.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-268.8-268.8c-44.8-44.8-64-112-48-172.8l-32-32c-38.4-35.2-38.4-96 0-131.2zM960 896c-86.4 86.4-227.2 86.4-313.6 0l-153.6-153.6-3.2 3.2c-28.8 28.8-83.2 28.8-112 0-32-32-32-80 0-112l320-320c16-16 35.2-22.4 57.6-22.4s41.6 9.6 57.6 22.4c32 32 32 80 0 112l-3.2 3.2 153.6 153.6c83.2 86.4 83.2 227.2-3.2 313.6zM787.2 336c-19.2-19.2-48-19.2-67.2 0l-320 320c-19.2 19.2-19.2 48 0 67.2 9.6 9.6 22.4 12.8 32 12.8s25.6-6.4 32-12.8l320-320c22.4-19.2 22.4-48 3.2-67.2zM937.6 604.8l-153.6-153.6-265.6 265.6 153.6 153.6c73.6 73.6 192 73.6 265.6 0 73.6-70.4 73.6-192 0-265.6z" />
127
+ <glyph unicode="&#xe975;" glyph-name="egg-fry" d="M6.4 339.2c6.4-16 16-41.6 38.4-60.8 3.2-3.2 6.4-6.4 9.6-9.6 12.8-12.8 22.4-19.2 22.4-35.2s-12.8-35.2-25.6-48c-28.8-32-41.6-64-44.8-102.4-6.4-48 9.6-89.6 41.6-115.2 22.4-19.2 54.4-28.8 96-32 9.6 0 16 0 25.6 0 48 0 99.2 6.4 144 25.6 28.8 12.8 54.4 28.8 80 44.8 19.2 12.8 35.2 22.4 54.4 32 38.4 19.2 76.8 22.4 112 22.4 0 0 0 0 0 0 28.8 0 57.6 0 86.4-9.6 19.2-6.4 41.6-3.2 64-6.4 51.2-6.4 105.6 0 150.4 19.2 48 25.6 86.4 64 99.2 112 12.8 44.8 6.4 92.8 0 137.6l-3.2 22.4c-3.2 25.6-6.4 54.4 0 86.4 3.2 22.4 12.8 41.6 25.6 60.8l12.8 22.4c12.8 25.6 28.8 54.4 28.8 83.2 0 38.4-19.2 76.8-57.6 102.4-28.8 19.2-64 25.6-96 35.2-9.6 3.2-19.2 3.2-28.8 6.4-32 9.6-73.6 25.6-89.6 60.8-6.4 12.8-6.4 28.8-6.4 48 0 22.4-3.2 48-16 67.2-12.8 22.4-41.6 41.6-73.6 44.8-44.8 6.4-99.2-3.2-144-25.6-35.2-16-70.4-32-112-32-28.8 0-54.4 6.4-80 12.8-28.8 9.6-54.4 19.2-83.2 19.2h-6.4c-41.6 0-83.2-16-108.8-38.4-35.2-32-54.4-89.6-48-150.4 3.2-25.6 6.4-51.2 12.8-73.6 12.8-64 28.8-124.8-22.4-172.8l9.6-12.8-16 9.6c-51.2-44.8-70.4-99.2-51.2-150.4zM80 467.2c0 0 3.2 3.2 3.2 3.2 64 57.6 48 134.4 32 201.6-3.2 25.6-9.6 48-9.6 70.4-3.2 51.2 9.6 96 38.4 121.6 22.4 19.2 51.2 32 92.8 32 0 0 0 0 0 0 25.6 0 51.2-9.6 76.8-16 28.8-6.4 57.6-16 89.6-16 0 0 0 0 0 0 48 0 89.6 19.2 124.8 38.4 38.4 19.2 86.4 28.8 124.8 22.4 22.4-3.2 41.6-16 51.2-32s9.6-32 9.6-54.4c0-19.2 0-38.4 9.6-57.6 16-38.4 54.4-64 112-80 9.6 3.2 19.2 0 28.8-3.2 32-6.4 60.8-12.8 86.4-28.8s41.6-48 41.6-73.6c0-22.4-12.8-44.8-25.6-70.4l-12.8-22.4c-12.8-22.4-22.4-44.8-28.8-70.4-6.4-35.2-3.2-70.4 0-96l3.2-22.4c6.4-44.8 12.8-83.2 0-121.6s-41.6-73.6-83.2-92.8c-38.4-19.2-83.2-25.6-131.2-19.2-19.2 3.2-38.4 9.6-60.8 12.8-32 9.6-64 16-99.2 16-41.6 0-83.2-12.8-124.8-35.2-22.4-12.8-38.4-25.6-57.6-38.4-22.4-16-44.8-32-73.6-44.8-48-19.2-102.4-28.8-156.8-25.6-35.2 3.2-60.8 9.6-80 25.6-22.4 19.2-35.2 51.2-32 83.2s12.8 57.6 38.4 83.2c16 19.2 35.2 41.6 35.2 70.4s-16 44.8-32 57.6c-3.2 3.2-6.4 6.4-9.6 9.6-12.8 12.8-22.4 28.8-28.8 51.2-12.8 54.4 19.2 92.8 48 121.6zM480 294.4c115.2 0 208 92.8 208 208s-92.8 208-208 208-208-92.8-208-208 92.8-208 208-208zM480 678.4c96 0 176-80 176-176s-80-176-176-176-176 80-176 176 76.8 176 176 176zM480 595.2c51.2 0 92.8-41.6 92.8-92.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 67.2-54.4 124.8-124.8 124.8-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
128
+ <glyph unicode="&#xe976;" glyph-name="ellipsis-fill-h" d="M1024 448c0-64-54.4-118.4-118.4-118.4s-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4 118.4-54.4 118.4-118.4zM630.4 448c0-64-54.4-118.4-118.4-118.4s-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4 118.4-54.4 118.4-118.4zM236.8 448c0-64-54.4-118.4-118.4-118.4s-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4 118.4-54.4 118.4-118.4z" />
129
+ <glyph unicode="&#xe977;" glyph-name="ellipsis-fill-v" d="M512 960c64 0 118.4-54.4 118.4-118.4s-54.4-118.4-118.4-118.4-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4zM512 566.4c64 0 118.4-54.4 118.4-118.4s-54.4-118.4-118.4-118.4-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4zM512 172.8c64 0 118.4-54.4 118.4-118.4s-54.4-118.4-118.4-118.4-118.4 54.4-118.4 118.4 54.4 118.4 118.4 118.4z" />
130
+ <glyph unicode="&#xe978;" glyph-name="ellipsis-horizontal" d="M16 457.6c0-80 64-144 144-144s144 64 144 144-64 144-144 144-144-64-144-144zM160 569.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM512 313.6c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM512 569.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM864 313.6c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM864 569.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112z" />
131
+ <glyph unicode="&#xe979;" glyph-name="ellipsis-vertical" d="M512 665.6c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM512 921.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM512 313.6c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM512 569.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM512-38.4c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM512 217.6c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112z" />
132
+ <glyph unicode="&#xe97a;" glyph-name="emo-normal" d="M326.4 499.2c48 0 86.4 38.4 86.4 86.4s-38.4 86.4-86.4 86.4-86.4-38.4-86.4-86.4 41.6-86.4 86.4-86.4zM326.4 640c28.8 0 54.4-25.6 54.4-54.4s-25.6-54.4-54.4-54.4-54.4 25.6-54.4 54.4 25.6 54.4 54.4 54.4zM697.6 499.2c48 0 86.4 38.4 86.4 86.4s-38.4 86.4-86.4 86.4-86.4-38.4-86.4-86.4c0-48 38.4-86.4 86.4-86.4zM697.6 640c28.8 0 54.4-25.6 54.4-54.4s-25.6-54.4-54.4-54.4-54.4 25.6-54.4 54.4c0 28.8 22.4 54.4 54.4 54.4zM512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM304 272c0-9.6 6.4-16 16-16h352c9.6 0 16 6.4 16 16s-6.4 16-16 16h-352c-9.6 0-16-6.4-16-16z" />
133
+ <glyph unicode="&#xe97b;" glyph-name="emo-sad" d="M390.4 585.6c0 48-38.4 86.4-86.4 86.4s-86.4-38.4-86.4-86.4 38.4-86.4 86.4-86.4 86.4 38.4 86.4 86.4zM249.6 585.6c0 28.8 25.6 54.4 54.4 54.4s54.4-25.6 54.4-54.4-25.6-54.4-54.4-54.4-54.4 22.4-54.4 54.4zM672 672c-48 0-86.4-38.4-86.4-86.4s38.4-86.4 86.4-86.4c48 0 86.4 38.4 86.4 86.4s-38.4 86.4-86.4 86.4zM672 531.2c-28.8 0-54.4 25.6-54.4 54.4s25.6 54.4 54.4 54.4 54.4-25.6 54.4-54.4c0-28.8-22.4-54.4-54.4-54.4zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM515.2 336c-86.4 0-166.4-44.8-227.2-128-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 54.4 73.6 124.8 115.2 201.6 115.2 73.6 0 147.2-41.6 201.6-115.2 6.4-6.4 16-9.6 22.4-3.2s9.6 16 3.2 22.4c-60.8 83.2-140.8 128-227.2 128z" />
134
+ <glyph unicode="&#xe97c;" glyph-name="emo-smile" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM332.8 502.4c44.8 0 83.2 38.4 83.2 83.2s-38.4 83.2-83.2 83.2c-44.8 0-83.2-38.4-83.2-83.2-3.2-48 35.2-83.2 83.2-83.2zM332.8 636.8c28.8 0 51.2-22.4 51.2-51.2s-22.4-51.2-51.2-51.2-51.2 22.4-51.2 51.2c-3.2 28.8 22.4 51.2 51.2 51.2zM688 502.4c44.8 0 83.2 38.4 83.2 83.2s-38.4 83.2-83.2 83.2-83.2-38.4-83.2-83.2c0-48 35.2-83.2 83.2-83.2zM688 636.8c28.8 0 51.2-22.4 51.2-51.2s-22.4-51.2-51.2-51.2c-28.8 0-51.2 22.4-51.2 51.2s22.4 51.2 51.2 51.2zM310.4 304c-6.4 6.4-16 9.6-22.4 3.2s-9.6-16-3.2-22.4c60.8-80 140.8-124.8 224-124.8 86.4 0 166.4 44.8 227.2 128 6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2c-54.4-73.6-124.8-115.2-198.4-115.2-80 0-150.4 41.6-201.6 112z" />
135
+ <glyph unicode="&#xe97d;" glyph-name="envelop" horiz-adv-x="1504" d="M1456 960h-1408c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h1408c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM48 928h1408c9.6 0 16-6.4 16-16v-67.2l-611.2-595.2c-54.4-51.2-134.4-51.2-188.8 0l-640 595.2v67.2c0 9.6 6.4 16 16 16zM1456-32h-1408c-9.6 0-16 6.4-16 16v816l620.8-572.8c32-32 73.6-48 115.2-48s83.2 16 115.2 48l588.8 572.8v-816c0-9.6-6.4-16-16-16zM396.8 380.8l-179.2-179.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l179.2 179.2c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM1148.8 409.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l201.6-201.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-204.8 201.6z" />
136
+ <glyph unicode="&#xe97e;" glyph-name="facebook" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM368 416h48v-240c0-9.6 6.4-16 16-16h99.2c9.6 0 16 6.4 16 16v240h76.8c9.6 0 16 6.4 16 16v96c0 9.6-6.4 16-16 16h-76.8v44.8c0 19.2 0 19.2 19.2 19.2l57.6-3.2c6.4 0 9.6 3.2 12.8 6.4s3.2 6.4 3.2 12.8v96c0 9.6-6.4 16-16 16h-86.4c-108.8 0-121.6-67.2-121.6-140.8v-51.2h-48c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16zM384 512h48c3.2 0 9.6 0 12.8 3.2s6.4 6.4 6.4 12.8v70.4c-3.2 70.4 12.8 105.6 86.4 105.6h70.4v-60.8h-41.6c-51.2 0-54.4-25.6-54.4-54.4v-60.8c0-3.2 3.2-9.6 6.4-12.8s6.4-3.2 12.8-3.2h76.8v-64h-76.8c-9.6 0-16-6.4-16-16v-240h-64v240c0 9.6-6.4 16-16 16h-51.2v64z" />
137
+ <glyph unicode="&#xe97f;" glyph-name="fancy-futton" d="M857.6 393.6l-233.6 92.8v236.8c0 60.8-51.2 112-112 112s-112-51.2-112-112v-556.8c0-9.6 6.4-16 16-16s16 6.4 16 16v556.8c0 44.8 35.2 80 80 80s80-35.2 80-80v-364.8c0-9.6 6.4-16 16-16s16 6.4 16 16v96l220.8-86.4c41.6-16 67.2-57.6 60.8-99.2l-32-217.6c-6.4-44.8-48-80-96-80h-345.6c-12.8 0-25.6 6.4-32 16l-80 108.8c0 0 0 6.4 0 9.6s0 9.6 0 12.8v147.2c0 3.2 0 6.4 0 9.6 0 9.6 0 16 3.2 19.2l38.4 41.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-38.4-41.6c-12.8-12.8-12.8-28.8-12.8-41.6 0-3.2 0-6.4 0-6.4v-147.2c0-3.2 0-6.4 0-9.6 0-9.6-3.2-22.4 6.4-35.2l80-115.2c12.8-19.2 35.2-28.8 57.6-28.8h342.4c64 0 118.4 48 128 108.8l32 217.6c9.6 57.6-22.4 115.2-76.8 134.4zM832 960h-649.6c-99.2 0-182.4-83.2-182.4-182.4 0-102.4 83.2-182.4 182.4-182.4h140.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-140.8c-83.2-3.2-150.4 64-150.4 150.4s67.2 150.4 150.4 150.4h649.6c83.2 0 150.4-67.2 150.4-150.4s-67.2-150.4-150.4-150.4h-153.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h153.6c102.4 0 182.4 83.2 182.4 182.4s-83.2 182.4-182.4 182.4zM233.6 819.2c3.2 0 3.2 0 6.4 3.2 0 3.2 3.2 6.4 3.2 6.4 0 3.2 0 6.4-3.2 6.4 0 3.2-3.2 3.2-6.4 3.2h-67.2c-3.2 0-6.4 0-6.4-3.2s-3.2 3.2-3.2 0v-124.8c0-3.2 0-3.2 3.2-6.4 3.2 0 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2c3.2 0 3.2 3.2 3.2 6.4v51.2h28.8c3.2 0 3.2 0 6.4 3.2 0 3.2 3.2 3.2 3.2 6.4s0 6.4-3.2 6.4c0 3.2-3.2 3.2-6.4 3.2h-28.8v38.4h51.2zM230.4 704c3.2 0 9.6-3.2 12.8-3.2 6.4 0 9.6 3.2 9.6 6.4l6.4 25.6h41.6l6.4-25.6c0-3.2 3.2-6.4 9.6-6.4 3.2 0 6.4 0 9.6 3.2s6.4 3.2 6.4 6.4c0 0 0 0 0 3.2l-38.4 121.6c0 3.2-3.2 3.2-6.4 6.4-3.2 0-6.4 3.2-9.6 3.2s-6.4 0-9.6-3.2c-3.2 0-6.4-3.2-6.4-6.4l-35.2-118.4c0 0 0-3.2 0-3.2-3.2-3.2 0-6.4 3.2-9.6zM281.6 812.8l16-57.6h-32l16 57.6zM476.8 604.8c3.2 0 6.4 0 9.6 3.2 3.2 0 3.2 3.2 3.2 6.4v76.8l41.6-76.8c3.2-6.4 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 3.2 0 3.2 3.2 3.2 6.4v121.6c0 3.2 0 3.2-3.2 6.4-3.2 0-6.4 3.2-9.6 3.2s-6.4 0-9.6-3.2-3.2-3.2-3.2-6.4v-76.8l-38.4 70.4c-3.2 6.4-6.4 9.6-9.6 9.6-3.2 3.2-6.4 3.2-9.6 3.2s-6.4 0-9.6-3.2c-3.2 0-3.2-3.2-3.2-6.4v-124.8c0-3.2 0-3.2 3.2-6.4 6.4 3.2 9.6 0 12.8 0zM700.8 819.2c3.2 0 6.4 0 9.6 0s3.2-3.2 6.4-3.2 3.2-3.2 3.2-6.4 0-3.2 0-3.2 0-3.2 0-3.2c0-6.4 3.2-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2s3.2 6.4 3.2 9.6c0 9.6-3.2 19.2-12.8 25.6s-19.2 9.6-32 9.6c-12.8 0-22.4-3.2-32-9.6s-12.8-19.2-12.8-32v-54.4c0-16 3.2-25.6 12.8-32s19.2-9.6 32-9.6c12.8 0 25.6 3.2 32 9.6s12.8 16 12.8 28.8c0 3.2 0 6.4-3.2 9.6s-6.4-3.2-9.6-3.2c-6.4 0-12.8-3.2-12.8-6.4s0-6.4 0-6.4 0-3.2-3.2-6.4-3.2-3.2-6.4-6.4-6.4-3.2-9.6-3.2c-12.8 0-19.2 6.4-19.2 22.4v54.4c0 12.8 6.4 19.2 19.2 19.2zM796.8 704c3.2 0 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2c3.2 0 3.2 3.2 3.2 6.4v48c0 0 0 3.2 0 3.2l38.4 67.2c0 0 0 0 0 3.2s-3.2 6.4-6.4 6.4c-3.2 3.2-6.4 3.2-9.6 3.2s-6.4-3.2-6.4-6.4l-28.8-54.4-28.8 54.4c-3.2 3.2-3.2 6.4-6.4 6.4s-6.4 0-9.6-3.2c-3.2-3.2-6.4-3.2-6.4-6.4 0 0 0 0 0-3.2l38.4-67.2c0 0 0 0 0-3.2v-48c0-3.2 0-3.2 3.2-6.4z" />
138
+ <glyph unicode="&#xe980;" glyph-name="feeder" d="M998.4 921.6v0 0c-3.2 3.2-3.2 6.4-6.4 6.4v3.2c0 0-3.2 3.2-3.2 3.2s0 0 0 0c-51.2 41.6-89.6 25.6-105.6 12.8-25.6-19.2-41.6-54.4-38.4-73.6 0-16-3.2-28.8-9.6-35.2s-16-6.4-32-6.4c-51.2 9.6-96-9.6-124.8-28.8l-38.4 35.2c-25.6 25.6-73.6 25.6-99.2 0-22.4-22.4-25.6-57.6-12.8-83.2-44.8-3.2-92.8-22.4-124.8-54.4l-352-352c-67.2-67.2-67.2-179.2 0-249.6l112-112c35.2-35.2 80-51.2 124.8-51.2s89.6 16 124.8 51.2l352 352c35.2 35.2 51.2 80 51.2 128 9.6-6.4 22.4-9.6 35.2-9.6 19.2 0 35.2 6.4 48 19.2 28.8 28.8 28.8 70.4 0 99.2l-35.2 35.2c16 22.4 38.4 67.2 28.8 124.8-3.2 16 0 25.6 6.4 32s19.2 9.6 35.2 9.6c19.2-3.2 54.4 9.6 73.6 38.4 16 19.2 32 57.6-9.6 105.6zM390.4 9.6c-57.6-54.4-147.2-54.4-201.6 0l-112 112c-57.6 57.6-57.6 147.2 0 201.6l67.2 67.2c32-25.6 131.2-92.8 275.2-64 195.2 38.4 262.4 0 278.4-12.8l-307.2-304zM742.4 361.6l-25.6-25.6c-25.6 22.4-99.2 64-307.2 22.4-124.8-25.6-214.4 32-246.4 54.4l262.4 262.4c35.2 35.2 86.4 51.2 131.2 41.6l220.8-220.8c0 0 0 0 0 0 16-44.8 0-96-35.2-134.4zM880 499.2c-12.8-12.8-38.4-12.8-54.4 0l-262.4 262.4c-16 16-16 38.4 0 54.4 6.4 6.4 16 9.6 25.6 9.6s19.2-3.2 25.6-9.6l262.4-262.4c19.2-16 19.2-38.4 3.2-54.4zM985.6 838.4c-12.8-19.2-38.4-28.8-41.6-28.8 0 0-3.2 0-3.2 0-28.8 0-48-6.4-60.8-19.2s-16-32-16-57.6c9.6-44.8-6.4-80-19.2-99.2l-144 144c25.6 16 57.6 28.8 96 22.4 25.6-3.2 44.8 3.2 57.6 16s19.2 32 19.2 60.8c0 0 0 3.2 0 3.2 0 6.4 9.6 32 28.8 44.8 19.2 9.6 38.4 6.4 67.2-16 0 0 0 0 0 0 3.2-6.4 6.4-16 9.6-12.8 12.8-22.4 16-41.6 6.4-57.6z" />
139
+ <glyph unicode="&#xe981;" glyph-name="file-cabinet" horiz-adv-x="992" d="M400 960c-25.6 0-48-22.4-48-48v-931.2c0-25.6 22.4-48 48-48h227.2c25.6 0 48 22.4 48 48v931.2c-3.2 25.6-25.6 48-51.2 48h-224zM640 480h-256v288h256v-288zM640-16c0-9.6-6.4-16-16-16h-227.2c-9.6 0-16 6.4-16 16v464h256v-464zM640 912v-112h-256v112c0 9.6 6.4 16 16 16h227.2c6.4 0 12.8-6.4 12.8-16zM515.2 64c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64zM515.2 160c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM752-48c0-9.6 6.4-16 16-16h176c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-176c-9.6 0-16-6.4-16-16s6.4-16 16-16h176c9.6 0 16-6.4 16-16v-112h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128v-288h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128v-464c0-9.6-6.4-16-16-16h-176c-9.6 0-16-6.4-16-16zM912 128c0 35.2-28.8 64-64 64s-64-28.8-64-64 28.8-64 64-64 64 28.8 64 64zM816 128c0 19.2 12.8 32 32 32s32-12.8 32-32-12.8-32-32-32-32 12.8-32 32zM48-64h208c9.6 0 16 6.4 16 16s-6.4 16-16 16h-208c-9.6 0-16 6.4-16 16v464h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v288h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v112c0 9.6 6.4 16 16 16h208c9.6 0 16 6.4 16 16s-6.4 16-16 16h-208c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM112 128c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM208 128c0-19.2-12.8-32-32-32s-32 12.8-32 32 12.8 32 32 32 32-12.8 32-32z" />
140
+ <glyph unicode="&#xe982;" glyph-name="file-rotate" d="M416 700.8h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM224 508.8h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16zM832 220.8h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM816 524.8c0 9.6-6.4 16-16 16h-352c-9.6 0-16-6.4-16-16s6.4-16 16-16h352c9.6 0 16 9.6 16 16zM832 380.8h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16zM352 380.8h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1027.2 582.4c0 60.8-41.6 108.8-99.2 118.4v208c0 25.6-22.4 48-48 48h-704c-25.6 0-48-19.2-48-48v-483.2c-3.2 3.2-6.4 6.4-12.8 6.4-64 0-118.4-54.4-118.4-121.6s54.4-121.6 118.4-121.6h12.8v-208c0-25.6 22.4-48 48-48h704c25.6 0 48 22.4 48 48v480c57.6 6.4 99.2 54.4 99.2 121.6zM115.2 220.8c-48 0-86.4 41.6-86.4 89.6s38.4 89.6 86.4 89.6c6.4 0 9.6 3.2 12.8 6.4v-182.4h-12.8zM880-35.2h-704c-9.6 0-16 6.4-16 16v208h240v-96c0-6.4 3.2-12.8 9.6-16 3.2 0 3.2 0 6.4 0s9.6 3.2 12.8 3.2l115.2 115.2c6.4 6.4 6.4 16 0 22.4l-115.2 115.2c-3.2 3.2-12.8 6.4-16 3.2-6.4-3.2-9.6-9.6-9.6-16v-102.4h-243.2v691.2c0 9.6 6.4 16 16 16h704c9.6 0 16-6.4 16-16v-208h-272v99.2c0 6.4-3.2 12.8-9.6 16s-12.8 0-16-3.2l-115.2-115.2c-6.4-6.4-6.4-16 0-22.4l115.2-115.2c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 3.2 0 6.4 0 6.4 3.2 9.6 9.6 9.6 16v96h268.8v-688c0-6.4-6.4-16-16-16zM432 204.8c0 0 0 0 0 0 0 3.2 0 3.2 0 3.2v76.8l76.8-76.8-76.8-76.8v73.6zM592 608l-76.8 76.8 76.8 76.8v-153.6zM928 496v172.8c38.4-9.6 67.2-44.8 67.2-86.4s-22.4-83.2-67.2-86.4z" />
141
+ <glyph unicode="&#xe983;" glyph-name="file" horiz-adv-x="864" d="M0 691.2v-707.2c0-25.6 22.4-48 48-48h768c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-505.6c-3.2 0-6.4 0-9.6-3.2l-294.4-252.8c-3.2-3.2-6.4-6.4-6.4-12.8zM816 928c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-768c-9.6 0-16 6.4-16 16v656h304c9.6 0 16 6.4 16 16v272h464zM32 684.8l284.8 243.2h3.2v-256h-288v12.8zM176 528c0-9.6 6.4-16 16-16h512c9.6 0 16 6.4 16 16s-6.4 16-16 16h-512c-9.6 0-16-6.4-16-16zM704 384h-512c-9.6 0-16-6.4-16-16s6.4-16 16-16h512c9.6 0 16 6.4 16 16s-6.4 16-16 16zM704 224h-512c-9.6 0-16-6.4-16-16s6.4-16 16-16h512c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
142
+ <glyph unicode="&#xe984;" glyph-name="files" horiz-adv-x="896" d="M688 960h-441.6c-3.2 0-9.6 0-12.8-3.2v-3.2c-6.4-3.2-9.6-6.4-12.8-9.6l-80-76.8-134.4-121.6c-3.2-3.2-6.4-6.4-6.4-12.8v-588.8c0-25.6 22.4-48 48-48h640c25.6 0 48 22.4 48 48v768c0 25.6-22.4 48-48 48zM48 736l112 108.8 89.6 80c3.2 0 3.2 0 6.4 0v-192l-208 3.2c0 0 0 0 0 0zM704 144c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v560h240c9.6 0 16 6.4 16 16v208h400c9.6 0 16-6.4 16-16v-768zM848-32h-640c-9.6 0-16 6.4-16 16v19.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-19.2c0-25.6 22.4-48 48-48h640c25.6 0 48 22.4 48 48v768c0 25.6-22.4 48-48 48h-25.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h25.6c9.6 0 16-6.4 16-16v-768c0-9.6-6.4-16-16-16zM576 608h-416c-9.6 0-16-6.4-16-16s6.4-16 16-16h416c9.6 0 16 6.4 16 16s-6.4 16-16 16zM576 480h-416c-9.6 0-16-6.4-16-16s6.4-16 16-16h416c9.6 0 16 6.4 16 16s-6.4 16-16 16zM576 352h-416c-9.6 0-16-6.4-16-16s6.4-16 16-16h416c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
143
+ <glyph unicode="&#xe985;" glyph-name="film-roll" horiz-adv-x="1216" d="M1168 736h-560v80c0 25.6-22.4 48-48 48h-144v48c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-48h-144c-25.6 0-48-22.4-48-48v-832c0-25.6 22.4-48 48-48h512c25.6 0 48 22.4 48 48v80h272c25.6 0 48 22.4 48 48v156.8c0 6.4 3.2 9.6 6.4 12.8l259.2 166.4c12.8 9.6 22.4 22.4 22.4 41.6v198.4c0 25.6-22.4 48-48 48zM224 912c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-48h-160v48zM576 736v-752c0-9.6-6.4-16-16-16h-512c-9.6 0-16 6.4-16 16v832c0 9.6 6.4 16 16 16h512c9.6 0 16-6.4 16-16v-80zM928 704h128v-96h-128v96zM768 704h128v-96h-128v96zM608 704h128v-96h-128v96zM736 96h-128v64h128v-64zM896 112c0-9.6-6.4-16-16-16h-112v64h128v-48zM1184 489.6c0-6.4-3.2-9.6-6.4-12.8l-259.2-166.4c-12.8-9.6-22.4-22.4-22.4-41.6v-76.8h-288v384h576v-86.4zM1184 608h-96v96h80c9.6 0 16-6.4 16-16v-80zM176 656c-9.6 0-16-6.4-16-16v-416c0-9.6 6.4-16 16-16s16 6.4 16 16v416c0 9.6-6.4 16-16 16z" />
144
+ <glyph unicode="&#xe986;" glyph-name="film" d="M48-64h928c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM864 928h112c9.6 0 16-6.4 16-16v-144h-128v160zM864 736h128v-160h-128v160zM864 544h128v-192h-128v192zM864 320h128v-160h-128v160zM864 128h128v-144c0-9.6-6.4-16-16-16h-112v160zM192 128v800h640v-960h-640v160zM32 912c0 9.6 6.4 16 16 16h112v-160h-128v144zM32 736h128v-160h-128v160zM32 544h128v-192h-128v192zM32 320h128v-160h-128v160zM32 128h128v-160h-112c-9.6 0-16 6.4-16 16v144zM633.6 512l-112 70.4c-6.4 6.4-16 6.4-25.6 6.4-25.6 0-48-22.4-48-48v-140.8c0-25.6 22.4-48 48-48 9.6 0 19.2 3.2 25.6 6.4l112 70.4c12.8 9.6 22.4 25.6 22.4 41.6s-9.6 32-22.4 41.6zM617.6 457.6l-112-70.4c-9.6-6.4-25.6 0-25.6 12.8v140.8c0 9.6 9.6 16 16 16 3.2 0 6.4 0 9.6-3.2l112-70.4c6.4-3.2 6.4-9.6 6.4-12.8s0-6.4-6.4-12.8z" />
145
+ <glyph unicode="&#xe987;" glyph-name="finger-index" horiz-adv-x="768" d="M681.6 464l-265.6 105.6v278.4c0 64-51.2 112-112 112s-112-51.2-112-112v-640c0-9.6 6.4-16 16-16s16 6.4 16 16v640c0 44.8 35.2 80 80 80s80-35.2 80-80v-284.8c0 0 0-3.2 0-3.2v-156.8c0-9.6 6.4-16 16-16s16 6.4 16 16v134.4l252.8-102.4c48-19.2 76.8-67.2 67.2-118.4l-35.2-252.8c-6.4-54.4-57.6-96-115.2-96h-400c-16 0-32 6.4-41.6 19.2l-102.4 134.4c-6.4 6.4-9.6 16-9.6 25.6v172.8c0 12.8 6.4 25.6 16 32l48 48c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-48-48c-16-12.8-25.6-32-25.6-54.4v-172.8c0-16 6.4-35.2 16-48l102.4-131.2c16-19.2 38.4-32 64-32h396.8c73.6 0 137.6 54.4 147.2 121.6l38.4 252.8c12.8 67.2-22.4 128-83.2 153.6z" />
146
+ <glyph unicode="&#xe988;" glyph-name="finger-print" d="M224 876.8c-6.4-6.4-9.6-16-3.2-22.4s16-9.6 22.4-3.2c3.2 3.2 252.8 176 560 0 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6s3.2 16-6.4 22.4c-320 182.4-588.8 0-592-3.2zM963.2 560c3.2 0 6.4 0 9.6 3.2 6.4 3.2 9.6 16 3.2 22.4-99.2 150.4-265.6 243.2-448 243.2-179.2-3.2-342.4-92.8-441.6-236.8-6.4-6.4-3.2-16 3.2-22.4s16-3.2 22.4 3.2c92.8 137.6 249.6 220.8 416 220.8 172.8 0 329.6-86.4 422.4-227.2 3.2-6.4 6.4-6.4 12.8-6.4zM822.4 73.6c-268.8 0-278.4 214.4-278.4 224s-9.6 16-16 16c-9.6 0-16-6.4-16-16 0-3.2 12.8-256 310.4-256 9.6 0 19.2 6.4 19.2 16s-6.4 16-19.2 16c3.2 0 3.2 0 0 0zM899.2 224c28.8 57.6 22.4 140.8-19.2 236.8-44.8 99.2-140.8 198.4-259.2 227.2-83.2 22.4-214.4 25.6-348.8-76.8-252.8-195.2-112-502.4-112-502.4 3.2-6.4 12.8-12.8 22.4-6.4 6.4 3.2 12.8 12.8 6.4 22.4 0 3.2-131.2 284.8 105.6 467.2 124.8 96 243.2 89.6 320 70.4 124.8-32 204.8-134.4 236.8-211.2 38.4-86.4 44.8-160 19.2-208-16-28.8-28.8-35.2-64-44.8-25.6-6.4-51.2-3.2-73.6 12.8-35.2 22.4-60.8 70.4-73.6 134.4-16 70.4-76.8 105.6-131.2 108.8-64 3.2-118.4-32-137.6-89.6-32-96-12.8-307.2 268.8-422.4 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6 0 16-9.6 22.4-326.4 134.4-256 374.4-252.8 384 16 54.4 67.2 70.4 105.6 70.4 38.4-3.2 89.6-25.6 102.4-83.2 16-73.6 44.8-128 89.6-156.8 28.8-19.2 60.8-25.6 96-16 44.8 0 67.2 16 86.4 51.2zM422.4 528c83.2 35.2 182.4 19.2 230.4-16 25.6-19.2 115.2-89.6 115.2-211.2 0-9.6 6.4-16 16-16s16 6.4 16 16c0 134.4-96 214.4-128 236.8-54.4 38.4-163.2 57.6-259.2 19.2-60.8-22.4-134.4-76.8-156.8-195.2-44.8-240 134.4-400 140.8-406.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 6.4 16 0 22.4-3.2 0-172.8 153.6-131.2 377.6 19.2 102.4 83.2 147.2 134.4 169.6z" />
147
+ <glyph unicode="&#xe989;" glyph-name="fire-flame" d="M339.2-64c0 0-3.2-3.2-3.2-3.2-3.2 0-265.6 60.8-265.6 339.2 0 124.8 80 211.2 153.6 294.4 96 105.6 185.6 201.6 121.6 368-3.2 6.4 0 12.8 3.2 16s9.6 6.4 16 6.4c3.2 0 323.2-60.8 326.4-368l28.8 51.2c3.2 3.2 6.4 6.4 9.6 6.4s9.6 0 12.8-3.2c6.4-6.4 150.4-124.8 150.4-300.8 0-208-105.6-355.2-297.6-412.8-6.4 0-9.6 0-16 3.2-3.2 3.2-6.4 9.6-6.4 12.8 0 0 9.6 108.8-64 195.2-44.8 54.4-48 124.8-48 163.2-57.6-35.2-185.6-137.6-108.8-352 3.2-3.2 3.2-3.2 3.2-6.4s-6.4-9.6-16-9.6c0 0 0 0 0 0zM480 352c3.2 0 6.4 0 9.6-3.2s6.4-9.6 6.4-16c0 0-19.2-102.4 35.2-169.6 60.8-70.4 70.4-153.6 70.4-195.2 211.2 70.4 256 243.2 256 374.4 0 128-89.6 227.2-124.8 262.4l-54.4-92.8c-3.2-6.4-12.8-9.6-19.2-6.4s-12.8 9.6-9.6 16c41.6 284.8-182.4 374.4-265.6 396.8 51.2-166.4-44.8-272-137.6-371.2-76.8-83.2-147.2-160-147.2-272 0-204.8 147.2-278.4 211.2-300.8-83.2 275.2 156.8 377.6 160 377.6 6.4 0 9.6 0 9.6 0z" />
148
+ <glyph unicode="&#xe98a;" glyph-name="flag" d="M272 976c-9.6 0-16-6.4-16-16v-832c0-9.6 6.4-16 16-16s16 6.4 16 16v320h192v-144c0 0 0 0 0 0s0-3.2 0-3.2c0 0 0-3.2 0-3.2s0 0 0 0 0 0 0 0 3.2-3.2 3.2-3.2c0 0 0 0 3.2 0s3.2-3.2 6.4-3.2h406.4c6.4 0 9.6 3.2 12.8 6.4s3.2 9.6 3.2 12.8l-64 201.6 67.2 201.6c0 6.4 0 9.6-3.2 12.8 0 6.4-6.4 9.6-12.8 9.6h-166.4v144c0 9.6-6.4 16-16 16h-432v64c0 9.6-6.4 16-16 16zM512 448h166.4l-166.4-115.2v115.2zM883.2 704l-60.8-185.6c0-3.2 0-6.4 0-9.6l60.8-185.6h-336l182.4 121.6c6.4 3.2 6.4 9.6 6.4 16 0 0 0 3.2 0 3.2v240h147.2zM704 864v-384h-416v384h416zM176 48c0-9.6 6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16zM112-48c0-9.6 6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16z" />
149
+ <glyph unicode="&#xe98b;" glyph-name="flip-card1" horiz-adv-x="1184" d="M787.2 150.4c-9.6 0-16-6.4-16-16v-44.8c0-19.2-12.8-35.2-32-41.6l-201.6-60.8c-12.8-3.2-28.8 0-38.4 6.4-12.8 9.6-19.2 22.4-19.2 35.2 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-25.6 9.6-48 32-60.8 12.8-9.6 28.8-16 44.8-16 6.4 0 16 0 22.4 3.2l201.6 60.8c32 9.6 54.4 38.4 54.4 73.6v44.8c0 9.6-6.4 16-16 16zM848 518.4h-44.8v256c0 32-19.2 57.6-48 70.4l-201.6 80c-22.4 9.6-51.2 6.4-70.4-6.4-22.4-12.8-32-38.4-32-64v-278.4c0-9.6 6.4-16 16-16s16 6.4 16 16v278.4c0 16 6.4 28.8 19.2 35.2 12.8 9.6 25.6 9.6 41.6 3.2l201.6-80c16-6.4 28.8-22.4 28.8-41.6v-256h-406.4c-89.6 0-160-70.4-160-160s70.4-160 160-160h144c0 0 0 0 0 0l-57.6-57.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l83.2 83.2c6.4 6.4 6.4 16 0 22.4l-83.2 89.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l57.6-57.6c0 0 0 0 0 0h-144c-70.4 0-128 57.6-128 128s57.6 128 128 128h403.2v-198.4c0-9.6 6.4-16 16-16s16 6.4 16 16v198.4h44.8c70.4 0 128-57.6 128-128s-57.6-128-128-128h-172.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h172.8c89.6 0 160 70.4 160 160s-73.6 160-163.2 160zM528 214.4v0c0 0 0 0 0 0s0 0 0 0v0z" />
150
+ <glyph unicode="&#xe98c;" glyph-name="flip-card2" d="M720 672c6.4 0 9.6 3.2 12.8 6.4l76.8 121.6c3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-54.4-89.6c-6.4 121.6-105.6 217.6-227.2 217.6-124.8 0-230.4-102.4-230.4-230.4 3.2-3.2 9.6-9.6 19.2-9.6s16 6.4 16 16c0 108.8 89.6 198.4 198.4 198.4s195.2-89.6 198.4-195.2l-89.6 57.6c-6.4 3.2-16 3.2-22.4-6.4-3.2-6.4-3.2-16 6.4-22.4l115.2-80c3.2 0 6.4 0 9.6 0zM496 780.8c-9.6 0-16-6.4-16-16v-800c0-9.6 6.4-16 16-16s16 6.4 16 16v800c0 9.6-6.4 16-16 16zM307.2 569.6l-185.6 41.6c-48 9.6-96-28.8-96-76.8v-467.2c0-44.8 35.2-80 80-80 6.4 0 12.8 0 16 3.2l185.6 41.6c38.4 9.6 64 41.6 64 76.8v384c-3.2 35.2-28.8 67.2-64 76.8zM336 105.6c0-22.4-16-41.6-38.4-48l-185.6-41.6c-28.8-6.4-57.6 16-57.6 48v467.2c0 25.6 22.4 48 48 48 3.2 0 6.4 0 9.6 0l185.6-41.6c22.4-6.4 38.4-25.6 38.4-48v-384zM928 611.2c-6.4 0-12.8 0-16-3.2l-185.6-41.6c-38.4-9.6-64-41.6-64-76.8v-384c0-38.4 25.6-70.4 64-76.8l185.6-41.6c6.4 0 12.8-3.2 16-3.2 44.8 0 80 35.2 80 80v467.2c0 44.8-35.2 80-80 80zM976 67.2c0-28.8-28.8-54.4-57.6-48l-185.6 41.6c-22.4 6.4-38.4 25.6-38.4 48v384c0 22.4 16 41.6 38.4 48l185.6 41.6c3.2 0 6.4 0 9.6 0 25.6 0 48-22.4 48-48v-467.2z" />
151
+ <glyph unicode="&#xe98d;" glyph-name="folder-network" horiz-adv-x="960" d="M480 160h432c25.6 0 48 22.4 48 48v576c0 25.6-22.4 48-48 48h-508.8c-6.4 0-12.8 3.2-16 9.6l-25.6 86.4c-6.4 19.2-25.6 32-44.8 32h-268.8c-25.6 0-48-22.4-48-48v-704c0-25.6 22.4-48 48-48h400v-64c0 0 0 0 0 0-32-6.4-57.6-32-64-64h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c6.4-35.2 38.4-64 76.8-64s70.4 28.8 80 64c0 0 3.2 0 3.2 0h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c0 0-3.2 0-3.2 0-6.4 32-28.8 54.4-60.8 64 0 0 0 0 0 3.2v60.8zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 12.8-3.2 16-9.6l25.6-86.4c6.4-19.2 25.6-32 44.8-32h508.8c9.6 0 16-6.4 16-16v-80h-896v208zM508.8 16c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM48 192c-9.6 0-16 6.4-16 16v464h896v-464c0-9.6-6.4-16-16-16h-864z" />
152
+ <glyph unicode="&#xe98e;" glyph-name="folder" d="M0-16c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v672c0 3.2 0 6.4-3.2 6.4 3.2 3.2 3.2 6.4 3.2 9.6v80c0 25.6-22.4 48-48 48h-524.8c-6.4 0-9.6 3.2-12.8 6.4l-76.8 128c-9.6 16-25.6 25.6-44.8 25.6h-268.8c-25.6 0-48-22.4-48-48v-240c0-3.2 0-6.4 3.2-6.4-3.2-3.2-3.2-6.4-3.2-9.6v-672zM32 912c0 9.6 6.4 16 16 16h268.8c6.4 0 9.6-3.2 12.8-6.4l76.8-128c9.6-16 25.6-25.6 44.8-25.6h524.8c9.6 0 16-6.4 16-16v-80h-960v240zM32 640h960v-656c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v656z" />
153
+ <glyph unicode="&#xe98f;" glyph-name="football" d="M931.2 742.4c0 3.2-3.2 6.4-6.4 9.6-92.8 124.8-243.2 208-412.8 208-172.8 0-323.2-86.4-416-214.4-3.2-3.2-3.2-3.2-3.2-6.4-57.6-83.2-92.8-182.4-92.8-291.2 0-102.4 32-198.4 83.2-278.4 0-3.2 3.2-3.2 3.2-6.4 92.8-137.6 249.6-227.2 425.6-227.2 281.6 0 512 230.4 512 512 0 108.8-35.2 211.2-92.8 294.4zM902.4 169.6l-176 3.2-83.2 118.4 64 201.6 144 51.2 140.8-99.2c0-102.4-35.2-198.4-89.6-275.2zM300.8 192h-192c-44.8 64-70.4 147.2-76.8 233.6l140.8 99.2 134.4-35.2 67.2-204.8-73.6-92.8zM102.4 694.4l51.2-147.2-121.6-83.2c3.2 86.4 28.8 163.2 70.4 230.4zM403.2 288l-64 204.8 166.4 124.8 166.4-128-64-204.8h-204.8zM873.6 566.4l44.8 134.4c38.4-64 64-137.6 70.4-217.6l-115.2 83.2zM896 732.8l-54.4-160-150.4-51.2-179.2 128v140.8l150.4 105.6c0 0 6.4 3.2 6.4 3.2 92.8-32 172.8-89.6 227.2-166.4zM636.8 912l-124.8-92.8-121.6 92.8c38.4 9.6 80 16 121.6 16s83.2-6.4 124.8-16zM352 899.2c0 0-6.4 0-6.4 0l134.4-105.6v-144l-166.4-128-131.2 35.2-60.8 172.8c57.6 76.8 137.6 137.6 230.4 169.6zM131.2 160h166.4l48-160c-86.4 32-160 96-214.4 160zM380.8-12.8l-54.4 179.2 73.6 89.6h220.8l80-105.6-54.4-166.4c-41.6-12.8-86.4-16-134.4-16-44.8 0-89.6 6.4-131.2 19.2zM684.8 0l44.8 140.8 150.4-3.2c-51.2-60.8-118.4-108.8-195.2-137.6z" />
154
+ <glyph unicode="&#xe990;" glyph-name="footer" horiz-adv-x="1120" d="M1072 352h-1024c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h1024c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1088-16c0-9.6-6.4-16-16-16h-1024c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-320zM128 432c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 25.6-22.4 48-48 48h-800c-25.6 0-48-22.4-48-48v-480zM816 416c9.6 0 16 6.4 16 16v188.8c0 28.8-19.2 51.2-44.8 51.2h-422.4c-25.6 0-44.8-22.4-44.8-51.2v-188.8c0-9.6 6.4-16 16-16s16 6.4 16 16v188.8c0 9.6 6.4 19.2 12.8 19.2h419.2c6.4 0 12.8-9.6 12.8-19.2v-188.8c3.2-9.6 9.6-16 19.2-16z" />
155
+ <glyph unicode="&#xe991;" glyph-name="form" horiz-adv-x="1216" d="M1168 960h-1120c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h1120c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM1184-16c0-9.6-6.4-16-16-16h-1120c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h1120c9.6 0 16-6.4 16-16v-928zM1008 512h-800c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1024 144c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-320zM1008 800h-800c-25.6 0-48-22.4-48-48v-96c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v96c0 25.6-22.4 48-48 48zM1024 656c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16v96c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-96z" />
156
+ <glyph unicode="&#xe992;" glyph-name="forward" horiz-adv-x="1408" d="M854.4 947.2c-9.6 6.4-19.2 12.8-32 12.8-25.6 0-54.4-19.2-54.4-51.2l9.6-204.8c-48 0-182.4-12.8-329.6-102.4-204.8-124.8-355.2-339.2-444.8-640-3.2-6.4 3.2-16 9.6-19.2 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 12.8 9.6 0 0 48 89.6 166.4 179.2 105.6 80 291.2 176 569.6 179.2v-294.4c0-28.8 28.8-48 54.4-48 12.8 0 22.4 3.2 32 12.8l534.4 454.4c12.8 9.6 19.2 25.6 19.2 38.4s-6.4 25.6-16 35.2l-537.6 438.4zM1366.4 454.4l-534.4-454.4c-3.2-3.2-9.6-3.2-12.8-3.2-9.6 0-22.4 6.4-22.4 16v310.4c0 9.6-6.4 16-16 16-400-3.2-620.8-185.6-716.8-294.4 224 608 668.8 627.2 723.2 627.2 3.2 0 6.4 0 6.4 0 3.2 0 9.6 0 12.8 3.2s6.4 6.4 3.2 12.8l-9.6 224c0 9.6 12.8 16 22.4 16 3.2 0 6.4 0 12.8-3.2l534.4-444.8c3.2-3.2 3.2-6.4 3.2-9.6 3.2-6.4 0-12.8-6.4-16z" />
157
+ <glyph unicode="&#xe993;" glyph-name="fountain-pen" d="M96 217.6c-51.2-51.2-92.8-243.2-96-262.4 0 0 0 0 0 0 0-3.2 0-3.2 0-6.4 0 0 0 0 0-3.2s3.2-3.2 3.2-6.4c0 0 3.2-3.2 6.4-3.2s3.2 0 6.4 0c0 0 3.2 0 3.2 0 22.4 3.2 211.2 44.8 262.4 96 38.4 38.4 48 83.2 38.4 124.8 6.4-3.2 16-6.4 25.6-6.4 12.8 0 25.6 6.4 35.2 12.8l617.6 617.6c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-83.2 83.2c-19.2 19.2-51.2 19.2-67.2 0l-102.4-102.4-41.6 41.6 22.4 22.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-256-256c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l208 208 41.6-41.6-57.6-57.6-438.4-435.2c-9.6-9.6-12.8-22.4-12.8-35.2 0-9.6 3.2-19.2 6.4-25.6-41.6 16-89.6 3.2-124.8-35.2zM870.4 908.8c6.4 6.4 16 6.4 22.4 0l83.2-83.2c3.2-3.2 3.2-6.4 3.2-12.8s-3.2-9.6-3.2-12.8l-176-166.4-102.4 102.4 172.8 172.8zM249.6 291.2l425.6 422.4 105.6-105.6-425.6-422.4c-6.4-6.4-16-6.4-22.4 0l-83.2 83.2c-3.2 3.2-3.2 6.4-3.2 12.8s0 6.4 3.2 9.6zM259.2 195.2c44.8-44.8 44.8-99.2 0-140.8-28.8-28.8-124.8-57.6-195.2-73.6l105.6 105.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-105.6-105.6c16 70.4 44.8 166.4 73.6 195.2 22.4 22.4 44.8 32 70.4 32s54.4-12.8 73.6-35.2z" />
158
+ <glyph unicode="&#xe994;" glyph-name="gender-female" d="M377.6 620.8c0-112 89.6-201.6 201.6-201.6s201.6 89.6 201.6 201.6c0 112-89.6 201.6-201.6 201.6-112-3.2-201.6-92.8-201.6-201.6zM576 787.2c92.8 0 169.6-76.8 169.6-169.6s-76.8-169.6-169.6-169.6-169.6 76.8-169.6 169.6 76.8 169.6 169.6 169.6zM537.6 956.8c-156.8-16-284.8-147.2-300.8-304-16-169.6 83.2-313.6 243.2-358.4v-70.4h-41.6c-41.6 0-76.8-35.2-76.8-80s35.2-80 76.8-80h41.6v-51.2c0-41.6 35.2-76.8 80-76.8s80 35.2 80 76.8v51.2h44.8c41.6 0 76.8 35.2 76.8 80s-35.2 80-76.8 80h-44.8v64c160 28.8 275.2 166.4 275.2 332.8 0 185.6-150.4 339.2-339.2 339.2-12.8 0-25.6 0-38.4-3.2zM883.2 620.8c0-153.6-108.8-281.6-262.4-304-6.4 0-12.8-6.4-12.8-16v-92.8c0-9.6 6.4-16 16-16h60.8c25.6 0 44.8-22.4 44.8-48s-22.4-48-44.8-48h-60.8c-9.6 0-16-6.4-16-16v-67.2c0-25.6-22.4-44.8-48-44.8s-48 22.4-48 44.8v67.2c0 9.6-6.4 16-16 16h-57.6c-25.6 0-44.8 22.4-44.8 48s22.4 48 44.8 48h57.6c9.6 0 16 6.4 16 16v99.2c0 6.4-6.4 12.8-12.8 16-150.4 35.2-246.4 169.6-230.4 329.6 12.8 140.8 131.2 259.2 272 275.2 185.6 19.2 342.4-124.8 342.4-307.2z" />
159
+ <glyph unicode="&#xe995;" glyph-name="gender-male" horiz-adv-x="896" d="M339.2 547.2c-54.4 0-102.4-22.4-140.8-57.6-38.4-41.6-57.6-89.6-57.6-144s22.4-102.4 57.6-140.8c38.4-38.4 89.6-57.6 140.8-57.6 54.4 0 102.4 22.4 140.8 57.6 76.8 76.8 76.8 204.8 0 284.8-35.2 35.2-86.4 57.6-140.8 57.6zM457.6 227.2c-32-32-73.6-48-118.4-48s-86.4 16-118.4 48-48 73.6-48 118.4 16 86.4 48 118.4 73.6 48 118.4 48c44.8 0 86.4-16 118.4-48 67.2-64 67.2-172.8 0-236.8zM339.2 688c-89.6 0-176-35.2-240-102.4-67.2-67.2-105.6-163.2-99.2-262.4s54.4-188.8 134.4-249.6c57.6-44.8 128-67.2 201.6-67.2 80 0 160 28.8 220.8 80 128 108.8 160 281.6 76.8 425.6l118.4 115.2 9.6-9.6c9.6-9.6 22.4-16 35.2-16 22.4 0 41.6 16 48 35.2l51.2 192c3.2 16 0 28.8-9.6 41.6-12.8 16-32 22.4-51.2 16l-185.6-51.2c-16-3.2-28.8-16-35.2-35.2-3.2-16 0-35.2 12.8-44.8l16-16-115.2-112c-57.6 38.4-121.6 60.8-188.8 60.8zM540.8 595.2l137.6 131.2c3.2 3.2 6.4 6.4 6.4 12.8 0 3.2 0 9.6-3.2 12.8l-28.8 28.8c-6.4 6.4-3.2 12.8-3.2 16s3.2 9.6 12.8 12.8l185.6 51.2c6.4 3.2 12.8 0 16-6.4 0-6.4 3.2-9.6 0-19.2l-51.2-192c-3.2-9.6-9.6-12.8-16-12.8-3.2 0-6.4 0-12.8 6.4l-22.4 22.4c-6.4 6.4-16 6.4-22.4 0l-140.8-134.4c-6.4-6.4-6.4-12.8-3.2-19.2 83.2-131.2 54.4-294.4-64-393.6-54.4-48-124.8-73.6-198.4-73.6-67.2 0-131.2 22.4-182.4 60.8-70.4 54.4-115.2 137.6-121.6 224-6.4 89.6 25.6 176 89.6 236.8 60.8 60.8 137.6 92.8 217.6 92.8 64 0 128-22.4 182.4-60.8 6.4-3.2 16-3.2 22.4 3.2z" />
160
+ <glyph unicode="&#xe996;" glyph-name="gender-sign" horiz-adv-x="1344" d="M841.6 675.2c-54.4 0-102.4-22.4-140.8-57.6-38.4-38.4-57.6-89.6-57.6-140.8s22.4-102.4 57.6-140.8c38.4-38.4 89.6-57.6 140.8-57.6s102.4 22.4 140.8 57.6c38.4 38.4 57.6 89.6 57.6 140.8s-22.4 102.4-57.6 140.8c-35.2 35.2-86.4 57.6-140.8 57.6zM960 355.2c-32-32-73.6-48-118.4-48s-86.4 16-118.4 48-48 73.6-48 118.4 16 86.4 48 118.4 73.6 48 118.4 48 86.4-16 118.4-48 48-73.6 48-118.4-16-86.4-48-118.4zM348.8 819.2c-112 0-201.6-89.6-201.6-201.6s89.6-201.6 201.6-201.6 201.6 89.6 201.6 201.6c0 112-89.6 201.6-201.6 201.6zM348.8 451.2c-92.8 0-169.6 76.8-169.6 169.6s76.8 166.4 169.6 166.4 169.6-76.8 169.6-169.6-76.8-166.4-169.6-166.4zM1273.6 950.4l-185.6-51.2c-16-3.2-28.8-16-35.2-35.2-3.2-16 0-35.2 12.8-44.8l16-16-51.2-48c-57.6 38.4-121.6 60.8-188.8 60.8-64 0-128-19.2-182.4-54.4-60.8 131.2-201.6 214.4-348.8 198.4-156.8-19.2-281.6-147.2-297.6-304-16-172.8 83.2-316.8 243.2-361.6v-70.4h-44.8c-41.6 0-76.8-35.2-76.8-80s35.2-80 76.8-80h44.8v-51.2c0-41.6 35.2-76.8 80-76.8s80 35.2 80 76.8v51.2h41.6c41.6 0 76.8 35.2 76.8 80s-35.2 80-76.8 80h-41.6v64c48 6.4 83.2 22.4 118.4 44.8 22.4-51.2 57.6-96 102.4-131.2 57.6-44.8 128-67.2 201.6-67.2 80 0 160 28.8 220.8 80 128 108.8 160 281.6 76.8 425.6l54.4 51.2 9.6-12.8c9.6-9.6 22.4-16 35.2-16 22.4 0 41.6 16 48 35.2l51.2 192c3.2 16 0 28.8-9.6 41.6-12.8 19.2-32 25.6-51.2 19.2zM1251.2 710.4c-3.2-9.6-9.6-12.8-16-12.8-3.2 0-6.4 0-12.8 6.4l-22.4 22.4c-6.4 6.4-16 6.4-22.4 0l-76.8-70.4c-6.4-6.4-6.4-12.8-3.2-19.2 83.2-131.2 54.4-294.4-64-393.6-54.4-48-124.8-73.6-198.4-73.6-67.2 0-131.2 22.4-182.4 60.8-44.8 35.2-80 80-99.2 134.4-3.2 3.2-6.4 9.6-9.6 9.6s-9.6 0-12.8-3.2c-41.6-28.8-73.6-48-134.4-54.4-9.6 0-12.8-6.4-12.8-16v-92.8c0-9.6 6.4-16 16-16h57.6c25.6 0 44.8-22.4 44.8-48s-19.2-48-44.8-48h-57.6c-9.6 0-16-6.4-16-16v-67.2c0-25.6-22.4-44.8-48-44.8s-48 22.4-48 44.8v67.2c0 9.6-6.4 16-16 16h-60.8c-25.6 0-44.8 22.4-44.8 48s19.2 48 44.8 48h60.8c9.6 0 16 6.4 16 16v99.2c0 6.4-6.4 12.8-12.8 16-150.4 35.2-246.4 169.6-230.4 329.6 12.8 144 128 259.2 272 275.2 140.8 16 272-67.2 323.2-195.2 3.2-3.2 6.4-9.6 9.6-9.6s9.6 0 12.8 3.2c54.4 38.4 115.2 60.8 179.2 60.8s128-22.4 179.2-60.8c6.4-3.2 16-3.2 19.2 0l73.6 67.2c6.4 0 6.4 3.2 6.4 9.6 0 3.2 0 9.6-3.2 12.8l-28.8 25.6c-6.4 6.4-3.2 12.8-3.2 16s3.2 9.6 12.8 12.8l185.6 51.2c6.4 3.2 12.8 0 16-6.4 3.2-3.2 3.2-6.4 3.2-12.8l-51.2-192z" />
161
+ <glyph unicode="&#xe997;" glyph-name="gender" d="M96 624v-304c0-9.6 6.4-16 16-16s16 6.4 16 16v304c0 9.6 6.4 16 16 16h256c9.6 0 16-6.4 16-16v-304c0-9.6 6.4-16 16-16s16 6.4 16 16v304c0 25.6-22.4 48-48 48h-256c-25.6 0-48-22.4-48-48zM608 636.8l-86.4-297.6c-3.2-9.6 3.2-16 9.6-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8l86.4 297.6c3.2 6.4 9.6 12.8 16 12.8h208c6.4 0 12.8-3.2 16-12.8l92.8-294.4c3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2l-92.8 294.4c-6.4 19.2-25.6 32-44.8 32h-208c-22.4 0-38.4-12.8-44.8-35.2zM384-16v368c0 9.6-6.4 16-16 16s-16-6.4-16-16v-368c0-9.6-6.4-16-16-16h-48v320c0 9.6-6.4 16-16 16s-16-6.4-16-16v-320h-48c-9.6 0-16 6.4-16 16v368c0 9.6-6.4 16-16 16s-16-6.4-16-16v-368c0-25.6 22.4-48 48-48h128c25.6 0 48 22.4 48 48zM816-64c25.6 0 48 22.4 48 48v240h57.6c6.4 0 9.6 3.2 12.8 6.4s3.2 9.6 3.2 12.8l-32 121.6c-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-9.6-9.6-19.2l28.8-102.4h-54.4c-9.6 0-16-6.4-16-16v-256c0-9.6-6.4-16-16-16h-51.2v288c0 9.6-6.4 16-16 16s-16-3.2-16-12.8v-288h-48c-9.6 0-16 6.4-16 16v256c0 9.6-6.4 16-16 16h-44.8l28.8 108.8c3.2 9.6-3.2 16-12.8 19.2s-16-3.2-19.2-12.8l-32-128c0-3.2 0-9.6 3.2-12.8s6.4-6.4 12.8-6.4h48v-240c0-25.6 22.4-48 48-48h128zM374.4 848c0 60.8-51.2 112-112 112s-112-51.2-112-112 51.2-112 112-112 112 51.2 112 112zM182.4 848c0 44.8 35.2 80 80 80s80-35.2 80-80-35.2-80-80-80-80 35.2-80 80zM755.2 736c60.8 0 112 51.2 112 112s-48 112-112 112-112-51.2-112-112 51.2-112 112-112zM755.2 928c44.8 0 80-35.2 80-80s-35.2-80-80-80-80 35.2-80 80 38.4 80 80 80z" />
162
+ <glyph unicode="&#xe998;" glyph-name="ghost" horiz-adv-x="896" d="M800-64c54.4 0 96 44.8 96 96v476.8c0 256-211.2 464-470.4 451.2-240-12.8-425.6-214.4-425.6-464v-464c0-54.4 41.6-96 96-96s96 44.8 96 96v35.2c0 44.8 35.2 80 80 80s80-35.2 80-80v-35.2c0-54.4 41.6-96 96-96s96 44.8 96 96v35.2c0 44.8 35.2 80 80 80s80-35.2 80-80v-35.2c0-51.2 41.6-96 96-96zM624 179.2c-60.8 0-112-51.2-112-112v-35.2c0-35.2-28.8-64-64-64s-64 28.8-64 64v35.2c0 60.8-51.2 112-112 112s-112-51.2-112-112v-35.2c0-35.2-28.8-64-64-64s-64 28.8-64 64v464c0 233.6 172.8 422.4 396.8 432 240 9.6 435.2-182.4 435.2-419.2v-476.8c0-35.2-28.8-64-64-64s-64 28.8-64 64v35.2c0 60.8-51.2 112-112 112zM656 435.2c-51.2-60.8-128-96-208-96s-156.8 35.2-208 96c-6.4 6.4-16 6.4-22.4 3.2-6.4-6.4-6.4-16-3.2-22.4 57.6-70.4 140.8-108.8 230.4-108.8s172.8 38.4 230.4 108.8c6.4 6.4 3.2 16-3.2 22.4 0 3.2-12.8 3.2-16-3.2zM332.8 540.8c35.2 0 64 28.8 64 64s-28.8 64-64 64c-35.2 0-64-28.8-64-64s28.8-64 64-64zM332.8 636.8c16 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM550.4 540.8c35.2 0 64 28.8 64 64s-28.8 64-64 64c-35.2 0-64-28.8-64-64s28.8-64 64-64zM550.4 636.8c16 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32z" />
163
+ <glyph unicode="&#xe999;" glyph-name="gift-box" d="M976 736h-297.6c16 0 28.8 19.2 41.6 32 44.8 38.4 73.6 86.4 73.6 128 0 19.2-6.4 38.4-22.4 48-38.4 35.2-128 12.8-195.2-44.8-25.6-22.4-44.8-44.8-57.6-70.4-12.8 22.4-32 48-57.6 70.4-67.2 57.6-156.8 80-195.2 44.8-9.6-12.8-16-28.8-16-51.2 0-38.4 25.6-86.4 73.6-128 12.8-12.8 28.8-32 41.6-32h-316.8c-25.6 3.2-48-19.2-48-44.8v-128c0-25.6 22.4-48 48-48h16v-528c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v528h16c25.6 0 48 22.4 48 48v128c0 25.6-22.4 48-48 48zM598.4 873.6c38.4 32 83.2 54.4 121.6 54.4 12.8 0 25.6-3.2 32-9.6s9.6-16 9.6-25.6c0-28.8-25.6-70.4-60.8-102.4-38.4-32-83.2-54.4-121.6-54.4-12.8 0-25.6 3.2-32 9.6s-9.6 16-9.6 25.6c0 28.8 22.4 70.4 60.8 102.4zM480 704h64v-736h-64v736zM342.4 790.4c-38.4 32-60.8 73.6-60.8 102.4 0 9.6 3.2 19.2 9.6 25.6s19.2 9.6 32 9.6c35.2 0 83.2-22.4 121.6-54.4s60.8-73.6 60.8-102.4c0-9.6-3.2-19.2-9.6-25.6s-19.2-9.6-32-9.6c-38.4 0-83.2 22.4-121.6 54.4zM96-16v528h272c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16 6.4-16 16v128c0 9.6 6.4 16 16 16h400v-736h-336c-9.6 0-16 6.4-16 16zM992 560c0-9.6-6.4-16-16-16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h272v-528c0-9.6-6.4-16-16-16h-336v736h400c9.6 0 16-6.4 16-16v-128z" />
164
+ <glyph unicode="&#xe99a;" glyph-name="globe1" d="M41.6-64c64 0 192 89.6 316.8 195.2 48-22.4 99.2-35.2 153.6-35.2 195.2 0 352 156.8 352 352 0 54.4-12.8 108.8-35.2 153.6 38.4 44.8 70.4 86.4 99.2 128 115.2 160 102.4 201.6 86.4 220.8-12.8 9.6-48 44.8-262.4-118.4-6.4-6.4-9.6-16-3.2-22.4s16-9.6 22.4-3.2c156.8 121.6 211.2 128 217.6 118.4 0 0 19.2-28.8-89.6-179.2-25.6-35.2-57.6-73.6-89.6-115.2-60.8 102.4-169.6 169.6-297.6 169.6-195.2 0-352-156.8-352-352 0-128 67.2-236.8 166.4-300.8-169.6-140.8-278.4-195.2-294.4-179.2-6.4 6.4 0 60.8 115.2 214.4 6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2c-160-208-124.8-246.4-112-256 9.6-6.4 19.2-9.6 32-9.6zM832 448c0-176-144-320-320-320-44.8 0-89.6 9.6-128 25.6 80 70.4 160 144 217.6 201.6 73.6 73.6 144 147.2 201.6 217.6 19.2-35.2 28.8-80 28.8-124.8zM192 448c0 176 144 320 320 320 118.4 0 224-64 278.4-160-60.8-73.6-131.2-150.4-211.2-227.2-83.2-83.2-160-153.6-227.2-211.2-96 54.4-160 160-160 278.4z" />
165
+ <glyph unicode="&#xe99b;" glyph-name="globe2" d="M406.4 822.4c-182.4 128-320 169.6-380.8 112-16-16-25.6-41.6-25.6-70.4 0-60.8 32-144 89.6-240-41.6-67.2-67.2-144-67.2-230.4 0-236.8 195.2-432 432-432 83.2 0 163.2 25.6 230.4 67.2 92.8-57.6 179.2-92.8 240-92.8 28.8 0 54.4 6.4 70.4 25.6 57.6 57.6 19.2 198.4-108.8 380.8 0 0 0 0-3.2 3.2 3.2 16 3.2 35.2 3.2 51.2 0 236.8-195.2 432-432 432-16-3.2-32-3.2-48-6.4zM32 864c0 22.4 6.4 38.4 16 48 41.6 41.6 163.2 3.2 310.4-96-99.2-22.4-188.8-83.2-246.4-163.2-51.2 83.2-80 156.8-80 211.2zM457.6-6.4c-220.8 0-400 179.2-400 400 0 73.6 19.2 140.8 54.4 198.4 60.8-92.8 147.2-198.4 246.4-297.6 96-96 201.6-182.4 300.8-246.4-64-32-131.2-54.4-201.6-54.4zM976-16c-35.2-35.2-134.4-12.8-262.4 64 83.2 60.8 140.8 150.4 163.2 252.8 102.4-153.6 140.8-275.2 99.2-316.8zM857.6 393.6c0-134.4-67.2-256-172.8-329.6-92.8 57.6-198.4 144-307.2 252.8-102.4 102.4-188.8 208-249.6 304 73.6 102.4 192 172.8 326.4 172.8 224 0 403.2-179.2 403.2-400zM387.2 598.4c0-44.8 35.2-80 80-80s80 35.2 80 80-35.2 80-80 80-80-35.2-80-80zM467.2 646.4c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 22.4-48 48 19.2 48 48 48zM604.8 233.6c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64zM604.8 329.6c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32zM160 428.8c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM160 332.8c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-16-32-32-32z" />
166
+ <glyph unicode="&#xe99c;" glyph-name="globe3" d="M0 425.6c12.8-272 236.8-489.6 512-489.6s499.2 217.6 512 489.6c0 3.2 0 3.2 0 6.4 0 0 0 3.2 0 3.2 0 3.2 0 9.6 0 12.8 0 281.6-230.4 512-512 512s-512-230.4-512-512c0-3.2 0-9.6 0-12.8 0 0 0-3.2 0-3.2 0-3.2 0-3.2 0-6.4zM796.8 233.6c-41.6 19.2-86.4 32-134.4 41.6 6.4 48 9.6 96 9.6 144h160c-3.2-70.4-16-131.2-35.2-185.6zM864 416h128c-6.4-89.6-35.2-172.8-86.4-243.2-25.6 16-51.2 32-80 44.8 22.4 60.8 35.2 128 38.4 198.4zM396.8 246.4c38.4 6.4 76.8 9.6 115.2 9.6s76.8-3.2 115.2-9.6c-22.4-169.6-70.4-278.4-115.2-278.4s-92.8 108.8-115.2 278.4zM444.8-22.4c-89.6 28.8-163.2 112-208 224 38.4 16 83.2 28.8 128 38.4 16-112 41.6-208 80-262.4zM393.6 617.6c38.4-6.4 80-9.6 118.4-9.6 41.6 0 80 3.2 118.4 9.6 6.4-51.2 9.6-108.8 9.6-169.6h-256c0 60.8 3.2 118.4 9.6 169.6zM640 416c0-48-3.2-96-9.6-137.6-38.4 6.4-76.8 9.6-118.4 9.6s-80-3.2-118.4-9.6c-6.4 41.6-9.6 89.6-9.6 137.6h256zM659.2 240c44.8-9.6 86.4-22.4 128-38.4-44.8-112-118.4-195.2-208-224 38.4 54.4 64 150.4 80 262.4zM672 448c0 57.6-3.2 118.4-9.6 176 48 9.6 92.8 22.4 134.4 41.6 22.4-64 35.2-137.6 35.2-214.4h-160zM659.2 656c-16 112-41.6 208-80 262.4 89.6-28.8 163.2-112 208-224-41.6-16-83.2-32-128-38.4zM627.2 649.6c-38.4-6.4-76.8-9.6-115.2-9.6s-76.8 3.2-115.2 9.6c22.4 169.6 70.4 278.4 115.2 278.4s92.8-108.8 115.2-278.4zM364.8 656c-44.8 9.6-86.4 22.4-128 38.4 44.8 112 118.4 195.2 208 224-38.4-54.4-64-150.4-80-262.4zM361.6 624c-6.4-57.6-9.6-118.4-9.6-176h-160c0 76.8 12.8 150.4 35.2 214.4 41.6-16 86.4-28.8 134.4-38.4zM352 416c0-48 3.2-96 9.6-144-48-9.6-92.8-22.4-134.4-41.6-19.2 54.4-32 118.4-32 182.4h156.8zM198.4 220.8c-28.8-12.8-54.4-28.8-80-44.8-48 70.4-80 153.6-86.4 243.2h128c3.2-73.6 16-140.8 38.4-198.4zM137.6 147.2c22.4 16 44.8 28.8 70.4 41.6 32-80 76.8-144 134.4-188.8-80 28.8-150.4 83.2-204.8 147.2zM681.6 0c54.4 44.8 102.4 112 134.4 188.8 25.6-12.8 48-25.6 70.4-41.6-54.4-64-124.8-118.4-204.8-147.2zM864 448c0 83.2-12.8 160-38.4 227.2 28.8 12.8 54.4 28.8 80 44.8 54.4-76.8 86.4-169.6 86.4-272h-128zM886.4 748.8c-22.4-16-44.8-28.8-70.4-41.6-32 80-76.8 144-134.4 188.8 80-28.8 150.4-83.2 204.8-147.2zM342.4 896c-54.4-44.8-102.4-108.8-134.4-188.8-25.6 12.8-48 25.6-70.4 41.6 54.4 64 124.8 118.4 204.8 147.2zM118.4 723.2c25.6-16 51.2-32 80-44.8-25.6-70.4-38.4-147.2-38.4-230.4h-128c0 102.4 32 195.2 86.4 275.2z" />
167
+ <glyph unicode="&#xe99d;" glyph-name="globe4" d="M912 518.4c0 147.2-73.6 281.6-192 361.6l32 54.4c3.2 6.4 3.2 16-6.4 22.4s-19.2 3.2-22.4-3.2l-32-54.4c-19.2 12.8-41.6 22.4-64 28.8-9.6 3.2-16 0-19.2-9.6s0-16 9.6-19.2c19.2-6.4 38.4-16 57.6-28.8l-35.2-60.8c-48 28.8-105.6 44.8-166.4 44.8-185.6 0-336-150.4-336-336 0-115.2 57.6-217.6 147.2-278.4l-35.2-60.8c-12.8 9.6-28.8 19.2-41.6 32-6.4 6.4-16 6.4-22.4-3.2s-3.2-16 3.2-22.4c16-12.8 28.8-22.4 44.8-35.2l-28.8-48c-3.2-6.4-3.2-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l28.8 48c57.6-32 121.6-51.2 185.6-54.4v-112h-96c-9.6 0-16-6.4-16-16s9.6-16 19.2-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96v112c240 3.2 432 198.4 432 438.4zM169.6 518.4c0 166.4 137.6 304 304 304s304-137.6 304-304-137.6-304-304-304c-57.6 0-112 16-160 44.8 0 0 0 0 0 0s0 0 0 0c-86.4 54.4-144 150.4-144 259.2zM313.6 224c48-25.6 102.4-41.6 163.2-41.6 185.6 0 336 150.4 336 336 0 112-57.6 214.4-144 275.2l35.2 60.8c108.8-73.6 176-198.4 176-336 0-224-182.4-406.4-406.4-406.4-70.4 0-137.6 19.2-195.2 51.2l35.2 60.8z" />
168
+ <glyph unicode="&#xe99e;" glyph-name="google" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM416 156.8c89.6 0 160 54.4 160 118.4 0 32-19.2 64-48 86.4 0 3.2-3.2 6.4-6.4 6.4-25.6 19.2-41.6 38.4-44.8 57.6-3.2 22.4 9.6 38.4 9.6 38.4 0 3.2 3.2 3.2 3.2 6.4 32 19.2 54.4 54.4 54.4 92.8 0 28.8-12.8 44.8-35.2 76.8h51.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-137.6c0 0 0 0-3.2 0s-3.2 0-6.4 0c-70.4 0-128-48-128-108.8s57.6-108.8 128-108.8c9.6 0 19.2 0 28.8 3.2-3.2-9.6-3.2-19.2-3.2-32 0-9.6 6.4-22.4 12.8-32-12.8 3.2-25.6 3.2-38.4 3.2-89.6 0-160-54.4-160-118.4s76.8-121.6 163.2-121.6zM416 486.4c-51.2 0-96 35.2-96 76.8s41.6 76.8 96 76.8 96-35.2 96-76.8-44.8-76.8-96-76.8zM416 358.4c70.4 0 124.8-38.4 124.8-83.2s-54.4-83.2-124.8-83.2-124.8 38.4-124.8 83.2 57.6 83.2 124.8 83.2zM627.2 544h76.8v-76.8c0-9.6 6.4-16 16-16s16 6.4 16 16v76.8h73.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-73.6v76.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-76.8h-76.8c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
169
+ <glyph unicode="&#xe99f;" glyph-name="graduate-cap" horiz-adv-x="1184" d="M1155.2 729.6l-518.4 220.8c-28.8 9.6-60.8 9.6-89.6 0l-518.4-220.8c-16-6.4-28.8-22.4-28.8-44.8 0-19.2 9.6-35.2 28.8-44.8l54.4-25.6c-3.2-3.2-3.2-6.4-3.2-9.6v-288c0 0 0 0 0 0-38.4-6.4-67.2-38.4-67.2-80 0-35.2 22.4-64 54.4-76.8l-54.4-128c-9.6-19.2-6.4-41.6 6.4-60.8 12.8-22.4 38.4-35.2 67.2-35.2h9.6c25.6 3.2 48 16 60.8 35.2 9.6 16 12.8 38.4 6.4 57.6l-48 134.4c35.2 9.6 60.8 38.4 60.8 76.8s-25.6 70.4-60.8 76.8c0 0 0 0 0 0v284.8l128-57.6v-224c3.2-73.6 185.6-108.8 368-108.8s364.8 38.4 368 108.8v0 243.2l179.2 80c16 6.4 25.6 22.4 25.6 44.8 0 19.2-12.8 35.2-28.8 41.6zM128-9.6c-6.4-12.8-22.4-19.2-38.4-22.4h-6.4c-16 0-32 6.4-41.6 19.2-6.4 9.6-6.4 19.2-3.2 32l48 115.2 41.6-115.2c9.6-9.6 6.4-22.4 0-28.8zM140.8 240c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48c28.8 0 48-19.2 48-48zM944 371.2c-60.8 41.6-198.4 64-336 64s-275.2-22.4-336-64v233.6c0 35.2 102.4 83.2 329.6 83.2 224 0 342.4-51.2 342.4-86.4v-230.4zM608 243.2c-204.8 0-336 48-336 80s131.2 80 336 80 336-48 336-80-131.2-80-336-80zM1142.4 672l-166.4-73.6v6.4c0 70.4-153.6 118.4-374.4 118.4-217.6 0-361.6-44.8-361.6-115.2v-22.4l-198.4 86.4c-9.6 3.2-9.6 12.8-9.6 12.8s0 9.6 9.6 16l518.4 217.6c19.2 9.6 41.6 9.6 64 0l518.4-217.6c9.6-3.2 9.6-12.8 9.6-16 0 0 0-9.6-9.6-12.8z" />
170
+ <glyph unicode="&#xe9a0;" glyph-name="graph-bar" horiz-adv-x="1280" d="M16-64h1248c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96v752c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-752h-96v944c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-944h-96v496c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-496h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16zM912 720c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-752h-224v752zM528 912c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-944h-224v944zM144 464c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-496h-224v496z" />
171
+ <glyph unicode="&#xe9a1;" glyph-name="graph-pie" d="M326.4-28.8c60.8-25.6 124.8-35.2 185.6-35.2 256 0 489.6 211.2 508.8 464 0 12.8-3.2 25.6-12.8 35.2s-22.4 12.8-35.2 12.8h-6.4c0 256-198.4 454.4-454.4 454.4v9.6c0 25.6-19.2 48-48 48 0 0-3.2 0-3.2 0-144-12.8-284.8-99.2-371.2-230.4-86.4-128-112-278.4-70.4-425.6 44.8-150.4 160-275.2 307.2-332.8zM934.4 448h-403.2c-9.6 0-19.2 9.6-19.2 19.2v403.2c224 0 422.4-198.4 422.4-422.4zM115.2 710.4c83.2 121.6 214.4 201.6 352 214.4 6.4 3.2 12.8-6.4 12.8-12.8v-444.8c0-25.6 25.6-51.2 51.2-51.2h444.8c3.2 0 9.6 0 12.8-3.2s3.2-6.4 3.2-12.8c-19.2-236.8-240-435.2-476.8-435.2-57.6 0-118.4 12.8-176 35.2-137.6 54.4-246.4 172.8-288 313.6-41.6 134.4-19.2 278.4 64 396.8z" />
172
+ <glyph unicode="&#xe9a2;" glyph-name="graph" horiz-adv-x="1344" d="M1248 956.8c-54.4 0-96-44.8-96-96 0-28.8 12.8-54.4 32-70.4l-288-441.6c-12.8 9.6-28.8 12.8-48 12.8-32 0-60.8-16-80-41.6l-265.6 192c3.2 9.6 3.2 19.2 3.2 28.8 0 54.4-44.8 96-96 96s-96-44.8-96-96c0-35.2 19.2-64 44.8-80l-224-336c-9.6 3.2-22.4 6.4-38.4 6.4-54.4 0-96-44.8-96-96 0-54.4 44.8-96 96-96s96 44.8 96 96c0 28.8-12.8 54.4-32 70.4l224 339.2c6.4-3.2 16-3.2 22.4-3.2 32 0 60.8 16 76.8 38.4l268.8-188.8c-3.2-9.6-3.2-19.2-3.2-28.8 0-54.4 44.8-96 96-96s96 44.8 96 96c0 25.6-9.6 48-25.6 64l284.8 441.6c19.2 0 32-3.2 48-3.2 54.4 0 96 44.8 96 96 0 54.4-44.8 96-96 96zM96-28.8c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM409.6 473.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM851.2 201.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM1248 796.8c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
173
+ <glyph unicode="&#xe9a3;" glyph-name="grid-even" d="M966.4 960h-908.8c-32 0-57.6-25.6-57.6-57.6v-908.8c0-32 25.6-57.6 57.6-57.6h908.8c32 0 57.6 25.6 57.6 57.6v908.8c0 32-25.6 57.6-57.6 57.6zM32 608h288v-320h-288v320zM352 608h320v-320h-320v320zM704 608h288v-320h-288v320zM966.4 928c12.8 0 25.6-12.8 25.6-25.6v-262.4h-288v288h262.4zM672 928v-288h-320v288h320zM32 902.4c0 12.8 12.8 25.6 25.6 25.6h262.4v-288h-288v262.4zM57.6-32c-12.8 0-25.6 12.8-25.6 25.6v262.4h288v-288h-262.4zM352-32v288h320v-288h-320zM992-6.4c0-12.8-12.8-25.6-25.6-25.6h-262.4v288h288v-262.4z" />
174
+ <glyph unicode="&#xe9a4;" glyph-name="grid-masonry" d="M966.4 960h-908.8c-32 0-57.6-25.6-57.6-57.6v-908.8c0-32 25.6-57.6 57.6-57.6h908.8c32 0 57.6 25.6 57.6 57.6v908.8c0 32-25.6 57.6-57.6 57.6zM672 928v-480h-320v480h320zM57.6-32c-12.8 0-25.6 12.8-25.6 25.6v908.8c0 12.8 12.8 25.6 25.6 25.6h262.4v-960h-262.4zM352-32v448h320v-448h-320zM992-6.4c0-12.8-12.8-25.6-25.6-25.6h-262.4v960h262.4c12.8 0 25.6-12.8 25.6-25.6v-908.8z" />
175
+ <glyph unicode="&#xe9a5;" glyph-name="grid-twist" d="M966.4 960h-908.8c-32 0-57.6-25.6-57.6-57.6v-908.8c0-32 25.6-57.6 57.6-57.6h908.8c32 0 57.6 25.6 57.6 57.6v908.8c0 32-25.6 57.6-57.6 57.6zM659.2-32h-294.4c19.2 96 19.2 192 6.4 284.8 35.2 3.2 70.4 9.6 102.4 16 60.8 9.6 124.8 19.2 185.6 25.6 19.2-108.8 25.6-220.8 0-326.4zM473.6 300.8c-35.2-6.4-67.2-9.6-102.4-16-6.4 41.6-12.8 86.4-19.2 128-9.6 54.4-16 105.6-22.4 160 48 6.4 99.2 12.8 147.2 22.4 48 6.4 96 16 144 19.2 6.4-70.4 16-137.6 25.6-208 3.2-28.8 9.6-54.4 12.8-83.2-64-3.2-124.8-12.8-185.6-22.4zM32 579.2c51.2-9.6 102.4-16 153.6-16 38.4 0 73.6 3.2 112 6.4 6.4-54.4 12.8-108.8 22.4-163.2 6.4-41.6 12.8-83.2 19.2-128-102.4-9.6-208-12.8-307.2 9.6v291.2zM358.4 928h291.2c-32-92.8-38.4-188.8-32-281.6-48-6.4-96-12.8-144-19.2s-96-16-147.2-19.2c-9.6 105.6-6.4 214.4 32 320zM678.4 412.8c-9.6 67.2-22.4 137.6-25.6 204.8 115.2 9.6 227.2 9.6 339.2-28.8v-291.2c-99.2 32-201.6 38.4-300.8 32-3.2 25.6-9.6 54.4-12.8 83.2zM992 902.4v-278.4c-115.2 38.4-230.4 38.4-342.4 28.8-3.2 92.8 3.2 185.6 35.2 278.4h281.6c12.8-3.2 25.6-16 25.6-28.8zM57.6 928h265.6c-35.2-108.8-38.4-217.6-28.8-326.4-89.6-9.6-176-9.6-262.4 9.6v288c0 16 12.8 28.8 25.6 28.8zM32-6.4v262.4c51.2-9.6 102.4-16 153.6-16s102.4 3.2 156.8 9.6c9.6-92.8 12.8-188.8-9.6-281.6h-275.2c-12.8 0-25.6 12.8-25.6 25.6zM966.4-32h-275.2c22.4 108.8 16 220.8 3.2 329.6 99.2 6.4 198.4 0 297.6-32v-268.8c0-16-12.8-28.8-25.6-28.8z" />
176
+ <glyph unicode="&#xe9a6;" glyph-name="grid" d="M256 912c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM224 752c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM640 912c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM608 752c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM1024 912c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM992 752c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM256 528c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM224 368c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM640 528c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM608 368c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM1024 528c0 25.6-22.4 48-48 48h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160zM992 368c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM208 192h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM224-16c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM592 192h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM608-16c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160zM976 192h-160c-25.6 0-48-22.4-48-48v-160c0-25.6 22.4-48 48-48h160c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM992-16c0-9.6-6.4-16-16-16h-160c-9.6 0-16 6.4-16 16v160c0 9.6 6.4 16 16 16h160c9.6 0 16-6.4 16-16v-160z" />
177
+ <glyph unicode="&#xe9a7;" glyph-name="group" horiz-adv-x="1280" d="M201.6 128c89.6 25.6 153.6 99.2 185.6 160h28.8c9.6 0 16 6.4 16 16 0 102.4-60.8 169.6-64 172.8s-9.6 6.4-16 6.4c0 0-22.4-3.2-32 28.8-3.2 6.4-3.2 9.6-6.4 16-6.4 22.4-25.6 73.6-9.6 80 6.4 3.2 12.8 12.8 9.6 19.2-6.4 25.6-22.4 140.8 35.2 220.8 38.4 51.2 96 76.8 176 80 3.2 0 179.2 0 182.4-99.2 0-6.4 3.2-12.8 9.6-12.8 3.2 0 83.2-41.6 32-172.8-3.2-3.2 0-9.6 0-12.8 19.2-28.8 0-83.2-6.4-102.4-3.2-6.4-9.6-25.6-22.4-32-3.2-3.2-6.4-3.2-9.6 0-6.4 3.2-12.8 0-16-3.2-80-80-60.8-182.4-57.6-188.8 0-6.4 9.6-12.8 16-12.8h41.6c41.6-80 108.8-137.6 179.2-160l12.8-3.2c83.2-25.6 150.4-41.6 150.4-172.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 153.6-86.4 179.2-172.8 204.8h-12.8c-99.2 28.8-150.4 124.8-166.4 150.4-3.2 6.4-9.6 9.6-12.8 9.6h-38.4c-3.2 25.6-3.2 89.6 44.8 140.8 9.6 0 16 0 25.6 3.2 25.6 12.8 38.4 44.8 38.4 48s32 73.6 9.6 121.6c48 128-16 185.6-41.6 201.6-12.8 124.8-208 124.8-217.6 124.8-89.6-3.2-156.8-35.2-201.6-92.8-60.8-83.2-54.4-192-44.8-236.8-28.8-22.4-9.6-76.8 3.2-112 3.2-6.4 6.4-12.8 6.4-16 12.8-38.4 38.4-51.2 57.6-51.2 12.8-16 44.8-64 51.2-131.2h-19.2c-6.4 0-12.8-3.2-12.8-9.6-25.6-54.4-89.6-128-172.8-150.4l-16-3.2c-86.4-25.6-176-54.4-176-204.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 128 67.2 147.2 153.6 172.8l16 3.2zM1155.2 160c-19.2 12.8-41.6 22.4-64 28.8-19.2 6.4-35.2 12.8-48 22.4-22.4 12.8-54.4 44.8-25.6 108.8 16 3.2 28.8 19.2 41.6 44.8 16 32 25.6 73.6 6.4 92.8 3.2 76.8-16 134.4-57.6 176-54.4 57.6-128 57.6-131.2 57.6-9.6 0-16-6.4-16-16s6.4-16 16-16c0 0 64 0 108.8-48 35.2-35.2 51.2-89.6 48-160 0-6.4 3.2-9.6 6.4-12.8s3.2-9.6 3.2-22.4c-3.2-32-25.6-60.8-32-64-6.4 3.2-12.8 0-16-3.2-3.2 0-3.2-3.2-6.4-6.4-28.8-67.2-16-124.8 35.2-156.8 16-9.6 35.2-16 54.4-25.6 19.2-6.4 41.6-16 60.8-25.6 96-60.8 108.8-179.2 108.8-182.4 0-9.6 6.4-12.8 16-12.8 0 0 0 0 3.2 0 9.6 0 16 9.6 12.8 16 0 3.2-16 134.4-124.8 204.8z" />
178
+ <glyph unicode="&#xe9a8;" glyph-name="hand-mike" horiz-adv-x="1216" d="M208 256h48c0 0 9.6 0 9.6 0 64 3.2 396.8 9.6 598.4-179.2 0 0 0 0 0 0 3.2-3.2 6.4-6.4 9.6-9.6 0 0 0 0 0 0 32-28.8 67.2-44.8 105.6-44.8 134.4 0 236.8 201.6 236.8 470.4 0 265.6-102.4 467.2-236.8 467.2-35.2 0-70.4-16-102.4-41.6-268.8-233.6-604.8-246.4-608-246.4h-60.8c-118.4 0-208-83.2-208-198.4v-6.4c0-115.2 96-211.2 208-211.2zM1184 489.6c0-243.2-92.8-438.4-204.8-438.4-115.2 0-211.2 201.6-211.2 438.4s96 438.4 211.2 438.4c112 0 204.8-195.2 204.8-438.4zM272 640c3.2 0 278.4 9.6 537.6 182.4-44.8-83.2-73.6-201.6-73.6-332.8 0-128 25.6-243.2 67.2-326.4-204.8 134.4-473.6 128-534.4 124.8h-32c-12.8 41.6-48 192 0 352h35.2zM32 473.6c0 92.8 73.6 163.2 169.6 163.2-44.8-153.6-16-297.6 0-352-92.8 6.4-169.6 86.4-169.6 182.4v6.4zM816 608h-16c-9.6 0-16-6.4-16-16s6.4-16 16-16h16c44.8 0 80-32 80-76.8s-35.2-83.2-80-83.2h-16c-9.6 0-16-6.4-16-16s6.4-16 16-16h16c60.8 0 112 51.2 112 115.2 0 60.8-48 108.8-112 108.8zM272 208c-9.6 0-16-6.4-16-16v-128c0-70.4 57.6-128 128-128s128 57.6 128 128v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-54.4-41.6-96-96-96s-96 44.8-96 96v128c0 9.6-6.4 16-16 16z" />
179
+ <glyph unicode="&#xe9a9;" glyph-name="hand-watch" horiz-adv-x="608" d="M0 448c0-166.4 137.6-304 304-304s304 134.4 304 304-137.6 304-304 304-304-137.6-304-304zM304 720c150.4 0 272-121.6 272-272s-121.6-272-272-272-272 121.6-272 272 121.6 272 272 272zM160 144c-9.6 0-16-6.4-16-16v-32c0-89.6 70.4-160 160-160s160 73.6 160 160c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-70.4-57.6-128-128-128s-128 57.6-128 128v32c0 9.6-6.4 16-16 16zM448 761.6c9.6 0 16 6.4 16 16v19.2c0 89.6-70.4 163.2-160 163.2s-160-70.4-160-156.8v-32c0-9.6 6.4-16 16-16s16 3.2 16 12.8v32c0 70.4 57.6 124.8 128 124.8s128-57.6 128-131.2v-19.2c0-6.4 6.4-12.8 16-12.8zM297.6 425.6l112-54.4c3.2 0 3.2-3.2 6.4-3.2 6.4 0 12.8 3.2 12.8 9.6 3.2 6.4 0 16-6.4 22.4l-112 54.4c-6.4 3.2-9.6 9.6-9.6 12.8v140.8c0 9.6-6.4 16-16 16s-12.8-6.4-12.8-16v-140.8c0-19.2 9.6-35.2 25.6-41.6z" />
180
+ <glyph unicode="&#xe9aa;" glyph-name="hand" horiz-adv-x="768" d="M9.6 361.6l140.8-259.2c3.2-3.2 73.6-166.4 339.2-166.4 259.2 0 278.4 278.4 278.4 281.6v496c0 44.8-35.2 83.2-80 83.2-19.2 0-48-6.4-48-19.2v48c0 44.8-38.4 83.2-83.2 83.2-16 0-35.2-6.4-48-16-6.4 38.4-38.4 67.2-76.8 67.2 0 0 0 0 0 0s0 0 0 0c-44.8 0-80-38.4-80-83.2v0c-12.8 9.6-32 19.2-48 19.2 0 0 0 0 0 0s-32-3.2-54.4-22.4c-16-16-25.6-41.6-25.6-70.4v-355.2c0-9.6 6.4-16 16-16s16 6.4 16 16v355.2c0 19.2 3.2 32 12.8 41.6 12.8 12.8 28.8 9.6 32 9.6 28.8 0 51.2-22.4 51.2-51.2v-291.2c0-9.6 6.4-16 16-16s16 6.4 16 16v364.8c0 28.8 19.2 51.2 48 51.2 25.6 0 48-22.4 48-51.2v-396.8c0-9.6 6.4-16 16-16s16 6.4 16 16v345.6c0 28.8 19.2 51.2 44.8 51.2s51.2-22.4 51.2-51.2v-300.8c0-9.6 6.4-16 16-16s16 6.4 16 16v188.8c0 0-3.2 0-3.2 0 0 28.8 22.4 51.2 48 51.2s51.2-22.4 51.2-51.2v-496c0-9.6-19.2-249.6-246.4-249.6-240 0-307.2 144-310.4 150.4l-140.8 259.2c0 0-19.2 44.8 6.4 67.2 12.8 12.8 25.6 16 35.2 16 16 0 28.8-16 28.8-16l131.2-172.8c6.4-6.4 16-9.6 22.4-3.2s9.6 16 3.2 22.4l-131.2 172.8c0 0-22.4 25.6-51.2 28.8-22.4 0-41.6-6.4-60.8-25.6-41.6-38.4-16-99.2-12.8-105.6z" />
181
+ <glyph unicode="&#xe9ab;" glyph-name="header" horiz-adv-x="1120" d="M1072 960h-1024c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h1024c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1088 592c0-9.6-6.4-16-16-16h-1024c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-320zM144 496c-9.6 0-16-6.4-16-16v-496c0-25.6 22.4-48 48-48h768c25.6 0 48 22.4 48 48v464c0 9.6-6.4 16-16 16s-16-6.4-16-16v-464c0-9.6-6.4-16-16-16h-768c-9.6 0-16 6.4-16 16v496c0 9.6-6.4 16-16 16zM304 496c-9.6 0-16-6.4-16-16v-176c0-25.6 22.4-48 48-48h448c25.6 0 48 22.4 48 48v144c0 9.6-6.4 16-16 16s-16-6.4-16-16v-144c0-9.6-6.4-16-16-16h-448c-9.6 0-16 6.4-16 16v176c0 9.6-6.4 16-16 16z" />
182
+ <glyph unicode="&#xe9ac;" glyph-name="headphone" horiz-adv-x="1184" d="M16 16c9.6 0 16 6.4 16 16v128h32v-96c0-70.4 57.6-128 128-128s128 57.6 128 128v224c0 70.4-57.6 128-128 128s-128-57.6-128-128v-96h-32v176c0 304 265.6 560 576 560 304 0 544-246.4 544-560v-176h-32v96c0 70.4-57.6 128-128 128s-128-57.6-128-128v-224c0-70.4 57.6-128 128-128s128 57.6 128 128v96h32v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v304c0 329.6-249.6 592-572.8 592 0 0 0 0 0 0h-3.2c0 0 0 0 0 0-329.6 0-608-272-608-592v-336c0-9.6 6.4-16 16-16zM96 288c0 54.4 41.6 96 96 96s96-41.6 96-96v-224c0-54.4-41.6-96-96-96s-96 41.6-96 96v224zM1088 64c0-54.4-41.6-96-96-96s-96 41.6-96 96v224c0 54.4 41.6 96 96 96s96-41.6 96-96v-224z" />
183
+ <glyph unicode="&#xe9ad;" glyph-name="headset" d="M144 176c25.6 0 48 19.2 48 48v256c0 28.8-28.8 54.4-57.6 48-80-19.2-134.4-89.6-134.4-176s54.4-156.8 134.4-176c3.2 0 6.4 0 9.6 0zM32 352c0 70.4 44.8 128 108.8 144 0 0 3.2 0 3.2 0 9.6 0 16-9.6 16-16v-256c0-9.6-9.6-16-19.2-16-64 12.8-108.8 70.4-108.8 144zM1024 352c0 86.4-54.4 156.8-134.4 176-28.8 3.2-57.6-19.2-57.6-48v-256c0-25.6 22.4-48 48-48 3.2 0 6.4 0 9.6 0 80 19.2 134.4 89.6 134.4 176zM883.2 208c-9.6-3.2-19.2 3.2-19.2 16v256c0 9.6 6.4 16 16 16 0 0 3.2 0 3.2 0 64-16 108.8-73.6 108.8-144s-44.8-131.2-108.8-144zM944 99.2c-9.6 0-16-9.6-16-16 0-28.8-22.4-48-51.2-48h-140.8c-9.6 32-38.4 64-76.8 64-44.8 0-80-35.2-80-80s35.2-80 80-80c38.4 0 73.6 32 80 64h140.8c48 0 83.2 35.2 83.2 80-3.2 6.4-9.6 16-19.2 16zM656-32c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48zM512 960c-195.2 0-352-150.4-352-336 0-9.6 6.4-16 16-16s16 6.4 16 16c0 166.4 144 304 320 304s320-137.6 320-304c0-9.6 6.4-16 16-16s16 6.4 16 16c0 185.6-156.8 336-352 336z" />
184
+ <glyph unicode="&#xe9ae;" glyph-name="heart-beat" horiz-adv-x="1184" d="M899.2 288l-313.6-313.6-300.8 300.8c-6.4 6.4-16 6.4-22.4 0s-6.4-19.2 0-22.4l313.6-310.4c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2l323.2 323.2c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM649.6 867.2c0 0-28.8-32-54.4-80-16 28.8-35.2 57.6-57.6 80-121.6 121.6-320 121.6-444.8 0-60.8-57.6-92.8-134.4-92.8-220.8s32-163.2 92.8-220.8c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4c-54.4 54.4-83.2 124.8-83.2 198.4s28.8 144 83.2 198.4c108.8 108.8 288 108.8 400 0 28.8-28.8 51.2-60.8 67.2-102.4 0-6.4 6.4-6.4 12.8-6.4 0 0 0 0 0 0 6.4 0 12.8 0 16 6.4 22.4 64 60.8 102.4 60.8 105.6 108.8 108.8 288 108.8 400 0 51.2-54.4 80-124.8 80-198.4s-28.8-144-83.2-198.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 57.6 57.6 89.6 134.4 89.6 220.8s-32 163.2-92.8 220.8c-121.6 118.4-320 118.4-441.6-3.2zM1136 384h-355.2c-6.4 0-9.6-3.2-12.8-6.4l-64-102.4-80 278.4c-3.2 6.4-6.4 9.6-12.8 12.8-6.4 0-12.8-3.2-16-9.6l-105.6-224-60.8 124.8c-3.2 3.2-6.4 9.6-12.8 9.6s-9.6 0-12.8-6.4l-73.6-76.8h-281.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c3.2 0 9.6 3.2 12.8 6.4l60.8 67.2 67.2-134.4c3.2-6.4 9.6-6.4 12.8-6.4 0 0 0 0 0 0 6.4 0 12.8 0 12.8 6.4l102.4 211.2 80-272c3.2-6.4 6.4-9.6 12.8-12.8 0 0 0 0 3.2 0 6.4 0 9.6 3.2 12.8 6.4l76.8 124.8h345.6c9.6 0 16 6.4 16 16s-6.4 19.2-16 19.2z" />
185
+ <glyph unicode="&#xe9af;" glyph-name="hexa" d="M361.6 534.4v-176l150.4-86.4 150.4 86.4v176l-150.4 86.4-150.4-86.4zM630.4 377.6l-118.4-70.4-118.4 70.4v140.8l118.4 70.4 118.4-70.4v-140.8zM912 204.8c12.8 16 19.2 35.2 19.2 54.4 0 44.8-35.2 83.2-76.8 92.8v195.2c44.8 6.4 76.8 44.8 76.8 92.8 0 19.2-6.4 38.4-16 51.2l22.4 22.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-22.4-22.4c-16 12.8-35.2 19.2-54.4 19.2-28.8 0-54.4-12.8-70.4-35.2l-166.4 99.2c3.2 9.6 6.4 22.4 6.4 32 0 44.8-35.2 83.2-76.8 92.8v22.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-25.6c-44.8-6.4-76.8-44.8-76.8-92.8 0-12.8 3.2-22.4 6.4-32l-169.6-96c-19.2 19.2-44.8 32-73.6 32-16 0-32-6.4-44.8-12.8l-32 32c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l28.8-28.8c-12.8-16-22.4-38.4-22.4-60.8 0-44.8 35.2-83.2 76.8-92.8v-192c-44.8-6.4-76.8-44.8-76.8-92.8 0-19.2 6.4-38.4 19.2-54.4l-25.6-25.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2l25.6 25.6c16-9.6 32-16 51.2-16 28.8 0 51.2 12.8 67.2 32l169.6-99.2c-3.2-9.6-6.4-22.4-6.4-32 0-44.8 35.2-83.2 76.8-92.8v-25.6c0-9.6 6.4-16 16-16s16 6.4 16 16v25.6c44.8 6.4 76.8 44.8 76.8 92.8 0 12.8-3.2 22.4-6.4 32l169.6 99.2c16-19.2 41.6-32 67.2-32 19.2 0 38.4 6.4 51.2 16l25.6-25.6c3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2c6.4 6.4 6.4 16 0 22.4l-12.8 25.6zM838.4 700.8c35.2 0 60.8-28.8 60.8-60.8s-25.6-64-60.8-64c-35.2 0-60.8 28.8-60.8 60.8s25.6 64 60.8 64zM512 889.6c35.2 0 60.8-28.8 60.8-60.8 0-35.2-28.8-60.8-60.8-60.8s-60.8 28.8-60.8 60.8c0 32 25.6 60.8 60.8 60.8zM124.8 636.8c0 35.2 28.8 60.8 60.8 60.8 35.2 0 60.8-28.8 60.8-60.8s-25.6-60.8-60.8-60.8c-35.2 0-60.8 28.8-60.8 60.8zM185.6 198.4c-35.2 0-60.8 28.8-60.8 60.8s28.8 60.8 60.8 60.8 60.8-28.8 60.8-60.8-25.6-60.8-60.8-60.8zM512 3.2c-35.2 0-60.8 28.8-60.8 60.8s25.6 64 60.8 64 60.8-28.8 60.8-60.8-25.6-64-60.8-64zM745.6 259.2c0-12.8 3.2-25.6 6.4-35.2l-169.6-99.2c-16 19.2-41.6 35.2-70.4 35.2s-54.4-12.8-70.4-35.2l-169.6 99.2c3.2 9.6 6.4 22.4 6.4 35.2 0 44.8-35.2 83.2-76.8 92.8v195.2c44.8 6.4 76.8 44.8 76.8 92.8 0 9.6-3.2 22.4-6.4 32l169.6 96c16-19.2 41.6-35.2 70.4-35.2s54.4 12.8 70.4 35.2l166.4-99.2c-3.2-9.6-6.4-19.2-6.4-32 0-44.8 35.2-83.2 76.8-92.8v-192c-41.6-9.6-73.6-44.8-73.6-92.8zM838.4 198.4c-35.2 0-60.8 28.8-60.8 60.8s28.8 60.8 60.8 60.8 60.8-28.8 60.8-60.8-25.6-60.8-60.8-60.8z" />
186
+ <glyph unicode="&#xe9b0;" glyph-name="highlighter" horiz-adv-x="1152" d="M1116.8 748.8l-169.6 176c-41.6 44.8-108.8 48-160 12.8l-432-352c-6.4-6.4-6.4-16-3.2-22.4 6.4-6.4 16-6.4 22.4-3.2l428.8 352c35.2 25.6 83.2 22.4 115.2-9.6l169.6-176c32-32 35.2-83.2 9.6-118.4l-336-422.4c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l342.4 422.4c35.2 48 28.8 115.2-12.8 160zM0-54.4c3.2-6.4 9.6-9.6 16-9.6h288c3.2 0 9.6 3.2 12.8 6.4l89.6 96c3.2 0 6.4-3.2 9.6-3.2l182.4-54.4c3.2 0 9.6-3.2 16-3.2 12.8 0 25.6 6.4 35.2 16l70.4 70.4c9.6 9.6 16 22.4 16 35.2s-6.4 25.6-16 35.2l-374.4 371.2c-19.2 19.2-54.4 19.2-73.6 0l-70.4-70.4c-12.8-12.8-19.2-32-12.8-51.2l48-172.8-236.8-252.8c0 0 0-6.4 0-12.8zM227.2 416l70.4 70.4c6.4 6.4 19.2 6.4 28.8 0l371.2-371.2c3.2-3.2 6.4-9.6 6.4-12.8 0-6.4-3.2-9.6-6.4-12.8l-70.4-70.4c-6.4-6.4-12.8-6.4-19.2-6.4l-182.4 51.2c-3.2 0-6.4 3.2-9.6 3.2-51.2 51.2-131.2 134.4-144 147.2l-51.2 179.2c0 9.6 0 16 6.4 22.4zM259.2 185.6c16-16 51.2-54.4 124.8-128l-86.4-89.6h-243.2l204.8 217.6z" />
187
+ <glyph unicode="&#xe9b1;" glyph-name="home" horiz-adv-x="1088" d="M166.4 377.6l96 80c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-96-80c-28.8-25.6-70.4-22.4-96 3.2-12.8 16-19.2 35.2-19.2 57.6s9.6 41.6 25.6 54.4l486.4 403.2 483.2-403.2c28.8-25.6 38.4-67.2 22.4-99.2-12.8-22.4-35.2-38.4-60.8-38.4-16 0-28.8 6.4-41.6 16l-96 80c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l96-80c19.2-16 38.4-22.4 64-22.4 38.4 0 70.4 19.2 89.6 54.4 22.4 44.8 12.8 102.4-28.8 137.6l-499.2 416c-6.4 6.4-16 6.4-19.2 0l-496-416c-22.4-19.2-35.2-44.8-38.4-76.8-3.2-28.8 9.6-60.8 28.8-80 35.2-38.4 96-41.6 137.6-6.4zM176 304c-9.6 0-16-6.4-16-16v-304c0-25.6 22.4-48 48-48h672c25.6 0 48 22.4 48 48v304c0 9.6-6.4 16-16 16s-16-6.4-16-16v-304c0-9.6-6.4-16-16-16h-672c-9.6 0-16 6.4-16 16v304c0 9.6-6.4 16-16 16zM656 160c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h192zM448 208v192c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16z" />
188
+ <glyph unicode="&#xe9b2;" glyph-name="hot-spot" d="M512 96c48 0 89.6 41.6 89.6 89.6s-41.6 89.6-89.6 89.6-89.6-41.6-89.6-89.6c0-51.2 41.6-89.6 89.6-89.6zM512 243.2c32 0 57.6-25.6 57.6-57.6s-25.6-57.6-57.6-57.6-57.6 25.6-57.6 57.6 25.6 57.6 57.6 57.6zM396.8 300.8c-64-64-64-166.4 0-230.4 32-32 70.4-48 115.2-48s83.2 16 115.2 48c64 64 64 166.4 0 230.4-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c51.2-51.2 51.2-134.4 0-185.6-25.6-25.6-57.6-38.4-92.8-38.4s-67.2 12.8-92.8 38.4c-51.2 51.2-51.2 134.4 0 185.6 6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0zM656 352c-6.4-6.4-6.4-16 0-22.4 38.4-38.4 60.8-89.6 60.8-144s-22.4-105.6-60.8-144c-38.4-38.4-89.6-60.8-144-60.8s-105.6 22.4-144 60.8c-38.4 38.4-60.8 89.6-60.8 144s22.4 105.6 60.8 144c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0c-44.8-44.8-70.4-105.6-70.4-166.4 0-64 25.6-121.6 70.4-166.4s105.6-70.4 166.4-70.4 121.6 25.6 166.4 70.4 70.4 105.6 70.4 166.4c0 64-25.6 121.6-70.4 166.4-6.4 6.4-16 6.4-22.4 0zM704 700.8h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16s-6.4 16-16 16zM704 796.8h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16s-6.4 16-16 16zM544 604.8h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16zM675.2 947.2h-326.4c-144 0-259.2-115.2-259.2-259.2s115.2-259.2 259.2-259.2h54.4l99.2-99.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2h54.4c144 0 259.2 115.2 259.2 259.2-6.4 144-121.6 259.2-265.6 259.2zM675.2 460.8h-60.8c-3.2 0-9.6-3.2-12.8-3.2l-89.6-92.8-92.8 92.8c-3.2 3.2-6.4 3.2-12.8 3.2h-60.8c-124.8 0-227.2 102.4-227.2 227.2s102.4 227.2 227.2 227.2h329.6c124.8 0 227.2-102.4 227.2-227.2s-99.2-227.2-227.2-227.2z" />
189
+ <glyph unicode="&#xe9b3;" glyph-name="hotdog" d="M816 960c-54.4 0-108.8-22.4-147.2-60.8l-16-16c-35.2 32-80 48-128 48-54.4 0-102.4-19.2-140.8-57.6l-300.8-300.8c-38.4-38.4-57.6-86.4-57.6-140.8 0-48 16-92.8 48-128l-9.6-9.6c-80-80-80-214.4 0-294.4 35.2-41.6 86.4-64 144-64 54.4 0 108.8 22.4 147.2 60.8l9.6 9.6c38.4-32 83.2-48 128-48 51.2 0 102.4 19.2 140.8 57.6l300.8 300.8c38.4 38.4 57.6 86.4 57.6 140.8 0 48-16 92.8-48 128l16 16c80 80 80 214.4 0 294.4-35.2 41.6-86.4 64-144 64zM54.4 428.8c0 44.8 16 86.4 48 118.4l300.8 300.8c32 32 73.6 48 118.4 48 38.4 0 76.8-12.8 105.6-38.4l-534.4-534.4c-22.4 32-38.4 67.2-38.4 105.6zM963.2 460.8c0-44.8-16-86.4-48-118.4l-300.8-300.8c-60.8-60.8-160-64-224-9.6l534.4 534.4c22.4-32 38.4-67.2 38.4-105.6zM940.8 633.6l-601.6-614.4c-32-32-80-51.2-128-51.2s-92.8 19.2-124.8 51.2c-67.2 67.2-70.4 179.2 0 249.6l19.2 19.2c0 0 0 0 0 0s0 0 0 0l585.6 588.8c32 32 76.8 51.2 124.8 51.2s92.8-16 124.8-48c67.2-70.4 67.2-179.2 0-246.4zM780.8 729.6l-67.2-16c-38.4-9.6-57.6-41.6-51.2-86.4l3.2-22.4c3.2-12.8 0-32-9.6-41.6s-28.8-9.6-41.6-9.6c-35.2 3.2-57.6-6.4-67.2-19.2s-22.4-32-19.2-67.2c3.2-12.8 0-32-9.6-41.6s-28.8-9.6-41.6-9.6c-35.2 3.2-57.6-6.4-67.2-19.2-9.6-9.6-22.4-32-19.2-67.2 3.2-12.8 0-32-9.6-41.6s-28.8-9.6-41.6-9.6l-22.4 3.2c-44.8 6.4-76.8-12.8-86.4-51.2l-12.8-67.2c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8l12.8 67.2c6.4 25.6 32 28.8 51.2 25.6l22.4-3.2c35.2-3.2 57.6 6.4 67.2 19.2 9.6 9.6 22.4 32 19.2 67.2-3.2 12.8 0 32 9.6 41.6s28.8 9.6 41.6 9.6c35.2-3.2 57.6 6.4 67.2 19.2 9.6 9.6 22.4 32 19.2 67.2-3.2 12.8 0 32 9.6 41.6s28.8 9.6 41.6 9.6c35.2-3.2 57.6 6.4 67.2 19.2 9.6 9.6 22.4 32 19.2 67.2l-3.2 22.4c-3.2 19.2 0 44.8 25.6 51.2l67.2 12.8c9.6 6.4 12.8 16 12.8 25.6-3.2 6.4-9.6 12.8-19.2 9.6z" />
190
+ <glyph unicode="&#xe9b4;" glyph-name="ice-cream" horiz-adv-x="608" d="M-6.4 630.4c0-28.8 12.8-57.6 25.6-83.2 12.8-22.4 38.4-35.2 64-35.2h438.4c25.6 0 48 12.8 60.8 35.2 16 25.6 22.4 54.4 22.4 83.2 0 80-54.4 150.4-131.2 166.4-3.2 92.8-80 163.2-169.6 163.2-92.8 0-166.4-70.4-172.8-163.2-3.2 0-6.4 0-6.4 0-3.2 0-3.2 0-6.4-3.2-9.6-3.2-19.2-6.4-25.6-9.6 0 0-3.2 0-3.2 0-25.6-16-44.8-35.2-60.8-57.6 0 0 0 0 0-3.2-6.4-6.4-9.6-12.8-12.8-19.2 0-3.2-3.2-6.4-3.2-6.4 0-3.2-3.2-6.4-3.2-12.8-3.2-9.6-6.4-16-6.4-22.4 0-3.2 0-6.4 0-6.4-3.2-9.6-9.6-16-9.6-25.6 0 3.2-9.6 3.2-9.6 0 0 0 0 0 0 0s0 0 0 0 9.6 0 9.6 0zM304 928c76.8 0 140.8-64 140.8-140.8 0-9.6 6.4-16 12.8-16 67.2-9.6 118.4-70.4 118.4-137.6 0-25.6-6.4-48-19.2-67.2-6.4-12.8-19.2-19.2-35.2-19.2h-438.4c-16 0-28.8 6.4-35.2 19.2-9.6 16-16 38.4-16 64 0 9.6 0 19.2 3.2 28.8 0 0 0 0 0 0 3.2 9.6 3.2 16 9.6 25.6 0 0 0 0 0 0 19.2 51.2 70.4 86.4 128 86.4 76.8 0 140.8-64 140.8-140.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 96-76.8 172.8-172.8 172.8-3.2 0-6.4 0-9.6 0 9.6 70.4 67.2 124.8 140.8 124.8zM566.4 486.4c-9.6 3.2-16 0-22.4-9.6l-208-492.8c-3.2-9.6-16-16-28.8-16-9.6 0-22.4 6.4-28.8 19.2l-195.2 476.8c-3.2 9.6-12.8 12.8-22.4 9.6s-12.8-12.8-9.6-22.4l195.2-476.8c9.6-25.6 32-38.4 57.6-38.4s48 16 57.6 38.4l208 492.8c6.4 6.4 3.2 16-3.2 19.2z" />
191
+ <glyph unicode="&#xe9b5;" glyph-name="icon-box" d="M240 204.8c0-9.6 6.4-16 16-16h576c9.6 0 16 6.4 16 16s-6.4 16-16 16h-576c-9.6 0-16-6.4-16-16zM736 92.8h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16s-6.4 16-16 16zM672-35.2h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16zM912 956.8h-768c-25.6 0-48-19.2-48-48v-928c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h768c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-144c-9.6 0-16-6.4-16-16s6.4-16 16-16h144c25.6 0 48 22.4 48 48v928c0 28.8-22.4 48-48 48zM720 588.8c0 115.2-92.8 208-208 208s-208-92.8-208-208 92.8-208 208-208 208 96 208 208zM336 588.8c0 96 80 176 176 176s176-80 176-176-80-176-176-176-176 80-176 176zM428.8 620.8c-25.6 9.6-48-12.8-35.2-35.2 3.2-6.4 6.4-9.6 12.8-12.8 25.6-9.6 48 12.8 35.2 35.2-3.2 6.4-6.4 9.6-12.8 12.8zM595.2 572.8c25.6-9.6 48 12.8 35.2 35.2-3.2 6.4-6.4 9.6-12.8 12.8-25.6 9.6-48-12.8-35.2-35.2 3.2-6.4 6.4-9.6 12.8-12.8zM560 521.6c3.2 6.4-3.2 16-9.6 16h-76.8c-6.4 0-12.8-9.6-9.6-16 6.4-16 22.4-38.4 48-38.4s41.6 22.4 48 38.4z" />
192
+ <glyph unicode="&#xe9b6;" glyph-name="imac" horiz-adv-x="1152" d="M1104 960h-1056c-25.6 0-48-22.4-48-48v-800c0-25.6 22.4-48 48-48h528v-96h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h672c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320v96h496c25.6 0 48 22.4 48 48v800c0 25.6-22.4 48-48 48zM1120 112c0-9.6-6.4-16-16-16h-1056c-9.6 0-16 6.4-16 16v144h1088v-144zM1120 288h-1088v624c0 9.6 6.4 16 16 16h1056c9.6 0 16-6.4 16-16v-624zM611.2 176c0-19.44-15.76-35.2-35.2-35.2s-35.2 15.76-35.2 35.2c0 19.44 15.76 35.2 35.2 35.2s35.2-15.76 35.2-35.2z" />
193
+ <glyph unicode="&#xe9b7;" glyph-name="image-compare" d="M675.2 428.8l-70.4 70.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l44.8-44.8h-233.6l44.8 44.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4l70.4-70.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-44.8 44.8h233.6l-44.8-44.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l70.4 70.4c0 3.2 0 16-6.4 22.4zM512 496c9.6 0 16 6.4 16 16v32c0 9.6-6.4 16-16 16s-16-6.4-16-16v-32c0-9.6 6.4-16 16-16zM512 748.8c9.6 0 16 6.4 16 16v73.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-73.6c0-9.6 6.4-16 16-16zM512 601.6c9.6 0 16 6.4 16 16v73.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-73.6c0-9.6 6.4-16 16-16zM512 896c9.6 0 16 6.4 16 16v32c0 9.6-6.4 16-16 16s-16-6.4-16-16v-32c0-9.6 6.4-16 16-16zM512 0c-9.6 0-16-6.4-16-16v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v32c0 9.6-6.4 16-16 16zM512 108.8c-9.6 0-16-6.4-16-16v-54.4c0-9.6 6.4-16 16-16s16 6.4 16 16v54.4c0 9.6-6.4 16-16 16zM512 217.6c-9.6 0-16-6.4-16-16v-54.4c0-9.6 6.4-16 16-16s16 6.4 16 16v54.4c0 9.6-6.4 16-16 16zM512 304c-9.6 0-16-6.4-16-16v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v32c0 9.6-6.4 16-16 16zM352-32h-304c-9.6 0-16 6.4-16 16v896c0 9.6 6.4 16 16 16h304c9.6 0 16 6.4 16 16s-6.4 16-16 16h-304c-25.6 0-48-22.4-48-48v-896c0-25.6 22.4-48 48-48h304c9.6 0 16 6.4 16 16s-6.4 16-16 16zM976 928h-304c-9.6 0-16-6.4-16-16s6.4-16 16-16h304c9.6 0 16-6.4 16-16v-896c0-9.6-6.4-16-16-16h-304c-9.6 0-16-6.4-16-16s6.4-16 16-16h304c25.6 0 48 22.4 48 48v896c0 25.6-22.4 48-48 48z" />
194
+ <glyph unicode="&#xe9b8;" glyph-name="image-slider" horiz-adv-x="1536" d="M579.2 467.2c57.6 0 105.6 48 105.6 105.6s-48 105.6-105.6 105.6c-57.6 0-105.6-48-105.6-105.6s48-105.6 105.6-105.6zM579.2 646.4c41.6 0 73.6-32 73.6-73.6s-32-73.6-73.6-73.6c-41.6 0-73.6 32-73.6 73.6s32 73.6 73.6 73.6zM924.8 563.2c-12.8 12.8-35.2 12.8-48 0l-224-220.8-51.2 48c-12.8 12.8-35.2 12.8-48 0l-137.6-137.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l140.8 137.6 51.2-48c12.8-12.8 32-12.8 48 0l224 220.8 192-188.8c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-195.2 188.8zM1260.8 953.6h-985.6c-25.6 0-48-22.4-48-48v-924.8c0-25.6 22.4-48 48-48h982.4c25.6 0 48 22.4 48 48v924.8c3.2 25.6-19.2 48-44.8 48zM1276.8-19.2c0-9.6-6.4-16-16-16h-985.6c-9.6 0-16 6.4-16 16v924.8c0 9.6 6.4 16 16 16h982.4c9.6 0 16-6.4 16-16v-924.8zM108.8 547.2c-6.4 6.4-16 6.4-22.4 0l-70.4-70.4c-3.2-3.2-3.2-6.4-3.2-12.8s3.2-9.6 3.2-12.8l70.4-67.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-60.8 60.8 60.8 60.8c3.2 3.2 3.2 12.8-3.2 19.2zM1520 476.8l-70.4 70.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l60.8-60.8-60.8-60.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l70.4 70.4c3.2 9.6 3.2 19.2-3.2 25.6z" />
195
+ <glyph unicode="&#xe9b9;" glyph-name="image" horiz-adv-x="1280" d="M336 470.4c89.6 0 160 70.4 160 160s-70.4 160-160 160-160-70.4-160-160 70.4-160 160-160zM336 758.4c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128 57.6 128 128 128zM1280-16v928c0 25.6-22.4 48-48 48h-1184c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h1184c25.6 0 48 22.4 48 48zM32-16v928c0 9.6 6.4 16 16 16h1184c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-1184c-9.6 0-16 6.4-16 16zM886.4 604.8c-16 16-44.8 16-60.8 0l-358.4-355.2c-3.2-3.2-12.8-3.2-16 0l-83.2 76.8c-16 16-44.8 16-60.8 0l-224-224c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l224 224c3.2 3.2 12.8 3.2 16 0l83.2-76.8c16-16 44.8-16 60.8 0l355.2 355.2c3.2 3.2 12.8 3.2 16 0l307.2-307.2c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-307.2 307.2z" />
196
+ <glyph unicode="&#xe9ba;" glyph-name="inbox" horiz-adv-x="1440" d="M1440 470.4c0 0-3.2 0 0 0 0 3.2 0 3.2-3.2 3.2l-336 467.2c-9.6 12.8-22.4 19.2-38.4 19.2h-684.8c-16 0-28.8-6.4-38.4-19.2l-336-467.2c0 0 0 0 0-3.2 0 0 0 0 0-3.2 0 0 0-3.2 0-3.2s0 0 0-3.2v-480c-3.2-22.4 19.2-44.8 44.8-44.8h1344c25.6 0 48 22.4 48 48v480c0 0 0 0 0 3.2 0 0 0 0 0 3.2zM364.8 921.6c3.2 3.2 9.6 6.4 12.8 6.4h684.8c6.4 0 9.6-3.2 12.8-6.4l316.8-441.6h-368c-19.2 0-38.4-12.8-44.8-28.8l-86.4-214.4c-3.2-6.4-9.6-9.6-16-9.6h-316.8c-6.4 0-12.8 3.2-16 9.6l-86.4 214.4c-3.2 16-22.4 28.8-41.6 28.8h-368l316.8 441.6zM1408-16c0-9.6-6.4-16-16-16h-1344c-9.6 0-16 6.4-16 16v464h384c6.4 0 12.8-3.2 16-9.6l86.4-214.4c6.4-19.2 25.6-28.8 44.8-28.8h316.8c19.2 0 38.4 12.8 44.8 28.8l86.4 214.4c3.2 6.4 9.6 9.6 16 9.6h384v-464z" />
197
+ <glyph unicode="&#xe9bb;" glyph-name="infinity" d="M803.2 217.6v0c-57.6 0-115.2 22.4-156.8 64l-147.2 144c-3.2 3.2-6.4 6.4-6.4 12.8 0 3.2 3.2 9.6 3.2 12.8l147.2 147.2c41.6 41.6 96 64 153.6 64s115.2-22.4 156.8-64c86.4-86.4 86.4-227.2 0-310.4-35.2-44.8-89.6-70.4-150.4-70.4zM534.4 438.4l134.4-131.2c35.2-35.2 83.2-54.4 134.4-54.4v0c51.2 0 99.2 19.2 134.4 54.4 73.6 73.6 73.6 192 0 265.6-35.2 35.2-83.2 54.4-134.4 54.4s-96-19.2-131.2-54.4l-137.6-134.4zM220.8 214.4c-57.6 0-112 22.4-156.8 64-86.4 86.4-86.4 227.2 0 310.4 86.4 86.4 227.2 86.4 313.6 0l147.2-144c6.4-6.4 6.4-16 0-22.4s-16-6.4-22.4 0l-147.2 144c-73.6 73.6-192 73.6-265.6 0s-73.6-192 0-265.6c73.6-73.6 192-73.6 265.6 0l83.2 83.2c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-83.2-83.2c-44.8-44.8-99.2-64-156.8-64z" />
198
+ <glyph unicode="&#xe9bc;" glyph-name="info" d="M515.2-67.2c-281.6 0-512 230.4-512 512s230.4 512 512 512 512-230.4 512-512-230.4-512-512-512zM515.2 924.8c-265.6 0-480-214.4-480-480s214.4-480 480-480 480 214.4 480 480-217.6 480-480 480zM598.4 646.4c0-45.95-37.25-83.2-83.2-83.2s-83.2 37.25-83.2 83.2c0 45.95 37.25 83.2 83.2 83.2s83.2-37.25 83.2-83.2zM563.2 457.6c0 22.4-19.2 41.6-41.6 41.6s-41.6-19.2-41.6-41.6l22.4-281.6c0-12.8 9.6-22.4 22.4-22.4s22.4 9.6 22.4 22.4l16 281.6z" />
199
+ <glyph unicode="&#xe9bd;" glyph-name="injection" horiz-adv-x="512" d="M16 800c-9.6 0-16-6.4-16-16s6.4-16 16-16h96v-499.2c0-80 54.4-144 128-150.4v-150.4c0-9.6 6.4-16 16-16s16 6.4 16 16v147.2c73.6 9.6 128 70.4 128 150.4v502.4h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160v128h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16h64v-128h-160zM208 928h96v-128h-96v128zM368 768v-499.2c0-70.4-48-121.6-112-121.6s-112 51.2-112 121.6v83.2h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v96h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v96h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v128h224z" />
200
+ <glyph unicode="&#xe9be;" glyph-name="instagram" d="M752-67.2h-480c-150.4 0-272 121.6-272 272v480c0 150.4 121.6 272 272 272h480c150.4 0 272-121.6 272-272v-480c0-147.2-121.6-272-272-272zM272 924.8c-131.2 0-240-105.6-240-240v-480c0-131.2 108.8-240 240-240h480c131.2 0 240 108.8 240 240v480c0 131.2-108.8 240-240 240h-480zM512 192c-140.8 0-256 115.2-256 256s115.2 256 256 256 256-115.2 256-256-115.2-256-256-256zM512 668.8c-121.6 0-224-99.2-224-224s99.2-224 224-224 224 99.2 224 224-102.4 224-224 224zM860.8 729.6c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64z" />
201
+ <glyph unicode="&#xe9bf;" glyph-name="jar-chemical" d="M12.8-9.6c19.2-35.2 54.4-54.4 92.8-54.4h809.6c41.6 0 80 22.4 99.2 57.6s19.2 76.8 0 112l-272 451.2c-25.6 44.8-38.4 92.8-38.4 140.8v166.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-166.4c0-54.4 16-108.8 44.8-156.8l108.8-182.4c-57.6 16-172.8 38.4-326.4-12.8-195.2-64-288-3.2-291.2-3.2-3.2 3.2-6.4 3.2-6.4 3.2l105.6 169.6c28.8 48 44.8 102.4 44.8 160v188.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-188.8c0-51.2-12.8-99.2-41.6-144l-262.4-425.6c-22.4-35.2-22.4-80-3.2-115.2zM41.6 89.6l144 233.6c3.2-3.2 3.2-3.2 6.4-3.2 3.2-3.2 48-35.2 140.8-35.2 48 0 105.6 9.6 176 32 198.4 67.2 336 0 339.2 0 0 0 3.2 0 3.2 0l137.6-227.2c16-25.6 16-54.4 0-80s-41.6-41.6-73.6-41.6h-809.6c-28.8 0-54.4 16-67.2 38.4-12.8 25.6-12.8 57.6 3.2 83.2zM752 944c0 9.6-6.4 16-16 16h-448c-9.6 0-16-6.4-16-16s6.4-16 16-16h448c9.6 0 16 6.4 16 16zM380.8 448c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM476.8 448c0-19.2-12.8-32-32-32s-32 12.8-32 32 12.8 32 32 32 32-16 32-32zM518.4 672c0-25.6 22.4-48 48-48s48 22.4 48 48-22.4 48-48 48-48-22.4-48-48zM582.4 672c0-9.6-6.4-16-16-16s-16 6.4-16 16 6.4 16 16 16 16-6.4 16-16zM592 12.8c54.4 0 96 41.6 96 96s-41.6 96-96 96-96-41.6-96-96 44.8-96 96-96zM592 172.8c35.2 0 64-28.8 64-64s-28.8-64-64-64-64 28.8-64 64 28.8 64 64 64z" />
202
+ <glyph unicode="&#xe9c0;" glyph-name="key" d="M995.2 896c-3.2 19.2-16 32-35.2 35.2l-96 25.6c-16 3.2-35.2 0-48-12.8l-358.4-358.4-35.2 35.2c-19.2 19.2-51.2 19.2-70.4 0l-64-60.8-35.2 35.2c-19.2 19.2-51.2 19.2-70.4 0l-166.4-166.4c-9.6-9.6-16-22.4-16-35.2s6.4-25.6 16-35.2l406.4-406.4c9.6-9.6 22.4-16 35.2-16s25.6 6.4 35.2 16l166.4 166.4c9.6 9.6 16 22.4 16 35.2s-6.4 25.6-16 35.2l-35.2 35.2 60.8 60.8c19.2 19.2 19.2 51.2 0 70.4l-35.2 35.2 99.2 99.2c3.2 3.2 6.4 9.6 3.2 12.8l-9.6 60.8 64-9.6c6.4 0 9.6 0 12.8 3.2l44.8 44.8c3.2 3.2 6.4 9.6 3.2 12.8l-9.6 64 67.2-6.4c3.2 0 9.6 0 12.8 3.2l70.4 70.4c12.8 12.8 19.2 32 12.8 48l-25.6 102.4zM662.4 332.8c6.4-6.4 6.4-19.2 0-25.6l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4l48-48c3.2-3.2 6.4-6.4 6.4-12.8s-3.2-9.6-6.4-12.8l-166.4-166.4c-6.4-6.4-19.2-6.4-25.6 0l-409.6 406.4c-3.2 3.2-6.4 6.4-6.4 12.8s3.2 9.6 6.4 12.8l166.4 166.4c3.2 3.2 6.4 6.4 12.8 6.4 3.2 0 9.6-3.2 12.8-6.4l48-48c6.4-6.4 16-6.4 22.4 0l70.4 70.4c6.4 6.4 19.2 6.4 25.6 0l217.6-217.6 48-44.8zM985.6 777.6l-67.2-67.2-80 6.4c-6.4 0-9.6 0-12.8-6.4-3.2-3.2-6.4-9.6-3.2-12.8l9.6-76.8-32-32-76.8 9.6c-6.4 0-9.6 0-12.8-3.2s-6.4-9.6-3.2-12.8l12.8-76.8-96-89.6-73.6 73.6c0 0 0 0 0 0l217.6 214.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-214.4-214.4c0 0 0 0 0 0l-51.2 48 361.6 361.6c3.2 6.4 9.6 6.4 16 6.4l96-25.6c6.4-3.2 9.6-6.4 12.8-12.8l25.6-96c0-6.4 0-12.8-6.4-16zM307.2 396.8c-44.8-44.8-44.8-115.2 0-160 22.4-22.4 48-32 80-32 28.8 0 57.6 12.8 80 32 44.8 44.8 44.8 115.2 0 160-41.6 41.6-115.2 41.6-160 0zM444.8 259.2c-28.8-28.8-83.2-28.8-112 0-32 32-32 83.2 0 112 16 16 35.2 22.4 57.6 22.4s41.6-9.6 57.6-22.4c28.8-28.8 28.8-80-3.2-112z" />
203
+ <glyph unicode="&#xe9c1;" glyph-name="language-change" d="M960 512h-384v384c0 35.2-28.8 64-64 64h-448c-35.2 0-64-28.8-64-64v-448c0-35.2 28.8-64 64-64h384v-384c0-35.2 28.8-64 64-64h448c35.2 0 64 28.8 64 64v448c0 35.2-28.8 64-64 64zM448 448v-32h-384c-19.2 0-32 12.8-32 32v448c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-384h-32c-35.2 0-64-28.8-64-64zM992 0c0-19.2-12.8-32-32-32h-448c-19.2 0-32 12.8-32 32v448c0 19.2 12.8 32 32 32h448c19.2 0 32-12.8 32-32v-448zM761.6 384c-3.2 6.4-9.6 9.6-16 9.6s-12.8-3.2-16-9.6l-131.2-336c-3.2-9.6 0-16 9.6-19.2 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l35.2 92.8c3.2 0 3.2 0 6.4 0h153.6l35.2-89.6c3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2l-128 332.8zM678.4 160l67.2 176 67.2-176h-134.4zM416 768h-128v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h48c9.6-22.4 32-76.8 76.8-134.4-38.4-41.6-73.6-73.6-73.6-73.6-6.4-6.4-6.4-16-3.2-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2s35.2 32 73.6 73.6c22.4-25.6 44.8-51.2 76.8-73.6 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 3.2 16-3.2 22.4-28.8 22.4-54.4 48-73.6 73.6 32 41.6 64 89.6 76.8 134.4h44.8c9.6 0 16 6.4 16 16s-6.4 16-16 16zM275.2 627.2c-32 44.8-54.4 86.4-64 108.8h124.8c-9.6-38.4-35.2-76.8-60.8-108.8zM352 128c-70.4 0-128 57.6-128 128v38.4l48-48c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-73.6 70.4c-6.4 6.4-16 6.4-22.4 0l-67.2-67.2c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l35.2 32v-25.6c0-89.6 70.4-160 160-160 9.6 0 16 6.4 16 16s-6.4 16-16 16zM672 790.4c70.4 0 128-57.6 128-128v-38.4l-44.8 48c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l67.2-67.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l67.2 67.2c3.2 6.4 3.2 16 0 22.4s-16 6.4-22.4 0l-38.4-35.2v25.6c0 89.6-70.4 160-160 160-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
204
+ <glyph unicode="&#xe9c2;" glyph-name="laptop" horiz-adv-x="1440" d="M144-64h1152c80 0 144 64 144 144 0 9.6-6.4 16-16 16h-112v784c0 44.8-35.2 80-80 80h-1024c-44.8 0-80-35.2-80-80v-784h-112c-9.6 0-16-6.4-16-16 0-80 64-144 144-144zM160 880c0 25.6 22.4 48 48 48h1024c25.6 0 48-22.4 48-48v-784h-1120v784zM1408 64c-6.4-54.4-54.4-96-112-96h-1152c-57.6 0-102.4 41.6-112 96h1376zM1136 832h-832c-25.6 0-48-22.4-48-48v-544c0-25.6 22.4-48 48-48h832c25.6 0 48 22.4 48 48v544c0 25.6-22.4 48-48 48zM1152 240c0-9.6-6.4-16-16-16h-832c-9.6 0-16 6.4-16 16v544c0 9.6 6.4 16 16 16h832c9.6 0 16-6.4 16-16v-544z" />
205
+ <glyph unicode="&#xe9c3;" glyph-name="layer" horiz-adv-x="1056" d="M1056 243.2c0 19.2-9.6 35.2-25.6 41.6-6.4 3.2-16 0-22.4-6.4-3.2-6.4 0-16 6.4-22.4 6.4-3.2 9.6-12.8 9.6-16s0-9.6-9.6-16l-464-249.6c-12.8-6.4-32-6.4-44.8 0l-464 243.2c-9.6 6.4-9.6 12.8-9.6 16s0 9.6 9.6 16c6.4 3.2 9.6 12.8 6.4 22.4-3.2 6.4-12.8 9.6-22.4 6.4-16-12.8-25.6-28.8-25.6-44.8 0-19.2 9.6-35.2 25.6-41.6l464-240c12.8-6.4 25.6-9.6 38.4-9.6s25.6 3.2 38.4 9.6l464 249.6c16 6.4 25.6 22.4 25.6 41.6zM25.6 396.8l464-240c12.8-6.4 25.6-9.6 38.4-9.6s25.6 3.2 38.4 9.6l464 249.6c16 9.6 25.6 25.6 25.6 41.6 0 19.2-9.6 35.2-25.6 41.6-6.4 3.2-16 0-22.4-6.4-3.2-6.4 0-16 6.4-22.4 9.6-3.2 9.6-9.6 9.6-12.8s0-9.6-9.6-16l-464-249.6c-12.8-6.4-32-6.4-44.8 0l-464 243.2c-9.6 3.2-9.6 9.6-9.6 12.8s0 9.6 9.6 16c6.4 3.2 9.6 12.8 6.4 22.4-6.4 6.4-16 9.6-22.4 3.2-16-6.4-25.6-25.6-25.6-41.6 0-19.2 9.6-35.2 25.6-41.6zM25.6 601.6l464-240c12.8-6.4 25.6-9.6 38.4-9.6 0 0 0 0 0 0 12.8 0 25.6 3.2 38.4 9.6l464 249.6c16 9.6 25.6 25.6 25.6 41.6 0 19.2-9.6 35.2-25.6 41.6l-464 252.8c-22.4 12.8-54.4 9.6-76.8-3.2l-464-259.2c-16-6.4-25.6-25.6-25.6-41.6 0-19.2 9.6-35.2 25.6-41.6zM41.6 659.2l464 259.2c6.4 3.2 16 6.4 22.4 6.4s16-3.2 22.4-6.4l464-249.6c9.6-6.4 9.6-12.8 9.6-16s0-9.6-9.6-16l-464-249.6c-6.4-3.2-16-6.4-22.4-6.4 0 0 0 0 0 0-6.4 0-16 3.2-22.4 6.4l-464 243.2c-9.6 3.2-9.6 9.6-9.6 12.8s0 9.6 9.6 16z" />
206
+ <glyph unicode="&#xe9c4;" glyph-name="lens" horiz-adv-x="1248" d="M1072-64c115.2 0 176 262.4 176 512s-60.8 512-176 512-176-262.4-176-512 60.8-512 176-512zM1072 928c67.2 0 144-198.4 144-480s-76.8-480-144-480-144 198.4-144 480 76.8 480 144 480zM800-64c25.6 0 67.2 16 105.6 92.8 3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 0-22.4-6.4-25.6-51.2-51.2-76.8-76.8-76.8-70.4 0-150.4 198.4-150.4 480s80 480 150.4 480c25.6 0 54.4-25.6 76.8-73.6 3.2-6.4 12.8-9.6 22.4-6.4 6.4 3.2 9.6 12.8 6.4 22.4-38.4 73.6-80 89.6-105.6 89.6-112 0-182.4-259.2-182.4-512s67.2-512 182.4-512zM489.6-64c25.6 0 67.2 16 105.6 92.8 3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 0-22.4-6.4-22.4-51.2-51.2-76.8-76.8-76.8-70.4 0-150.4 198.4-150.4 480s80 480 150.4 480c25.6 0 54.4-25.6 76.8-73.6 3.2-6.4 12.8-9.6 22.4-6.4 6.4 3.2 9.6 12.8 6.4 22.4-38.4 73.6-76.8 89.6-105.6 89.6-112 0-182.4-259.2-182.4-512s70.4-512 182.4-512zM182.4-64c25.6 0 67.2 16 105.6 92.8 3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 0-22.4-6.4-25.6-51.2-51.2-76.8-76.8-76.8-70.4 0-150.4 198.4-150.4 480s80 480 150.4 480c25.6 0 54.4-25.6 76.8-73.6 3.2-6.4 12.8-9.6 22.4-6.4 6.4 3.2 9.6 12.8 3.2 19.2-35.2 76.8-76.8 92.8-102.4 92.8-115.2 0-182.4-259.2-182.4-512s67.2-512 182.4-512z" />
207
+ <glyph unicode="&#xe9c5;" glyph-name="like" d="M921.6 515.2l-208 38.4c-25.6 3.2-41.6 22.4-41.6 44.8v252.8c0 32-12.8 60.8-32 80-22.4 22.4-54.4 32-86.4 28.8-60.8-3.2-105.6-54.4-105.6-115.2v-70.4c0-35.2-12.8-70.4-35.2-99.2l-44.8-51.2c-28.8-28.8-70.4-48-112-48-9.6 0-16-6.4-16-16s6.4-16 16-16c51.2 0 102.4 22.4 134.4 60.8l44.8 51.2c28.8 32 44.8 73.6 44.8 118.4v70.4c0 44.8 32 80 73.6 83.2 25.6 3.2 48-6.4 64-19.2s22.4-32 22.4-57.6v-252.8c0-38.4 28.8-73.6 67.2-80l208-38.4c22.4-3.2 44.8-19.2 57.6-38.4s16-41.6 9.6-64l-86.4-345.6c-9.6-38.4-41.6-64-80-64h-252.8l-230.4 64c0 0-3.2 0-3.2 0h-73.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h73.6l230.4-64c0 0 3.2 0 3.2 0h252.8c51.2 0 99.2 35.2 112 86.4l86.4 352c6.4 32 3.2 64-16 89.6-16 25.6-44.8 44.8-76.8 51.2zM80 608c-44.8 0-80-35.2-80-80v-512c0-44.8 35.2-80 80-80s80 35.2 80 80v512c0 44.8-35.2 80-80 80zM128 16c0-25.6-22.4-48-48-48s-48 22.4-48 48v512c0 25.6 22.4 48 48 48s48-22.4 48-48v-512z" />
208
+ <glyph unicode="&#xe9c6;" glyph-name="line-graph-pointed" d="M928 633.6c-54.4 0-96-41.6-96-96 0-16 3.2-32 12.8-44.8l-156.8-160c-12.8 9.6-32 12.8-48 12.8-19.2 0-35.2-6.4-51.2-16l-102.4 176c16 16 25.6 38.4 25.6 64 0 54.4-41.6 96-96 96s-96-41.6-96-96c0-19.2 6.4-38.4 16-54.4l-185.6-188.8c-16 9.6-35.2 16-54.4 16-54.4 0-96-41.6-96-96s41.6-96 96-96 96 41.6 96 96c0 22.4-6.4 41.6-19.2 57.6l185.6 185.6c16-12.8 35.2-19.2 57.6-19.2 16 0 32 3.2 44.8 12.8l102.4-176c-12.8-16-19.2-35.2-19.2-57.6 0-54.4 41.6-96 96-96s96 41.6 96 96c0 22.4-9.6 44.8-22.4 60.8l150.4 153.6c16-16 38.4-25.6 64-25.6 54.4 0 96 41.6 96 96s-44.8 99.2-96 99.2zM96 185.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM352 569.6c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64zM640 185.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM928 473.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
209
+ <glyph unicode="&#xe9c7;" glyph-name="link" d="M1024 764.8c0 51.2-19.2 102.4-57.6 137.6s-86.4 57.6-137.6 57.6c-51.2 0-102.4-19.2-137.6-57.6l-160-160c-38.4-38.4-57.6-86.4-57.6-137.6 0-48 16-89.6 48-124.8l-38.4-38.4c-35.2 28.8-80 48-124.8 48-51.2 0-102.4-19.2-137.6-57.6l-160-160c-41.6-38.4-60.8-89.6-60.8-140.8s19.2-102.4 57.6-137.6 86.4-57.6 137.6-57.6c51.2 0 102.4 19.2 137.6 57.6l160 160c38.4 38.4 57.6 86.4 57.6 137.6 0 48-16 89.6-48 124.8l38.4 38.4c35.2-28.8 80-48 124.8-48 51.2 0 102.4 19.2 137.6 57.6l160 160c41.6 38.4 60.8 89.6 60.8 140.8zM518.4 291.2c0-44.8-16-83.2-48-115.2l-160-160c-32-32-70.4-48-115.2-48s-83.2 16-115.2 48c-32 32-48 70.4-48 115.2s16 83.2 48 115.2l160 160c32 32 70.4 48 115.2 48 38.4 0 73.6-12.8 102.4-38.4l-86.4-86.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l86.4 86.4c22.4-28.8 35.2-64 35.2-102.4zM784 489.6c-32-32-70.4-48-115.2-48-38.4 0-73.6 12.8-102.4 38.4l76.8 76.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-76.8-76.8c-22.4 28.8-38.4 64-38.4 102.4 0 44.8 16 83.2 48 115.2l160 160c32 32 70.4 48 115.2 48s83.2-16 115.2-48c32-32 48-70.4 48-115.2s-16-83.2-48-115.2l-160-160z" />
210
+ <glyph unicode="&#xe9c8;" glyph-name="linkedin" d="M352 736c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM352 640c-16 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-16-32-32-32zM400 576h-96c-9.6 0-16-6.4-16-16v-348.8c0-12.8 6.4-19.2 16-19.2h92.8c9.6 0 16 6.4 16 16v352c3.2 9.6-3.2 16-12.8 16zM384 224h-64v320h64v-320zM624 576c-22.4 0-38.4-6.4-48-12.8-3.2 6.4-6.4 12.8-16 12.8h-96c-9.6 0-12.8-6.4-12.8-16v-352c0-9.6 3.2-16 12.8-16h96c9.6 0 19.2 6.4 19.2 16v211.2c0 0 0 9.6 6.4 16s16 9.6 28.8 9.6c19.2 0 32-9.6 32-25.6v-211.2c0-9.6 3.2-16 12.8-16h99.2c9.6 0 12.8 6.4 12.8 16v217.6c-3.2 112-80 150.4-147.2 150.4zM736 224h-64v195.2c0 38.4-25.6 60.8-64 60.8-22.4 0-38.4-6.4-51.2-19.2-16-19.2-12.8-41.6-12.8-41.6v-195.2h-64v320h64v-12.8c0-6.4 3.2-12.8 6.4-16 6.4-3.2 12.8-3.2 16 3.2l3.2 3.2c12.8 9.6 25.6 19.2 51.2 19.2s112-9.6 112-115.2v-201.6zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480z" />
211
+ <glyph unicode="&#xe9c9;" glyph-name="linux" horiz-adv-x="832" d="M355.2 745.6c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-22.4-48-48 22.4-48 48-48zM355.2 809.6c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 6.4-16 16 6.4 16 16 16zM476.8 745.6c25.6 0 48 22.4 48 48s-22.4 48-48 48-48-22.4-48-48 22.4-48 48-48zM476.8 809.6c9.6 0 16-6.4 16-16s-6.4-16-16-16-16 6.4-16 16 9.6 16 16 16zM400 547.2c3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2l96 64c3.2 3.2 6.4 6.4 6.4 12.8s-3.2 9.6-6.4 12.8l-96 64c-6.4 3.2-12.8 3.2-19.2 0l-96-64c-3.2-3.2-6.4-6.4-6.4-12.8s3.2-9.6 6.4-12.8l96-64zM409.6 668.8l67.2-44.8-67.2-44.8-67.2 44.8 67.2 44.8zM16 86.4c0-19.2 6.4-38.4 22.4-51.2 0-3.2 6.4-3.2 9.6-6.4 0 0 3.2 0 3.2-3.2l140.8-73.6c16-9.6 38.4-16 57.6-16 28.8 0 54.4 9.6 76.8 32 3.2 3.2 6.4 6.4 9.6 12.8 19.2 3.2 96 16 160 0 3.2-3.2 6.4-9.6 9.6-12.8 19.2-19.2 48-32 76.8-32 0 0 0 0 0 0 22.4 0 41.6 6.4 57.6 16l144 73.6c3.2 3.2 9.6 6.4 12.8 9.6 12.8 12.8 22.4 32 22.4 51.2s-6.4 38.4-22.4 51.2c0 0 0 0 0 0 12.8 32 6.4 70.4-19.2 96-22.4 22.4-51.2 28.8-80 22.4 6.4 25.6 6.4 54.4 6.4 83.2 0 112-41.6 217.6-112 284.8 25.6 35.2 38.4 76.8 38.4 118.4 0 121.6-99.2 217.6-220.8 217.6s-220.8-96-220.8-214.4c0-44.8 12.8-86.4 41.6-124.8-67.2-70.4-105.6-172.8-105.6-281.6 0-25.6 3.2-54.4 6.4-80-25.6 3.2-54.4-3.2-76.8-25.6-25.6-25.6-32-64-19.2-96 0 0 0 0 0 0-12.8-12.8-19.2-28.8-19.2-51.2zM684.8 220.8c22.4 12.8 51.2 9.6 70.4-6.4 19.2-19.2 22.4-48 6.4-70.4-3.2-3.2-3.2-6.4-3.2-12.8 0-3.2 3.2-6.4 6.4-9.6s6.4-3.2 6.4-6.4c6.4-6.4 12.8-19.2 12.8-28.8s-3.2-22.4-12.8-28.8c-3.2-3.2-3.2-3.2-6.4-3.2l-144-73.6c-12.8-9.6-25.6-12.8-41.6-12.8v0c-19.2 0-38.4 6.4-51.2 22.4-25.6 25.6-28.8 64-9.6 96l73.6 140.8c3.2 3.2 3.2 6.4 6.4 6.4 16 16 41.6 16 57.6 0 3.2-3.2 3.2-3.2 6.4-6.4s6.4-6.4 9.6-6.4c3.2-3.2 9.6-3.2 12.8 0zM262.4 611.2c6.4 6.4 6.4 16 0 22.4-25.6 32-41.6 70.4-41.6 112 0 102.4 86.4 182.4 188.8 182.4s188.8-80 188.8-182.4c0-41.6-12.8-80-38.4-112-6.4-6.4-3.2-16 3.2-22.4 70.4-60.8 112-163.2 112-272 0-25.6-3.2-51.2-6.4-73.6-28.8 16-64 12.8-86.4-9.6-3.2-3.2-6.4-6.4-9.6-9.6 0 0 0-3.2-3.2-3.2l-73.6-140.8c-16-25.6-22.4-57.6-12.8-86.4-48 6.4-96 3.2-128 0 6.4 28.8 3.2 60.8-12.8 86.4l-73.6 144c-3.2 3.2-6.4 9.6-12.8 12.8-25.6 22.4-64 22.4-96 3.2 0 0 0 0 0 0 0 25.6-6.4 51.2-6.4 76.8 0 108.8 41.6 208 108.8 272zM57.6 115.2c3.2 3.2 3.2 3.2 6.4 6.4s6.4 6.4 6.4 9.6c0 3.2 0 9.6-3.2 12.8-12.8 22.4-9.6 51.2 6.4 70.4 22.4 16 54.4 19.2 73.6 6.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 6.4 3.2 9.6 6.4s3.2 6.4 6.4 6.4c16 16 41.6 16 57.6 0 3.2-3.2 3.2-3.2 3.2-6.4l73.6-144c19.2-28.8 16-67.2-9.6-92.8s-64-28.8-96-9.6l-140.8 73.6c-3.2 3.2-6.4 3.2-6.4 6.4-6.4 6.4-12.8 19.2-12.8 28.8 3.2 12.8 6.4 22.4 12.8 28.8z" />
212
+ <glyph unicode="&#xe9ca;" glyph-name="list-2" horiz-adv-x="1152" d="M128 956.8c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM128 732.8c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-41.6-96-96-96zM128 572.8c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM128 348.8c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-41.6-96-96-96zM128 188.8c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM128-35.2c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-41.6-96-96-96zM176 828.8c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48zM176 444.8c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48zM176 60.8c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48zM368 876.8h768c9.6 0 16 6.4 16 16s-6.4 16-16 16h-768c-9.6 0-16-6.4-16-16s6.4-16 16-16zM368 780.8h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16zM1136 492.8h-768c-9.6 0-16-6.4-16-16s6.4-16 16-16h768c9.6 0 16 6.4 16 16s-6.4 16-16 16zM368 364.8h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16zM1136 108.8h-768c-9.6 0-16-6.4-16-16s6.4-16 16-16h768c9.6 0 16 6.4 16 16s-6.4 16-16 16zM624 12.8h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
213
+ <glyph unicode="&#xe9cb;" glyph-name="list-group" d="M944 956.8h-864c-25.6 0-48-19.2-48-48v-352c0-25.6 22.4-48 48-48h864c25.6 0 48 22.4 48 48v352c0 28.8-22.4 48-48 48zM960 556.8c0-9.6-6.4-16-16-16h-864c-9.6 0-16 6.4-16 16v352c0 9.6 6.4 16 16 16h864c9.6 0 16-6.4 16-16v-352zM944 380.8h-864c-25.6 0-48-22.4-48-48v-352c0-25.6 22.4-48 48-48h864c25.6 0 48 22.4 48 48v352c0 28.8-22.4 48-48 48zM960-19.2c0-9.6-6.4-16-16-16h-864c-9.6 0-16 6.4-16 16v352c0 9.6 6.4 16 16 16h864c9.6 0 16-6.4 16-16v-352zM768 796.8h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16s-6.4 16-16 16zM576 700.8h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM768 220.8h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16s-6.4 16-16 16zM576 124.8h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM300.8 828.8c-6.4 3.2-16 3.2-22.4-6.4l-57.6-96-38.4 32c-6.4 6.4-16 6.4-22.4 0s-3.2-19.2 3.2-25.6l67.2-54.4 76.8 124.8c3.2 9.6 3.2 22.4-6.4 25.6zM208 220.8c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM208 124.8c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32z" />
214
+ <glyph unicode="&#xe9cc;" glyph-name="list" horiz-adv-x="1216" d="M1168 960h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c9.6 0 16-6.4 16-16v-160c0-9.6-6.4-16-16-16h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM128 704c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM128 928c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM1168 576h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c9.6 0 16-6.4 16-16v-160c0-9.6-6.4-16-16-16h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM128 320c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM128 544c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM1168 192h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c9.6 0 16-6.4 16-16v-160c0-9.6-6.4-16-16-16h-864c-9.6 0-16-6.4-16-16s6.4-16 16-16h864c25.6 0 48 22.4 48 48v160c0 25.6-22.4 48-48 48zM128-64c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM128 160c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96z" />
215
+ <glyph unicode="&#xe9cd;" glyph-name="location-pointer" horiz-adv-x="928" d="M32 73.6l425.6-137.6c0 0 3.2 0 6.4 0s3.2 0 6.4 0l425.6 140.8c19.2 6.4 32 25.6 32 44.8s-12.8 38.4-32 44.8l-246.4 83.2c-9.6 3.2-16-3.2-19.2-9.6-3.2-9.6 3.2-16 9.6-19.2l246.4-83.2c9.6-3.2 9.6-12.8 9.6-16s0-12.8-9.6-16l-422.4-137.6-422.4 134.4c-9.6 3.2-9.6 12.8-9.6 16s0 12.8 9.6 16l256 89.6c9.6 3.2 12.8 12.8 9.6 19.2 0 6.4-9.6 12.8-19.2 9.6l-256-89.6c-19.2-6.4-32-25.6-32-44.8s12.8-38.4 32-44.8zM502.4 956.8c-188.8 22.4-348.8-124.8-348.8-307.2 0-70.4 22.4-134.4 76.8-204.8l201.6-291.2c6.4-12.8 22.4-19.2 35.2-19.2v0c12.8 0 28.8 6.4 35.2 19.2l134.4 192 73.6 115.2c54.4 67.2 76.8 150.4 64 236.8-19.2 134.4-134.4 243.2-272 259.2zM684.8 476.8l-76.8-115.2-134.4-192c-3.2-3.2-6.4-3.2-9.6-3.2s-6.4 0-9.6 3.2l-198.4 291.2c-48 64-70.4 121.6-70.4 188.8 0 153.6 124.8 278.4 278.4 278.4 9.6 0 22.4 0 32-3.2 124.8-12.8 227.2-112 243.2-236.8 12.8-76.8-6.4-150.4-54.4-211.2zM464 809.6c-89.6 0-160-70.4-160-160s70.4-160 160-160 160 70.4 160 160-70.4 160-160 160zM464 521.6c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128-57.6-128-128-128z" />
216
+ <glyph unicode="&#xe9ce;" glyph-name="lock" horiz-adv-x="896" d="M451.2 960h-6.4c-121.6 0-220.8-99.2-220.8-217.6v-166.4h-176c-25.6 0-48-22.4-48-48v-544c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v544c0 25.6-22.4 48-48 48h-176v166.4c0 118.4-102.4 217.6-220.8 217.6zM848 544c9.6 0 16-6.4 16-16v-544c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16v544c0 9.6 6.4 16 16 16h800zM256 576v166.4c0 99.2 86.4 185.6 188.8 185.6h6.4c102.4 0 188.8-86.4 188.8-185.6v-166.4h-384zM416 128c0 0 0 0 0 0v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c67.2 6.4 118.4 60.8 118.4 128 0 70.4-57.6 128-128 128s-128-57.6-128-128c0-64 41.6-118.4 105.6-128zM438.4 348.8c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96z" />
217
+ <glyph unicode="&#xe9cf;" glyph-name="logo-carousel" horiz-adv-x="1600" d="M793.6 950.4c-278.4 0-505.6-227.2-505.6-505.6s227.2-505.6 505.6-505.6 505.6 227.2 505.6 505.6-227.2 505.6-505.6 505.6zM793.6-25.6c-259.2 0-473.6 211.2-473.6 473.6s211.2 470.4 473.6 470.4 473.6-211.2 473.6-473.6-214.4-470.4-473.6-470.4zM195.2 553.6c-6.4 6.4-16 6.4-22.4 0l-108.8-108.8 108.8-108.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-83.2 83.2 83.2 83.2c0 12.8 0 22.4-3.2 28.8zM1433.6 553.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l83.2-83.2-83.2-83.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l108.8 108.8-112 102.4zM752 684.8l41.6 32 44.8-32-16 51.2 41.6 28.8h-51.2l-19.2 51.2-16-51.2h-54.4l44.8-28.8zM646.4 668.8h-51.2l-19.2 51.2-16-51.2h-54.4l44.8-35.2-16-54.4 41.6 32 44.8-32-16 54.4zM1011.2 720l-16-51.2h-54.4l44.8-35.2-16-54.4 41.6 32 44.8-32-16 54.4 41.6 35.2h-54.4zM598.4 252.8h-67.2c-9.6 0-16 6.4-16 16v204.8c0 9.6-6.4 16-16 16s-16-6.4-16-16v-204.8c0-25.6 22.4-48 48-48h67.2c9.6 0 16 6.4 16 16s-6.4 16-16 16zM707.2 489.6h-28.8c-25.6 0-48-22.4-48-48v-179.2c0-25.6 22.4-48 48-48h28.8c25.6 0 48 22.4 48 48v179.2c0 28.8-22.4 48-48 48zM723.2 265.6c0-9.6-6.4-16-16-16h-28.8c-9.6 0-16 6.4-16 16v179.2c0 9.6 6.4 16 16 16h28.8c9.6 0 16-6.4 16-16v-179.2zM1024 489.6h-28.8c-25.6 0-48-22.4-48-48v-179.2c0-25.6 22.4-48 48-48h28.8c25.6 0 48 22.4 48 48v179.2c0 28.8-22.4 48-48 48zM1040 265.6c0-9.6-6.4-16-16-16h-28.8c-9.6 0-16 6.4-16 16v179.2c0 9.6 6.4 16 16 16h28.8c9.6 0 16-6.4 16-16v-179.2zM867.2 489.6h-28.8c-25.6 0-48-22.4-48-48v-179.2c0-25.6 22.4-48 48-48h28.8c25.6 0 48 22.4 48 48v99.2h-44.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h12.8v-67.2c0-9.6-6.4-16-16-16h-28.8c-9.6 0-16 6.4-16 16v179.2c0 9.6 6.4 16 16 16h28.8c9.6 0 16-6.4 16-16v-22.4c0-9.6 6.4-16 16-16s16 6.4 16 16v22.4c0 28.8-19.2 48-48 48z" />
218
+ <glyph unicode="&#xe9d0;" glyph-name="logo-grid" d="M217.6 553.6h153.6c25.6 0 48 22.4 48 48v153.6c0 25.6-22.4 48-48 48h-153.6c-25.6 0-48-22.4-48-48v-153.6c0-25.6 22.4-48 48-48zM201.6 755.2c0 9.6 6.4 16 16 16h153.6c9.6 0 16-6.4 16-16v-153.6c0-9.6-6.4-16-16-16h-153.6c-9.6 0-16 6.4-16 16v153.6zM339.2 342.4c-9.6 16-25.6 25.6-44.8 25.6s-35.2-9.6-44.8-25.6l-83.2-144c-9.6-16-9.6-35.2 0-51.2 9.6-19.2 25.6-28.8 44.8-28.8h166.4c19.2 0 35.2 9.6 44.8 25.6s9.6 35.2 0 51.2l-83.2 147.2zM396.8 160c-3.2-6.4-9.6-9.6-19.2-9.6h-166.4c-6.4 0-12.8 3.2-19.2 9.6-3.2 6.4-3.2 12.8 0 19.2l83.2 144c6.4 9.6 12.8 9.6 19.2 9.6s12.8 0 19.2-9.6l83.2-144c3.2-3.2 3.2-12.8 0-19.2zM915.2 476.8h-371.2v371.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-371.2h-371.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h371.2v-371.2c0-9.6 6.4-16 16-16s16 6.4 16 16v371.2h371.2c9.6 0 16 6.4 16 16s-6.4 16-16 16zM736 553.6c67.2 0 124.8 54.4 124.8 124.8s-54.4 124.8-124.8 124.8-124.8-54.4-124.8-124.8 57.6-124.8 124.8-124.8zM736 771.2c51.2 0 92.8-41.6 92.8-92.8s-41.6-92.8-92.8-92.8c-51.2 0-92.8 41.6-92.8 92.8s41.6 92.8 92.8 92.8zM976 956.8h-928c-25.6 0-48-19.2-48-44.8v-931.2c0-25.6 22.4-48 48-48h931.2c25.6 0 48 22.4 48 48v931.2c-3.2 25.6-25.6 44.8-51.2 44.8zM992-19.2c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v931.2c0 6.4 6.4 16 16 16h931.2c6.4 0 12.8-9.6 12.8-16v-931.2zM864 291.2h-76.8l-22.4 70.4c-3.2 6.4-9.6 9.6-16 9.6s-12.8-3.2-16-9.6l-22.4-70.4h-76.8c-6.4 0-12.8-3.2-16-9.6s0-12.8 6.4-16l60.8-44.8-22.4-70.4c-3.2-6.4 0-12.8 6.4-16 3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2l60.8 44.8 60.8-44.8c6.4-3.2 12.8-3.2 19.2 0s6.4 9.6 6.4 16l-22.4 70.4 60.8 44.8c6.4 3.2 6.4 9.6 6.4 16-3.2 6.4-9.6 9.6-16 9.6zM784 236.8c-6.4-3.2-6.4-9.6-6.4-16l12.8-38.4-32 22.4c-6.4 3.2-12.8 3.2-19.2 0l-32-22.4 12.8 38.4c3.2 6.4 0 12.8-6.4 16l-32 22.4h38.4c6.4 0 12.8 3.2 16 9.6l12.8 38.4 12.8-38.4c3.2-6.4 9.6-9.6 16-9.6h38.4l-32-22.4z" />
219
+ <glyph unicode="&#xe9d1;" glyph-name="lotus" horiz-adv-x="1280" d="M1270.4 406.4c-3.2 3.2-6.4 6.4-9.6 6.4s-73.6 16-169.6 16c-12.8 0-25.6 0-41.6 0 28.8 153.6 0 288-3.2 294.4 0 3.2-3.2 6.4-6.4 9.6s-3.2 3.2-9.6 3.2c-6.4-3.2-112-28.8-217.6-102.4-41.6 185.6-172.8 316.8-179.2 323.2s-16 6.4-22.4 0c-3.2-6.4-121.6-124.8-169.6-294.4-105.6 54.4-198.4 70.4-204.8 70.4-3.2 0-9.6 0-12.8-3.2s-3.2-6.4-3.2-9.6-19.2-140.8 22.4-288c-121.6 9.6-217.6-12.8-224-16-3.2 0-6.4-3.2-9.6-6.4s-3.2-9.6-3.2-12.8c3.2-9.6 73.6-262.4 281.6-384 67.2-38.4 144-60.8 233.6-70.4 3.2 0 57.6-9.6 134.4-9.6v0c89.6 0 224 12.8 336 80 204.8 121.6 278.4 374.4 281.6 384 0 3.2 0 6.4-3.2 9.6zM1020.8 428.8c-86.4-9.6-166.4-32-230.4-70.4-60.8-35.2-108.8-83.2-147.2-134.4-12.8 12.8-22.4 28.8-35.2 41.6 12.8 67.2 32 128 64 179.2 0 0 0 3.2 3.2 3.2 99.2 163.2 294.4 236.8 352 256 3.2-44.8 16-156.8-6.4-275.2zM624 921.6c32-35.2 131.2-153.6 160-307.2-44.8-35.2-89.6-80-128-131.2-3.2 3.2-3.2 6.4-6.4 9.6-51.2 67.2-115.2 118.4-176 153.6 35.2 134.4 118.4 240 150.4 275.2zM249.6 697.6c60.8-12.8 259.2-70.4 374.4-224 6.4-6.4 9.6-12.8 12.8-22.4-28.8-48-48-99.2-60.8-160-28.8 25.6-57.6 48-86.4 64-70.4 41.6-144 60.8-214.4 70.4-35.2 118.4-28.8 230.4-25.6 272zM41.6 387.2c60.8 12.8 265.6 41.6 432-57.6 54.4-32 102.4-76.8 147.2-131.2-67.2-92.8-99.2-188.8-108.8-224-80 9.6-147.2 32-208 64-166.4 96-243.2 291.2-262.4 348.8zM976 38.4c-108.8-64-233.6-76.8-320-76.8-48 0-89.6 3.2-112 6.4 19.2 60.8 96 265.6 262.4 361.6 80 44.8 176 70.4 288 70.4 64 0 118.4-9.6 144-12.8-19.2-57.6-96-252.8-262.4-348.8z" />
220
+ <glyph unicode="&#xe9d2;" glyph-name="love" horiz-adv-x="1184" d="M1075.2 880c-57.6 51.2-131.2 76.8-208 76.8-89.6 0-176-35.2-240-99.2l-25.6-25.6c-6.4-6.4-16-6.4-22.4 0l-32 32c-60.8 64-140.8 96-227.2 96-83.2 0-163.2-32-224-89.6s-92.8-137.6-92.8-224c0-89.6 35.2-179.2 99.2-240l457.6-454.4c9.6-9.6 22.4-12.8 35.2-12.8s25.6 6.4 35.2 12.8l464 464c64 60.8 96 147.2 92.8 236.8-6.4 86.4-44.8 169.6-112 227.2zM1068.8 435.2l-467.2-464c-6.4-6.4-16-6.4-22.4 0l-454.4 457.6c-57.6 57.6-89.6 137.6-89.6 217.6 0 76.8 32 150.4 83.2 201.6 54.4 51.2 128 80 201.6 80 76.8 0 150.4-28.8 204.8-83.2l32-32c19.2-19.2 48-19.2 67.2 0l25.6 25.6c57.6 57.6 137.6 89.6 217.6 89.6 70.4 0 134.4-25.6 185.6-70.4 60.8-54.4 96-128 99.2-208s-28.8-156.8-83.2-214.4z" />
221
+ <glyph unicode="&#xe9d3;" glyph-name="madel" d="M441.6 198.4c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l16 16v-83.2c0-9.6 6.4-16 16-16s16 6.4 16 16v121.6c0 6.4-3.2 12.8-9.6 16s-12.8 0-16-3.2l-44.8-44.8zM908.8 950.4c0 6.4-6.4 9.6-12.8 9.6h-249.6c-6.4 0-9.6-3.2-12.8-6.4l-121.6-169.6-121.6 169.6c-3.2 3.2-6.4 6.4-12.8 6.4h-249.6c-6.4 0-12.8-3.2-12.8-9.6s-3.2-12.8 0-16l249.6-352c3.2-3.2 6.4-6.4 12.8-6.4h265.6c6.4 0 9.6 3.2 12.8 6.4l249.6 352c6.4 6.4 6.4 12.8 3.2 16zM396.8 608h-9.6l-227.2 320h211.2l227.2-320h-201.6zM636.8 608v0l-105.6 147.2 121.6 172.8h211.2l-227.2-320zM729.6 480c9.6 0 16 6.4 16 16s-6.4 16-16 16h-480c-9.6 0-16-6.4-16-16s6.4-16 16-16h230.4v-64c-128-6.4-230.4-112-230.4-240 0-131.2 108.8-240 240-240s240 108.8 240 240c0 124.8-96 227.2-217.6 240v64h217.6zM697.6 176c0-115.2-92.8-208-208-208s-208 92.8-208 208 92.8 208 208 208 208-92.8 208-208z" />
222
+ <glyph unicode="&#xe9d4;" glyph-name="magic-wand" d="M1014.4 544c9.6 0 16 6.4 16 16 0 6.4-3.2 12.8-9.6 16l-121.6 121.6 92.8 201.6c3.2 6.4 0 12.8-3.2 19.2-6.4 6.4-12.8 6.4-19.2 3.2l-198.4-89.6-124.8 124.8c-6.4 3.2-16 6.4-22.4 3.2s-9.6-9.6-9.6-19.2l35.2-176-217.6-89.6c-6.4-3.2-12.8-9.6-9.6-19.2 0-6.4 6.4-12.8 12.8-16l214.4-32-25.6-25.6-614.4-617.6c-6.4-6.4-6.4-16 0-25.6 3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2l643.2 643.2 32-214.4c0-6.4 6.4-12.8 16-12.8 0 0 0 0 3.2 0 6.4 0 12.8 3.2 16 9.6l89.6 198.4 179.2-19.2c0 0 0 0 0 0zM825.6 598.4c-6.4 0-12.8-3.2-16-9.6l-73.6-156.8-28.8 192c0 0 0 0 0 0 0 3.2-3.2 6.4-3.2 9.6s-6.4 3.2-9.6 3.2c0 0 0 0 0 0l-188.8 28.8 172.8 70.4c6.4 3.2 12.8 9.6 9.6 19.2l-25.6 134.4 92.8-92.8c6.4-6.4 12.8-6.4 19.2-3.2l169.6 76.8-80-166.4c-3.2-6.4 0-12.8 3.2-19.2l99.2-99.2-140.8 12.8z" />
223
+ <glyph unicode="&#xe9d5;" glyph-name="magnet" horiz-adv-x="768" d="M384-64c211.2 0 384 182.4 384 406.4v265.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-265.6c0-204.8-156.8-374.4-352-374.4s-352 169.6-352 374.4v265.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-265.6c0-224 172.8-406.4 384-406.4zM224 608c0 9.6-6.4 16-16 16s-16-6.4-16-16v-265.6c0-118.4 83.2-211.2 192-211.2s192 92.8 192 211.2v265.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-265.6c0-99.2-70.4-179.2-160-179.2s-160 80-160 179.2v265.6zM592 704h128c25.6 0 48 19.2 48 44.8v163.2c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-163.2c0-25.6 22.4-44.8 48-44.8zM576 912c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-163.2c0-6.4-6.4-12.8-16-12.8h-128c-9.6 0-16 6.4-16 12.8v163.2zM48 704h128c25.6 0 48 19.2 48 44.8v163.2c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-163.2c0-25.6 22.4-44.8 48-44.8zM32 912c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-163.2c0-6.4-6.4-12.8-16-12.8h-128c-9.6 0-16 6.4-16 12.8v163.2z" />
224
+ <glyph unicode="&#xe9d6;" glyph-name="mail-open" d="M1020.8 553.6c0 0 0 0 0 0 0 3.2-3.2 3.2-3.2 3.2s0 0-3.2 3.2l-150.4 89.6v214.4c0 35.2-28.8 64-64 64h-576c-35.2 0-64-28.8-64-64v-214.4l-153.6-89.6c0 0 0 0 0 0s-3.2-3.2-3.2-3.2c0 0 0 0 0-3.2-3.2-3.2-3.2-6.4-3.2-9.6 0 0 0 0 0 0s0 0 0 0 0 0 0 0v-544c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v544c0 3.2 0 6.4-3.2 9.6zM976 544l-112-76.8v144l112-67.2zM224 896h576c19.2 0 32-12.8 32-32v-419.2l-304-204.8c-9.6-6.4-25.6-6.4-35.2 0l-300.8 204.8v419.2c0 19.2 12.8 32 32 32zM160 611.2v-144l-115.2 76.8 115.2 67.2zM960-32h-896c-19.2 0-32 12.8-32 32v515.2l444.8-300.8c9.6-6.4 22.4-9.6 35.2-9.6s25.6 3.2 35.2 9.6l444.8 300.8v-515.2c0-19.2-12.8-32-32-32zM297.6 259.2l-188.8-188.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l188.8 188.8c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM723.2 259.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l204.8-204.8c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 6.4 6.4 6.4 16 0 22.4l-208 204.8zM352 608h320c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16zM352 704h320c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16zM352 512h320c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
225
+ <glyph unicode="&#xe9d7;" glyph-name="man-range" d="M496 652.8c83.2 0 153.6 67.2 153.6 153.6 0 83.2-67.2 153.6-153.6 153.6-83.2 0-153.6-67.2-153.6-153.6 0-83.2 67.2-153.6 153.6-153.6zM496 928c67.2 0 121.6-54.4 121.6-121.6s-54.4-121.6-121.6-121.6-121.6 54.4-121.6 121.6 54.4 121.6 121.6 121.6zM668.8 300.8c-9.6 0-16-6.4-19.2-12.8s6.4-16 12.8-19.2c188.8-22.4 326.4-83.2 326.4-147.2 0-73.6-192-153.6-480-153.6s-476.8 80-476.8 153.6c0 64 137.6 124.8 326.4 147.2 9.6 0 16 9.6 12.8 19.2 0 9.6-9.6 16-19.2 12.8-211.2-22.4-352-92.8-352-179.2 0-115.2 259.2-185.6 512-185.6s512 70.4 512 185.6c0 86.4-140.8 156.8-355.2 179.2zM512 70.4c-179.2 0-291.2 41.6-291.2 70.4 0 12.8 38.4 41.6 140.8 57.6 9.6 0 16 9.6 12.8 19.2 0 9.6-9.6 16-19.2 12.8-64-9.6-166.4-35.2-166.4-89.6 0-67.2 163.2-102.4 323.2-102.4s323.2 35.2 323.2 102.4c0 54.4-105.6 80-166.4 89.6-9.6 0-16-3.2-19.2-12.8 0-9.6 3.2-16 12.8-19.2 102.4-16 140.8-44.8 140.8-57.6 0-28.8-112-70.4-291.2-70.4zM672 560c0 25.6-22.4 48-48 48h-224c-25.6 0-48-22.4-48-48v-118.4c0-64 38.4-121.6 96-147.2v-86.4c0-25.6 22.4-48 48-48h32c25.6 0 48 22.4 48 48v86.4c57.6 25.6 96 83.2 96 147.2v118.4zM640 441.6c0-54.4-35.2-102.4-86.4-121.6-6.4 0-9.6-6.4-9.6-12.8v-99.2c0-9.6-6.4-16-16-16h-32c-9.6 0-16 6.4-16 16v99.2c0 6.4-3.2 12.8-9.6 16-51.2 19.2-86.4 67.2-86.4 121.6v118.4c0 9.6 6.4 16 16 16h224c9.6 0 16-6.4 16-16v-121.6z" />
226
+ <glyph unicode="&#xe9d8;" glyph-name="map-marker" d="M28.8 57.6l300.8-118.4c3.2 0 3.2 0 6.4 0s3.2 0 6.4 0l313.6 124.8 304-108.8c6.4-3.2 9.6-3.2 16-3.2 9.6 0 19.2 3.2 28.8 9.6 12.8 9.6 19.2 22.4 19.2 38.4v665.6c0 19.2-12.8 38.4-32 44.8l-192 70.4c-9.6 3.2-16 0-19.2-9.6s0-16 9.6-19.2l192-70.4c6.4-3.2 9.6-9.6 9.6-16v-668.8c0-6.4-3.2-9.6-6.4-12.8s-9.6-3.2-16-3.2l-297.6 108.8v262.4c0 9.6-6.4 16-16 16s-16-6.4-16-16v-262.4l-288-115.2v345.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-345.6l-278.4 112c-6.4 3.2-9.6 9.6-9.6 16v665.6c0 6.4 3.2 9.6 6.4 12.8s9.6 3.2 16 3.2l102.4-41.6c9.6-3.2 16 0 19.2 9.6s0 16-9.6 19.2l-99.2 41.6c-16 6.4-32 3.2-44.8-6.4-16-6.4-22.4-22.4-22.4-38.4v-668.8c0-16 12.8-35.2 28.8-41.6zM451.2 240c6.4-9.6 19.2-16 32-16s25.6 6.4 32 16l118.4 169.6 67.2 102.4c48 60.8 67.2 134.4 57.6 211.2-16 121.6-118.4 220.8-243.2 236.8-166.4 19.2-310.4-112-310.4-275.2 0-64 19.2-121.6 67.2-182.4l179.2-262.4zM480 928c9.6 0 19.2 0 28.8-3.2 108.8-12.8 198.4-99.2 214.4-208 9.6-67.2-9.6-134.4-51.2-188.8l-64-99.2-118.4-169.6c-3.2-6.4-9.6-6.4-12.8 0l-179.2 259.2c-41.6 57.6-60.8 108.8-60.8 163.2 0 137.6 108.8 246.4 243.2 246.4zM480 585.6c54.4 0 96 41.6 96 96s-41.6 96-96 96-96-41.6-96-96 41.6-96 96-96zM480 745.6c35.2 0 64-28.8 64-64s-28.8-64-64-64-64 28.8-64 64 28.8 64 64 64z" />
227
+ <glyph unicode="&#xe9d9;" glyph-name="map-pointer" horiz-adv-x="960" d="M409.6 764.8c-108.8 0-198.4-89.6-198.4-198.4s89.6-198.4 198.4-198.4c108.8 0 198.4 89.6 198.4 198.4s-89.6 198.4-198.4 198.4zM409.6 400c-92.8 0-166.4 73.6-166.4 166.4s73.6 166.4 166.4 166.4 166.4-73.6 166.4-166.4-73.6-166.4-166.4-166.4zM691.2 848c-73.6 73.6-176 115.2-281.6 115.2s-204.8-41.6-281.6-115.2c-73.6-76.8-115.2-176-115.2-281.6s41.6-204.8 115.2-281.6l275.2-275.2c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 3.2 12.8 6.4l262.4 275.2c153.6 153.6 153.6 403.2 0 560zM416 44.8l-262.4 262.4c-70.4 70.4-105.6 160-105.6 259.2s38.4 188.8 105.6 259.2 160 105.6 259.2 105.6c96 0 188.8-38.4 259.2-105.6 140.8-140.8 140.8-374.4 0-515.2l-256-265.6zM931.2 160h-51.2c-57.6 0-112-22.4-147.2-70.4l-44.8-60.8c-28.8-38.4-73.6-60.8-121.6-60.8h-57.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h57.6c57.6 0 112 28.8 147.2 76.8l44.8 57.6c28.8 38.4 73.6 57.6 121.6 57.6h51.2c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
228
+ <glyph unicode="&#xe9da;" glyph-name="measurement" d="M816 921.6c-19.2 19.2-54.4 19.2-73.6 0l-604.8-604.8c-3.2-3.2-3.2-3.2-3.2-6.4l-124.8-342.4c-3.2-6.4 0-12.8 3.2-16s6.4-3.2 12.8-3.2c3.2 0 3.2 0 6.4 0l342.4 121.6c0 0 0 0 0 0 3.2 0 3.2 3.2 6.4 3.2l608 608c9.6 9.6 16 22.4 16 35.2s-6.4 25.6-16 35.2l-172.8 169.6zM364.8 102.4c-121.6 64-176 153.6-195.2 188.8-3.2 3.2-3.2 6.4-3.2 9.6l473.6 473.6 198.4-198.4-473.6-473.6zM150.4 265.6c22.4-41.6 76.8-118.4 179.2-176l-278.4-99.2 99.2 275.2zM963.2 700.8l-102.4-102.4-198.4 198.4 102.4 102.4c6.4 6.4 19.2 6.4 28.8 0l169.6-169.6c3.2-3.2 6.4-9.6 6.4-12.8s-3.2-12.8-6.4-16zM662.4 688c-6.4 6.4-16 6.4-22.4 0l-393.6-390.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l390.4 390.4c3.2 6.4 3.2 16 0 22.4zM758.4 604.8c-6.4 6.4-16 6.4-22.4 0l-396.8-400c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l396.8 396.8c3.2 6.4 3.2 19.2-3.2 25.6zM243.2 947.2c-19.2 16-51.2 16-70.4 0l-160-160c-16-19.2-16-51.2 0-70.4l214.4-214.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-54.4 54.4 102.4 102.4c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0l-102.4-102.4-54.4 57.6 57.6 57.6c6.4 6.4 6.4 16 0 22.4s-19.2 3.2-25.6-3.2l-54.4-54.4-57.6 57.6c-6.4 6.4-6.4 16 0 22.4l160 160c6.4 6.4 16 6.4 22.4 0l214.4-214.4c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-214.4 217.6zM796.8 393.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l214.4-214.4c6.4-6.4 6.4-16 0-22.4l-160-160c-6.4-6.4-16-6.4-22.4 0l-51.2 51.2 102.4 102.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-102.4-102.4-60.8 54.4 57.6 57.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-57.6-57.6-60.8 60.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l214.4-214.4c9.6-9.6 22.4-12.8 35.2-12.8s25.6 3.2 35.2 12.8l160 160c19.2 19.2 19.2 51.2 0 70.4l-214.4 214.4z" />
229
+ <glyph unicode="&#xe9db;" glyph-name="memory" horiz-adv-x="1056" d="M944-16v774.4c0 16-6.4 28.8-19.2 38.4l-192 153.6c-6.4 6.4-16 9.6-28.8 9.6h-576c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h32c9.6 0 16-6.4 16-16v-224c0-9.6-6.4-16-16-16h-32c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h768c25.6 0 48 22.4 48 48zM112-16v320c0 9.6 6.4 16 16 16h32c25.6 0 48 22.4 48 48v224c0 25.6-22.4 48-48 48h-32c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h576c3.2 0 6.4 0 9.6-3.2l192-153.6c3.2-3.2 6.4-6.4 6.4-12.8v-774.4c0-9.6-6.4-16-16-16h-768c-9.6 0-16 6.4-16 16zM256 816c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM384 816c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM512 816c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM640 816c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16z" />
230
+ <glyph unicode="&#xe9dc;" glyph-name="menu-price" d="M896 540.8h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 636.8h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 444.8h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 348.8h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 252.8h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16zM976 860.8h-368c-25.6 0-48-22.4-48-48v-176h-96v176c0 25.6-22.4 48-48 48h-368c-25.6 0-48-19.2-48-48v-736c0-25.6 22.4-48 48-48h368c25.6 0 48 22.4 48 48v144h96v-144c0-25.6 22.4-48 48-48h368c25.6 0 48 22.4 48 48v736c0 28.8-22.4 48-48 48zM432 636.8h-16c-9.6 0-16-6.4-16-16s6.4-16 16-16h16v-160h-16c-9.6 0-16-6.4-16-16s6.4-16 16-16h16v-160h-16c-9.6 0-16-6.4-16-16s6.4-16 16-16h16v-144c0-9.6-6.4-16-16-16h-368c-9.6 0-16 6.4-16 16v736c0 9.6 6.4 16 16 16h368c9.6 0 16-6.4 16-16v-176zM560 252.8h-96v160h96v-160zM560 444.8h-96v160h96v-160zM992 76.8c0-9.6-6.4-16-16-16h-368c-9.6 0-16 6.4-16 16v144h16c9.6 0 16 6.4 16 16s-6.4 16-16 16h-16v160h16c9.6 0 16 6.4 16 16s-6.4 16-16 16h-16v160h16c9.6 0 16 6.4 16 16s-6.4 16-16 16h-16v176c0 9.6 6.4 16 16 16h368c9.6 0 16-6.4 16-16v-736zM278.4 444.8c-9.6 6.4-25.6 12.8-41.6 19.2s-28.8 12.8-38.4 16-12.8 9.6-19.2 16-6.4 12.8-6.4 19.2c0 12.8 3.2 22.4 12.8 28.8s19.2 9.6 35.2 9.6c19.2 0 32-3.2 41.6-12.8s16-19.2 16-32v-6.4c0-3.2 0-3.2 3.2-3.2h25.6c3.2 0 3.2 0 3.2 3.2v9.6c0 19.2-6.4 38.4-19.2 51.2s-28.8 22.4-51.2 25.6c0 0 0 0 0 3.2v28.8c0 3.2 0 3.2-3.2 3.2h-25.6c-3.2 0-3.2 0-3.2-3.2v-28.8c0 0 0 0 0 0-19.2-3.2-38.4-9.6-48-22.4s-19.2-28.8-19.2-48c0-16 3.2-25.6 9.6-35.2s16-16 25.6-22.4c9.6-6.4 25.6-12.8 41.6-19.2s28.8-12.8 38.4-16c9.6-3.2 16-9.6 19.2-16s6.4-12.8 6.4-19.2c0-12.8-3.2-22.4-12.8-28.8s-22.4-9.6-38.4-9.6c-19.2 0-32 3.2-44.8 12.8s-16 19.2-16 32v9.6c0 3.2 0 3.2-3.2 3.2h-25.6c-3.2 0-3.2 0-3.2-3.2v-9.6c0-19.2 6.4-38.4 19.2-51.2s32-22.4 54.4-25.6c0 0 0 0 0 0v-28.8c0-3.2 0-3.2 3.2-3.2h25.6c3.2 0 3.2 0 3.2 3.2v25.6c0 0 0 0 0 0 22.4 3.2 41.6 9.6 54.4 22.4s19.2 28.8 19.2 48c0 16-3.2 25.6-9.6 35.2s-19.2 12.8-28.8 19.2z" />
231
+ <glyph unicode="&#xe9dd;" glyph-name="micro-chip" d="M768 672c0 19.2-12.8 32-32 32h-480c-19.2 0-32-12.8-32-32v-480c0-19.2 12.8-32 32-32h480c19.2 0 32 12.8 32 32v480zM720 192h-448c-9.6 0-16 6.4-16 16v448c0 9.6 6.4 16 16 16h448c9.6 0 16-6.4 16-16v-448c0-9.6-6.4-16-16-16zM224 32v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v80h224v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v80h224v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v80h80c25.6 0 48 22.4 48 48v80h112c9.6 0 16 6.4 16 16s-6.4 16-16 16h-112v224h112c9.6 0 16 6.4 16 16s-6.4 16-16 16h-112v224h112c9.6 0 16 6.4 16 16s-6.4 16-16 16h-112v80c0 25.6-22.4 48-48 48h-80v112c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112h-224v112c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112h-224v112c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112h-80c-25.6 0-48-22.4-48-48v-80h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80v-224h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80v-224h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80v-80c0-25.6 22.4-48 48-48h80zM144 800h704c9.6 0 16-6.4 16-16v-704c0-9.6-6.4-16-16-16h-704c-9.6 0-16 6.4-16 16v704c0 9.6 6.4 16 16 16zM336 544c9.6 0 16 6.4 16 16v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16zM400 544c9.6 0 16 6.4 16 16v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16zM480 624c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64zM528 544c9.6 0 16 6.4 16 16v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16zM704 368c0 9.6-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16h192c9.6 0 16 6.4 16 16v96zM672 288h-160v64h160v-64zM387.2 377.6c-25.6 0-48-22.4-48-48s22.4-48 48-48 48 22.4 48 48-19.2 48-48 48zM387.2 313.6c-9.6 0-16 6.4-16 16s6.4 16 16 16 16-6.4 16-16-6.4-16-16-16z" />
232
+ <glyph unicode="&#xe9de;" glyph-name="microphone1" horiz-adv-x="576" d="M288-48c9.6 0 16 6.4 16 16v64h67.2c6.4 0 16 6.4 16 12.8l67.2 416c0 9.6-3.2 16-12.8 19.2-9.6 0-16-3.2-19.2-12.8l-64-403.2h-128l-64 390.4c0 9.6-9.6 16-19.2 12.8-9.6 0-16-9.6-12.8-19.2l67.2-406.4c0-6.4 6.4-12.8 16-12.8h54.4v-64c0-6.4 6.4-12.8 16-12.8zM304 128v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16zM560 736c9.6 0 16 6.4 16 16s-6.4 16-16 16h-44.8c-16 108.8-108.8 192-220.8 192s-204.8-83.2-220.8-192h-57.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h54.4c0-124.8 99.2-224 224-224s224 99.2 224 224h41.6zM294.4 928c96 0 172.8-70.4 188.8-160h-377.6c16 89.6 92.8 160 188.8 160zM294.4 544c-105.6 0-192 86.4-192 192h384c0-105.6-86.4-192-192-192z" />
233
+ <glyph unicode="&#xe9df;" glyph-name="microphone2" horiz-adv-x="608" d="M608 432v176c0 9.6-6.4 16-16 16s-16-6.4-16-16v-176c0-150.4-121.6-272-272-272s-272 121.6-272 272v176c0 9.6-6.4 16-16 16s-16-6.4-16-16v-176c0-163.2 128-294.4 288-304 0 0 0 0 0 0v-160h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h544c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256v160c0 0 0 0 0 0 160 9.6 288 140.8 288 304zM304 256c96 0 176 80 176 176v352c0 96-80 176-176 176s-176-80-176-176v-176c0 0 0 0 0 0v-176c0-96 80-176 176-176zM304 288c-80 0-144 64-144 144v163.2c35.2 12.8 153.6 44.8 288 0v-163.2c0-80-64-144-144-144zM304 928c80 0 144-64 144-144v-153.6c-128 38.4-243.2 16-288 0v153.6c0 80 64 144 144 144z" />
234
+ <glyph unicode="&#xe9e0;" glyph-name="mobile" horiz-adv-x="672" d="M48-64h576c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-576c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM32 912c0 9.6 6.4 16 16 16h576c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-576c-9.6 0-16 6.4-16 16v928zM326.4 60.8c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64zM326.4 156.8c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 12.8 32 32 32zM288 832h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
235
+ <glyph unicode="&#xe9e1;" glyph-name="money-bag" d="M1024 688c0 25.6-22.4 48-48 48h-144v163.2c0 22.4-6.4 41.6-22.4 51.2-16 12.8-38.4 12.8-64 3.2l-732.8-214.4c-9.6-3.2-12.8-9.6-12.8-16 0 0 0 0 0-3.2v-736c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v704zM992 192h-304c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h304v-288zM755.2 924.8c16 6.4 32 6.4 38.4 0s6.4-16 6.4-25.6v-163.2h-688l643.2 188.8zM976-32h-928c-9.6 0-16 6.4-16 16v720h944c9.6 0 16-6.4 16-16v-176h-304c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h304v-176c0-9.6-6.4-16-16-16zM812.8 268.8c38.4 0 70.4 32 70.4 70.4s-32 70.4-70.4 70.4-70.4-32-70.4-70.4 32-70.4 70.4-70.4zM812.8 374.4c19.2 0 38.4-16 38.4-38.4s-16-38.4-38.4-38.4c-19.2 0-38.4 16-38.4 38.4s16 38.4 38.4 38.4z" />
236
+ <glyph unicode="&#xe9e2;" glyph-name="money" horiz-adv-x="1280" d="M1232 608h-272v304c0 25.6-22.4 48-48 48h-864c-25.6 0-48-22.4-48-48v-608c0-25.6 22.4-48 48-48h240v-272c0-25.6 22.4-48 48-48h896c25.6 0 48 22.4 48 48v576c0 25.6-22.4 48-48 48zM32 304v608c0 9.6 6.4 16 16 16h864c9.6 0 16-6.4 16-16v-608c0-9.6-6.4-16-16-16h-864c-9.6 0-16 6.4-16 16zM1248-16c0-9.6-6.4-16-16-16h-896c-9.6 0-16 6.4-16 16v272h592c25.6 0 48 22.4 48 48v272h272c9.6 0 16-6.4 16-16v-576zM236.8 800h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-9.6 16-16 16zM236.8 448h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-9.6 16-16 16zM716.8 768h96c9.6 0 16 6.4 16 16s-9.6 16-16 16h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16zM716.8 416h96c9.6 0 16 6.4 16 16s-9.6 16-16 16h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16zM480 464c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM480 720c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112z" />
237
+ <glyph unicode="&#xe9e3;" glyph-name="monitor" horiz-adv-x="1344" d="M1296 960h-1248c-25.6 0-48-22.4-48-48v-768c0-25.6 22.4-48 48-48h496v-128h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h416c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v128h464c25.6 0 48 22.4 48 48v768c0 25.6-22.4 48-48 48zM800-32h-224v128h224v-128zM1312 144c0-9.6-6.4-16-16-16h-1248c-9.6 0-16 6.4-16 16v768c0 9.6 6.4 16 16 16h1248c9.6 0 16-6.4 16-16v-768z" />
238
+ <glyph unicode="&#xe9e4;" glyph-name="mouse" horiz-adv-x="576" d="M307.2 848c0 32 9.6 54.4 28.8 64 16 9.6 35.2 6.4 51.2-3.2 28.8-16 64-32 96-22.4 19.2 6.4 35.2 22.4 48 51.2 3.2 9.6 0 16-9.6 22.4-9.6 3.2-16 0-22.4-9.6-9.6-19.2-16-28.8-28.8-32-16-6.4-35.2 0-70.4 19.2-28.8 16-57.6 16-83.2 3.2-25.6-16-41.6-51.2-41.6-92.8 0-9.6 9.6-16 16-16s16 6.4 16 16zM288 419.2c35.2 0 64 28.8 64 64v96c0 35.2-28.8 64-64 64s-64-28.8-64-64v-96c0-35.2 28.8-64 64-64zM256 579.2c0 19.2 12.8 32 32 32s32-12.8 32-32v-96c0-19.2-12.8-32-32-32s-32 12.8-32 32v96zM0 512v-288c0-160 128-288 288-288s288 128 288 288v288c0 160-128 288-288 288s-288-128-288-288zM288 768c140.8 0 256-115.2 256-256v-288c0-140.8-115.2-256-256-256s-256 115.2-256 256v288c0 140.8 115.2 256 256 256z" />
239
+ <glyph unicode="&#xe9e5;" glyph-name="muscle" horiz-adv-x="960" d="M742.4 297.6c3.2 9.6 0 16-9.6 22.4-9.6 3.2-16 0-22.4-9.6-22.4-54.4-76.8-89.6-137.6-89.6-32 0-64 9.6-89.6 32-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4c32-25.6 70.4-38.4 108.8-38.4 76.8 0 144 44.8 169.6 108.8zM697.6 819.2c-3.2 3.2-83.2 80-185.6 115.2l-12.8 6.4c-89.6 41.6-198.4 16-262.4-60.8-12.8-12.8-19.2-25.6-16-41.6 0-16 9.6-28.8 19.2-38.4 3.2 0 3.2-3.2 3.2-6.4s0-6.4 0-12.8c3.2-76.8 64-137.6 140.8-137.6v0c22.4 0 67.2 12.8 86.4 73.6 3.2 16 9.6 25.6 9.6 32 6.4-96 57.6-182.4 105.6-246.4-6.4 0-16 3.2-22.4 3.2-60.8 0-115.2-35.2-140.8-89.6-51.2 38.4-108.8 57.6-172.8 57.6-60.8 0-118.4-19.2-166.4-54.4-16 19.2-41.6 32-67.2 32-9.6 0-16-6.4-16-16s6.4-16 16-16c19.2 0 38.4-12.8 48-32 0-3.2 6.4-6.4 9.6-6.4 6.4 0 9.6 0 12.8 3.2 44.8 38.4 102.4 57.6 160 57.6 64 0 121.6-22.4 169.6-64 3.2-3.2 9.6-6.4 16-3.2 6.4 0 9.6 6.4 9.6 9.6 12.8 51.2 60.8 89.6 115.2 89.6 22.4 0 44.8-6.4 64-19.2 22.4-22.4 35.2-35.2 38.4-38.4 6.4-6.4 16-6.4 22.4 0s6.4 12.8 3.2 22.4c-9.6 16-25.6 28.8-41.6 41.6-51.2 54.4-134.4 163.2-140.8 284.8 0 3.2-3.2 12.8-9.6 19.2 0 6.4-3.2 9.6-9.6 12.8-3.2 0-70.4 25.6-137.6-16-6.4-3.2-9.6-16-6.4-22.4s9.6-6.4 12.8-6.4c3.2 0 6.4 0 9.6 3.2 32 19.2 60.8 19.2 83.2 19.2-6.4-9.6-9.6-25.6-16-41.6-16-48-51.2-48-54.4-51.2-60.8 0-105.6 48-108.8 108.8 3.2 12.8 0 28.8-12.8 38.4 3.2 0 0 6.4 0 12.8s0 12.8 6.4 19.2c54.4 67.2 147.2 86.4 224 51.2l16-6.4c96-32 176-105.6 176-105.6 230.4-240 252.8-457.6 252.8-499.2-102.4-108.8-249.6-172.8-400-172.8-70.4 0-137.6 12.8-201.6 38.4-6.4 3.2-9.6 0-16-3.2-3.2-3.2-6.4-9.6-6.4-16 3.2-99.2-76.8-179.2-176-179.2-9.6 0-16-6.4-16-16s9.6-16 16-16c108.8 0 201.6 86.4 211.2 192 60.8-22.4 124.8-32 192-32 160 0 316.8 67.2 425.6 185.6 3.2 3.2 3.2 6.4 3.2 12.8 0 9.6-3.2 252.8-262.4 524.8z" />
240
+ <glyph unicode="&#xe9e6;" glyph-name="net" d="M1011.2 473.6l-140.8 102.4 57.6 163.2c3.2 9.6 0 16-9.6 19.2s-16-3.2-19.2-9.6l-57.6-169.6-150.4-51.2-176 128v140.8l150.4 105.6c6.4 6.4 9.6 16 6.4 22.4-6.4 6.4-12.8 9.6-22.4 3.2l-137.6-102.4-140.8 105.6c-6.4 6.4-16 3.2-22.4-3.2s-9.6-16 0-22.4l131.2-105.6v-144l-169.6-128-131.2 35.2-64 182.4c0 6.4-9.6 12.8-19.2 9.6-6.4-3.2-12.8-12.8-9.6-22.4l60.8-179.2-144-99.2c-6.4-6.4-9.6-16-3.2-22.4 3.2-3.2 9.6-6.4 12.8-6.4s6.4 0 9.6 3.2l147.2 102.4 134.4-35.2 67.2-208-73.6-96h-201.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h198.4l57.6-188.8c3.2-6.4 9.6-9.6 16-9.6 0 0 3.2 0 3.2 0 9.6 3.2 12.8 12.8 9.6 19.2l-57.6 201.6 73.6 102.4h220.8l80-118.4-54.4-172.8c-3.2-9.6 3.2-19.2 9.6-22.4 3.2 0 3.2-3.2 6.4-3.2 6.4 0 12.8 3.2 16 9.6l54.4 172.8 176 3.2c0 0 0 0 0 0 9.6 0 16 0 16 9.6s-6.4 12.8-16 12.8h-179.2l-86.4 121.6 64 201.6 144 51.2 144-102.4c3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 6.4 6.4 3.2 16-3.2 22.4zM608 320h-208l-64 192 166.4 118.4 166.4-118.4-60.8-192z" />
241
+ <glyph unicode="&#xe9e7;" glyph-name="network1" d="M0 912v-256c0-25.6 22.4-48 48-48h416c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48h-416c-25.6 0-48-22.4-48-48zM480 912v-256c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16zM352 576h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM976 352h-416c-25.6 0-48-22.4-48-48v-256c0-25.6 22.4-48 48-48h416c25.6 0 48 22.4 48 48v256c0 25.6-22.4 48-48 48zM992 48c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16v256c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16v-256zM864-64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192zM784 464c9.6 0 16 6.4 16 16v243.2c28.8 6.4 48 32 48 60.8 0 35.2-28.8 64-64 64-28.8 0-54.4-19.2-60.8-48h-147.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h147.2c6.4-22.4 22.4-38.4 44.8-44.8v-243.2c0-9.6 6.4-16 16-16zM752 784c0 19.2 12.8 32 32 32s32-12.8 32-32-12.8-32-32-32-32 12.8-32 32zM240 464c-9.6 0-16-6.4-16-16v-211.2c-28.8-6.4-48-32-48-60.8 0-35.2 28.8-64 64-64 28.8 0 54.4 19.2 60.8 48h147.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-147.2c-6.4 22.4-22.4 38.4-44.8 44.8v211.2c0 9.6-6.4 16-16 16zM272 176c0-19.2-12.8-32-32-32s-32 12.8-32 32 12.8 32 32 32 32-12.8 32-32z" />
242
+ <glyph unicode="&#xe9e8;" glyph-name="network2" d="M131.2 224c-25.6-25.6-25.6-64 0-89.6 12.8-12.8 28.8-19.2 44.8-19.2s32 6.4 44.8 19.2c25.6 25.6 25.6 64 0 89.6-22.4 25.6-64 25.6-89.6 0zM198.4 156.8c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8c6.4 6.4 12.8 9.6 22.4 9.6s16-3.2 22.4-9.6c12.8-12.8 12.8-32 0-44.8zM323.2 224c-25.6-25.6-25.6-64 0-89.6 12.8-12.8 28.8-19.2 44.8-19.2s32 6.4 44.8 19.2c25.6 25.6 25.6 64 0 89.6-22.4 25.6-64 25.6-89.6 0zM390.4 156.8c-12.8-12.8-32-12.8-44.8 0s-12.8 32 0 44.8c6.4 6.4 12.8 9.6 22.4 9.6s16-3.2 22.4-9.6c12.8-12.8 12.8-32 0-44.8zM614.4 851.2c-6.4 6.4-16 6.4-22.4 0-70.4-70.4-70.4-185.6 0-256 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4-57.6 57.6-57.6 153.6 0 211.2 3.2 6.4 3.2 16-3.2 22.4zM825.6 595.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c35.2 35.2 54.4 80 54.4 128s-19.2 92.8-54.4 128c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c28.8-28.8 44.8-64 44.8-105.6 0-38.4-16-76.8-44.8-105.6-9.6-6.4-9.6-16-3.2-22.4zM540.8 928c-6.4 6.4-16 6.4-22.4 0-112-112-112-294.4 0-406.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4-99.2 99.2-99.2 262.4 0 361.6 3.2 6.4 3.2 16-3.2 22.4zM912 515.2c3.2 0 9.6 0 12.8 3.2 112 112 112 294.4 0 406.4-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c99.2-99.2 99.2-262.4 0-361.6-6.4-6.4-6.4-16 0-22.4 3.2 0 6.4-3.2 9.6-3.2zM976 416h-240v224c0 3.2 0 3.2 0 6.4 16 3.2 28.8 9.6 41.6 22.4 16 12.8 22.4 32 22.4 54.4s-9.6 41.6-22.4 57.6c-28.8 28.8-83.2 28.8-112 0-16-16-25.6-35.2-25.6-57.6s9.6-41.6 22.4-57.6c12.8-12.8 25.6-19.2 41.6-22.4 0-3.2 0-3.2 0-6.4v-224h-656c-25.6 3.2-48-19.2-48-44.8v-384c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v384c0 25.6-22.4 48-48 48zM688 691.2c-9.6 6.4-16 19.2-16 32s6.4 25.6 12.8 35.2 22.4 12.8 35.2 12.8c12.8 0 25.6-6.4 35.2-12.8s12.8-22.4 12.8-35.2c0-12.8-6.4-25.6-12.8-35.2-19.2-16-51.2-16-67.2 3.2zM992-16c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v384c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-384z" />
243
+ <glyph unicode="&#xe9e9;" glyph-name="newspaper" d="M688 576c9.6 0 16 6.4 16 16v192c0 9.6-6.4 16-16 16h-512c-9.6 0-16-6.4-16-16v-192c0-9.6 6.4-16 16-16h512zM192 768h480v-160h-480v160zM144 432c0-9.6 6.4-16 16-16h512c9.6 0 16 6.4 16 16s-6.4 16-16 16h-512c-9.6 0-16-6.4-16-16zM160 256h512c9.6 0 16 6.4 16 16s-6.4 16-16 16h-512c-9.6 0-16-6.4-16-16s6.4-16 16-16zM160 128h512c9.6 0 16 6.4 16 16s-6.4 16-16 16h-512c-9.6 0-16-6.4-16-16s6.4-16 16-16zM976 736h-67.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h67.2c9.6 0 16-6.4 16-16v-704c0-9.6-6.4-16-16-16h-144v944c0 25.6-22.4 48-48 48h-736c-25.6 0-48-22.4-48-48v-908.8c0-35.2 32-67.2 67.2-67.2h604.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-604.8c-19.2 0-35.2 16-35.2 35.2v908.8c0 9.6 6.4 16 16 16h736c9.6 0 16-6.4 16-16v-960c0-9.6 6.4-16 16-16h160c25.6 0 48 22.4 48 48v704c0 25.6-22.4 48-48 48z" />
244
+ <glyph unicode="&#xe9ea;" glyph-name="nuclear-circle" horiz-adv-x="928" d="M464 368c44.8 0 80 35.2 80 80s-35.2 80-80 80-80-35.2-80-80 35.2-80 80-80zM464 496c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 22.4-48 48 22.4 48 48 48zM19.2 192c25.6-44.8 80-67.2 156.8-67.2 32 0 70.4 3.2 108.8 12.8 41.6-124.8 105.6-201.6 179.2-201.6s137.6 80 179.2 201.6c38.4-9.6 73.6-12.8 108.8-12.8 76.8 0 131.2 22.4 156.8 67.2 38.4 64 0 160-86.4 256 86.4 96 121.6 192 86.4 256-25.6 44.8-80 67.2-156.8 67.2-32 0-70.4-3.2-108.8-12.8-41.6 121.6-105.6 201.6-179.2 201.6s-137.6-80-179.2-201.6c-38.4 6.4-73.6 12.8-108.8 12.8-76.8 0-131.2-22.4-156.8-67.2-38.4-64 0-160 86.4-256-86.4-96-121.6-192-86.4-256zM464-32c-57.6 0-112 70.4-147.2 176 48 12.8 96 28.8 147.2 51.2 51.2-22.4 99.2-38.4 147.2-51.2-35.2-105.6-89.6-176-147.2-176zM272 448c0 38.4 3.2 73.6 6.4 108.8 28.8 19.2 57.6 38.4 89.6 57.6s64 35.2 96 48c32-16 64-32 96-48 32-19.2 60.8-38.4 89.6-57.6 3.2-35.2 6.4-70.4 6.4-108.8s-3.2-73.6-6.4-108.8c-28.8-19.2-57.6-38.4-89.6-57.6s-64-35.2-96-48c-32 16-64 32-96 48-32 19.2-60.8 38.4-89.6 57.6-3.2 35.2-6.4 70.4-6.4 108.8zM243.2 364.8c-35.2 25.6-67.2 54.4-92.8 83.2 25.6 28.8 57.6 54.4 92.8 83.2-3.2-25.6-3.2-54.4-3.2-83.2s0-54.4 3.2-83.2zM281.6 598.4c6.4 44.8 16 83.2 25.6 121.6 38.4-9.6 76.8-22.4 118.4-38.4-25.6-12.8-48-25.6-73.6-38.4-25.6-16-48-28.8-70.4-44.8zM502.4 681.6c41.6 16 80 28.8 118.4 38.4 9.6-38.4 19.2-76.8 25.6-121.6-22.4 16-44.8 28.8-70.4 44.8-25.6 12.8-48 25.6-73.6 38.4zM684.8 531.2c35.2-25.6 67.2-54.4 92.8-83.2-25.6-28.8-57.6-54.4-92.8-83.2 3.2 25.6 3.2 54.4 3.2 83.2s0 54.4-3.2 83.2zM646.4 297.6c-6.4-44.8-12.8-83.2-25.6-121.6-38.4 9.6-76.8 22.4-118.4 38.4 25.6 12.8 48 25.6 73.6 38.4 25.6 16 48 28.8 70.4 44.8zM352 252.8c25.6-12.8 48-25.6 73.6-38.4-41.6-16-80-28.8-118.4-38.4-9.6 38.4-19.2 76.8-25.6 121.6 22.4-16 44.8-28.8 70.4-44.8zM880 208c-25.6-41.6-83.2-51.2-128-51.2-28.8 0-64 3.2-99.2 12.8 12.8 48 22.4 99.2 28.8 153.6 44.8 32 86.4 67.2 118.4 102.4 76.8-86.4 108.8-166.4 80-217.6zM752 739.2c44.8 0 105.6-9.6 128-51.2 28.8-51.2-3.2-131.2-80-217.6-35.2 35.2-73.6 70.4-118.4 102.4-6.4 54.4-16 108.8-28.8 153.6 35.2 6.4 67.2 12.8 99.2 12.8zM464 928c57.6 0 112-70.4 147.2-176-48-12.8-96-28.8-147.2-51.2-51.2 22.4-99.2 38.4-147.2 51.2 35.2 105.6 89.6 176 147.2 176zM48 688c25.6 41.6 83.2 51.2 128 51.2 28.8 0 64-3.2 99.2-12.8-12.8-48-22.4-99.2-28.8-153.6-44.8-32-86.4-67.2-118.4-102.4-76.8 86.4-108.8 166.4-80 217.6zM128 425.6c35.2-35.2 73.6-70.4 118.4-102.4 6.4-54.4 16-108.8 28.8-153.6-35.2-6.4-67.2-12.8-99.2-12.8-44.8 0-105.6 9.6-128 51.2-28.8 51.2 3.2 131.2 80 217.6z" />
245
+ <glyph unicode="&#xe9eb;" glyph-name="office-file" horiz-adv-x="1056" d="M1040 336c-9.6 0-16-6.4-16-16v-336c0-9.6-6.4-16-16-16h-400v256c0 9.6-6.4 16-16 16s-16-6.4-16-16v-256h-96v256c0 9.6-6.4 16-16 16s-16-6.4-16-16v-256h-400c-9.6 0-16 6.4-16 16v336c0 9.6-6.4 16-16 16s-16-6.4-16-16v-336c0-25.6 22.4-48 48-48h960c25.6 0 48 22.4 48 48v336c0 9.6-6.4 16-16 16zM1008 800h-272v112c0 25.6-22.4 48-48 48h-320c-25.6 0-48-22.4-48-48v-112h-272c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h400v-22.4c0-44.8 35.2-80 80-80s80 35.2 80 80v22.4h400c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM352 912c0 9.6 6.4 16 16 16h320c9.6 0 16-6.4 16-16v-112h-352v112zM576 361.6c0-25.6-22.4-48-48-48s-48 19.2-48 48v22.4h96v-22.4zM1024 432c0-9.6-6.4-16-16-16h-960c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h400v-288c0-9.6 6.4-16 16-16s16 6.4 16 16v288h96v-288c0-9.6 6.4-16 16-16s16 6.4 16 16v288h400c9.6 0 16-6.4 16-16v-320z" />
246
+ <glyph unicode="&#xe9ec;" glyph-name="pacman" horiz-adv-x="1056" d="M512-64c137.6 0 265.6 54.4 361.6 150.4 3.2 3.2 3.2 6.4 3.2 12.8s-3.2 9.6-6.4 12.8l-342.4 336 348.8 339.2c3.2 3.2 6.4 6.4 6.4 12.8s-3.2 9.6-3.2 12.8c-96 96-224 150.4-361.6 150.4s-272-57.6-368-153.6c-96-96-150.4-224-150.4-361.6s54.4-265.6 150.4-361.6c96-96 227.2-150.4 361.6-150.4zM172.8 787.2c92.8 89.6 211.2 140.8 339.2 140.8 121.6 0 240-44.8 329.6-128l-348.8-339.2c-3.2-3.2-6.4-6.4-6.4-12.8s3.2-9.6 6.4-12.8l348.8-339.2c-89.6-83.2-204.8-128-329.6-128-128 0-249.6 51.2-339.2 140.8s-140.8 211.2-140.8 339.2 51.2 249.6 140.8 339.2zM652.8 448c0-44.8 35.2-80 80-80s80 35.2 80 80-35.2 80-80 80-80-35.2-80-80zM780.8 448c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM864 448c0-44.8 35.2-80 80-80s80 35.2 80 80-35.2 80-80 80-80-35.2-80-80zM992 448c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM518.4 636.8c54.4 0 96 41.6 96 96s-41.6 96-96 96-96-41.6-96-96 44.8-96 96-96zM518.4 796.8c35.2 0 64-28.8 64-64s-28.8-64-64-64-64 28.8-64 64 28.8 64 64 64z" />
247
+ <glyph unicode="&#xe9ed;" glyph-name="paper-fold" d="M976-51.2c9.6 0 19.2 3.2 28.8 9.6 12.8 9.6 19.2 22.4 19.2 38.4v796.8c0 19.2-12.8 38.4-32 44.8l-329.6 121.6c0 0 0 0-3.2 0 0 0-3.2 0-3.2 0-3.2 0-3.2 0-6.4 0 0 0 0 0 0 0l-313.6-128-268.8 108.8c-16 6.4-32 3.2-44.8-6.4-16-6.4-22.4-22.4-22.4-38.4v-796.8c0-19.2 12.8-38.4 28.8-44.8l300.8-118.4c3.2 0 3.2 0 6.4 0s3.2 0 6.4 0l313.6 124.8 304-108.8c6.4 0 9.6-3.2 16-3.2zM992 793.6v-796.8c0-6.4-3.2-9.6-6.4-12.8s-9.6-3.2-16-3.2l-297.6 108.8v832l310.4-112c6.4-3.2 9.6-9.6 9.6-16zM32 102.4v793.6c0 6.4 3.2 9.6 6.4 12.8s9.6 3.2 16 0l265.6-102.4v-828.8l-278.4 112c-6.4 0-9.6 6.4-9.6 12.8zM640 89.6l-288-115.2v832l288 115.2v-832z" />
248
+ <glyph unicode="&#xe9ee;" glyph-name="paper-plane-alt" d="M988.8 537.6l-908.8 345.6c-25.6 9.6-51.2 0-64-22.4-9.6-16-9.6-35.2 0-51.2l176-310.4c3.2-6.4 3.2-12.8 0-19.2l-185.6-393.6c-6.4-16-6.4-35.2 3.2-51.2s25.6-25.6 44.8-25.6c6.4 0 16 3.2 22.4 6.4l915.2 422.4c19.2 9.6 32 28.8 32 51.2s-12.8 38.4-35.2 48zM979.2 467.2l-918.4-425.6c-9.6-3.2-22.4 0-25.6 9.6-3.2 3.2-6.4 9.6 0 19.2l188.8 400c0 0 0 9.6 0 9.6h243.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-240c0 0-3.2 3.2-6.4 9.6l-179.2 304c-6.4 9.6-3.2 16 0 19.2 3.2 6.4 9.6 9.6 19.2 9.6 3.2 0 6.4 0 6.4-3.2l912-345.6c12.8-3.2 12.8-16 12.8-19.2 0 0 0-12.8-12.8-19.2z" />
249
+ <glyph unicode="&#xe9ef;" glyph-name="paper-plane" horiz-adv-x="1056" d="M35.2 563.2l384-118.4c6.4-3.2 9.6-6.4 9.6-12.8l44.8-444.8c3.2-32 28.8-48 51.2-48 19.2 0 35.2 9.6 44.8 28.8l480 915.2c9.6 16 6.4 35.2-3.2 51.2 0 3.2-3.2 3.2-3.2 3.2s0 3.2 0 3.2c0 0-3.2 0-3.2 3.2-12.8 12.8-32 19.2-51.2 12.8l-953.6-297.6c-22.4-6.4-35.2-25.6-35.2-48s16-41.6 35.2-48zM544-22.4c-3.2-9.6-12.8-9.6-16-9.6-9.6 0-19.2 6.4-19.2 19.2l-44.8 444.8c0 3.2 0 6.4-3.2 12.8l563.2 460.8c0-3.2 0-3.2-3.2-6.4l-476.8-921.6zM44.8 630.4l953.6 297.6c0 0 0 0 3.2 0l-560-460.8c-3.2 3.2-6.4 3.2-9.6 6.4l-384 118.4c-16 3.2-16 16-16 19.2 0 6.4 3.2 16 12.8 19.2z" />
250
+ <glyph unicode="&#xe9f0;" glyph-name="pause" d="M400 832c-9.6 0-16-6.4-16-16v-768c0-9.6 6.4-16 16-16s16 6.4 16 16v768c0 9.6-6.4 16-16 16zM608 816v-768c0-9.6 6.4-16 16-16s16 6.4 16 16v768c0 9.6-6.4 16-16 16s-16-6.4-16-16z" />
251
+ <glyph unicode="&#xe9f1;" glyph-name="pen-head" horiz-adv-x="704" d="M6.4 518.4c-6.4-12.8-6.4-28.8 0-44.8l236.8-512c6.4-16 25.6-25.6 44.8-25.6h128c19.2 0 35.2 9.6 44.8 28.8l240 512c6.4 16 6.4 32-3.2 44.8l-156.8 265.6 57.6 105.6c9.6 16 6.4 32 0 48-12.8 9.6-28.8 19.2-44.8 19.2h-416c-19.2 0-32-9.6-41.6-25.6s-9.6-32 0-48l60.8-96c3.2-3.2 3.2-6.4 6.4-6.4-3.2-3.2-3.2-6.4-6.4-6.4l-150.4-259.2zM121.6 902.4c-3.2 6.4-3.2 12.8 0 16s6.4 9.6 16 9.6h416c9.6 0 12.8-6.4 12.8-6.4s3.2-9.6 0-16l-54.4-105.6h-313.6c-6.4 0-9.6 3.2-12.8 6.4l-64 96zM185.6 761.6c3.2 3.2 6.4 6.4 12.8 6.4h313.6l156.8-265.6c3.2-3.2 3.2-9.6 0-16l-240-512c-3.2-3.2-9.6-6.4-12.8-6.4h-48v384c57.6 6.4 102.4 54.4 102.4 112 0 60.8-51.2 112-112 112s-112-51.2-112-112c0-54.4 41.6-102.4 92.8-112v-384h-51.2c-6.4 0-12.8 3.2-16 9.6l-236.8 512c-3.2 6.4-3.2 9.6 0 16l150.4 256zM355.2 384c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80z" />
252
+ <glyph unicode="&#xe9f2;" glyph-name="pen-pencil" d="M995.2 822.4l-108.8 108.8c-19.2 19.2-51.2 19.2-67.2 0l-128-128-54.4 54.4 32 32c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-307.2-307.2c-6.4-6.4-6.4-16 0-22.4 3.2-6.4 6.4-6.4 12.8-6.4s9.6 0 12.8 3.2l249.6 252.8 60.8-54.4-67.2-70.4c0 0 0 0 0 0l-409.6-406.4c-19.2-19.2-22.4-48-3.2-67.2l-99.2-96c-9.6-9.6-16-22.4-16-35.2s3.2-25.6 12.8-35.2l9.6-9.6-99.2-99.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2 9.6-9.6c9.6-9.6 22.4-12.8 35.2-12.8s25.6 6.4 35.2 12.8l99.2 99.2c9.6-9.6 22.4-12.8 32-12.8 12.8 0 25.6 3.2 35.2 12.8l425.6 432 198.4 198.4c16 19.2 16 48-3.2 67.2zM179.2 51.2c-6.4-6.4-16-6.4-22.4 0l-41.6 41.6c-6.4 6.4-6.4 16 0 22.4l96 96 64-64-96-96zM345.6 147.2c-6.4-6.4-16-6.4-22.4 0l-108.8 108.8c-6.4 6.4-6.4 16 0 22.4l393.6 393.6 131.2-131.2-393.6-393.6zM972.8 777.6l-211.2-211.2-134.4 131.2 12.8 12.8 201.6 198.4c6.4 6.4 19.2 6.4 25.6 0l105.6-108.8c6.4-6.4 6.4-16 0-22.4z" />
253
+ <glyph unicode="&#xe9f3;" glyph-name="pen-scale" horiz-adv-x="640" d="M153.6 832c-3.2 0-9.6 0-12.8-6.4l-137.6-198.4c-3.2-3.2-3.2-6.4-3.2-9.6v-537.6c0-80 64-144 144-144s144 64 144 144v537.6c0 3.2 0 6.4-3.2 9.6l-118.4 198.4c0 3.2-6.4 6.4-12.8 6.4zM32 608h96v-416h-96v416zM256 80c0-60.8-51.2-112-112-112s-112 51.2-112 112v16h224v-16zM256 128h-224v32h224v-32zM256 192h-96v416h96v-416zM51.2 640l102.4 147.2 86.4-147.2h-188.8zM368 960c-9.6 0-16-6.4-16-16v-992c0-9.6 6.4-16 16-16h256c9.6 0 16 6.4 16 16v992c0 9.6-6.4 16-16 16h-256zM608-32h-224v128h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v128h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v128h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v128h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v128h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128v160h224v-960z" />
254
+ <glyph unicode="&#xe9f4;" glyph-name="pen-paper" horiz-adv-x="832" d="M352 768h-304c-25.6 0-48-22.4-48-48v-736c0-25.6 22.4-48 48-48h736c25.6 0 48 22.4 48 48v752c0 9.6-6.4 16-16 16s-16-6.4-16-16v-752c0-9.6-6.4-16-16-16h-736c-9.6 0-16 6.4-16 16v736c0 9.6 6.4 16 16 16h304c9.6 0 16 6.4 16 16s-6.4 16-16 16zM816 844.8c0 32-12.8 60.8-35.2 83.2-44.8 44.8-121.6 44.8-163.2 0l-297.6-297.6c-3.2-3.2-3.2-3.2-3.2-6.4l-44.8-176c0-6.4 0-9.6 3.2-16 3.2-3.2 6.4-6.4 12.8-6.4 0 0 3.2 0 3.2 0l185.6 35.2c3.2 0 6.4 3.2 9.6 3.2l297.6 297.6c19.2 22.4 32 51.2 32 83.2zM576 838.4l48-48-224-224-48 48 224 224zM307.2 464l28.8 118.4 96-96-124.8-22.4zM470.4 496l-48 48 224 224 48-48-224-224zM716.8 742.4l-118.4 118.4 41.6 41.6c32 32 86.4 32 118.4 0 16-16 25.6-38.4 25.6-60.8s-9.6-44.8-25.6-60.8l-41.6-38.4zM720 240c0 9.6-6.4 16-16 16h-544c-9.6 0-16-6.4-16-16s6.4-16 16-16h544c9.6 0 16 6.4 16 16zM160 128c-9.6 0-16-6.4-16-16s6.4-16 16-16h352c9.6 0 16 6.4 16 16s-6.4 16-16 16h-352z" />
255
+ <glyph unicode="&#xe9f5;" glyph-name="pen" horiz-adv-x="864" d="M726.4 544c12.8 0 25.6 3.2 38.4 6.4 41.6 9.6 73.6 38.4 96 73.6 3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4-16-28.8-44.8-51.2-76.8-60.8s-64-3.2-92.8 12.8l-281.6 166.4c-60.8 35.2-80 115.2-44.8 176 3.2 6.4 0 16-6.4 22.4s-16 3.2-19.2-6.4c-32-54.4-28.8-121.6 6.4-169.6-105.6-208-307.2-323.2-307.2-326.4-9.6-3.2-9.6-9.6-9.6-16 80-246.4 86.4-483.2 86.4-486.4 0-9.6 6.4-16 16-16 0 0 0 0 0 0s0 0 0 0 0 0 0 0 0 0 0 0v0c3.2 0 6.4 0 6.4 3.2 3.2 0 211.2 115.2 460.8 166.4 6.4 0 12.8 6.4 12.8 16 0 3.2 9.6 214.4 118.4 358.4 6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2c-102.4-134.4-121.6-316.8-124.8-364.8-176-38.4-329.6-108.8-406.4-144l115.2 198.4c3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-115.2-201.6c-6.4 83.2-25.6 252.8-80 428.8 44.8 28.8 208 134.4 304 320 9.6-6.4 16-16 28.8-22.4l281.6-166.4c22.4-12.8 51.2-19.2 76.8-19.2zM342.4 464c-35.2 0-67.2-19.2-83.2-48-12.8-22.4-16-48-9.6-73.6s22.4-44.8 44.8-57.6c16-9.6 32-12.8 48-12.8 35.2 0 67.2 19.2 83.2 48 25.6 44.8 9.6 105.6-35.2 131.2-16 6.4-32 12.8-48 12.8zM396.8 336c-16-28.8-57.6-41.6-86.4-22.4-16 6.4-25.6 19.2-28.8 38.4s-3.2 32 6.4 48c12.8 19.2 32 32 54.4 32 9.6 0 22.4-3.2 32-9.6 28.8-16 41.6-57.6 22.4-86.4z" />
256
+ <glyph unicode="&#xe9f6;" glyph-name="pencil" d="M54.4 310.4c-3.2 0-3.2-3.2-3.2-6.4-3.2-6.4-9.6-12.8-9.6-22.4l-41.6-348.8 348.8 41.6c9.6 0 16 3.2 22.4 9.6 0 0 3.2 0 3.2 3.2 0 0 3.2 0 3.2 3.2l633.6 633.6c19.2 19.2 19.2 51.2 0 67.2l-252.8 252.8c-19.2 19.2-51.2 19.2-67.2 0l-636.8-633.6c0 0 0 0 0 0zM518.4 729.6l57.6-57.6-448-444.8c-22.4 32-38.4 57.6-44.8 70.4l435.2 432zM361.6 19.2c-25.6 16-48 28.8-67.2 44.8l441.6 448 57.6-57.6-432-435.2zM268.8 89.6c0-3.2 0-3.2 0 0-51.2 38.4-89.6 76.8-121.6 112l448 448 115.2-115.2-441.6-444.8zM323.2 6.4l-179.2-22.4c-60.8 9.6-92.8 80-99.2 96l25.6 176c32-51.2 108.8-156.8 252.8-249.6zM41.6 22.4c9.6-16 25.6-32 41.6-48l-51.2-6.4 9.6 54.4zM710.4 921.6c3.2 3.2 9.6 6.4 12.8 6.4s9.6-3.2 12.8-6.4l249.6-249.6c6.4-6.4 6.4-16 0-22.4l-169.6-169.6-275.2 275.2 169.6 166.4z" />
257
+ <glyph unicode="&#xe9f7;" glyph-name="pendrive" d="M784 608c-9.6 0-16-6.4-16-16v-368c0-140.8-115.2-256-256-256s-256 115.2-256 256v368c0 9.6-6.4 16-16 16s-16-6.4-16-16v-368c0-156.8 131.2-288 288-288s288 128 288 288v368c0 9.6-6.4 16-16 16zM780.8 704h-108.8v208c0 25.6-22.4 48-48 48h-224c-25.6 0-48-22.4-48-48v-208h-108.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h537.6c9.6 0 16 6.4 16 16s-6.4 16-16 16zM384 912c0 9.6 6.4 16 16 16h224c9.6 0 16-6.4 16-16v-208h-256v208zM483.2 790.4c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM604.8 790.4c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
258
+ <glyph unicode="&#xe9f8;" glyph-name="phone" d="M1011.2 128c0 12.8-6.4 25.6-12.8 35.2l-211.2 208c-19.2 19.2-51.2 19.2-67.2 0l-64-64c-9.6-9.6-12.8-22.4-12.8-35.2 0-6.4 0-12.8 3.2-19.2-86.4-60.8-220.8 70.4-224 70.4-6.4 6.4-25.6 25.6-32 32 0 0-134.4 137.6-70.4 224 6.4-3.2 9.6-3.2 16-3.2 12.8 0 25.6 6.4 35.2 12.8l64 64c6.4 12.8 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-211.2 211.2c-19.2 19.2-51.2 19.2-67.2 0l-64-64c-12.8-12.8-16-25.6-16-38.4 0-3.2 0-6.4 0-9.6-28.8-25.6-115.2-112-57.6-249.6 35.2-86.4 99.2-204.8 256-361.6s275.2-217.6 361.6-256c32-12.8 64-19.2 89.6-19.2 89.6 0 144 57.6 160 80 3.2 0 6.4 0 6.4 0 12.8 0 25.6 6.4 35.2 12.8l64 64c12.8 9.6 19.2 22.4 19.2 35.2zM112 844.8l64 64c3.2 3.2 6.4 3.2 12.8 3.2s9.6-3.2 12.8-3.2l211.2-208c0-3.2 3.2-6.4 3.2-12.8s-3.2-9.6-3.2-12.8l-64-64c-6.4-6.4-16-6.4-22.4 0l-214.4 211.2c-3.2 3.2-3.2 6.4-3.2 9.6s0 9.6 3.2 12.8zM649.6-16c-83.2 35.2-198.4 96-352 246.4-153.6 153.6-214.4 268.8-249.6 352-48 118.4 19.2 188.8 48 211.2l198.4-195.2c-80-105.6 67.2-259.2 73.6-265.6s25.6-25.6 32-32c6.4-6.4 102.4-99.2 195.2-99.2 25.6 0 51.2 6.4 73.6 25.6l198.4-195.2c-28.8-28.8-102.4-96-217.6-48zM972.8 115.2l-64-64c-6.4-6.4-16-6.4-22.4 0l-211.2 208c-3.2 3.2-3.2 9.6-3.2 12.8s3.2 9.6 3.2 12.8l64 64c3.2 3.2 6.4 3.2 12.8 3.2s9.6-3.2 12.8-3.2l211.2-208c3.2-3.2 3.2-6.4 3.2-12.8s-3.2-9.6-6.4-12.8z" />
259
+ <glyph unicode="&#xe9f9;" glyph-name="pillar" horiz-adv-x="992" d="M208 544c115.2 0 208 92.8 208 208 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-96-80-176-176-176s-176 80-176 176 80 176 176 176h576c96 0 176-80 176-176s-80-176-176-176-176 80-176 176c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-115.2 92.8-208 208-208s208 92.8 208 208-92.8 208-208 208h-576c-115.2 0-208-92.8-208-208s92.8-208 208-208zM576 560c0 9.6-6.4 16-16 16h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128c9.6 0 16 6.4 16 16zM176 448v-512c0-9.6 6.4-16 16-16s16 6.4 16 16v512c0 9.6-6.4 16-16 16s-16-6.4-16-16zM368 448v-512c0-9.6 6.4-16 16-16s16 6.4 16 16v512c0 9.6-6.4 16-16 16s-16-6.4-16-16zM576-80c9.6 0 16 6.4 16 16v512c0 9.6-6.4 16-16 16s-16-6.4-16-16v-512c0-9.6 6.4-16 16-16zM752 448v-512c0-9.6 6.4-16 16-16s16 6.4 16 16v512c0 9.6-6.4 16-16 16s-16-6.4-16-16zM131.2 752c0-9.6 6.4-16 16-16s16 6.4 16 16c0 25.6 19.2 48 48 48 9.6 0 16 6.4 16 16s-9.6 16-16 16c-44.8 0-80-35.2-80-80zM739.2 752c0 25.6 22.4 48 48 48 9.6 0 16 6.4 16 16s-9.6 16-16 16c-44.8 0-80-35.2-80-80 0-9.6 6.4-16 16-16s16 6.4 16 16z" />
260
+ <glyph unicode="&#xe9fa;" glyph-name="pin-man-range" horiz-adv-x="608" d="M112 512v-124.8c0-67.2 51.2-121.6 115.2-128l35.2-195.2c3.2-16 22.4-32 41.6-32s38.4 16 41.6 35.2l35.2 195.2c64 6.4 115.2 60.8 115.2 128v118.4c0 70.4-38.4 134.4-96 169.6 41.6 28.8 64 76.8 64 128 0 86.4-73.6 156.8-160 156.8s-160-70.4-160-156.8c0-51.2 22.4-96 64-124.8-60.8-38.4-96-99.2-96-169.6zM246.4 659.2c6.4 3.2 9.6 6.4 9.6 12.8s-3.2 12.8-9.6 16c-44.8 22.4-73.6 64-73.6 112 0 70.4 57.6 124.8 128 124.8s128-57.6 128-124.8c0-48-28.8-92.8-73.6-115.2 0 0-3.2-6.4-3.2-12.8s3.2-12.8 9.6-12.8c60.8-25.6 102.4-86.4 102.4-153.6v-118.4c0-51.2-44.8-96-99.2-96-6.4 0-16-6.4-16-12.8l-35.2-208c0-9.6-19.2-9.6-19.2 0l-35.2 208c0 6.4-9.6 12.8-16 12.8-54.4 0-99.2 41.6-99.2 96v124.8c0 67.2 41.6 124.8 102.4 147.2zM608 19.2c0 51.2-118.4 70.4-188.8 76.8-9.6 0-16-6.4-16-12.8 0-9.6 6.4-16 12.8-16 121.6-12.8 160-38.4 160-44.8-3.2-12.8-86.4-51.2-272-51.2s-268.8 32-272 48c0 6.4 41.6 32 156.8 44.8 9.6 0 16 9.6 12.8 16s-6.4 16-16 16c-70.4-6.4-185.6-25.6-185.6-76.8 0-64 198.4-83.2 304-83.2s304 16 304 83.2z" />
261
+ <glyph unicode="&#xe9fb;" glyph-name="pin-man" horiz-adv-x="416" d="M0 464v-131.2c0-70.4 60.8-134.4 134.4-140.8l41.6-217.6c3.2-22.4 22.4-38.4 44.8-38.4s41.6 16 44.8 38.4l32 217.6c67.2 6.4 118.4 64 118.4 140.8v124.8c0 80-38.4 150.4-99.2 188.8 48 32 76.8 86.4 76.8 140.8 0 96-76.8 176-172.8 176s-172.8-76.8-172.8-176c0-57.6 22.4-108.8 64-140.8-67.2-38.4-112-108.8-112-182.4zM150.4 627.2c6.4 3.2 9.6 6.4 9.6 12.8s-3.2 12.8-9.6 16c-44.8 22.4-73.6 70.4-73.6 128 3.2 80 67.2 144 144 144 80 0 140.8-64 140.8-144 0-54.4-32-102.4-86.4-128-3.2-3.2-6.4-6.4-6.4-12.8s3.2-12.8 9.6-12.8c64-25.6 105.6-92.8 105.6-172.8v-124.8c0-60.8-44.8-108.8-102.4-108.8-6.4 0-16-6.4-16-12.8l-32-230.4c0-6.4-6.4-9.6-12.8-9.6s-12.8 6.4-12.8 9.6l-44.8 230.4c0 6.4-9.6 12.8-16 12.8-60.8 0-115.2 51.2-115.2 108.8v131.2c0 70.4 48 137.6 118.4 163.2z" />
262
+ <glyph unicode="&#xe9fc;" glyph-name="pin" horiz-adv-x="736" d="M192 361.6c3.2 9.6 0 16-9.6 22.4-9.6 3.2-16 0-22.4-9.6l-156.8-374.4c-9.6-22.4 0-44.8 19.2-57.6 9.6-3.2 19.2-6.4 28.8-6.4 12.8 0 28.8 6.4 38.4 16l259.2 300.8c6.4 6.4 6.4 16-3.2 22.4-6.4 6.4-16 6.4-22.4-3.2l-259.2-297.6c-6.4-9.6-16-6.4-22.4-3.2-3.2 3.2-9.6 9.6-6.4 19.2l156.8 371.2zM736 764.8c0 16-6.4 32-22.4 41.6l-259.2 147.2c-19.2 9.6-41.6 6.4-57.6-9.6-9.6-9.6-12.8-22.4-9.6-35.2l19.2-131.2c0-6.4-3.2-9.6-6.4-12.8l-377.6-172.8c-12.8-6.4-22.4-22.4-22.4-38.4s9.6-28.8 22.4-38.4l505.6-284.8c6.4-3.2 16-6.4 22.4-6.4 25.6 0 44.8 19.2 44.8 44.8l-22.4 400c0 6.4 3.2 9.6 6.4 12.8l128 48c16 6.4 28.8 19.2 28.8 35.2zM697.6 758.4l-128-48c-19.2-6.4-28.8-25.6-28.8-44.8l22.4-400c0-6.4-6.4-12.8-12.8-12.8-3.2 0-3.2 0-6.4 3.2l-505.6 288c-6.4 3.2-6.4 9.6-6.4 9.6 0 3.2 0 6.4 6.4 9.6l374.4 172.8c19.2 9.6 28.8 25.6 25.6 44.8l-19.2 131.2c0 3.2 0 6.4 3.2 9.6s6.4 6.4 9.6 6.4c3.2 0 3.2 0 6.4-3.2l259.2-147.2c6.4 0 6.4-6.4 6.4-9.6s0-6.4-6.4-9.6z" />
263
+ <glyph unicode="&#xe9fd;" glyph-name="plane" horiz-adv-x="1472" d="M294.4 224h169.6c0 0 0 0 0 0 32-166.4 144-288 278.4-288s246.4 121.6 278.4 288h134.4c-28.8-19.2-48-54.4-48-89.6 0-60.8 51.2-112 112-112s112 51.2 112 112c0 38.4-19.2 70.4-48 89.6h169.6c9.6 0 16 6.4 16 16s-3.2 16-12.8 16h-428.8c3.2 22.4 3.2 41.6 3.2 64 0 83.2-19.2 160-54.4 224h192c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-6.4 0-9.6-3.2-12.8-6.4-51.2 80-124.8 131.2-211.2 134.4v224c0 9.6-6.4 16-16 16s-16-6.4-16-16v-224c0 0 0 0 0 0-76.8-9.6-144-64-192-128v0h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h172.8c-35.2-64-54.4-140.8-54.4-224 0-22.4 3.2-44.8 3.2-64h-441.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h147.2c-28.8-19.2-48-54.4-48-89.6 0-60.8 51.2-112 112-112s112 51.2 112 112c0 35.2-19.2 70.4-44.8 89.6zM1299.2 134.4c0-44.8-35.2-80-80-80s-80 35.2-80 80 35.2 80 80 80 80-38.4 80-80zM742.4 672c140.8 0 256-156.8 256-352s-115.2-352-256-352-256 156.8-256 352 115.2 352 256 352zM227.2 54.4c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80zM656 448h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
264
+ <glyph unicode="&#xe9fe;" glyph-name="play-end" d="M166.4-22.4c9.6-9.6 19.2-12.8 32-12.8s22.4 3.2 32 12.8l438.4 438.4c9.6 9.6 12.8 19.2 12.8 32s-3.2 22.4-12.8 32l-438.4 438.4c-19.2 19.2-44.8 19.2-64 0s-19.2-44.8 0-64l406.4-406.4-406.4-406.4c-16-16-16-44.8 0-64zM768 899.2v-902.4c0-25.6 22.4-44.8 48-44.8s48 19.2 48 44.8v902.4c0 25.6-22.4 44.8-48 44.8s-48-19.2-48-44.8z" />
265
+ <glyph unicode="&#xe9ff;" glyph-name="play-next" d="M252.8-35.2c9.6-9.6 22.4-12.8 32-12.8s22.4 3.2 32 12.8l454.4 451.2c19.2 19.2 19.2 48 0 67.2l-451.2 448c-19.2 19.2-48 19.2-67.2 0s-16-48 0-67.2l416-416-416-416c-16-19.2-16-48 0-67.2z" />
266
+ <glyph unicode="&#xea00;" glyph-name="play-previous" d="M771.2 931.2c-19.2 19.2-48 19.2-67.2 0l-451.2-451.2c-19.2-19.2-19.2-48 0-67.2l451.2-448c9.6-9.6 22.4-12.8 32-12.8 12.8 0 22.4 3.2 32 12.8 19.2 19.2 19.2 48 0 67.2l-416 416 416 416c19.2 19.2 19.2 48 3.2 67.2z" />
267
+ <glyph unicode="&#xea01;" glyph-name="play-start" d="M857.6 918.4c-19.2 19.2-44.8 19.2-64 0l-438.4-438.4c-9.6-9.6-12.8-19.2-12.8-32s3.2-22.4 12.8-32l438.4-438.4c9.6-9.6 19.2-12.8 32-12.8s22.4 3.2 32 12.8c19.2 19.2 19.2 44.8 0 64l-406.4 406.4 406.4 406.4c16 16 16 44.8 0 64zM256-3.2v902.4c0 25.6-22.4 44.8-48 44.8s-48-19.2-48-44.8v-902.4c0-25.6 22.4-44.8 48-44.8s48 19.2 48 44.8z" />
268
+ <glyph unicode="&#xea02;" glyph-name="play-button" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM627.2 486.4l-169.6 128c-9.6 6.4-19.2 9.6-28.8 9.6-25.6 0-44.8-22.4-44.8-48v-256c0-25.6 19.2-48 44.8-48 9.6 0 19.2 3.2 28.8 9.6l169.6 128c12.8 9.6 19.2 22.4 19.2 38.4s-6.4 28.8-19.2 38.4zM608 435.2l-169.6-128c-9.6-6.4-22.4-3.2-22.4 12.8v256c0 9.6 6.4 16 12.8 16 3.2 0 6.4 0 9.6-3.2l169.6-128c6.4-3.2 6.4-9.6 6.4-12.8s-3.2-9.6-6.4-12.8z" />
269
+ <glyph unicode="&#xea03;" glyph-name="play-store" horiz-adv-x="960" d="M121.6-64c19.2 0 41.6 6.4 57.6 16l707.2 400c35.2 19.2 57.6 57.6 57.6 96 0 41.6-22.4 80-57.6 99.2l-707.2 396.8c-16 9.6-38.4 16-57.6 16-67.2 0-121.6-51.2-121.6-112v-796.8c0-64 54.4-115.2 121.6-115.2zM163.2-22.4c-12.8-6.4-28.8-9.6-41.6-9.6s-22.4 3.2-35.2 6.4l422.4 451.2 153.6-163.2-499.2-284.8zM867.2 518.4c25.6-16 41.6-41.6 41.6-70.4s-16-54.4-41.6-67.2l-176-99.2-160 169.6 160 169.6 176-102.4zM121.6 928c16 0 28.8-3.2 41.6-9.6l499.2-281.6-153.6-163.2-422.4 448c9.6 3.2 22.4 6.4 35.2 6.4zM32 848c0 22.4 9.6 41.6 25.6 57.6l432-457.6-432-454.4c-16 12.8-25.6 32-25.6 54.4v800z" />
270
+ <glyph unicode="&#xea04;" glyph-name="play" d="M195.2-48c9.6 0 19.2 3.2 25.6 9.6l633.6 451.2c12.8 9.6 19.2 22.4 19.2 38.4s-6.4 28.8-19.2 38.4l-630.4 444.8c-16 9.6-44.8 12.8-60.8 3.2-12.8-6.4-35.2-22.4-35.2-38.4v-899.2c0-16 22.4-32 35.2-41.6 6.4-3.2 25.6-6.4 32-6.4zM224 806.4l508.8-358.4-508.8-358.4v716.8z" />
271
+ <glyph unicode="&#xea05;" glyph-name="playing-card" horiz-adv-x="1088" d="M592 960h-544c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h544c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM608-16c0-9.6-6.4-16-16-16h-544c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h544c9.6 0 16-6.4 16-16v-928zM704-48c0-9.6 6.4-16 16-16h320c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-320c-9.6 0-16-6.4-16-16zM128 896c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM128 800c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32zM512 128c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM512 32c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32zM1024 64c0 35.2-28.8 64-64 64s-64-28.8-64-64 28.8-64 64-64 64 28.8 64 64zM928 64c0 19.2 12.8 32 32 32s32-12.8 32-32-12.8-32-32-32-32 12.8-32 32zM768 339.2c-12.8 12.8-28.8 35.2-51.2 57.6-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c35.2-35.2 60.8-73.6 60.8-73.6 3.2-3.2 6.4-9.6 12.8-9.6 0 0 0 0 0 0 6.4 0 9.6 6.4 12.8 9.6 54.4 73.6 124.8 128 128 128 3.2 3.2 6.4 9.6 6.4 12.8 0 6.4-3.2 9.6-6.4 12.8-44.8 35.2-96 92.8-124.8 121.6 0 0-3.2 3.2-3.2 3.2-3.2 3.2-6.4 3.2-12.8 3.2-3.2 0-9.6-3.2-9.6-6.4-38.4-44.8-60.8-64-64-64-6.4-6.4-6.4-16-3.2-22.4 6.4-6.4 16-6.4 22.4-3.2 0 0 19.2 19.2 54.4 54.4 25.6-28.8 64-70.4 102.4-102.4-19.2-12.8-60.8-51.2-102.4-99.2zM387.2 540.8c-25.6 0-48-9.6-60.8-28.8-16 19.2-38.4 28.8-60.8 28.8-44.8 0-83.2-38.4-83.2-83.2 0-22.4 6.4-41.6 22.4-57.6l108.8-112c3.2-3.2 6.4-3.2 12.8-3.2v0c3.2 0 9.6 3.2 12.8 3.2l102.4 105.6c12.8 12.8 28.8 35.2 28.8 64 0 48-38.4 83.2-83.2 83.2zM416 416l-92.8-92.8-99.2 99.2c-9.6 9.6-12.8 22.4-12.8 35.2 0 28.8 22.4 51.2 51.2 51.2 22.4 0 38.4-12.8 48-35.2 3.2-12.8 25.6-12.8 28.8 0 6.4 19.2 25.6 35.2 48 35.2 28.8 0 51.2-22.4 51.2-51.2 0-12.8-6.4-25.6-22.4-41.6z" />
272
+ <glyph unicode="&#xea06;" glyph-name="plus-box" d="M976 928h-896c-25.6 0-48-22.4-48-48v-899.2c0-22.4 22.4-44.8 48-44.8h899.2c25.6 0 48 22.4 48 48v896c-3.2 25.6-25.6 48-51.2 48zM992-16c0-9.6-6.4-16-16-16h-896c-9.6 0-16 6.4-16 16v896c0 9.6 6.4 16 16 16h899.2c6.4 0 12.8-6.4 12.8-16v-896zM704 448h-160v160c0 9.6-6.4 16-16 16s-16-6.4-16-16v-160h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160v-160c0-9.6 6.4-16 16-16s16 6.4 16 16v160h160c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
273
+ <glyph unicode="&#xea07;" glyph-name="plus-circle" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM752 448h-208v240c0 9.6-6.4 16-16 16s-16-6.4-16-16v-240h-240c-9.6 0-16-6.4-16-16s6.4-16 16-16h240v-208c0-9.6 6.4-16 16-16s16 6.4 16 16v208h208c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
274
+ <glyph unicode="&#xea08;" glyph-name="plus-gap" d="M512 960c-137.6 0-265.6-54.4-361.6-150.4s-150.4-224-150.4-361.6 54.4-265.6 150.4-361.6c96-96 224-150.4 361.6-150.4s265.6 54.4 361.6 150.4c96 96 150.4 224 150.4 361.6s-54.4 265.6-150.4 361.6c-96 96-224 150.4-361.6 150.4zM851.2 108.8c-89.6-89.6-211.2-140.8-339.2-140.8s-249.6 51.2-339.2 140.8-140.8 211.2-140.8 339.2 51.2 249.6 140.8 339.2 211.2 140.8 339.2 140.8 249.6-51.2 339.2-140.8 140.8-211.2 140.8-339.2-51.2-249.6-140.8-339.2zM528 432c-9.6 0-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16v192c0 9.6-6.4 16-16 16zM528 720c-9.6 0-16-6.4-16-16v-192c0-9.6 6.4-16 16-16s16 6.4 16 16v192c0 9.6-6.4 16-16 16zM480 480h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM768 480h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
275
+ <glyph unicode="&#xea09;" glyph-name="plus-open" d="M992 448h-480v480c0 9.6-6.4 16-16 16s-16-6.4-16-16v-480h-448c-9.6 0-16-6.4-16-16s6.4-16 16-16h448v-448c0-9.6 6.4-16 16-16s16 6.4 16 16v448h480c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
276
+ <glyph unicode="&#xea0a;" glyph-name="popup" d="M816 348.8c-9.6 0-16-6.4-16-16v-352c0-9.6-6.4-16-16-16h-736c-9.6 0-16 6.4-16 16v736c0 9.6 6.4 16 16 16h352c9.6 0 16 6.4 16 16s-6.4 16-16 16h-352c-25.6 0-48-19.2-48-48v-736c0-25.6 22.4-48 48-48h736c25.6 0 48 22.4 48 48v352c0 9.6-6.4 16-16 16zM976 956.8h-448c-25.6 0-48-22.4-48-48v-448c0-25.6 22.4-48 48-48h448c25.6 0 48 22.4 48 48v448c0 28.8-19.2 48-48 48zM992 460.8c0-9.6-6.4-16-16-16h-448c-9.6 0-16 6.4-16 16v448c0 9.6 6.4 16 16 16h448c9.6 0 16-6.4 16-16v-448zM377.6 140.8c9.6 0 16 6.4 16 16v160c0 9.6-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h121.6l-185.6-185.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l185.6 185.6v-121.6c-6.4-9.6 3.2-16 12.8-16z" />
277
+ <glyph unicode="&#xea0b;" glyph-name="power" horiz-adv-x="896" d="M448-64c246.4 0 448 198.4 448 444.8 0 185.6-115.2 352-291.2 416-9.6 3.2-16 0-19.2-9.6s0-16 9.6-19.2c160-60.8 268.8-217.6 268.8-387.2 0-227.2-185.6-412.8-416-412.8s-416 185.6-416 412.8c0 172.8 105.6 323.2 265.6 387.2 9.6 3.2 12.8 12.8 9.6 19.2-3.2 9.6-12.8 12.8-22.4 9.6-172.8-67.2-284.8-230.4-284.8-416 0-246.4 201.6-444.8 448-444.8zM384 876.8v-220.8c0-44.8 35.2-83.2 80-83.2s80 38.4 80 86.4v217.6c0 48-35.2 83.2-80 83.2s-80-35.2-80-83.2zM512 876.8v-220.8c0-28.8-22.4-51.2-48-51.2s-48 25.6-48 54.4v217.6c0 28.8 22.4 51.2 48 51.2s48-22.4 48-51.2z" />
278
+ <glyph unicode="&#xea0c;" glyph-name="printer" d="M1024 720c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48v-544c0-25.6 22.4-48 48-48h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128c-9.6 0-16 6.4-16 16v544c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-544c0-9.6-6.4-16-16-16h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128c25.6 0 48 22.4 48 48v544zM288-16v320c0 9.6-6.4 16-16 16s-16-6.4-16-16v-320c0-25.6 22.4-48 48-48h416c25.6 0 48 22.4 48 48v320c0 9.6-6.4 16-16 16s-16-6.4-16-16v-320c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16zM112 640c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64zM304 640h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16s-6.4 16-16 16zM752 832c9.6 0 16 6.4 16 16v64c0 25.6-22.4 48-48 48h-416c-25.6 0-48-22.4-48-48v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16v-64c0-9.6 6.4-16 16-16zM352 64h320c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16zM352 192h320c9.6 0 16 6.4 16 16s-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
279
+ <glyph unicode="&#xea0d;" glyph-name="progress-bar" d="M112 668.8h784c60.8 0 112 51.2 112 112s-51.2 112-112 112h-784c-60.8 0-112-48-112-112s51.2-112 112-112zM112 860.8h784c44.8 0 80-35.2 80-80s-35.2-80-80-80h-784c-44.8 0-80 38.4-80 80s35.2 80 80 80zM128 764.8h448c9.6 0 16 6.4 16 16s-6.4 16-16 16h-448c-9.6 0-16-6.4-16-16s6.4-16 16-16zM896 572.8h-784c-60.8 0-112-51.2-112-112s51.2-112 112-112h784c60.8 0 112 51.2 112 112s-51.2 112-112 112zM896 380.8h-784c-44.8 0-80 35.2-80 80s35.2 80 80 80h784c44.8 0 80-35.2 80-80s-35.2-80-80-80zM352 476.8h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16zM896 252.8h-784c-60.8 0-112-51.2-112-112s51.2-112 112-112h784c60.8 0 112 51.2 112 112s-51.2 112-112 112zM896 60.8h-784c-44.8 0-80 35.2-80 80s35.2 80 80 80h784c44.8 0 80-35.2 80-80s-35.2-80-80-80zM832 156.8h-704c-9.6 0-16-6.4-16-16s6.4-16 16-16h704c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
280
+ <glyph unicode="&#xea0e;" glyph-name="promo" d="M275.2 406.4v112c0 0 0 3.2 3.2 3.2s3.2 3.2 6.4 3.2h32c9.6 0 19.2-3.2 25.6-9.6s9.6-16 9.6-28.8v0c0-12.8-3.2-22.4-9.6-28.8s-16-9.6-28.8-9.6h-19.2v-41.6c0-3.2 0-3.2-3.2-3.2s-3.2 0-6.4 0-3.2 0-6.4 0-3.2 0-3.2 3.2zM294.4 460.8h19.2c6.4 0 12.8 3.2 16 6.4s6.4 9.6 6.4 16v3.2c0 6.4-3.2 12.8-6.4 16s-9.6 6.4-16 6.4h-19.2v-48zM368 406.4v112c0 0 0 3.2 3.2 3.2s3.2 3.2 3.2 3.2h32c25.6 0 38.4-12.8 38.4-35.2 0-9.6-3.2-16-6.4-22.4s-9.6-9.6-16-9.6l22.4-44.8c0 0 0-3.2 0-3.2 0-3.2 0-3.2-3.2-6.4s-3.2-3.2-6.4-3.2-6.4 3.2-6.4 6.4l-25.6 48h-19.2v-48c0-3.2 0-3.2-3.2-3.2s-3.2 0-6.4 0-3.2 0-6.4 0c0 0 0 0 0 3.2zM384 467.2h19.2c12.8 0 19.2 6.4 19.2 19.2s-6.4 19.2-19.2 19.2h-19.2v-38.4zM460.8 435.2v48c0 12.8 3.2 22.4 9.6 28.8s16 9.6 28.8 9.6 19.2-3.2 28.8-9.6 9.6-16 9.6-28.8v-48c0-12.8-3.2-22.4-9.6-28.8s-16-9.6-28.8-9.6-19.2 3.2-28.8 9.6c-6.4 6.4-9.6 16-9.6 28.8zM476.8 435.2c0-12.8 6.4-22.4 19.2-22.4 6.4 0 12.8 3.2 16 6.4s6.4 9.6 6.4 16v48c0 6.4-3.2 12.8-6.4 16s-9.6 6.4-16 6.4c-12.8 0-19.2-6.4-19.2-22.4v-48zM553.6 406.4v105.6c0 3.2 0 6.4 3.2 6.4s3.2 3.2 6.4 3.2c3.2 0 6.4 0 6.4-3.2 3.2 0 3.2-3.2 6.4-6.4l22.4-44.8 22.4 44.8c3.2 3.2 3.2 6.4 6.4 6.4s3.2 3.2 6.4 3.2c3.2 0 3.2 0 6.4-3.2s3.2-3.2 3.2-6.4v-108.8c0-3.2 0-3.2-3.2-3.2s-3.2 0-6.4 0-3.2 0-6.4 0-3.2 3.2-3.2 3.2v80l-16-38.4c-3.2-3.2-3.2-3.2-6.4-3.2s-3.2 0-6.4 3.2l-22.4 41.6v-80c0-3.2 0-3.2-3.2-3.2s-3.2 0-6.4 0-3.2 0-6.4 0-3.2 0-3.2 3.2zM668.8 435.2v48c0 12.8 3.2 22.4 9.6 28.8s16 9.6 28.8 9.6c12.8 0 19.2-3.2 28.8-9.6s9.6-16 9.6-28.8v-48c0-12.8-3.2-22.4-9.6-28.8s-16-9.6-28.8-9.6c-12.8 0-19.2 3.2-28.8 9.6-6.4 6.4-9.6 16-9.6 28.8zM684.8 435.2c0-12.8 6.4-22.4 19.2-22.4 6.4 0 12.8 3.2 16 6.4s6.4 9.6 6.4 16v48c0 6.4-3.2 12.8-6.4 16s-9.6 6.4-16 6.4c-12.8 0-19.2-6.4-19.2-22.4v-48zM947.2 425.6c-6.4 12.8-6.4 25.6 0 38.4l35.2 80c16 38.4 0 83.2-32 102.4l-73.6 44.8c-12.8 6.4-19.2 19.2-22.4 32l-22.4 89.6c-9.6 38.4-44.8 67.2-86.4 64l-86.4-6.4c-12.8 0-28.8 3.2-38.4 12.8l-67.2 57.6c-28.8 25.6-76.8 25.6-108.8 0l-67.2-57.6c-9.6-9.6-22.4-12.8-38.4-12.8l-86.4 6.4c-41.6 3.2-80-22.4-86.4-64l-22.4-86.4c-3.2-12.8-12.8-25.6-22.4-32l-73.6-44.8c-35.2-22.4-48-64-32-102.4l35.2-80c6.4-12.8 6.4-25.6 0-38.4l-35.2-80c-16-38.4 0-83.2 32-102.4l73.6-44.8c12.8-6.4 19.2-19.2 22.4-32l19.2-86.4c9.6-38.4 44.8-67.2 86.4-64l86.4 6.4c12.8 0 28.8-3.2 38.4-12.8l67.2-57.6c16-12.8 35.2-19.2 54.4-19.2s38.4 6.4 54.4 19.2l67.2 57.6c9.6 9.6 22.4 12.8 38.4 12.8l86.4-6.4c41.6-3.2 76.8 22.4 86.4 64l19.2 86.4c3.2 12.8 12.8 25.6 22.4 32l73.6 44.8c35.2 22.4 48 64 32 102.4l-28.8 76.8zM931.2 268.8l-73.6-44.8c-19.2-12.8-32-32-38.4-51.2l-19.2-86.4c-6.4-25.6-28.8-41.6-54.4-38.4l-86.4 6.4c-22.4 3.2-44.8-6.4-60.8-19.2l-67.2-57.6c-19.2-16-48-16-67.2 0l-67.2 57.6c-16 12.8-35.2 19.2-54.4 19.2-3.2 0-3.2 0-6.4 0l-86.4-6.4c-25.6-3.2-48 16-54.4 38.4l-19.2 86.4c-6.4 22.4-19.2 41.6-38.4 51.2l-73.6 44.8c-22.4 12.8-28.8 41.6-19.2 64l35.2 80c9.6 19.2 9.6 44.8 0 64l-35.2 80c-9.6 22.4 0 51.2 19.2 64l73.6 44.8c19.2 12.8 32 32 38.4 51.2l19.2 86.4c6.4 25.6 28.8 41.6 54.4 41.6l86.4-6.4c3.2 0 3.2 0 6.4 0 19.2 0 38.4 6.4 54.4 19.2l67.2 57.6c19.2 12.8 48 12.8 67.2-3.2l67.2-57.6c16-16 38.4-22.4 60.8-19.2l86.4 6.4c25.6 3.2 48-16 54.4-38.4l19.2-86.4c6.4-22.4 19.2-41.6 38.4-51.2l73.6-44.8c22.4-12.8 28.8-41.6 19.2-64l-35.2-80c-9.6-19.2-9.6-44.8 0-64l35.2-80c12.8-22.4 3.2-51.2-19.2-64zM816 611.2h-636.8c-25.6 0-48-22.4-48-48v-201.6c0-25.6 22.4-48 48-48h636.8c25.6 0 48 22.4 48 48v201.6c0 28.8-22.4 48-48 48zM832 361.6c0-9.6-6.4-16-16-16h-636.8c-9.6 0-16 6.4-16 16v201.6c0 9.6 6.4 16 16 16h636.8c9.6 0 16-6.4 16-16v-201.6zM451.2 665.6l35.2 22.4 38.4-22.4-9.6 44.8 35.2 28.8-44.8 3.2-19.2 41.6-16-41.6-44.8-3.2 32-28.8zM620.8 678.4l19.2 12.8 22.4-12.8-3.2 25.6 19.2 16-25.6 3.2-12.8 22.4-9.6-22.4-25.6-3.2 19.2-16zM310.4 678.4l22.4 12.8 22.4-12.8-3.2 25.6 16 16-22.4 3.2-12.8 22.4-9.6-22.4-25.6-3.2 19.2-16zM486.4 249.6l-16-41.6-44.8-3.2 32-28.8-6.4-44.8 35.2 22.4 38.4-22.4-9.6 44.8 35.2 28.8-44.8 3.2zM652.8 188.8l-12.8 22.4-9.6-22.4-25.6-3.2 19.2-16-3.2-25.6 19.2 12.8 22.4-12.8-3.2 25.6 19.2 16zM345.6 188.8l-12.8 22.4-9.6-22.4-25.6-3.2 19.2-16-6.4-25.6 22.4 12.8 22.4-12.8-3.2 25.6 16 16z" />
281
+ <glyph unicode="&#xea0f;" glyph-name="pulse" d="M947.2 368c-28.8 0-54.4-22.4-60.8-48h-169.6l-70.4 211.2c-6.4 6.4-12.8 12.8-19.2 12.8s-12.8-3.2-16-9.6l-131.2-374.4-137.6 668.8c0 6.4-6.4 12.8-16 12.8-6.4 0-12.8-3.2-16-12.8l-140.8-508.8h-169.6v-32h182.4c6.4 0 12.8 3.2 16 12.8l128 457.6 134.4-659.2c0-6.4 6.4-12.8 16-12.8 0 0 0 0 0 0 6.4 0 12.8 3.2 16 9.6l137.6 384 60.8-179.2c3.2-6.4 9.6-9.6 16-9.6h182.4c6.4-25.6 32-48 60.8-48 35.2 0 64 28.8 64 64s-32 60.8-67.2 60.8z" />
282
+ <glyph unicode="&#xea10;" glyph-name="puzzle" d="M880 304c44.8 9.6 86.4-6.4 115.2-38.4 3.2-6.4 12.8-6.4 19.2-6.4 6.4 3.2 9.6 9.6 9.6 16v364.8c0 35.2-28.8 64-64 64h-230.4c32 35.2 44.8 83.2 32 131.2-12.8 51.2-54.4 92.8-105.6 105.6-12.8 3.2-22.4 3.2-35.2 3.2-76.8 0-140.8-64-140.8-144 0-35.2 12.8-70.4 38.4-96h-198.4c-35.2 0-64-28.8-64-64v-339.2c-35.2 32-83.2 44.8-131.2 32-51.2-12.8-92.8-54.4-105.6-105.6-9.6-44.8 0-89.6 28.8-124.8s67.2-54.4 112-54.4c35.2 0 70.4 12.8 96 38.4v-86.4c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v115.2c0 6.4-3.2 12.8-9.6 16s-12.8 0-19.2-6.4c-22.4-28.8-54.4-41.6-86.4-41.6-35.2 0-67.2 16-86.4 41.6-22.4 25.6-28.8 60.8-22.4 96 6.4 38.4 41.6 73.6 80 83.2zM796.8 105.6c28.8-35.2 67.2-54.4 112-54.4 32 0 60.8 9.6 83.2 28.8v-80c0-19.2-12.8-32-32-32h-640c-19.2 0-32 12.8-32 32v134.4c0 6.4-6.4 12.8-12.8 16 0 0-3.2 0-3.2 0-6.4 0-12.8-3.2-12.8-9.6-19.2-35.2-57.6-57.6-99.2-57.6-35.2 0-67.2 16-86.4 41.6-22.4 25.6-28.8 60.8-22.4 96 9.6 38.4 41.6 73.6 80 83.2 51.2 12.8 102.4-12.8 124.8-54.4 3.2-6.4 9.6-9.6 19.2-6.4 6.4-3.2 12.8 3.2 12.8 12.8v384c0 19.2 12.8 32 32 32h243.2c6.4 0 12.8 6.4 12.8 12.8 3.2 6.4 0 16-6.4 19.2-35.2 19.2-57.6 54.4-57.6 96 0 60.8 51.2 112 112 112 9.6 0 19.2 0 25.6-3.2 38.4-9.6 73.6-41.6 83.2-80 12.8-51.2-9.6-99.2-54.4-124.8-6.4-3.2-9.6-9.6-6.4-19.2-3.2-6.4 3.2-12.8 12.8-12.8h275.2c19.2 0 32-12.8 32-32v-329.6c-32 25.6-76.8 32-118.4 22.4-54.4-12.8-96-54.4-105.6-105.6-9.6-44.8 0-89.6 28.8-121.6zM448 608h-32c-35.2 0-64-28.8-64-64v-160c0-9.6 6.4-16 16-16s16 6.4 16 16v160c0 19.2 12.8 32 32 32h32c9.6 0 16 6.4 16 16s-6.4 16-16 16zM576 608h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
283
+ <glyph unicode="&#xea11;" glyph-name="question" horiz-adv-x="800" d="M553.6 380.8l44.8 35.2c48 38.4 80 67.2 96 92.8 28.8 41.6 44.8 92.8 44.8 153.6 0 96-35.2 172.8-102.4 220.8-64 51.2-150.4 76.8-249.6 76.8-73.6 0-140.8-19.2-192-51.2-76.8-51.2-121.6-131.2-131.2-243.2 0-12.8 3.2-28.8 12.8-41.6 9.6-9.6 22.4-16 35.2-16h118.4c22.4 0 44.8 19.2 48 41.6 3.2 25.6 9.6 44.8 22.4 70.4 19.2 32 54.4 48 96 48h3.2c73.6 0 112-38.4 112-115.2 0-25.6-6.4-48-22.4-70.4-9.6-12.8-19.2-25.6-35.2-35.2l-44.8-38.4c-48-38.4-76.8-73.6-89.6-105.6-9.6-25.6-16-67.2-19.2-124.8 0-12.8 3.2-28.8 16-38.4 9.6-9.6 22.4-16 35.2-16h105.6c28.8 0 48 25.6 48 48s3.2 38.4 6.4 48c6.4 22.4 19.2 44.8 41.6 60.8zM480 329.6c-3.2-16-6.4-41.6-6.4-54.4 0-9.6-9.6-19.2-16-19.2h-105.6c-6.4 0-9.6 3.2-9.6 6.4-3.2 3.2-6.4 9.6-6.4 16 3.2 67.2 12.8 102.4 19.2 115.2 6.4 19.2 25.6 48 80 92.8l44.8 38.4c16 12.8 28.8 25.6 41.6 41.6 19.2 25.6 28.8 57.6 28.8 89.6-6.4 89.6-57.6 144-150.4 144h-3.2c-54.4 0-96-22.4-121.6-64-19.2-28.8-25.6-54.4-28.8-80 0-9.6-9.6-16-16-16h-118.4c-6.4 0-9.6 3.2-12.8 6.4s-6.4 9.6-3.2 16c9.6 102.4 51.2 176 118.4 220.8 44.8 28.8 105.6 44.8 172.8 44.8 92.8 0 169.6-22.4 230.4-67.2s89.6-108.8 89.6-195.2c0-54.4-12.8-99.2-38.4-134.4-16-22.4-44.8-51.2-89.6-86.4l-44.8-35.2c-28.8-25.6-44.8-51.2-54.4-80zM400 192c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM400-32c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-41.6-96-96-96z" />
284
+ <glyph unicode="&#xea12;" glyph-name="quote" d="M665.6 675.2c-35.2 0-70.4-9.6-99.2-28.8-6.4-6.4-9.6-16-3.2-22.4s16-9.6 22.4-3.2c22.4 16 51.2 25.6 80 25.6 80 0 144-64 144-144 0-38.4-16-76.8-44.8-102.4l-160-160c-9.6-9.6-25.6-9.6-35.2 0s-9.6 25.6 0 35.2l86.4 86.4-25.6 6.4c-16 3.2-32 12.8-44.8 22.4-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4c9.6-6.4 19.2-12.8 28.8-16l-48-48c-22.4-22.4-22.4-57.6 0-80 9.6-9.6 25.6-16 38.4-16 16 0 28.8 6.4 38.4 16l163.2 163.2c35.2 32 51.2 76.8 51.2 124.8 3.2 86.4-73.6 166.4-172.8 166.4zM393.6 572.8c-41.6 0-76.8-35.2-76.8-76.8s35.2-76.8 76.8-76.8 76.8 35.2 76.8 76.8-35.2 76.8-76.8 76.8zM393.6 451.2c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM393.6 675.2c-96 0-176-80-176-176 0-70.4 41.6-134.4 105.6-160l-48-48c-22.4-22.4-22.4-57.6 0-80 9.6-9.6 25.6-16 38.4-16 16 0 28.8 6.4 38.4 16l163.2 163.2c35.2 32 51.2 76.8 51.2 124.8 3.2 96-76.8 176-172.8 176zM492.8 393.6l-160-160c-9.6-9.6-25.6-9.6-35.2 0s-9.6 25.6 0 35.2l86.4 83.2-25.6 6.4c-64 16-105.6 73.6-105.6 137.6 0 80 64 144 144 144s144-64 144-144c-3.2-35.2-19.2-73.6-48-102.4zM739.2 496c0 41.6-35.2 76.8-76.8 76.8s-76.8-35.2-76.8-76.8 35.2-76.8 76.8-76.8 76.8 35.2 76.8 76.8zM617.6 496c0 25.6 19.2 44.8 44.8 44.8s44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8-44.8 19.2-44.8 44.8zM512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480z" />
285
+ <glyph unicode="&#xea13;" glyph-name="radar" d="M0 448c0-281.6 230.4-512 512-512s512 230.4 512 512-230.4 512-512 512-512-230.4-512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM252.8 188.8c70.4-70.4 166.4-108.8 259.2-108.8s188.8 35.2 259.2 108.8c144 144 144 377.6 0 521.6-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c131.2-131.2 131.2-345.6 0-473.6s-345.6-131.2-473.6 0c-128 128-131.2 332.8-9.6 464l89.6-89.6c-32-38.4-51.2-86.4-51.2-134.4 0-54.4 22.4-108.8 60.8-147.2s92.8-60.8 147.2-60.8 108.8 22.4 147.2 60.8 60.8 92.8 60.8 147.2-22.4 108.8-60.8 147.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c32-32 51.2-76.8 51.2-124.8s-19.2-89.6-51.2-124.8-76.8-51.2-124.8-51.2-89.6 19.2-124.8 51.2-51.2 76.8-51.2 124.8c0 41.6 16 80 41.6 112l67.2-67.2c-9.6-12.8-12.8-28.8-12.8-44.8 0-44.8 35.2-80 80-80s80 35.2 80 80-35.2 80-80 80c-16 0-32-6.4-44.8-12.8l-236.8 230.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l32-32c-131.2-144-128-371.2 12.8-508.8zM512 496c25.6 0 48-22.4 48-48s-22.4-48-48-48-48 22.4-48 48 22.4 48 48 48z" />
286
+ <glyph unicode="&#xea14;" glyph-name="radiation" d="M512 393.6c28.8 0 54.4 25.6 54.4 54.4s-25.6 54.4-54.4 54.4-54.4-25.6-54.4-54.4 25.6-54.4 54.4-54.4zM512 470.4c12.8 0 22.4-9.6 22.4-22.4s-9.6-22.4-22.4-22.4-22.4 9.6-22.4 22.4 9.6 22.4 22.4 22.4zM512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM579.2 358.4c-3.2 6.4-12.8 9.6-22.4 6.4-32-16-67.2-16-96 0-3.2 3.2-9.6 3.2-12.8 3.2s-6.4-3.2-9.6-6.4l-131.2-227.2c-6.4-12.8-9.6-25.6-3.2-38.4 3.2-12.8 12.8-22.4 25.6-28.8 57.6-28.8 118.4-41.6 182.4-41.6 60.8 0 121.6 12.8 179.2 38.4 12.8 6.4 22.4 16 25.6 28.8s3.2 25.6-3.2 38.4l-134.4 227.2zM684.8 105.6c0-3.2-3.2-6.4-9.6-9.6-105.6-48-227.2-48-332.8 0-3.2 3.2-6.4 6.4-9.6 9.6 0 3.2 0 9.6 0 12.8l124.8 214.4c32-12.8 67.2-16 99.2 0l124.8-214.4c3.2-6.4 3.2-9.6 3.2-12.8zM105.6 457.6c6.4-9.6 19.2-9.6 35.2-9.6h262.4c9.6 0 16 0 16 9.6 0 32 19.2 57.6 48 73.6 6.4 3.2 9.6 12.8 6.4 19.2l-131.2 227.2c-12.8 22.4-48 28.8-70.4 16-105.6-73.6-166.4-176-179.2-304-3.2-12.8 3.2-22.4 12.8-32zM288 768c3.2 3.2 6.4 3.2 9.6 3.2 6.4 0 9.6-3.2 12.8-6.4l124.8-211.2c-25.6-19.2-41.6-41.6-48-73.6h-246.4c-3.2 0-9.6-3.2-12.8 0s-3.2 6.4-3.2 9.6c9.6 118.4 64 211.2 163.2 278.4zM556.8 531.2c28.8-16 48-38.4 51.2-73.6 0-9.6 6.4-9.6 16-9.6h262.4c12.8 0 25.6 0 35.2 9.6s12.8 19.2 12.8 35.2c-9.6 128-73.6 233.6-182.4 307.2-22.4 16-54.4 6.4-70.4-16l-131.2-227.2c-3.2-3.2-3.2-9.6 0-12.8s3.2-9.6 6.4-12.8zM710.4 764.8c3.2 6.4 16 9.6 22.4 6.4 99.2-67.2 156.8-166.4 166.4-284.8 0-3.2 0-3.2-3.2-6.4s-6.4 0-12.8 0h-246.4c-6.4 32-22.4 57.6-51.2 76.8l124.8 208z" />
287
+ <glyph unicode="&#xea15;" glyph-name="reading-glass-alt" d="M246.4 560c-60.8 0-112-51.2-112-112 0-9.6 6.4-16 16-16s16 6.4 16 16c0 44.8 35.2 80 80 80 9.6 0 16 6.4 16 16s-9.6 16-16 16zM774.4 560c-60.8 0-112-51.2-112-112 0-9.6 6.4-16 16-16s16 6.4 16 16c0 44.8 35.2 80 80 80 9.6 0 16 6.4 16 16s-6.4 16-16 16zM1008 448h-32c0 0-3.2 0-3.2 0 0 108.8-89.6 198.4-198.4 198.4-92.8 0-169.6-64-192-150.4-19.2 19.2-44.8 32-73.6 32s-54.4-12.8-73.6-32c-22.4 86.4-99.2 150.4-192 150.4-105.6-3.2-195.2-102.4-195.2-198.4h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h32c0 0 0 0 0 0 16-96 96-166.4 195.2-166.4s182.4 73.6 195.2 169.6c0 3.2 3.2 3.2 3.2 6.4 0 35.2 28.8 67.2 67.2 67.2s67.2-28.8 67.2-67.2c0-3.2 0-6.4 3.2-6.4 12.8-96 96-169.6 195.2-169.6s182.4 73.6 195.2 169.6c3.2 0 3.2 0 6.4 0h32c9.6 0 16 6.4 16 16 0 6.4-6.4 12.8-16 12.8zM246.4 281.6c-89.6 0-166.4 73.6-166.4 166.4s73.6 166.4 166.4 166.4c89.6 0 166.4-73.6 166.4-166.4s-76.8-166.4-166.4-166.4zM774.4 281.6c-89.6 0-166.4 73.6-166.4 166.4s73.6 166.4 166.4 166.4 166.4-73.6 166.4-166.4-76.8-166.4-166.4-166.4z" />
288
+ <glyph unicode="&#xea16;" glyph-name="reading-glass" horiz-adv-x="1536" d="M1520 355.2l-336 563.2c-3.2 6.4-25.6 48-60.8 41.6-32-3.2-54.4-41.6-70.4-115.2-3.2-9.6 3.2-16 12.8-19.2s16 3.2 19.2 12.8c16 83.2 35.2 89.6 41.6 92.8 9.6 3.2 25.6-16 28.8-25.6l300.8-502.4c-48 19.2-112 28.8-198.4 28.8-121.6 0-281.6-22.4-371.2-64-3.2 0-6.4 0-6.4 0l-163.2-70.4c0 3.2 0 6.4 0 9.6 0 76.8-259.2 128-435.2 128-83.2 0-150.4-9.6-198.4-28.8l297.6 502.4c6.4 9.6 22.4 25.6 32 25.6 3.2 0 25.6-9.6 41.6-89.6 3.2-9.6 9.6-12.8 19.2-12.8 9.6 3.2 12.8 9.6 12.8 19.2-16 67.2-38.4 102.4-70.4 108.8-35.2 6.4-60.8-35.2-64-38.4l-332.8-560c-12.8-16-19.2-35.2-19.2-57.6 0-179.2 35.2-364.8 294.4-364.8 19.2 0 41.6 0 64 3.2 182.4 0 332.8 137.6 355.2 316.8l108.8 48c0 0 0-3.2 0-3.2 0-198.4 160-364.8 355.2-364.8 0 0 0 0 0 0 22.4 0 38.4 0 70.4 0v3.2c128 0 195.2 38.4 243.2 115.2 41.6 70.4 44.8 166.4 44.8 249.6 0 16-6.4 32-16 48zM355.2-25.6c-22.4-3.2-41.6-3.2-60.8-3.2-217.6 0-262.4 131.2-262.4 332.8 0 60.8 92.8 96 246.4 96 204.8 0 403.2-60.8 403.2-96 3.2-182.4-144-329.6-326.4-329.6zM1459.2 70.4c-38.4-67.2-112-99.2-217.6-99.2-19.2 0-41.6 0-64 3.2-179.2 0-326.4 147.2-326.4 329.6 0 6.4 9.6 16 28.8 25.6l12.8 6.4c0 0 3.2 0 3.2 3.2 70.4 32 214.4 60.8 361.6 60.8 124.8 0 208-22.4 236.8-60.8l3.2-3.2c0 0 0 0 0 0 6.4-9.6 9.6-19.2 9.6-28.8-3.2-83.2-9.6-172.8-48-236.8z" />
289
+ <glyph unicode="&#xea17;" glyph-name="recycle-bin" horiz-adv-x="896" d="M576 960h-256c-25.6 0-48-22.4-48-48v-112h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16h96v-784c0-25.6 22.4-48 48-48h576c25.6 0 48 22.4 48 48v784h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256v112c0 25.6-22.4 48-48 48zM304 912c0 9.6 6.4 16 16 16h256c9.6 0 16-6.4 16-16v-112h-288v112zM752 768v-784c0-9.6-6.4-16-16-16h-576c-9.6 0-16 6.4-16 16v784h608zM288 624c-9.6 0-16-6.4-16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6-6.4 16-16 16zM448 624c-9.6 0-16-6.4-16-16v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6-6.4 16-16 16zM592 608v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6-6.4 16-16 16s-16-6.4-16-16z" />
290
+ <glyph unicode="&#xea18;" glyph-name="recycle" horiz-adv-x="1152" d="M16 80c25.6-48 73.6-80 128-80h400l-44.8-35.2c-6.4-6.4-6.4-16-3.2-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l80 64c3.2 3.2 6.4 6.4 6.4 9.6s0 9.6-3.2 12.8l-67.2 80c-6.4 6.4-16 6.4-22.4 3.2-6.4-6.4-6.4-16-3.2-22.4l44.8-54.4h-406.4c-41.6 0-80 22.4-99.2 60.8-22.4 41.6-19.2 86.4 3.2 124.8l108.8 160c6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2l-108.8-160c-32-48-35.2-105.6-9.6-156.8zM1139.2 80c25.6 48 25.6 105.6-6.4 153.6l-195.2 291.2 67.2-12.8c9.6-3.2 16 3.2 19.2 12.8s-3.2 16-12.8 19.2l-108.8 22.4c-9.6 3.2-16-3.2-19.2-12.8l-22.4-108.8c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8l16 76.8 198.4-297.6c22.4-35.2 25.6-80 3.2-118.4-22.4-41.6-60.8-64-105.6-64h-236.8c-9.6 0-16-6.4-16-16s6.4-19.2 16-19.2h236.8c57.6 0 105.6 32 134.4 80zM576 928c38.4 0 73.6-19.2 96-51.2l124.8-188.8c6.4-6.4 16-9.6 22.4-3.2s9.6 16 3.2 22.4l-124.8 188.8c-25.6 38.4-70.4 64-121.6 64s-96-25.6-121.6-67.2l-217.6-313.6-16 73.6c-3.2 6.4-9.6 12.8-19.2 12.8-9.6-3.2-12.8-12.8-12.8-19.2l22.4-108.8c0-3.2 3.2-6.4 6.4-9.6s6.4-3.2 9.6-3.2c0 0 3.2 0 3.2 0l108.8 22.4c9.6 3.2 12.8 9.6 12.8 19.2-3.2 9.6-9.6 12.8-19.2 12.8l-70.4-12.8 217.6 310.4c22.4 32 57.6 51.2 96 51.2z" />
291
+ <glyph unicode="&#xea19;" glyph-name="refresh-time" horiz-adv-x="1120" d="M963.2 80c12.8 12.8 22.4 22.4 35.2 35.2 6.4 6.4 6.4 16-3.2 22.4-6.4 6.4-16 6.4-22.4-3.2-9.6-12.8-19.2-22.4-32-35.2-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 6.4 6.4 9.6 9.6 9.6zM470.4-44.8c0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8s-3.2 16-9.6 19.2c-32 9.6-64 22.4-92.8 35.2-6.4 3.2-16 0-22.4-6.4-3.2-6.4 0-16 6.4-22.4 32-16 64-28.8 99.2-38.4zM864 41.6c-28.8-19.2-57.6-32-89.6-44.8-9.6-3.2-12.8-12.8-9.6-19.2s9.6-9.6 16-9.6c3.2 0 3.2 0 6.4 0 32 12.8 64 28.8 96 48 6.4 3.2 9.6 16 6.4 22.4-9.6 6.4-19.2 9.6-25.6 3.2zM281.6 51.2c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 3.2 16-3.2 22.4-25.6 22.4-48 44.8-70.4 70.4-6.4 6.4-16 9.6-22.4 3.2s-6.4-16-3.2-22.4c25.6-28.8 51.2-54.4 76.8-76.8zM579.2-32c-9.6 0-16-6.4-16-16s6.4-16 16-16c9.6 0 19.2 0 32 0 25.6 0 51.2 3.2 76.8 6.4 9.6 0 16 9.6 12.8 19.2 0 9.6-9.6 16-19.2 12.8-35.2-6.4-70.4-6.4-102.4-6.4zM163.2 208c3.2 0 6.4 0 6.4 3.2 6.4 3.2 9.6 12.8 6.4 22.4-6.4 12.8-12.8 28.8-19.2 41.6-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2 6.4-16 12.8-32 19.2-44.8 6.4-9.6 9.6-12.8 16-12.8zM608 960c-272 0-492.8-211.2-512-476.8l-67.2 86.4c-6.4 6.4-16 9.6-22.4 3.2-6.4-9.6-6.4-19.2-3.2-25.6l96-121.6c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l121.6 96c6.4 6.4 9.6 16 3.2 22.4s-16 9.6-22.4 3.2l-96-76.8c9.6 256 220.8 460.8 480 460.8 265.6 0 480-214.4 480-480 0-76.8-19.2-153.6-54.4-224-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 12.8 3.2 12.8 9.6 38.4 73.6 57.6 156.8 57.6 236.8 3.2 284.8-227.2 515.2-508.8 515.2zM608 784c-9.6 0-16-6.4-16-16v-224c-48-6.4-83.2-48-83.2-96 0-54.4 44.8-99.2 99.2-99.2 32 0 57.6 16 76.8 38.4l172.8-96c3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6s3.2 16-6.4 22.4l-169.6 96c3.2 9.6 6.4 22.4 6.4 32 0 48-35.2 89.6-80 96v224c-3.2 9.6-9.6 16-19.2 16zM672 448c0-35.2-28.8-67.2-67.2-67.2s-67.2 28.8-67.2 67.2 28.8 67.2 67.2 67.2 67.2-32 67.2-67.2z" />
292
+ <glyph unicode="&#xea1a;" glyph-name="reply" horiz-adv-x="1408" d="M960 601.6c-147.2 89.6-281.6 102.4-329.6 102.4l9.6 208c0 28.8-28.8 48-54.4 48-12.8 0-22.4-3.2-32-12.8l-534.4-444.8c-9.6-9.6-16-19.2-16-35.2s6.4-28.8 19.2-38.4l534.4-454.4c9.6-6.4 19.2-12.8 32-12.8 25.6 0 54.4 19.2 54.4 48v294.4c544-6.4 736-355.2 736-358.4 3.2-6.4 9.6-9.6 12.8-9.6s3.2 0 6.4 0c6.4 3.2 12.8 12.8 9.6 19.2-92.8 307.2-240 521.6-448 646.4zM1232 150.4c-112 86.4-307.2 185.6-608 185.6-9.6 0-16-6.4-16-16v-310.4c0-9.6-9.6-16-22.4-16-3.2 0-6.4 0-12.8 3.2l-531.2 457.6c-3.2 3.2-6.4 9.6-6.4 16 0 3.2 0 6.4 3.2 9.6l537.6 441.6c3.2 3.2 6.4 6.4 9.6 6.4 12.8 0 22.4-6.4 22.4-16l-9.6-224c0-3.2 0-9.6 3.2-12.8 3.2 0 9.6-3.2 12.8-3.2 0 0-3.2 0 9.6 0 38.4 0 169.6-6.4 323.2-99.2 176-105.6 310.4-281.6 400-528-28.8 32-67.2 70.4-115.2 105.6z" />
293
+ <glyph unicode="&#xea1b;" glyph-name="responsive-device" horiz-adv-x="960" d="M48-64h368c9.6 0 16 6.4 16 16s-6.4 16-16 16h-368c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h640c9.6 0 16-6.4 16-16v-112c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 25.6-22.4 48-48 48h-640c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM320 832c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96zM480 688v-704c0-25.6 22.4-48 48-48h384c25.6 0 48 22.4 48 48v704c0 25.6-22.4 48-48 48h-384c-25.6 0-48-22.4-48-48zM928 688v-704c0-9.6-6.4-16-16-16h-384c-9.6 0-16 6.4-16 16v704c0 9.6 6.4 16 16 16h384c9.6 0 16-6.4 16-16zM713.6 137.6c-28.8 0-54.4-25.6-54.4-54.4s25.6-54.4 54.4-54.4 54.4 25.6 54.4 54.4-25.6 54.4-54.4 54.4zM713.6 64c-12.8 0-22.4 9.6-22.4 22.4s9.6 22.4 22.4 22.4 22.4-12.8 22.4-22.4-9.6-22.4-22.4-22.4zM672 608h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
294
+ <glyph unicode="&#xea1c;" glyph-name="review" d="M124.8 41.6c0-12.371-10.029-22.4-22.4-22.4s-22.4 10.029-22.4 22.4c0 12.371 10.029 22.4 22.4 22.4s22.4-10.029 22.4-22.4zM796.8 956.8h-560c-121.6 0-220.8-99.2-220.8-220.8s99.2-220.8 224-220.8c9.6-3.2 16 3.2 16 12.8s-9.6 16-19.2 16c-105.6 0-188.8 86.4-188.8 188.8s86.4 188.8 188.8 188.8h556.8c105.6 0 188.8-86.4 188.8-188.8s-80-188.8-185.6-188.8h-35.2l-80-73.6-73.6 73.6h-108.8c-9.6 28.8-28.8 51.2-57.6 64l-38.4 16c-3.2 3.2-9.6 3.2-12.8 0s-6.4-6.4-9.6-9.6l-22.4-60.8c-28.8-76.8-80-137.6-150.4-179.2-9.6 12.8-22.4 19.2-38.4 19.2h-128c-25.6 0-48-22.4-48-48v-352c0-25.6 22.4-48 48-48h128c22.4 0 38.4 12.8 44.8 32 57.6-28.8 124.8-44.8 188.8-44.8h198.4c38.4 0 70.4 32 70.4 70.4 0 16-6.4 28.8-12.8 41.6 28.8 9.6 48 35.2 48 67.2 0 16-3.2 28.8-12.8 38.4 32 6.4 54.4 35.2 54.4 67.2 0 35.2-22.4 60.8-54.4 67.2 6.4 12.8 12.8 25.6 12.8 38.4 0 38.4-32 70.4-70.4 70.4h-160l22.4 76.8c3.2 12.8 6.4 25.6 3.2 35.2h89.6l83.2-86.4 96 86.4h22.4c121.6 0 220.8 99.2 220.8 220.8s-96 230.4-217.6 230.4zM185.6-6.4c0-9.6-6.4-16-16-16h-128c-9.6 0-16 6.4-16 16v352c0 9.6 6.4 16 16 16h44.8v-236.8c0-9.6 6.4-16 16-16s16 6.4 16 16v236.8h51.2c9.6 0 16-6.4 16-16v-352zM640 368c22.4 0 38.4-16 38.4-38.4s-16-38.4-38.4-38.4h-108.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h150.4c22.4 0 38.4-16 38.4-38.4s-16-38.4-38.4-38.4h-150.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h108.8c22.4 0 38.4-16 38.4-38.4s-16-38.4-38.4-38.4h-108.8c-9.6 0-16-6.4-16-16s6.4-16 16-16h73.6c22.4 0 38.4-16 38.4-38.4s-16-38.4-38.4-38.4h-198.4c-64 0-131.2 16-188.8 48v329.6c80 44.8 140.8 115.2 169.6 198.4l16 44.8 25.6-9.6c35.2-16 54.4-54.4 41.6-92.8l-28.8-96c0-6.4 0-9.6 3.2-12.8s6.4-6.4 12.8-6.4h182.4zM176 668.8c-3.2-6.4 0-12.8 6.4-19.2 6.4-3.2 12.8-3.2 19.2 0l19.2 16c16 12.8 41.6 12.8 60.8 0l22.4-16c3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2 9.6 12.8 6.4 19.2l-9.6 22.4c-6.4 22.4 0 44.8 19.2 54.4l22.4 12.8c6.4 3.2 9.6 12.8 6.4 19.2s-9.6 12.8-16 12.8h-28.8c-22.4 0-38.4 12.8-44.8 35.2l-9.6 32c-3.2 12.8-25.6 12.8-32 0l-9.6-32c-6.4-22.4-25.6-35.2-48-35.2h-25.6c-6.4 0-12.8-3.2-16-12.8s0-12.8 6.4-19.2l19.2-12.8c19.2-9.6 25.6-32 19.2-54.4l-6.4-22.4zM252.8 800c9.6-22.4 28.8-35.2 54.4-41.6-16-16-25.6-35.2-22.4-57.6-9.6 3.2-22.4 6.4-35.2 6.4s-22.4-3.2-32-6.4c3.2 22.4-6.4 41.6-19.2 60.8 22.4 3.2 41.6 19.2 54.4 38.4zM592 745.6l22.4 12.8c6.4 3.2 9.6 12.8 6.4 19.2s-9.6 12.8-16 12.8h-28.8c-22.4 0-38.4 12.8-44.8 35.2l-9.6 32c-3.2 12.8-25.6 12.8-32 0l-9.6-32c-6.4-19.2-25.6-35.2-44.8-35.2h-28.8c-6.4 0-12.8-3.2-16-12.8s0-12.8 6.4-19.2l19.2-12.8c19.2-12.8 25.6-35.2 19.2-54.4l-9.6-25.6c-3.2-6.4 0-12.8 6.4-19.2 6.4-3.2 12.8-3.2 19.2 0l19.2 16c16 12.8 41.6 12.8 60.8 0l22.4-16c3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2 9.6 12.8 6.4 19.2l-9.6 28.8c-3.2 19.2 3.2 41.6 22.4 51.2zM537.6 700.8c-9.6 6.4-22.4 6.4-35.2 6.4s-22.4-3.2-32-6.4c3.2 22.4-6.4 41.6-19.2 60.8 22.4 6.4 41.6 19.2 54.4 41.6 9.6-22.4 28.8-35.2 54.4-41.6-16-19.2-25.6-38.4-22.4-60.8zM841.6 745.6l22.4 12.8c6.4 3.2 9.6 12.8 6.4 19.2s-9.6 12.8-16 12.8h-28.8c-22.4 0-38.4 12.8-44.8 35.2l-9.6 32c-3.2 6.4-9.6 9.6-16 9.6s-12.8-3.2-16-12.8l-9.6-32c-6.4-19.2-25.6-35.2-44.8-35.2h-28.8c-6.4 0-12.8-3.2-16-12.8s0-12.8 6.4-19.2l19.2-12.8c19.2-12.8 25.6-35.2 19.2-54.4l-9.6-25.6c-3.2-6.4 0-12.8 6.4-19.2 6.4-3.2 12.8-3.2 19.2 0l19.2 16c16 12.8 41.6 12.8 60.8 0l22.4-16c3.2-3.2 6.4-3.2 9.6-3.2s6.4 0 9.6 3.2c9.6 6.4 9.6 16 9.6 22.4l-9.6 28.8c-6.4 19.2 0 41.6 19.2 51.2zM787.2 700.8c-9.6 6.4-22.4 6.4-35.2 6.4s-22.4-3.2-32-6.4c3.2 22.4-6.4 41.6-19.2 60.8 22.4 6.4 41.6 19.2 54.4 41.6 9.6-22.4 28.8-35.2 54.4-41.6-16-19.2-22.4-38.4-22.4-60.8z" />
295
+ <glyph unicode="&#xea1d;" glyph-name="rocket1" d="M496 652.8l275.2 275.2h220.8v-220.8l-275.2-275.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l281.6 281.6c-3.2 3.2 0 6.4 0 9.6v243.2c0 9.6-6.4 16-16 16h-243.2c-3.2 0-9.6-3.2-12.8-3.2l-281.6-281.6c-6.4-6.4-6.4-16 0-22.4s19.2-6.4 25.6 0zM544 44.8c3.2-3.2 6.4-3.2 12.8-3.2 0 0 3.2 0 3.2 0 6.4 0 9.6 6.4 12.8 9.6l105.6 300.8c3.2 9.6 0 16-9.6 19.2s-16 0-19.2-9.6l-99.2-275.2-185.6 185.6 179.2 185.6c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-179.2-185.6-192 192 275.2 99.2c9.6 3.2 12.8 12.8 9.6 19.2-3.2 9.6-12.8 12.8-19.2 9.6l-300.8-105.6c-6.4-3.2-9.6-6.4-9.6-12.8s0-9.6 3.2-16l435.2-435.2zM16-64c3.2 0 3.2 0 6.4 0l307.2 137.6c9.6 3.2 12.8 12.8 9.6 22.4s-12.8 12.8-22.4 9.6l-272-121.6 121.6 272c3.2 9.6 0 16-9.6 22.4-9.6 3.2-16 0-22.4-9.6l-134.4-310.4c-3.2-6.4 0-12.8 3.2-19.2 3.2 0 9.6-3.2 12.8-3.2zM915.2 787.2c0 38.4-28.8 67.2-67.2 67.2s-67.2-28.8-67.2-67.2c0-38.4 28.8-67.2 67.2-67.2s67.2 28.8 67.2 67.2zM812.8 787.2c0 19.2 16 35.2 35.2 35.2s35.2-16 35.2-35.2-16-35.2-35.2-35.2-35.2 16-35.2 35.2z" />
296
+ <glyph unicode="&#xea1e;" glyph-name="rocket2" d="M326.4 576c-112 12.8-224-22.4-300.8-102.4-3.2-3.2-9.6-9.6-12.8-12.8-16-16-19.2-38.4-6.4-60.8 9.6-19.2 32-28.8 54.4-25.6 76.8 12.8 153.6-3.2 220.8-41.6-32-38.4-54.4-80-64-128-3.2-16 0-28.8 12.8-38.4 9.6-9.6 19.2-12.8 32-12.8 3.2 0 6.4 0 9.6 0 48 9.6 92.8 32 128 64 38.4-67.2 54.4-144 41.6-220.8-3.2-22.4 6.4-44.8 25.6-54.4 6.4-3.2 16-6.4 25.6-6.4 12.8 0 25.6 3.2 35.2 12.8 3.2 3.2 9.6 6.4 12.8 12.8 73.6 73.6 115.2 188.8 99.2 300.8 44.8 32 86.4 67.2 128 105.6 140.8 144 233.6 336 256 540.8 0 12.8-3.2 28.8-12.8 38.4-12.8 9.6-25.6 12.8-38.4 12.8-204.8-22.4-396.8-115.2-540.8-259.2-38.4-38.4-73.6-80-105.6-124.8zM976 928c3.2 0 9.6 0 12.8-3.2s3.2-9.6 3.2-12.8c-22.4-198.4-108.8-377.6-249.6-521.6-35.2-35.2-70.4-64-112-92.8-12.8 57.6-44.8 115.2-92.8 163.2-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c112-112 140.8-310.4 0-454.4-3.2-3.2-6.4-6.4-12.8-9.6-9.6-9.6-19.2-3.2-22.4-3.2-6.4 3.2-12.8 9.6-9.6 22.4 16 89.6-6.4 182.4-54.4 259.2 0 0 0 0 0 0s0 0 0 0 0 0 0 0-3.2 0-3.2 3.2c0 0 0 0-3.2 0 0 0-3.2 0-3.2 0s0 0-3.2 0c0 0-3.2 0-3.2 0s0 0-3.2 0c0 0 0 0-3.2 0 0 0 0 0 0 0s0 0 0 0c-35.2-35.2-80-57.6-128-67.2-6.4 0-9.6 3.2-9.6 3.2s-3.2 6.4-3.2 9.6c9.6 48 32 92.8 67.2 128 0 0 0 0 0 0s0 0 0 0 0 0 0 3.2c0 0 0 3.2 0 3.2s0 3.2 0 3.2c0 0 0 3.2 0 3.2s0 3.2 0 3.2c0 0 0 3.2 0 3.2s0 3.2-3.2 3.2c0 0 0 0 0 0s0 0 0 0 0 0 0 0c-76.8 51.2-166.4 70.4-256 54.4-9.6-3.2-19.2 3.2-22.4 9.6 0 3.2-6.4 12.8 3.2 22.4 3.2 3.2 6.4 6.4 9.6 12.8 73.6 73.6 179.2 108.8 284.8 92.8 0 0 0 0 0 0s0 0 0 0 0 0 0 0c3.2 0 3.2 0 6.4 0 0 0 0 0 3.2 0 0 0 3.2 0 3.2 0s3.2 0 3.2 3.2c0 0 0 0 3.2 3.2 32 44.8 67.2 89.6 105.6 128 134.4 140.8 316.8 227.2 515.2 249.6zM707.2 547.2c25.6 0 51.2 9.6 67.2 28.8 38.4 38.4 38.4 99.2 0 134.4-35.2 35.2-99.2 35.2-134.4 0-38.4-38.4-38.4-99.2 0-134.4 19.2-16 41.6-28.8 67.2-28.8zM662.4 691.2c12.8 12.8 28.8 19.2 44.8 19.2s32-6.4 44.8-19.2c25.6-25.6 25.6-64 0-89.6s-67.2-25.6-89.6 0c-25.6 22.4-25.6 64 0 89.6zM172.8 131.2l-54.4-54.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l54.4 54.4c6.4 6.4 6.4 16 0 22.4s-19.2 6.4-25.6 0zM172.8 291.2l-131.2-131.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l134.4 134.4c6.4 6.4 6.4 16 0 22.4s-22.4 3.2-28.8-3.2zM198.4-19.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l134.4 134.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-134.4-134.4c-9.6-6.4-9.6-16-3.2-22.4z" />
297
+ <glyph unicode="&#xea1f;" glyph-name="rss" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM336 480c73.6 0 131.2-22.4 176-64 41.6-41.6 64-102.4 64-176 0-9.6 6.4-16 16-16s16 6.4 16 16c0 80-25.6 150.4-73.6 198.4s-118.4 73.6-198.4 73.6c-9.6 0-16-6.4-16-16s6.4-16 16-16zM336 636.8c227.2 0 400-169.6 400-396.8 0-9.6 6.4-16 16-16s16 6.4 16 16c3.2 246.4-182.4 432-432 432-9.6 0-16-9.6-16-19.2s6.4-16 16-16zM384 224c35.2 0 64 28.8 64 64s-28.8 64-64 64c-35.2 0-64-28.8-64-64 0-32 28.8-64 64-64zM384 320c16 0 32-12.8 32-32 0-16-12.8-32-32-32-16 0-32 12.8-32 32s16 32 32 32z" />
298
+ <glyph unicode="&#xea20;" glyph-name="safety-cap" horiz-adv-x="1408" d="M1360 256h-64c0 3.2 0 3.2 0 6.4 0 265.6-176 496-432 569.6v80c0 25.6-22.4 48-48 48h-256c-25.6 0-48-22.4-48-48v-89.6c-240-83.2-400-307.2-400-560 0-3.2 0-3.2 0-6.4h-64c-25.6 0-48-22.4-48-48v-224c0-25.6 22.4-48 48-48h1312c25.6 0 48 22.4 48 48v224c0 25.6-22.4 48-48 48zM144 262.4c0 236.8 147.2 444.8 368 524.8v-19.2c0-9.6 6.4-16 16-16s16 6.4 16 16v144c0 9.6 6.4 16 16 16h112v-160c0-9.6 6.4-16 16-16s16 6.4 16 16v160h112c9.6 0 16-6.4 16-16v-144c0-9.6 6.4-16 16-16s16 6.4 16 16v28.8c236.8-70.4 400-288 400-537.6 0-3.2 0-3.2 0-6.4h-1120c0 6.4 0 6.4 0 9.6zM1376-16c0-9.6-6.4-16-16-16h-1312c-9.6 0-16 6.4-16 16v224c0 9.6 6.4 16 16 16h1312c9.6 0 16-6.4 16-16v-224z" />
299
+ <glyph unicode="&#xea21;" glyph-name="safety-kit" d="M1024 448c0 41.6-32 86.4-73.6 92.8-35.2 172.8-166.4 304-342.4 339.2-3.2 44.8-51.2 80-96 80s-92.8-35.2-96-80c-172.8-35.2-300.8-163.2-336-336-44.8-3.2-80-51.2-80-96s35.2-92.8 80-96c35.2-172.8 160-300.8 336-336 3.2-48 51.2-80 96-80 41.6 0 86.4 32 92.8 73.6 172.8 35.2 310.4 169.6 345.6 345.6 41.6 6.4 73.6 51.2 73.6 92.8zM992 448c0-28.8-22.4-64-54.4-64h-192c6.4 19.2 9.6 41.6 9.6 64s-3.2 44.8-9.6 64h192c32 0 54.4-35.2 54.4-64zM512 240c-115.2 0-208 92.8-208 208s92.8 208 208 208 208-92.8 208-208-92.8-208-208-208zM918.4 544h-182.4c0 0-3.2 0-3.2 0-25.6 57.6-70.4 102.4-124.8 124.8 0 0 0 3.2 0 3.2v172.8c156.8-32 275.2-147.2 310.4-300.8zM512 928c28.8 0 64-22.4 64-54.4v-192c-19.2 6.4-41.6 9.6-64 9.6s-44.8-3.2-64-9.6v192c0 32 35.2 54.4 64 54.4zM416 844.8v-172.8c0 0 0-3.2 0-3.2-57.6-25.6-102.4-70.4-124.8-124.8 0 0-3.2 0-3.2 0h-172.8c32 156.8 144 268.8 300.8 300.8zM32 448c0 28.8 22.4 64 54.4 64h192c-6.4-19.2-9.6-41.6-9.6-64s3.2-44.8 9.6-64h-192c-32 0-54.4 35.2-54.4 64zM115.2 352h172.8c0 0 3.2 0 3.2 0 25.6-57.6 70.4-102.4 124.8-124.8 0 0 0-3.2 0-3.2v-172.8c-156.8 32-268.8 144-300.8 300.8zM512-32c-28.8 0-64 22.4-64 54.4v192c19.2-6.4 41.6-9.6 64-9.6s44.8 3.2 64 9.6v-192c0-32-35.2-54.4-64-54.4zM608 41.6v182.4c0 0 0 3.2 0 3.2 57.6 25.6 102.4 70.4 124.8 124.8 0 0 3.2 0 3.2 0h182.4c-35.2-153.6-156.8-275.2-310.4-310.4z" />
300
+ <glyph unicode="&#xea22;" glyph-name="sand-watch" horiz-adv-x="832" d="M80 185.6v-217.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h800c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v217.6c0 121.6-67.2 230.4-176 288 108.8 57.6 176 166.4 176 288v166.4h64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-800c-9.6 0-16-6.4-16-16s6.4-16 16-16h64v-169.6c0-121.6 67.2-230.4 176-288-108.8-54.4-176-163.2-176-284.8zM182.4-32c0 192 211.2 246.4 236.8 252.8 25.6-3.2 224-28.8 240-252.8h-476.8zM416 544c-96 32-137.6 96-153.6 128h304c-38.4-86.4-128-121.6-150.4-128zM300.8 457.6c6.4 3.2 9.6 9.6 9.6 16s-3.2 12.8-9.6 16c-115.2 44.8-188.8 153.6-188.8 272v166.4h608v-169.6c0-118.4-73.6-227.2-188.8-272-6.4-3.2-9.6-9.6-9.6-16s3.2-12.8 9.6-16c115.2-44.8 188.8-153.6 188.8-272v-214.4h-28.8c-16 230.4-217.6 272-262.4 281.6 0 3.2 3.2 6.4 3.2 6.4v256c0 0 0 3.2 0 3.2 35.2 12.8 140.8 54.4 176 166.4 0 6.4 0 9.6-3.2 12.8-3.2 6.4-6.4 9.6-12.8 9.6h-352c-6.4 0-9.6-3.2-12.8-6.4s-3.2-9.6-3.2-12.8c0-6.4 35.2-115.2 176-166.4 0 0 0-3.2 0-3.2v-256c0 0 0 0 0 0-57.6-19.2-249.6-92.8-249.6-288h-38.4v217.6c0 115.2 73.6 220.8 188.8 268.8z" />
301
+ <glyph unicode="&#xea23;" glyph-name="scale" horiz-adv-x="1056" d="M1008 736c9.6 0 16 6.4 16 16s-6.4 16-16 16h-86.4l-393.6 48v112c0 9.6-6.4 16-16 16s-16-6.4-16-16v-112l-342.4-48h-137.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h131.2l-121.6-396.8c0 0 0-3.2 0-3.2s0 0 0-3.2c0 0 0 0 0 0s0 0 0 0c0-80 64-140.8 144-140.8s144 60.8 144 140.8c0 0 0 0 0 0s0 0 0 0 0 0 0 3.2c0 0 0 3.2 0 3.2l-128 400 310.4 44.8v-752h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v752l358.4-41.6-124.8-400c0 0 0-3.2 0-3.2s0 0 0-3.2c0 0 0 0 0 0s0 0 0 0c0-80 64-140.8 144-140.8s144 60.8 144 140.8c0 0 0 0 0 0s0 0 0 0 0 0 0 3.2c0 0 0 3.2 0 3.2l-124.8 393.6h83.2zM166.4 224c-57.6 0-102.4 41.6-112 96h220.8c-3.2-54.4-51.2-96-108.8-96zM275.2 352h-214.4l105.6 339.2 108.8-339.2zM902.4 224c-57.6 0-102.4 41.6-112 96h220.8c-3.2-54.4-51.2-96-108.8-96zM1011.2 352h-211.2l105.6 339.2 105.6-339.2zM624-64c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224z" />
302
+ <glyph unicode="&#xea24;" glyph-name="scanner" horiz-adv-x="1056" d="M96 624c9.6 0 16 6.4 16 16v208c0 9.6 6.4 16 16 16h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-25.6 0-48-22.4-48-48v-208c0-9.6 6.4-16 16-16zM720 0h208c25.6 0 48 22.4 48 48v176c0 9.6-6.4 16-16 16s-16-6.4-16-16v-176c0-9.6-6.4-16-16-16h-208c-9.6 0-16-6.4-16-16s6.4-16 16-16zM96 272c-9.6 0-16-6.4-16-16v-208c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v208c0 9.6-6.4 16-16 16zM752 864h176c9.6 0 16-6.4 16-16v-208c0-9.6 6.4-16 16-16s16 6.4 16 16v208c0 25.6-22.4 48-48 48h-176c-9.6 0-16-6.4-16-16s6.4-16 16-16zM1008 416c9.6 0 16 6.4 16 16s-6.4 16-16 16h-992c-9.6 0-16-6.4-16-16s6.4-16 16-16h992z" />
303
+ <glyph unicode="&#xea25;" glyph-name="scissor" horiz-adv-x="1120" d="M169.6 588.8c89.6 0 163.2 73.6 163.2 163.2s-73.6 163.2-163.2 163.2-163.2-73.6-163.2-163.2 73.6-163.2 163.2-163.2zM169.6 883.2c73.6 0 131.2-57.6 131.2-131.2s-57.6-131.2-131.2-131.2-131.2 57.6-131.2 131.2 57.6 131.2 131.2 131.2zM169.6 44.8c89.6 0 163.2 73.6 163.2 163.2 0 38.4-12.8 73.6-35.2 99.2l51.2 70.4c6.4 6.4 3.2 16-3.2 22.4s-16 3.2-22.4-3.2l-48-64c-28.8 25.6-64 38.4-105.6 38.4-89.6 0-163.2-73.6-163.2-163.2s73.6-163.2 163.2-163.2zM169.6 339.2c73.6 0 131.2-57.6 131.2-131.2s-57.6-131.2-131.2-131.2-131.2 57.6-131.2 131.2 57.6 131.2 131.2 131.2zM1110.4-32c9.6 19.2 3.2 41.6-12.8 54.4l-521.6 464c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l521.6-467.2c6.4-6.4 6.4-12.8 3.2-19.2 0-3.2-6.4-9.6-16-9.6-57.6 3.2-137.6 19.2-214.4 73.6-137.6 99.2-352 288-352 288s-73.6 64-89.6 156.8c-12.8 76.8-64 134.4-64 134.4-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4c0 0 44.8-51.2 57.6-118.4 19.2-105.6 96-172.8 99.2-176s217.6-188.8 355.2-291.2c80-57.6 169.6-76.8 230.4-80 0 0 3.2 0 3.2 0 19.2 6.4 35.2 16 44.8 35.2zM1052.8 956.8c-73.6-9.6-185.6-41.6-310.4-140.8-211.2-169.6-288-246.4-291.2-249.6-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0c0 0 80 80 288 246.4 118.4 96 224 124.8 294.4 134.4 9.6 0 16-6.4 16-9.6 3.2-6.4 3.2-12.8-3.2-19.2l-428.8-380.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2l425.6 384c16 12.8 19.2 35.2 12.8 57.6-9.6 19.2-28.8 28.8-48 25.6z" />
304
+ <glyph unicode="&#xea26;" glyph-name="screen" d="M224 403.2c3.2 0 6.4 0 9.6 3.2l211.2 156.8 96-147.2c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 9.6 0 12.8 3.2l233.6 208v-44.8c0-9.6 6.4-16 16-16s16 6.4 16 16v80c0 9.6-6.4 16-16 16h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h38.4l-214.4-188.8-96 144c-3.2 3.2-6.4 6.4-9.6 6.4s-9.6 0-12.8-3.2l-227.2-169.6c-6.4-6.4-9.6-16-3.2-22.4 3.2-3.2 6.4-3.2 12.8-3.2zM0 816c0-44.8 35.2-80 80-80h16v-512h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h416v-70.4l-374.4-153.6c-9.6-3.2-12.8-12.8-9.6-22.4s12.8-12.8 22.4-9.6l361.6 153.6v-89.6c0-9.6 6.4-16 16-16s16 6.4 16 16v89.6l393.6-153.6c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6 0 16-9.6 19.2l-406.4 156.8v70.4h448c9.6 0 16 6.4 16 16s-6.4 16-16 16h-32v512h16c44.8 0 80 35.2 80 80s-35.2 80-80 80h-432v32c0 9.6-6.4 16-16 16s-16-6.4-16-16v-32h-400c-44.8 0-80-35.2-80-80zM896 224h-768v512h768v-512zM80 864h864c25.6 0 48-22.4 48-48s-22.4-48-48-48h-864c-25.6 0-48 22.4-48 48s22.4 48 48 48z" />
305
+ <glyph unicode="&#xea27;" glyph-name="search" horiz-adv-x="992" d="M416 108.8c67.2 0 134.4 16 195.2 48l179.2-185.6c22.4-22.4 51.2-35.2 83.2-35.2s60.8 12.8 83.2 35.2c44.8 44.8 44.8 121.6 0 169.6l-179.2 179.2c38.4 64 57.6 137.6 57.6 214.4 0 236.8-188.8 425.6-419.2 425.6s-419.2-188.8-419.2-425.6c0-233.6 188.8-425.6 419.2-425.6zM416 928c214.4 0 387.2-176 387.2-393.6 0-73.6-19.2-144-57.6-208-3.2-6.4-3.2-12.8 3.2-19.2 0 0 3.2-3.2 3.2-3.2l182.4-188.8c32-35.2 32-89.6 0-124.8-32-32-89.6-32-121.6 0l-188.8 192c-3.2 9.6-6.4 9.6-9.6 9.6s-6.4 0-9.6-3.2c-57.6-32-121.6-51.2-188.8-51.2-214.4 0-387.2 176-387.2 393.6s176 396.8 387.2 396.8zM416 272c144 0 259.2 118.4 259.2 262.4s-115.2 265.6-259.2 265.6c-144 0-259.2-118.4-259.2-262.4s118.4-265.6 259.2-265.6zM416 768c124.8 0 227.2-105.6 227.2-230.4 0-128-102.4-230.4-227.2-230.4s-227.2 105.6-227.2 230.4c0 124.8 102.4 230.4 227.2 230.4z" />
306
+ <glyph unicode="&#xea28;" glyph-name="seo" d="M425.6 630.4c-54.4 0-96-41.6-96-96s41.6-96 96-96 96 41.6 96 96-41.6 96-96 96zM425.6 470.4c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM982.4 64l-121.6 121.6c-19.2 19.2-54.4 22.4-76.8 9.6l-67.2 67.2c57.6 60.8 96 144 105.6 233.6 0 3.2 0 6.4 0 6.4 54.4 6.4 96 54.4 96 108.8 0 60.8-51.2 112-112 112-9.6 0-19.2 0-28.8-3.2 0 3.2 0 3.2-3.2 6.4-70.4 128-204.8 208-352 208-217.6 0-396.8-179.2-396.8-400s179.2-400 400-400c102.4 0 198.4 38.4 268.8 102.4l67.2-67.2c-6.4-9.6-9.6-19.2-9.6-32 0-16 6.4-32 19.2-44.8l121.6-121.6c12.8-12.8 28.8-19.2 44.8-19.2s32 6.4 44.8 19.2c12.8 12.8 19.2 28.8 19.2 44.8 0 19.2-6.4 35.2-19.2 48zM889.6 611.2c0-44.8-35.2-80-80-80s-80 35.2-80 80 35.2 80 80 80 80-35.2 80-80zM57.6 534.4c0 204.8 166.4 368 368 368 134.4 0 259.2-73.6 323.2-192 0 0 0 0 3.2-3.2-32-19.2-57.6-54.4-57.6-96 0-57.6 41.6-102.4 99.2-112 0 0 0-3.2 0-3.2-9.6-86.4-48-163.2-105.6-220.8 0 0-3.2 0-3.2-3.2 0 0-3.2-3.2-3.2-3.2-67.2-64-156.8-102.4-256-102.4-201.6 0-368 166.4-368 368zM960-3.2c-12.8-12.8-32-12.8-44.8 0l-121.6 121.6c-6.4 6.4-9.6 12.8-9.6 22.4s3.2 16 9.6 22.4 12.8 9.6 22.4 9.6 16-3.2 22.4-9.6l121.6-121.6c6.4-6.4 9.6-12.8 9.6-22.4s-3.2-16-9.6-22.4zM601.6 444.8c6.4 9.6 12.8 19.2 16 35.2h6.4c35.2 0 57.6 35.2 57.6 64s-22.4 64-57.6 64h-16c0 3.2 0 3.2-3.2 6.4 0 3.2-3.2 6.4-3.2 12.8l6.4 6.4c9.6 9.6 16 25.6 16 41.6s-6.4 28.8-16 41.6c-22.4 22.4-60.8 22.4-83.2 0l-6.4-6.4c-9.6 6.4-19.2 12.8-38.4 16v6.4c0 35.2-35.2 57.6-64 57.6s-64-22.4-64-57.6v-19.2c-3.2 0-3.2 0-6.4-3.2-3.2 0-6.4-3.2-9.6-3.2l-6.4 6.4c-22.4 22.4-60.8 22.4-83.2 0-22.4-19.2-22.4-57.6 0-80l6.4-6.4c0-3.2-3.2-6.4-3.2-12.8 0-3.2-3.2-3.2-3.2-6.4h-19.2c-35.2 0-57.6-35.2-57.6-64s22.4-64 57.6-64h6.4c3.2-19.2 9.6-28.8 16-38.4l-6.4-6.4c-9.6-9.6-16-25.6-16-41.6s6.4-28.8 16-41.6c22.4-22.4 60.8-22.4 83.2 0l6.4 6.4c3.2 0 6.4-3.2 9.6-3.2s3.2 0 6.4-3.2v-19.2c0-35.2 35.2-57.6 64-57.6s64 22.4 64 57.6v6.4c19.2 3.2 28.8 9.6 38.4 16l6.4-6.4c22.4-22.4 60.8-22.4 83.2 0s22.4 60.8 0 83.2l-3.2 12.8zM585.6 377.6c-9.6-9.6-28.8-9.6-38.4 0l-25.6 25.6-19.2-12.8c-12.8-6.4-19.2-12.8-41.6-16l-12.8-3.2v-35.2c0-12.8-16-25.6-32-25.6s-32 12.8-32 25.6v25.6c0 12.8-12.8 19.2-25.6 22.4-6.4 3.2-12.8 3.2-16 6.4l-9.6 6.4-25.6-25.6c-9.6-9.6-28.8-9.6-38.4 0-6.4 6.4-6.4 12.8-6.4 19.2s3.2 12.8 6.4 19.2l25.6 25.6-9.6 12.8c-3.2 3.2-3.2 6.4-6.4 9.6-6.4 9.6-12.8 16-16 41.6l3.2 12.8h-38.4c-12.8 0-25.6 16-25.6 32s12.8 32 25.6 32h28.8c12.8 0 19.2 12.8 22.4 28.8 3.2 6.4 6.4 12.8 6.4 19.2l6.4 9.6-22.4 22.4c-9.6 9.6-9.6 25.6 0 38.4 9.6 9.6 25.6 9.6 35.2 0l25.6-25.6 9.6 6.4c3.2 3.2 9.6 6.4 16 6.4 16 6.4 28.8 9.6 28.8 25.6v25.6c0 12.8 16 25.6 32 25.6s32-12.8 32-25.6v-35.2l12.8-3.2c22.4-3.2 32-6.4 41.6-16l19.2-12.8 25.6 25.6c9.6 12.8 28.8 12.8 38.4 3.2 6.4-6.4 6.4-12.8 6.4-19.2s-3.2-12.8-6.4-19.2l-25.6-25.6 6.4-9.6c3.2-3.2 6.4-12.8 6.4-19.2 6.4-16 9.6-28.8 22.4-28.8h25.6c12.8 0 25.6-16 25.6-32s-12.8-32-25.6-32h-35.2l-3.2-12.8c-3.2-22.4-6.4-28.8-16-41.6-3.2-3.2-3.2-6.4-6.4-9.6l-6.4-9.6 25.6-25.6c16-6.4 16-22.4 6.4-32zM841.6 611.2c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" />
307
+ <glyph unicode="&#xea29;" glyph-name="server-network" horiz-adv-x="1152" d="M496 448c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48h-448c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h448zM32 496v320c0 9.6 6.4 16 16 16h448c9.6 0 16-6.4 16-16v-320c0-9.6-6.4-16-16-16h-448c-9.6 0-16 6.4-16 16zM192 416c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160zM1104 864h-448c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48h448c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48zM1120 496c0-9.6-6.4-16-16-16h-448c-9.6 0-16 6.4-16 16v320c0 9.6 6.4 16 16 16h448c9.6 0 16-6.4 16-16v-320zM960 384c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h160zM1088 128h-128c0 0-3.2 0-3.2 0-6.4 32-28.8 54.4-60.8 64 0 0 0 0 0 3.2v128c0 9.6-6.4 16-16 16s-16-9.6-16-19.2v-128c0 0 0 0 0 0-32-6.4-57.6-32-64-64h-448c0 0 0 0 0 0-6.4 32-32 57.6-64 64 0 0 0 0 0 0v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0 0 0 0 0 0-32-6.4-57.6-32-64-64 0 0 0 0 0 0h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128c0 0 0 0 0 0 6.4-35.2 38.4-64 80-64s70.4 28.8 80 64c0 0 0 0 0 0h448c6.4-35.2 38.4-64 76.8-64s70.4 28.8 80 64c0 0 3.2 0 3.2 0h128c9.6 0 16 6.4 16 16s-6.4 16-16 16zM272 64c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48zM876.8 64c-25.6 0-48 22.4-48 48s22.4 48 48 48 48-22.4 48-48-22.4-48-48-48z" />
308
+ <glyph unicode="&#xea2a;" glyph-name="server" horiz-adv-x="1120" d="M544 195.2c-9.6 0-16-6.4-16-16v-86.4c-32-6.4-57.6-38.4-57.6-76.8 0-44.8 38.4-80 83.2-80s73.6 35.2 73.6 80c0 38.4-6.4 70.4-70.4 76.8v86.4c3.2 9.6-3.2 16-12.8 16zM608 16c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-22.4 48-48zM1056 16c0 9.6-6.4 16-16 16h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16 6.4 16 16zM400 32h-320c-9.6 0-16-6.4-16-16s6.4-16 16-16h320c9.6 0 16 6.4 16 16s-6.4 16-16 16zM0 816c0-80 67.2-144 150.4-144h822.4c80 0 147.2 64 147.2 144s-67.2 144-150.4 144h-819.2c-83.2 0-150.4-64-150.4-144zM150.4 928h822.4c64 0 118.4-51.2 118.4-112s-54.4-112-121.6-112h-819.2c-67.2 0-118.4 51.2-118.4 112s51.2 112 118.4 112zM153.6 748.8c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64zM153.6 844.8c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM704 800h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c-9.6 0-16-6.4-16-16s9.6-16 16-16zM150.4 256h822.4c83.2 0 150.4 64 150.4 144s-70.4 144-153.6 144h-819.2c-83.2 0-150.4-64-150.4-144s67.2-144 150.4-144zM150.4 512h822.4c64 0 118.4-51.2 118.4-112s-54.4-112-121.6-112h-819.2c-64 0-118.4 51.2-118.4 112s51.2 112 118.4 112zM153.6 339.2c35.2 0 64 28.8 64 64s-28.8 64-64 64-64-28.8-64-64 28.8-64 64-64zM153.6 435.2c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM704 384h224c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224c-9.6 0-16-6.4-16-16s9.6-16 16-16z" />
309
+ <glyph unicode="&#xea2b;" glyph-name="share" horiz-adv-x="992" d="M630.4 662.4c3.2 0 3.2 3.2 3.2 3.2 25.6-41.6 70.4-73.6 118.4-86.4 16-3.2 28.8-6.4 44.8-6.4 57.6 0 112 25.6 150.4 70.4 35.2 44.8 51.2 105.6 38.4 163.2-16 70.4-73.6 128-144 144-73.6 16-147.2-9.6-192-67.2-35.2-44.8-51.2-105.6-38.4-163.2 3.2-9.6 6.4-22.4 9.6-32-3.2 0-3.2 0-3.2 0l-262.4-124.8c-3.2 0-3.2-3.2-3.2-3.2-25.6 38.4-67.2 67.2-115.2 80-73.6 16-147.2-9.6-192-67.2-35.2-44.8-51.2-105.6-38.4-163.2 16-70.4 73.6-131.2 147.2-144 12.8-3.2 25.6-3.2 38.4-3.2 64 0 121.6 32 156.8 83.2 0-3.2 3.2-3.2 6.4-3.2l236.8-134.4c-16-38.4-22.4-80-12.8-121.6 16-70.4 73.6-128 144-144 16-3.2 28.8-6.4 44.8-6.4 57.6 0 112 25.6 150.4 70.4 35.2 44.8 51.2 105.6 38.4 163.2-16 70.4-73.6 128-144 144-73.6 16-147.2-9.6-192-67.2-3.2-3.2-6.4-9.6-9.6-12.8l-236.8 134.4c-3.2 0-3.2 3.2-6.4 3.2 19.2 38.4 25.6 80 16 121.6-3.2 16-9.6 32-16 44.8 0 0 3.2 0 3.2 0l259.2 124.8zM675.2 867.2c28.8 38.4 73.6 60.8 124.8 60.8 12.8 0 25.6 0 38.4-3.2 57.6-12.8 105.6-60.8 118.4-118.4 9.6-48 0-99.2-32-137.6-38.4-48-99.2-70.4-163.2-54.4-57.6 9.6-105.6 57.6-118.4 115.2-9.6 51.2 0 99.2 32 137.6zM640 227.2c32 38.4 76.8 60.8 124.8 60.8 12.8 0 25.6 0 38.4-3.2 57.6-12.8 105.6-60.8 118.4-118.4 9.6-48 0-99.2-32-137.6-38.4-48-99.2-70.4-163.2-54.4-57.6 12.8-105.6 60.8-118.4 118.4-9.6 48 3.2 96 32 134.4zM160 300.8c-60.8 12.8-108.8 60.8-121.6 118.4-9.6 48 0 99.2 32 137.6s76.8 60.8 124.8 60.8c12.8 0 25.6 0 35.2-3.2 60.8-12.8 108.8-64 121.6-124.8 6.4-38.4 0-76.8-19.2-112-35.2-60.8-105.6-92.8-172.8-76.8z" />
310
+ <glyph unicode="&#xea2c;" glyph-name="shield" horiz-adv-x="960" d="M476.8 694.4c-131.2 0-240-108.8-240-240s108.8-240 240-240c131.2 0 240 108.8 240 240 0 134.4-108.8 240-240 240zM476.8 246.4c-115.2 0-208 92.8-208 208s92.8 208 208 208 208-92.8 208-208-92.8-208-208-208zM838.4 166.4c80 96 121.6 188.8 121.6 284.8v492.8c0 6.4-3.2 12.8-9.6 16s-12.8 0-16-3.2c-64-60.8-147.2-96-233.6-96-76.8 0-153.6 28.8-208 76.8-6.4 6.4-16 6.4-22.4 0-57.6-48-134.4-76.8-211.2-76.8-121.6 0-230.4 96-233.6 96-3.2 3.2-9.6 3.2-16 3.2-6.4-3.2-9.6-9.6-9.6-16v-489.6c0-147.2 80-284.8 233.6-393.6 115.2-83.2 227.2-121.6 233.6-121.6 3.2 0 3.2 0 6.4 0s3.2 0 6.4 0c6.4 0 224 70.4 358.4 227.2zM473.6-32c-48 19.2-441.6 172.8-441.6 486.4v457.6c41.6-32 131.2-83.2 227.2-83.2 80 0 160 28.8 220.8 76.8 60.8-48 140.8-76.8 220.8-76.8 83.2 0 163.2 28.8 227.2 80v-454.4c0-89.6-38.4-176-112-265.6-118.4-137.6-310.4-208-342.4-220.8zM556.8 544l-108.8-121.6-51.2 67.2c-6.4 6.4-16 9.6-22.4 3.2s-9.6-16-3.2-22.4l64-80c3.2-6.4 6.4-6.4 12.8-6.4 0 0 0 0 0 0 3.2 0 9.6 0 12.8 3.2l121.6 134.4c6.4 6.4 6.4 16 0 22.4-9.6 6.4-19.2 6.4-25.6 0z" />
311
+ <glyph unicode="&#xea2d;" glyph-name="ship" horiz-adv-x="1056" d="M896 592c9.6 0 16 6.4 16 16v176c0 25.6-22.4 48-48 48h-208v80c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-80h-208c-25.6 0-48-22.4-48-48v-176c0-9.6 6.4-16 16-16s16 6.4 16 16v176c0 9.6 6.4 16 16 16h240v112c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-112h240c9.6 0 16-6.4 16-16v-176c0-9.6 6.4-16 16-16zM377.6 512c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM377.6 416c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-16-32-32-32zM665.6 512c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM665.6 416c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-16-32-32-32zM979.2 35.2c-3.2 3.2-6.4 3.2-9.6 6.4 19.2 150.4 64 288 83.2 342.4 6.4 22.4-3.2 48-25.6 57.6l-492.8 243.2c-12.8 6.4-28.8 6.4-41.6 0l-467.2-252.8c-19.2-9.6-28.8-35.2-22.4-57.6 16-54.4 60.8-192 83.2-336-6.4-3.2-12.8-6.4-19.2-9.6l-60.8-57.6c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l60.8 57.6c6.4 6.4 22.4 6.4 28.8 0l32-28.8c19.2-19.2 51.2-19.2 70.4 0l32 28.8c6.4 6.4 22.4 6.4 28.8 0l35.2-32c19.2-19.2 51.2-19.2 70.4 0l35.2 32c6.4 6.4 22.4 6.4 28.8 0l35.2-32c19.2-19.2 51.2-19.2 70.4 0l38.4 32c6.4 6.4 22.4 6.4 28.8 0l35.2-32c19.2-19.2 51.2-19.2 70.4 0l28.8 25.6c6.4 6.4 22.4 6.4 28.8 0l28.8-25.6c19.2-19.2 51.2-19.2 70.4 0l38.4 35.2c6.4 6.4 22.4 6.4 28.8 0l70.4-64c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c6.4 6.4 6.4 16 0 22.4l-67.2 64zM937.6 48c-9.6 0-22.4-6.4-28.8-12.8l-38.4-35.2c-6.4-6.4-22.4-6.4-28.8 0l-28.8 25.6c-19.2 19.2-51.2 19.2-70.4 0l-32-25.6c-6.4-6.4-22.4-6.4-28.8 0l-35.2 32c-19.2 19.2-51.2 19.2-70.4 0l-38.4-32c-6.4-6.4-22.4-6.4-28.8 0l-35.2 32c-19.2 19.2-51.2 19.2-70.4 0l-35.2-32c-6.4-6.4-22.4-6.4-28.8 0l-35.2 32c-19.2 19.2-51.2 19.2-70.4 0l-32-28.8c-6.4-6.4-22.4-6.4-28.8 0l-32 28.8c-6.4 6.4-12.8 9.6-22.4 9.6-25.6 147.2-67.2 288-86.4 342.4-3.2 6.4 0 16 6.4 19.2l457.6 246.4v-489.6c0-9.6 6.4-16 16-16s16 6.4 16 16v492.8l486.4-236.8c6.4-3.2 9.6-12.8 9.6-19.2-19.2-57.6-67.2-198.4-86.4-348.8z" />
312
+ <glyph unicode="&#xea2e;" glyph-name="shirt" horiz-adv-x="928" d="M444.8-67.2c124.8 0 272 9.6 435.2 41.6 25.6 6.4 51.2 25.6 51.2 51.2v768c0 25.6-25.6 44.8-48 51.2l-115.2 12.8c-19.2 3.2-44.8 9.6-64 16l-35.2 70.4c0 0 0 3.2 0 3.2-3.2 6.4-9.6 12.8-16 12.8h-406.4c-6.4 0-12.8-6.4-16-12.8 0 0 0-3.2 0-3.2l-25.6-70.4c-28.8-12.8-60.8-22.4-86.4-25.6l-76.8-6.4c-25.6-3.2-41.6-22.4-41.6-51.2v-764.8c0-25.6 19.2-44.8 41.6-51.2 57.6-12.8 198.4-41.6 403.2-41.6zM355.2-32l80 672h35.2l80-672c-70.4-3.2-137.6-3.2-195.2 0zM428.8 672l-25.6 41.6 54.4 80 48-64-28.8-57.6h-48zM764.8 825.6l108.8-12.8c9.6-3.2 22.4-12.8 22.4-19.2v-281.6h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h96v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v32h96v-451.2c0-6.4-12.8-19.2-25.6-22.4-102.4-19.2-201.6-32-291.2-38.4l-76.8 684.8 25.6 51.2 3.2-3.2c3.2-3.2 6.4-6.4 12.8-6.4 0 0 0 0 0 0 3.2 0 9.6 3.2 12.8 3.2l144 144c12.8-6.4 41.6-12.8 64-16zM643.2 921.6l28.8-57.6-128-131.2-67.2 92.8 166.4 96zM592 928l-137.6-76.8-144 76.8h281.6zM256 921.6l182.4-96-70.4-105.6-131.2 144 19.2 57.6zM32 25.6v454.4h96v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v32h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-224v278.4c0 9.6 6.4 19.2 16 19.2l73.6 6.4c28.8 3.2 60.8 12.8 92.8 25.6l144-160c3.2-3.2 6.4-6.4 12.8-6.4 0 0 0 0 0 0 6.4 0 9.6 3.2 12.8 6.4v0l22.4-35.2-83.2-678.4c-134.4 9.6-230.4 28.8-272 38.4-9.6 3.2-19.2 12.8-19.2 19.2z" />
313
+ <glyph unicode="&#xea2f;" glyph-name="shopping-bag1" horiz-adv-x="736" d="M48-64h640c25.6 0 48 22.4 48 48v640c0 25.6-22.4 48-48 48h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80c9.6 0 16-6.4 16-16v-640c0-9.6-6.4-16-16-16h-640c-9.6 0-16 6.4-16 16v640c0 9.6 6.4 16 16 16h80c9.6 0 16 6.4 16 16s-6.4 16-16 16h-80c-25.6 0-48-22.4-48-48v-640c0-25.6 22.4-48 48-48zM208 528c9.6 0 16 6.4 16 16v230.4c0 86.4 64 153.6 144 153.6s144-67.2 144-153.6v-230.4c0-9.6 6.4-16 16-16s16 6.4 16 16v230.4c0 102.4-80 185.6-176 185.6s-176-83.2-176-185.6v-230.4c0-9.6 6.4-16 16-16zM288 672c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160z" />
314
+ <glyph unicode="&#xea30;" glyph-name="shopping-bag2" horiz-adv-x="992" d="M496 960c-105.6 0-192-86.4-192-192v-64h-147.2c-22.4 0-41.6-16-44.8-38.4l-112-675.2c-3.2-12.8 3.2-28.8 9.6-38.4 9.6-9.6 22.4-16 38.4-16h896c12.8 0 25.6 6.4 35.2 16s12.8 25.6 9.6 38.4l-112 672c0 25.6-19.2 41.6-41.6 41.6h-147.2v64c0 105.6-86.4 192-192 192zM835.2 672c6.4 0 12.8-6.4 16-12.8l112-672c0-3.2 0-9.6-3.2-12.8s-6.4-6.4-12.8-6.4h-896c-6.4 0-9.6 3.2-12.8 6.4-6.4 3.2-6.4 6.4-6.4 12.8l112 672c0 6.4 6.4 12.8 12.8 12.8h147.2v-144c0-9.6 6.4-16 16-16s16 6.4 16 16v240c0 89.6 70.4 160 160 160s160-70.4 160-160v-240c0-9.6 6.4-16 16-16s16 6.4 16 16v144h147.2zM592 704h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
315
+ <glyph unicode="&#xea31;" glyph-name="shopping-bag3" horiz-adv-x="864" d="M0-16c0-25.6 22.4-48 48-48h768c25.6 0 48 22.4 48 48v800c0 3.2-3.2 9.6-6.4 12.8l-108.8 134.4c-12.8 19.2-35.2 28.8-60.8 28.8h-512c-25.6 0-48-9.6-64-28.8l-108.8-137.6c0 0 0 0 0-3.2 0 0 0-3.2-3.2-3.2 0 0 0-3.2 0-3.2s0 0 0 0v-800zM832-16c0-9.6-6.4-16-16-16h-768c-9.6 0-16 6.4-16 16v784h800v-784zM137.6 908.8c9.6 12.8 22.4 19.2 38.4 19.2h515.2c16 0 28.8-6.4 38.4-19.2l83.2-108.8h-764.8l89.6 108.8zM416 416c0 0 0 0 0 0s3.2 0 0 0c3.2 0 3.2 0 3.2 0 89.6 0 156.8 67.2 156.8 156.8v67.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-67.2c0-73.6-51.2-121.6-124.8-124.8-76.8 0-131.2 51.2-131.2 124.8v67.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-67.2c0-89.6 67.2-156.8 160-156.8z" />
316
+ <glyph unicode="&#xea32;" glyph-name="shopping-bag4" horiz-adv-x="608" d="M272 201.6v-233.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v233.6c166.4 0 304 169.6 304 380.8 0 208-137.6 377.6-304 377.6s-304-169.6-304-380.8c0-195.2 118.4-355.2 272-377.6zM304 928c150.4 0 272-156.8 272-348.8s-121.6-348.8-272-348.8v249.6l188.8 182.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-163.2-163.2v86.4c0 9.6-6.4 16-16 16s-19.2-6.4-19.2-16v-80l-131.2 160c-6.4 6.4-16 6.4-22.4 0-6.4-3.2-9.6-12.8-3.2-19.2l156.8-185.6v-249.6c-134.4 22.4-240 169.6-240 345.6 0 192 121.6 348.8 272 348.8z" />
317
+ <glyph unicode="&#xea33;" glyph-name="shuffle" d="M720 672h121.6l-99.2-99.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l128 128c6.4 6.4 6.4 16 0 22.4l-128 128c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l96-102.4h-121.6c-83.2 0-156.8-41.6-201.6-108.8l-70.4-108.8-80 115.2c-44.8 70.4-121.6 102.4-201.6 102.4h-6.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h6.4c70.4 0 137.6-28.8 176-86.4l89.6-131.2-89.6-134.4c-41.6-64-105.6-96-176-96h-6.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h6.4c83.2 0 156.8 41.6 201.6 108.8l179.2 275.2c38.4 60.8 102.4 96 172.8 96zM764.8 348.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2h-121.6c-70.4 0-137.6 35.2-176 96l-41.6 64c-6.4 6.4-16 9.6-22.4 3.2s-9.6-16-3.2-22.4l41.6-64c44.8-67.2 118.4-108.8 201.6-108.8h121.6l-99.2-99.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l128 128c6.4 6.4 6.4 16 0 22.4l-131.2 124.8z" />
318
+ <glyph unicode="&#xea34;" glyph-name="shutter" d="M512-64c137.6 0 262.4 54.4 355.2 144 3.2 0 3.2 3.2 3.2 3.2 96 92.8 153.6 224 153.6 364.8 0 233.6-160 432-374.4 492.8-3.2 0-3.2 3.2-6.4 3.2-41.6 9.6-86.4 16-131.2 16-131.2 0-252.8-51.2-345.6-134.4-3.2 0-3.2-3.2-6.4-6.4-99.2-92.8-160-224-160-371.2 0-281.6 230.4-512 512-512zM44.8 339.2c0 0 0 0 0 0l201.6 166.4 102.4-508.8c-150.4 54.4-265.6 182.4-304 342.4zM688 624l54.4-252.8-172.8-156.8-249.6 83.2-48 227.2 201.6 166.4 214.4-67.2zM384-16l-57.6 278.4 499.2-176c-83.2-73.6-192-118.4-313.6-118.4-44.8 0-86.4 6.4-128 16zM854.4 112l-249.6 86.4 377.6 345.6c6.4-32 9.6-64 9.6-96 0-131.2-51.2-249.6-137.6-336zM972.8 579.2l-201.6-185.6-108.8 508.8c150.4-48 268.8-169.6 310.4-323.2zM627.2 912l54.4-252.8-473.6 160c80 67.2 188.8 108.8 304 108.8 38.4 0 76.8-6.4 115.2-16zM179.2 793.6l262.4-86.4-403.2-332.8c-3.2 25.6-6.4 48-6.4 73.6 0 134.4 57.6 259.2 147.2 345.6z" />
319
+ <glyph unicode="&#xea35;" glyph-name="sign-in" horiz-adv-x="960" d="M723.2 960h-672c-28.8 0-51.2-22.4-51.2-48v-928c0-25.6 22.4-48 51.2-48h672c25.6 0 44.8 22.4 44.8 48v272c0 9.6-6.4 16-16 16s-16-6.4-16-16v-272c0-9.6-6.4-16-12.8-16h-672c-9.6 0-19.2 6.4-19.2 16v928c0 9.6 9.6 16 19.2 16h672c6.4 0 12.8-6.4 12.8-16v-272c0-9.6 6.4-16 16-16s16 6.4 16 16v272c0 25.6-19.2 48-44.8 48zM944 432c0 9.6-6.4 16-16 16h-441.6l76.8 76.8c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-102.4-102.4c0 0-3.2-3.2-3.2-6.4-3.2-3.2-3.2-9.6 0-12.8 0-3.2 3.2-3.2 3.2-6.4l102.4-102.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-80 76.8h441.6c9.6 0 16 6.4 16 16z" />
320
+ <glyph unicode="&#xea36;" glyph-name="sign-out" horiz-adv-x="960" d="M0-16c0-25.6 22.4-48 48-48h672c25.6 0 48 22.4 48 48v272c0 9.6-6.4 16-16 16s-16-6.4-16-16v-272c0-9.6-6.4-16-16-16h-672c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h672c9.6 0 16-6.4 16-16v-272c0-9.6 6.4-16 16-16s16 6.4 16 16v272c0 25.6-22.4 48-48 48h-672c-25.6 0-48-22.4-48-48v-928zM825.6 316.8c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l102.4 102.4c6.4 6.4 6.4 16 0 22.4l-102.4 102.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l76.8-76.8h-457.6c-9.6 0-16-6.4-16-16s6.4-12.8 16-12.8h454.4l-76.8-76.8c-6.4-6.4-6.4-16 0-22.4z" />
321
+ <glyph unicode="&#xea37;" glyph-name="sitemap1" horiz-adv-x="1120" d="M128 400v-112c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 9.6 6.4 16 16 16h368v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96h368c9.6 0 16-6.4 16-16v-112c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 25.6-22.4 48-48 48h-368v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64h-368c-25.6 0-48-22.4-48-48zM48-64h192c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48zM32 176c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16v192zM656-64c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h192zM448-16v192c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16zM880 224c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48h192c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-192zM1088 176v-192c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16v192c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16zM720 576c25.6 0 48 22.4 48 48v288c0 25.6-22.4 48-48 48h-288c-25.6 0-48-22.4-48-48v-288c0-25.6 22.4-48 48-48h288zM416 624v288c0 9.6 6.4 16 16 16h288c9.6 0 16-6.4 16-16v-288c0-9.6-6.4-16-16-16h-288c-9.6 0-16 6.4-16 16z" />
322
+ <glyph unicode="&#xea38;" glyph-name="sitemap2" horiz-adv-x="1088" d="M336 768c0-105.6 86.4-192 192-192s192 86.4 192 192-86.4 192-192 192-192-86.4-192-192zM688 768c0-89.6-70.4-160-160-160s-160 70.4-160 160 70.4 160 160 160 160-70.4 160-160zM144-64c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM144 192c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM544-64c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM544 192c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM944-64c80 0 144 64 144 144s-64 144-144 144-144-64-144-144 64-144 144-144zM944 192c60.8 0 112-51.2 112-112s-51.2-112-112-112-112 51.2-112 112 51.2 112 112 112zM928 320c0-9.6 6.4-16 16-16s16 6.4 16 16v80c0 9.6-6.4 16-16 16h-400v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-368c-9.6 0-16-6.4-16-16v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v64h352v-64c0-9.6 6.4-16 16-16s16 6.4 16 16v64h384v-64z" />
323
+ <glyph unicode="&#xea39;" glyph-name="skart" horiz-adv-x="736" d="M601.6 726.4l112-54.4c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6s0 16-6.4 22.4l-304 140.8c16 19.2 22.4 41.6 12.8 67.2-3.2 12.8-9.6 22.4-19.2 32-28.8 25.6-73.6 25.6-102.4 0-16-16-22.4-28.8-25.6-44.8 0-9.6 3.2-16 12.8-19.2 9.6 0 16 3.2 19.2 12.8 0 9.6 6.4 19.2 12.8 25.6 16 16 44.8 16 60.8 0 6.4-6.4 9.6-9.6 12.8-16 6.4-16-3.2-35.2-19.2-44.8l-380.8-153.6c-6.4-3.2-12.8-12.8-9.6-22.4 3.2-6.4 9.6-9.6 16-9.6 3.2 0 3.2 0 6.4 0l128 51.2 70.4-115.2c16-28.8 19.2-64 3.2-96l-211.2-454.4c-12.8-25.6-12.8-57.6 3.2-83.2 16-22.4 44.8-38.4 73.6-38.4h553.6c28.8 0 57.6 16 70.4 38.4 16 25.6 19.2 54.4 6.4 83.2l-211.2 454.4c-16 35.2-12.8 76.8 12.8 108.8l80 105.6zM393.6 822.4l73.6-35.2c-51.2-25.6-112-25.6-166.4 0l92.8 35.2zM691.2 44.8c6.4-16 6.4-35.2-3.2-51.2s-25.6-25.6-44.8-25.6h-553.6c-19.2 0-35.2 9.6-44.8 25.6s-9.6 35.2-3.2 51.2l214.4 454.4c6.4 16 9.6 32 12.8 48 12.8-3.2 28.8-6.4 51.2-9.6-51.2-92.8-64-259.2-67.2-268.8 0-9.6 6.4-16 16-16 0 0 0 0 0 0 9.6 0 16 6.4 16 16 0 3.2 12.8 185.6 70.4 268.8 6.4 0 9.6 0 16 0s12.8 0 19.2 0c12.8-35.2 54.4-150.4 60.8-262.4 0-9.6 6.4-12.8 16-12.8 0 0 0 0 0 0 9.6 0 16 3.2 16 12.8-6.4 112-44.8 224-57.6 265.6 16 3.2 32 6.4 48 12.8 0-16 6.4-35.2 12.8-51.2l204.8-457.6zM496 640c-12.8-16-22.4-35.2-25.6-57.6-73.6-38.4-172.8-16-204.8-6.4-3.2 19.2-9.6 35.2-19.2 51.2l-67.2 108.8 83.2 35.2c38.4-22.4 76.8-35.2 118.4-35.2s83.2 12.8 118.4 35.2l70.4-32-73.6-99.2z" />
324
+ <glyph unicode="&#xea3a;" glyph-name="skull" horiz-adv-x="896" d="M3.2 518.4c0-153.6 92.8-288 188.8-364.8v-102.4c0-64 51.2-115.2 115.2-115.2h284.8c60.8 0 115.2 51.2 115.2 112v102.4c96 76.8 192 211.2 192 364.8-3.2 246.4-204.8 444.8-451.2 444.8s-444.8-198.4-444.8-441.6zM860.8 518.4c0-147.2-96-275.2-185.6-345.6-3.2-3.2-3.2-9.6-3.2-12.8v-112c0-44.8-38.4-80-83.2-80h-44.8v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-64v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-64v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96h-12.8c-44.8 0-83.2 35.2-83.2 80v112c0 6.4 0 9.6-6.4 12.8-89.6 70.4-182.4 198.4-182.4 345.6 0 224 185.6 409.6 412.8 409.6s412.8-185.6 412.8-409.6zM656 336c70.4 0 128 57.6 128 128s-57.6 128-128 128-128-57.6-128-128 57.6-128 128-128zM656 560c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM256 592c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128-57.6 128-128 128zM256 368c-54.4 0-96 41.6-96 96s41.6 96 96 96 96-41.6 96-96-44.8-96-96-96zM416 361.6l-54.4-96c-9.6-16-9.6-35.2 0-51.2 9.6-12.8 22.4-22.4 38.4-22.4h102.4c16 0 28.8 9.6 38.4 22.4 9.6 16 9.6 32 3.2 48l-48 96c-6.4 16-22.4 25.6-38.4 25.6-19.2 0-35.2-9.6-41.6-22.4zM454.4 352c3.2 0 9.6-3.2 9.6-6.4l48-96c3.2-6.4 3.2-12.8 0-19.2 0-3.2-3.2-6.4-9.6-6.4h-102.4c-6.4 0-9.6 3.2-9.6 6.4-3.2 3.2-3.2 12.8 0 19.2l54.4 96c0 6.4 6.4 6.4 9.6 6.4z" />
325
+ <glyph unicode="&#xea3b;" glyph-name="skyscraper" horiz-adv-x="768" d="M0-48c0-9.6 6.4-16 16-16h736c9.6 0 16 6.4 16 16s-6.4 16-16 16h-736c-9.6 0-16-6.4-16-16zM240 576v-544c0-9.6 6.4-16 16-16s16 6.4 16 16v544c0 9.6-6.4 16-16 16s-16-6.4-16-16zM368 576v-544c0-9.6 6.4-16 16-16s16 6.4 16 16v544c0 9.6-6.4 16-16 16s-16-6.4-16-16zM496 576v-544c0-9.6 6.4-16 16-16s16 6.4 16 16v544c0 9.6-6.4 16-16 16s-16-6.4-16-16zM384 944c-9.6 0-16-6.4-16-16v-64h-80c-25.6 0-48-22.4-48-48v-80h-80c-25.6 0-48-22.4-48-48v-656c0-9.6 6.4-16 16-16s16 6.4 16 16v656c0 9.6 6.4 16 16 16h448c9.6 0 16-6.4 16-16v-656c0-9.6 6.4-16 16-16s16 6.4 16 16v656c0 25.6-22.4 48-48 48h-80v80c0 25.6-22.4 48-48 48h-80v64c0 9.6-6.4 16-16 16zM480 832c9.6 0 16-6.4 16-16v-80h-224v80c0 9.6 6.4 16 16 16h192z" />
326
+ <glyph unicode="&#xea3c;" glyph-name="slider-doc" horiz-adv-x="1408" d="M1168 960h-928c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM1184-16c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-928zM464 416h192c25.6 0 48 22.4 48 48v192c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-192c0-25.6 22.4-48 48-48zM448 656c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-192c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16v192zM1024 704h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 576h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 448h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16h192c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 320h-608c-9.6 0-16-6.4-16-16s6.4-16 16-16h608c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1024 192h-608c-9.6 0-16-6.4-16-16s6.4-16 16-16h608c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1382.4 889.6c-16 9.6-35.2 6.4-48-3.2l-76.8-51.2c-9.6-3.2-12.8-12.8-6.4-19.2 3.2-6.4 16-9.6 22.4-3.2l76.8 51.2c6.4 3.2 12.8 3.2 16 0 6.4-6.4 9.6-12.8 9.6-19.2v-796.8c0-6.4-3.2-12.8-9.6-16-3.2 0-9.6-3.2-16 0l-73.6 51.2c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l73.6-51.2c9.6-6.4 19.2-9.6 28.8-9.6 6.4 0 16 3.2 22.4 6.4 16 9.6 25.6 25.6 25.6 44.8v796.8c0 19.2-9.6 35.2-25.6 44.8zM38.4 864c6.4 3.2 16 0 19.2-3.2l76.8-60.8c6.4-6.4 16-3.2 22.4 3.2s3.2 16-3.2 22.4l-76.8 60.8c-12.8 12.8-35.2 12.8-51.2 6.4-16-9.6-25.6-22.4-25.6-41.6v-806.4c0-16 9.6-32 25.6-38.4 6.4-3.2 12.8-6.4 22.4-6.4 12.8 0 22.4 3.2 32 12.8l73.6 60.8c6.4 6.4 6.4 16 3.2 22.4-6.4 6.4-16 6.4-22.4 3.2l-73.6-60.8c-6.4-6.4-16-6.4-22.4-3.2s-6.4 6.4-6.4 9.6v806.4c0 6.4 3.2 9.6 6.4 12.8z" />
327
+ <glyph unicode="&#xea3d;" glyph-name="slider-h-range" horiz-adv-x="928" d="M208 400c9.6 0 16 6.4 16 16v448c0 9.6-6.4 16-16 16s-16-6.4-16-16v-448c0-9.6 6.4-16 16-16zM48 960c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h832c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-832zM896 912v-928c0-9.6-6.4-16-16-16h-832c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h832c9.6 0 16-6.4 16-16zM208 345.6c-54.4 0-96-41.6-96-96 0-48 35.2-86.4 80-92.8v-124.8c0-9.6 6.4-16 16-16s16 6.4 16 16v124.8c44.8 6.4 80 48 80 92.8 0 54.4-41.6 96-96 96zM208 185.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM464 496c-9.6 0-16-6.4-16-16v-448c0-9.6 6.4-16 16-16s16 6.4 16 16v448c0 9.6-6.4 16-16 16zM480 729.6c0 3.2 0 3.2 0 6.4v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-3.2 0-3.2 0-6.4-44.8-6.4-80-48-80-96 0-54.4 41.6-96 96-96s96 41.6 96 96c0 48-35.2 89.6-80 96zM464 569.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64zM720 400c9.6 0 16 6.4 16 16v448c0 9.6-6.4 16-16 16s-16-6.4-16-16v-448c0-9.6 6.4-16 16-16zM720 345.6c-54.4 0-96-41.6-96-96 0-48 35.2-86.4 80-92.8v-124.8c0-9.6 6.4-16 16-16s16 6.4 16 16v124.8c44.8 6.4 80 48 80 92.8 0 54.4-41.6 96-96 96zM720 185.6c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64-28.8-64-64-64z" />
328
+ <glyph unicode="&#xea3e;" glyph-name="slider-image" horiz-adv-x="1408" d="M41.6 876.8c6.4 3.2 16 3.2 22.4-3.2l70.4-64c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-70.4 64c-16 16-38.4 19.2-57.6 12.8-19.2-9.6-28.8-25.6-28.8-44.8v-832c0-19.2 9.6-35.2 28.8-44.8 6.4-3.2 12.8-3.2 22.4-3.2 12.8 0 25.6 3.2 35.2 12.8l70.4 64c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-70.4-64c-6.4-6.4-16-6.4-22.4-3.2-3.2 3.2-9.6 6.4-9.6 16v832c0 9.6 6.4 12.8 9.6 12.8zM1379.2 908.8c-19.2 9.6-41.6 3.2-57.6-9.6l-70.4-64c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l70.4 64c6.4 6.4 16 6.4 22.4 3.2 3.2-3.2 9.6-6.4 9.6-16v-832c0-9.6-6.4-12.8-9.6-12.8-6.4-3.2-16-3.2-22.4 3.2l-70.4 64c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l70.4-64c9.6-9.6 22.4-12.8 35.2-12.8 6.4 0 16 0 22.4 3.2 19.2 6.4 28.8 25.6 28.8 44.8v828.8c0 19.2-9.6 35.2-28.8 44.8zM1136 960h-864c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h864c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM1152-16c0-9.6-6.4-16-16-16h-864c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h864c9.6 0 16-6.4 16-16v-928zM912 572.8c-6.4 6.4-16 6.4-22.4 0l-265.6-284.8-112 118.4c-6.4 6.4-16 6.4-22.4 0l-144-153.6c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l131.2 144 112-118.4c6.4-6.4 16-6.4 22.4 0l265.6 284.8 147.2-160c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-156.8 166.4zM473.6 585.6c60.8 0 112 51.2 112 112s-51.2 112-112 112-112-51.2-112-112 48-112 112-112zM473.6 777.6c44.8 0 80-35.2 80-80s-35.2-80-80-80-80 35.2-80 80 35.2 80 80 80z" />
329
+ <glyph unicode="&#xea3f;" glyph-name="slider-range-h" d="M736 736h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256c-9.6 0-16-6.4-16-16s6.4-16 16-16zM32 736h435.2c9.6-51.2 54.4-89.6 108.8-89.6 60.8 0 112 51.2 112 112s-51.2 112-112 112c-57.6 0-105.6-44.8-112-102.4h-432c-9.6 0-16-6.4-16-16s6.4-16 16-16zM576 838.4c44.8 0 80-35.2 80-80s-35.2-80-80-80-80 35.2-80 80 35.2 80 80 80zM992 448h-496c-6.4 57.6-54.4 102.4-112 102.4-60.8 0-112-51.2-112-112s51.2-112 112-112c54.4 0 99.2 38.4 108.8 89.6h499.2c9.6 0 16 6.4 16 16s-6.4 16-16 16zM384 358.4c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80zM32 416h192c9.6 0 16 6.4 16 16s-6.4 16-16 16h-192c-9.6 0-16-6.4-16-16s6.4-16 16-16zM992 128h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16h128c9.6 0 16 6.4 16 16s-6.4 16-16 16zM704 227.2c-57.6 0-105.6-44.8-112-99.2h-560c-9.6 0-16-6.4-16-16s6.4-16 16-16h563.2c9.6-51.2 54.4-92.8 108.8-92.8 60.8 0 112 51.2 112 112s-51.2 112-112 112zM704 35.2c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80z" />
330
+ <glyph unicode="&#xea40;" glyph-name="slider-v-open" horiz-adv-x="864" d="M96 944v-256c0-9.6 6.4-16 16-16s16 6.4 16 16v256c0 9.6-6.4 16-16 16s-16-6.4-16-16zM96 387.2v-435.2c0-9.6 6.4-16 16-16s16 6.4 16 16v435.2c64 6.4 96 54.4 96 108.8 0 60.8-51.2 112-115.2 112s-108.8-51.2-108.8-112c0-57.6 32-102.4 96-108.8zM108.8 576c44.8 0 80-35.2 80-80s-35.2-80-80-80-80 35.2-80 80 35.2 80 80 80zM416 928v-480c0-9.6 6.4-16 16-16s16 6.4 16 16v480c0 9.6-6.4 16-16 16s-16-6.4-16-16zM416 160c0 0 0 0 0 0v-224c0-9.6 6.4-16 16-16s16 6.4 16 16v224c0 0 0 0 0 0 54.4 6.4 96 54.4 96 112 0 60.8-51.2 112-112 112s-112-51.2-112-112c0-57.6 41.6-102.4 96-112zM432 352c44.8 0 80-35.2 80-80s-35.2-80-80-80-80 35.2-80 80 35.2 80 80 80zM768 800v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-128c0-9.6 6.4-16 16-16s16 6.4 16 16zM867.2 624c0 60.8-51.2 112-112 112s-112-51.2-112-112c0-54.4 41.6-102.4 92.8-108.8 0 0 0 0 0-3.2v-576c0-9.6 6.4-16 16-16s16 6.4 16 16v576c0 0 0 0 0 0 54.4 6.4 99.2 54.4 99.2 112zM755.2 544c-44.8 0-80 35.2-80 80s35.2 80 80 80 80-35.2 80-80-35.2-80-80-80z" />
331
+ <glyph unicode="&#xea41;" glyph-name="slider-video" horiz-adv-x="1472" d="M656 323.2c9.6 0 16 3.2 22.4 6.4l134.4 76.8c16 9.6 25.6 25.6 25.6 41.6s-9.6 32-25.6 41.6l-134.4 76.8c-6.4 3.2-16 6.4-22.4 6.4-25.6 0-48-22.4-48-48v-156.8c0-25.6 22.4-44.8 48-44.8zM640 524.8c0 9.6 9.6 16 16 16 3.2 0 6.4 0 6.4-3.2l134.4-76.8c6.4-3.2 6.4-9.6 6.4-12.8s0-9.6-6.4-12.8l-134.4-76.8c-9.6-6.4-25.6 0-25.6 12.8v153.6zM224 912v-928c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-928c-25.6 0-48-22.4-48-48zM1216 912v-928c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16zM172.8 121.6c-6.4 6.4-16 6.4-22.4 0l-89.6-80c-6.4-6.4-16-3.2-16-3.2-3.2 0-9.6 6.4-9.6 16v787.2c0 9.6 6.4 12.8 9.6 16 3.2 0 9.6 3.2 16-3.2l89.6-80c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-92.8 80c-16 12.8-35.2 16-51.2 6.4-19.2-6.4-28.8-22.4-28.8-41.6v-784c0-19.2 9.6-35.2 28.8-44.8 6.4-3.2 12.8-3.2 19.2-3.2 12.8 0 22.4 3.2 32 12.8l89.6 80c6.4 3.2 9.6 12.8 3.2 19.2zM1443.2 883.2c-16 6.4-38.4 6.4-51.2-6.4l-89.6-80c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l89.6 80c6.4 6.4 16 3.2 16 3.2s9.6-6.4 9.6-16v-784c0-9.6-6.4-12.8-9.6-16s-9.6-3.2-16 3.2l-89.6 80c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l89.6-80c9.6-9.6 19.2-12.8 32-12.8 6.4 0 12.8 0 19.2 3.2 16 6.4 28.8 25.6 28.8 44.8v784c0 19.2-9.6 35.2-28.8 41.6z" />
332
+ <glyph unicode="&#xea42;" glyph-name="slider" horiz-adv-x="1152" d="M320 912v-928c0-25.6 22.4-48 48-48h416c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-416c-25.6 0-48-22.4-48-48zM800 912v-928c0-9.6-6.4-16-16-16h-416c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h416c9.6 0 16-6.4 16-16zM240 80c0 9.6-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v640c0 9.6 6.4 16 16 16h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-25.6 0-48-22.4-48-48v-640c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16zM1104 800h-208c-9.6 0-16-6.4-16-16s6.4-16 16-16h208c9.6 0 16-6.4 16-16v-640c0-9.6-6.4-16-16-16h-208c-9.6 0-16-6.4-16-16s6.4-16 16-16h208c25.6 0 48 22.4 48 48v640c0 25.6-22.4 48-48 48zM227.2 563.2l-89.6-92.8c-6.4-6.4-6.4-16 0-22.4l89.6-96c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 9.6 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4l-80 83.2 80 83.2c6.4 6.4 6.4 16 0 22.4-6.4 9.6-16 9.6-22.4 3.2zM902.4 352c3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l89.6 92.8c6.4 6.4 6.4 16 0 22.4l-89.6 92.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l80-83.2-80-83.2c-6.4-6.4-6.4-16 0-22.4z" />
333
+ <glyph unicode="&#xea43;" glyph-name="smart-watch" d="M0 688c0-16 6.4-25.6 12.8-35.2l96-96-41.6-41.6c-19.2-19.2-19.2-51.2 0-70.4l441.6-441.6c9.6-9.6 22.4-12.8 35.2-12.8s25.6 6.4 35.2 12.8l41.6 41.6 96-96c9.6-9.6 22.4-12.8 35.2-12.8s25.6 3.2 35.2 12.8l224 224c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-96 96 41.6 41.6c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-262.4 262.4c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-44.8 44.8c-19.2 19.2-51.2 19.2-70.4 0v0l-64 64c-19.2 19.2-51.2 19.2-70.4 0l-41.6-41.6-96 96c-19.2 19.2-51.2 19.2-70.4 0l-224-224c-6.4-12.8-12.8-22.4-12.8-35.2zM985.6 224c3.2-3.2 6.4-6.4 6.4-12.8 0-3.2-3.2-9.6-6.4-12.8l-224-224c-6.4-6.4-16-6.4-22.4 0l-96 96 249.6 249.6 92.8-96zM467.2 870.4c3.2 3.2 6.4 6.4 12.8 6.4s9.6-3.2 12.8-6.4l86.4-86.4 22.4 22.4c6.4 6.4 16 6.4 22.4 0l48-44.8c3.2-3.2 6.4-6.4 6.4-12.8 0-3.2-3.2-9.6-6.4-12.8l-22.4-22.4 284.8-284.8c3.2-3.2 6.4-6.4 6.4-12.8s-3.2-9.6-6.4-12.8l-377.6-377.6c-6.4-6.4-16-6.4-22.4 0l-444.8 441.6c-6.4 6.4-6.4 16 0 22.4l377.6 380.8zM38.4 697.6l224 224c6.4 6.4 16 6.4 22.4 0l96-96-249.6-249.6-96 96c0 6.4-3.2 9.6-3.2 16 0 3.2 3.2 6.4 6.4 9.6zM358.4 358.4c22.4 0 41.6 9.6 57.6 22.4 16 16 22.4 35.2 22.4 57.6s-9.6 41.6-22.4 57.6c-28.8 28.8-83.2 28.8-112 0-16-16-22.4-35.2-22.4-57.6s9.6-41.6 22.4-57.6c12.8-12.8 32-22.4 54.4-22.4zM323.2 473.6c9.6 9.6 22.4 12.8 35.2 12.8s25.6-6.4 35.2-12.8 12.8-22.4 12.8-35.2c0-12.8-6.4-25.6-12.8-35.2-19.2-19.2-51.2-19.2-67.2 0-9.6 9.6-12.8 22.4-12.8 35.2-3.2 12.8 0 25.6 9.6 35.2zM598.4 374.4c16-16 35.2-22.4 57.6-22.4s41.6 9.6 57.6 22.4c32 32 32 83.2 0 112-28.8 28.8-83.2 28.8-112 0-35.2-28.8-35.2-80-3.2-112zM620.8 464c9.6 9.6 22.4 12.8 35.2 12.8s25.6-6.4 35.2-12.8c19.2-19.2 19.2-48 0-67.2s-51.2-19.2-67.2 0c-22.4 19.2-22.4 48-3.2 67.2zM502.4 505.6c22.4 0 41.6 9.6 57.6 22.4 32 32 32 83.2 0 112-32 32-83.2 32-115.2 0s-32-83.2 0-112c16-16 35.2-22.4 57.6-22.4zM467.2 617.6c9.6 9.6 22.4 12.8 35.2 12.8s25.6-6.4 35.2-12.8c19.2-19.2 19.2-48 0-67.2s-51.2-19.2-67.2 0c-19.2 19.2-19.2 51.2-3.2 67.2zM444.8 336c-16-16-22.4-35.2-22.4-57.6s9.6-41.6 22.4-57.6c16-16 35.2-22.4 57.6-22.4s41.6 9.6 57.6 22.4c16 16 22.4 35.2 22.4 57.6s-9.6 41.6-22.4 57.6c-32 28.8-83.2 28.8-115.2 0zM537.6 246.4c-19.2-19.2-51.2-19.2-67.2 0-9.6 9.6-12.8 22.4-12.8 35.2s6.4 25.6 12.8 35.2 22.4 12.8 35.2 12.8 25.6-6.4 35.2-12.8 12.8-22.4 12.8-35.2-9.6-28.8-16-35.2z" />
334
+ <glyph unicode="&#xea44;" glyph-name="snow" d="M998.4 470.4l-124.8 76.8 118.4 32c9.6 3.2 12.8 9.6 12.8 19.2-3.2 9.6-9.6 12.8-19.2 12.8l-115.2-32 70.4 115.2c3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-86.4-144-278.4-73.6 73.6 268.8 144 86.4c6.4 6.4 6.4 16 3.2 25.6-3.2 6.4-12.8 9.6-22.4 6.4l-115.2-70.4 35.2 128c3.2 9.6-3.2 16-12.8 19.2s-16-3.2-19.2-12.8l-35.2-131.2-76.8 124.8c-3.2 6.4-16 9.6-22.4 6.4s-9.6-16-6.4-22.4l92.8-150.4-76.8-288-9.6-3.2-211.2 214.4v169.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-137.6l-83.2 83.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l83.2-83.2h-137.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h169.6l198.4-198.4-265.6-70.4-150.4 80c-6.4 3.2-16 0-22.4-6.4s0-16 6.4-22.4l121.6-64-131.2-35.2c-9.6-3.2-12.8-9.6-12.8-19.2 3.2-6.4 9.6-12.8 16-12.8 0 0 3.2 0 3.2 0l134.4 35.2-67.2-128c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l86.4 156.8 281.6 76.8 6.4-6.4-76.8-291.2-156.8-86.4c-6.4-3.2-9.6-12.8-6.4-22.4 6.4-9.6 16-9.6 22.4-6.4l131.2 70.4-32-121.6c-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 3.2 16 12.8l32 118.4 64-121.6c3.2-6.4 9.6-9.6 12.8-9.6s6.4 0 6.4 3.2c6.4 3.2 9.6 12.8 6.4 22.4l-80 150.4 73.6 272 188.8-188.8 22.4-195.2c0-9.6 6.4-12.8 16-12.8 0 0 0 0 3.2 0 9.6 0 16 9.6 12.8 19.2l-19.2 153.6 102.4-102.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-108.8 108.8 160 6.4c9.6 0 16 6.4 16 16s-6.4 16-16 16l-192-6.4-201.6 198.4 3.2 9.6 294.4 80 150.4-92.8c3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 3.2 9.6 0 19.2-6.4 22.4z" />
335
+ <glyph unicode="&#xea45;" glyph-name="spa-face" horiz-adv-x="800" d="M720 707.2c-112 89.6-182.4 153.6-220.8 198.4-3.2 3.2-3.2 3.2-6.4 6.4s-6.4 6.4-6.4 9.6c0 0 0 0 0 0-9.6 12.8-22.4 19.2-32 25.6-19.2 9.6-41.6 12.8-60.8 12.8-57.6 0-96-38.4-131.2-80-28.8-35.2-102.4-96-153.6-140.8-28.8-22.4-51.2-44.8-64-54.4-51.2-51.2-86.4-166.4 44.8-419.2 0 0 0 0 0 0 12.8-22.4 160-323.2 294.4-329.6 3.2 0 6.4 0 9.6 0 137.6 0 233.6 160 304 300.8l6.4 19.2c22.4 44.8 44.8 89.6 60.8 134.4 0 0 0 0 0 3.2 44.8 115.2 60.8 230.4-44.8 313.6zM70.4 662.4c9.6 9.6 35.2 32 60.8 54.4 54.4 44.8 124.8 105.6 156.8 144 28.8 35.2 64 67.2 105.6 67.2 16 0 28.8-3.2 48-9.6 3.2-3.2 9.6-6.4 12.8-9.6 0-6.4-3.2-12.8-6.4-19.2-19.2-57.6-44.8-128-147.2-182.4-99.2-51.2-166.4-176-169.6-179.2-3.2-6.4 0-16 6.4-22.4 6.4-3.2 16 0 22.4 6.4 0 0 64 118.4 153.6 166.4 112 60.8 140.8 140.8 160 198.4 0 0 0 0 0 0 16-25.6 32-64 35.2-108.8 3.2-64-12.8-150.4-121.6-217.6-176-108.8-256-204.8-284.8-246.4-80 176-92.8 297.6-32 358.4zM675.2 268.8l-9.6-19.2c-64-134.4-156.8-288-281.6-281.6-92.8 3.2-214.4 214.4-259.2 304 9.6 19.2 48 73.6 134.4 147.2 9.6 3.2 35.2 9.6 57.6 0 0-3.2 3.2-3.2 6.4-3.2 6.4 0 12.8 3.2 12.8 9.6 3.2 6.4 0 16-6.4 22.4-9.6 3.2-16 6.4-25.6 6.4 28.8 22.4 60.8 44.8 99.2 67.2 35.2-16 67.2-38.4 99.2-64-22.4-3.2-32-12.8-35.2-12.8-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 0 0 16 12.8 54.4 3.2 67.2-57.6 118.4-121.6 134.4-147.2 0 0-3.2-3.2-3.2-6.4zM748.8 435.2c-41.6 64-124.8 124.8-128 128-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4c0 0 102.4-80 134.4-144-12.8-28.8-25.6-57.6-38.4-86.4-25.6 35.2-73.6 89.6-134.4 140.8 0 0 0 0 0 0-38.4 32-83.2 64-128 89.6 105.6 76.8 118.4 176 112 230.4 0 16-3.2 32-9.6 48 41.6-38.4 96-83.2 163.2-137.6 80-60.8 80-147.2 48-243.2zM438.4 182.4c-16 0-25.6-3.2-35.2-6.4-9.6 3.2-22.4 6.4-32 6.4-44.8 0-73.6-32-73.6-32-6.4-6.4-6.4-16 0-22.4 32-38.4 67.2-57.6 105.6-57.6 64 0 105.6 54.4 108.8 57.6 6.4 6.4 3.2 16 0 19.2-28.8 32-54.4 35.2-73.6 35.2zM403.2 102.4c-22.4 0-48 12.8-70.4 35.2 12.8 9.6 38.4 19.2 67.2 6.4 3.2-3.2 9.6-3.2 16 0 0 0 9.6 6.4 25.6 6.4 12.8 0 25.6-3.2 38.4-12.8-16-12.8-44.8-35.2-76.8-35.2z" />
336
+ <glyph unicode="&#xea46;" glyph-name="spa-stone-flower" horiz-adv-x="1184" d="M1097.6 256c16 41.6 12.8 83.2-9.6 96s-60.8-3.2-89.6-38.4c-28.8 35.2-64 51.2-89.6 38.4-3.2-3.2-9.6-6.4-12.8-9.6-32 22.4-67.2 38.4-108.8 54.4 67.2 35.2 108.8 86.4 108.8 140.8 0 67.2-60.8 128-166.4 166.4 41.6 25.6 67.2 60.8 67.2 99.2 6.4 89.6-124.8 156.8-291.2 156.8s-297.6-67.2-297.6-156.8c0-38.4 25.6-73.6 67.2-99.2-105.6-35.2-169.6-96-169.6-166.4 0-54.4 41.6-105.6 108.8-140.8-131.2-48-208-121.6-208-208 0-140.8 217.6-252.8 496-252.8 163.2 0 313.6 41.6 406.4 108.8 0 0 0 0 0 0 22.4-12.8 60.8 3.2 89.6 38.4 22.4-28.8 44.8-44.8 67.2-44.8 6.4 0 12.8 3.2 19.2 6.4 25.6 16 28.8 54.4 9.6 96 44.8 6.4 76.8 28.8 76.8 57.6s-25.6 51.2-73.6 57.6zM236.8 803.2c0 67.2 121.6 124.8 265.6 124.8s265.6-57.6 265.6-124.8-121.6-124.8-265.6-124.8-265.6 57.6-265.6 124.8zM137.6 537.6c0 57.6 67.2 115.2 172.8 147.2 51.2-22.4 118.4-35.2 192-35.2s140.8 12.8 192 35.2c105.6-32 172.8-86.4 172.8-147.2 0-92.8-166.4-172.8-364.8-172.8s-364.8 80-364.8 172.8zM892.8 70.4c-86.4-64-233.6-102.4-390.4-102.4-252.8 0-464 102.4-464 220.8 0 73.6 83.2 147.2 217.6 188.8 67.2-25.6 150.4-41.6 246.4-41.6 92.8 0 179.2 16 246.4 41.6 57.6-16 105.6-38.4 140.8-67.2 0-16 3.2-35.2 9.6-54.4-44.8-6.4-76.8-28.8-76.8-57.6s32-51.2 76.8-57.6c-9.6-25.6-12.8-51.2-6.4-70.4zM1075.2 169.6c-6.4 0-9.6-3.2-12.8-6.4-3.2-6.4-3.2-9.6 0-16 22.4-41.6 19.2-70.4 12.8-76.8-9.6-6.4-38.4 12.8-57.6 48-3.2 6.4-9.6 9.6-12.8 9.6s-9.6-3.2-12.8-9.6c-19.2-35.2-48-54.4-57.6-48-6.4 3.2-9.6 35.2 12.8 76.8 3.2 6.4 3.2 9.6 0 16s-9.6 6.4-12.8 6.4c-41.6 0-70.4 16-70.4 28.8s28.8 28.8 70.4 28.8c6.4 0 9.6 3.2 12.8 6.4 3.2 6.4 3.2 9.6 0 16-16 28.8-19.2 51.2-16 64 0 0 0 0 0 0 0 6.4 3.2 9.6 6.4 9.6 9.6 6.4 38.4-12.8 57.6-48 6.4-9.6 22.4-9.6 28.8 0 19.2 35.2 48 54.4 57.6 48 6.4-3.2 9.6-35.2-12.8-76.8-3.2-6.4-3.2-9.6 0-16s9.6-6.4 12.8-6.4c41.6 0 70.4-16 70.4-28.8s-35.2-25.6-76.8-25.6zM425.6 886.4c-86.4-9.6-134.4-60.8-137.6-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 41.6 44.8 118.4 54.4 9.6 0 16 9.6 12.8 19.2 0 3.2-6.4 9.6-16 9.6zM361.6 630.4c-86.4-9.6-134.4-60.8-137.6-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 41.6 44.8 118.4 54.4 9.6 0 16 9.6 12.8 19.2 3.2 3.2-6.4 9.6-16 9.6zM316.8 313.6c-112-19.2-169.6-89.6-172.8-92.8-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 54.4 64 153.6 80 9.6 0 16 9.6 12.8 19.2s-9.6 16-19.2 12.8z" />
337
+ <glyph unicode="&#xea47;" glyph-name="spa-stone" horiz-adv-x="992" d="M992 188.8c0 83.2-76.8 160-208 208 67.2 35.2 108.8 86.4 108.8 140.8 0 67.2-60.8 128-166.4 166.4 41.6 25.6 67.2 60.8 67.2 99.2 0 86.4-131.2 156.8-297.6 156.8s-297.6-67.2-297.6-156.8c0-38.4 25.6-70.4 67.2-99.2-105.6-35.2-166.4-96-166.4-166.4 0-54.4 41.6-105.6 108.8-140.8-131.2-48-208-121.6-208-208 0-140.8 217.6-252.8 496-252.8s496 112 496 252.8zM230.4 803.2c0 67.2 121.6 124.8 265.6 124.8s265.6-57.6 265.6-124.8-121.6-121.6-265.6-121.6-265.6 54.4-265.6 121.6zM131.2 537.6c0 57.6 67.2 115.2 172.8 147.2 51.2-22.4 118.4-35.2 192-35.2s140.8 12.8 192 35.2c105.6-32 172.8-86.4 172.8-147.2 0-92.8-166.4-172.8-364.8-172.8s-364.8 80-364.8 172.8zM496-32c-252.8 0-464 102.4-464 220.8 0 73.6 83.2 147.2 217.6 188.8 67.2-25.6 150.4-41.6 246.4-41.6s179.2 16 246.4 41.6c134.4-41.6 217.6-112 217.6-188.8 0-118.4-211.2-220.8-464-220.8zM419.2 886.4c-86.4-9.6-134.4-60.8-137.6-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 41.6 44.8 118.4 54.4 9.6 0 16 9.6 12.8 19.2 0 3.2-9.6 9.6-16 9.6zM355.2 630.4c-86.4-9.6-134.4-60.8-137.6-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 41.6 44.8 118.4 54.4 9.6 0 16 9.6 12.8 19.2 0 3.2-9.6 9.6-16 9.6zM307.2 313.6c-112-19.2-169.6-89.6-172.8-92.8-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4c0 0 54.4 64 153.6 80 9.6 0 16 9.6 12.8 19.2 0 9.6-9.6 16-19.2 12.8z" />
338
+ <glyph unicode="&#xea48;" glyph-name="spark" horiz-adv-x="960" d="M214.4-60.8c0-3.2 3.2-3.2 6.4-3.2s9.6 0 12.8 3.2l579.2 576c3.2 3.2 6.4 12.8 3.2 16-3.2 9.6-9.6 12.8-16 12.8h-188.8l112 393.6c3.2 6.4 0 16-6.4 19.2s-16 3.2-19.2-3.2l-547.2-576c-3.2-3.2-6.4-12.8-3.2-16 0-6.4 6.4-9.6 12.8-9.6h182.4l-137.6-396.8c0-6.4 3.2-12.8 9.6-16zM380.8 361.6c3.2 6.4 0 9.6-3.2 16-3.2 3.2-6.4 6.4-12.8 6.4h-166.4l476.8 502.4-99.2-352c0-6.4 0-9.6 3.2-12.8s6.4-6.4 12.8-6.4h172.8l-505.6-502.4 121.6 348.8z" />
339
+ <glyph unicode="&#xea49;" glyph-name="speaker-off" horiz-adv-x="928" d="M684.8 572.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l99.2-99.2-99.2-99.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l99.2 99.2 99.2-99.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-99.2 99.2 99.2 99.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-99.2-99.2-105.6 99.2zM768 320v-336c0-9.6-6.4-12.8-9.6-12.8s-9.6-3.2-16 0l-428.8 284.8c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l428.8-284.8c9.6-6.4 16-9.6 25.6-9.6 6.4 0 16 3.2 22.4 6.4 16 9.6 25.6 25.6 25.6 41.6v336c0 9.6-6.4 16-16 16s-12.8-6.4-12.8-16zM281.6 646.4l460.8 281.6c6.4 3.2 12.8 3.2 16 0s9.6-6.4 9.6-12.8v-339.2c0-9.6 6.4-16 16-16s16 6.4 16 16v339.2c0 16-9.6 32-25.6 41.6s-32 9.6-48 0l-460.8-281.6c-6.4-6.4-9.6-16-3.2-22.4 3.2-6.4 12.8-9.6 19.2-6.4zM48 224h128c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48zM32 592c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-320c0-9.6-6.4-16-16-16h-128c-9.6 0-16 6.4-16 16v320z" />
340
+ <glyph unicode="&#xea4a;" glyph-name="speaker-on" horiz-adv-x="1120" d="M297.6 646.4l454.4 281.6c3.2 3.2 6.4 3.2 9.6 0 3.2 0 6.4-6.4 6.4-12.8v-928c0-9.6-3.2-12.8-6.4-16s-6.4 0-9.6 3.2l-425.6 281.6c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l425.6-284.8c9.6-6.4 16-9.6 25.6-9.6 6.4 0 12.8 0 19.2 3.2 16 6.4 22.4 25.6 22.4 44.8v928c0 19.2-9.6 35.2-22.4 41.6s-28.8 6.4-41.6-3.2l-454.4-275.2c-6.4-6.4-9.6-16-3.2-22.4 3.2-6.4 12.8-9.6 19.2-6.4zM48 224h128c25.6 0 48 22.4 48 48v320c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-320c0-25.6 22.4-48 48-48zM32 592c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-320c0-9.6-6.4-16-16-16h-128c-9.6 0-16 6.4-16 16v320zM896 224h32c108.8 0 192 99.2 192 233.6v3.2c0 128-76.8 211.2-192 211.2h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h32c96 0 160-70.4 160-179.2v-3.2c0-115.2-67.2-201.6-160-201.6h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16zM915.2 352h-19.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h19.2c64 0 108.8 51.2 108.8 128 0 73.6-44.8 128-108.8 128h-19.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h19.2c57.6 0 76.8-51.2 76.8-96 0-48-25.6-96-76.8-96z" />
341
+ <glyph unicode="&#xea4b;" glyph-name="spoon-fork" horiz-adv-x="1088" d="M588.8 400l105.6 105.6c32-25.6 73.6-41.6 118.4-41.6 60.8 0 124.8 25.6 166.4 67.2 73.6 73.6 150.4 265.6 67.2 348.8-22.4 22.4-57.6 35.2-102.4 35.2-89.6 0-195.2-51.2-246.4-102.4-38.4-38.4-60.8-92.8-67.2-147.2-3.2-54.4 9.6-102.4 38.4-137.6l-105.6-105.6-144 144 73.6 73.6c16 16 19.2 32 19.2 41.6 0 22.4-16 38.4-19.2 38.4l-230.4 236.8c-6.4 3.2-19.2 3.2-25.6 0s-6.4-16 0-22.4l236.8-236.8c3.2-3.2 9.6-9.6 9.6-16s-3.2-12.8-9.6-16l-73.6-73.6-252.8 249.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l252.8-252.8-76.8-76.8c-6.4-6.4-12.8-9.6-16-9.6-6.4 0-16 6.4-19.2 9.6l-233.6 236.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l233.6-236.8c3.2 0 19.2-19.2 41.6-19.2 0 0 0 0 0 0 9.6 0 25.6 3.2 38.4 19.2l76.8 76.8 144-144-435.2-438.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 0 12.8 3.2l438.4 438.4 435.2-435.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-441.6 435.2zM723.2 790.4c44.8 44.8 144 92.8 224 92.8 35.2 0 60.8-9.6 80-25.6 60.8-60.8 3.2-233.6-67.2-304-35.2-35.2-89.6-57.6-144-57.6-44.8 0-83.2 16-108.8 41.6-28.8 28.8-44.8 73.6-41.6 124.8s25.6 96 57.6 128z" />
342
+ <glyph unicode="&#xea4c;" glyph-name="spoon" d="M627.2 684.8l38.4-19.2c3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6 3.2 9.6 0 16-6.4 22.4l-41.6 16c-9.6 3.2-16 0-22.4-6.4 0-9.6 3.2-19.2 9.6-22.4zM995.2 499.2c-9.6 19.2-25.6 28.8-48 32l-57.6 9.6 32 76.8c12.8 32 0 70.4-32 83.2l-534.4 230.4c-32 12.8-70.4-3.2-83.2-32l-118.4-278.4c-12.8-32 0-70.4 32-83.2l265.6-115.2c0-3.2 0-3.2 0-6.4v-60.8c-35.2-6.4-64-38.4-64-76.8 0 0 0-3.2 0-3.2l-224-51.2v128c0 35.2-28.8 64-64 64h-35.2c-35.2 0-64-28.8-64-64v-352c0-35.2 28.8-64 64-64h32c35.2 0 64 28.8 64 64v188.8l230.4 54.4c12.8-28.8 41.6-48 73.6-48 44.8 0 80 35.2 80 80 0 38.4-28.8 70.4-64 76.8v54.4l240-105.6c9.6-3.2 16-6.4 25.6-6.4 25.6 0 48 16 57.6 38.4l32 73.6 41.6-35.2c12.8-9.6 25.6-16 41.6-16 6.4 0 9.6 0 16 3.2 19.2 3.2 35.2 19.2 44.8 35.2l19.2 41.6c6.4 22.4 6.4 44.8-3.2 64zM128 0c0-19.2-12.8-32-32-32h-32c-19.2 0-32 12.8-32 32v352c0 19.2 12.8 32 32 32h32c19.2 0 32-12.8 32-32v-352zM512 275.2c0-25.6-22.4-48-48-48s-48 22.4-48 48 22.4 48 48 48 48-19.2 48-48zM182.4 608l118.4 278.4c6.4 12.8 16 19.2 28.8 19.2 3.2 0 9.6 0 12.8-3.2l416-182.4-147.2-336-412.8 182.4c-16 6.4-25.6 25.6-16 41.6zM774.4 348.8c-6.4-16-25.6-22.4-41.6-16l-92.8 41.6 147.2 336 92.8-41.6c16-6.4 22.4-25.6 16-41.6l-121.6-278.4zM969.6 454.4l-19.2-41.6c-3.2-9.6-12.8-16-22.4-19.2s-19.2 0-28.8 6.4l-51.2 41.6 28.8 67.2 64-9.6c9.6 0 19.2-6.4 22.4-16 9.6-9.6 9.6-19.2 6.4-28.8z" />
343
+ <glyph unicode="&#xea4d;" glyph-name="star" d="M796.8-32c-9.6 0-22.4 3.2-32 9.6l-256 134.4-256-134.4c-9.6-6.4-22.4-9.6-32-9.6-16 0-25.6 9.6-32 16-6.4 9.6-9.6 19.2-9.6 28.8 0 3.2 0 6.4 0 12.8l48 288-208 201.6c-12.8 16-19.2 28.8-19.2 41.6s6.4 35.2 48 41.6l288 41.6 128 259.2c12.8 28.8 32 32 44.8 32s32-6.4 44.8-32l128-259.2 288-41.6c41.6-6.4 48-28.8 48-41.6s-6.4-25.6-19.2-38.4l-208-201.6 48-284.8c0-3.2 0-9.6 0-16 0-12.8-3.2-22.4-9.6-28.8-9.6-16-19.2-19.2-32-19.2zM508.8 144c3.2 0 6.4 0 6.4-3.2l265.6-137.6c9.6-6.4 19.2-3.2 19.2-3.2 3.2 3.2 3.2 6.4 3.2 12.8 0 3.2 0 6.4 0 9.6l-51.2 294.4c0 6.4 0 9.6 3.2 12.8l214.4 208c9.6 9.6 9.6 16 9.6 16 0 3.2 0 9.6-19.2 12.8l-294.4 41.6c-6.4 0-9.6 3.2-12.8 9.6l-131.2 268.8c-9.6 19.2-19.2 19.2-28.8 0l-131.2-268.8c-3.2-3.2-6.4-6.4-12.8-9.6l-294.4-41.6c-22.4-3.2-22.4-9.6-22.4-9.6s0-6.4 9.6-16l214.4-208c3.2-3.2 6.4-9.6 3.2-12.8l-51.2-294.4c0-3.2 0-6.4 0-9.6 0-6.4 0-9.6 3.2-12.8 0 0 9.6-3.2 22.4 3.2l265.6 140.8c3.2-3.2 6.4-3.2 9.6-3.2z" />
344
+ <glyph unicode="&#xea4e;" glyph-name="step-flow" d="M864 486.4c-73.6 0-134.4-57.6-140.8-128h-67.2c-6.4 67.2-60.8 118.4-128 128 0 0 0 0 0 0v233.6l153.6 64c19.2 9.6 32 25.6 28.8 48 0 22.4-16 38.4-35.2 41.6l-115.2 28.8c-16 6.4-32 3.2-44.8-6.4s-19.2-22.4-19.2-38.4v-371.2c0 0 0 0 0 0-67.2-6.4-118.4-60.8-128-128h-67.2c-9.6 70.4-67.2 128-140.8 128-80 0-144-64-144-144s64-144 144-144c73.6 0 134.4 57.6 140.8 128h67.2c9.6-70.4 67.2-128 140.8-128s134.4 57.6 140.8 128h67.2c9.6-70.4 67.2-128 140.8-128 80 0 144 64 144 144s-57.6 144-137.6 144zM528 860.8c0 6.4 3.2 9.6 6.4 12.8s6.4 3.2 9.6 3.2c3.2 0 3.2 0 6.4 0l118.4-28.8c9.6-3.2 12.8-12.8 12.8-12.8 0-3.2 0-12.8-9.6-16l-144-60.8v102.4zM160 230.4c-60.8 0-112 51.2-112 112s51.2 112 112 112 112-51.2 112-112-51.2-112-112-112zM512 230.4c-60.8 0-112 51.2-112 112s51.2 112 112 112 112-51.2 112-112-51.2-112-112-112zM864 230.4c-60.8 0-112 51.2-112 112s51.2 112 112 112 112-51.2 112-112-51.2-112-112-112zM560 342.4c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48zM121.6 92.8h19.2v-89.6h25.6v112h-44.8zM537.6 44.8c6.4 9.6 12.8 16 16 19.2s3.2 9.6 3.2 16c0 9.6-3.2 19.2-9.6 25.6s-16 9.6-25.6 9.6-16-3.2-22.4-6.4-12.8-9.6-16-19.2l19.2-12.8c6.4 9.6 12.8 16 19.2 16 3.2 0 6.4 0 9.6-3.2s3.2-6.4 3.2-9.6c0-3.2 0-6.4-3.2-12.8-3.2-3.2-6.4-9.6-12.8-16l-32-32v-19.2h80v22.4h-44.8l16 22.4zM886.4 70.4l22.4 25.6v16h-67.2v-22.4h35.2l-22.4-25.6v-19.2c6.4 3.2 12.8 3.2 16 3.2 6.4 0 12.8 0 16-3.2s6.4-6.4 6.4-9.6c0-3.2-3.2-9.6-6.4-9.6-3.2-3.2-6.4-3.2-12.8-3.2-9.6 0-19.2 3.2-28.8 12.8l-9.6-19.2c12.8-9.6 25.6-12.8 38.4-12.8s22.4 3.2 32 9.6 12.8 16 12.8 28.8c0 6.4-3.2 16-6.4 22.4-9.6 0-16 6.4-25.6 6.4z" />
345
+ <glyph unicode="&#xea4f;" glyph-name="steps" d="M1024-16v928c0 25.6-22.4 48-48 48h-320c-25.6 0-48-22.4-48-48v-163.2c0-9.6 6.4-16 16-16s16 6.4 16 16v163.2c0 9.6 6.4 16 16 16h320c9.6 0 16-6.4 16-16v-208h-624c-25.6 0-48-22.4-48-48v-204.8c0-9.6 6.4-16 16-16s16 6.4 16 16v204.8c0 9.6 6.4 16 16 16h624v-288h-944c-25.6 0-48-22.4-48-48v-352c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48zM992-16c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v352c0 9.6 6.4 16 16 16h944v-368z" />
346
+ <glyph unicode="&#xea50;" glyph-name="stop-watch" horiz-adv-x="896" d="M412.8-64c214.4 0 393.6 166.4 412.8 377.6 0 9.6-6.4 16-16 16s-16-6.4-16-16c-16-192-182.4-345.6-380.8-345.6-211.2 0-380.8 169.6-380.8 380.8 0 153.6 92.8 291.2 233.6 352 9.6 3.2 12.8 12.8 9.6 19.2-3.2 9.6-12.8 12.8-22.4 9.6-153.6-64-252.8-214.4-252.8-380.8 0-227.2 185.6-412.8 412.8-412.8zM793.6 380.8c0-9.6 6.4-16 16-16 0 0 0 0 0 0 9.6 0 16 9.6 16 16-12.8 153.6-108.8 288-252.8 345.6-9.6 3.2-16 0-22.4-9.6s0-16 9.6-22.4c131.2-48 220.8-172.8 233.6-313.6zM284.8 928h256c9.6 0 16-6.4 16-16v-64c0-9.6-6.4-16-16-16h-32c-25.6 0-48-22.4-48-48v-112c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 9.6 6.4 16 16 16h32c25.6 0 48 22.4 48 48v64c0 25.6-22.4 48-48 48h-256c-25.6 0-48-22.4-48-48v-64c0-25.6 22.4-48 48-48h32c9.6 0 16-6.4 16-16v-112c0-9.6 6.4-16 16-16s16 6.4 16 16v112c0 25.6-22.4 48-48 48h-32c-6.4 0-16 6.4-16 16v64c0 9.6 9.6 16 16 16zM774.4 870.4c-6.4-6.4-6.4-16 0-22.4l35.2-35.2-89.6-86.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l86.4 86.4 35.2-35.2c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 6.4 6.4 6.4 16 0 22.4l-92.8 92.8c-9.6 6.4-19.2 6.4-25.6 0zM444.8 320h208c9.6 0 16 6.4 16 16s-6.4 16-16 16h-208c-9.6 0-16 6.4-16 16v240c0 9.6-6.4 16-16 16s-16-6.4-16-16v-240c0-25.6 22.4-48 48-48z" />
347
+ <glyph unicode="&#xea51;" glyph-name="stop" d="M960 48v800c0 25.6-22.4 48-48 48h-800c-25.6 0-48-22.4-48-48v-800c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48zM96 48v800c0 9.6 6.4 16 16 16h800c9.6 0 16-6.4 16-16v-800c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16z" />
348
+ <glyph unicode="&#xea52;" glyph-name="support-call" horiz-adv-x="1280" d="M1116.8 489.6c-3.2 112-44.8 220.8-118.4 304-89.6 105.6-220.8 166.4-358.4 166.4s-268.8-60.8-358.4-163.2c-76.8-86.4-115.2-195.2-118.4-310.4-92.8-16-163.2-92.8-163.2-188.8 0 0 0-3.2 0-3.2 0-108.8 89.6-198.4 195.2-198.4h144c67.2-96 176-160 300.8-160 179.2 0 336 134.4 358.4 313.6l25.6 179.2c16 112-19.2 220.8-92.8 307.2s-179.2 134.4-291.2 134.4-217.6-48-291.2-134.4-108.8-195.2-92.8-304l25.6-179.2c6.4-44.8 19.2-86.4 38.4-121.6h-67.2c-16 35.2-25.6 73.6-32 115.2l-25.6 179.2c-3.2 16-3.2 28.8-3.2 44.8 0 3.2 3.2 6.4 3.2 9.6s0 3.2 0 6.4c0 108.8 38.4 211.2 108.8 294.4 83.2 92.8 208 147.2 336 147.2s249.6-54.4 336-153.6c70.4-80 108.8-185.6 108.8-291.2 0-3.2 0-3.2 0-6.4s0-6.4 0-6.4c0-16-3.2-32-3.2-48l-25.6-182.4c-6.4-48-19.2-92.8-35.2-121.6-3.2-6.4-3.2-9.6 0-16s9.6-6.4 12.8-6.4h51.2c105.6 0 195.2 89.6 195.2 201.6 0 96-70.4 179.2-163.2 192zM310.4 256l-22.4 179.2c-12.8 102.4 16 204.8 83.2 281.6s166.4 121.6 268.8 121.6 198.4-44.8 268.8-121.6c67.2-76.8 99.2-179.2 83.2-281.6l-25.6-179.2c-22.4-163.2-163.2-288-326.4-288-105.6 0-198.4 51.2-259.2 128h99.2c0 0 0 0 0 0 6.4-35.2 38.4-64 80-64h128c44.8 0 80 35.2 80 80s-35.2 80-80 80h-128c-38.4 0-70.4-28.8-80-64 0 0 0 0 0 0h-124.8c-22.4 38.4-38.4 80-44.8 128zM512 112c0 25.6 22.4 48 48 48h128c25.6 0 48-22.4 48-48s-22.4-48-48-48h-128c-25.6 0-48 22.4-48 48zM217.6 128h-22.4c-89.6 0-163.2 73.6-163.2 163.2 0 0 0 3.2 0 3.2 0 80 57.6 144 131.2 160 0-12.8 0-25.6 3.2-38.4l25.6-179.2c3.2-38.4 12.8-73.6 25.6-108.8zM1084.8 128h-25.6c12.8 28.8 22.4 67.2 25.6 108.8l25.6 182.4c3.2 12.8 3.2 28.8 3.2 41.6 76.8-16 131.2-80 131.2-163.2 3.2-96-70.4-169.6-160-169.6z" />
349
+ <glyph unicode="&#xea53;" glyph-name="tab" horiz-adv-x="1088" d="M1088 16v864c0 44.8-35.2 80-80 80h-928c-44.8 0-80-35.2-80-80v-864c0-44.8 35.2-80 80-80h928c44.8 0 80 35.2 80 80zM32 16v864c0 25.6 22.4 48 48 48h928c25.6 0 48-22.4 48-48v-864c0-25.6-22.4-48-48-48h-928c-25.6 0-48 22.4-48 48zM896 816c0-25.6-25.6-48-54.4-48h-3.2c-25.6 0-38.4 22.4-38.4 48v48h-32v-48c0-44.8 25.6-80 70.4-80h3.2c44.8 0 86.4 35.2 86.4 80v48h-32v-48zM608 816c0-25.6-35.2-48-60.8-48h-3.2c-28.8 0-64 22.4-64 48v48h-32v-48c0-44.8 51.2-80 92.8-80h3.2c48 0 96 35.2 96 80v48h-32v-48zM288 816c0-25.6-12.8-48-38.4-48h-3.2c-25.6 0-54.4 22.4-54.4 48v48h-32v-48c0-44.8 41.6-80 86.4-80h3.2c44.8 0 70.4 35.2 70.4 80v48h-32v-48zM249.6 160h-3.2c-44.8 0-86.4-35.2-86.4-80v-16h32v16c0 25.6 28.8 48 54.4 48h3.2c25.6 0 38.4-22.4 38.4-48v-16h32v16c0 44.8-25.6 80-70.4 80zM547.2 160h-3.2c-44.8 0-92.8-35.2-92.8-80v-16h32v16c0 25.6 35.2 48 60.8 48h3.2c25.6 0 60.8-22.4 60.8-48v-16h32v16c0 44.8-48 80-92.8 80zM841.6 160h-3.2c-44.8 0-70.4-35.2-70.4-80v-16h32v16c0 25.6 12.8 48 38.4 48h3.2c25.6 0 54.4-22.4 54.4-48v-16h32v16c0 44.8-41.6 80-86.4 80z" />
350
+ <glyph unicode="&#xea54;" glyph-name="table-lamp" horiz-adv-x="1088" d="M67.2-64h537.6c38.4 0 67.2 28.8 67.2 64s-32 64-67.2 64h-246.4l-140.8 454.4c38.4 12.8 60.8 48 60.8 89.6 0 16-3.2 28.8-9.6 41.6l236.8 160c0-3.2 3.2-3.2 3.2-6.4l28.8-41.6c-89.6-92.8-105.6-240-35.2-348.8l22.4-35.2c9.6-12.8 25.6-22.4 41.6-22.4 9.6 0 16 3.2 25.6 6.4l137.6 83.2c25.6-32 60.8-51.2 102.4-51.2 22.4 0 44.8 6.4 67.2 19.2 28.8 19.2 48 44.8 57.6 80 6.4 28.8 3.2 57.6-9.6 83.2l118.4 70.4c9.6 6.4 19.2 16 22.4 28.8s0 25.6-6.4 35.2l-28.8 44.8c-51.2 83.2-144 134.4-243.2 134.4-35.2 0-70.4-6.4-102.4-19.2l-32 44.8c-19.2 28.8-48 44.8-83.2 44.8-19.2 0-38.4-6.4-54.4-16-22.4-16-38.4-38.4-41.6-64-3.2-12.8-3.2-25.6 0-38.4l-246.4-166.4c-16 16-38.4 28.8-67.2 28.8-54.4 0-96-41.6-96-96s41.6-96 96-96c0 0 3.2 0 3.2 0l134.4-448h-256c-32 0-64-28.8-64-64s32-64 67.2-64zM921.6 499.2c-6.4-25.6-22.4-44.8-41.6-57.6-41.6-25.6-92.8-16-121.6 19.2l160 96c6.4-19.2 9.6-38.4 3.2-57.6zM528 873.6c3.2 19.2 12.8 32 28.8 44.8 9.6 6.4 22.4 9.6 35.2 9.6 22.4 0 44.8-9.6 54.4-28.8l38.4-54.4c3.2-6.4 12.8-9.6 19.2-6.4 32 12.8 67.2 22.4 102.4 22.4 89.6 0 169.6-44.8 217.6-118.4l28.8-44.8c3.2-6.4 3.2-9.6 3.2-16 0-3.2-3.2-6.4-6.4-9.6l-473.6-281.6c-6.4-3.2-16-3.2-22.4 6.4l-22.4 35.2c-64 102.4-48 236.8 38.4 320 6.4 6.4 6.4 12.8 3.2 19.2l-35.2 51.2c-9.6 12.8-16 32-9.6 51.2zM118.4 608c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64zM67.2 32h537.6c19.2 0 35.2-12.8 35.2-32s-16-32-35.2-32h-537.6c-19.2 0-35.2 12.8-35.2 32s16 32 35.2 32z" />
351
+ <glyph unicode="&#xea55;" glyph-name="tablet" horiz-adv-x="768" d="M48-64h672c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-672c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48zM32 912c0 9.6 6.4 16 16 16h672c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-672c-9.6 0-16 6.4-16 16v928zM384 182.4c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM384 86.4c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-12.8-32-32-32zM320 800h128c9.6 0 16 6.4 16 16s-6.4 16-16 16h-128c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
352
+ <glyph unicode="&#xea56;" glyph-name="tag" horiz-adv-x="864" d="M675.2 960c-70.4 0-131.2-80-131.2-176v-16h-25.6c-12.8 0-22.4-3.2-32-12.8l-470.4-438.4c-9.6-6.4-16-19.2-16-35.2 0-12.8 6.4-25.6 16-35.2l329.6-297.6c9.6-6.4 19.2-12.8 32-12.8s25.6 6.4 32 12.8l441.6 432c9.6 9.6 16 22.4 16 35.2v304c-3.2 25.6-25.6 48-51.2 48h-12.8c0 6.4 0 9.6 0 16 0 96-57.6 176-128 176zM576 784c0 76.8 44.8 144 99.2 144s99.2-67.2 99.2-144c0-6.4 0-12.8 0-16h-198.4v16zM816 736c9.6 0 16-6.4 16-16v-304c0-3.2-3.2-9.6-6.4-12.8l-438.4-428.8c-6.4-6.4-16-6.4-22.4 0l-326.4 297.6c-3.2 3.2-6.4 6.4-6.4 9.6s3.2 9.6 6.4 12.8l470.4 438.4c3.2 3.2 6.4 3.2 9.6 3.2h246.4c-6.4-28.8-19.2-51.2-35.2-67.2 0 0 0 0 0 0-32 28.8-86.4 28.8-118.4 0-16-16-25.6-35.2-25.6-57.6s9.6-41.6 25.6-57.6c16-16 35.2-22.4 57.6-22.4s41.6 9.6 57.6 22.4c16 16 25.6 35.2 25.6 57.6 0 9.6-3.2 19.2-6.4 28.8 22.4 22.4 41.6 57.6 48 96h22.4zM723.2 611.2c0-12.8-6.4-25.6-16-35.2-19.2-19.2-54.4-19.2-73.6 0-9.6 9.6-16 22.4-16 35.2 0 6.4 0 12.8 3.2 16 19.2-19.2 51.2-22.4 54.4-22.4 0 0 0 0 0 0 16 0 32 3.2 44.8 12.8 3.2 0 3.2-3.2 3.2-6.4zM646.4 652.8c6.4 3.2 16 6.4 25.6 6.4 12.8 0 25.6-3.2 32-12.8-9.6-3.2-19.2-6.4-28.8-6.4 0 0-19.2 3.2-28.8 12.8z" />
353
+ <glyph unicode="&#xea57;" glyph-name="target-arrow" horiz-adv-x="992" d="M736 816c-9.6 0-16-6.4-16-16v-102.4l-73.6-73.6c-67.2 64-160 102.4-262.4 102.4-211.2 0-384-172.8-384-384 0-112 48-214.4 128-284.8l-76.8-96c-6.4-6.4-3.2-16 3.2-22.4 3.2 0 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l73.6 96c64-48 144-80 233.6-80 86.4 0 166.4 28.8 230.4 80l73.6-96c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 9.6 16 3.2 22.4l-73.6 99.2c76.8 70.4 128 172.8 128 284.8 0 99.2-38.4 188.8-99.2 256l70.4 70.4h108.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-73.6l32 32h105.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-73.6l32 32h105.6c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-105.6l-32-32v73.6c0 9.6-6.4 16-16 16s-16-6.4-16-16v-105.6l-32-32v73.6c0 9.6-6.4 16-16 16zM736 345.6c0-195.2-156.8-352-352-352s-352 156.8-352 352 156.8 352 352 352c92.8 0 176-35.2 240-92.8l-67.2-67.2c-44.8 41.6-105.6 67.2-169.6 67.2-140.8 0-256-115.2-256-256s115.2-256 256-256 256 115.2 256 256c0 64-22.4 121.6-64 166.4l67.2 67.2c54.4-67.2 89.6-147.2 89.6-236.8zM480 345.6c0-54.4-41.6-96-96-96s-96 41.6-96 96 41.6 96 96 96c22.4 0 41.6-6.4 57.6-19.2l-67.2-67.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2l67.2 67.2c6.4-16 12.8-35.2 12.8-54.4zM464 444.8c-22.4 16-48 28.8-80 28.8-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128c0 28.8-9.6 54.4-25.6 76.8l70.4 67.2c32-38.4 54.4-89.6 54.4-144 0-124.8-99.2-224-224-224s-224 99.2-224 224 99.2 224 224 224c57.6 0 108.8-22.4 147.2-57.6l-70.4-67.2z" />
354
+ <glyph unicode="&#xea58;" glyph-name="target" d="M560 464c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48zM0 416h115.2c22.4-188.8 176-336 364.8-348.8v-131.2c0-9.6 6.4-16 16-16s16 6.4 16 16v128c204.8 0 374.4 153.6 396.8 352h83.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-80c0 6.4 0 9.6 0 16 0 220.8-179.2 400-400 400v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-67.2c-204.8-16-368-185.6-368-396.8 0-6.4 0-9.6 0-16h-112c-9.6 0-16-6.4-16-16s6.4-16 16-16zM144 464c0 192 147.2 348.8 336 364.8v-156.8c0-9.6 6.4-16 16-16s16 6.4 16 16v160c201.6 0 368-166.4 368-368 0-6.4 0-9.6 0-16h-144c-9.6 0-16-6.4-16-16s6.4-16 16-16h140.8c-22.4-179.2-179.2-320-364.8-320v128c0 9.6-6.4 16-16 16s-16-6.4-16-16v-124.8c-172.8 12.8-310.4 147.2-332.8 316.8h140.8c9.6 0 16 6.4 16 16s-6.4 16-16 16h-144c0 6.4 0 9.6 0 16z" />
355
+ <glyph unicode="&#xea59;" glyph-name="target1" d="M0 880v-272c0-9.6 6.4-16 16-16s16 6.4 16 16v272c0 25.6 22.4 48 48 48h240c9.6 0 16 6.4 16 16s-6.4 16-16 16h-240c-44.8 0-80-35.2-80-80zM944 960h-272c-9.6 0-16-6.4-16-16s6.4-16 16-16h272c25.6 0 48-22.4 48-48v-272c0-9.6 6.4-16 16-16s16 6.4 16 16v272c0 44.8-35.2 80-80 80zM0 16c0-44.8 35.2-80 80-80h240c9.6 0 16 6.4 16 16s-6.4 16-16 16h-240c-25.6 0-48 22.4-48 48v240c0 9.6-6.4 16-16 16s-16-6.4-16-16v-240zM1008 272c-9.6 0-16-6.4-16-16v-240c0-25.6-22.4-48-48-48h-272c-9.6 0-16-6.4-16-16s6.4-16 16-16h272c44.8 0 80 35.2 80 80v240c0 9.6-6.4 16-16 16zM560 544h-128c-25.6 0-48-22.4-48-48v-128c0-25.6 22.4-48 48-48h128c25.6 0 48 22.4 48 48v128c0 25.6-22.4 48-48 48zM576 368c0-9.6-6.4-16-16-16h-128c-9.6 0-16 6.4-16 16v128c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-128z" />
356
+ <glyph unicode="&#xea5a;" glyph-name="team-carousel" horiz-adv-x="1280" d="M112 505.6c-6.4 6.4-16 6.4-22.4 0l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4l70.4-70.4c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-60.8 60.8 60.8 60.8c3.2 3.2 3.2 12.8-3.2 19.2zM1235.2 435.2l-70.4 70.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l60.8-60.8-60.8-60.8c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l70.4 70.4c3.2 9.6 3.2 19.2-3.2 25.6zM652.8 444.8c0 0 0 0 0 0-182.4 0-332.8-160-332.8-348.8v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 172.8 137.6 320 300.8 320s307.2-150.4 307.2-320v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 188.8-153.6 348.8-339.2 348.8zM646.4 496c121.6 0 220.8 99.2 220.8 220.8s-99.2 217.6-220.8 217.6-220.8-99.2-220.8-220.8 99.2-217.6 220.8-217.6zM646.4 902.4c102.4 0 188.8-83.2 188.8-188.8s-83.2-188.8-188.8-188.8-188.8 83.2-188.8 188.8 86.4 188.8 188.8 188.8zM464 108.8c-9.6 0-16-6.4-16-16v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 9.6-6.4 16-16 16zM848 108.8c-9.6 0-16-6.4-16-16v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 9.6-6.4 16-16 16z" />
357
+ <glyph unicode="&#xea5b;" glyph-name="team-member" horiz-adv-x="1376" d="M694.4 496c121.6 0 220.8 99.2 220.8 220.8s-99.2 220.8-220.8 220.8-220.8-99.2-220.8-220.8 99.2-220.8 220.8-220.8zM694.4 902.4c102.4 0 188.8-83.2 188.8-188.8s-83.2-188.8-188.8-188.8-188.8 83.2-188.8 188.8 86.4 188.8 188.8 188.8zM512 108.8c-9.6 0-16-6.4-16-16v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 9.6-6.4 16-16 16zM896 108.8c-9.6 0-16-6.4-16-16v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 9.6-6.4 16-16 16zM1120 476.8c89.6 0 163.2 73.6 163.2 163.2s-73.6 166.4-163.2 166.4-163.2-73.6-163.2-163.2 70.4-166.4 163.2-166.4zM1120 774.4c73.6 0 131.2-60.8 131.2-131.2s-60.8-131.2-131.2-131.2-131.2 60.8-131.2 131.2 57.6 131.2 131.2 131.2zM1280 204.8c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM1120 435.2c-73.6 0-140.8-32-188.8-86.4-60.8 57.6-140.8 96-227.2 96 0 0-3.2 0-3.2 0-89.6 0-169.6-41.6-230.4-102.4-48 57.6-118.4 89.6-195.2 89.6-140.8 0-256-115.2-256-256v-86.4c0-9.6 6.4-16 16-16s16 6.4 16 16v86.4c0 121.6 99.2 224 224 224 67.2 0 131.2-32 172.8-83.2-48-60.8-80-140.8-80-224v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 172.8 137.6 320 300.8 320s307.2-150.4 307.2-320v-128c0-9.6 6.4-16 16-16s16 6.4 16 16v128c0 86.4-32 169.6-86.4 230.4 41.6 48 102.4 76.8 166.4 76.8 121.6 0 224-99.2 224-224v-86.4c0-9.6 6.4-16 16-16s16 6.4 16 16v86.4c0 144-115.2 259.2-256 259.2zM275.2 476.8c89.6 0 163.2 73.6 163.2 163.2s-73.6 163.2-163.2 163.2-166.4-70.4-166.4-160 76.8-166.4 166.4-166.4zM275.2 774.4c73.6 0 131.2-60.8 131.2-131.2s-60.8-131.2-131.2-131.2-131.2 60.8-131.2 131.2 57.6 131.2 131.2 131.2zM128 204.8c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16z" />
358
+ <glyph unicode="&#xea5c;" glyph-name="tennis-ball" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM992 448c0-3.2 0-6.4 0-9.6-265.6 9.6-483.2 224-489.6 489.6 3.2 0 6.4 0 9.6 0 265.6 0 480-214.4 480-480zM32 432c252.8-9.6 454.4-211.2 464-464-252.8 9.6-454.4 211.2-464 464zM528-32c-9.6 268.8-224 486.4-496 496 9.6 243.2 198.4 441.6 438.4 460.8 9.6-281.6 236.8-508.8 521.6-518.4-22.4-240-220.8-428.8-464-438.4z" />
359
+ <glyph unicode="&#xea5d;" glyph-name="terminal" d="M976 960h-928c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM992-16c0-9.6-6.4-16-16-16h-928c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h928c9.6 0 16-6.4 16-16v-928zM131.2 828.8c-3.2-6.4-3.2-19.2 0-25.6l118.4-118.4-118.4-118.4c-6.4-6.4-6.4-16 0-22.4 3.2 0 9.6 0 12.8 0s9.6 0 12.8 3.2l140.8 140.8-140.8 140.8c-6.4 3.2-19.2 3.2-25.6 0zM576 640h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
360
+ <glyph unicode="&#xea5e;" glyph-name="testimonial-carousel" horiz-adv-x="1280" d="M864 700.8h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16zM864 604.8h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16zM883.2 153.6l-12.8 3.2c-96 28.8-147.2 124.8-163.2 153.6-3.2 6.4-9.6 9.6-12.8 9.6h-35.2c-3.2 25.6-3.2 89.6 44.8 140.8 9.6 0 16 0 25.6 3.2 25.6 12.8 38.4 44.8 38.4 48s32 73.6 9.6 121.6c48 128-16 185.6-41.6 201.6-9.6 121.6-201.6 121.6-211.2 121.6-89.6-3.2-153.6-35.2-198.4-92.8-64-80-57.6-192-48-236.8-25.6-22.4-9.6-76.8 3.2-112 3.2-6.4 3.2-12.8 6.4-16 12.8-38.4 38.4-51.2 57.6-51.2 12.8-19.2 44.8-70.4 51.2-131.2h-19.2c-6.4 0-12.8-3.2-12.8-9.6-25.6-54.4-86.4-128-169.6-150.4l-16-3.2c-83.2-25.6-176-51.2-176-204.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 128 67.2 147.2 150.4 172.8l16 3.2c86.4 25.6 153.6 99.2 185.6 160h25.6c9.6 0 16 6.4 16 16 0 92.8-60.8 169.6-60.8 172.8-6.4 6.4-12.8 6.4-19.2 6.4 0 0-22.4-3.2-32 28.8-3.2 6.4-3.2 9.6-6.4 16-6.4 22.4-25.6 73.6-9.6 80 6.4 3.2 12.8 9.6 9.6 19.2-6.4 25.6-19.2 144 38.4 224 35.2 48 96 73.6 172.8 76.8 3.2 0 176 0 179.2-99.2 0-6.4 3.2-12.8 9.6-12.8 0 0 83.2-41.6 32-172.8-3.2-3.2 0-9.6 0-12.8 19.2-28.8 0-83.2-6.4-102.4-3.2-6.4-9.6-25.6-22.4-32-3.2 0-6.4-3.2-9.6 0-6.4 3.2-12.8 0-16-3.2-80-80-57.6-182.4-57.6-188.8s9.6-12.8 16-12.8h41.6c41.6-80 105.6-137.6 176-160l12.8-3.2c83.2-25.6 147.2-41.6 147.2-172.8 0-9.6 6.4-16 16-16s16 6.4 16 16c-3.2 150.4-89.6 176-172.8 201.6zM563.2-35.2c0-19.44-15.76-35.2-35.2-35.2s-35.2 15.76-35.2 35.2c0 19.44 15.76 35.2 35.2 35.2s35.2-15.76 35.2-35.2zM697.6-35.2c0-19.44-15.76-35.2-35.2-35.2s-35.2 15.76-35.2 35.2c0 19.44 15.76 35.2 35.2 35.2s35.2-15.76 35.2-35.2zM425.6-35.2c0-19.44-15.76-35.2-35.2-35.2s-35.2 15.76-35.2 35.2c0 19.44 15.76 35.2 35.2 35.2s35.2-15.76 35.2-35.2zM1056 892.8h-262.4c-9.6 0-16-6.4-16-16s6.4-16 16-16h262.4c105.6 0 188.8-86.4 188.8-188.8s-86.4-188.8-188.8-188.8h-102.4c-3.2 0-9.6-3.2-12.8-6.4l-80-92.8v70.4c0 9.6-6.4 16-16 16h-67.2c-9.6 0-16-6.4-16-16s6.4-16 16-16h51.2v-96c0-6.4 3.2-12.8 9.6-16 3.2 0 3.2 0 6.4 0s9.6 3.2 12.8 6.4l105.6 115.2h92.8c121.6 0 220.8 99.2 220.8 220.8s-99.2 224-220.8 224z" />
361
+ <glyph unicode="&#xea5f;" glyph-name="testimonial" horiz-adv-x="1280" d="M864 700.8h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288c-9.6 0-16-6.4-16-16s6.4-16 16-16zM864 604.8h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16zM1203.2 822.4c-41.6 44.8-99.2 70.4-160 70.4h-281.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h281.6c51.2 0 99.2-22.4 137.6-57.6 35.2-38.4 54.4-86.4 51.2-140.8-6.4-99.2-92.8-176-192-176h-131.2l-60.8-60.8c-3.2-3.2-3.2 0-3.2 0s-3.2 0-3.2 3.2v57.6h-73.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h38.4v-25.6c0-16 9.6-28.8 22.4-32 3.2-3.2 9.6-3.2 12.8-3.2 9.6 0 19.2 3.2 25.6 9.6l51.2 51.2h118.4c118.4 0 217.6 89.6 224 204.8 6.4 60.8-16 118.4-57.6 163.2zM851.2 153.6l-12.8 3.2c-96 28.8-147.2 124.8-163.2 153.6-3.2 6.4-9.6 9.6-12.8 9.6h-35.2c-3.2 25.6-3.2 89.6 44.8 140.8 9.6 0 16 0 25.6 3.2 25.6 12.8 38.4 44.8 38.4 48s32 73.6 9.6 121.6c48 128-16 185.6-41.6 201.6-9.6 121.6-201.6 121.6-211.2 121.6-89.6-3.2-153.6-35.2-198.4-92.8-64-80-57.6-192-48-236.8-25.6-22.4-9.6-76.8 3.2-112 3.2-6.4 3.2-12.8 6.4-16 12.8-38.4 38.4-51.2 57.6-51.2 12.8-19.2 44.8-70.4 51.2-131.2h-19.2c-6.4 0-12.8-3.2-12.8-9.6-25.6-54.4-86.4-128-169.6-150.4l-16-3.2c-83.2-25.6-176-51.2-176-204.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 128 67.2 147.2 150.4 172.8l16 3.2c86.4 25.6 153.6 99.2 185.6 160h25.6c9.6 0 16 6.4 16 16 0 92.8-60.8 169.6-60.8 172.8-6.4 6.4-12.8 6.4-19.2 6.4 0 0-22.4-3.2-32 28.8-3.2 6.4-3.2 9.6-6.4 16-6.4 22.4-25.6 73.6-9.6 80 6.4 3.2 12.8 9.6 9.6 19.2-6.4 25.6-19.2 144 38.4 224 35.2 48 96 73.6 172.8 76.8 3.2 0 176 0 179.2-99.2 0-6.4 3.2-12.8 9.6-12.8 0 0 83.2-41.6 32-172.8-3.2-3.2 0-9.6 0-12.8 19.2-28.8 0-83.2-6.4-102.4-3.2-6.4-9.6-25.6-22.4-32-3.2 0-6.4-3.2-9.6 0-6.4 3.2-12.8 0-16-3.2-80-80-57.6-182.4-57.6-188.8s9.6-12.8 16-12.8h41.6c41.6-80 105.6-137.6 176-160l12.8-3.2c83.2-25.6 147.2-41.6 147.2-172.8 0-9.6 6.4-16 16-16s16 6.4 16 16c-3.2 150.4-89.6 176-172.8 201.6z" />
362
+ <glyph unicode="&#xea60;" glyph-name="text-animation" horiz-adv-x="1152" d="M291.2 563.2v230.4h51.2c44.8 0 80 35.2 80 80s-35.2 80-80 80h-262.4c-44.8 0-80-35.2-80-80s35.2-80 80-80h51.2v-230.4c0-44.8 35.2-80 80-80s80 35.2 80 80zM163.2 563.2v246.4c0 9.6-6.4 16-16 16h-67.2c-25.6 0-48 22.4-48 48s22.4 48 48 48h262.4c25.6 0 48-22.4 48-48s-22.4-48-48-48h-67.2c-9.6 0-16-6.4-16-16v-246.4c0-25.6-22.4-48-48-48s-48 22.4-48 48zM860.8 217.6c0-9.6 6.4-16 16-16s16 6.4 16 16v32c0 9.6-6.4 16-16 16h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h16v-16zM915.2-38.4c-16 9.6-22.4 25.6-22.4 41.6v3.2c0 9.6-6.4 16-16 16s-16-6.4-16-16v-3.2c0-28.8 16-54.4 38.4-67.2 3.2 0 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4 3.2 9.6 0 19.2-6.4 22.4zM876.8 163.2c-9.6 0-16-6.4-16-16v-70.4c0-9.6 6.4-16 16-16s16 6.4 16 16v70.4c0 9.6-6.4 16-16 16zM1004.8 22.4c-9.6 0-16-6.4-16-16v-3.2c0-16-9.6-32-22.4-41.6-6.4-3.2-9.6-12.8-6.4-22.4 3.2-6.4 9.6-6.4 12.8-6.4s6.4 0 9.6 3.2c25.6 16 38.4 41.6 38.4 70.4v3.2c0 6.4-6.4 12.8-16 12.8zM1004.8 163.2c-9.6 0-16-6.4-16-16v-70.4c0-9.6 6.4-16 16-16s16 6.4 16 16v70.4c0 9.6-6.4 16-16 16zM1036.8 265.6h-32c-9.6 0-16-6.4-16-16v-32c0-9.6 6.4-16 16-16s16 6.4 16 16v16h16c9.6 0 16 6.4 16 16s-6.4 16-16 16zM892.8 377.6c0-9.6 6.4-16 16-16h67.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-67.2c-9.6 0-16-6.4-16-16zM1136 329.6c-6.4 0-16-6.4-16-16 0-16-9.6-32-25.6-41.6-6.4-3.2-9.6-12.8-6.4-22.4 3.2-6.4 9.6-9.6 12.8-9.6s6.4 0 6.4 3.2c25.6 12.8 41.6 38.4 41.6 67.2 3.2 9.6-3.2 19.2-12.8 19.2zM787.2 272c-16 9.6-25.6 25.6-25.6 41.6 0 9.6-6.4 16-16 16s-16-6.4-16-16c0-28.8 16-54.4 41.6-67.2 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6 6.4 6.4 3.2 16-3.2 19.2zM1107.2 352c6.4 0 9.6 3.2 12.8 6.4 3.2 6.4 3.2 16-6.4 22.4-12.8 9.6-28.8 12.8-41.6 12.8h-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h32c9.6 0 19.2-3.2 25.6-6.4 3.2 0 6.4-3.2 9.6-3.2zM857.6 377.6c0 9.6-6.4 16-16 16h-32c-16 0-28.8-3.2-41.6-12.8-6.4-3.2-9.6-16-6.4-22.4s9.6-6.4 12.8-6.4c3.2 0 6.4 0 9.6 3.2 6.4 6.4 16 6.4 25.6 6.4h32c6.4 0 16 9.6 16 16zM649.6 822.4c-6.4 0-12.8 0-19.2 0h-80c-9.6 0-16-6.4-16-16s6.4-16 16-16h80c6.4 0 9.6 0 16 0 0 0 0 0 0 0 9.6 0 16 6.4 16 16 0 6.4-6.4 16-12.8 16zM732.8 768c28.8-12.8 51.2-32 73.6-54.4 3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 9.6 3.2 6.4 6.4 6.4 16 0 22.4-22.4 25.6-51.2 44.8-83.2 60.8-6.4 3.2-16 0-22.4-6.4 0-6.4 3.2-16 9.6-19.2zM579.2 67.2h-73.6c-134.4 0-243.2 108.8-243.2 243.2v0l44.8-35.2c6.4-6.4 16-3.2 22.4 3.2s3.2 16-3.2 22.4l-70.4 54.4c-3.2 3.2-6.4 3.2-12.8 3.2-3.2 0-9.6-3.2-9.6-6.4l-54.4-70.4c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2s9.6 3.2 12.8 6.4l28.8 35.2c6.4-147.2 124.8-265.6 275.2-265.6h73.6c9.6 0 16 6.4 16 16s-9.6 19.2-19.2 19.2zM812.8 592c-6.4-6.4-6.4-16 0-22.4l64-64c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l64 64c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-35.2-35.2c0 32-6.4 64-19.2 92.8-3.2 9.6-12.8 12.8-19.2 9.6-9.6-3.2-12.8-12.8-9.6-19.2 9.6-25.6 16-54.4 16-80l-35.2 35.2c-12.8 3.2-22.4 3.2-28.8-3.2z" />
363
+ <glyph unicode="&#xea61;" glyph-name="theatre" horiz-adv-x="1152" d="M992 649.6c-80 12.8-163.2 12.8-243.2 0-32-6.4-60.8-19.2-83.2-35.2 6.4 48-6.4 96-35.2 134.4-48 67.2-105.6 124.8-172.8 172.8-32 25.6-70.4 38.4-112 38.4-51.2 0-99.2-19.2-134.4-57.6l-86.4-86.4c-83.2-83.2-128-201.6-124.8-320l3.2-70.4c3.2-73.6 60.8-131.2 134.4-134.4l67.2-3.2c6.4 0 12.8 0 16 0 0 0 0 0 0 0 115.2 0 220.8 44.8 300.8 124.8l60.8 67.2c0-6.4-6.4-12.8-6.4-19.2v-124.8c0-118.4 54.4-233.6 144-316.8l54.4-48c25.6-25.6 60.8-38.4 96-38.4s70.4 12.8 96 38.4l51.2 48c86.4 80 137.6 195.2 137.6 316.8v124.8c-3.2 96-70.4 172.8-163.2 188.8zM502.4 435.2c-76.8-80-182.4-121.6-294.4-115.2l-70.4 3.2c-54.4 3.2-99.2 48-102.4 102.4l-3.2 70.4c-3.2 112 38.4 220.8 115.2 297.6l86.4 86.4c28.8 32 70.4 48 112 48 35.2 0 67.2-9.6 92.8-32 64-48 118.4-102.4 166.4-166.4 44.8-64 38.4-150.4-16-208l-86.4-86.4zM1120 336c0-112-44.8-217.6-128-291.2l-51.2-48c-38.4-38.4-105.6-38.4-144 0l-57.6 48c-80 73.6-131.2 182.4-131.2 291.2v124.8c0 80 60.8 144 140.8 156.8 38.4 6.4 80 9.6 118.4 9.6s80-3.2 118.4-9.6c76.8-12.8 134.4-76.8 134.4-156.8v-124.8zM784 428.8c0-9.6 6.4-16 16-16s16 6.4 16 16c0 41.6-35.2 76.8-76.8 76.8s-76.8-35.2-76.8-76.8c0-9.6 6.4-16 16-16s16 6.4 16 16c0 25.6 19.2 44.8 44.8 44.8s44.8-19.2 44.8-44.8zM969.6 505.6c-41.6 0-76.8-35.2-76.8-76.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 25.6 19.2 44.8 44.8 44.8s44.8-19.2 44.8-44.8c0-9.6 6.4-16 16-16s16 6.4 16 16c0 41.6-35.2 76.8-76.8 76.8zM969.6 307.2c-12.8 0-25.6-6.4-41.6-12.8-22.4-9.6-44.8-19.2-70.4-19.2s-48 9.6-70.4 19.2c-16 6.4-28.8 12.8-41.6 12.8-16 0-32-9.6-32-48 0-83.2 67.2-147.2 147.2-147.2s147.2 67.2 147.2 147.2c-6.4 38.4-25.6 48-38.4 48zM854.4 140.8c-64 0-115.2 51.2-115.2 115.2 0 9.6 0 16 0 16 6.4 0 19.2-6.4 28.8-9.6 22.4-9.6 51.2-22.4 83.2-22.4s60.8 12.8 83.2 22.4c12.8 6.4 25.6 9.6 28.8 12.8 0 0 3.2-3.2 3.2-16 3.2-64-48-118.4-112-118.4zM198.4 793.6c-6.4-3.2-6.4-16 0-22.4s16-6.4 22.4 0c16 16 48 16 64 0 19.2-19.2 19.2-48 0-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2c28.8 32 28.8 80 0 108.8-32 32-83.2 32-112 0zM416 652.8c0 0 0 0 0 0-19.2 0-41.6-9.6-54.4-22.4-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0c9.6 9.6 19.2 12.8 32 12.8s22.4-3.2 32-12.8c19.2-19.2 19.2-48 0-64-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 0 12.8 3.2 28.8 32 28.8 80 0 108.8-16 16-35.2 22.4-57.6 22.4zM176 643.2c-38.4 0-76.8-16-102.4-44.8-9.6-9.6-22.4-25.6-19.2-44.8s22.4-28.8 48-38.4c19.2-9.6 41.6-19.2 57.6-38.4 16-16 28.8-38.4 38.4-60.8 12.8-25.6 22.4-51.2 48-51.2 12.8 0 22.4 6.4 38.4 19.2 57.6 57.6 57.6 150.4 0 208-35.2 35.2-70.4 51.2-108.8 51.2zM256 412.8c-9.6-9.6-12.8-9.6-16-9.6-3.2 3.2-12.8 19.2-19.2 32-9.6 22.4-22.4 48-44.8 70.4s-48 35.2-67.2 44.8c-9.6 6.4-25.6 12.8-28.8 16 0 0 0 3.2 9.6 16 22.4 22.4 51.2 35.2 80 35.2s64-19.2 86.4-41.6c44.8-44.8 44.8-118.4 0-163.2z" />
364
+ <glyph unicode="&#xea62;" glyph-name="tick-circle" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM723.2 633.6l-272-294.4c-6.4-6.4-16-6.4-22.4 0l-128 137.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l128-137.6c9.6-9.6 22.4-16 35.2-16s25.6 6.4 35.2 16l272 294.4c6.4 6.4 6.4 16 0 22.4-9.6 6.4-19.2 6.4-25.6 0z" />
365
+ <glyph unicode="&#xea63;" glyph-name="tick" d="M355.2 105.6c-22.4 0-44.8 9.6-60.8 25.6l-272 294.4c-6.4 6.4-6.4 16 0 22.4s16 6.4 22.4 0l272-294.4c19.2-22.4 57.6-22.4 76.8 0l585.6 633.6c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-582.4-633.6c-16-16-38.4-25.6-64-25.6z" />
366
+ <glyph unicode="&#xea64;" glyph-name="tickets" d="M976 384h-243.2l233.6 233.6c9.6 9.6 12.8 22.4 12.8 35.2s-6.4 25.6-12.8 35.2l-80 80-12.8-12.8c-25.6-25.6-67.2-25.6-89.6 0-9.6 9.6-16 25.6-16 44.8s6.4 32 19.2 44.8l12.8 12.8-80 80c-19.2 19.2-48 19.2-67.2 0l-553.6-553.6h-51.2c-25.6 0-48-22.4-48-48v-112h16c35.2 0 64-28.8 64-64s-28.8-64-64-64h-16v-112c0-25.6 22.4-48 48-48h928c25.6 0 48 22.4 48 48v112h-16c-35.2 0-64 28.8-64 64s28.8 64 64 64h16v112c0 25.6-22.4 48-48 48zM672 912c6.4 6.4 16 6.4 22.4 0l57.6-57.6c-9.6-16-16-35.2-16-54.4 0-25.6 9.6-51.2 28.8-67.2 32-32 86.4-35.2 124.8-9.6l57.6-57.6c6.4-6.4 6.4-16 0-22.4l-169.6-169.6-44.8 44.8-22.4-22.4 44.8-44.8-64-64h-544l524.8 524.8zM992 256c-44.8-6.4-80-48-80-96s35.2-86.4 80-96v-80c0-9.6-6.4-16-16-16h-240v64h-32v-64h-656c-9.6 0-16 6.4-16 16v80c44.8 6.4 80 48 80 96s-35.2 86.4-80 96v80c0 9.6 6.4 16 16 16h656v-64h32v64h240c9.6 0 16-6.4 16-16v-80zM704 256h32v-64h-32v64zM704 128h32v-64h-32v64zM525.079 675.886l-45.254 45.254 22.627 22.627 45.254-45.254-22.627-22.627zM592.983 607.045l-45.254 45.254 22.627 22.627 45.254-45.254-22.627-22.627zM637.732 561.308l22.627 22.627 45.254-45.254-22.627-22.627-45.254 45.254z" />
367
+ <glyph unicode="&#xea65;" glyph-name="tie-knot" horiz-adv-x="1440" d="M1344 944c-54.4 25.6-118.4 19.2-169.6-22.4l-342.4-281.6c-3.2-3.2-3.2-3.2-3.2-6.4-25.6 22.4-57.6 38.4-92.8 38.4s-67.2-16-89.6-38.4l-364.8 288c-54.4 41.6-121.6 51.2-182.4 22.4-60.8-32-99.2-89.6-99.2-156.8v-681.6c0-67.2 38.4-124.8 99.2-153.6 22.4-9.6 51.2-16 76.8-16 38.4 0 73.6 12.8 105.6 38.4l352 275.2c22.4-35.2 60.8-54.4 105.6-54.4s83.2 22.4 105.6 57.6l332.8-275.2c32-25.6 67.2-38.4 102.4-38.4 22.4 0 44.8 6.4 67.2 16 57.6 28.8 96 86.4 96 156.8v675.2c-3.2 70.4-38.4 128-99.2 156.8zM259.2-3.2c-41.6-32-99.2-38.4-147.2-16-48 25.6-80 73.6-80 128v678.4c0 54.4 32 102.4 80 124.8s105.6 19.2 147.2-16l364.8-288c-12.8-19.2-19.2-41.6-19.2-64v-224c0-16 3.2-28.8 6.4-41.6l-352-281.6zM736 224c-54.4 0-96 41.6-96 96v224c0 54.4 41.6 96 96 96s96-41.6 96-96v-224c0-54.4-41.6-96-96-96zM1408 108.8c0-54.4-28.8-105.6-76.8-128-44.8-22.4-96-16-134.4 19.2l-339.2 281.6c3.2 12.8 6.4 25.6 6.4 41.6v224c0 25.6-6.4 48-19.2 67.2 3.2 0 6.4 0 9.6 3.2l342.4 281.6c41.6 32 89.6 38.4 134.4 19.2 48-22.4 76.8-70.4 76.8-128v-681.6zM544 448h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16zM1152 448h-224c-9.6 0-16-6.4-16-16s6.4-16 16-16h224c9.6 0 16 6.4 16 16s-6.4 16-16 16z" />
368
+ <glyph unicode="&#xea66;" glyph-name="tie" horiz-adv-x="480" d="M412.8 707.2l51.2 192c3.2 12.8 0 28.8-9.6 41.6s-25.6 19.2-38.4 19.2h-352c-12.8 0-28.8-6.4-38.4-19.2s-12.8-25.6-9.6-41.6l51.2-192c6.4-19.2 25.6-35.2 48-35.2h249.6c22.4 0 41.6 16 48 35.2zM99.2 716.8l-51.2 192c-3.2 6.4 0 9.6 3.2 12.8s9.6 6.4 12.8 6.4h352c6.4 0 9.6-3.2 12.8-6.4s3.2-6.4 3.2-12.8l-51.2-192c0-6.4-9.6-12.8-16-12.8h-249.6c-6.4 0-16 6.4-16 12.8zM25.6 51.2l192-108.8c6.4-3.2 12.8-6.4 22.4-6.4s16 3.2 25.6 6.4l192 108.8c16 9.6 25.6 28.8 25.6 48l-67.2 496c0 9.6-9.6 16-19.2 12.8-9.6 0-16-9.6-12.8-19.2l64-492.8c0-6.4-3.2-12.8-9.6-16l-192-108.8c-6.4-3.2-12.8-3.2-16 0l-192 108.8c-3.2 3.2-6.4 9.6-6.4 16l92.8 492.8c3.2 9.6-3.2 16-12.8 19.2-9.6 0-16-3.2-19.2-12.8l-92.8-492.8c-3.2-19.2 6.4-41.6 25.6-51.2zM332.8 281.6l-192-32c-9.6 0-16-9.6-12.8-19.2 0-6.4 9.6-12.8 16-12.8 0 0 3.2 0 3.2 0l192 32c9.6 0 16 9.6 12.8 19.2s-9.6 16-19.2 12.8zM332.8 153.6l-192-32c-9.6 0-16-9.6-12.8-19.2 0-6.4 9.6-12.8 16-12.8 0 0 3.2 0 3.2 0l192 32c9.6 0 16 9.6 12.8 19.2s-9.6 16-19.2 12.8zM332.8 409.6l-192-32c-9.6 0-16-9.6-12.8-19.2 0-6.4 9.6-12.8 16-12.8 0 0 3.2 0 3.2 0l192 32c9.6 0 16 9.6 12.8 19.2s-9.6 16-19.2 12.8z" />
369
+ <glyph unicode="&#xea67;" glyph-name="timeline" horiz-adv-x="1184" d="M259.2 835.2c0-21.208-17.192-38.4-38.4-38.4s-38.4 17.192-38.4 38.4c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4zM259.2 464c0-21.208-17.192-38.4-38.4-38.4s-38.4 17.192-38.4 38.4c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4zM259.2 70.4c0-21.208-17.192-38.4-38.4-38.4s-38.4 17.192-38.4 38.4c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4zM992 585.6h-406.4c-3.2 0-6.4 0-9.6-3.2l-115.2-102.4h-118.4c-6.4 54.4-51.2 96-105.6 105.6v128c51.2 6.4 92.8 44.8 102.4 96h121.6l115.2-105.6c3.2-3.2 6.4-3.2 9.6-3.2h272c70.4 0 128 57.6 128 128s-57.6 128-128 128h-272c-3.2 0-9.6 0-9.6-3.2l-112-108.8h-121.6c-3.2 64-57.6 115.2-121.6 115.2-67.2 0-121.6-54.4-121.6-121.6 0-60.8 44.8-112 105.6-121.6v-131.2c-60.8-6.4-105.6-57.6-105.6-121.6s44.8-112 105.6-121.6v-150.4c-60.8-6.4-105.6-57.6-105.6-121.6 0-67.2 54.4-121.6 121.6-121.6 64 0 115.2 48 121.6 112h121.6l112-108.8c3.2-3.2 6.4-3.2 9.6-3.2h144c70.4 0 128 57.6 128 128s-57.6 128-128 128h-144c-3.2 0-9.6 0-9.6-3.2l-112-108.8h-121.6c-12.8 51.2-54.4 92.8-105.6 99.2v150.4c54.4 6.4 96 51.2 105.6 105.6h118.4l112-102.4c3.2-3.2 6.4-3.2 9.6-3.2h409.6c67.2 0 121.6 54.4 121.6 121.6s-54.4 121.6-121.6 121.6zM592 921.6h265.6c54.4 0 96-41.6 96-96s-41.6-96-96-96h-265.6l-99.2 96 99.2 96zM131.2 835.2c0 48 41.6 89.6 89.6 89.6 51.2 0 89.6-41.6 89.6-89.6s-41.6-89.6-89.6-89.6c-51.2 0-89.6 38.4-89.6 89.6zM592 172.8h137.6c54.4 0 96-41.6 96-96s-41.6-96-96-96h-137.6l-99.2 96 99.2 96zM310.4 70.4c0-48-41.6-89.6-89.6-89.6s-89.6 41.6-89.6 89.6 41.6 89.6 89.6 89.6c48 3.2 89.6-38.4 89.6-89.6zM220.8 374.4c-48 0-89.6 41.6-89.6 89.6s41.6 89.6 89.6 89.6c51.2 0 89.6-41.6 89.6-89.6s-41.6-89.6-89.6-89.6zM992 374.4h-403.2l-99.2 89.6 99.2 89.6h403.2c51.2 0 89.6-41.6 89.6-89.6s-38.4-89.6-89.6-89.6zM985.6 480h-352c-9.6 0-16-6.4-16-16s6.4-16 16-16h352c9.6 0 16 6.4 16 16s-6.4 16-16 16zM633.6 809.6h259.2c9.6 0 16 6.4 16 16s-6.4 16-16 16h-259.2c-9.6 0-16-6.4-16-16s9.6-16 16-16zM636.8 60.8h96c9.6 0 16 6.4 16 16s-6.4 16-16 16h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
370
+ <glyph unicode="&#xea68;" glyph-name="toggle" d="M352 480h320c124.8 0 224 99.2 224 224s-99.2 224-224 224h-320c-124.8 0-224-99.2-224-224s99.2-224 224-224zM352 896h320c105.6 0 192-86.4 192-192s-86.4-192-192-192h-320c-105.6 0-192 86.4-192 192s86.4 192 192 192zM672 416h-320c-124.8 0-224-99.2-224-224s99.2-224 224-224h320c124.8 0 224 99.2 224 224s-99.2 224-224 224zM672 0h-320c-105.6 0-192 86.4-192 192s86.4 192 192 192h320c105.6 0 192-86.4 192-192s-86.4-192-192-192zM352 544c89.6 0 160 70.4 160 160s-70.4 160-160 160-160-70.4-160-160 70.4-160 160-160zM352 832c70.4 0 128-57.6 128-128s-57.6-128-128-128-128 57.6-128 128 57.6 128 128 128zM672 352c-89.6 0-160-70.4-160-160s70.4-160 160-160 160 70.4 160 160-73.6 160-160 160zM672 64c-70.4 0-128 57.6-128 128s57.6 128 128 128 128-57.6 128-128-57.6-128-128-128z" />
371
+ <glyph unicode="&#xea69;" glyph-name="tools" d="M57.6 224c-32-28.8-54.4-70.4-54.4-115.2-3.2-44.8 16-86.4 44.8-118.4 28.8-28.8 70.4-48 112-48 44.8 0 89.6 19.2 118.4 54.4l211.2 240 246.4-246.4c28.8-28.8 67.2-44.8 108.8-44.8s80 16 108.8 44.8 44.8 67.2 44.8 108.8c0 41.6-16 80-44.8 108.8l-262.4 262.4 64 73.6c19.2-6.4 38.4-9.6 57.6-9.6 60.8 0 118.4 25.6 153.6 70.4 51.2 64 57.6 150.4 16 227.2-9.6 16-38.4 16-44.8 0l-48-89.6c-12.8-22.4-38.4-32-60.8-19.2l-48 25.6c-9.6 6.4-19.2 16-22.4 25.6-3.2 12.8-3.2 25.6 3.2 35.2l54.4 102.4c3.2 9.6 3.2 19.2 0 25.6s-12.8 12.8-25.6 12.8c-60.8 0-118.4-25.6-153.6-70.4-41.6-51.2-54.4-118.4-35.2-182.4l-179.2-153.6-240 246.4c16 19.2 19.2 48 12.8 73.6-9.6 28.8-35.2 51.2-67.2 57.6l-64 16c-12.8 3.2-28.8 0-38.4-12.8-9.6-9.6-12.8-22.4-12.8-38.4l12.8-67.2c9.6-41.6 44.8-70.4 86.4-70.4 16 0 32 6.4 48 16l246.4-246.4-348.8-294.4zM115.2 784c-22.4 0-51.2 12.8-54.4 41.6l-12.8 64c0 3.2 0 3.2 3.2 6.4 0 0 3.2-3.2 6.4-3.2 0 0 0 0 0 0l67.2-9.6c19.2-3.2 35.2-12.8 41.6-32s3.2-38.4-9.6-51.2l-9.6-3.2c-9.6-9.6-19.2-12.8-32-12.8zM937.6 188.8c22.4-22.4 35.2-54.4 35.2-86.4s-12.8-64-35.2-86.4c-48-48-128-48-172.8 0l-249.6 249.6 163.2 185.6 259.2-262.4zM643.2 697.6c-19.2 57.6-9.6 118.4 25.6 163.2 28.8 35.2 73.6 57.6 121.6 60.8l-48-92.8c-9.6-19.2-12.8-38.4-6.4-60.8s19.2-35.2 38.4-44.8l48-25.6c9.6-6.4 22.4-9.6 35.2-9.6 28.8 0 54.4 16 70.4 41.6l41.6 80c28.8-60.8 22.4-131.2-19.2-182.4-41.6-54.4-121.6-73.6-188.8-51.2-6.4 3.2-12.8 0-16-3.2l-489.6-553.6c-22.4-28.8-57.6-41.6-96-41.6-35.2 0-64 12.8-89.6 38.4s-38.4 57.6-35.2 92.8c0 35.2 16 67.2 44.8 89.6l560 480c3.2 3.2 6.4 12.8 3.2 19.2zM636.8 288l192-192c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-192 192c-6.4 6.4-16 6.4-22.4 0s-9.6-16-3.2-22.4zM163.2 166.4c-35.2 0-64-28.8-64-64s28.8-64 64-64 64 28.8 64 64-28.8 64-64 64zM163.2 70.4c-19.2 0-32 12.8-32 32s12.8 32 32 32 32-12.8 32-32-16-32-32-32z" />
372
+ <glyph unicode="&#xea6a;" glyph-name="tree-square" d="M768 864h-544c-35.2 0-64-28.8-64-64v-544c0-35.2 28.8-64 64-64h256v-224c0-9.6 6.4-16 16-16s16 6.4 16 16v224h256c35.2 0 64 28.8 64 64v544c0 35.2-28.8 64-64 64zM800 256c0-19.2-12.8-32-32-32h-256v275.2l166.4 166.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-144-144v224c0 9.6-6.4 16-16 16s-16-6.4-16-16v-345.6l-198.4 198.4c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l220.8-220.8v-153.6h-256c-19.2 0-32 12.8-32 32v544c0 19.2 12.8 32 32 32h544c19.2 0 32-12.8 32-32v-544z" />
373
+ <glyph unicode="&#xea6b;" glyph-name="twitter-bird" d="M336-6.4c-188.8 0-326.4 96-329.6 99.2-6.4 6.4-9.6 12.8-6.4 19.2s9.6 9.6 16 9.6c0 0 140.8-9.6 249.6 60.8-48 9.6-128 41.6-166.4 144-3.2 6.4 0 12.8 3.2 16s9.6 6.4 16 6.4c0 0 12.8-3.2 41.6-3.2-51.2 28.8-118.4 86.4-128 195.2 0 6.4 3.2 12.8 9.6 16s12.8 3.2 16 0c0 0 16-12.8 41.6-19.2-48 48-108.8 140.8-35.2 262.4 3.2 3.2 6.4 6.4 12.8 6.4s9.6-3.2 12.8-6.4c0-3.2 121.6-176 380.8-204.8 0 54.4 12.8 195.2 169.6 246.4 19.2 6.4 41.6 9.6 60.8 9.6 73.6 0 131.2-41.6 160-70.4 22.4 6.4 76.8 25.6 112 54.4 6.4 3.2 12.8 6.4 19.2 0 6.4-3.2 9.6-9.6 6.4-16 0-3.2-12.8-51.2-54.4-92.8 16 3.2 35.2 9.6 51.2 19.2 6.4 3.2 12.8 3.2 19.2 0s6.4-12.8 3.2-19.2c0-3.2-38.4-73.6-102.4-108.8 3.2-60.8 0-352-281.6-534.4-92.8-57.6-192-89.6-297.6-89.6zM73.6 92.8c54.4-28.8 150.4-67.2 262.4-67.2 99.2 0 192 28.8 278.4 86.4 300.8 195.2 268.8 512 265.6 515.2 0 6.4 3.2 12.8 9.6 16 28.8 12.8 51.2 35.2 67.2 54.4-35.2-9.6-70.4-6.4-70.4-6.4-6.4 0-12.8 6.4-16 12.8 0 6.4 3.2 12.8 6.4 16 28.8 16 48 38.4 60.8 60.8-41.6-22.4-83.2-32-86.4-32-6.4 0-12.8 0-16 6.4-16 19.2-67.2 67.2-140.8 67.2-16 0-35.2-3.2-51.2-9.6-169.6-54.4-147.2-227.2-147.2-233.6 0-3.2 0-9.6-3.2-12.8s-9.6-6.4-12.8-6.4c-227.2 22.4-358.4 153.6-400 204.8-67.2-137.6 70.4-230.4 76.8-233.6 3.2-6.4 6.4-12.8 6.4-19.2-3.2-6.4-6.4-12.8-12.8-12.8-35.2-3.2-60.8 6.4-80 12.8 28.8-131.2 163.2-163.2 163.2-163.2 6.4-3.2 12.8-9.6 12.8-16s-6.4-12.8-12.8-16c-32-3.2-67.2-6.4-89.6-3.2 57.6-102.4 160-102.4 166.4-102.4s12.8-3.2 16-9.6 0-12.8-3.2-19.2c-83.2-67.2-185.6-86.4-249.6-89.6z" />
374
+ <glyph unicode="&#xea6c;" glyph-name="twitter" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM336 448h48v-150.4c0-22.4 3.2-28.8 6.4-38.4v-3.2c0 0 16-41.6 35.2-57.6 16-12.8 32-22.4 51.2-28.8s35.2-9.6 60.8-9.6c22.4 0 41.6 3.2 60.8 6.4 22.4 6.4 41.6 12.8 60.8 22.4 6.4 3.2 9.6 9.6 9.6 16v76.8c0 6.4-3.2 12.8-9.6 16s-12.8 3.2-16 0c-22.4-16-35.2-16-57.6-16-12.8 0-22.4 3.2-32 6.4-3.2 0-12.8 12.8-12.8 96v64h112c9.6 0 16 6.4 16 16v96c0 9.6-6.4 16-16 16h-108.8v112c0 9.6-6.4 16-16 16h-83.2c-9.6 0-16-6.4-16-16-3.2-25.6-9.6-44.8-16-60.8s-19.2-28.8-28.8-38.4c-9.6-9.6-28.8-16-51.2-25.6-6.4-3.2-12.8-9.6-12.8-16v-86.4c0-6.4 6.4-12.8 16-12.8zM352 537.6c32 9.6 38.4 16 51.2 28.8 16 12.8 28.8 32 38.4 51.2 6.4 16 12.8 25.6 19.2 57.6h51.2v-112c0-9.6 6.4-16 16-16h112v-64h-112c-9.6 0-16-6.4-16-16v-86.4c0-86.4 12.8-112 28.8-124.8 12.8-9.6 28.8-12.8 48-12.8s19.2 3.2 51.2 9.6v-38.4c-32-6.4-28.8-9.6-44.8-16-19.2-3.2-35.2-6.4-54.4-6.4-22.4 0-35.2 3.2-51.2 6.4-16 6.4-28.8 12.8-41.6 22.4-9.6 6.4-22.4 32-25.6 44.8l-3.2 6.4c-3.2 6.4-3.2 9.6-3.2 25.6v166.4c0 9.6-6.4 16-16 16h-48v57.6z" />
375
+ <glyph unicode="&#xea6d;" glyph-name="ufo" horiz-adv-x="1248" d="M608 768c54.4 0 96 41.6 96 96s-41.6 96-96 96-96-41.6-96-96 44.8-96 96-96zM608 928c35.2 0 64-28.8 64-64s-28.8-64-64-64-64 28.8-64 64 28.8 64 64 64zM995.2 448c0 0 0-3.2 0-3.2-41.6 156.8-185.6 259.2-371.2 259.2 0 0 0 0 0 0v32c0 9.6-6.4 16-16 16s-16-6.4-16-16v-25.6c-169.6-12.8-300.8-115.2-339.2-265.6-208-48-256-124.8-256-185.6 0-76.8 80-153.6 240-204.8v-54.4c0-28.8 19.2-51.2 44.8-60.8s51.2-3.2 70.4 16l57.6 60.8c137.6-22.4 288-22.4 425.6 0l57.6-60.8c12.8-12.8 28.8-19.2 44.8-19.2 6.4 0 16 0 25.6 3.2 25.6 9.6 41.6 35.2 41.6 60.8v54.4c160 51.2 243.2 128 243.2 204.8 3.2 89.6-83.2 153.6-252.8 188.8zM624 678.4c204.8 0 352-137.6 352-329.6 0 0 0-19.2-22.4-41.6-35.2-35.2-118.4-76.8-329.6-76.8s-294.4 41.6-329.6 76.8c-22.4 22.4-22.4 41.6-22.4 41.6 0 192 147.2 329.6 352 329.6zM985.6 83.2c-6.4-3.2-9.6-9.6-9.6-16v-64c0-19.2-12.8-28.8-22.4-32-12.8-6.4-25.6-3.2-35.2 6.4l-64 67.2c-3.2 3.2-9.6 6.4-12.8 3.2-140.8-22.4-291.2-22.4-432 0-6.4 0-9.6 0-12.8-3.2l-64-67.2c-9.6-9.6-25.6-12.8-35.2-6.4-9.6 3.2-22.4 16-22.4 32v64c0 6.4-3.2 12.8-9.6 16-144 44.8-233.6 115.2-233.6 176 0 64 76.8 118.4 214.4 150.4-3.2-19.2-3.2-38.4-3.2-60.8 0-3.2 0-32 28.8-64 38.4-41.6 131.2-89.6 355.2-89.6s316.8 48 355.2 89.6c28.8 32 28.8 60.8 28.8 60.8 0 22.4-3.2 41.6-6.4 64 99.2-22.4 214.4-67.2 214.4-153.6-3.2-57.6-92.8-128-233.6-172.8z" />
376
+ <glyph unicode="&#xea6e;" glyph-name="umbralla" horiz-adv-x="864" d="M432 672c-128 0-243.2-80-288-201.6-3.2-9.6 0-16 9.6-19.2 3.2-3.2 6.4-3.2 6.4-3.2 6.4 0 12.8 3.2 16 9.6 38.4 108.8 140.8 182.4 256 182.4 9.6 0 16 6.4 16 16s-6.4 16-16 16zM432 864v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16s16 6.4 16 16zM288 48c-9.6 0-16-6.4-16-16v-16c0-44.8 35.2-80 80-80s80 35.2 80 80v272c0 9.6-6.4 16-16 16s-16-6.4-16-16v-272c0-25.6-22.4-48-48-48s-48 22.4-48 48v16c0 9.6-6.4 16-16 16zM851.2 368c9.6 9.6 12.8 22.4 12.8 38.4-16 220.8-208 393.6-432 393.6-220.8 0-412.8-172.8-432-396.8 0-12.8 3.2-25.6 12.8-38.4 9.6-6.4 22.4-12.8 35.2-12.8h768c16 0 28.8 6.4 35.2 16zM38.4 390.4c-3.2 3.2-6.4 6.4-6.4 12.8 19.2 204.8 195.2 364.8 400 364.8 208 0 384-160 400-364.8 0-3.2 0-9.6-3.2-12.8s-6.4-6.4-12.8-6.4h-768c-3.2 0-6.4 3.2-9.6 6.4z" />
377
+ <glyph unicode="&#xea6f;" glyph-name="unlock" horiz-adv-x="896" d="M416 128c0 0 0 0 0 0v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c67.2 6.4 118.4 60.8 118.4 128 0 70.4-57.6 128-128 128s-128-57.6-128-128c0-64 41.6-118.4 105.6-128zM438.4 348.8c54.4 0 96-41.6 96-96s-41.6-96-96-96-96 41.6-96 96 41.6 96 96 96zM476.8 928c99.2 0 182.4-83.2 182.4-185.6 0-9.6 6.4-16 16-16s16 6.4 16 16c0 118.4-96 217.6-214.4 217.6-121.6 0-220.8-102.4-220.8-220.8v-163.2h-208c-25.6 0-48-22.4-48-48v-544c0-25.6 22.4-48 48-48h800c25.6 0 48 22.4 48 48v544c0 25.6-22.4 48-48 48h-560v163.2c0 99.2 86.4 188.8 188.8 188.8zM848 544c9.6 0 16-6.4 16-16v-544c0-9.6-6.4-16-16-16h-800c-9.6 0-16 6.4-16 16v544c0 9.6 6.4 16 16 16h800z" />
378
+ <glyph unicode="&#xea70;" glyph-name="up-down" horiz-adv-x="1120" d="M1072 960h-1024c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h1024c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48zM1088-16c0-9.6-6.4-16-16-16h-1024c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h1024c9.6 0 16-6.4 16-16v-928zM832 448h-576c-9.6 0-16-6.4-16-16s6.4-16 16-16h576c9.6 0 16 6.4 16 16s-6.4 16-16 16zM444.8 566.4l115.2 115.2 115.2-115.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-128 128c-6.4 6.4-16 6.4-22.4 0l-128-128c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0zM672 326.4l-115.2-115.2-115.2 115.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l128-128c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l128 128c6.4 6.4 6.4 16 0 22.4s-22.4 6.4-28.8 0z" />
379
+ <glyph unicode="&#xea71;" glyph-name="upload" d="M976 528c-9.6 0-16-6.4-16-16v-352c0-19.2-12.8-32-32-32h-864c-19.2 0-32 12.8-32 32v352c0 9.6-6.4 16-16 16s-16-6.4-16-16v-352c0-35.2 28.8-64 64-64h864c35.2 0 64 28.8 64 64v352c0 9.6-6.4 16-16 16zM496 304c9.6 0 16 6.4 16 16v473.6l179.2-179.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-220.8 220.8-220.8-220.8c-6.4-6.4-6.4-16 0-22.4s16-6.4 22.4 0l182.4 179.2v-473.6c0-9.6 6.4-16 16-16z" />
380
+ <glyph unicode="&#xea72;" glyph-name="upward-top-right" d="M1008 800h-208c-9.6 0-16-6.4-16-16s6.4-16 16-16h169.6l-326.4-348.8-214.4 214.4c-6.4 6.4-16 6.4-22.4 0l-390.4-387.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2l374.4 377.6 214.4-214.4c3.2-3.2 6.4-3.2 12.8-3.2 3.2 0 9.6 3.2 12.8 6.4l336 352v-166.4c0-9.6 6.4-16 16-16s16 6.4 16 16v208c0 9.6-6.4 16-16 16z" />
381
+ <glyph unicode="&#xea73;" glyph-name="user-female" horiz-adv-x="1056" d="M22.4-64c9.6 0 16 6.4 16 16 0 134.4 67.2 153.6 150.4 179.2l6.4 3.2c83.2 25.6 147.2 80 179.2 156.8h38.4c6.4 0 9.6 3.2 12.8 3.2 3.2 3.2 3.2 6.4 3.2 12.8v12.8c0 28.8 0 57.6-19.2 83.2s-25.6 60.8-25.6 60.8c0 6.4-6.4 12.8-16 12.8 0 0 0 0 0 0-6.4 0-16-6.4-16-12.8 0-16 0-35.2 0-51.2-32 35.2-76.8 105.6-76.8 217.6 0 134.4 96 288 227.2 297.6 118.4 6.4 144-51.2 144-54.4 3.2-6.4 6.4-9.6 12.8-9.6s150.4-25.6 150.4-227.2c0-99.2-28.8-169.6-86.4-217.6 0 12.8 0 25.6 0 38.4 0 6.4-6.4 12.8-12.8 12.8s-12.8-3.2-16-9.6c0 0-19.2-41.6-38.4-70.4-16-22.4-25.6-48-25.6-76.8v-12.8c0-9.6 6.4-16 16-16h41.6c35.2-76.8 92.8-131.2 176-153.6l6.4-3.2c86.4-25.6 153.6-44.8 153.6-179.2 0-9.6 6.4-16 16-16s16 6.4 16 16c0 156.8-89.6 185.6-176 211.2l-6.4 3.2c-76.8 22.4-131.2 73.6-160 147.2-9.6 6.4-16 9.6-22.4 9.6h-35.2c0 19.2 6.4 38.4 19.2 54.4 3.2 3.2 6.4 6.4 9.6 12.8 0-6.4 3.2-9.6 6.4-12.8 6.4-3.2 12.8-3.2 16 0 89.6 54.4 131.2 140.8 131.2 265.6 0 198.4-131.2 246.4-169.6 256-12.8 22.4-51.2 76.8-172.8 67.2-153.6-9.6-259.2-179.2-259.2-329.6 0-147.2 73.6-236.8 118.4-268.8 6.4-3.2 12.8-3.2 16 0 6.4 3.2 9.6 9.6 9.6 16 0 0 0 3.2 0 6.4 0 0 0 0 0 0 12.8-16 12.8-35.2 12.8-60.8h-35.2c-6.4 0-12.8-3.2-16-9.6-28.8-73.6-86.4-124.8-163.2-147.2v-9.6c-86.4-25.6-172.8-51.2-172.8-208 0-9.6 6.4-16 16-16z" />
382
+ <glyph unicode="&#xea74;" glyph-name="user-id" horiz-adv-x="864" d="M268.8 425.6c-83.2-22.4-96-96-96-96-3.2-9.6 3.2-16 12.8-19.2 0 0 3.2 0 3.2 0 6.4 0 12.8 6.4 16 12.8 0 3.2 12.8 54.4 73.6 70.4 57.6 16 99.2 28.8 121.6 70.4 9.6 16 6.4 38.4-6.4 51.2s-32 38.4-38.4 64c0 0-3.2 3.2-3.2 6.4 0 0 0 3.2-3.2 3.2-9.6 9.6-22.4 28.8-22.4 44.8 0 6.4 3.2 9.6 6.4 16 3.2 3.2 3.2 6.4 6.4 9.6 3.2 12.8 19.2 134.4 124.8 134.4 102.4 0 118.4-121.6 121.6-134.4 0-3.2 0-6.4 3.2-9.6s12.8-22.4-9.6-48c0 0-3.2-3.2-3.2-3.2s0-3.2 0-3.2-12.8-44.8-44.8-76.8c-16-16-16-38.4-6.4-57.6 12.8-22.4 41.6-48 99.2-54.4 67.2-6.4 92.8-76.8 92.8-76.8 3.2-9.6 12.8-12.8 19.2-9.6 9.6 3.2 12.8 12.8 9.6 19.2 0 0-32 89.6-118.4 99.2-44.8 6.4-67.2 25.6-76.8 41.6-3.2 6.4-3.2 12.8 0 19.2 35.2 38.4 48 80 51.2 89.6 32 41.6 19.2 73.6 12.8 83.2-9.6 60.8-51.2 160-153.6 160-121.6 0-150.4-124.8-153.6-156.8-9.6-9.6-12.8-22.4-12.8-35.2 0-28.8 22.4-57.6 28.8-64 9.6-32 28.8-57.6 44.8-73.6 3.2-3.2 6.4-12.8 3.2-16-16-35.2-54.4-48-102.4-60.8zM144 208c0-9.6 6.4-16 16-16h576c9.6 0 16 6.4 16 16s-6.4 16-16 16h-576c-9.6 0-16-6.4-16-16zM656 80c0 9.6-6.4 16-16 16h-384c-9.6 0-16-6.4-16-16s6.4-16 16-16h384c9.6 0 16 6.4 16 16zM320-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h256c9.6 0 16 6.4 16 16s-6.4 16-16 16h-256zM672-64h144c25.6 0 48 22.4 48 48v928c0 25.6-22.4 48-48 48h-768c-25.6 0-48-22.4-48-48v-928c0-25.6 22.4-48 48-48h176c9.6 0 16 6.4 16 16s-6.4 16-16 16h-176c-9.6 0-16 6.4-16 16v928c0 9.6 6.4 16 16 16h768c9.6 0 16-6.4 16-16v-928c0-9.6-6.4-16-16-16h-144c-9.6 0-16-6.4-16-16s6.4-16 16-16z" />
383
+ <glyph unicode="&#xea75;" glyph-name="user-male" horiz-adv-x="1056" d="M19.2-64c9.6 0 16 6.4 16 16 0 128 67.2 147.2 150.4 172.8l16 3.2c86.4 25.6 153.6 99.2 185.6 160h25.6c9.6 0 16 6.4 16 16 0 92.8-60.8 169.6-60.8 172.8-3.2 3.2-9.6 6.4-16 6.4-3.2 0-22.4-3.2-32 28.8-3.2 6.4-3.2 9.6-6.4 16-6.4 22.4-25.6 73.6-9.6 80 6.4 3.2 12.8 9.6 9.6 19.2-9.6 25.6-22.4 140.8 35.2 220.8 35.2 51.2 96 76.8 172.8 80 3.2 0 176 0 179.2-99.2 0-6.4 3.2-12.8 9.6-12.8 0 0 83.2-41.6 32-172.8-3.2-3.2 0-9.6 0-12.8 19.2-28.8 0-83.2-6.4-102.4-3.2-6.4-9.6-25.6-22.4-32-3.2 0-6.4-3.2-9.6 0-6.4 3.2-12.8 0-16-3.2-80-80-57.6-182.4-57.6-188.8s9.6-12.8 16-12.8h41.6c41.6-80 105.6-137.6 176-160l12.8-3.2c83.2-25.6 147.2-41.6 147.2-172.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 153.6-86.4 179.2-169.6 204.8h-16c-96 28.8-147.2 124.8-163.2 153.6-3.2 6.4-9.6 9.6-12.8 9.6h-35.2c-3.2 25.6-3.2 89.6 44.8 140.8 9.6 0 16 0 22.4 3.2 25.6 12.8 38.4 44.8 38.4 48s32 73.6 9.6 121.6c48 128-16 185.6-41.6 201.6-12.8 121.6-204.8 121.6-211.2 121.6-89.6-3.2-153.6-35.2-195.2-92.8-60.8-83.2-54.4-195.2-44.8-236.8-25.6-22.4-9.6-76.8 3.2-112 0-6.4 0-12.8 3.2-16 12.8-38.4 38.4-51.2 57.6-51.2 12.8-19.2 44.8-70.4 51.2-131.2h-19.2c-6.4 0-12.8-3.2-12.8-9.6-28.8-54.4-89.6-128-172.8-150.4l-16-3.2c-83.2-22.4-176-51.2-176-201.6 3.2-12.8 9.6-19.2 19.2-19.2z" />
384
+ <glyph unicode="&#xea76;" glyph-name="video-camera" horiz-adv-x="1216" d="M880-64c25.6 0 48 22.4 48 48v608c0 25.6-22.4 48-48 48h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16-6.4 16-16v-608c0-9.6-6.4-16-16-16h-832c-9.6 0-16 6.4-16 16v608c0 9.6 6.4 16 16 16h64c9.6 0 16 6.4 16 16s-6.4 16-12.8 16h-64c-28.8 0-51.2-22.4-51.2-48v-608c0-25.6 22.4-48 48-48h832zM1190.4 556.8c-16 6.4-32 3.2-44.8-6.4l-147.2-121.6c-6.4-6.4-6.4-16-3.2-22.4 6.4-6.4 16-6.4 22.4-3.2l147.2 121.6c3.2 3.2 6.4 3.2 9.6 3.2 3.2-3.2 9.6-6.4 9.6-16v-448c0-9.6-3.2-12.8-9.6-16-3.2-3.2-6.4 0-9.6 3.2l-147.2 121.6c-6.4 6.4-16 3.2-22.4-3.2s-3.2-16 3.2-22.4l147.2-121.6c6.4-6.4 16-9.6 25.6-9.6 6.4 0 12.8 0 19.2 3.2 16 6.4 25.6 25.6 25.6 44.8v448c0 19.2-9.6 35.2-25.6 44.8zM300.8 608c3.2 0 3.2 0 0 0 3.2 0 3.2 0 0 0h323.2c0 0 0 0 0 0 92.8 3.2 169.6 80 169.6 176s-80 176-176 176c-70.4 0-131.2-41.6-160-102.4-22.4 60.8-83.2 102.4-156.8 102.4-96 0-176-80-176-176s80-176 176-176zM403.2 640c25.6 19.2 44.8 41.6 57.6 70.4 12.8-28.8 32-54.4 57.6-70.4h-115.2zM620.8 928c80 0 144-64 144-144s-64-144-144-144-144 64-144 144 67.2 144 144 144zM300.8 928c80 0 144-64 144-144s-64-144-144-144-144 64-144 144 67.2 144 144 144z" />
385
+ <glyph unicode="&#xea77;" glyph-name="water-drop" d="M515.2-64c0 0 0 0 0 0 115.2 0 220.8 44.8 300.8 124.8 166.4 166.4 166.4 438.4 0 604.8l-291.2 294.4c-6.4 6.4-16 6.4-22.4 0l-291.2-291.2c-166.4-166.4-166.4-438.4 3.2-608 80-80 188.8-124.8 300.8-124.8zM233.6 646.4l278.4 278.4 281.6-281.6c153.6-153.6 153.6-406.4 0-560-73.6-73.6-172.8-115.2-278.4-115.2v0c-105.6 0-204.8 41.6-281.6 118.4-153.6 153.6-153.6 403.2 0 560zM316.8 144c3.2 0 9.6 0 12.8 3.2 6.4 6.4 6.4 16 0 22.4-48 48-76.8 115.2-76.8 182.4 0 48 12.8 92.8 38.4 134.4 3.2 6.4 3.2 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4-25.6-44.8-41.6-96-41.6-150.4 0-76.8 32-150.4 86.4-204.8 3.2-3.2 6.4-3.2 9.6-3.2z" />
386
+ <glyph unicode="&#xea78;" glyph-name="weather-cloud-day" horiz-adv-x="1184" d="M992 524.8c-28.8 137.6-150.4 233.6-291.2 233.6-76.8 0-150.4-28.8-208-83.2-38.4 12.8-80 22.4-121.6 22.4-204.8-3.2-371.2-172.8-371.2-380.8 0-211.2 166.4-380.8 371.2-380.8h515.2c163.2 0 297.6 137.6 297.6 304 0 128-80 240-192 284.8zM700.8 726.4c118.4 0 220.8-80 256-192-22.4 6.4-44.8 9.6-70.4 9.6-67.2 0-128-22.4-179.2-60.8-38.4 80-102.4 144-179.2 179.2 48 41.6 108.8 64 172.8 64zM886.4-32h-515.2c-185.6 0-339.2 156.8-339.2 348.8s153.6 348.8 339.2 348.8c41.6 0 80-6.4 118.4-22.4 3.2 0 3.2-3.2 6.4-3.2 80-32 150.4-96 185.6-179.2-57.6-54.4-92.8-134.4-92.8-220.8 0-9.6 6.4-16 16-16s16 6.4 16 16c0 80 35.2 153.6 89.6 204.8 0 0 3.2 3.2 3.2 3.2 48 41.6 108.8 67.2 172.8 67.2 147.2 0 265.6-121.6 265.6-272s-118.4-275.2-265.6-275.2zM976 700.8c3.2 0 9.6 0 12.8 3.2l70.4 70.4c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-70.4-70.4c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2zM579.2 806.4c3.2-3.2 6.4-6.4 12.8-6.4 3.2 0 6.4 0 6.4 3.2 6.4 3.2 9.6 12.8 6.4 22.4l-44.8 83.2c-3.2 6.4-12.8 9.6-22.4 6.4-6.4-3.2-9.6-12.8-6.4-22.4l48-86.4zM848 950.4l-44.8-118.4c-3.2-9.6 0-16 9.6-19.2 3.2 0 3.2 0 6.4 0 6.4 0 12.8 3.2 16 9.6l44.8 118.4c3.2 9.6 0 16-9.6 19.2s-19.2-3.2-22.4-9.6z" />
387
+ <glyph unicode="&#xea79;" glyph-name="weather-cloud" d="M656 48h-412.8c-134.4 0-243.2 108.8-243.2 243.2s108.8 243.2 243.2 243.2c22.4 0 41.6-3.2 64-9.6 48 150.4 188.8 256 348.8 256 204.8 3.2 368-163.2 368-364.8s-163.2-368-368-368zM243.2 502.4c-115.2 0-211.2-96-211.2-211.2s96-211.2 211.2-211.2h412.8c185.6 0 336 150.4 336 336s-150.4 336-336 336c-150.4 0-284.8-102.4-323.2-249.6 0-3.2-3.2-6.4-6.4-9.6s-9.6-3.2-12.8 0c-22.4 6.4-44.8 9.6-70.4 9.6z" />
388
+ <glyph unicode="&#xea7a;" glyph-name="weather-day-rain" d="M924.8 502.4c60.8 44.8 96 115.2 96 188.8 0 131.2-105.6 236.8-236.8 236.8-105.6 0-198.4-70.4-227.2-169.6-3.2 0-6.4 0-9.6 0-121.6 0-217.6-89.6-233.6-204.8-28.8 12.8-57.6 19.2-89.6 19.2-121.6 0-220.8-99.2-220.8-220.8s99.2-224 220.8-224h544c121.6 0 220.8 99.2 220.8 220.8-3.2 60.8-25.6 115.2-64 153.6zM784 896c112 0 204.8-92.8 204.8-204.8 0-67.2-32-128-89.6-166.4-35.2 25.6-76.8 41.6-121.6 44.8-19.2 96-96 166.4-188.8 185.6 28.8 83.2 105.6 140.8 195.2 140.8zM768 160h-544c-102.4 0-188.8 86.4-188.8 188.8s83.2 188.8 188.8 188.8c32 0 64-9.6 92.8-25.6 6.4-3.2 9.6-3.2 16 0s9.6 6.4 9.6 12.8c3.2 112 92.8 198.4 204.8 198.4 102.4 0 188.8-76.8 201.6-176 0-6.4 9.6-12.8 19.2-12.8 48 0 89.6-16 121.6-44.8 0 0 0-3.2 3.2-3.2 38.4-35.2 64-83.2 64-140.8-3.2-99.2-86.4-185.6-188.8-185.6zM230.4 67.2l-70.4-105.6c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l73.6 105.6c6.4 6.4 3.2 16-3.2 22.4-9.6 3.2-19.2 3.2-25.6-3.2zM569.6 67.2l-73.6-105.6c-6.4-6.4-3.2-16 3.2-22.4 6.4-3.2 9.6-3.2 12.8-3.2 6.4 0 9.6 3.2 12.8 6.4l73.6 105.6c6.4 6.4 3.2 16-3.2 22.4-9.6 3.2-19.2 3.2-25.6-3.2zM400 67.2l-73.6-105.6c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l73.6 105.6c6.4 6.4 3.2 16-3.2 22.4-6.4 3.2-16 3.2-22.4-3.2zM739.2 67.2l-73.6-105.6c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l73.6 105.6c6.4 6.4 3.2 16-3.2 22.4-6.4 3.2-16 3.2-22.4-3.2z" />
389
+ <glyph unicode="&#xea7b;" glyph-name="weather-day-snow" horiz-adv-x="1184" d="M320 137.6c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM451.2 137.6c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM579.2 137.6c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM710.4 137.6c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM400 16c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM531.2 16c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM662.4 16c0-15.906-12.894-28.8-28.8-28.8s-28.8 12.894-28.8 28.8c0 15.906 12.894 28.8 28.8 28.8s28.8-12.894 28.8-28.8zM924.8 374.4c60.8 44.8 96 115.2 96 188.8 0 131.2-105.6 236.8-236.8 236.8-105.6 0-198.4-70.4-227.2-169.6-3.2 0-6.4 0-9.6 0-121.6 0-217.6-89.6-233.6-204.8-28.8 12.8-57.6 19.2-89.6 19.2-121.6 0-220.8-99.2-220.8-220.8s99.2-224 220.8-224c9.6 0 16 6.4 16 16s-6.4 16-16 16c-102.4 0-188.8 86.4-188.8 188.8s83.2 188.8 188.8 188.8c32 0 64-9.6 92.8-25.6 6.4-3.2 9.6-3.2 16 0s9.6 6.4 9.6 12.8c3.2 112 92.8 198.4 204.8 198.4 102.4 0 188.8-76.8 201.6-176 0-6.4 9.6-12.8 19.2-12.8 48 0 89.6-16 121.6-44.8 0 0 0-3.2 3.2-3.2 38.4-35.2 64-83.2 64-140.8 0-105.6-83.2-188.8-188.8-188.8-9.6 0-16-6.4-16-16s6.4-12.8 16-12.8c121.6 0 220.8 99.2 220.8 220.8-3.2 60.8-25.6 115.2-64 153.6zM588.8 627.2c28.8 83.2 105.6 140.8 195.2 140.8 112 0 204.8-92.8 204.8-204.8 0-67.2-32-128-89.6-166.4-35.2 25.6-76.8 41.6-121.6 44.8-19.2 92.8-96 166.4-188.8 185.6zM784 816c9.6 0 16 6.4 16 16v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96c0-9.6 6.4-16 16-16zM985.6 748.8c3.2 0 9.6 0 12.8 3.2l67.2 67.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-67.2-67.2c-6.4-6.4-6.4-16 0-22.4 0 0 3.2-3.2 9.6-3.2zM1152 576h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-6.4 16-16 16zM995.2 393.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-73.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 73.6zM588.8 755.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 76.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-76.8z" />
390
+ <glyph unicode="&#xea7c;" glyph-name="weather-day-windy-rain" d="M262.4 48c-6.4 3.2-16 3.2-22.4-6.4l-51.2-83.2c-3.2-6.4-3.2-16 6.4-22.4 3.2 0 6.4 0 9.6 0 6.4 0 9.6 3.2 12.8 6.4l51.2 83.2c3.2 9.6 3.2 19.2-6.4 22.4zM534.4 48c-6.4 3.2-16 3.2-22.4-6.4l-51.2-83.2c-3.2-6.4-3.2-16 6.4-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l51.2 83.2c3.2 12.8 0 22.4-6.4 25.6zM400 48c-6.4 3.2-16 3.2-22.4-6.4l-51.2-83.2c-3.2-6.4-3.2-16 6.4-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l51.2 83.2c3.2 12.8 0 22.4-6.4 25.6zM668.8 48c-6.4 3.2-16 3.2-22.4-6.4l-51.2-83.2c-3.2-6.4-3.2-16 6.4-22.4 0 0 3.2 0 6.4 0 6.4 0 9.6 3.2 12.8 6.4l51.2 83.2c6.4 9.6 3.2 19.2-3.2 22.4zM892.8 624c0 115.2-92.8 208-208 208-92.8 0-172.8-60.8-198.4-147.2-3.2 0-6.4 0-9.6 0-105.6 0-188.8-76.8-204.8-176-22.4 9.6-48 16-73.6 16-102.4 0-192-96-192-208s89.6-208 192-208h473.6c102.4 0 192 96 192 208 0 54.4-22.4 105.6-57.6 140.8 54.4 38.4 86.4 99.2 86.4 166.4zM688 796.8c96 0 176-76.8 176-176 0-57.6-28.8-112-76.8-144-28.8 22.4-64 38.4-99.2 41.6-16 80-83.2 144-163.2 160 22.4 70.4 86.4 118.4 163.2 118.4zM672 137.6h-470.4c-83.2 0-160 83.2-160 176s76.8 176 160 176c28.8 0 54.4-6.4 80-22.4 6.4-3.2 9.6-3.2 16 0s9.6 6.4 9.6 12.8c3.2 96 80 169.6 176 169.6 86.4 0 160-64 172.8-150.4 0-6.4 9.6-12.8 19.2-12.8 86.4 0 160-80 160-172.8-3.2-92.8-80-176-163.2-176zM688 857.6c9.6 0 16 6.4 16 16v64c0 9.6-6.4 16-16 16s-16-6.4-16-16v-64c0-9.6 6.4-16 16-16zM867.2 790.4c3.2 0 9.6 0 12.8 3.2l51.2 51.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-51.2-51.2c-6.4-6.4-6.4-16 0-22.4 3.2-3.2 6.4-3.2 9.6-3.2zM992 617.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h64c9.6 0 16 6.4 16 16s-6.4 16-16 16zM889.6 460.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l48-48c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-51.2 48zM499.2 803.2c3.2-3.2 9.6-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-51.2 51.2c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l48-51.2z" />
391
+ <glyph unicode="&#xea7d;" glyph-name="weather-flood" d="M960-64h-896c-35.2 0-64 28.8-64 64v464c0 9.6 6.4 16 16 16s16-6.4 16-16c0-83.2 67.2-153.6 153.6-153.6 70.4 0 131.2 48 147.2 115.2 3.2 12.8 28.8 12.8 32 0 16-67.2 76.8-115.2 147.2-115.2s131.2 48 147.2 115.2c3.2 12.8 28.8 12.8 32 0 16-67.2 76.8-115.2 147.2-115.2 83.2 0 153.6 67.2 153.6 153.6 0 9.6 6.4 16 16 16s16-6.4 16-16v-464c0-35.2-28.8-64-64-64zM32 361.6v-361.6c0-19.2 12.8-32 32-32h896c19.2 0 32 12.8 32 32v361.6c-32-48-89.6-80-153.6-80-70.4 0-131.2 38.4-163.2 99.2-32-60.8-92.8-99.2-163.2-99.2s-131.2 38.4-163.2 99.2c-32-60.8-92.8-99.2-163.2-99.2-64-3.2-121.6 28.8-153.6 80zM512 432c-9.6 0-16 6.4-16 16v288c0 9.6 6.4 16 16 16s16-6.4 16-16v-288c0-9.6-6.4-16-16-16zM636.8 720c0 0 0 0 0 0h-249.6c-6.4 0-12.8 3.2-16 9.6s0 12.8 3.2 16l124.8 124.8c6.4 6.4 16 6.4 22.4 0l121.6-121.6c3.2-3.2 6.4-6.4 6.4-12.8 3.2-9.6-3.2-16-12.8-16zM425.6 752h172.8l-86.4 86.4-86.4-86.4z" />
392
+ <glyph unicode="&#xea7e;" glyph-name="weather-night-cloud" d="M1017.6 524.8c-3.2 6.4-6.4 9.6-12.8 9.6-217.6 9.6-393.6 182.4-406.4 400 0 6.4-3.2 9.6-9.6 12.8s-9.6 3.2-16 0c-92.8-60.8-147.2-160-147.2-268.8 0-35.2 6.4-73.6 19.2-105.6-83.2-35.2-147.2-105.6-176-195.2-19.2 3.2-38.4 6.4-54.4 6.4-118.4 0-214.4-92.8-214.4-208 0-118.4 92.8-208 214.4-208h374.4c176 0 307.2 134.4 307.2 313.6 0 35.2-6.4 70.4-16 102.4 57.6 25.6 105.6 70.4 140.8 124.8 0 6.4 0 12.8-3.2 16zM585.6 0h-371.2c-102.4 0-182.4 76.8-182.4 176 0 96 80 176 182.4 176 19.2 0 38.4-3.2 57.6-9.6 3.2 0 9.6 0 12.8 0 3.2 3.2 6.4 6.4 9.6 9.6 32 124.8 147.2 214.4 278.4 214.4 124.8 0 227.2-73.6 268.8-176 0 0 0 0 0 0s0 0 0 0c12.8-32 19.2-67.2 19.2-105.6 0-163.2-118.4-284.8-275.2-284.8zM864 416c-51.2 108.8-160 182.4-291.2 182.4-35.2 0-67.2-6.4-99.2-16-9.6 32-16 60.8-16 96 0 89.6 41.6 172.8 112 227.2 25.6-211.2 192-377.6 406.4-400-28.8-38.4-67.2-70.4-112-89.6z" />
393
+ <glyph unicode="&#xea7f;" glyph-name="weather-rain-alt" d="M217.6 156.8c0 0-3.2 0-3.2 0-121.6 12.8-214.4 118.4-214.4 240 0 134.4 108.8 243.2 243.2 243.2 22.4 0 41.6-3.2 64-9.6 48 150.4 188.8 256 348.8 256 204.8 0 368-163.2 368-364.8 0-140.8-76.8-265.6-201.6-326.4-6.4-3.2-16 0-22.4 6.4-3.2 6.4 0 16 6.4 22.4 115.2 57.6 185.6 172.8 185.6 297.6 0 185.6-150.4 336-336 336-150.4 0-284.8-102.4-323.2-249.6 0-3.2-3.2-6.4-6.4-9.6s-9.6-3.2-12.8 0c-22.4 6.4-48 9.6-70.4 9.6-115.2 0-211.2-96-211.2-211.2 0-105.6 80-195.2 185.6-208 9.6 0 16-6.4 16-16s-6.4-16-16-16zM332.8 150.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM467.2 150.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM598.4 150.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM729.6 150.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM400-22.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM531.2-22.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16zM665.6-22.4c-9.6 0-16 6.4-16 16v76.8c0 9.6 6.4 16 16 16s16-6.4 16-16v-76.8c0-9.6-6.4-16-16-16z" />
394
+ <glyph unicode="&#xea80;" glyph-name="weather-rain" d="M1024 553.6c0 201.6-160 361.6-368 361.6-160 0-300.8-105.6-348.8-256-22.4 6.4-44.8 9.6-64 9.6-134.4-3.2-243.2-108.8-243.2-240 0-121.6 92.8-220.8 214.4-233.6l-73.6-105.6c-6.4-6.4-3.2-16 3.2-22.4 6.4-3.2 9.6-3.2 12.8-3.2 6.4 0 9.6 3.2 12.8 6.4l83.2 121.6h131.2l-144-204.8c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l153.6 224h131.2l-44.8-64c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l57.6 83.2h83.2c0 0 3.2 0 3.2 0 16 0 35.2 3.2 51.2 6.4l-147.2-211.2c-6.4-6.4-3.2-16 3.2-22.4 3.2-3.2 6.4-3.2 9.6-3.2 6.4 0 9.6 3.2 12.8 6.4l169.6 243.2c147.2 44.8 249.6 179.2 249.6 342.4zM761.6 240c-3.2 0-3.2 0 0 0-35.2-9.6-67.2-16-105.6-16h-412.8c-118.4 0-211.2 89.6-211.2 204.8s96 208 211.2 208c22.4 0 44.8-3.2 67.2-12.8 3.2 0 9.6 0 12.8 0 3.2 3.2 6.4 6.4 6.4 9.6 38.4 147.2 172.8 246.4 323.2 246.4 192 0 339.2-144 339.2-326.4 0-150.4-96-272-230.4-313.6z" />
395
+ <glyph unicode="&#xea81;" glyph-name="weather-snow" d="M246.4 57.6c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-22.4-44.8-44.8-44.8zM246.4 115.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-6.4 12.8-12.8 12.8zM400 57.6c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 48-19.2 48-44.8-22.4-44.8-48-44.8zM400 115.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8c6.4 0 12.8 6.4 12.8 12.8s-3.2 12.8-12.8 12.8zM556.8 57.6c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM556.8 115.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-3.2 12.8-12.8 12.8zM713.6 57.6c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM713.6 115.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-6.4 12.8-12.8 12.8zM323.2-60.8c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM323.2-3.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-6.4 12.8-12.8 12.8zM480-60.8c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM480-3.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-6.4 12.8-12.8 12.8zM636.8-60.8c-25.6 0-44.8 19.2-44.8 44.8s19.2 44.8 44.8 44.8 44.8-19.2 44.8-44.8-19.2-44.8-44.8-44.8zM636.8-3.2c-6.4 0-12.8-6.4-12.8-12.8s6.4-12.8 12.8-12.8 12.8 6.4 12.8 12.8-6.4 12.8-12.8 12.8zM649.6 192h-412.8c-131.2 0-243.2 115.2-243.2 249.6s108.8 246.4 243.2 246.4c25.6 0 44.8-3.2 64-6.4 48 153.6 188.8 256 348.8 256 201.6 0 368-166.4 368-374.4 0-204.8-166.4-371.2-368-371.2zM236.8 652.8c-115.2 0-211.2-96-211.2-214.4s96-217.6 211.2-217.6h412.8c182.4 0 336 156.8 336 339.2 0 185.6-153.6 342.4-336 342.4-150.4 0-284.8-102.4-323.2-249.6 0-3.2-3.2-6.4-6.4-9.6s-9.6-3.2-12.8 0c-22.4 6.4-44.8 9.6-70.4 9.6z" />
396
+ <glyph unicode="&#xea82;" glyph-name="weather-sun-rain" horiz-adv-x="1184" d="M348.8 70.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4 0 9.6 0 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c3.2 6.4 0 16-6.4 19.2zM688 70.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c6.4 9.6 3.2 19.2-3.2 22.4zM518.4 70.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c6.4 9.6 3.2 19.2-3.2 22.4zM316.8 230.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4 0 9.6 0 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c3.2 6.4 0 16-6.4 19.2zM656 230.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c6.4 9.6 3.2 19.2-3.2 22.4zM486.4 230.4c-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2 0 6.4-3.2 6.4-3.2 6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c6.4 9.6 3.2 19.2-3.2 22.4zM777.6 128c6.4 0 9.6 3.2 12.8 9.6l41.6 73.6c3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 3.2-22.4-6.4l-41.6-73.6c-3.2-6.4 0-16 6.4-22.4 3.2-3.2 6.4-3.2 9.6-3.2zM924.8 374.4c60.8 44.8 96 115.2 96 188.8 0 131.2-105.6 236.8-236.8 236.8-105.6 0-198.4-70.4-227.2-169.6-3.2 0-6.4 0-9.6 0-121.6 0-217.6-89.6-233.6-204.8-28.8 12.8-57.6 19.2-89.6 19.2-121.6 0-220.8-99.2-220.8-220.8s99.2-224 220.8-224c9.6 0 16 6.4 16 16s-6.4 16-16 16c-102.4 0-188.8 86.4-188.8 188.8s83.2 188.8 188.8 188.8c32 0 64-9.6 92.8-25.6 6.4-3.2 9.6-3.2 16 0s9.6 6.4 9.6 12.8c3.2 112 92.8 198.4 204.8 198.4 102.4 0 188.8-76.8 201.6-176 0-6.4 9.6-12.8 19.2-12.8 48 0 89.6-16 121.6-44.8 0 0 0-3.2 3.2-3.2 38.4-35.2 64-83.2 64-140.8 0-105.6-83.2-188.8-188.8-188.8-9.6 0-16-6.4-16-16s6.4-12.8 16-12.8c121.6 0 220.8 99.2 220.8 220.8-3.2 60.8-25.6 115.2-64 153.6zM588.8 627.2c28.8 83.2 105.6 140.8 195.2 140.8 112 0 204.8-92.8 204.8-204.8 0-67.2-32-128-89.6-166.4-35.2 25.6-76.8 41.6-121.6 44.8-19.2 92.8-96 166.4-188.8 185.6zM784 816c9.6 0 16 6.4 16 16v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96c0-9.6 6.4-16 16-16zM985.6 748.8c3.2 0 9.6 0 12.8 3.2l67.2 67.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-67.2-67.2c-6.4-6.4-6.4-16 0-22.4 0 0 3.2-3.2 9.6-3.2zM1152 576h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-6.4 16-16 16zM995.2 393.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-73.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 73.6zM588.8 755.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 76.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-76.8z" />
397
+ <glyph unicode="&#xea83;" glyph-name="weather-sun" d="M496 160c-160 0-288 128-288 288s128 288 288 288 288-128 288-288-128-288-288-288zM496 704c-140.8 0-256-115.2-256-256s115.2-256 256-256 256 115.2 256 256-115.2 256-256 256zM960 416h-128c-9.6 0-16 6.4-16 16s6.4 16 16 16h128c9.6 0 16-6.4 16-16s-6.4-16-16-16zM160 416h-128c-9.6 0-16 6.4-16 16s6.4 16 16 16h128c9.6 0 16-6.4 16-16s-6.4-16-16-16zM496-48c-9.6 0-16 6.4-16 16v128c0 9.6 6.4 16 16 16s16-6.4 16-16v-128c0-9.6-6.4-16-16-16zM496 784c-9.6 0-16 6.4-16 16v128c0 9.6 6.4 16 16 16s16-6.4 16-16v-128c0-9.6-6.4-16-16-16zM156.8 92.8c-3.2 0-9.6 0-12.8 3.2-6.4 6.4-6.4 16 0 22.4l89.6 89.6c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-89.6-89.6c-3.2-3.2-6.4-3.2-9.6-3.2zM745.6 681.6c-3.2 0-9.6 0-12.8 3.2-6.4 6.4-6.4 16 0 22.4l92.8 92.8c6.4 6.4 16 6.4 22.4 0s6.4-16 0-22.4l-89.6-89.6c-6.4-6.4-9.6-6.4-12.8-6.4zM224 681.6c-3.2 0-9.6 0-12.8 3.2l-89.6 92.8c-6.4 3.2-6.4 16 0 22.4s16 6.4 22.4 0l89.6-89.6c6.4-6.4 6.4-16 0-22.4 0-6.4-6.4-6.4-9.6-6.4zM835.2 70.4c-3.2 0-9.6 0-12.8 3.2l-89.6 89.6c-6.4 6.4-6.4 16 0 22.4s16 6.4 22.4 0l89.6-89.6c6.4-6.4 6.4-16 0-22.4 0-3.2-6.4-3.2-9.6-3.2z" />
398
+ <glyph unicode="&#xea84;" glyph-name="weather-sunny-day" horiz-adv-x="1184" d="M924.8 310.4c60.8 44.8 96 115.2 96 188.8 0 131.2-105.6 236.8-236.8 236.8-105.6 0-198.4-70.4-227.2-169.6-3.2 0-6.4 0-9.6 0-121.6 0-217.6-89.6-233.6-204.8-28.8 12.8-57.6 19.2-89.6 19.2-121.6 0-220.8-99.2-220.8-220.8s99.2-224 220.8-224h544c121.6 0 220.8 99.2 220.8 220.8-3.2 60.8-25.6 115.2-64 153.6zM784 704c112 0 204.8-92.8 204.8-204.8 0-67.2-32-128-89.6-166.4-35.2 25.6-76.8 41.6-121.6 44.8-19.2 96-96 166.4-188.8 185.6 28.8 83.2 105.6 140.8 195.2 140.8zM768-32h-544c-102.4 0-188.8 86.4-188.8 188.8s83.2 188.8 188.8 188.8c32 0 64-9.6 92.8-25.6 6.4-3.2 9.6-3.2 16 0s9.6 6.4 9.6 12.8c3.2 112 92.8 198.4 204.8 198.4 102.4 0 188.8-76.8 201.6-176 0-6.4 9.6-12.8 19.2-12.8 48 0 89.6-16 121.6-44.8 0 0 0-3.2 3.2-3.2 38.4-35.2 64-83.2 64-140.8-3.2-99.2-86.4-185.6-188.8-185.6zM784 752c9.6 0 16 6.4 16 16v96c0 9.6-6.4 16-16 16s-16-6.4-16-16v-96c0-9.6 6.4-16 16-16zM985.6 684.8c3.2 0 9.6 0 12.8 3.2l67.2 67.2c6.4 6.4 6.4 16 0 22.4s-16 6.4-22.4 0l-67.2-67.2c-6.4-6.4-6.4-16 0-22.4 0 0 3.2-3.2 9.6-3.2zM1152 512h-96c-9.6 0-16-6.4-16-16s6.4-16 16-16h96c9.6 0 16 6.4 16 16s-6.4 16-16 16zM995.2 329.6c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-73.6c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 73.6zM588.8 691.2c3.2-3.2 6.4-3.2 12.8-3.2s9.6 0 12.8 3.2c6.4 6.4 6.4 16 0 22.4l-76.8 76.8c-6.4 6.4-16 6.4-22.4 0s-6.4-16 0-22.4l73.6-76.8z" />
399
+ <glyph unicode="&#xea85;" glyph-name="weather-thunder" d="M662.4 179.2c-9.6 0-16 6.4-16 16s6.4 16 16 16c182.4 0 329.6 147.2 329.6 329.6s-147.2 329.6-329.6 329.6c-156.8 0-294.4-112-323.2-268.8 0-6.4-3.2-9.6-9.6-12.8-3.2-3.2-9.6-3.2-12.8 0-28.8 12.8-57.6 19.2-86.4 19.2-108.8 0-198.4-89.6-198.4-198.4s89.6-198.4 198.4-198.4h102.4c9.6 0 16-6.4 16-16s-6.4-16-16-16h-102.4c-128 0-230.4 102.4-230.4 230.4s102.4 230.4 230.4 230.4c28.8 0 54.4-6.4 80-16 38.4 160 182.4 275.2 352 275.2 198.4 3.2 361.6-160 361.6-358.4 0-201.6-163.2-361.6-361.6-361.6zM406.4-54.4c-3.2 0-6.4 0-9.6 3.2-6.4 6.4-9.6 16-3.2 22.4l160 208h-137.6c-6.4 0-12.8 3.2-16 9.6s-3.2 12.8 3.2 16l147.2 182.4c6.4 6.4 16 6.4 22.4 3.2 6.4-6.4 6.4-16 3.2-22.4l-128-156.8h134.4c6.4 0 12.8-3.2 12.8-9.6 3.2-6.4 3.2-12.8-3.2-16l-179.2-233.6c3.2-3.2-3.2-6.4-6.4-6.4z" />
400
+ <glyph unicode="&#xea86;" glyph-name="weather-windy-rain" d="M332.8 608c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM672 608c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM502.4 608c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM544 480c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l41.6 73.6c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-6.4-6.4-12.8-9.6-16-9.6zM374.4 480c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l41.6 73.6c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-6.4-6.4-12.8-9.6-16-9.6zM300.8 736c-3.2 0-6.4 0-9.6 3.2-6.4 3.2-9.6 12.8-6.4 19.2l41.6 73.6c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-70.4c-3.2-6.4-9.6-9.6-12.8-9.6zM640 736c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM470.4 736c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM809.6 736c-3.2 0-6.4 0-6.4 3.2-6.4 3.2-9.6 12.8-6.4 22.4l38.4 70.4c3.2 6.4 12.8 9.6 22.4 6.4 6.4-3.2 9.6-12.8 6.4-22.4l-41.6-73.6c-3.2-3.2-9.6-6.4-12.8-6.4zM774.4 256c-73.6 0-163.2 16-268.8 64-265.6 121.6-464 3.2-464 0-9.6-3.2-19.2 0-22.4 6.4s-3.2 16 6.4 22.4c9.6 6.4 214.4 128 496 0 294.4-134.4 460.8-3.2 464-3.2 6.4 6.4 16 3.2 22.4-3.2s3.2-16-3.2-22.4c-6.4 0-86.4-64-230.4-64zM774.4 96c-73.6 0-163.2 16-268.8 64-265.6 121.6-464 3.2-464 0-9.6-3.2-19.2 0-22.4 6.4s-3.2 16 6.4 22.4c9.6 6.4 214.4 128 496 0 294.4-134.4 460.8-3.2 464-3.2 6.4 6.4 16 3.2 22.4-3.2s3.2-16-3.2-22.4c-6.4 0-86.4-64-230.4-64zM774.4-64c-73.6 0-163.2 16-268.8 64-265.6 121.6-464 3.2-464 0-9.6-3.2-19.2 0-22.4 6.4s-3.2 16 6.4 22.4c9.6 6.4 214.4 128 496 0 294.4-134.4 460.8-3.2 464-3.2 6.4 6.4 16 3.2 22.4-3.2s3.2-16-3.2-22.4c-6.4 0-86.4-64-230.4-64z" />
401
+ <glyph unicode="&#xea87;" glyph-name="webcam1" horiz-adv-x="768" d="M384 960c-211.2 0-384-172.8-384-384s172.8-384 384-384 384 172.8 384 384-172.8 384-384 384zM384 224c-195.2 0-352 156.8-352 352s156.8 352 352 352 352-156.8 352-352-156.8-352-352-352zM384 752c-96 0-176-80-176-176s80-176 176-176 176 80 176 176-80 176-176 176zM384 432c-80 0-144 64-144 144s64 144 144 144 144-64 144-144-64-144-144-144zM352 656c-28.8 0-48-22.4-48-48 0-9.6 6.4-16 16-16s16 6.4 16 16c0 9.6 6.4 16 16 16s16 6.4 16 16-6.4 16-16 16zM729.6-38.4c9.6 12.8 9.6 28.8 0 44.8l-80 147.2c-3.2 6.4-12.8 9.6-22.4 6.4-6.4-3.2-9.6-12.8-6.4-22.4l80-147.2c3.2-6.4 0-9.6 0-12.8-3.2-3.2-9.6-9.6-16-9.6h-601.6c-9.6 0-12.8 3.2-16 9.6-3.2 3.2-3.2 6.4 0 12.8l80 147.2c3.2 6.4 0 16-6.4 22.4-6.4 3.2-16 0-22.4-6.4l-80-147.2c-6.4-12.8-6.4-32 0-44.8 9.6-16 25.6-25.6 44.8-25.6h601.6c19.2 0 35.2 9.6 44.8 25.6z" />
402
+ <glyph unicode="&#xea88;" glyph-name="webcam2" horiz-adv-x="864" d="M608 544c0 96-80 176-176 176s-176-80-176-176 80-176 176-176 176 80 176 176zM288 544c0 80 64 144 144 144s144-64 144-144-64-144-144-144-144 64-144 144zM6.4-25.6c12.8-25.6 35.2-38.4 64-38.4 9.6 0 22.4 3.2 32 6.4 0 0 153.6 73.6 348.8 73.6 112 0 217.6-25.6 310.4-73.6 35.2-16 76.8-3.2 96 32s3.2 76.8-28.8 96c-80 41.6-166.4 67.2-256 80 163.2 57.6 278.4 211.2 278.4 393.6 0 230.4-185.6 416-416 416s-416-185.6-416-416c0-185.6 121.6-342.4 288-396.8-147.2-22.4-249.6-70.4-262.4-76.8-41.6-16-54.4-57.6-38.4-96zM48 544c0 211.2 172.8 384 384 384s384-172.8 384-384-172.8-384-384-384-384 172.8-384 384zM54.4 41.6c6.4 3.2 176 86.4 393.6 86.4 131.2 0 252.8-28.8 361.6-86.4 19.2-9.6 25.6-35.2 16-54.4s-35.2-25.6-51.2-16c-96 51.2-208 76.8-326.4 76.8-204.8 0-361.6-76.8-361.6-76.8-19.2-9.6-41.6 0-51.2 19.2s0 41.6 19.2 51.2zM480 544c0-26.51-21.49-48-48-48s-48 21.49-48 48c0 26.51 21.49 48 48 48s48-21.49 48-48z" />
403
+ <glyph unicode="&#xea89;" glyph-name="weight-scale" d="M752 723.2c0 131.2-108.8 240-240 240s-240-105.6-240-240 108.8-240 240-240 240 108.8 240 240zM512 515.2c-115.2 0-208 92.8-208 208s92.8 208 208 208 208-92.8 208-208-92.8-208-208-208zM185.6 755.2c9.6 0 16 6.4 16 16s-6.4 16-16 16c0 0-3.2 0-3.2 0-124.8-32-204.8-153.6-176-275.2l83.2-393.6c22.4-105.6 118.4-182.4 233.6-182.4h371.2c112 0 208 73.6 230.4 176l96 403.2c16 64 3.2 131.2-35.2 185.6s-99.2 92.8-166.4 99.2c-9.6 0-16-6.4-19.2-12.8 0-9.6 6.4-16 12.8-19.2 57.6-6.4 112-38.4 144-86.4s44.8-102.4 32-160l-96-403.2c-22.4-86.4-102.4-150.4-201.6-150.4h-368c-99.2 0-182.4 64-201.6 156.8l-86.4 393.6c-22.4 105.6 44.8 211.2 150.4 236.8zM528 784c-9.6 0-16-6.4-16-16v-96c0-9.6 6.4-16 16-16s16 6.4 16 16v96c0 9.6-6.4 16-16 16zM512 288v-224c0-9.6 6.4-16 16-16s16 6.4 16 16v224c0 9.6-6.4 16-16 16s-16-6.4-16-16z" />
404
+ <glyph unicode="&#xea8a;" glyph-name="windows" d="M512-64c281.6 0 512 230.4 512 512s-230.4 512-512 512-512-230.4-512-512 230.4-512 512-512zM512 928c265.6 0 480-214.4 480-480s-214.4-480-480-480-480 214.4-480 480 214.4 480 480 480zM272 480h128c25.6 0 48 22.4 48 48v137.6c0 28.8-25.6 51.2-54.4 48l-128-16c-22.4-3.2-41.6-25.6-41.6-48v-121.6c0-25.6 22.4-48 48-48zM256 649.6c0 6.4 6.4 16 12.8 16l131.2 19.2c9.6 0 16-6.4 16-16v-137.6c0-9.6-6.4-16-16-16h-128c-9.6-3.2-16 3.2-16 12.8v121.6zM265.6 240l128-16c3.2 0 3.2 0 6.4 0 12.8 0 25.6 6.4 35.2 12.8 9.6 9.6 12.8 22.4 12.8 35.2v128c0 25.6-22.4 48-48 48h-128c-25.6 0-48-22.4-48-48v-112c0-22.4 19.2-44.8 41.6-48zM256 400c0 9.6 6.4 16 16 16h128c9.6 0 16-6.4 16-16v-128c0-3.2-3.2-9.6-3.2-12.8-3.2-3.2-9.6-3.2-12.8-3.2l-131.2 16c-6.4 0-12.8 9.6-12.8 16v112zM521.6 211.2l192-25.6c3.2 0 3.2 0 6.4 0 12.8 0 25.6 6.4 35.2 12.8 9.6 9.6 12.8 22.4 12.8 35.2v166.4c0 25.6-22.4 48-48 48h-192c-25.6 0-48-22.4-48-48v-140.8c0-22.4 19.2-44.8 41.6-48zM512 400c0 9.6 6.4 16 16 16h192c9.6 0 16-6.4 16-16v-166.4c0-3.2-3.2-9.6-3.2-12.8-3.2-3.2-6.4-3.2-12.8-3.2l-195.2 25.6c-6.4 0-12.8 6.4-12.8 16v140.8zM528 480h192c25.6 0 48 22.4 48 48v176c0 28.8-25.6 51.2-54.4 48l-192-25.6c-22.4-3.2-41.6-25.6-41.6-48v-150.4c0-25.6 22.4-48 48-48zM512 678.4c0 6.4 6.4 16 12.8 16l195.2 25.6c9.6 0 16-6.4 16-16v-176c0-9.6-6.4-16-16-16h-192c-9.6 0-16 6.4-16 16v150.4z" />
405
+ <glyph unicode="&#xea8b;" glyph-name="wine-glass2" horiz-adv-x="1120" d="M960 963.2c-89.6 0-160-73.6-160-160 0-9.6 0-22.4 3.2-32h-419.2c0 3.2-3.2 3.2-3.2 6.4l-160 172.8c-6.4 3.2-19.2 9.6-35.2 9.6h-169.6c-9.6 0-16-6.4-16-16s6.4-16 16-16h169.6c6.4 0 9.6-3.2 12.8-6.4l144-153.6h-25.6c-22.4 0-38.4-12.8-44.8-28.8-9.6-19.2-3.2-38.4 9.6-54.4l291.2-284.8c6.4-6.4 12.8-9.6 19.2-12.8 0 0 0-3.2 0-3.2v-416h-160c-9.6 0-16-6.4-16-16s6.4-16 16-16h352c9.6 0 16 6.4 16 16s-6.4 16-16 16h-160v416c0 3.2 0 3.2 0 6.4 6.4 3.2 12.8 6.4 19.2 12.8l249.6 256c19.2-12.8 41.6-19.2 67.2-19.2 89.6 0 160 73.6 160 160s-70.4 163.2-160 163.2zM896 710.4l-278.4-284.8c-3.2-3.2-6.4-6.4-12.8-6.4-3.2 0-9.6 3.2-9.6 3.2l-291.2 284.8c-6.4 9.6-3.2 16-3.2 19.2s3.2 9.6 16 9.6h569.6c9.6 0 12.8-6.4 16-9.6-3.2-3.2 0-9.6-6.4-16zM960 672c-16 0-32 3.2-48 9.6l6.4 6.4c12.8 12.8 16 35.2 9.6 51.2s-22.4 28.8-44.8 28.8h-35.2c0 0 0 0 0 0 0 9.6-9.6 22.4-9.6 32 0 70.4 54.4 128 124.8 128s128-57.6 128-128c0-70.4-60.8-128-131.2-128z" />
406
+ <glyph unicode="&#xea8c;" glyph-name="wine-glass" horiz-adv-x="864" d="M860.8 931.2c-6.4 16-25.6 28.8-44.8 28.8h-617.6c0 0-3.2 0-3.2 0s-3.2 0-3.2 0h-144c-19.2 0-35.2-9.6-44.8-28.8-6.4-19.2-3.2-38.4 9.6-51.2l387.2-406.4v-441.6h-64c-9.6 0-16-6.4-16-16s6.4-16 16-16h160c9.6 0 16 6.4 16 16s-6.4 16-16 16h-64v441.6l419.2 403.2c12.8 12.8 16 35.2 9.6 54.4zM828.8 899.2l-412.8-396.8-377.6 400c-9.6 6.4-6.4 12.8-3.2 16s3.2 9.6 12.8 9.6h137.6l131.2-118.4c6.4-6.4 16-6.4 22.4 0s6.4 16 0 22.4l-105.6 96h582.4c9.6 0 16-6.4 16-9.6s3.2-9.6-3.2-19.2zM272-32c-9.6 0-16-6.4-16-16s6.4-16 16-16h288c9.6 0 16 6.4 16 16s-6.4 16-16 16h-288z" />
407
+ <glyph unicode="&#xea8d;" glyph-name="worker-cap" horiz-adv-x="992" d="M880 329.6v22.4h32c44.8 0 80 35.2 80 83.2 0 44.8-35.2 80-76.8 80-25.6 163.2-140.8 297.6-294.4 345.6-12.8 57.6-64 99.2-124.8 99.2s-112-41.6-124.8-99.2c-156.8-51.2-268.8-182.4-294.4-345.6-41.6-3.2-76.8-38.4-76.8-80 0-48 35.2-83.2 80-83.2h32v-22.4c0-217.6 172.8-393.6 384-393.6s384 176 384 393.6zM32 432c0 28.8 22.4 48 48 48h9.6c9.6 0 16 6.4 16 16 19.2 150.4 134.4 278.4 262.4 329.6v-73.6c0-9.6 6.4-16 16-16s16 6.4 16 16v80c0 3.2 0 6.4 0 12.8 0 0 0 0 0 3.2 6.4 44.8 48 80 96 80s86.4-35.2 96-80c0 0 0 0 0-3.2s0-6.4 0-12.8v-80c0-9.6 6.4-16 16-16s16 6.4 16 16v73.6c128-48 243.2-176 262.4-329.6 0-9.6 6.4-16 16-16h9.6c25.6 0 48-19.2 48-48s-22.4-48-48-48h-832c-25.6 0-48 19.2-48 48zM496-32c-195.2 0-352 163.2-352 361.6v22.4h704v-22.4c0-198.4-156.8-361.6-352-361.6zM288 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM352 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM572.8 288c0-35.2 28.8-64 64-64s64 28.8 64 64-28.8 64-64 64-64-28.8-64-64zM636.8 320c19.2 0 32-12.8 32-32s-12.8-32-32-32-32 12.8-32 32 16 32 32 32zM576 160c-9.6 0-16-6.4-16-16 0-25.6-28.8-48-64-48s-64 22.4-64 48c0 9.6-6.4 16-16 16s-16-6.4-16-16c0-44.8 41.6-80 96-80s96 35.2 96 80c0 9.6-6.4 16-16 16z" />
408
+ <glyph unicode="&#xea8e;" glyph-name="youtube" d="M512 960c-281.6 0-512-230.4-512-512s230.4-512 512-512 512 230.4 512 512-230.4 512-512 512zM512-32c-265.6 0-480 214.4-480 480s214.4 480 480 480 480-214.4 480-480-214.4-480-480-480zM713.6 620.8c-25.6 9.6-160 9.6-201.6 9.6-80 0-150.4-3.2-185.6-6.4-19.2-3.2-38.4-12.8-51.2-28.8-38.4-44.8-28.8-243.2-12.8-288 9.6-22.4 25.6-38.4 48-48 32-9.6 169.6-9.6 198.4-9.6 57.6 0 188.8 0 214.4 16 16 9.6 25.6 19.2 35.2 35.2 22.4 51.2 22.4 224 3.2 275.2-9.6 19.2-25.6 35.2-48 44.8zM729.6 313.6c-3.2-9.6-9.6-16-19.2-19.2-12.8-6.4-86.4-9.6-201.6-9.6-105.6 0-172.8 3.2-188.8 9.6-12.8 3.2-22.4 12.8-28.8 25.6-16 44.8-19.2 227.2 6.4 256 9.6 9.6 19.2 16 32 16 35.2 3.2 105.6 6.4 182.4 6.4 108.8 0 179.2-3.2 188.8-9.6 12.8-6.4 22.4-12.8 28.8-25.6 16-41.6 19.2-208 0-249.6zM624 460.8c-16 9.6-35.2 19.2-54.4 28.8-38.4 22.4-73.6 41.6-102.4 51.2-6.4 3.2-9.6 0-16-3.2-3.2-3.2-6.4-6.4-6.4-12.8v-160c0-6.4 3.2-9.6 6.4-12.8s6.4-3.2 9.6-3.2c3.2 0 3.2 0 6.4 0 32 16 67.2 35.2 102.4 51.2 16 9.6 35.2 19.2 51.2 28.8 6.4 3.2 9.6 9.6 9.6 12.8s0 16-6.4 19.2zM556.8 432c-25.6-12.8-51.2-28.8-76.8-41.6v108.8c22.4-9.6 48-25.6 76.8-41.6 9.6-6.4 19.2-9.6 28.8-16-9.6 0-19.2-3.2-28.8-9.6z" />
409
+ </font></defs></svg>
assets/fonts/Happy-Addons-Icon.ttf ADDED
Binary file
assets/fonts/Happy-Addons-Icon.woff ADDED
Binary file
assets/fonts/style.css ADDED
@@ -0,0 +1,1223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @font-face {
2
+ font-family: 'Happy Icons';
3
+ src: url('./Happy-Addons-Icon.eot?vf4zr6');
4
+ src: url('./Happy-Addons-Icon.eot?vf4zr6#iefix') format('embedded-opentype'),
5
+ url('./Happy-Addons-Icon.ttf?vf4zr6') format('truetype'),
6
+ url('./Happy-Addons-Icon.woff?vf4zr6') format('woff'),
7
+ url('./Happy-Addons-Icon.svg?vf4zr6#Happy-Addons-Icon') format('svg');
8
+ font-weight: normal;
9
+ font-style: normal;
10
+ }
11
+
12
+ .hm {
13
+ /* use !important to prevent issues with browser extensions that change fonts */
14
+ font-family: 'Happy Icons' !important;
15
+ speak: none;
16
+ font-style: normal;
17
+ font-weight: normal;
18
+ font-variant: normal;
19
+ text-transform: none;
20
+ line-height: 1;
21
+
22
+ /* Better Font Rendering =========== */
23
+ -webkit-font-smoothing: antialiased;
24
+ -moz-osx-font-smoothing: grayscale;
25
+ }
26
+
27
+ .hm-3d-rotate:before {
28
+ content: "\e900";
29
+ }
30
+ .hm-degree:before {
31
+ content: "\e901";
32
+ }
33
+ .hm-accordion-horizontal:before {
34
+ content: "\e902";
35
+ }
36
+ .hm-accordion-vertical:before {
37
+ content: "\e903";
38
+ }
39
+ .hm-alarm-clock:before {
40
+ content: "\e904";
41
+ }
42
+ .hm-alien-gun:before {
43
+ content: "\e905";
44
+ }
45
+ .hm-alien:before {
46
+ content: "\e906";
47
+ }
48
+ .hm-anchor:before {
49
+ content: "\e907";
50
+ }
51
+ .hm-android:before {
52
+ content: "\e908";
53
+ }
54
+ .hm-angle-down:before {
55
+ content: "\e909";
56
+ }
57
+ .hm-angle-left:before {
58
+ content: "\e90a";
59
+ }
60
+ .hm-angle-right:before {
61
+ content: "\e90b";
62
+ }
63
+ .hm-angle-up:before {
64
+ content: "\e90c";
65
+ }
66
+ .hm-apple:before {
67
+ content: "\e90d";
68
+ }
69
+ .hm-arrow-left:before {
70
+ content: "\e90e";
71
+ }
72
+ .hm-arrow-right:before {
73
+ content: "\e90f";
74
+ }
75
+ .hm-arrow-zoom-out:before {
76
+ content: "\e910";
77
+ }
78
+ .hm-arrow-corner:before {
79
+ content: "\e911";
80
+ }
81
+ .hm-arrow-down:before {
82
+ content: "\e912";
83
+ }
84
+ .hm-arrow-left1:before {
85
+ content: "\e913";
86
+ }
87
+ .hm-arrow-right1:before {
88
+ content: "\e914";
89
+ }
90
+ .hm-arrow-up:before {
91
+ content: "\e915";
92
+ }
93
+ .hm-article:before {
94
+ content: "\e916";
95
+ }
96
+ .hm-avatar-man:before {
97
+ content: "\e917";
98
+ }
99
+ .hm-avatar-woman:before {
100
+ content: "\e918";
101
+ }
102
+ .hm-badge1:before {
103
+ content: "\e919";
104
+ }
105
+ .hm-badge2:before {
106
+ content: "\e91a";
107
+ }
108
+ .hm-badge3:before {
109
+ content: "\e91b";
110
+ }
111
+ .hm-bamboo:before {
112
+ content: "\e91c";
113
+ }
114
+ .hm-basketball:before {
115
+ content: "\e91d";
116
+ }
117
+ .hm-battery:before {
118
+ content: "\e91e";
119
+ }
120
+ .hm-beach-seat:before {
121
+ content: "\e91f";
122
+ }
123
+ .hm-bell:before {
124
+ content: "\e920";
125
+ }
126
+ .hm-bicycle:before {
127
+ content: "\e921";
128
+ }
129
+ .hm-blog-content:before {
130
+ content: "\e922";
131
+ }
132
+ .hm-bluetooth:before {
133
+ content: "\e923";
134
+ }
135
+ .hm-board:before {
136
+ content: "\e924";
137
+ }
138
+ .hm-body:before {
139
+ content: "\e925";
140
+ }
141
+ .hm-bomb:before {
142
+ content: "\e926";
143
+ }
144
+ .hm-bond-hand:before {
145
+ content: "\e927";
146
+ }
147
+ .hm-bond:before {
148
+ content: "\e928";
149
+ }
150
+ .hm-bonsai:before {
151
+ content: "\e929";
152
+ }
153
+ .hm-book:before {
154
+ content: "\e92a";
155
+ }
156
+ .hm-bowl:before {
157
+ content: "\e92b";
158
+ }
159
+ .hm-brick-wall:before {
160
+ content: "\e92c";
161
+ }
162
+ .hm-brush-paint:before {
163
+ content: "\e92d";
164
+ }
165
+ .hm-brush-roll:before {
166
+ content: "\e92e";
167
+ }
168
+ .hm-brush:before {
169
+ content: "\e92f";
170
+ }
171
+ .hm-bug:before {
172
+ content: "\e930";
173
+ }
174
+ .hm-bulb:before {
175
+ content: "\e931";
176
+ }
177
+ .hm-calculation:before {
178
+ content: "\e932";
179
+ }
180
+ .hm-calendar:before {
181
+ content: "\e933";
182
+ }
183
+ .hm-camera:before {
184
+ content: "\e934";
185
+ }
186
+ .hm-candle:before {
187
+ content: "\e935";
188
+ }
189
+ .hm-candles:before {
190
+ content: "\e936";
191
+ }
192
+ .hm-car:before {
193
+ content: "\e937";
194
+ }
195
+ .hm-card:before {
196
+ content: "\e938";
197
+ }
198
+ .hm-caret-down:before {
199
+ content: "\e939";
200
+ }
201
+ .hm-caret-fill-down:before {
202
+ content: "\e93a";
203
+ }
204
+ .hm-caret-fill-left:before {
205
+ content: "\e93b";
206
+ }
207
+ .hm-caret-fill-right:before {
208
+ content: "\e93c";
209
+ }
210
+ .hm-caret-fill-up:before {
211
+ content: "\e93d";
212
+ }
213
+ .hm-caret-left:before {
214
+ content: "\e93e";
215
+ }
216
+ .hm-caret-right:before {
217
+ content: "\e93f";
218
+ }
219
+ .hm-caret-up:before {
220
+ content: "\e940";
221
+ }
222
+ .hm-carousal:before {
223
+ content: "\e941";
224
+ }
225
+ .hm-cart-empty:before {
226
+ content: "\e942";
227
+ }
228
+ .hm-cart-full:before {
229
+ content: "\e943";
230
+ }
231
+ .hm-caution:before {
232
+ content: "\e944";
233
+ }
234
+ .hm-chair:before {
235
+ content: "\e945";
236
+ }
237
+ .hm-chair2:before {
238
+ content: "\e946";
239
+ }
240
+ .hm-chat-bubble-single:before {
241
+ content: "\e947";
242
+ }
243
+ .hm-chat-bubble:before {
244
+ content: "\e948";
245
+ }
246
+ .hm-cheese:before {
247
+ content: "\e949";
248
+ }
249
+ .hm-chef-cap:before {
250
+ content: "\e94a";
251
+ }
252
+ .hm-clip-board:before {
253
+ content: "\e94b";
254
+ }
255
+ .hm-clip:before {
256
+ content: "\e94c";
257
+ }
258
+ .hm-cloud-down:before {
259
+ content: "\e94d";
260
+ }
261
+ .hm-cloud-up:before {
262
+ content: "\e94e";
263
+ }
264
+ .hm-cloud:before {
265
+ content: "\e94f";
266
+ }
267
+ .hm-code-browser:before {
268
+ content: "\e950";
269
+ }
270
+ .hm-code-clean:before {
271
+ content: "\e951";
272
+ }
273
+ .hm-code:before {
274
+ content: "\e952";
275
+ }
276
+ .hm-cog:before {
277
+ content: "\e953";
278
+ }
279
+ .hm-color-card:before {
280
+ content: "\e954";
281
+ }
282
+ .hm-color-plate:before {
283
+ content: "\e955";
284
+ }
285
+ .hm-compass-math:before {
286
+ content: "\e956";
287
+ }
288
+ .hm-compass:before {
289
+ content: "\e957";
290
+ }
291
+ .hm-corner:before {
292
+ content: "\e958";
293
+ }
294
+ .hm-crop:before {
295
+ content: "\e959";
296
+ }
297
+ .hm-cross-circle:before {
298
+ content: "\e95a";
299
+ }
300
+ .hm-cross-game:before {
301
+ content: "\e95b";
302
+ }
303
+ .hm-cross-gap:before {
304
+ content: "\e95c";
305
+ }
306
+ .hm-cross:before {
307
+ content: "\e95d";
308
+ }
309
+ .hm-crown:before {
310
+ content: "\e95e";
311
+ }
312
+ .hm-cube:before {
313
+ content: "\e95f";
314
+ }
315
+ .hm-cup-coffee:before {
316
+ content: "\e960";
317
+ }
318
+ .hm-cup:before {
319
+ content: "\e961";
320
+ }
321
+ .hm-currency-paper:before {
322
+ content: "\e962";
323
+ }
324
+ .hm-dashboard:before {
325
+ content: "\e963";
326
+ }
327
+ .hm-delivery-van:before {
328
+ content: "\e964";
329
+ }
330
+ .hm-diamond-ring:before {
331
+ content: "\e965";
332
+ }
333
+ .hm-direction-both:before {
334
+ content: "\e966";
335
+ }
336
+ .hm-direction-right:before {
337
+ content: "\e967";
338
+ }
339
+ .hm-disable-person:before {
340
+ content: "\e968";
341
+ }
342
+ .hm-disc:before {
343
+ content: "\e969";
344
+ }
345
+ .hm-dislike:before {
346
+ content: "\e96a";
347
+ }
348
+ .hm-dollar-on-hand:before {
349
+ content: "\e96b";
350
+ }
351
+ .hm-door-path:before {
352
+ content: "\e96c";
353
+ }
354
+ .hm-Download-circle:before {
355
+ content: "\e96d";
356
+ }
357
+ .hm-download:before {
358
+ content: "\e96e";
359
+ }
360
+ .hm-drag-inside:before {
361
+ content: "\e96f";
362
+ }
363
+ .hm-drag-outside:before {
364
+ content: "\e970";
365
+ }
366
+ .hm-drag:before {
367
+ content: "\e971";
368
+ }
369
+ .hm-drawer:before {
370
+ content: "\e972";
371
+ }
372
+ .hm-dribbble:before {
373
+ content: "\e973";
374
+ }
375
+ .hm-dropper:before {
376
+ content: "\e974";
377
+ }
378
+ .hm-egg-fry:before {
379
+ content: "\e975";
380
+ }
381
+ .hm-ellipsis-fill-h:before {
382
+ content: "\e976";
383
+ }
384
+ .hm-ellipsis-fill-v:before {
385
+ content: "\e977";
386
+ }
387
+ .hm-ellipsis-horizontal:before {
388
+ content: "\e978";
389
+ }
390
+ .hm-ellipsis-vertical:before {
391
+ content: "\e979";
392
+ }
393
+ .hm-emo-normal:before {
394
+ content: "\e97a";
395
+ }
396
+ .hm-emo-sad:before {
397
+ content: "\e97b";
398
+ }
399
+ .hm-emo-smile:before {
400
+ content: "\e97c";
401
+ }
402
+ .hm-envelop:before {
403
+ content: "\e97d";
404
+ }
405
+ .hm-facebook:before {
406
+ content: "\e97e";
407
+ }
408
+ .hm-fancy-futton:before {
409
+ content: "\e97f";
410
+ }
411
+ .hm-feeder:before {
412
+ content: "\e980";
413
+ }
414
+ .hm-file-cabinet:before {
415
+ content: "\e981";
416
+ }
417
+ .hm-file-rotate:before {
418
+ content: "\e982";
419
+ }
420
+ .hm-file:before {
421
+ content: "\e983";
422
+ }
423
+ .hm-files:before {
424
+ content: "\e984";
425
+ }
426
+ .hm-film-roll:before {
427
+ content: "\e985";
428
+ }
429
+ .hm-film:before {
430
+ content: "\e986";
431
+ }
432
+ .hm-finger-index:before {
433
+ content: "\e987";
434
+ }
435
+ .hm-finger-print:before {
436
+ content: "\e988";
437
+ }
438
+ .hm-fire-flame:before {
439
+ content: "\e989";
440
+ }
441
+ .hm-flag:before {
442
+ content: "\e98a";
443
+ }
444
+ .hm-flip-card1:before {
445
+ content: "\e98b";
446
+ }
447
+ .hm-flip-card2:before {
448
+ content: "\e98c";
449
+ }
450
+ .hm-folder-network:before {
451
+ content: "\e98d";
452
+ }
453
+ .hm-folder:before {
454
+ content: "\e98e";
455
+ }
456
+ .hm-football:before {
457
+ content: "\e98f";
458
+ }
459
+ .hm-footer:before {
460
+ content: "\e990";
461
+ }
462
+ .hm-form:before {
463
+ content: "\e991";
464
+ }
465
+ .hm-forward:before {
466
+ content: "\e992";
467
+ }
468
+ .hm-fountain-pen:before {
469
+ content: "\e993";
470
+ }
471
+ .hm-gender-female:before {
472
+ content: "\e994";
473
+ }
474
+ .hm-gender-male:before {
475
+ content: "\e995";
476
+ }
477
+ .hm-gender-sign:before {
478
+ content: "\e996";
479
+ }
480
+ .hm-gender:before {
481
+ content: "\e997";
482
+ }
483
+ .hm-ghost:before {
484
+ content: "\e998";
485
+ }
486
+ .hm-gift-box:before {
487
+ content: "\e999";
488
+ }
489
+ .hm-globe1:before {
490
+ content: "\e99a";
491
+ }
492
+ .hm-globe2:before {
493
+ content: "\e99b";
494
+ }
495
+ .hm-globe3:before {
496
+ content: "\e99c";
497
+ }
498
+ .hm-globe4:before {
499
+ content: "\e99d";
500
+ }
501
+ .hm-google:before {
502
+ content: "\e99e";
503
+ }
504
+ .hm-graduate-cap:before {
505
+ content: "\e99f";
506
+ }
507
+ .hm-graph-bar:before {
508
+ content: "\e9a0";
509
+ }
510
+ .hm-graph-pie:before {
511
+ content: "\e9a1";
512
+ }
513
+ .hm-graph:before {
514
+ content: "\e9a2";
515
+ }
516
+ .hm-grid-even:before {
517
+ content: "\e9a3";
518
+ }
519
+ .hm-grid-masonry:before {
520
+ content: "\e9a4";
521
+ }
522
+ .hm-grid-twist:before {
523
+ content: "\e9a5";
524
+ }
525
+ .hm-grid:before {
526
+ content: "\e9a6";
527
+ }
528
+ .hm-group:before {
529
+ content: "\e9a7";
530
+ }
531
+ .hm-hand-mike:before {
532
+ content: "\e9a8";
533
+ }
534
+ .hm-hand-watch:before {
535
+ content: "\e9a9";
536
+ }
537
+ .hm-hand:before {
538
+ content: "\e9aa";
539
+ }
540
+ .hm-header:before {
541
+ content: "\e9ab";
542
+ }
543
+ .hm-headphone:before {
544
+ content: "\e9ac";
545
+ }
546
+ .hm-headset:before {
547
+ content: "\e9ad";
548
+ }
549
+ .hm-heart-beat:before {
550
+ content: "\e9ae";
551
+ }
552
+ .hm-hexa:before {
553
+ content: "\e9af";
554
+ }
555
+ .hm-highlighter:before {
556
+ content: "\e9b0";
557
+ }
558
+ .hm-home:before {
559
+ content: "\e9b1";
560
+ }
561
+ .hm-hot-spot:before {
562
+ content: "\e9b2";
563
+ }
564
+ .hm-hotdog:before {
565
+ content: "\e9b3";
566
+ }
567
+ .hm-ice-cream:before {
568
+ content: "\e9b4";
569
+ }
570
+ .hm-icon-box:before {
571
+ content: "\e9b5";
572
+ }
573
+ .hm-imac:before {
574
+ content: "\e9b6";
575
+ }
576
+ .hm-image-compare:before {
577
+ content: "\e9b7";
578
+ }
579
+ .hm-image-slider:before {
580
+ content: "\e9b8";
581
+ }
582
+ .hm-image:before {
583
+ content: "\e9b9";
584
+ }
585
+ .hm-inbox:before {
586
+ content: "\e9ba";
587
+ }
588
+ .hm-infinity:before {
589
+ content: "\e9bb";
590
+ }
591
+ .hm-info:before {
592
+ content: "\e9bc";
593
+ }
594
+ .hm-injection:before {
595
+ content: "\e9bd";
596
+ }
597
+ .hm-instagram:before {
598
+ content: "\e9be";
599
+ }
600
+ .hm-jar-chemical:before {
601
+ content: "\e9bf";
602
+ }
603
+ .hm-key:before {
604
+ content: "\e9c0";
605
+ }
606
+ .hm-language-change:before {
607
+ content: "\e9c1";
608
+ }
609
+ .hm-laptop:before {
610
+ content: "\e9c2";
611
+ }
612
+ .hm-layer:before {
613
+ content: "\e9c3";
614
+ }
615
+ .hm-lens:before {
616
+ content: "\e9c4";
617
+ }
618
+ .hm-like:before {
619
+ content: "\e9c5";
620
+ }
621
+ .hm-line-graph-pointed:before {
622
+ content: "\e9c6";
623
+ }
624
+ .hm-link:before {
625
+ content: "\e9c7";
626
+ }
627
+ .hm-linkedin:before {
628
+ content: "\e9c8";
629
+ }
630
+ .hm-linux:before {
631
+ content: "\e9c9";
632
+ }
633
+ .hm-list-2:before {
634
+ content: "\e9ca";
635
+ }
636
+ .hm-list-group:before {
637
+ content: "\e9cb";
638
+ }
639
+ .hm-list:before {
640
+ content: "\e9cc";
641
+ }
642
+ .hm-location-pointer:before {
643
+ content: "\e9cd";
644
+ }
645
+ .hm-lock:before {
646
+ content: "\e9ce";
647
+ }
648
+ .hm-logo-carousel:before {
649
+ content: "\e9cf";
650
+ }
651
+ .hm-logo-grid:before {
652
+ content: "\e9d0";
653
+ }
654
+ .hm-lotus:before {
655
+ content: "\e9d1";
656
+ }
657
+ .hm-love:before {
658
+ content: "\e9d2";
659
+ }
660
+ .hm-madel:before {
661
+ content: "\e9d3";
662
+ }
663
+ .hm-magic-wand:before {
664
+ content: "\e9d4";
665
+ }
666
+ .hm-magnet:before {
667
+ content: "\e9d5";
668
+ }
669
+ .hm-mail-open:before {
670
+ content: "\e9d6";
671
+ }
672
+ .hm-man-range:before {
673
+ content: "\e9d7";
674
+ }
675
+ .hm-map-marker:before {
676
+ content: "\e9d8";
677
+ }
678
+ .hm-map-pointer:before {
679
+ content: "\e9d9";
680
+ }
681
+ .hm-measurement:before {
682
+ content: "\e9da";
683
+ }
684
+ .hm-memory:before {
685
+ content: "\e9db";
686
+ }
687
+ .hm-menu-price:before {
688
+ content: "\e9dc";
689
+ }
690
+ .hm-micro-chip:before {
691
+ content: "\e9dd";
692
+ }
693
+ .hm-microphone1:before {
694
+ content: "\e9de";
695
+ }
696
+ .hm-microphone2:before {
697
+ content: "\e9df";
698
+ }
699
+ .hm-mobile:before {
700
+ content: "\e9e0";
701
+ }
702
+ .hm-money-bag:before {
703
+ content: "\e9e1";
704
+ }
705
+ .hm-money:before {
706
+ content: "\e9e2";
707
+ }
708
+ .hm-monitor:before {
709
+ content: "\e9e3";
710
+ }
711
+ .hm-mouse:before {
712
+ content: "\e9e4";
713
+ }
714
+ .hm-muscle:before {
715
+ content: "\e9e5";
716
+ }
717
+ .hm-net:before {
718
+ content: "\e9e6";
719
+ }
720
+ .hm-network1:before {
721
+ content: "\e9e7";
722
+ }
723
+ .hm-network2:before {
724
+ content: "\e9e8";
725
+ }
726
+ .hm-newspaper:before {
727
+ content: "\e9e9";
728
+ }
729
+ .hm-nuclear-circle:before {
730
+ content: "\e9ea";
731
+ }
732
+ .hm-office-file:before {
733
+ content: "\e9eb";
734
+ }
735
+ .hm-pacman:before {
736
+ content: "\e9ec";
737
+ }
738
+ .hm-paper-fold:before {
739
+ content: "\e9ed";
740
+ }
741
+ .hm-paper-plane-alt:before {
742
+ content: "\e9ee";
743
+ }
744
+ .hm-paper-plane:before {
745
+ content: "\e9ef";
746
+ }
747
+ .hm-pause:before {
748
+ content: "\e9f0";
749
+ }
750
+ .hm-pen-head:before {
751
+ content: "\e9f1";
752
+ }
753
+ .hm-pen-pencil:before {
754
+ content: "\e9f2";
755
+ }
756
+ .hm-pen-scale:before {
757
+ content: "\e9f3";
758
+ }
759
+ .hm-pen-paper:before {
760
+ content: "\e9f4";
761
+ }
762
+ .hm-pen:before {
763
+ content: "\e9f5";
764
+ }
765
+ .hm-pencil:before {
766
+ content: "\e9f6";
767
+ }
768
+ .hm-pendrive:before {
769
+ content: "\e9f7";
770
+ }
771
+ .hm-phone:before {
772
+ content: "\e9f8";
773
+ }
774
+ .hm-pillar:before {
775
+ content: "\e9f9";
776
+ }
777
+ .hm-pin-man-range:before {
778
+ content: "\e9fa";
779
+ }
780
+ .hm-pin-man:before {
781
+ content: "\e9fb";
782
+ }
783
+ .hm-pin:before {
784
+ content: "\e9fc";
785
+ }
786
+ .hm-plane:before {
787
+ content: "\e9fd";
788
+ }
789
+ .hm-play-end:before {
790
+ content: "\e9fe";
791
+ }
792
+ .hm-play-next:before {
793
+ content: "\e9ff";
794
+ }
795
+ .hm-play-previous:before {
796
+ content: "\ea00";
797
+ }
798
+ .hm-play-start:before {
799
+ content: "\ea01";
800
+ }
801
+ .hm-play-button:before {
802
+ content: "\ea02";
803
+ }
804
+ .hm-play-store:before {
805
+ content: "\ea03";
806
+ }
807
+ .hm-play:before {
808
+ content: "\ea04";
809
+ }
810
+ .hm-playing-card:before {
811
+ content: "\ea05";
812
+ }
813
+ .hm-plus-box:before {
814
+ content: "\ea06";
815
+ }
816
+ .hm-plus-circle:before {
817
+ content: "\ea07";
818
+ }
819
+ .hm-plus-gap:before {
820
+ content: "\ea08";
821
+ }
822
+ .hm-plus-open:before {
823
+ content: "\ea09";
824
+ }
825
+ .hm-popup:before {
826
+ content: "\ea0a";
827
+ }
828
+ .hm-power:before {
829
+ content: "\ea0b";
830
+ }
831
+ .hm-printer:before {
832
+ content: "\ea0c";
833
+ }
834
+ .hm-progress-bar:before {
835
+ content: "\ea0d";
836
+ }
837
+ .hm-promo:before {
838
+ content: "\ea0e";
839
+ }
840
+ .hm-pulse:before {
841
+ content: "\ea0f";
842
+ }
843
+ .hm-puzzle:before {
844
+ content: "\ea10";
845
+ }
846
+ .hm-question:before {
847
+ content: "\ea11";
848
+ }
849
+ .hm-quote:before {
850
+ content: "\ea12";
851
+ }
852
+ .hm-radar:before {
853
+ content: "\ea13";
854
+ }
855
+ .hm-radiation:before {
856
+ content: "\ea14";
857
+ }
858
+ .hm-reading-glass-alt:before {
859
+ content: "\ea15";
860
+ }
861
+ .hm-reading-glass:before {
862
+ content: "\ea16";
863
+ }
864
+ .hm-recycle-bin:before {
865
+ content: "\ea17";
866
+ }
867
+ .hm-recycle:before {
868
+ content: "\ea18";
869
+ }
870
+ .hm-refresh-time:before {
871
+ content: "\ea19";
872
+ }
873
+ .hm-reply:before {
874
+ content: "\ea1a";
875
+ }
876
+ .hm-responsive-device:before {
877
+ content: "\ea1b";
878
+ }
879
+ .hm-review:before {
880
+ content: "\ea1c";
881
+ }
882
+ .hm-rocket1:before {
883
+ content: "\ea1d";
884
+ }
885
+ .hm-rocket2:before {
886
+ content: "\ea1e";
887
+ }
888
+ .hm-rss:before {
889
+ content: "\ea1f";
890
+ }
891
+ .hm-safety-cap:before {
892
+ content: "\ea20";
893
+ }
894
+ .hm-safety-kit:before {
895
+ content: "\ea21";
896
+ }
897
+ .hm-sand-watch:before {
898
+ content: "\ea22";
899
+ }
900
+ .hm-scale:before {
901
+ content: "\ea23";
902
+ }
903
+ .hm-scanner:before {
904
+ content: "\ea24";
905
+ }
906
+ .hm-scissor:before {
907
+ content: "\ea25";
908
+ }
909
+ .hm-screen:before {
910
+ content: "\ea26";
911
+ }
912
+ .hm-search:before {
913
+ content: "\ea27";
914
+ }
915
+ .hm-seo:before {
916
+ content: "\ea28";
917
+ }
918
+ .hm-server-network:before {
919
+ content: "\ea29";
920
+ }
921
+ .hm-server:before {
922
+ content: "\ea2a";
923
+ }
924
+ .hm-share:before {
925
+ content: "\ea2b";
926
+ }
927
+ .hm-shield:before {
928
+ content: "\ea2c";
929
+ }
930
+ .hm-ship:before {
931
+ content: "\ea2d";
932
+ }
933
+ .hm-shirt:before {
934
+ content: "\ea2e";
935
+ }
936
+ .hm-shopping-bag1:before {
937
+ content: "\ea2f";
938
+ }
939
+ .hm-shopping-bag2:before {
940
+ content: "\ea30";
941
+ }
942
+ .hm-shopping-bag3:before {
943
+ content: "\ea31";
944
+ }
945
+ .hm-shopping-bag4:before {
946
+ content: "\ea32";
947
+ }
948
+ .hm-shuffle:before {
949
+ content: "\ea33";
950
+ }
951
+ .hm-shutter:before {
952
+ content: "\ea34";
953
+ }
954
+ .hm-sign-in:before {
955
+ content: "\ea35";
956
+ }
957
+ .hm-sign-out:before {
958
+ content: "\ea36";
959
+ }
960
+ .hm-sitemap1:before {
961
+ content: "\ea37";
962
+ }
963
+ .hm-sitemap2:before {
964
+ content: "\ea38";
965
+ }
966
+ .hm-skart:before {
967
+ content: "\ea39";
968
+ }
969
+ .hm-skull:before {
970
+ content: "\ea3a";
971
+ }
972
+ .hm-skyscraper:before {
973
+ content: "\ea3b";
974
+ }
975
+ .hm-slider-doc:before {
976
+ content: "\ea3c";
977
+ }
978
+ .hm-slider-h-range:before {
979
+ content: "\ea3d";
980
+ }
981
+ .hm-slider-image:before {
982
+ content: "\ea3e";
983
+ }
984
+ .hm-slider-range-h:before {
985
+ content: "\ea3f";
986
+ }
987
+ .hm-slider-v-open:before {
988
+ content: "\ea40";
989
+ }
990
+ .hm-slider-video:before {
991
+ content: "\ea41";
992
+ }
993
+ .hm-slider:before {
994
+ content: "\ea42";
995
+ }
996
+ .hm-smart-watch:before {
997
+ content: "\ea43";
998
+ }
999
+ .hm-snow:before {
1000
+ content: "\ea44";
1001
+ }
1002
+ .hm-spa-face:before {
1003
+ content: "\ea45";
1004
+ }
1005
+ .hm-spa-stone-flower:before {
1006
+ content: "\ea46";
1007
+ }
1008
+ .hm-spa-stone:before {
1009
+ content: "\ea47";
1010
+ }
1011
+ .hm-spark:before {
1012
+ content: "\ea48";
1013
+ }
1014
+ .hm-speaker-off:before {
1015
+ content: "\ea49";
1016
+ }
1017
+ .hm-speaker-on:before {
1018
+ content: "\ea4a";
1019
+ }
1020
+ .hm-spoon-fork:before {
1021
+ content: "\ea4b";
1022
+ }
1023
+ .hm-spoon:before {
1024
+ content: "\ea4c";
1025
+ }
1026
+ .hm-star:before {
1027
+ content: "\ea4d";
1028
+ }
1029
+ .hm-step-flow:before {
1030
+ content: "\ea4e";
1031
+ }
1032
+ .hm-steps:before {
1033
+ content: "\ea4f";
1034
+ }
1035
+ .hm-stop-watch:before {
1036
+ content: "\ea50";
1037
+ }
1038
+ .hm-stop:before {
1039
+ content: "\ea51";
1040
+ }
1041
+ .hm-support-call:before {
1042
+ content: "\ea52";
1043
+ }
1044
+ .hm-tab:before {
1045
+ content: "\ea53";
1046
+ }
1047
+ .hm-table-lamp:before {
1048
+ content: "\ea54";
1049
+ }
1050
+ .hm-tablet:before {
1051
+ content: "\ea55";
1052
+ }
1053
+ .hm-tag:before {
1054
+ content: "\ea56";
1055
+ }
1056
+ .hm-target-arrow:before {
1057
+ content: "\ea57";
1058
+ }
1059
+ .hm-target:before {
1060
+ content: "\ea58";
1061
+ }
1062
+ .hm-target1:before {
1063
+ content: "\ea59";
1064
+ }
1065
+ .hm-team-carousel:before {
1066
+ content: "\ea5a";
1067
+ }
1068
+ .hm-team-member:before {
1069
+ content: "\ea5b";
1070
+ }
1071
+ .hm-tennis-ball:before {
1072
+ content: "\ea5c";
1073
+ }
1074
+ .hm-terminal:before {
1075
+ content: "\ea5d";
1076
+ }
1077
+ .hm-testimonial-carousel:before {
1078
+ content: "\ea5e";
1079
+ }
1080
+ .hm-testimonial:before {
1081
+ content: "\ea5f";
1082
+ }
1083
+ .hm-text-animation:before {
1084
+ content: "\ea60";
1085
+ }
1086
+ .hm-theatre:before {
1087
+ content: "\ea61";
1088
+ }
1089
+ .hm-tick-circle:before {
1090
+ content: "\ea62";
1091
+ }
1092
+ .hm-tick:before {
1093
+ content: "\ea63";
1094
+ }
1095
+ .hm-tickets:before {
1096
+ content: "\ea64";
1097
+ }
1098
+ .hm-tie-knot:before {
1099
+ content: "\ea65";
1100
+ }
1101
+ .hm-tie:before {
1102
+ content: "\ea66";
1103
+ }
1104
+ .hm-timeline:before {
1105
+ content: "\ea67";
1106
+ }
1107
+ .hm-toggle:before {
1108
+ content: "\ea68";
1109
+ }
1110
+ .hm-tools:before {
1111
+ content: "\ea69";
1112
+ }
1113
+ .hm-tree-square:before {
1114
+ content: "\ea6a";
1115
+ }
1116
+ .hm-twitter-bird:before {
1117
+ content: "\ea6b";
1118
+ }
1119
+ .hm-twitter:before {
1120
+ content: "\ea6c";
1121
+ }
1122
+ .hm-ufo:before {
1123
+ content: "\ea6d";
1124
+ }
1125
+ .hm-umbralla:before {
1126
+ content: "\ea6e";
1127
+ }
1128
+ .hm-unlock:before {
1129
+ content: "\ea6f";
1130
+ }
1131
+ .hm-up-down:before {
1132
+ content: "\ea70";
1133
+ }
1134
+ .hm-upload:before {
1135
+ content: "\ea71";
1136
+ }
1137
+ .hm-upward-top-right:before {
1138
+ content: "\ea72";
1139
+ }
1140
+ .hm-user-female:before {
1141
+ content: "\ea73";
1142
+ }
1143
+ .hm-user-id:before {
1144
+ content: "\ea74";
1145
+ }
1146
+ .hm-user-male:before {
1147
+ content: "\ea75";
1148
+ }
1149
+ .hm-video-camera:before {
1150
+ content: "\ea76";
1151
+ }
1152
+ .hm-water-drop:before {
1153
+ content: "\ea77";
1154
+ }
1155
+ .hm-weather-cloud-day:before {
1156
+ content: "\ea78";
1157
+ }
1158
+ .hm-weather-cloud:before {
1159
+ content: "\ea79";
1160
+ }
1161
+ .hm-weather-day-rain:before {
1162
+ content: "\ea7a";
1163
+ }
1164
+ .hm-weather-day-snow:before {
1165
+ content: "\ea7b";
1166
+ }
1167
+ .hm-weather-day-windy-rain:before {
1168
+ content: "\ea7c";
1169
+ }
1170
+ .hm-weather-flood:before {
1171
+ content: "\ea7d";
1172
+ }
1173
+ .hm-weather-night-cloud:before {
1174
+ content: "\ea7e";
1175
+ }
1176
+ .hm-weather-rain-alt:before {
1177
+ content: "\ea7f";
1178
+ }
1179
+ .hm-weather-rain:before {
1180
+ content: "\ea80";
1181
+ }
1182
+ .hm-weather-snow:before {
1183
+ content: "\ea81";
1184
+ }
1185
+ .hm-weather-sun-rain:before {
1186
+ content: "\ea82";
1187
+ }
1188
+ .hm-weather-sun:before {
1189
+ content: "\ea83";
1190
+ }
1191
+ .hm-weather-sunny-day:before {
1192
+ content: "\ea84";
1193
+ }
1194
+ .hm-weather-thunder:before {
1195
+ content: "\ea85";
1196
+ }
1197
+ .hm-weather-windy-rain:before {
1198
+ content: "\ea86";
1199
+ }
1200
+ .hm-webcam1:before {
1201
+ content: "\ea87";
1202
+ }
1203
+ .hm-webcam2:before {
1204
+ content: "\ea88";
1205
+ }
1206
+ .hm-weight-scale:before {
1207
+ content: "\ea89";
1208
+ }
1209
+ .hm-windows:before {
1210
+ content: "\ea8a";
1211
+ }
1212
+ .hm-wine-glass2:before {
1213
+ content: "\ea8b";
1214
+ }
1215
+ .hm-wine-glass:before {
1216
+ content: "\ea8c";
1217
+ }
1218
+ .hm-worker-cap:before {
1219
+ content: "\ea8d";
1220
+ }
1221
+ .hm-youtube:before {
1222
+ content: "\ea8e";
1223
+ }
assets/fonts/style.min.css ADDED
@@ -0,0 +1 @@
 
1
+ @font-face{font-family:'Happy Icons';src:url(Happy-Addons-Icon.eot?vf4zr6);src:url(Happy-Addons-Icon.eot?vf4zr6#iefix) format('embedded-opentype'),url(Happy-Addons-Icon.ttf?vf4zr6) format('truetype'),url(Happy-Addons-Icon.woff?vf4zr6) format('woff'),url(Happy-Addons-Icon.svg?vf4zr6#Happy-Addons-Icon) format('svg');font-weight:400;font-style:normal}.hm{font-family:'Happy Icons'!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.hm-3d-rotate:before{content:"\e900"}.hm-degree:before{content:"\e901"}.hm-accordion-horizontal:before{content:"\e902"}.hm-accordion-vertical:before{content:"\e903"}.hm-alarm-clock:before{content:"\e904"}.hm-alien-gun:before{content:"\e905"}.hm-alien:before{content:"\e906"}.hm-anchor:before{content:"\e907"}.hm-android:before{content:"\e908"}.hm-angle-down:before{content:"\e909"}.hm-angle-left:before{content:"\e90a"}.hm-angle-right:before{content:"\e90b"}.hm-angle-up:before{content:"\e90c"}.hm-apple:before{content:"\e90d"}.hm-arrow-left:before{content:"\e90e"}.hm-arrow-right:before{content:"\e90f"}.hm-arrow-zoom-out:before{content:"\e910"}.hm-arrow-corner:before{content:"\e911"}.hm-arrow-down:before{content:"\e912"}.hm-arrow-left1:before{content:"\e913"}.hm-arrow-right1:before{content:"\e914"}.hm-arrow-up:before{content:"\e915"}.hm-article:before{content:"\e916"}.hm-avatar-man:before{content:"\e917"}.hm-avatar-woman:before{content:"\e918"}.hm-badge1:before{content:"\e919"}.hm-badge2:before{content:"\e91a"}.hm-badge3:before{content:"\e91b"}.hm-bamboo:before{content:"\e91c"}.hm-basketball:before{content:"\e91d"}.hm-battery:before{content:"\e91e"}.hm-beach-seat:before{content:"\e91f"}.hm-bell:before{content:"\e920"}.hm-bicycle:before{content:"\e921"}.hm-blog-content:before{content:"\e922"}.hm-bluetooth:before{content:"\e923"}.hm-board:before{content:"\e924"}.hm-body:before{content:"\e925"}.hm-bomb:before{content:"\e926"}.hm-bond-hand:before{content:"\e927"}.hm-bond:before{content:"\e928"}.hm-bonsai:before{content:"\e929"}.hm-book:before{content:"\e92a"}.hm-bowl:before{content:"\e92b"}.hm-brick-wall:before{content:"\e92c"}.hm-brush-paint:before{content:"\e92d"}.hm-brush-roll:before{content:"\e92e"}.hm-brush:before{content:"\e92f"}.hm-bug:before{content:"\e930"}.hm-bulb:before{content:"\e931"}.hm-calculation:before{content:"\e932"}.hm-calendar:before{content:"\e933"}.hm-camera:before{content:"\e934"}.hm-candle:before{content:"\e935"}.hm-candles:before{content:"\e936"}.hm-car:before{content:"\e937"}.hm-card:before{content:"\e938"}.hm-caret-down:before{content:"\e939"}.hm-caret-fill-down:before{content:"\e93a"}.hm-caret-fill-left:before{content:"\e93b"}.hm-caret-fill-right:before{content:"\e93c"}.hm-caret-fill-up:before{content:"\e93d"}.hm-caret-left:before{content:"\e93e"}.hm-caret-right:before{content:"\e93f"}.hm-caret-up:before{content:"\e940"}.hm-carousal:before{content:"\e941"}.hm-cart-empty:before{content:"\e942"}.hm-cart-full:before{content:"\e943"}.hm-caution:before{content:"\e944"}.hm-chair:before{content:"\e945"}.hm-chair2:before{content:"\e946"}.hm-chat-bubble-single:before{content:"\e947"}.hm-chat-bubble:before{content:"\e948"}.hm-cheese:before{content:"\e949"}.hm-chef-cap:before{content:"\e94a"}.hm-clip-board:before{content:"\e94b"}.hm-clip:before{content:"\e94c"}.hm-cloud-down:before{content:"\e94d"}.hm-cloud-up:before{content:"\e94e"}.hm-cloud:before{content:"\e94f"}.hm-code-browser:before{content:"\e950"}.hm-code-clean:before{content:"\e951"}.hm-code:before{content:"\e952"}.hm-cog:before{content:"\e953"}.hm-color-card:before{content:"\e954"}.hm-color-plate:before{content:"\e955"}.hm-compass-math:before{content:"\e956"}.hm-compass:before{content:"\e957"}.hm-corner:before{content:"\e958"}.hm-crop:before{content:"\e959"}.hm-cross-circle:before{content:"\e95a"}.hm-cross-game:before{content:"\e95b"}.hm-cross-gap:before{content:"\e95c"}.hm-cross:before{content:"\e95d"}.hm-crown:before{content:"\e95e"}.hm-cube:before{content:"\e95f"}.hm-cup-coffee:before{content:"\e960"}.hm-cup:before{content:"\e961"}.hm-currency-paper:before{content:"\e962"}.hm-dashboard:before{content:"\e963"}.hm-delivery-van:before{content:"\e964"}.hm-diamond-ring:before{content:"\e965"}.hm-direction-both:before{content:"\e966"}.hm-direction-right:before{content:"\e967"}.hm-disable-person:before{content:"\e968"}.hm-disc:before{content:"\e969"}.hm-dislike:before{content:"\e96a"}.hm-dollar-on-hand:before{content:"\e96b"}.hm-door-path:before{content:"\e96c"}.hm-Download-circle:before{content:"\e96d"}.hm-download:before{content:"\e96e"}.hm-drag-inside:before{content:"\e96f"}.hm-drag-outside:before{content:"\e970"}.hm-drag:before{content:"\e971"}.hm-drawer:before{content:"\e972"}.hm-dribbble:before{content:"\e973"}.hm-dropper:before{content:"\e974"}.hm-egg-fry:before{content:"\e975"}.hm-ellipsis-fill-h:before{content:"\e976"}.hm-ellipsis-fill-v:before{content:"\e977"}.hm-ellipsis-horizontal:before{content:"\e978"}.hm-ellipsis-vertical:before{content:"\e979"}.hm-emo-normal:before{content:"\e97a"}.hm-emo-sad:before{content:"\e97b"}.hm-emo-smile:before{content:"\e97c"}.hm-envelop:before{content:"\e97d"}.hm-facebook:before{content:"\e97e"}.hm-fancy-futton:before{content:"\e97f"}.hm-feeder:before{content:"\e980"}.hm-file-cabinet:before{content:"\e981"}.hm-file-rotate:before{content:"\e982"}.hm-file:before{content:"\e983"}.hm-files:before{content:"\e984"}.hm-film-roll:before{content:"\e985"}.hm-film:before{content:"\e986"}.hm-finger-index:before{content:"\e987"}.hm-finger-print:before{content:"\e988"}.hm-fire-flame:before{content:"\e989"}.hm-flag:before{content:"\e98a"}.hm-flip-card1:before{content:"\e98b"}.hm-flip-card2:before{content:"\e98c"}.hm-folder-network:before{content:"\e98d"}.hm-folder:before{content:"\e98e"}.hm-football:before{content:"\e98f"}.hm-footer:before{content:"\e990"}.hm-form:before{content:"\e991"}.hm-forward:before{content:"\e992"}.hm-fountain-pen:before{content:"\e993"}.hm-gender-female:before{content:"\e994"}.hm-gender-male:before{content:"\e995"}.hm-gender-sign:before{content:"\e996"}.hm-gender:before{content:"\e997"}.hm-ghost:before{content:"\e998"}.hm-gift-box:before{content:"\e999"}.hm-globe1:before{content:"\e99a"}.hm-globe2:before{content:"\e99b"}.hm-globe3:before{content:"\e99c"}.hm-globe4:before{content:"\e99d"}.hm-google:before{content:"\e99e"}.hm-graduate-cap:before{content:"\e99f"}.hm-graph-bar:before{content:"\e9a0"}.hm-graph-pie:before{content:"\e9a1"}.hm-graph:before{content:"\e9a2"}.hm-grid-even:before{content:"\e9a3"}.hm-grid-masonry:before{content:"\e9a4"}.hm-grid-twist:before{content:"\e9a5"}.hm-grid:before{content:"\e9a6"}.hm-group:before{content:"\e9a7"}.hm-hand-mike:before{content:"\e9a8"}.hm-hand-watch:before{content:"\e9a9"}.hm-hand:before{content:"\e9aa"}.hm-header:before{content:"\e9ab"}.hm-headphone:before{content:"\e9ac"}.hm-headset:before{content:"\e9ad"}.hm-heart-beat:before{content:"\e9ae"}.hm-hexa:before{content:"\e9af"}.hm-highlighter:before{content:"\e9b0"}.hm-home:before{content:"\e9b1"}.hm-hot-spot:before{content:"\e9b2"}.hm-hotdog:before{content:"\e9b3"}.hm-ice-cream:before{content:"\e9b4"}.hm-icon-box:before{content:"\e9b5"}.hm-imac:before{content:"\e9b6"}.hm-image-compare:before{content:"\e9b7"}.hm-image-slider:before{content:"\e9b8"}.hm-image:before{content:"\e9b9"}.hm-inbox:before{content:"\e9ba"}.hm-infinity:before{content:"\e9bb"}.hm-info:before{content:"\e9bc"}.hm-injection:before{content:"\e9bd"}.hm-instagram:before{content:"\e9be"}.hm-jar-chemical:before{content:"\e9bf"}.hm-key:before{content:"\e9c0"}.hm-language-change:before{content:"\e9c1"}.hm-laptop:before{content:"\e9c2"}.hm-layer:before{content:"\e9c3"}.hm-lens:before{content:"\e9c4"}.hm-like:before{content:"\e9c5"}.hm-line-graph-pointed:before{content:"\e9c6"}.hm-link:before{content:"\e9c7"}.hm-linkedin:before{content:"\e9c8"}.hm-linux:before{content:"\e9c9"}.hm-list-2:before{content:"\e9ca"}.hm-list-group:before{content:"\e9cb"}.hm-list:before{content:"\e9cc"}.hm-location-pointer:before{content:"\e9cd"}.hm-lock:before{content:"\e9ce"}.hm-logo-carousel:before{content:"\e9cf"}.hm-logo-grid:before{content:"\e9d0"}.hm-lotus:before{content:"\e9d1"}.hm-love:before{content:"\e9d2"}.hm-madel:before{content:"\e9d3"}.hm-magic-wand:before{content:"\e9d4"}.hm-magnet:before{content:"\e9d5"}.hm-mail-open:before{content:"\e9d6"}.hm-man-range:before{content:"\e9d7"}.hm-map-marker:before{content:"\e9d8"}.hm-map-pointer:before{content:"\e9d9"}.hm-measurement:before{content:"\e9da"}.hm-memory:before{content:"\e9db"}.hm-menu-price:before{content:"\e9dc"}.hm-micro-chip:before{content:"\e9dd"}.hm-microphone1:before{content:"\e9de"}.hm-microphone2:before{content:"\e9df"}.hm-mobile:before{content:"\e9e0"}.hm-money-bag:before{content:"\e9e1"}.hm-money:before{content:"\e9e2"}.hm-monitor:before{content:"\e9e3"}.hm-mouse:before{content:"\e9e4"}.hm-muscle:before{content:"\e9e5"}.hm-net:before{content:"\e9e6"}.hm-network1:before{content:"\e9e7"}.hm-network2:before{content:"\e9e8"}.hm-newspaper:before{content:"\e9e9"}.hm-nuclear-circle:before{content:"\e9ea"}.hm-office-file:before{content:"\e9eb"}.hm-pacman:before{content:"\e9ec"}.hm-paper-fold:before{content:"\e9ed"}.hm-paper-plane-alt:before{content:"\e9ee"}.hm-paper-plane:before{content:"\e9ef"}.hm-pause:before{content:"\e9f0"}.hm-pen-head:before{content:"\e9f1"}.hm-pen-pencil:before{content:"\e9f2"}.hm-pen-scale:before{content:"\e9f3"}.hm-pen-paper:before{content:"\e9f4"}.hm-pen:before{content:"\e9f5"}.hm-pencil:before{content:"\e9f6"}.hm-pendrive:before{content:"\e9f7"}.hm-phone:before{content:"\e9f8"}.hm-pillar:before{content:"\e9f9"}.hm-pin-man-range:before{content:"\e9fa"}.hm-pin-man:before{content:"\e9fb"}.hm-pin:before{content:"\e9fc"}.hm-plane:before{content:"\e9fd"}.hm-play-end:before{content:"\e9fe"}.hm-play-next:before{content:"\e9ff"}.hm-play-previous:before{content:"\ea00"}.hm-play-start:before{content:"\ea01"}.hm-play-button:before{content:"\ea02"}.hm-play-store:before{content:"\ea03"}.hm-play:before{content:"\ea04"}.hm-playing-card:before{content:"\ea05"}.hm-plus-box:before{content:"\ea06"}.hm-plus-circle:before{content:"\ea07"}.hm-plus-gap:before{content:"\ea08"}.hm-plus-open:before{content:"\ea09"}.hm-popup:before{content:"\ea0a"}.hm-power:before{content:"\ea0b"}.hm-printer:before{content:"\ea0c"}.hm-progress-bar:before{content:"\ea0d"}.hm-promo:before{content:"\ea0e"}.hm-pulse:before{content:"\ea0f"}.hm-puzzle:before{content:"\ea10"}.hm-question:before{content:"\ea11"}.hm-quote:before{content:"\ea12"}.hm-radar:before{content:"\ea13"}.hm-radiation:before{content:"\ea14"}.hm-reading-glass-alt:before{content:"\ea15"}.hm-reading-glass:before{content:"\ea16"}.hm-recycle-bin:before{content:"\ea17"}.hm-recycle:before{content:"\ea18"}.hm-refresh-time:before{content:"\ea19"}.hm-reply:before{content:"\ea1a"}.hm-responsive-device:before{content:"\ea1b"}.hm-review:before{content:"\ea1c"}.hm-rocket1:before{content:"\ea1d"}.hm-rocket2:before{content:"\ea1e"}.hm-rss:before{content:"\ea1f"}.hm-safety-cap:before{content:"\ea20"}.hm-safety-kit:before{content:"\ea21"}.hm-sand-watch:before{content:"\ea22"}.hm-scale:before{content:"\ea23"}.hm-scanner:before{content:"\ea24"}.hm-scissor:before{content:"\ea25"}.hm-screen:before{content:"\ea26"}.hm-search:before{content:"\ea27"}.hm-seo:before{content:"\ea28"}.hm-server-network:before{content:"\ea29"}.hm-server:before{content:"\ea2a"}.hm-share:before{content:"\ea2b"}.hm-shield:before{content:"\ea2c"}.hm-ship:before{content:"\ea2d"}.hm-shirt:before{content:"\ea2e"}.hm-shopping-bag1:before{content:"\ea2f"}.hm-shopping-bag2:before{content:"\ea30"}.hm-shopping-bag3:before{content:"\ea31"}.hm-shopping-bag4:before{content:"\ea32"}.hm-shuffle:before{content:"\ea33"}.hm-shutter:before{content:"\ea34"}.hm-sign-in:before{content:"\ea35"}.hm-sign-out:before{content:"\ea36"}.hm-sitemap1:before{content:"\ea37"}.hm-sitemap2:before{content:"\ea38"}.hm-skart:before{content:"\ea39"}.hm-skull:before{content:"\ea3a"}.hm-skyscraper:before{content:"\ea3b"}.hm-slider-doc:before{content:"\ea3c"}.hm-slider-h-range:before{content:"\ea3d"}.hm-slider-image:before{content:"\ea3e"}.hm-slider-range-h:before{content:"\ea3f"}.hm-slider-v-open:before{content:"\ea40"}.hm-slider-video:before{content:"\ea41"}.hm-slider:before{content:"\ea42"}.hm-smart-watch:before{content:"\ea43"}.hm-snow:before{content:"\ea44"}.hm-spa-face:before{content:"\ea45"}.hm-spa-stone-flower:before{content:"\ea46"}.hm-spa-stone:before{content:"\ea47"}.hm-spark:before{content:"\ea48"}.hm-speaker-off:before{content:"\ea49"}.hm-speaker-on:before{content:"\ea4a"}.hm-spoon-fork:before{content:"\ea4b"}.hm-spoon:before{content:"\ea4c"}.hm-star:before{content:"\ea4d"}.hm-step-flow:before{content:"\ea4e"}.hm-steps:before{content:"\ea4f"}.hm-stop-watch:before{content:"\ea50"}.hm-stop:before{content:"\ea51"}.hm-support-call:before{content:"\ea52"}.hm-tab:before{content:"\ea53"}.hm-table-lamp:before{content:"\ea54"}.hm-tablet:before{content:"\ea55"}.hm-tag:before{content:"\ea56"}.hm-target-arrow:before{content:"\ea57"}.hm-target:before{content:"\ea58"}.hm-target1:before{content:"\ea59"}.hm-team-carousel:before{content:"\ea5a"}.hm-team-member:before{content:"\ea5b"}.hm-tennis-ball:before{content:"\ea5c"}.hm-terminal:before{content:"\ea5d"}.hm-testimonial-carousel:before{content:"\ea5e"}.hm-testimonial:before{content:"\ea5f"}.hm-text-animation:before{content:"\ea60"}.hm-theatre:before{content:"\ea61"}.hm-tick-circle:before{content:"\ea62"}.hm-tick:before{content:"\ea63"}.hm-tickets:before{content:"\ea64"}.hm-tie-knot:before{content:"\ea65"}.hm-tie:before{content:"\ea66"}.hm-timeline:before{content:"\ea67"}.hm-toggle:before{content:"\ea68"}.hm-tools:before{content:"\ea69"}.hm-tree-square:before{content:"\ea6a"}.hm-twitter-bird:before{content:"\ea6b"}.hm-twitter:before{content:"\ea6c"}.hm-ufo:before{content:"\ea6d"}.hm-umbralla:before{content:"\ea6e"}.hm-unlock:before{content:"\ea6f"}.hm-up-down:before{content:"\ea70"}.hm-upload:before{content:"\ea71"}.hm-upward-top-right:before{content:"\ea72"}.hm-user-female:before{content:"\ea73"}.hm-user-id:before{content:"\ea74"}.hm-user-male:before{content:"\ea75"}.hm-video-camera:before{content:"\ea76"}.hm-water-drop:before{content:"\ea77"}.hm-weather-cloud-day:before{content:"\ea78"}.hm-weather-cloud:before{content:"\ea79"}.hm-weather-day-rain:before{content:"\ea7a"}.hm-weather-day-snow:before{content:"\ea7b"}.hm-weather-day-windy-rain:before{content:"\ea7c"}.hm-weather-flood:before{content:"\ea7d"}.hm-weather-night-cloud:before{content:"\ea7e"}.hm-weather-rain-alt:before{content:"\ea7f"}.hm-weather-rain:before{content:"\ea80"}.hm-weather-snow:before{content:"\ea81"}.hm-weather-sun-rain:before{content:"\ea82"}.hm-weather-sun:before{content:"\ea83"}.hm-weather-sunny-day:before{content:"\ea84"}.hm-weather-thunder:before{content:"\ea85"}.hm-weather-windy-rain:before{content:"\ea86"}.hm-webcam1:before{content:"\ea87"}.hm-webcam2:before{content:"\ea88"}.hm-weight-scale:before{content:"\ea89"}.hm-windows:before{content:"\ea8a"}.hm-wine-glass2:before{content:"\ea8b"}.hm-wine-glass:before{content:"\ea8c"}.hm-worker-cap:before{content:"\ea8d"}.hm-youtube:before{content:"\ea8e"}
assets/imgs/happy-addons-placeholder-small.jpg ADDED
Binary file
assets/imgs/placeholder.jpg ADDED
Binary file
assets/js/happy-addons.js ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ window.Happy = window.Happy || {};
3
+
4
+ (function ($, Happy) {
5
+ var $window = $(window);
6
+
7
+ $.fn.getHappySettings = function() {
8
+ return this.data('happy-settings');
9
+ };
10
+
11
+ Happy.initImageComparison = function($scope) {
12
+ var $item = $scope.find('.hajs-image-comparison'),
13
+ settings = $item.getHappySettings(),
14
+ fieldMap = {
15
+ on_hover: 'move_slider_on_hover',
16
+ on_swipe: 'move_with_handle_only',
17
+ on_click: 'click_to_move'
18
+ };
19
+
20
+ settings[fieldMap[settings.move_handle || 'on_swipe']] = true;
21
+ delete settings.move_handle;
22
+ $item.imagesLoaded().done(function() {
23
+ $item.twentytwenty(settings);
24
+ });
25
+ };
26
+
27
+ $window.on( 'elementor/frontend/init', function() {
28
+ var FloatingFx = elementorModules.frontend.handlers.Base.extend({
29
+ onInit: function() {
30
+ elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments);
31
+ this.run();
32
+ },
33
+
34
+ getTheElement: function() {
35
+ return this.$element.find('.elementor-widget-container')[0];
36
+ },
37
+
38
+ resetFx: function() {
39
+ anime.remove(this.getTheElement());
40
+ this.getTheElement() && this.getTheElement().removeAttribute('style');
41
+ },
42
+
43
+ onDestroy: function() {
44
+ elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this, arguments);
45
+ this.resetFx();
46
+ },
47
+
48
+ onElementChange: function() {
49
+ this.resetFx();
50
+ this.run();
51
+ },
52
+
53
+ run: function() {
54
+ var settings = this.getElementSettings(),
55
+ fxSettings = {
56
+ targets: this.getTheElement(),
57
+ loop: true,
58
+ direction: 'alternate',
59
+ easing: 'easeInOutSine'
60
+ };
61
+
62
+ if (settings.ha_floating_fx_translate_toggle) {
63
+ if (settings.ha_floating_fx_translate_x.size) {
64
+ fxSettings.translateX = {
65
+ value: settings.ha_floating_fx_translate_x.size,
66
+ duration: settings.ha_floating_fx_translate_duration.size,
67
+ delay: settings.ha_floating_fx_translate_delay.size || 0
68
+ }
69
+ }
70
+ if (settings.ha_floating_fx_translate_y.size) {
71
+ fxSettings.translateY = {
72
+ value: settings.ha_floating_fx_translate_y.size,
73
+ duration: settings.ha_floating_fx_translate_duration.size,
74
+ delay: settings.ha_floating_fx_translate_delay.size || 0
75
+ }
76
+ }
77
+ }
78
+
79
+ if (settings.ha_floating_fx_rotate_toggle) {
80
+ if (settings.ha_floating_fx_rotate_x.size) {
81
+ fxSettings.rotateX = {
82
+ value: settings.ha_floating_fx_rotate_x.size,
83
+ duration: settings.ha_floating_fx_rotate_duration.size,
84
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
85
+ }
86
+ }
87
+ if (settings.ha_floating_fx_rotate_y.size) {
88
+ fxSettings.rotateY = {
89
+ value: settings.ha_floating_fx_rotate_y.size,
90
+ duration: settings.ha_floating_fx_rotate_duration.size,
91
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
92
+ }
93
+ }
94
+ if (settings.ha_floating_fx_rotate_z.size) {
95
+ fxSettings.rotateZ = {
96
+ value: settings.ha_floating_fx_rotate_z.size,
97
+ duration: settings.ha_floating_fx_rotate_duration.size,
98
+ delay: settings.ha_floating_fx_rotate_delay.size || 0
99
+ }
100
+ }
101
+ }
102
+
103
+ if (settings.ha_floating_fx_scale_toggle) {
104
+ if (settings.ha_floating_fx_scale_x.size) {
105
+ fxSettings.scaleX = {
106
+ value: settings.ha_floating_fx_scale_x.size,
107
+ duration: settings.ha_floating_fx_scale_duration.size,
108
+ delay: settings.ha_floating_fx_scale_delay.size || 0
109
+ }
110
+ }
111
+ if (settings.ha_floating_fx_scale_y.size) {
112
+ fxSettings.scaleY = {
113
+ value: settings.ha_floating_fx_scale_y.size,
114
+ duration: settings.ha_floating_fx_scale_duration.size,
115
+ delay: settings.ha_floating_fx_scale_delay.size || 0
116
+ }
117
+ }
118
+ }
119
+
120
+ if (settings.ha_floating_fx_translate_toggle || settings.ha_floating_fx_rotate_toggle || settings.ha_floating_fx_scale_toggle) {
121
+ this.getTheElement() && this.getTheElement().style.setProperty('will-change', 'transform');
122
+ anime(fxSettings);
123
+ }
124
+ }
125
+ });
126
+
127
+ elementorFrontend.hooks.addAction(
128
+ 'frontend/element_ready/ha-image-compare.default',
129
+ Happy.initImageComparison
130
+ );
131
+
132
+ elementorFrontend.hooks.addAction(
133
+ 'frontend/element_ready/widget',
134
+ function ($scope) {
135
+ new FloatingFx({ $element: $scope });
136
+ }
137
+ );
138
+ });
139
+
140
+ } (jQuery, Happy));
assets/js/happy-addons.min.js ADDED
@@ -0,0 +1 @@
 
1
+ "use strict";window.Happy=window.Happy||{},function(e,t){var a=e(window);e.fn.getHappySettings=function(){return this.data("happy-settings")},t.initImageComparison=function(e){var t=e.find(".hajs-image-comparison"),a=t.getHappySettings();a[{on_hover:"move_slider_on_hover",on_swipe:"move_with_handle_only",on_click:"click_to_move"}[a.move_handle||"on_swipe"]]=!0,delete a.move_handle,t.imagesLoaded().done(function(){t.twentytwenty(a)})},a.on("elementor/frontend/init",function(){var e=elementorModules.frontend.handlers.Base.extend({onInit:function(){elementorModules.frontend.handlers.Base.prototype.onInit.apply(this,arguments),this.run()},getTheElement:function(){return this.$element.find(".elementor-widget-container")[0]},resetFx:function(){anime.remove(this.getTheElement()),this.getTheElement()&&this.getTheElement().removeAttribute("style")},onDestroy:function(){elementorModules.frontend.handlers.Base.prototype.onDestroy.apply(this,arguments),this.resetFx()},onElementChange:function(){this.resetFx(),this.run()},run:function(){var e=this.getElementSettings(),t={targets:this.getTheElement(),loop:!0,direction:"alternate",easing:"easeInOutSine"};e.ha_floating_fx_translate_toggle&&(e.ha_floating_fx_translate_x.size&&(t.translateX={value:e.ha_floating_fx_translate_x.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0}),e.ha_floating_fx_translate_y.size&&(t.translateY={value:e.ha_floating_fx_translate_y.size,duration:e.ha_floating_fx_translate_duration.size,delay:e.ha_floating_fx_translate_delay.size||0})),e.ha_floating_fx_rotate_toggle&&(e.ha_floating_fx_rotate_x.size&&(t.rotateX={value:e.ha_floating_fx_rotate_x.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_y.size&&(t.rotateY={value:e.ha_floating_fx_rotate_y.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0}),e.ha_floating_fx_rotate_z.size&&(t.rotateZ={value:e.ha_floating_fx_rotate_z.size,duration:e.ha_floating_fx_rotate_duration.size,delay:e.ha_floating_fx_rotate_delay.size||0})),e.ha_floating_fx_scale_toggle&&(e.ha_floating_fx_scale_x.size&&(t.scaleX={value:e.ha_floating_fx_scale_x.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0}),e.ha_floating_fx_scale_y.size&&(t.scaleY={value:e.ha_floating_fx_scale_y.size,duration:e.ha_floating_fx_scale_duration.size,delay:e.ha_floating_fx_scale_delay.size||0})),(e.ha_floating_fx_translate_toggle||e.ha_floating_fx_rotate_toggle||e.ha_floating_fx_scale_toggle)&&(this.getTheElement()&&this.getTheElement().style.setProperty("will-change","transform"),anime(t))}});elementorFrontend.hooks.addAction("frontend/element_ready/ha-image-compare.default",t.initImageComparison),elementorFrontend.hooks.addAction("frontend/element_ready/widget",function(t){new e({$element:t})})})}(jQuery,Happy);
assets/vendor/anime/LICENSE.md ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ The MIT License
2
+
3
+ Copyright (c) 2019 Julian Garnier
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
assets/vendor/anime/README.md ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1 align="center">
2
+ <a href="https://animejs.com"><img src="/documentation/assets/img/animejs-v3-header-animation.gif" width="250"/></a>
3
+ <br>
4
+ anime.js
5
+ </h1>
6
+
7
+ <h4 align="center">JavaScript animation engine | <a href="https://animejs.com" target="_blank">animejs.com</a></h4>
8
+
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/animejs" rel="nofollow"><img src="https://camo.githubusercontent.com/011820ee25bf1d3ddaf635d869903b98eccaeae7/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f616e696d656a732e7376673f7374796c653d666c61742d737175617265" alt="npm version" data-canonical-src="https://img.shields.io/npm/v/animejs.svg?style=flat-square" style="max-width:100%;"></a>
11
+ <a href="https://www.npmjs.com/package/animejs" rel="nofollow"><img src="https://camo.githubusercontent.com/3e9b69d51aee25fad784a3097676696096621d47/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f616e696d656a732e7376673f7374796c653d666c61742d737175617265" alt="npm downloads" data-canonical-src="https://img.shields.io/npm/dm/animejs.svg?style=flat-square" style="max-width:100%;"></a>
12
+ </p>
13
+
14
+ <blockquote align="center">
15
+ <em>Anime.js</em> (<code>/ˈæn.ə.meɪ/</code>) is a lightweight JavaScript animation library with a simple, yet powerful API.<br>
16
+ It works with CSS properties, SVG, DOM attributes and JavaScript Objects.
17
+ </blockquote>
18
+
19
+ <p align="center">
20
+ <a href="#getting-started">Getting started</a>&nbsp;|&nbsp;<a href="#documentation">Documentation</a>&nbsp;|&nbsp;<a href="#demos-and-examples">Demos and examples</a>&nbsp;|&nbsp;<a href="#browser-support">Browser support</a>
21
+ </p>
22
+
23
+ ## Getting started
24
+
25
+ ### Download
26
+
27
+ Via npm
28
+
29
+ ```bash
30
+ $ npm install animejs --save
31
+ ```
32
+
33
+ or manual [download](https://github.com/juliangarnier/anime/archive/master.zip).
34
+
35
+ ### Usage
36
+
37
+ #### ES6 modules
38
+
39
+ ```javascript
40
+ import anime from 'lib/anime.es.js';
41
+ ```
42
+
43
+ #### CommonJS
44
+
45
+ ```javascript
46
+ const anime = require('lib/anime.js');
47
+ ```
48
+
49
+ #### File include
50
+
51
+ Link `anime.min.js` in your HTML :
52
+
53
+ ```html
54
+ <script src="anime.min.js"></script>
55
+ ```
56
+
57
+ ### Hello world
58
+
59
+ ```javascript
60
+ anime({
61
+ targets: 'div',
62
+ translateX: 250,
63
+ rotate: '1turn',
64
+ backgroundColor: '#FFF',
65
+ duration: 800
66
+ });
67
+ ```
68
+
69
+ ## [Documentation](https://animejs.com/documentation/)
70
+
71
+ * [Targets](https://animejs.com/documentation/#cssSelector)
72
+ * [Properties](https://animejs.com/documentation/#cssProperties)
73
+ * [Property parameters](https://animejs.com/documentation/#duration)
74
+ * [Animation parameters](https://animejs.com/documentation/#direction)
75
+ * [Values](https://animejs.com/documentation/#unitlessValue)
76
+ * [Keyframes](https://animejs.com/documentation/#animationKeyframes)
77
+ * [Stagering](https://animejs.com/documentation/#staggeringBasics)
78
+ * [Timeline](https://animejs.com/documentation/#timelineBasics)
79
+ * [Controls](https://animejs.com/documentation/#playPause)
80
+ * [Callbacks and promises](https://animejs.com/documentation/#update)
81
+ * [SVG Animations](https://animejs.com/documentation/#motionPath)
82
+ * [Easing functions](https://animejs.com/documentation/#linearEasing)
83
+ * [Helpers](https://animejs.com/documentation/#remove)
84
+
85
+ ## [Demos and examples](http://codepen.io/collection/b392d3a52d6abf5b8d9fda4e4cab61ab/)
86
+
87
+ * [CodePen demos and examples](http://codepen.io/collection/b392d3a52d6abf5b8d9fda4e4cab61ab/)
88
+ * [juliangarnier.com](http://juliangarnier.com)
89
+ * [animejs.com](https://animejs.com)
90
+ * [Moving letters](http://tobiasahlin.com/moving-letters/) by [@tobiasahlin](https://twitter.com/tobiasahlin)
91
+ * [Gradient topography animation](https://tympanus.net/Development/GradientTopographyAnimation/) by [@crnacura](https://twitter.com/crnacura)
92
+ * [Organic shape animations](https://tympanus.net/Development/OrganicShapeAnimations/) by [@crnacura](https://twitter.com/crnacura)
93
+ * [Pieces slider](https://tympanus.net/Tutorials/PiecesSlider/) by [@lmgonzalves](https://twitter.com/lmgonzalves)
94
+ * [Staggering animations](https://codepen.io/juliangarnier/pen/4fe31bbe8579a256e828cd4d48c86182?editors=0100)
95
+ * [Easings animations](https://codepen.io/juliangarnier/pen/444ed909fd5de38e3a77cc6e95fc1884)
96
+ * [Sphere animation](https://codepen.io/juliangarnier/pen/b3bb8ca599ad0f9d00dd044e56cbdea5?editors=0010)
97
+ * [Layered animations](https://codepen.io/juliangarnier/pen/6ca836535cbea42157d1b8d56d00be84?editors=0010)
98
+ * [anime.js logo animation](https://codepen.io/juliangarnier/pen/d43e8ec355c30871cbe775193255d6f6?editors=0010)
99
+
100
+
101
+ ## Browser support
102
+
103
+ | Chrome | Safari | IE / Edge | Firefox | Opera |
104
+ | --- | --- | --- | --- | --- |
105
+ | 24+ | 8+ | 11+ | 32+ | 15+ |
106
+
107
+ ## <a href="https://animejs.com"><img src="/documentation/assets/img/animejs-v3-logo-animation.gif" width="150" alt="anime-js-v3-logo"/></a>
108
+
109
+ [Website](https://animejs.com/) | [Documentation](https://animejs.com/documentation/) | [Demos and examples](http://codepen.io/collection/b392d3a52d6abf5b8d9fda4e4cab61ab/) | [MIT License](LICENSE.md) | © 2019 [Julian Garnier](http://juliangarnier.com).
assets/vendor/anime/lib/anime.es.js ADDED
@@ -0,0 +1,1296 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * anime.js v3.0.1
3
+ * (c) 2019 Julian Garnier
4
+ * Released under the MIT license
5
+ * animejs.com
6
+ */
7
+
8
+ // Defaults
9
+
10
+ var defaultInstanceSettings = {
11
+ update: null,
12
+ begin: null,
13
+ loopBegin: null,
14
+ changeBegin: null,
15
+ change: null,
16
+ changeComplete: null,
17
+ loopComplete: null,
18
+ complete: null,
19
+ loop: 1,
20
+ direction: 'normal',
21
+ autoplay: true,
22
+ timelineOffset: 0
23
+ };
24
+
25
+ var defaultTweenSettings = {
26
+ duration: 1000,
27
+ delay: 0,
28
+ endDelay: 0,
29
+ easing: 'easeOutElastic(1, .5)',
30
+ round: 0
31
+ };
32
+
33
+ var validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective'];
34
+
35
+ // Caching
36
+
37
+ var cache = {
38
+ CSS: {},
39
+ springs: {}
40
+ };
41
+
42
+ // Utils
43
+
44
+ function minMax(val, min, max) {
45
+ return Math.min(Math.max(val, min), max);
46
+ }
47
+
48
+ function stringContains(str, text) {
49
+ return str.indexOf(text) > -1;
50
+ }
51
+
52
+ function applyArguments(func, args) {
53
+ return func.apply(null, args);
54
+ }
55
+
56
+ var is = {
57
+ arr: function (a) { return Array.isArray(a); },
58
+ obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },
59
+ pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },
60
+ svg: function (a) { return a instanceof SVGElement; },
61
+ inp: function (a) { return a instanceof HTMLInputElement; },
62
+ dom: function (a) { return a.nodeType || is.svg(a); },
63
+ str: function (a) { return typeof a === 'string'; },
64
+ fnc: function (a) { return typeof a === 'function'; },
65
+ und: function (a) { return typeof a === 'undefined'; },
66
+ hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },
67
+ rgb: function (a) { return /^rgb/.test(a); },
68
+ hsl: function (a) { return /^hsl/.test(a); },
69
+ col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },
70
+ key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }
71
+ };
72
+
73
+ // Easings
74
+
75
+ function parseEasingParameters(string) {
76
+ var match = /\(([^)]+)\)/.exec(string);
77
+ return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];
78
+ }
79
+
80
+ // Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js
81
+
82
+ function spring(string, duration) {
83
+
84
+ var params = parseEasingParameters(string);
85
+ var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);
86
+ var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);
87
+ var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);
88
+ var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);
89
+ var w0 = Math.sqrt(stiffness / mass);
90
+ var zeta = damping / (2 * Math.sqrt(stiffness * mass));
91
+ var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;
92
+ var a = 1;
93
+ var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;
94
+
95
+ function solver(t) {
96
+ var progress = duration ? (duration * t) / 1000 : t;
97
+ if (zeta < 1) {
98
+ progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));
99
+ } else {
100
+ progress = (a + b * progress) * Math.exp(-progress * w0);
101
+ }
102
+ if (t === 0 || t === 1) { return t; }
103
+ return 1 - progress;
104
+ }
105
+
106
+ function getDuration() {
107
+ var cached = cache.springs[string];
108
+ if (cached) { return cached; }
109
+ var frame = 1/6;
110
+ var elapsed = 0;
111
+ var rest = 0;
112
+ while(true) {
113
+ elapsed += frame;
114
+ if (solver(elapsed) === 1) {
115
+ rest++;
116
+ if (rest >= 16) { break; }
117
+ } else {
118
+ rest = 0;
119
+ }
120
+ }
121
+ var duration = elapsed * frame * 1000;
122
+ cache.springs[string] = duration;
123
+ return duration;
124
+ }
125
+
126
+ return duration ? solver : getDuration;
127
+
128
+ }
129
+
130
+ // Elastic easing adapted from jQueryUI http://api.jqueryui.com/easings/
131
+
132
+ function elastic(amplitude, period) {
133
+ if ( amplitude === void 0 ) amplitude = 1;
134
+ if ( period === void 0 ) period = .5;
135
+
136
+ var a = minMax(amplitude, 1, 10);
137
+ var p = minMax(period, .1, 2);
138
+ return function (t) {
139
+ return (t === 0 || t === 1) ? t :
140
+ -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);
141
+ }
142
+ }
143
+
144
+ // Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function
145
+
146
+ function steps(steps) {
147
+ if ( steps === void 0 ) steps = 10;
148
+
149
+ return function (t) { return Math.round(t * steps) * (1 / steps); };
150
+ }
151
+
152
+ // BezierEasing https://github.com/gre/bezier-easing
153
+
154
+ var bezier = (function () {
155
+
156
+ var kSplineTableSize = 11;
157
+ var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
158
+
159
+ function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }
160
+ function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }
161
+ function C(aA1) { return 3.0 * aA1 }
162
+
163
+ function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }
164
+ function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }
165
+
166
+ function binarySubdivide(aX, aA, aB, mX1, mX2) {
167
+ var currentX, currentT, i = 0;
168
+ do {
169
+ currentT = aA + (aB - aA) / 2.0;
170
+ currentX = calcBezier(currentT, mX1, mX2) - aX;
171
+ if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }
172
+ } while (Math.abs(currentX) > 0.0000001 && ++i < 10);
173
+ return currentT;
174
+ }
175
+
176
+ function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
177
+ for (var i = 0; i < 4; ++i) {
178
+ var currentSlope = getSlope(aGuessT, mX1, mX2);
179
+ if (currentSlope === 0.0) { return aGuessT; }
180
+ var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
181
+ aGuessT -= currentX / currentSlope;
182
+ }
183
+ return aGuessT;
184
+ }
185
+
186
+ function bezier(mX1, mY1, mX2, mY2) {
187
+
188
+ if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }
189
+ var sampleValues = new Float32Array(kSplineTableSize);
190
+
191
+ if (mX1 !== mY1 || mX2 !== mY2) {
192
+ for (var i = 0; i < kSplineTableSize; ++i) {
193
+ sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
194
+ }
195
+ }
196
+
197
+ function getTForX(aX) {
198
+
199
+ var intervalStart = 0;
200
+ var currentSample = 1;
201
+ var lastSample = kSplineTableSize - 1;
202
+
203
+ for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
204
+ intervalStart += kSampleStepSize;
205
+ }
206
+
207
+ --currentSample;
208
+
209
+ var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
210
+ var guessForT = intervalStart + dist * kSampleStepSize;
211
+ var initialSlope = getSlope(guessForT, mX1, mX2);
212
+
213
+ if (initialSlope >= 0.001) {
214
+ return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
215
+ } else if (initialSlope === 0.0) {
216
+ return guessForT;
217
+ } else {
218
+ return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
219
+ }
220
+
221
+ }
222
+
223
+ return function (x) {
224
+ if (mX1 === mY1 && mX2 === mY2) { return x; }
225
+ if (x === 0 || x === 1) { return x; }
226
+ return calcBezier(getTForX(x), mY1, mY2);
227
+ }
228
+
229
+ }
230
+
231
+ return bezier;
232
+
233
+ })();
234
+
235
+ var penner = (function () {
236
+
237
+ var names = ['Quad', 'Cubic', 'Quart', 'Quint', 'Sine', 'Expo', 'Circ', 'Back', 'Elastic'];
238
+
239
+ // Approximated Penner equations http://matthewlein.com/ceaser/
240
+
241
+ var curves = {
242
+ In: [
243
+ [0.550, 0.085, 0.680, 0.530], /* inQuad */
244
+ [0.550, 0.055, 0.675, 0.190], /* inCubic */
245
+ [0.895, 0.030, 0.685, 0.220], /* inQuart */
246
+ [0.755, 0.050, 0.855, 0.060], /* inQuint */
247
+ [0.470, 0.000, 0.745, 0.715], /* inSine */
248
+ [0.950, 0.050, 0.795, 0.035], /* inExpo */
249
+ [0.600, 0.040, 0.980, 0.335], /* inCirc */
250
+ [0.600,-0.280, 0.735, 0.045], /* inBack */
251
+ elastic /* inElastic */
252
+ ],
253
+ Out: [
254
+ [0.250, 0.460, 0.450, 0.940], /* outQuad */
255
+ [0.215, 0.610, 0.355, 1.000], /* outCubic */
256
+ [0.165, 0.840, 0.440, 1.000], /* outQuart */
257
+ [0.230, 1.000, 0.320, 1.000], /* outQuint */
258
+ [0.390, 0.575, 0.565, 1.000], /* outSine */
259
+ [0.190, 1.000, 0.220, 1.000], /* outExpo */
260
+ [0.075, 0.820, 0.165, 1.000], /* outCirc */
261
+ [0.175, 0.885, 0.320, 1.275], /* outBack */
262
+ function (a, p) { return function (t) { return 1 - elastic(a, p)(1 - t); }; } /* outElastic */
263
+ ],
264
+ InOut: [
265
+ [0.455, 0.030, 0.515, 0.955], /* inOutQuad */
266
+ [0.645, 0.045, 0.355, 1.000], /* inOutCubic */
267
+ [0.770, 0.000, 0.175, 1.000], /* inOutQuart */
268
+ [0.860, 0.000, 0.070, 1.000], /* inOutQuint */
269
+ [0.445, 0.050, 0.550, 0.950], /* inOutSine */
270
+ [1.000, 0.000, 0.000, 1.000], /* inOutExpo */
271
+ [0.785, 0.135, 0.150, 0.860], /* inOutCirc */
272
+ [0.680,-0.550, 0.265, 1.550], /* inOutBack */
273
+ function (a, p) { return function (t) { return t < .5 ? elastic(a, p)(t * 2) / 2 : 1 - elastic(a, p)(t * -2 + 2) / 2; }; } /* inOutElastic */
274
+ ]
275
+ };
276
+
277
+ var eases = {
278
+ linear: [0.250, 0.250, 0.750, 0.750]
279
+ };
280
+
281
+ var loop = function ( coords ) {
282
+ curves[coords].forEach(function (ease, i) {
283
+ eases['ease'+coords+names[i]] = ease;
284
+ });
285
+ };
286
+
287
+ for (var coords in curves) loop( coords );
288
+
289
+ return eases;
290
+
291
+ })();
292
+
293
+ function parseEasings(easing, duration) {
294
+ if (is.fnc(easing)) { return easing; }
295
+ var name = easing.split('(')[0];
296
+ var ease = penner[name];
297
+ var args = parseEasingParameters(easing);
298
+ switch (name) {
299
+ case 'spring' : return spring(easing, duration);
300
+ case 'cubicBezier' : return applyArguments(bezier, args);
301
+ case 'steps' : return applyArguments(steps, args);
302
+ default : return is.fnc(ease) ? applyArguments(ease, args) : applyArguments(bezier, ease);
303
+ }
304
+ }
305
+
306
+ // Strings
307
+
308
+ function selectString(str) {
309
+ try {
310
+ var nodes = document.querySelectorAll(str);
311
+ return nodes;
312
+ } catch(e) {
313
+ return;
314
+ }
315
+ }
316
+
317
+ // Arrays
318
+
319
+ function filterArray(arr, callback) {
320
+ var len = arr.length;
321
+ var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
322
+ var result = [];
323
+ for (var i = 0; i < len; i++) {
324
+ if (i in arr) {
325
+ var val = arr[i];
326
+ if (callback.call(thisArg, val, i, arr)) {
327
+ result.push(val);
328
+ }
329
+ }
330
+ }
331
+ return result;
332
+ }
333
+
334
+ function flattenArray(arr) {
335
+ return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);
336
+ }
337
+
338
+ function toArray(o) {
339
+ if (is.arr(o)) { return o; }
340
+ if (is.str(o)) { o = selectString(o) || o; }
341
+ if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }
342
+ return [o];
343
+ }
344
+
345
+ function arrayContains(arr, val) {
346
+ return arr.some(function (a) { return a === val; });
347
+ }
348
+
349
+ // Objects
350
+
351
+ function cloneObject(o) {
352
+ var clone = {};
353
+ for (var p in o) { clone[p] = o[p]; }
354
+ return clone;
355
+ }
356
+
357
+ function replaceObjectProps(o1, o2) {
358
+ var o = cloneObject(o1);
359
+ for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }
360
+ return o;
361
+ }
362
+
363
+ function mergeObjects(o1, o2) {
364
+ var o = cloneObject(o1);
365
+ for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }
366
+ return o;
367
+ }
368
+
369
+ // Colors
370
+
371
+ function rgbToRgba(rgbValue) {
372
+ var rgb = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(rgbValue);
373
+ return rgb ? ("rgba(" + (rgb[1]) + ",1)") : rgbValue;
374
+ }
375
+
376
+ function hexToRgba(hexValue) {
377
+ var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
378
+ var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );
379
+ var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
380
+ var r = parseInt(rgb[1], 16);
381
+ var g = parseInt(rgb[2], 16);
382
+ var b = parseInt(rgb[3], 16);
383
+ return ("rgba(" + r + "," + g + "," + b + ",1)");
384
+ }
385
+
386
+ function hslToRgba(hslValue) {
387
+ var hsl = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(hslValue) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(hslValue);
388
+ var h = parseInt(hsl[1], 10) / 360;
389
+ var s = parseInt(hsl[2], 10) / 100;
390
+ var l = parseInt(hsl[3], 10) / 100;
391
+ var a = hsl[4] || 1;
392
+ function hue2rgb(p, q, t) {
393
+ if (t < 0) { t += 1; }
394
+ if (t > 1) { t -= 1; }
395
+ if (t < 1/6) { return p + (q - p) * 6 * t; }
396
+ if (t < 1/2) { return q; }
397
+ if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }
398
+ return p;
399
+ }
400
+ var r, g, b;
401
+ if (s == 0) {
402
+ r = g = b = l;
403
+ } else {
404
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
405
+ var p = 2 * l - q;
406
+ r = hue2rgb(p, q, h + 1/3);
407
+ g = hue2rgb(p, q, h);
408
+ b = hue2rgb(p, q, h - 1/3);
409
+ }
410
+ return ("rgba(" + (r * 255) + "," + (g * 255) + "," + (b * 255) + "," + a + ")");
411
+ }
412
+
413
+ function colorToRgb(val) {
414
+ if (is.rgb(val)) { return rgbToRgba(val); }
415
+ if (is.hex(val)) { return hexToRgba(val); }
416
+ if (is.hsl(val)) { return hslToRgba(val); }
417
+ }
418
+
419
+ // Units
420
+
421
+ function getUnit(val) {
422
+ var split = /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);
423
+ if (split) { return split[2]; }
424
+ }
425
+
426
+ function getTransformUnit(propName) {
427
+ if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }
428
+ if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }
429
+ }
430
+
431
+ // Values
432
+
433
+ function getFunctionValue(val, animatable) {
434
+ if (!is.fnc(val)) { return val; }
435
+ return val(animatable.target, animatable.id, animatable.total);
436
+ }
437
+
438
+ function getAttribute(el, prop) {
439
+ return el.getAttribute(prop);
440
+ }
441
+
442
+ function convertPxToUnit(el, value, unit) {
443
+ var valueUnit = getUnit(value);
444
+ if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }
445
+ var cached = cache.CSS[value + unit];
446
+ if (!is.und(cached)) { return cached; }
447
+ var baseline = 100;
448
+ var tempEl = document.createElement(el.tagName);
449
+ var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;
450
+ parentEl.appendChild(tempEl);
451
+ tempEl.style.position = 'absolute';
452
+ tempEl.style.width = baseline + unit;
453
+ var factor = baseline / tempEl.offsetWidth;
454
+ parentEl.removeChild(tempEl);
455
+ var convertedUnit = factor * parseFloat(value);
456
+ cache.CSS[value + unit] = convertedUnit;
457
+ return convertedUnit;
458
+ }
459
+
460
+ function getCSSValue(el, prop, unit) {
461
+ if (prop in el.style) {
462
+ var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
463
+ var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';
464
+ return unit ? convertPxToUnit(el, value, unit) : value;
465
+ }
466
+ }
467
+
468
+ function getAnimationType(el, prop) {
469
+ if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }
470
+ if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }
471
+ if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }
472
+ if (el[prop] != null) { return 'object'; }
473
+ }
474
+
475
+ function getElementTransforms(el) {
476
+ if (!is.dom(el)) { return; }
477
+ var str = el.style.transform || '';
478
+ var reg = /(\w+)\(([^)]*)\)/g;
479
+ var transforms = new Map();
480
+ var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }
481
+ return transforms;
482
+ }
483
+
484
+ function getTransformValue(el, propName, animatable, unit) {
485
+ var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);
486
+ var value = getElementTransforms(el).get(propName) || defaultVal;
487
+ if (animatable) {
488
+ animatable.transforms.list.set(propName, value);
489
+ animatable.transforms['last'] = propName;
490
+ }
491
+ return unit ? convertPxToUnit(el, value, unit) : value;
492
+ }
493
+
494
+ function getOriginalTargetValue(target, propName, unit, animatable) {
495
+ switch (getAnimationType(target, propName)) {
496
+ case 'transform': return getTransformValue(target, propName, animatable, unit);
497
+ case 'css': return getCSSValue(target, propName, unit);
498
+ case 'attribute': return getAttribute(target, propName);
499
+ default: return target[propName] || 0;
500
+ }
501
+ }
502
+
503
+ function getRelativeValue(to, from) {
504
+ var operator = /^(\*=|\+=|-=)/.exec(to);
505
+ if (!operator) { return to; }
506
+ var u = getUnit(to) || 0;
507
+ var x = parseFloat(from);
508
+ var y = parseFloat(to.replace(operator[0], ''));
509
+ switch (operator[0][0]) {
510
+ case '+': return x + y + u;
511
+ case '-': return x - y + u;
512
+ case '*': return x * y + u;
513
+ }
514
+ }
515
+
516
+ function validateValue(val, unit) {
517
+ if (is.col(val)) { return colorToRgb(val); }
518
+ var originalUnit = getUnit(val);
519
+ var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;
520
+ return unit && !/\s/g.test(val) ? unitLess + unit : unitLess;
521
+ }
522
+
523
+ // getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes
524
+ // adapted from https://gist.github.com/SebLambla/3e0550c496c236709744
525
+
526
+ function getDistance(p1, p2) {
527
+ return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
528
+ }
529
+
530
+ function getCircleLength(el) {
531
+ return Math.PI * 2 * getAttribute(el, 'r');
532
+ }
533
+
534
+ function getRectLength(el) {
535
+ return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);
536
+ }
537
+
538
+ function getLineLength(el) {
539
+ return getDistance(
540
+ {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')},
541
+ {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}
542
+ );
543
+ }
544
+
545
+ function getPolylineLength(el) {
546
+ var points = el.points;
547
+ var totalLength = 0;
548
+ var previousPos;
549
+ for (var i = 0 ; i < points.numberOfItems; i++) {
550
+ var currentPos = points.getItem(i);
551
+ if (i > 0) { totalLength += getDistance(previousPos, currentPos); }
552
+ previousPos = currentPos;
553
+ }
554
+ return totalLength;
555
+ }
556
+
557
+ function getPolygonLength(el) {
558
+ var points = el.points;
559
+ return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));
560
+ }
561
+
562
+ // Path animation
563
+
564
+ function getTotalLength(el) {
565
+ if (el.getTotalLength) { return el.getTotalLength(); }
566
+ switch(el.tagName.toLowerCase()) {
567
+ case 'circle': return getCircleLength(el);
568
+ case 'rect': return getRectLength(el);
569
+ case 'line': return getLineLength(el);
570
+ case 'polyline': return getPolylineLength(el);
571
+ case 'polygon': return getPolygonLength(el);
572
+ }
573
+ }
574
+
575
+ function setDashoffset(el) {
576
+ var pathLength = getTotalLength(el);
577
+ el.setAttribute('stroke-dasharray', pathLength);
578
+ return pathLength;
579
+ }
580
+
581
+ // Motion path
582
+
583
+ function getParentSvgEl(el) {
584
+ var parentEl = el.parentNode;
585
+ while (is.svg(parentEl)) {
586
+ parentEl = parentEl.parentNode;
587
+ if (!is.svg(parentEl.parentNode)) { break; }
588
+ }
589
+ return parentEl;
590
+ }
591
+
592
+ function getParentSvg(pathEl, svgData) {
593
+ var svg = svgData || {};
594
+ var parentSvgEl = svg.el || getParentSvgEl(pathEl);
595
+ var rect = parentSvgEl.getBoundingClientRect();
596
+ var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');
597
+ var width = rect.width;
598
+ var height = rect.height;
599
+ var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);
600
+ return {
601
+ el: parentSvgEl,
602
+ viewBox: viewBox,
603
+ x: viewBox[0] / 1,
604
+ y: viewBox[1] / 1,
605
+ w: width / viewBox[2],
606
+ h: height / viewBox[3]
607
+ }
608
+ }
609
+
610
+ function getPath(path, percent) {
611
+ var pathEl = is.str(path) ? selectString(path)[0] : path;
612
+ var p = percent || 100;
613
+ return function(property) {
614
+ return {
615
+ property: property,
616
+ el: pathEl,
617
+ svg: getParentSvg(pathEl),
618
+ totalLength: getTotalLength(pathEl) * (p / 100)
619
+ }
620
+ }
621
+ }
622
+
623
+ function getPathProgress(path, progress) {
624
+ function point(offset) {
625
+ if ( offset === void 0 ) offset = 0;
626
+
627
+ var l = progress + offset >= 1 ? progress + offset : 0;
628
+ return path.el.getPointAtLength(l);
629
+ }
630
+ var svg = getParentSvg(path.el, path.svg);
631
+ var p = point();
632
+ var p0 = point(-1);
633
+ var p1 = point(+1);
634
+ switch (path.property) {
635
+ case 'x': return (p.x - svg.x) * svg.w;
636
+ case 'y': return (p.y - svg.y) * svg.h;
637
+ case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;
638
+ }
639
+ }
640
+
641
+ // Decompose value
642
+
643
+ function decomposeValue(val, unit) {
644
+ var rgx = /-?\d*\.?\d+/g;
645
+ var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';
646
+ return {
647
+ original: value,
648
+ numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],
649
+ strings: (is.str(val) || unit) ? value.split(rgx) : []
650
+ }
651
+ }
652
+
653
+ // Animatables
654
+
655
+ function parseTargets(targets) {
656
+ var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];
657
+ return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });
658
+ }
659
+
660
+ function getAnimatables(targets) {
661
+ var parsed = parseTargets(targets);
662
+ return parsed.map(function (t, i) {
663
+ return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };
664
+ });
665
+ }
666
+
667
+ // Properties
668
+
669
+ function normalizePropertyTweens(prop, tweenSettings) {
670
+ var settings = cloneObject(tweenSettings);
671
+ // Override duration if easing is a spring
672
+ if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }
673
+ if (is.arr(prop)) {
674
+ var l = prop.length;
675
+ var isFromTo = (l === 2 && !is.obj(prop[0]));
676
+ if (!isFromTo) {
677
+ // Duration divided by the number of tweens
678
+ if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }
679
+ } else {
680
+ // Transform [from, to] values shorthand to a valid tween value
681
+ prop = {value: prop};
682
+ }
683
+ }
684
+ var propArray = is.arr(prop) ? prop : [prop];
685
+ return propArray.map(function (v, i) {
686
+ var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};
687
+ // Default delay value should only be applied to the first tween
688
+ if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }
689
+ // Default endDelay value should only be applied to the last tween
690
+ if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }
691
+ return obj;
692
+ }).map(function (k) { return mergeObjects(k, settings); });
693
+ }
694
+
695
+
696
+ function flattenKeyframes(keyframes) {
697
+ var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })
698
+ .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);
699
+ var properties = {};
700
+ var loop = function ( i ) {
701
+ var propName = propertyNames[i];
702
+ properties[propName] = keyframes.map(function (key) {
703
+ var newKey = {};
704
+ for (var p in key) {
705
+ if (is.key(p)) {
706
+ if (p == propName) { newKey.value = key[p]; }
707
+ } else {
708
+ newKey[p] = key[p];
709
+ }
710
+ }
711
+ return newKey;
712
+ });
713
+ };
714
+
715
+ for (var i = 0; i < propertyNames.length; i++) loop( i );
716
+ return properties;
717
+ }
718
+
719
+ function getProperties(tweenSettings, params) {
720
+ var properties = [];
721
+ var keyframes = params.keyframes;
722
+ if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }
723
+ for (var p in params) {
724
+ if (is.key(p)) {
725
+ properties.push({
726
+ name: p,
727
+ tweens: normalizePropertyTweens(params[p], tweenSettings)
728
+ });
729
+ }
730
+ }
731
+ return properties;
732
+ }
733
+
734
+ // Tweens
735
+
736
+ function normalizeTweenValues(tween, animatable) {
737
+ var t = {};
738
+ for (var p in tween) {
739
+ var value = getFunctionValue(tween[p], animatable);
740
+ if (is.arr(value)) {
741
+ value = value.map(function (v) { return getFunctionValue(v, animatable); });
742
+ if (value.length === 1) { value = value[0]; }
743
+ }
744
+ t[p] = value;
745
+ }
746
+ t.duration = parseFloat(t.duration);
747
+ t.delay = parseFloat(t.delay);
748
+ return t;
749
+ }
750
+
751
+ function normalizeTweens(prop, animatable) {
752
+ var previousTween;
753
+ return prop.tweens.map(function (t) {
754
+ var tween = normalizeTweenValues(t, animatable);
755
+ var tweenValue = tween.value;
756
+ var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;
757
+ var toUnit = getUnit(to);
758
+ var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);
759
+ var previousValue = previousTween ? previousTween.to.original : originalValue;
760
+ var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;
761
+ var fromUnit = getUnit(from) || getUnit(originalValue);
762
+ var unit = toUnit || fromUnit;
763
+ if (is.und(to)) { to = previousValue; }
764
+ tween.from = decomposeValue(from, unit);
765
+ tween.to = decomposeValue(getRelativeValue(to, from), unit);
766
+ tween.start = previousTween ? previousTween.end : 0;
767
+ tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;
768
+ tween.easing = parseEasings(tween.easing, tween.duration);
769
+ tween.isPath = is.pth(tweenValue);
770
+ tween.isColor = is.col(tween.from.original);
771
+ if (tween.isColor) { tween.round = 1; }
772
+ previousTween = tween;
773
+ return tween;
774
+ });
775
+ }
776
+
777
+ // Tween progress
778
+
779
+ var setProgressValue = {
780
+ css: function (t, p, v) { return t.style[p] = v; },
781
+ attribute: function (t, p, v) { return t.setAttribute(p, v); },
782
+ object: function (t, p, v) { return t[p] = v; },
783
+ transform: function (t, p, v, transforms, manual) {
784
+ transforms.list.set(p, v);
785
+ if (p === transforms.last || manual) {
786
+ var str = '';
787
+ transforms.list.forEach(function (value, prop) { str += prop + "(" + value + ") "; });
788
+ t.style.transform = str;
789
+ }
790
+ }
791
+ };
792
+
793
+ // Set Value helper
794
+
795
+ function setTargetsValue(targets, properties) {
796
+ var animatables = getAnimatables(targets);
797
+ animatables.forEach(function (animatable) {
798
+ for (var property in properties) {
799
+ var value = getFunctionValue(properties[property], animatable);
800
+ var target = animatable.target;
801
+ var valueUnit = getUnit(value);
802
+ var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);
803
+ var unit = valueUnit || getUnit(originalValue);
804
+ var to = getRelativeValue(validateValue(value, unit), originalValue);
805
+ var animType = getAnimationType(target, property);
806
+ setProgressValue[animType](target, property, to, animatable.transforms, true);
807
+ }
808
+ });
809
+ }
810
+
811
+ // Animations
812
+
813
+ function createAnimation(animatable, prop) {
814
+ var animType = getAnimationType(animatable.target, prop.name);
815
+ if (animType) {
816
+ var tweens = normalizeTweens(prop, animatable);
817
+ var lastTween = tweens[tweens.length - 1];
818
+ return {
819
+ type: animType,
820
+ property: prop.name,
821
+ animatable: animatable,
822
+ tweens: tweens,
823
+ duration: lastTween.end,
824
+ delay: tweens[0].delay,
825
+ endDelay: lastTween.endDelay
826
+ }
827
+ }
828
+ }
829
+
830
+ function getAnimations(animatables, properties) {
831
+ return filterArray(flattenArray(animatables.map(function (animatable) {
832
+ return properties.map(function (prop) {
833
+ return createAnimation(animatable, prop);
834
+ });
835
+ })), function (a) { return !is.und(a); });
836
+ }
837
+
838
+ // Create Instance
839
+
840
+ function getInstanceTimings(animations, tweenSettings) {
841
+ var animLength = animations.length;
842
+ var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };
843
+ var timings = {};
844
+ timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;
845
+ timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;
846
+ timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;
847
+ return timings;
848
+ }
849
+
850
+ var instanceID = 0;
851
+
852
+ function createNewInstance(params) {
853
+ var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);
854
+ var tweenSettings = replaceObjectProps(defaultTweenSettings, params);
855
+ var properties = getProperties(tweenSettings, params);
856
+ var animatables = getAnimatables(params.targets);
857
+ var animations = getAnimations(animatables, properties);
858
+ var timings = getInstanceTimings(animations, tweenSettings);
859
+ var id = instanceID;
860
+ instanceID++;
861
+ return mergeObjects(instanceSettings, {
862
+ id: id,
863
+ children: [],
864
+ animatables: animatables,
865
+ animations: animations,
866
+ duration: timings.duration,
867
+ delay: timings.delay,
868
+ endDelay: timings.endDelay
869
+ });
870
+ }
871
+
872
+ // Core
873
+
874
+ var activeInstances = [];
875
+ var pausedInstances = [];
876
+ var raf;
877
+
878
+ var engine = (function () {
879
+ function play() {
880
+ raf = requestAnimationFrame(step);
881
+ }
882
+ function step(t) {
883
+ var activeInstancesLength = activeInstances.length;
884
+ if (activeInstancesLength) {
885
+ var i = 0;
886
+ while (i < activeInstancesLength) {
887
+ var activeInstance = activeInstances[i];
888
+ if (!activeInstance.paused) {
889
+ activeInstance.tick(t);
890
+ } else {
891
+ var instanceIndex = activeInstances.indexOf(activeInstance);
892
+ if (instanceIndex > -1) {
893
+ activeInstances.splice(instanceIndex, 1);
894
+ activeInstancesLength = activeInstances.length;
895
+ }
896
+ }
897
+ i++;
898
+ }
899
+ play();
900
+ } else {
901
+ raf = cancelAnimationFrame(raf);
902
+ }
903
+ }
904
+ return play;
905
+ })();
906
+
907
+ function handleVisibilityChange() {
908
+ if (document.hidden) {
909
+ activeInstances.forEach(function (ins) { return ins.pause(); });
910
+ pausedInstances = activeInstances.slice(0);
911
+ activeInstances = [];
912
+ } else {
913
+ pausedInstances.forEach(function (ins) { return ins.play(); });
914
+ }
915
+ }
916
+
917
+ if (typeof document !== 'undefined') {
918
+ document.addEventListener('visibilitychange', handleVisibilityChange);
919
+ }
920
+
921
+ // Public Instance
922
+
923
+ function anime(params) {
924
+ if ( params === void 0 ) params = {};
925
+
926
+
927
+ var startTime = 0, lastTime = 0, now = 0;
928
+ var children, childrenLength = 0;
929
+ var resolve = null;
930
+
931
+ function makePromise(instance) {
932
+ var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });
933
+ instance.finished = promise;
934
+ return promise;
935
+ }
936
+
937
+ var instance = createNewInstance(params);
938
+ var promise = makePromise(instance);
939
+
940
+ function toggleInstanceDirection() {
941
+ var direction = instance.direction;
942
+ if (direction !== 'alternate') {
943
+ instance.direction = direction !== 'normal' ? 'normal' : 'reverse';
944
+ }
945
+ instance.reversed = !instance.reversed;
946
+ children.forEach(function (child) { return child.reversed = instance.reversed; });
947
+ }
948
+
949
+ function adjustTime(time) {
950
+ return instance.reversed ? instance.duration - time : time;
951
+ }
952
+
953
+ function resetTime() {
954
+ startTime = 0;
955
+ lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);
956
+ }
957
+
958
+ function seekCild(time, child) {
959
+ if (child) { child.seek(time - child.timelineOffset); }
960
+ }
961
+
962
+ function syncInstanceChildren(time) {
963
+ if (!instance.reversePlayback) {
964
+ for (var i = 0; i < childrenLength; i++) { seekCild(time, children[i]); }
965
+ } else {
966
+ for (var i$1 = childrenLength; i$1--;) { seekCild(time, children[i$1]); }
967
+ }
968
+ }
969
+
970
+ function setAnimationsProgress(insTime) {
971
+ var i = 0;
972
+ var animations = instance.animations;
973
+ var animationsLength = animations.length;
974
+ while (i < animationsLength) {
975
+ var anim = animations[i];
976
+ var animatable = anim.animatable;
977
+ var tweens = anim.tweens;
978
+ var tweenLength = tweens.length - 1;
979
+ var tween = tweens[tweenLength];
980
+ // Only check for keyframes if there is more than one tween
981
+ if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }
982
+ var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;
983
+ var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);
984
+ var strings = tween.to.strings;
985
+ var round = tween.round;
986
+ var numbers = [];
987
+ var toNumbersLength = tween.to.numbers.length;
988
+ var progress = (void 0);
989
+ for (var n = 0; n < toNumbersLength; n++) {
990
+ var value = (void 0);
991
+ var toNumber = tween.to.numbers[n];
992
+ var fromNumber = tween.from.numbers[n] || 0;
993
+ if (!tween.isPath) {
994
+ value = fromNumber + (eased * (toNumber - fromNumber));
995
+ } else {
996
+ value = getPathProgress(tween.value, eased * toNumber);
997
+ }
998
+ if (round) {
999
+ if (!(tween.isColor && n > 2)) {
1000
+ value = Math.round(value * round) / round;
1001
+ }
1002
+ }
1003
+ numbers.push(value);
1004
+ }
1005
+ // Manual Array.reduce for better performances
1006
+ var stringsLength = strings.length;
1007
+ if (!stringsLength) {
1008
+ progress = numbers[0];
1009
+ } else {
1010
+ progress = strings[0];
1011
+ for (var s = 0; s < stringsLength; s++) {
1012
+ var a = strings[s];
1013
+ var b = strings[s + 1];
1014
+ var n$1 = numbers[s];
1015
+ if (!isNaN(n$1)) {
1016
+ if (!b) {
1017
+ progress += n$1 + ' ';
1018
+ } else {
1019
+ progress += n$1 + b;
1020
+ }
1021
+ }
1022
+ }
1023
+ }
1024
+ setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);
1025
+ anim.currentValue = progress;
1026
+ i++;
1027
+ }
1028
+ }
1029
+
1030
+ function setCallback(cb) {
1031
+ if (instance[cb] && !instance.passThrough) { instance[cb](instance); }
1032
+ }
1033
+
1034
+ function countIteration() {
1035
+ if (instance.remaining && instance.remaining !== true) {
1036
+ instance.remaining--;
1037
+ }
1038
+ }
1039
+
1040
+ function setInstanceProgress(engineTime) {
1041
+ var insDuration = instance.duration;
1042
+ var insDelay = instance.delay;
1043
+ var insEndDelay = insDuration - instance.endDelay;
1044
+ var insTime = adjustTime(engineTime);
1045
+ instance.progress = minMax((insTime / insDuration) * 100, 0, 100);
1046
+ instance.reversePlayback = insTime < instance.currentTime;
1047
+ if (children) { syncInstanceChildren(insTime); }
1048
+ if (!instance.began && instance.currentTime > 0) {
1049
+ instance.began = true;
1050
+ setCallback('begin');
1051
+ setCallback('loopBegin');
1052
+ }
1053
+ if (insTime <= insDelay && instance.currentTime !== 0) {
1054
+ setAnimationsProgress(0);
1055
+ }
1056
+ if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {
1057
+ setAnimationsProgress(insDuration);
1058
+ }
1059
+ if (insTime > insDelay && insTime < insEndDelay) {
1060
+ if (!instance.changeBegan) {
1061
+ instance.changeBegan = true;
1062
+ instance.changeCompleted = false;
1063
+ setCallback('changeBegin');
1064
+ }
1065
+ setCallback('change');
1066
+ setAnimationsProgress(insTime);
1067
+ } else {
1068
+ if (instance.changeBegan) {
1069
+ instance.changeCompleted = true;
1070
+ instance.changeBegan = false;
1071
+ setCallback('changeComplete');
1072
+ }
1073
+ }
1074
+ instance.currentTime = minMax(insTime, 0, insDuration);
1075
+ if (instance.began) { setCallback('update'); }
1076
+ if (engineTime >= insDuration) {
1077
+ lastTime = 0;
1078
+ countIteration();
1079
+ if (instance.remaining) {
1080
+ startTime = now;
1081
+ setCallback('loopComplete');
1082
+ setCallback('loopBegin');
1083
+ if (instance.direction === 'alternate') { toggleInstanceDirection(); }
1084
+ } else {
1085
+ instance.paused = true;
1086
+ if (!instance.completed) {
1087
+ instance.completed = true;
1088
+ setCallback('loopComplete');
1089
+ setCallback('complete');
1090
+ if (!instance.passThrough && 'Promise' in window) {
1091
+ resolve();
1092
+ promise = makePromise(instance);
1093
+ }
1094
+ }
1095
+ }
1096
+ }
1097
+ }
1098
+
1099
+ instance.reset = function() {
1100
+ var direction = instance.direction;
1101
+ instance.passThrough = false;
1102
+ instance.currentTime = 0;
1103
+ instance.progress = 0;
1104
+ instance.paused = true;
1105
+ instance.began = false;
1106
+ instance.changeBegan = false;
1107
+ instance.completed = false;
1108
+ instance.changeCompleted = false;
1109
+ instance.reversePlayback = false;
1110
+ instance.reversed = direction === 'reverse';
1111
+ instance.remaining = instance.loop;
1112
+ children = instance.children;
1113
+ childrenLength = children.length;
1114
+ for (var i = childrenLength; i--;) { instance.children[i].reset(); }
1115
+ if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }
1116
+ setAnimationsProgress(0);
1117
+ };
1118
+
1119
+ // Set Value helper
1120
+
1121
+ instance.set = function(targets, properties) {
1122
+ setTargetsValue(targets, properties);
1123
+ return instance;
1124
+ };
1125
+
1126
+ instance.tick = function(t) {
1127
+ now = t;
1128
+ if (!startTime) { startTime = now; }
1129
+ setInstanceProgress((now + (lastTime - startTime)) * anime.speed);
1130
+ };
1131
+
1132
+ instance.seek = function(time) {
1133
+ setInstanceProgress(adjustTime(time));
1134
+ };
1135
+
1136
+ instance.pause = function() {
1137
+ instance.paused = true;
1138
+ resetTime();
1139
+ };
1140
+
1141
+ instance.play = function() {
1142
+ if (!instance.paused) { return; }
1143
+ if (instance.completed) { instance.reset(); }
1144
+ instance.paused = false;
1145
+ activeInstances.push(instance);
1146
+ resetTime();
1147
+ if (!raf) { engine(); }
1148
+ };
1149
+
1150
+ instance.reverse = function() {
1151
+ toggleInstanceDirection();
1152
+ resetTime();
1153
+ };
1154
+
1155
+ instance.restart = function() {
1156
+ instance.reset();
1157
+ instance.play();
1158
+ };
1159
+
1160
+ instance.reset();
1161
+
1162
+ if (instance.autoplay) { instance.play(); }
1163
+
1164
+ return instance;
1165
+
1166
+ }
1167
+
1168
+ // Remove targets from animation
1169
+
1170
+ function removeTargetsFromAnimations(targetsArray, animations) {
1171
+ for (var a = animations.length; a--;) {
1172
+ if (arrayContains(targetsArray, animations[a].animatable.target)) {
1173
+ animations.splice(a, 1);
1174
+ }
1175
+ }
1176
+ }
1177
+
1178
+ function removeTargets(targets) {
1179
+ var targetsArray = parseTargets(targets);
1180
+ for (var i = activeInstances.length; i--;) {
1181
+ var instance = activeInstances[i];
1182
+ var animations = instance.animations;
1183
+ var children = instance.children;
1184
+ removeTargetsFromAnimations(targetsArray, animations);
1185
+ for (var c = children.length; c--;) {
1186
+ var child = children[c];
1187
+ var childAnimations = child.animations;
1188
+ removeTargetsFromAnimations(targetsArray, childAnimations);
1189
+ if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }
1190
+ }
1191
+ if (!animations.length && !children.length) { instance.pause(); }
1192
+ }
1193
+ }
1194
+
1195
+ // Stagger helpers
1196
+
1197
+ function stagger(val, params) {
1198
+ if ( params === void 0 ) params = {};
1199
+
1200
+ var direction = params.direction || 'normal';
1201
+ var easing = params.easing ? parseEasings(params.easing) : null;
1202
+ var grid = params.grid;
1203
+ var axis = params.axis;
1204
+ var fromIndex = params.from || 0;
1205
+ var fromFirst = fromIndex === 'first';
1206
+ var fromCenter = fromIndex === 'center';
1207
+ var fromLast = fromIndex === 'last';
1208
+ var isRange = is.arr(val);
1209
+ var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);
1210
+ var val2 = isRange ? parseFloat(val[1]) : 0;
1211
+ var unit = getUnit(isRange ? val[1] : val) || 0;
1212
+ var start = params.start || 0 + (isRange ? val1 : 0);
1213
+ var values = [];
1214
+ var maxValue = 0;
1215
+ return function (el, i, t) {
1216
+ if (fromFirst) { fromIndex = 0; }
1217
+ if (fromCenter) { fromIndex = (t - 1) / 2; }
1218
+ if (fromLast) { fromIndex = t - 1; }
1219
+ if (!values.length) {
1220
+ for (var index = 0; index < t; index++) {
1221
+ if (!grid) {
1222
+ values.push(Math.abs(fromIndex - index));
1223
+ } else {
1224
+ var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;
1225
+ var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;
1226
+ var toX = index%grid[0];
1227
+ var toY = Math.floor(index/grid[0]);
1228
+ var distanceX = fromX - toX;
1229
+ var distanceY = fromY - toY;
1230
+ var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);
1231
+ if (axis === 'x') { value = -distanceX; }
1232
+ if (axis === 'y') { value = -distanceY; }
1233
+ values.push(value);
1234
+ }
1235
+ maxValue = Math.max.apply(Math, values);
1236
+ }
1237
+ if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }
1238
+ if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }
1239
+ }
1240
+ var spacing = isRange ? (val2 - val1) / maxValue : val1;
1241
+ return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;
1242
+ }
1243
+ }
1244
+
1245
+ // Timeline
1246
+
1247
+ function timeline(params) {
1248
+ if ( params === void 0 ) params = {};
1249
+
1250
+ var tl = anime(params);
1251
+ tl.duration = 0;
1252
+ tl.add = function(instanceParams, timelineOffset) {
1253
+ var tlIndex = activeInstances.indexOf(tl);
1254
+ var children = tl.children;
1255
+ if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }
1256
+ function passThrough(ins) { ins.passThrough = true; }
1257
+ for (var i = 0; i < children.length; i++) { passThrough(children[i]); }
1258
+ var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));
1259
+ insParams.targets = insParams.targets || params.targets;
1260
+ var tlDuration = tl.duration;
1261
+ insParams.autoplay = false;
1262
+ insParams.direction = tl.direction;
1263
+ insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);
1264
+ passThrough(tl);
1265
+ tl.seek(insParams.timelineOffset);
1266
+ var ins = anime(insParams);
1267
+ passThrough(ins);
1268
+ children.push(ins);
1269
+ var timings = getInstanceTimings(children, params);
1270
+ tl.delay = timings.delay;
1271
+ tl.endDelay = timings.endDelay;
1272
+ tl.duration = timings.duration;
1273
+ tl.seek(0);
1274
+ tl.reset();
1275
+ if (tl.autoplay) { tl.play(); }
1276
+ return tl;
1277
+ };
1278
+ return tl;
1279
+ }
1280
+
1281
+ anime.version = '3.0.1';
1282
+ anime.speed = 1;
1283
+ anime.running = activeInstances;
1284
+ anime.remove = removeTargets;
1285
+ anime.get = getOriginalTargetValue;
1286
+ anime.set = setTargetsValue;
1287
+ anime.convertPx = convertPxToUnit;
1288
+ anime.path = getPath;
1289
+ anime.setDashoffset = setDashoffset;
1290
+ anime.stagger = stagger;
1291
+ anime.timeline = timeline;
1292
+ anime.easing = parseEasings;
1293
+ anime.penner = penner;
1294
+ anime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };
1295
+
1296
+ export default anime;
assets/vendor/anime/lib/anime.js ADDED
@@ -0,0 +1,1298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * anime.js v3.0.1
3
+ * (c) 2019 Julian Garnier
4
+ * Released under the MIT license
5
+ * animejs.com
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ // Defaults
11
+
12
+ var defaultInstanceSettings = {
13
+ update: null,
14
+ begin: null,
15
+ loopBegin: null,
16
+ changeBegin: null,
17
+ change: null,
18
+ changeComplete: null,
19
+ loopComplete: null,
20
+ complete: null,
21
+ loop: 1,
22
+ direction: 'normal',
23
+ autoplay: true,
24
+ timelineOffset: 0
25
+ };
26
+
27
+ var defaultTweenSettings = {
28
+ duration: 1000,
29
+ delay: 0,
30
+ endDelay: 0,
31
+ easing: 'easeOutElastic(1, .5)',
32
+ round: 0
33
+ };
34
+
35
+ var validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective'];
36
+
37
+ // Caching
38
+
39
+ var cache = {
40
+ CSS: {},
41
+ springs: {}
42
+ };
43
+
44
+ // Utils
45
+
46
+ function minMax(val, min, max) {
47
+ return Math.min(Math.max(val, min), max);
48
+ }
49
+
50
+ function stringContains(str, text) {
51
+ return str.indexOf(text) > -1;
52
+ }
53
+
54
+ function applyArguments(func, args) {
55
+ return func.apply(null, args);
56
+ }
57
+
58
+ var is = {
59
+ arr: function (a) { return Array.isArray(a); },
60
+ obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },
61
+ pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },
62
+ svg: function (a) { return a instanceof SVGElement; },
63
+ inp: function (a) { return a instanceof HTMLInputElement; },
64
+ dom: function (a) { return a.nodeType || is.svg(a); },
65
+ str: function (a) { return typeof a === 'string'; },
66
+ fnc: function (a) { return typeof a === 'function'; },
67
+ und: function (a) { return typeof a === 'undefined'; },
68
+ hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },
69
+ rgb: function (a) { return /^rgb/.test(a); },
70
+ hsl: function (a) { return /^hsl/.test(a); },
71
+ col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },
72
+ key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; }
73
+ };
74
+
75
+ // Easings
76
+
77
+ function parseEasingParameters(string) {
78
+ var match = /\(([^)]+)\)/.exec(string);
79
+ return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];
80
+ }
81
+
82
+ // Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js
83
+
84
+ function spring(string, duration) {
85
+
86
+ var params = parseEasingParameters(string);
87
+ var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);
88
+ var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);
89
+ var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);
90
+ var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);
91
+ var w0 = Math.sqrt(stiffness / mass);
92
+ var zeta = damping / (2 * Math.sqrt(stiffness * mass));
93
+ var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;
94
+ var a = 1;
95
+ var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;
96
+
97
+ function solver(t) {
98
+ var progress = duration ? (duration * t) / 1000 : t;
99
+ if (zeta < 1) {
100
+ progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));
101
+ } else {
102
+ progress = (a + b * progress) * Math.exp(-progress * w0);
103
+ }
104
+ if (t === 0 || t === 1) { return t; }
105
+ return 1 - progress;
106
+ }
107
+
108
+ function getDuration() {
109
+ var cached = cache.springs[string];
110
+ if (cached) { return cached; }
111
+ var frame = 1/6;
112
+ var elapsed = 0;
113
+ var rest = 0;
114
+ while(true) {
115
+ elapsed += frame;
116
+ if (solver(elapsed) === 1) {
117
+ rest++;
118
+ if (rest >= 16) { break; }
119
+ } else {
120
+ rest = 0;
121
+ }
122
+ }
123
+ var duration = elapsed * frame * 1000;
124
+ cache.springs[string] = duration;
125
+ return duration;
126
+ }
127
+
128
+ return duration ? solver : getDuration;
129
+
130
+ }
131
+
132
+ // Elastic easing adapted from jQueryUI http://api.jqueryui.com/easings/
133
+
134
+ function elastic(amplitude, period) {
135
+ if ( amplitude === void 0 ) amplitude = 1;
136
+ if ( period === void 0 ) period = .5;
137
+
138
+ var a = minMax(amplitude, 1, 10);
139
+ var p = minMax(period, .1, 2);
140
+ return function (t) {
141
+ return (t === 0 || t === 1) ? t :
142
+ -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);
143
+ }
144
+ }
145
+
146
+ // Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function
147
+
148
+ function steps(steps) {
149
+ if ( steps === void 0 ) steps = 10;
150
+
151
+ return function (t) { return Math.round(t * steps) * (1 / steps); };
152
+ }
153
+
154
+ // BezierEasing https://github.com/gre/bezier-easing
155
+
156
+ var bezier = (function () {
157
+
158
+ var kSplineTableSize = 11;
159
+ var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
160
+
161
+ function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }
162
+ function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }
163
+ function C(aA1) { return 3.0 * aA1 }
164
+
165
+ function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }
166
+ function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }
167
+
168
+ function binarySubdivide(aX, aA, aB, mX1, mX2) {
169
+ var currentX, currentT, i = 0;
170
+ do {
171
+ currentT = aA + (aB - aA) / 2.0;
172
+ currentX = calcBezier(currentT, mX1, mX2) - aX;
173
+ if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }
174
+ } while (Math.abs(currentX) > 0.0000001 && ++i < 10);
175
+ return currentT;
176
+ }
177
+
178
+ function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {
179
+ for (var i = 0; i < 4; ++i) {
180
+ var currentSlope = getSlope(aGuessT, mX1, mX2);
181
+ if (currentSlope === 0.0) { return aGuessT; }
182
+ var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
183
+ aGuessT -= currentX / currentSlope;
184
+ }
185
+ return aGuessT;
186
+ }
187
+
188
+ function bezier(mX1, mY1, mX2, mY2) {
189
+
190
+ if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }
191
+ var sampleValues = new Float32Array(kSplineTableSize);
192
+
193
+ if (mX1 !== mY1 || mX2 !== mY2) {
194
+ for (var i = 0; i < kSplineTableSize; ++i) {
195
+ sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
196
+ }
197
+ }
198
+
199
+ function getTForX(aX) {
200
+
201
+ var intervalStart = 0;
202
+ var currentSample = 1;
203
+ var lastSample = kSplineTableSize - 1;
204
+
205
+ for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
206
+ intervalStart += kSampleStepSize;
207
+ }
208
+
209
+ --currentSample;
210
+
211
+ var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
212
+ var guessForT = intervalStart + dist * kSampleStepSize;
213
+ var initialSlope = getSlope(guessForT, mX1, mX2);
214
+
215
+ if (initialSlope >= 0.001) {
216
+ return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
217
+ } else if (initialSlope === 0.0) {
218
+ return guessForT;
219
+ } else {
220
+ return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
221
+ }
222
+
223
+ }
224
+
225
+ return function (x) {
226
+ if (mX1 === mY1 && mX2 === mY2) { return x; }
227
+ if (x === 0 || x === 1) { return x; }
228
+ return calcBezier(getTForX(x), mY1, mY2);
229
+ }
230
+
231
+ }
232
+
233
+ return bezier;
234
+
235
+ })();
236
+
237
+ var penner = (function () {
238
+
239
+ var names = ['Quad', 'Cubic', 'Quart', 'Quint', 'Sine', 'Expo', 'Circ', 'Back', 'Elastic'];
240
+
241
+ // Approximated Penner equations http://matthewlein.com/ceaser/
242
+
243
+ var curves = {
244
+ In: [
245
+ [0.550, 0.085, 0.680, 0.530], /* inQuad */
246
+ [0.550, 0.055, 0.675, 0.190], /* inCubic */
247
+ [0.895, 0.030, 0.685, 0.220], /* inQuart */
248
+ [0.755, 0.050, 0.855, 0.060], /* inQuint */
249
+ [0.470, 0.000, 0.745, 0.715], /* inSine */
250
+ [0.950, 0.050, 0.795, 0.035], /* inExpo */
251
+ [0.600, 0.040, 0.980, 0.335], /* inCirc */
252
+ [0.600,-0.280, 0.735, 0.045], /* inBack */
253
+ elastic /* inElastic */
254
+ ],
255
+ Out: [
256
+ [0.250, 0.460, 0.450, 0.940], /* outQuad */
257
+ [0.215, 0.610, 0.355, 1.000], /* outCubic */
258
+ [0.165, 0.840, 0.440, 1.000], /* outQuart */
259
+ [0.230, 1.000, 0.320, 1.000], /* outQuint */
260
+ [0.390, 0.575, 0.565, 1.000], /* outSine */
261
+ [0.190, 1.000, 0.220, 1.000], /* outExpo */
262
+ [0.075, 0.820, 0.165, 1.000], /* outCirc */
263
+ [0.175, 0.885, 0.320, 1.275], /* outBack */
264
+ function (a, p) { return function (t) { return 1 - elastic(a, p)(1 - t); }; } /* outElastic */
265
+ ],
266
+ InOut: [
267
+ [0.455, 0.030, 0.515, 0.955], /* inOutQuad */
268
+ [0.645, 0.045, 0.355, 1.000], /* inOutCubic */
269
+ [0.770, 0.000, 0.175, 1.000], /* inOutQuart */
270
+ [0.860, 0.000, 0.070, 1.000], /* inOutQuint */
271
+ [0.445, 0.050, 0.550, 0.950], /* inOutSine */
272
+ [1.000, 0.000, 0.000, 1.000], /* inOutExpo */
273
+ [0.785, 0.135, 0.150, 0.860], /* inOutCirc */
274
+ [0.680,-0.550, 0.265, 1.550], /* inOutBack */
275
+ function (a, p) { return function (t) { return t < .5 ? elastic(a, p)(t * 2) / 2 : 1 - elastic(a, p)(t * -2 + 2) / 2; }; } /* inOutElastic */
276
+ ]
277
+ };
278
+
279
+ var eases = {
280
+ linear: [0.250, 0.250, 0.750, 0.750]
281
+ };
282
+
283
+ var loop = function ( coords ) {
284
+ curves[coords].forEach(function (ease, i) {
285
+ eases['ease'+coords+names[i]] = ease;
286
+ });
287
+ };
288
+
289
+ for (var coords in curves) loop( coords );
290
+
291
+ return eases;
292
+
293
+ })();
294
+
295
+ function parseEasings(easing, duration) {
296
+ if (is.fnc(easing)) { return easing; }
297
+ var name = easing.split('(')[0];
298
+ var ease = penner[name];
299
+ var args = parseEasingParameters(easing);
300
+ switch (name) {
301
+ case 'spring' : return spring(easing, duration);
302
+ case 'cubicBezier' : return applyArguments(bezier, args);
303
+ case 'steps' : return applyArguments(steps, args);
304
+ default : return is.fnc(ease) ? applyArguments(ease, args) : applyArguments(bezier, ease);
305
+ }
306
+ }
307
+
308
+ // Strings
309
+
310
+ function selectString(str) {
311
+ try {
312
+ var nodes = document.querySelectorAll(str);
313
+ return nodes;
314
+ } catch(e) {
315
+ return;
316
+ }
317
+ }
318
+
319
+ // Arrays
320
+
321
+ function filterArray(arr, callback) {
322
+ var len = arr.length;
323
+ var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
324
+ var result = [];
325
+ for (var i = 0; i < len; i++) {
326
+ if (i in arr) {
327
+ var val = arr[i];
328
+ if (callback.call(thisArg, val, i, arr)) {
329
+ result.push(val);
330
+ }
331
+ }
332
+ }
333
+ return result;
334
+ }
335
+
336
+ function flattenArray(arr) {
337
+ return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);
338
+ }
339
+
340
+ function toArray(o) {
341
+ if (is.arr(o)) { return o; }
342
+ if (is.str(o)) { o = selectString(o) || o; }
343
+ if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }
344
+ return [o];
345
+ }
346
+
347
+ function arrayContains(arr, val) {
348
+ return arr.some(function (a) { return a === val; });
349
+ }
350
+
351
+ // Objects
352
+
353
+ function cloneObject(o) {
354
+ var clone = {};
355
+ for (var p in o) { clone[p] = o[p]; }
356
+ return clone;
357
+ }
358
+
359
+ function replaceObjectProps(o1, o2) {
360
+ var o = cloneObject(o1);
361
+ for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }
362
+ return o;
363
+ }
364
+
365
+ function mergeObjects(o1, o2) {
366
+ var o = cloneObject(o1);
367
+ for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }
368
+ return o;
369
+ }
370
+
371
+ // Colors
372
+
373
+ function rgbToRgba(rgbValue) {
374
+ var rgb = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(rgbValue);
375
+ return rgb ? ("rgba(" + (rgb[1]) + ",1)") : rgbValue;
376
+ }
377
+
378
+ function hexToRgba(hexValue) {
379
+ var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
380
+ var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );
381
+ var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
382
+ var r = parseInt(rgb[1], 16);
383
+ var g = parseInt(rgb[2], 16);
384
+ var b = parseInt(rgb[3], 16);
385
+ return ("rgba(" + r + "," + g + "," + b + ",1)");
386
+ }
387
+
388
+ function hslToRgba(hslValue) {
389
+ var hsl = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(hslValue) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(hslValue);
390
+ var h = parseInt(hsl[1], 10) / 360;
391
+ var s = parseInt(hsl[2], 10) / 100;
392
+ var l = parseInt(hsl[3], 10) / 100;
393
+ var a = hsl[4] || 1;
394
+ function hue2rgb(p, q, t) {
395
+ if (t < 0) { t += 1; }
396
+ if (t > 1) { t -= 1; }
397
+ if (t < 1/6) { return p + (q - p) * 6 * t; }
398
+ if (t < 1/2) { return q; }
399
+ if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }
400
+ return p;
401
+ }
402
+ var r, g, b;
403
+ if (s == 0) {
404
+ r = g = b = l;
405
+ } else {
406
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
407
+ var p = 2 * l - q;
408
+ r = hue2rgb(p, q, h + 1/3);
409
+ g = hue2rgb(p, q, h);
410
+ b = hue2rgb(p, q, h - 1/3);
411
+ }
412
+ return ("rgba(" + (r * 255) + "," + (g * 255) + "," + (b * 255) + "," + a + ")");
413
+ }
414
+
415
+ function colorToRgb(val) {
416
+ if (is.rgb(val)) { return rgbToRgba(val); }
417
+ if (is.hex(val)) { return hexToRgba(val); }
418
+ if (is.hsl(val)) { return hslToRgba(val); }
419
+ }
420
+
421
+ // Units
422
+
423
+ function getUnit(val) {
424
+ var split = /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);
425
+ if (split) { return split[2]; }
426
+ }
427
+
428
+ function getTransformUnit(propName) {
429
+ if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }
430
+ if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }
431
+ }
432
+
433
+ // Values
434
+
435
+ function getFunctionValue(val, animatable) {
436
+ if (!is.fnc(val)) { return val; }
437
+ return val(animatable.target, animatable.id, animatable.total);
438
+ }
439
+
440
+ function getAttribute(el, prop) {
441
+ return el.getAttribute(prop);
442
+ }
443
+
444
+ function convertPxToUnit(el, value, unit) {
445
+ var valueUnit = getUnit(value);
446
+ if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }
447
+ var cached = cache.CSS[value + unit];
448
+ if (!is.und(cached)) { return cached; }
449
+ var baseline = 100;
450
+ var tempEl = document.createElement(el.tagName);
451
+ var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;
452
+ parentEl.appendChild(tempEl);
453
+ tempEl.style.position = 'absolute';
454
+ tempEl.style.width = baseline + unit;
455
+ var factor = baseline / tempEl.offsetWidth;
456
+ parentEl.removeChild(tempEl);
457
+ var convertedUnit = factor * parseFloat(value);
458
+ cache.CSS[value + unit] = convertedUnit;
459
+ return convertedUnit;
460
+ }
461
+
462
+ function getCSSValue(el, prop, unit) {
463
+ if (prop in el.style) {
464
+ var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
465
+ var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';
466
+ return unit ? convertPxToUnit(el, value, unit) : value;
467
+ }
468
+ }
469
+
470
+ function getAnimationType(el, prop) {
471
+ if (is.dom(el) && !is.inp(el) && (getAttribute(el, prop) || (is.svg(el) && el[prop]))) { return 'attribute'; }
472
+ if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }
473
+ if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }
474
+ if (el[prop] != null) { return 'object'; }
475
+ }
476
+
477
+ function getElementTransforms(el) {
478
+ if (!is.dom(el)) { return; }
479
+ var str = el.style.transform || '';
480
+ var reg = /(\w+)\(([^)]*)\)/g;
481
+ var transforms = new Map();
482
+ var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }
483
+ return transforms;
484
+ }
485
+
486
+ function getTransformValue(el, propName, animatable, unit) {
487
+ var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);
488
+ var value = getElementTransforms(el).get(propName) || defaultVal;
489
+ if (animatable) {
490
+ animatable.transforms.list.set(propName, value);
491
+ animatable.transforms['last'] = propName;
492
+ }
493
+ return unit ? convertPxToUnit(el, value, unit) : value;
494
+ }
495
+
496
+ function getOriginalTargetValue(target, propName, unit, animatable) {
497
+ switch (getAnimationType(target, propName)) {
498
+ case 'transform': return getTransformValue(target, propName, animatable, unit);
499
+ case 'css': return getCSSValue(target, propName, unit);
500
+ case 'attribute': return getAttribute(target, propName);
501
+ default: return target[propName] || 0;
502
+ }
503
+ }
504
+
505
+ function getRelativeValue(to, from) {
506
+ var operator = /^(\*=|\+=|-=)/.exec(to);
507
+ if (!operator) { return to; }
508
+ var u = getUnit(to) || 0;
509
+ var x = parseFloat(from);
510
+ var y = parseFloat(to.replace(operator[0], ''));
511
+ switch (operator[0][0]) {
512
+ case '+': return x + y + u;
513
+ case '-': return x - y + u;
514
+ case '*': return x * y + u;
515
+ }
516
+ }
517
+
518
+ function validateValue(val, unit) {
519
+ if (is.col(val)) { return colorToRgb(val); }
520
+ var originalUnit = getUnit(val);
521
+ var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;
522
+ return unit && !/\s/g.test(val) ? unitLess + unit : unitLess;
523
+ }
524
+
525
+ // getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes
526
+ // adapted from https://gist.github.com/SebLambla/3e0550c496c236709744
527
+
528
+ function getDistance(p1, p2) {
529
+ return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
530
+ }
531
+
532
+ function getCircleLength(el) {
533
+ return Math.PI * 2 * getAttribute(el, 'r');
534
+ }
535
+
536
+ function getRectLength(el) {
537
+ return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);
538
+ }
539
+
540
+ function getLineLength(el) {
541
+ return getDistance(
542
+ {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')},
543
+ {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}
544
+ );
545
+ }
546
+
547
+ function getPolylineLength(el) {
548
+ var points = el.points;
549
+ var totalLength = 0;
550
+ var previousPos;
551
+ for (var i = 0 ; i < points.numberOfItems; i++) {
552
+ var currentPos = points.getItem(i);
553
+ if (i > 0) { totalLength += getDistance(previousPos, currentPos); }
554
+ previousPos = currentPos;
555
+ }
556
+ return totalLength;
557
+ }
558
+
559
+ function getPolygonLength(el) {
560
+ var points = el.points;
561
+ return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));
562
+ }
563
+
564
+ // Path animation
565
+
566
+ function getTotalLength(el) {
567
+ if (el.getTotalLength) { return el.getTotalLength(); }
568
+ switch(el.tagName.toLowerCase()) {
569
+ case 'circle': return getCircleLength(el);
570
+ case 'rect': return getRectLength(el);
571
+ case 'line': return getLineLength(el);
572
+ case 'polyline': return getPolylineLength(el);
573
+ case 'polygon': return getPolygonLength(el);
574
+ }
575
+ }
576
+
577
+ function setDashoffset(el) {
578
+ var pathLength = getTotalLength(el);
579
+ el.setAttribute('stroke-dasharray', pathLength);
580
+ return pathLength;
581
+ }
582
+
583
+ // Motion path
584
+
585
+ function getParentSvgEl(el) {
586
+ var parentEl = el.parentNode;
587
+ while (is.svg(parentEl)) {
588
+ parentEl = parentEl.parentNode;
589
+ if (!is.svg(parentEl.parentNode)) { break; }
590
+ }
591
+ return parentEl;
592
+ }
593
+
594
+ function getParentSvg(pathEl, svgData) {
595
+ var svg = svgData || {};
596
+ var parentSvgEl = svg.el || getParentSvgEl(pathEl);
597
+ var rect = parentSvgEl.getBoundingClientRect();
598
+ var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');
599
+ var width = rect.width;
600
+ var height = rect.height;
601
+ var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);
602
+ return {
603
+ el: parentSvgEl,
604
+ viewBox: viewBox,
605
+ x: viewBox[0] / 1,
606
+ y: viewBox[1] / 1,
607
+ w: width / viewBox[2],
608
+ h: height / viewBox[3]
609
+ }
610
+ }
611
+
612
+ function getPath(path, percent) {
613
+ var pathEl = is.str(path) ? selectString(path)[0] : path;
614
+ var p = percent || 100;
615
+ return function(property) {
616
+ return {
617
+ property: property,
618
+ el: pathEl,
619
+ svg: getParentSvg(pathEl),
620
+ totalLength: getTotalLength(pathEl) * (p / 100)
621
+ }
622
+ }
623
+ }
624
+
625
+ function getPathProgress(path, progress) {
626
+ function point(offset) {
627
+ if ( offset === void 0 ) offset = 0;
628
+
629
+ var l = progress + offset >= 1 ? progress + offset : 0;
630
+ return path.el.getPointAtLength(l);
631
+ }
632
+ var svg = getParentSvg(path.el, path.svg);
633
+ var p = point();
634
+ var p0 = point(-1);
635
+ var p1 = point(+1);
636
+ switch (path.property) {
637
+ case 'x': return (p.x - svg.x) * svg.w;
638
+ case 'y': return (p.y - svg.y) * svg.h;
639
+ case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;
640
+ }
641
+ }
642
+
643
+ // Decompose value
644
+
645
+ function decomposeValue(val, unit) {
646
+ var rgx = /-?\d*\.?\d+/g;
647
+ var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';
648
+ return {
649
+ original: value,
650
+ numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],
651
+ strings: (is.str(val) || unit) ? value.split(rgx) : []
652
+ }
653
+ }
654
+
655
+ // Animatables
656
+
657
+ function parseTargets(targets) {
658
+ var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];
659
+ return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });
660
+ }
661
+
662
+ function getAnimatables(targets) {
663
+ var parsed = parseTargets(targets);
664
+ return parsed.map(function (t, i) {
665
+ return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };
666
+ });
667
+ }
668
+
669
+ // Properties
670
+
671
+ function normalizePropertyTweens(prop, tweenSettings) {
672
+ var settings = cloneObject(tweenSettings);
673
+ // Override duration if easing is a spring
674
+ if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }
675
+ if (is.arr(prop)) {
676
+ var l = prop.length;
677
+ var isFromTo = (l === 2 && !is.obj(prop[0]));
678
+ if (!isFromTo) {
679
+ // Duration divided by the number of tweens
680
+ if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }
681
+ } else {
682
+ // Transform [from, to] values shorthand to a valid tween value
683
+ prop = {value: prop};
684
+ }
685
+ }
686
+ var propArray = is.arr(prop) ? prop : [prop];
687
+ return propArray.map(function (v, i) {
688
+ var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};
689
+ // Default delay value should only be applied to the first tween
690
+ if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }
691
+ // Default endDelay value should only be applied to the last tween
692
+ if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }
693
+ return obj;
694
+ }).map(function (k) { return mergeObjects(k, settings); });
695
+ }
696
+
697
+
698
+ function flattenKeyframes(keyframes) {
699
+ var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })
700
+ .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);
701
+ var properties = {};
702
+ var loop = function ( i ) {
703
+ var propName = propertyNames[i];
704
+ properties[propName] = keyframes.map(function (key) {
705
+ var newKey = {};
706
+ for (var p in key) {
707
+ if (is.key(p)) {
708
+ if (p == propName) { newKey.value = key[p]; }
709
+ } else {
710
+ newKey[p] = key[p];
711
+ }
712
+ }
713
+ return newKey;
714
+ });
715
+ };
716
+
717
+ for (var i = 0; i < propertyNames.length; i++) loop( i );
718
+ return properties;
719
+ }
720
+
721
+ function getProperties(tweenSettings, params) {
722
+ var properties = [];
723
+ var keyframes = params.keyframes;
724
+ if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }
725
+ for (var p in params) {
726
+ if (is.key(p)) {
727
+ properties.push({
728
+ name: p,
729
+ tweens: normalizePropertyTweens(params[p], tweenSettings)
730
+ });
731
+ }
732
+ }
733
+ return properties;
734
+ }
735
+
736
+ // Tweens
737
+
738
+ function normalizeTweenValues(tween, animatable) {
739
+ var t = {};
740
+ for (var p in tween) {
741
+ var value = getFunctionValue(tween[p], animatable);
742
+ if (is.arr(value)) {
743
+ value = value.map(function (v) { return getFunctionValue(v, animatable); });
744
+ if (value.length === 1) { value = value[0]; }
745
+ }
746
+ t[p] = value;
747
+ }
748
+ t.duration = parseFloat(t.duration);
749
+ t.delay = parseFloat(t.delay);
750
+ return t;
751
+ }
752
+
753
+ function normalizeTweens(prop, animatable) {
754
+ var previousTween;
755
+ return prop.tweens.map(function (t) {
756
+ var tween = normalizeTweenValues(t, animatable);
757
+ var tweenValue = tween.value;
758
+ var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;
759
+ var toUnit = getUnit(to);
760
+ var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);
761
+ var previousValue = previousTween ? previousTween.to.original : originalValue;
762
+ var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;
763
+ var fromUnit = getUnit(from) || getUnit(originalValue);
764
+ var unit = toUnit || fromUnit;
765
+ if (is.und(to)) { to = previousValue; }
766
+ tween.from = decomposeValue(from, unit);
767
+ tween.to = decomposeValue(getRelativeValue(to, from), unit);
768
+ tween.start = previousTween ? previousTween.end : 0;
769
+ tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;
770
+ tween.easing = parseEasings(tween.easing, tween.duration);
771
+ tween.isPath = is.pth(tweenValue);
772
+ tween.isColor = is.col(tween.from.original);
773
+ if (tween.isColor) { tween.round = 1; }
774
+ previousTween = tween;
775
+ return tween;
776
+ });
777
+ }
778
+
779
+ // Tween progress
780
+
781
+ var setProgressValue = {
782
+ css: function (t, p, v) { return t.style[p] = v; },
783
+ attribute: function (t, p, v) { return t.setAttribute(p, v); },
784
+ object: function (t, p, v) { return t[p] = v; },
785
+ transform: function (t, p, v, transforms, manual) {
786
+ transforms.list.set(p, v);
787
+ if (p === transforms.last || manual) {
788
+ var str = '';
789
+ transforms.list.forEach(function (value, prop) { str += prop + "(" + value + ") "; });
790
+ t.style.transform = str;
791
+ }
792
+ }
793
+ };
794
+
795
+ // Set Value helper
796
+
797
+ function setTargetsValue(targets, properties) {
798
+ var animatables = getAnimatables(targets);
799
+ animatables.forEach(function (animatable) {
800
+ for (var property in properties) {
801
+ var value = getFunctionValue(properties[property], animatable);
802
+ var target = animatable.target;
803
+ var valueUnit = getUnit(value);
804
+ var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);
805
+ var unit = valueUnit || getUnit(originalValue);
806
+ var to = getRelativeValue(validateValue(value, unit), originalValue);
807
+ var animType = getAnimationType(target, property);
808
+ setProgressValue[animType](target, property, to, animatable.transforms, true);
809
+ }
810
+ });
811
+ }
812
+
813
+ // Animations
814
+
815
+ function createAnimation(animatable, prop) {
816
+ var animType = getAnimationType(animatable.target, prop.name);
817
+ if (animType) {
818
+ var tweens = normalizeTweens(prop, animatable);
819
+ var lastTween = tweens[tweens.length - 1];
820
+ return {
821
+ type: animType,
822
+ property: prop.name,
823
+ animatable: animatable,
824
+ tweens: tweens,
825
+ duration: lastTween.end,
826
+ delay: tweens[0].delay,
827
+ endDelay: lastTween.endDelay
828
+ }
829
+ }
830
+ }
831
+
832
+ function getAnimations(animatables, properties) {
833
+ return filterArray(flattenArray(animatables.map(function (animatable) {
834
+ return properties.map(function (prop) {
835
+ return createAnimation(animatable, prop);
836
+ });
837
+ })), function (a) { return !is.und(a); });
838
+ }
839
+
840
+ // Create Instance
841
+
842
+ function getInstanceTimings(animations, tweenSettings) {
843
+ var animLength = animations.length;
844
+ var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };
845
+ var timings = {};
846
+ timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;
847
+ timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;
848
+ timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;
849
+ return timings;
850
+ }
851
+
852
+ var instanceID = 0;
853
+
854
+ function createNewInstance(params) {
855
+ var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);
856
+ var tweenSettings = replaceObjectProps(defaultTweenSettings, params);
857
+ var properties = getProperties(tweenSettings, params);
858
+ var animatables = getAnimatables(params.targets);
859
+ var animations = getAnimations(animatables, properties);
860
+ var timings = getInstanceTimings(animations, tweenSettings);
861
+ var id = instanceID;
862
+ instanceID++;
863
+ return mergeObjects(instanceSettings, {
864
+ id: id,
865
+ children: [],
866
+ animatables: animatables,
867
+ animations: animations,
868
+ duration: timings.duration,
869
+ delay: timings.delay,
870
+ endDelay: timings.endDelay
871
+ });
872
+ }
873
+
874
+ // Core
875
+
876
+ var activeInstances = [];
877
+ var pausedInstances = [];
878
+ var raf;
879
+
880
+ var engine = (function () {
881
+ function play() {
882
+ raf = requestAnimationFrame(step);
883
+ }
884
+ function step(t) {
885
+ var activeInstancesLength = activeInstances.length;
886
+ if (activeInstancesLength) {
887
+ var i = 0;
888
+ while (i < activeInstancesLength) {
889
+ var activeInstance = activeInstances[i];
890
+ if (!activeInstance.paused) {
891
+ activeInstance.tick(t);
892
+ } else {
893
+ var instanceIndex = activeInstances.indexOf(activeInstance);
894
+ if (instanceIndex > -1) {
895
+ activeInstances.splice(instanceIndex, 1);
896
+ activeInstancesLength = activeInstances.length;
897
+ }
898
+ }
899
+ i++;
900
+ }
901
+ play();
902
+ } else {
903
+ raf = cancelAnimationFrame(raf);
904
+ }
905
+ }
906
+ return play;
907
+ })();
908
+
909
+ function handleVisibilityChange() {
910
+ if (document.hidden) {
911
+ activeInstances.forEach(function (ins) { return ins.pause(); });
912
+ pausedInstances = activeInstances.slice(0);
913
+ activeInstances = [];
914
+ } else {
915
+ pausedInstances.forEach(function (ins) { return ins.play(); });
916
+ }
917
+ }
918
+
919
+ if (typeof document !== 'undefined') {
920
+ document.addEventListener('visibilitychange', handleVisibilityChange);
921
+ }
922
+
923
+ // Public Instance
924
+
925
+ function anime(params) {
926
+ if ( params === void 0 ) params = {};
927
+
928
+
929
+ var startTime = 0, lastTime = 0, now = 0;
930
+ var children, childrenLength = 0;
931
+ var resolve = null;
932
+
933
+ function makePromise(instance) {
934
+ var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });
935
+ instance.finished = promise;
936
+ return promise;
937
+ }
938
+
939
+ var instance = createNewInstance(params);
940
+ var promise = makePromise(instance);
941
+
942
+ function toggleInstanceDirection() {
943
+ var direction = instance.direction;
944
+ if (direction !== 'alternate') {
945
+ instance.direction = direction !== 'normal' ? 'normal' : 'reverse';
946
+ }
947
+ instance.reversed = !instance.reversed;
948
+ children.forEach(function (child) { return child.reversed = instance.reversed; });
949
+ }
950
+
951
+ function adjustTime(time) {
952
+ return instance.reversed ? instance.duration - time : time;
953
+ }
954
+
955
+ function resetTime() {
956
+ startTime = 0;
957
+ lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);
958
+ }
959
+
960
+ function seekCild(time, child) {
961
+ if (child) { child.seek(time - child.timelineOffset); }
962
+ }
963
+
964
+ function syncInstanceChildren(time) {
965
+ if (!instance.reversePlayback) {
966
+ for (var i = 0; i < childrenLength; i++) { seekCild(time, children[i]); }
967
+ } else {
968
+ for (var i$1 = childrenLength; i$1--;) { seekCild(time, children[i$1]); }
969
+ }
970
+ }
971
+
972
+ function setAnimationsProgress(insTime) {
973
+ var i = 0;
974
+ var animations = instance.animations;
975
+ var animationsLength = animations.length;
976
+ while (i < animationsLength) {
977
+ var anim = animations[i];
978
+ var animatable = anim.animatable;
979
+ var tweens = anim.tweens;
980
+ var tweenLength = tweens.length - 1;
981
+ var tween = tweens[tweenLength];
982
+ // Only check for keyframes if there is more than one tween
983
+ if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }
984
+ var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;
985
+ var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);
986
+ var strings = tween.to.strings;
987
+ var round = tween.round;
988
+ var numbers = [];
989
+ var toNumbersLength = tween.to.numbers.length;
990
+ var progress = (void 0);
991
+ for (var n = 0; n < toNumbersLength; n++) {
992
+ var value = (void 0);
993
+ var toNumber = tween.to.numbers[n];
994
+ var fromNumber = tween.from.numbers[n] || 0;
995
+ if (!tween.isPath) {
996
+ value = fromNumber + (eased * (toNumber - fromNumber));
997
+ } else {
998
+ value = getPathProgress(tween.value, eased * toNumber);
999
+ }
1000
+ if (round) {
1001
+ if (!(tween.isColor && n > 2)) {
1002
+ value = Math.round(value * round) / round;
1003
+ }
1004
+ }
1005
+ numbers.push(value);
1006
+ }
1007
+ // Manual Array.reduce for better performances
1008
+ var stringsLength = strings.length;
1009
+ if (!stringsLength) {
1010
+ progress = numbers[0];
1011
+ } else {
1012
+ progress = strings[0];
1013
+ for (var s = 0; s < stringsLength; s++) {
1014
+ var a = strings[s];
1015
+ var b = strings[s + 1];
1016
+ var n$1 = numbers[s];
1017
+ if (!isNaN(n$1)) {
1018
+ if (!b) {
1019
+ progress += n$1 + ' ';
1020
+ } else {
1021
+ progress += n$1 + b;
1022
+ }
1023
+ }
1024
+ }
1025
+ }
1026
+ setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);
1027
+ anim.currentValue = progress;
1028
+ i++;
1029
+ }
1030
+ }
1031
+
1032
+ function setCallback(cb) {
1033
+ if (instance[cb] && !instance.passThrough) { instance[cb](instance); }
1034
+ }
1035
+
1036
+ function countIteration() {
1037
+ if (instance.remaining && instance.remaining !== true) {
1038
+ instance.remaining--;
1039
+ }
1040
+ }
1041
+
1042
+ function setInstanceProgress(engineTime) {
1043
+ var insDuration = instance.duration;
1044
+ var insDelay = instance.delay;
1045
+ var insEndDelay = insDuration - instance.endDelay;
1046
+ var insTime = adjustTime(engineTime);
1047
+ instance.progress = minMax((insTime / insDuration) * 100, 0, 100);
1048
+ instance.reversePlayback = insTime < instance.currentTime;
1049
+ if (children) { syncInstanceChildren(insTime); }
1050
+ if (!instance.began && instance.currentTime > 0) {
1051
+ instance.began = true;
1052
+ setCallback('begin');
1053
+ setCallback('loopBegin');
1054
+ }
1055
+ if (insTime <= insDelay && instance.currentTime !== 0) {
1056
+ setAnimationsProgress(0);
1057
+ }
1058
+ if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {
1059
+ setAnimationsProgress(insDuration);
1060
+ }
1061
+ if (insTime > insDelay && insTime < insEndDelay) {
1062
+ if (!instance.changeBegan) {
1063
+ instance.changeBegan = true;
1064
+ instance.changeCompleted = false;
1065
+ setCallback('changeBegin');
1066
+ }
1067
+ setCallback('change');
1068
+ setAnimationsProgress(insTime);
1069
+ } else {
1070
+ if (instance.changeBegan) {
1071
+ instance.changeCompleted = true;
1072
+ instance.changeBegan = false;
1073
+ setCallback('changeComplete');
1074
+ }
1075
+ }
1076
+ instance.currentTime = minMax(insTime, 0, insDuration);
1077
+ if (instance.began) { setCallback('update'); }
1078
+ if (engineTime >= insDuration) {
1079
+ lastTime = 0;
1080
+ countIteration();
1081
+ if (instance.remaining) {
1082
+ startTime = now;
1083
+ setCallback('loopComplete');
1084
+ setCallback('loopBegin');
1085
+ if (instance.direction === 'alternate') { toggleInstanceDirection(); }
1086
+ } else {
1087
+ instance.paused = true;
1088
+ if (!instance.completed) {
1089
+ instance.completed = true;
1090
+ setCallback('loopComplete');
1091
+ setCallback('complete');
1092
+ if (!instance.passThrough && 'Promise' in window) {
1093
+ resolve();
1094
+ promise = makePromise(instance);
1095
+ }
1096
+ }
1097
+ }
1098
+ }
1099
+ }
1100
+
1101
+ instance.reset = function() {
1102
+ var direction = instance.direction;
1103
+ instance.passThrough = false;
1104
+ instance.currentTime = 0;
1105
+ instance.progress = 0;
1106
+ instance.paused = true;
1107
+ instance.began = false;
1108
+ instance.changeBegan = false;
1109
+ instance.completed = false;
1110
+ instance.changeCompleted = false;
1111
+ instance.reversePlayback = false;
1112
+ instance.reversed = direction === 'reverse';
1113
+ instance.remaining = instance.loop;
1114
+ children = instance.children;
1115
+ childrenLength = children.length;
1116
+ for (var i = childrenLength; i--;) { instance.children[i].reset(); }
1117
+ if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }
1118
+ setAnimationsProgress(0);
1119
+ };
1120
+
1121
+ // Set Value helper
1122
+
1123
+ instance.set = function(targets, properties) {
1124
+ setTargetsValue(targets, properties);
1125
+ return instance;
1126
+ };
1127
+
1128
+ instance.tick = function(t) {
1129
+ now = t;
1130
+ if (!startTime) { startTime = now; }
1131
+ setInstanceProgress((now + (lastTime - startTime)) * anime.speed);
1132
+ };
1133
+
1134
+ instance.seek = function(time) {
1135
+ setInstanceProgress(adjustTime(time));
1136
+ };
1137
+
1138
+ instance.pause = function() {
1139
+ instance.paused = true;
1140
+ resetTime();
1141
+ };
1142
+
1143
+ instance.play = function() {
1144
+ if (!instance.paused) { return; }
1145
+ if (instance.completed) { instance.reset(); }
1146
+ instance.paused = false;
1147
+ activeInstances.push(instance);
1148
+ resetTime();
1149
+ if (!raf) { engine(); }
1150
+ };
1151
+
1152
+ instance.reverse = function() {
1153
+ toggleInstanceDirection();
1154
+ resetTime();
1155
+ };
1156
+
1157
+ instance.restart = function() {
1158
+ instance.reset();
1159
+ instance.play();
1160
+ };
1161
+
1162
+ instance.reset();
1163
+
1164
+ if (instance.autoplay) { instance.play(); }
1165
+
1166
+ return instance;
1167
+
1168
+ }
1169
+
1170
+ // Remove targets from animation
1171
+
1172
+ function removeTargetsFromAnimations(targetsArray, animations) {
1173
+ for (var a = animations.length; a--;) {
1174
+ if (arrayContains(targetsArray, animations[a].animatable.target)) {
1175
+ animations.splice(a, 1);
1176
+ }
1177
+ }
1178
+ }
1179
+
1180
+ function removeTargets(targets) {
1181
+ var targetsArray = parseTargets(targets);
1182
+ for (var i = activeInstances.length; i--;) {
1183
+ var instance = activeInstances[i];
1184
+ var animations = instance.animations;
1185
+ var children = instance.children;
1186
+ removeTargetsFromAnimations(targetsArray, animations);
1187
+ for (var c = children.length; c--;) {
1188
+ var child = children[c];
1189
+ var childAnimations = child.animations;
1190
+ removeTargetsFromAnimations(targetsArray, childAnimations);
1191
+ if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }
1192
+ }
1193
+ if (!animations.length && !children.length) { instance.pause(); }
1194
+ }
1195
+ }
1196
+
1197
+ // Stagger helpers
1198
+
1199
+ function stagger(val, params) {
1200
+ if ( params === void 0 ) params = {};
1201
+
1202
+ var direction = params.direction || 'normal';
1203
+ var easing = params.easing ? parseEasings(params.easing) : null;
1204
+ var grid = params.grid;
1205
+ var axis = params.axis;
1206
+ var fromIndex = params.from || 0;
1207
+ var fromFirst = fromIndex === 'first';
1208
+ var fromCenter = fromIndex === 'center';
1209
+ var fromLast = fromIndex === 'last';
1210
+ var isRange = is.arr(val);
1211
+ var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);
1212
+ var val2 = isRange ? parseFloat(val[1]) : 0;
1213
+ var unit = getUnit(isRange ? val[1] : val) || 0;
1214
+ var start = params.start || 0 + (isRange ? val1 : 0);
1215
+ var values = [];
1216
+ var maxValue = 0;
1217
+ return function (el, i, t) {
1218
+ if (fromFirst) { fromIndex = 0; }
1219
+ if (fromCenter) { fromIndex = (t - 1) / 2; }
1220
+ if (fromLast) { fromIndex = t - 1; }
1221
+ if (!values.length) {
1222
+ for (var index = 0; index < t; index++) {
1223
+ if (!grid) {
1224
+ values.push(Math.abs(fromIndex - index));
1225
+ } else {
1226
+ var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;
1227
+ var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;
1228
+ var toX = index%grid[0];
1229
+ var toY = Math.floor(index/grid[0]);
1230
+ var distanceX = fromX - toX;
1231
+ var distanceY = fromY - toY;
1232
+ var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);
1233
+ if (axis === 'x') { value = -distanceX; }
1234
+ if (axis === 'y') { value = -distanceY; }
1235
+ values.push(value);
1236
+ }
1237
+ maxValue = Math.max.apply(Math, values);
1238
+ }
1239
+ if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }
1240
+ if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }
1241
+ }
1242
+ var spacing = isRange ? (val2 - val1) / maxValue : val1;
1243
+ return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;
1244
+ }
1245
+ }
1246
+
1247
+ // Timeline
1248
+
1249
+ function timeline(params) {
1250
+ if ( params === void 0 ) params = {};
1251
+
1252
+ var tl = anime(params);
1253
+ tl.duration = 0;
1254
+ tl.add = function(instanceParams, timelineOffset) {
1255
+ var tlIndex = activeInstances.indexOf(tl);
1256
+ var children = tl.children;
1257
+ if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }
1258
+ function passThrough(ins) { ins.passThrough = true; }
1259
+ for (var i = 0; i < children.length; i++) { passThrough(children[i]); }
1260
+ var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));
1261
+ insParams.targets = insParams.targets || params.targets;
1262
+ var tlDuration = tl.duration;
1263
+ insParams.autoplay = false;
1264
+ insParams.direction = tl.direction;
1265
+ insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);
1266
+ passThrough(tl);
1267
+ tl.seek(insParams.timelineOffset);
1268
+ var ins = anime(insParams);
1269
+ passThrough(ins);
1270
+ children.push(ins);
1271
+ var timings = getInstanceTimings(children, params);
1272
+ tl.delay = timings.delay;
1273
+ tl.endDelay = timings.endDelay;
1274
+ tl.duration = timings.duration;
1275
+ tl.seek(0);
1276
+ tl.reset();
1277
+ if (tl.autoplay) { tl.play(); }
1278
+ return tl;
1279
+ };
1280
+ return tl;
1281
+ }
1282
+
1283
+ anime.version = '3.0.1';
1284
+ anime.speed = 1;
1285
+ anime.running = activeInstances;
1286
+ anime.remove = removeTargets;
1287
+ anime.get = getOriginalTargetValue;
1288
+ anime.set = setTargetsValue;
1289
+ anime.convertPx = convertPxToUnit;
1290
+ anime.path = getPath;
1291
+ anime.setDashoffset = setDashoffset;
1292
+ anime.stagger = stagger;
1293
+ anime.timeline = timeline;
1294
+ anime.easing = parseEasings;
1295
+ anime.penner = penner;
1296
+ anime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };
1297
+
1298
+ module.exports = anime;
assets/vendor/anime/lib/anime.min.js ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ /*
2
+ * anime.js v3.0.1
3
+ * (c) 2019 Julian Garnier
4
+ * Released under the MIT license
5
+ * animejs.com
6
+ */
7
+
8
+ !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):n.anime=e()}(this,function(){"use strict";var n={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},e={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},r=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective"],t={CSS:{},springs:{}};function a(n,e,r){return Math.min(Math.max(n,e),r)}function o(n,e){return n.indexOf(e)>-1}function i(n,e){return n.apply(null,e)}var u={arr:function(n){return Array.isArray(n)},obj:function(n){return o(Object.prototype.toString.call(n),"Object")},pth:function(n){return u.obj(n)&&n.hasOwnProperty("totalLength")},svg:function(n){return n instanceof SVGElement},inp:function(n){return n instanceof HTMLInputElement},dom:function(n){return n.nodeType||u.svg(n)},str:function(n){return"string"==typeof n},fnc:function(n){return"function"==typeof n},und:function(n){return void 0===n},hex:function(n){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(n)},rgb:function(n){return/^rgb/.test(n)},hsl:function(n){return/^hsl/.test(n)},col:function(n){return u.hex(n)||u.rgb(n)||u.hsl(n)},key:function(r){return!n.hasOwnProperty(r)&&!e.hasOwnProperty(r)&&"targets"!==r&&"keyframes"!==r}};function s(n){var e=/\(([^)]+)\)/.exec(n);return e?e[1].split(",").map(function(n){return parseFloat(n)}):[]}function c(n,e){var r=s(n),o=a(u.und(r[0])?1:r[0],.1,100),i=a(u.und(r[1])?100:r[1],.1,100),c=a(u.und(r[2])?10:r[2],.1,100),f=a(u.und(r[3])?0:r[3],.1,100),l=Math.sqrt(i/o),d=c/(2*Math.sqrt(i*o)),p=d<1?l*Math.sqrt(1-d*d):0,v=1,h=d<1?(d*l-f)/p:-f+l;function g(n){var r=e?e*n/1e3:n;return r=d<1?Math.exp(-r*d*l)*(v*Math.cos(p*r)+h*Math.sin(p*r)):(v+h*r)*Math.exp(-r*l),0===n||1===n?n:1-r}return e?g:function(){var e=t.springs[n];if(e)return e;for(var r=0,a=0;;)if(1===g(r+=1/6)){if(++a>=16)break}else a=0;var o=r*(1/6)*1e3;return t.springs[n]=o,o}}function f(n,e){void 0===n&&(n=1),void 0===e&&(e=.5);var r=a(n,1,10),t=a(e,.1,2);return function(n){return 0===n||1===n?n:-r*Math.pow(2,10*(n-1))*Math.sin((n-1-t/(2*Math.PI)*Math.asin(1/r))*(2*Math.PI)/t)}}function l(n){return void 0===n&&(n=10),function(e){return Math.round(e*n)*(1/n)}}var d=function(){var n=11,e=1/(n-1);function r(n,e){return 1-3*e+3*n}function t(n,e){return 3*e-6*n}function a(n){return 3*n}function o(n,e,o){return((r(e,o)*n+t(e,o))*n+a(e))*n}function i(n,e,o){return 3*r(e,o)*n*n+2*t(e,o)*n+a(e)}return function(r,t,a,u){if(0<=r&&r<=1&&0<=a&&a<=1){var s=new Float32Array(n);if(r!==t||a!==u)for(var c=0;c<n;++c)s[c]=o(c*e,r,a);return function(n){return r===t&&a===u?n:0===n||1===n?n:o(f(n),t,u)}}function f(t){for(var u=0,c=1,f=n-1;c!==f&&s[c]<=t;++c)u+=e;var l=u+(t-s[--c])/(s[c+1]-s[c])*e,d=i(l,r,a);return d>=.001?function(n,e,r,t){for(var a=0;a<4;++a){var u=i(e,r,t);if(0===u)return e;e-=(o(e,r,t)-n)/u}return e}(t,l,r,a):0===d?l:function(n,e,r,t,a){for(var i,u,s=0;(i=o(u=e+(r-e)/2,t,a)-n)>0?r=u:e=u,Math.abs(i)>1e-7&&++s<10;);return u}(t,u,u+e,r,a)}}}(),p=function(){var n=["Quad","Cubic","Quart","Quint","Sine","Expo","Circ","Back","Elastic"],e={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],f],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(n,e){return function(r){return 1-f(n,e)(1-r)}}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(n,e){return function(r){return r<.5?f(n,e)(2*r)/2:1-f(n,e)(-2*r+2)/2}}]},r={linear:[.25,.25,.75,.75]},t=function(t){e[t].forEach(function(e,a){r["ease"+t+n[a]]=e})};for(var a in e)t(a);return r}();function v(n,e){if(u.fnc(n))return n;var r=n.split("(")[0],t=p[r],a=s(n);switch(r){case"spring":return c(n,e);case"cubicBezier":return i(d,a);case"steps":return i(l,a);default:return u.fnc(t)?i(t,a):i(d,t)}}function h(n){try{return document.querySelectorAll(n)}catch(n){return}}function g(n,e){for(var r=n.length,t=arguments.length>=2?arguments[1]:void 0,a=[],o=0;o<r;o++)if(o in n){var i=n[o];e.call(t,i,o,n)&&a.push(i)}return a}function m(n){return n.reduce(function(n,e){return n.concat(u.arr(e)?m(e):e)},[])}function y(n){return u.arr(n)?n:(u.str(n)&&(n=h(n)||n),n instanceof NodeList||n instanceof HTMLCollection?[].slice.call(n):[n])}function b(n,e){return n.some(function(n){return n===e})}function x(n){var e={};for(var r in n)e[r]=n[r];return e}function M(n,e){var r=x(n);for(var t in n)r[t]=e.hasOwnProperty(t)?e[t]:n[t];return r}function w(n,e){var r=x(n);for(var t in e)r[t]=u.und(n[t])?e[t]:n[t];return r}function k(n){return u.rgb(n)?(r=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(e=n))?"rgba("+r[1]+",1)":e:u.hex(n)?(t=n.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,function(n,e,r,t){return e+e+r+r+t+t}),a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t),"rgba("+parseInt(a[1],16)+","+parseInt(a[2],16)+","+parseInt(a[3],16)+",1)"):u.hsl(n)?function(n){var e,r,t,a=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(n)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(n),o=parseInt(a[1],10)/360,i=parseInt(a[2],10)/100,u=parseInt(a[3],10)/100,s=a[4]||1;function c(n,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?n+6*(e-n)*r:r<.5?e:r<2/3?n+(e-n)*(2/3-r)*6:n}if(0==i)e=r=t=u;else{var f=u<.5?u*(1+i):u+i-u*i,l=2*u-f;e=c(l,f,o+1/3),r=c(l,f,o),t=c(l,f,o-1/3)}return"rgba("+255*e+","+255*r+","+255*t+","+s+")"}(n):void 0;var e,r,t,a}function C(n){var e=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(n);if(e)return e[2]}function O(n,e){return u.fnc(n)?n(e.target,e.id,e.total):n}function P(n,e){return n.getAttribute(e)}function I(n,e,r){if(b([r,"deg","rad","turn"],C(e)))return e;var a=t.CSS[e+r];if(!u.und(a))return a;var o=document.createElement(n.tagName),i=n.parentNode&&n.parentNode!==document?n.parentNode:document.body;i.appendChild(o),o.style.position="absolute",o.style.width=100+r;var s=100/o.offsetWidth;i.removeChild(o);var c=s*parseFloat(e);return t.CSS[e+r]=c,c}function B(n,e,r){if(e in n.style){var t=e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),a=n.style[e]||getComputedStyle(n).getPropertyValue(t)||"0";return r?I(n,a,r):a}}function D(n,e){return u.dom(n)&&!u.inp(n)&&(P(n,e)||u.svg(n)&&n[e])?"attribute":u.dom(n)&&b(r,e)?"transform":u.dom(n)&&"transform"!==e&&B(n,e)?"css":null!=n[e]?"object":void 0}function T(n){if(u.dom(n)){for(var e,r=n.style.transform||"",t=/(\w+)\(([^)]*)\)/g,a=new Map;e=t.exec(r);)a.set(e[1],e[2]);return a}}function F(n,e,r,t){var a,i=o(e,"scale")?1:0+(o(a=e,"translate")||"perspective"===a?"px":o(a,"rotate")||o(a,"skew")?"deg":void 0),u=T(n).get(e)||i;return r&&(r.transforms.list.set(e,u),r.transforms.last=e),t?I(n,u,t):u}function N(n,e,r,t){switch(D(n,e)){case"transform":return F(n,e,t,r);case"css":return B(n,e,r);case"attribute":return P(n,e);default:return n[e]||0}}function A(n,e){var r=/^(\*=|\+=|-=)/.exec(n);if(!r)return n;var t=C(n)||0,a=parseFloat(e),o=parseFloat(n.replace(r[0],""));switch(r[0][0]){case"+":return a+o+t;case"-":return a-o+t;case"*":return a*o+t}}function E(n,e){if(u.col(n))return k(n);var r=C(n),t=r?n.substr(0,n.length-r.length):n;return e&&!/\s/g.test(n)?t+e:t}function L(n,e){return Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2))}function S(n){for(var e,r=n.points,t=0,a=0;a<r.numberOfItems;a++){var o=r.getItem(a);a>0&&(t+=L(e,o)),e=o}return t}function j(n){if(n.getTotalLength)return n.getTotalLength();switch(n.tagName.toLowerCase()){case"circle":return o=n,2*Math.PI*P(o,"r");case"rect":return 2*P(a=n,"width")+2*P(a,"height");case"line":return L({x:P(t=n,"x1"),y:P(t,"y1")},{x:P(t,"x2"),y:P(t,"y2")});case"polyline":return S(n);case"polygon":return r=(e=n).points,S(e)+L(r.getItem(r.numberOfItems-1),r.getItem(0))}var e,r,t,a,o}function q(n,e){var r=e||{},t=r.el||function(n){for(var e=n.parentNode;u.svg(e)&&(e=e.parentNode,u.svg(e.parentNode)););return e}(n),a=t.getBoundingClientRect(),o=P(t,"viewBox"),i=a.width,s=a.height,c=r.viewBox||(o?o.split(" "):[0,0,i,s]);return{el:t,viewBox:c,x:c[0]/1,y:c[1]/1,w:i/c[2],h:s/c[3]}}function $(n,e){function r(r){void 0===r&&(r=0);var t=e+r>=1?e+r:0;return n.el.getPointAtLength(t)}var t=q(n.el,n.svg),a=r(),o=r(-1),i=r(1);switch(n.property){case"x":return(a.x-t.x)*t.w;case"y":return(a.y-t.y)*t.h;case"angle":return 180*Math.atan2(i.y-o.y,i.x-o.x)/Math.PI}}function X(n,e){var r=/-?\d*\.?\d+/g,t=E(u.pth(n)?n.totalLength:n,e)+"";return{original:t,numbers:t.match(r)?t.match(r).map(Number):[0],strings:u.str(n)||e?t.split(r):[]}}function Y(n){return g(n?m(u.arr(n)?n.map(y):y(n)):[],function(n,e,r){return r.indexOf(n)===e})}function Z(n){var e=Y(n);return e.map(function(n,r){return{target:n,id:r,total:e.length,transforms:{list:T(n)}}})}function Q(n,e){var r=x(e);if(/^spring/.test(r.easing)&&(r.duration=c(r.easing)),u.arr(n)){var t=n.length;2===t&&!u.obj(n[0])?n={value:n}:u.fnc(e.duration)||(r.duration=e.duration/t)}var a=u.arr(n)?n:[n];return a.map(function(n,r){var t=u.obj(n)&&!u.pth(n)?n:{value:n};return u.und(t.delay)&&(t.delay=r?0:e.delay),u.und(t.endDelay)&&(t.endDelay=r===a.length-1?e.endDelay:0),t}).map(function(n){return w(n,r)})}function V(n,e){var r=[],t=e.keyframes;for(var a in t&&(e=w(function(n){for(var e=g(m(n.map(function(n){return Object.keys(n)})),function(n){return u.key(n)}).reduce(function(n,e){return n.indexOf(e)<0&&n.push(e),n},[]),r={},t=function(t){var a=e[t];r[a]=n.map(function(n){var e={};for(var r in n)u.key(r)?r==a&&(e.value=n[r]):e[r]=n[r];return e})},a=0;a<e.length;a++)t(a);return r}(t),e)),e)u.key(a)&&r.push({name:a,tweens:Q(e[a],n)});return r}function z(n,e){var r;return n.tweens.map(function(t){var a=function(n,e){var r={};for(var t in n){var a=O(n[t],e);u.arr(a)&&1===(a=a.map(function(n){return O(n,e)})).length&&(a=a[0]),r[t]=a}return r.duration=parseFloat(r.duration),r.delay=parseFloat(r.delay),r}(t,e),o=a.value,i=u.arr(o)?o[1]:o,s=C(i),c=N(e.target,n.name,s,e),f=r?r.to.original:c,l=u.arr(o)?o[0]:f,d=C(l)||C(c),p=s||d;return u.und(i)&&(i=f),a.from=X(l,p),a.to=X(A(i,l),p),a.start=r?r.end:0,a.end=a.start+a.delay+a.duration+a.endDelay,a.easing=v(a.easing,a.duration),a.isPath=u.pth(o),a.isColor=u.col(a.from.original),a.isColor&&(a.round=1),r=a,a})}var H={css:function(n,e,r){return n.style[e]=r},attribute:function(n,e,r){return n.setAttribute(e,r)},object:function(n,e,r){return n[e]=r},transform:function(n,e,r,t,a){if(t.list.set(e,r),e===t.last||a){var o="";t.list.forEach(function(n,e){o+=e+"("+n+") "}),n.style.transform=o}}};function G(n,e){Z(n).forEach(function(n){for(var r in e){var t=O(e[r],n),a=n.target,o=C(t),i=N(a,r,o,n),u=A(E(t,o||C(i)),i),s=D(a,r);H[s](a,r,u,n.transforms,!0)}})}function R(n,e){return g(m(n.map(function(n){return e.map(function(e){return function(n,e){var r=D(n.target,e.name);if(r){var t=z(e,n),a=t[t.length-1];return{type:r,property:e.name,animatable:n,tweens:t,duration:a.end,delay:t[0].delay,endDelay:a.endDelay}}}(n,e)})})),function(n){return!u.und(n)})}function W(n,e){var r=n.length,t=function(n){return n.timelineOffset?n.timelineOffset:0},a={};return a.duration=r?Math.max.apply(Math,n.map(function(n){return t(n)+n.duration})):e.duration,a.delay=r?Math.min.apply(Math,n.map(function(n){return t(n)+n.delay})):e.delay,a.endDelay=r?a.duration-Math.max.apply(Math,n.map(function(n){return t(n)+n.duration-n.endDelay})):e.endDelay,a}var J=0;var K,U=[],_=[],nn=function(){function n(){K=requestAnimationFrame(e)}function e(e){var r=U.length;if(r){for(var t=0;t<r;){var a=U[t];if(a.paused){var o=U.indexOf(a);o>-1&&(U.splice(o,1),r=U.length)}else a.tick(e);t++}n()}else K=cancelAnimationFrame(K)}return n}();function en(r){void 0===r&&(r={});var t,o=0,i=0,u=0,s=0,c=null;function f(n){var e=window.Promise&&new Promise(function(n){return c=n});return n.finished=e,e}var l,d,p,v,h,m,y,b,x=(d=M(n,l=r),p=M(e,l),v=V(p,l),h=Z(l.targets),m=R(h,v),y=W(m,p),b=J,J++,w(d,{id:b,children:[],animatables:h,animations:m,duration:y.duration,delay:y.delay,endDelay:y.endDelay}));f(x);function k(){var n=x.direction;"alternate"!==n&&(x.direction="normal"!==n?"normal":"reverse"),x.reversed=!x.reversed,t.forEach(function(n){return n.reversed=x.reversed})}function C(n){return x.reversed?x.duration-n:n}function O(){o=0,i=C(x.currentTime)*(1/en.speed)}function P(n,e){e&&e.seek(n-e.timelineOffset)}function I(n){for(var e=0,r=x.animations,t=r.length;e<t;){var o=r[e],i=o.animatable,u=o.tweens,s=u.length-1,c=u[s];s&&(c=g(u,function(e){return n<e.end})[0]||c);for(var f=a(n-c.start-c.delay,0,c.duration)/c.duration,l=isNaN(f)?1:c.easing(f),d=c.to.strings,p=c.round,v=[],h=c.to.numbers.length,m=void 0,y=0;y<h;y++){var b=void 0,M=c.to.numbers[y],w=c.from.numbers[y]||0;b=c.isPath?$(c.value,l*M):w+l*(M-w),p&&(c.isColor&&y>2||(b=Math.round(b*p)/p)),v.push(b)}var k=d.length;if(k){m=d[0];for(var C=0;C<k;C++){d[C];var O=d[C+1],P=v[C];isNaN(P)||(m+=O?P+O:P+" ")}}else m=v[0];H[o.type](i.target,o.property,m,i.transforms),o.currentValue=m,e++}}function B(n){x[n]&&!x.passThrough&&x[n](x)}function D(n){var e=x.duration,r=x.delay,l=e-x.endDelay,d=C(n);x.progress=a(d/e*100,0,100),x.reversePlayback=d<x.currentTime,t&&function(n){if(x.reversePlayback)for(var e=s;e--;)P(n,t[e]);else for(var r=0;r<s;r++)P(n,t[r])}(d),!x.began&&x.currentTime>0&&(x.began=!0,B("begin"),B("loopBegin")),d<=r&&0!==x.currentTime&&I(0),(d>=l&&x.currentTime!==e||!e)&&I(e),d>r&&d<l?(x.changeBegan||(x.changeBegan=!0,x.changeCompleted=!1,B("changeBegin")),B("change"),I(d)):x.changeBegan&&(x.changeCompleted=!0,x.changeBegan=!1,B("changeComplete")),x.currentTime=a(d,0,e),x.began&&B("update"),n>=e&&(i=0,x.remaining&&!0!==x.remaining&&x.remaining--,x.remaining?(o=u,B("loopComplete"),B("loopBegin"),"alternate"===x.direction&&k()):(x.paused=!0,x.completed||(x.completed=!0,B("loopComplete"),B("complete"),!x.passThrough&&"Promise"in window&&(c(),f(x)))))}return x.reset=function(){var n=x.direction;x.passThrough=!1,x.currentTime=0,x.progress=0,x.paused=!0,x.began=!1,x.changeBegan=!1,x.completed=!1,x.changeCompleted=!1,x.reversePlayback=!1,x.reversed="reverse"===n,x.remaining=x.loop,t=x.children;for(var e=s=t.length;e--;)x.children[e].reset();(x.reversed&&!0!==x.loop||"alternate"===n&&1===x.loop)&&x.remaining++,I(0)},x.set=function(n,e){return G(n,e),x},x.tick=function(n){u=n,o||(o=u),D((u+(i-o))*en.speed)},x.seek=function(n){D(C(n))},x.pause=function(){x.paused=!0,O()},x.play=function(){x.paused&&(x.completed&&x.reset(),x.paused=!1,U.push(x),O(),K||nn())},x.reverse=function(){k(),O()},x.restart=function(){x.reset(),x.play()},x.reset(),x.autoplay&&x.play(),x}function rn(n,e){for(var r=e.length;r--;)b(n,e[r].animatable.target)&&e.splice(r,1)}return"undefined"!=typeof document&&document.addEventListener("visibilitychange",function(){document.hidden?(U.forEach(function(n){return n.pause()}),_=U.slice(0),U=[]):_.forEach(function(n){return n.play()})}),en.version="3.0.1",en.speed=1,en.running=U,en.remove=function(n){for(var e=Y(n),r=U.length;r--;){var t=U[r],a=t.animations,o=t.children;rn(e,a);for(var i=o.length;i--;){var u=o[i],s=u.animations;rn(e,s),s.length||u.children.length||o.splice(i,1)}a.length||o.length||t.pause()}},en.get=N,en.set=G,en.convertPx=I,en.path=function(n,e){var r=u.str(n)?h(n)[0]:n,t=e||100;return function(n){return{property:n,el:r,svg:q(r),totalLength:j(r)*(t/100)}}},en.setDashoffset=function(n){var e=j(n);return n.setAttribute("stroke-dasharray",e),e},en.stagger=function(n,e){void 0===e&&(e={});var r=e.direction||"normal",t=e.easing?v(e.easing):null,a=e.grid,o=e.axis,i=e.from||0,s="first"===i,c="center"===i,f="last"===i,l=u.arr(n),d=l?parseFloat(n[0]):parseFloat(n),p=l?parseFloat(n[1]):0,h=C(l?n[1]:n)||0,g=e.start||0+(l?d:0),m=[],y=0;return function(n,e,u){if(s&&(i=0),c&&(i=(u-1)/2),f&&(i=u-1),!m.length){for(var v=0;v<u;v++){if(a){var b=c?(a[0]-1)/2:i%a[0],x=c?(a[1]-1)/2:Math.floor(i/a[0]),M=b-v%a[0],w=x-Math.floor(v/a[0]),k=Math.sqrt(M*M+w*w);"x"===o&&(k=-M),"y"===o&&(k=-w),m.push(k)}else m.push(Math.abs(i-v));y=Math.max.apply(Math,m)}t&&(m=m.map(function(n){return t(n/y)*y})),"reverse"===r&&(m=m.map(function(n){return o?n<0?-1*n:-n:Math.abs(y-n)}))}return g+(l?(p-d)/y:d)*(Math.round(100*m[e])/100)+h}},en.timeline=function(n){void 0===n&&(n={});var r=en(n);return r.duration=0,r.add=function(t,a){var o=U.indexOf(r),i=r.children;function s(n){n.passThrough=!0}o>-1&&U.splice(o,1);for(var c=0;c<i.length;c++)s(i[c]);var f=w(t,M(e,n));f.targets=f.targets||n.targets;var l=r.duration;f.autoplay=!1,f.direction=r.direction,f.timelineOffset=u.und(a)?l:A(a,l),s(r),r.seek(f.timelineOffset);var d=en(f);s(d),i.push(d);var p=W(i,n);return r.delay=p.delay,r.endDelay=p.endDelay,r.duration=p.duration,r.seek(0),r.reset(),r.autoplay&&r.play(),r},r},en.easing=v,en.penner=p,en.random=function(n,e){return Math.floor(Math.random()*(e-n+1))+n},en});
assets/vendor/twentytwenty/.gitignore ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ *.DS_Store
2
+ .sass-cache/*
3
+ components/*
4
+ *.old
5
+ node_modules
assets/vendor/twentytwenty/css/twentytwenty.css ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .twentytwenty-horizontal .twentytwenty-handle:before, .twentytwenty-horizontal .twentytwenty-handle:after, .twentytwenty-vertical .twentytwenty-handle:before, .twentytwenty-vertical .twentytwenty-handle:after {
2
+ content: " ";
3
+ display: block;
4
+ background: white;
5
+ position: absolute;
6
+ z-index: 30;
7
+ -webkit-box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5);
8
+ -moz-box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5);
9
+ box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5); }
10
+
11
+ .twentytwenty-horizontal .twentytwenty-handle:before, .twentytwenty-horizontal .twentytwenty-handle:after {
12
+ width: 2px;
13
+ height: 9999px;
14
+ left: 50%;
15
+ margin-left: -1.5px; }
16
+
17
+ .twentytwenty-vertical .twentytwenty-handle:before, .twentytwenty-vertical .twentytwenty-handle:after {
18
+ width: 9999px;
19
+ height: 2px;
20
+ top: 50%;
21
+ margin-top: -1.5px; }
22
+
23
+ .twentytwenty-before-label, .twentytwenty-after-label, .twentytwenty-overlay {
24
+ position: absolute;
25
+ top: 0;
26
+ width: 100%;
27
+ height: 100%; }
28
+
29
+ .twentytwenty-before-label, .twentytwenty-after-label, .twentytwenty-overlay {
30
+ -webkit-transition-duration: 0.5s;
31
+ -moz-transition-duration: 0.5s;
32
+ transition-duration: 0.5s; }
33
+
34
+ .twentytwenty-before-label, .twentytwenty-after-label {
35
+ -webkit-transition-property: opacity;
36
+ -moz-transition-property: opacity;
37
+ transition-property: opacity; }
38
+
39
+ .twentytwenty-before-label:before, .twentytwenty-after-label:before {
40
+ color: white;
41
+ font-size: 13px;
42
+ letter-spacing: 0.1em; }
43
+
44
+ .twentytwenty-before-label:before, .twentytwenty-after-label:before {
45
+ position: absolute;
46
+ background: rgba(0, 0, 0, 0.3);
47
+ line-height: 38px;
48
+ padding: 0 20px;
49
+ /*-webkit-border-radius: 2px;*/
50
+ /*-moz-border-radius: 2px;*/
51
+ /*border-radius: 2px; */
52
+ }
53
+
54
+ .twentytwenty-horizontal .twentytwenty-before-label:before, .twentytwenty-horizontal .twentytwenty-after-label:before {
55
+ top: 50%;
56
+ margin-top: -19px; }
57
+
58
+ .twentytwenty-vertical .twentytwenty-before-label:before, .twentytwenty-vertical .twentytwenty-after-label:before {
59
+ left: 50%;
60
+ margin-left: -45px;
61
+ text-align: center;
62
+ width: 90px; }
63
+
64
+ .twentytwenty-left-arrow, .twentytwenty-right-arrow, .twentytwenty-up-arrow, .twentytwenty-down-arrow {
65
+ width: 0;
66
+ height: 0;
67
+ border: 6px inset transparent;
68
+ position: absolute; }
69
+
70
+ .twentytwenty-left-arrow, .twentytwenty-right-arrow {
71
+ top: 50%;
72
+ margin-top: -6px; }
73
+
74
+ .twentytwenty-up-arrow, .twentytwenty-down-arrow {
75
+ left: 50%;
76
+ margin-left: -6px; }
77
+
78
+ .twentytwenty-container {
79
+ -webkit-box-sizing: content-box;
80
+ -moz-box-sizing: content-box;
81
+ box-sizing: content-box;
82
+ z-index: 0;
83
+ overflow: hidden;
84
+ position: relative;
85
+ -webkit-user-select: none;
86
+ -moz-user-select: none;
87
+ -ms-user-select: none; }
88
+ .twentytwenty-container img {
89
+ max-width: 100%;
90
+ position: absolute;
91
+ top: 0;
92
+ display: block; }
93
+ .twentytwenty-container.active .twentytwenty-overlay, .twentytwenty-container.active :hover.twentytwenty-overlay {
94
+ background: rgba(0, 0, 0, 0); }
95
+ .twentytwenty-container.active .twentytwenty-overlay .twentytwenty-before-label,
96
+ .twentytwenty-container.active .twentytwenty-overlay .twentytwenty-after-label, .twentytwenty-container.active :hover.twentytwenty-overlay .twentytwenty-before-label,
97
+ .twentytwenty-container.active :hover.twentytwenty-overlay .twentytwenty-after-label {
98
+ opacity: 0; }
99
+ .twentytwenty-container * {
100
+ -webkit-box-sizing: content-box;
101
+ -moz-box-sizing: content-box;
102
+ box-sizing: content-box; }
103
+
104
+ .twentytwenty-before-label {
105
+ opacity: 0; }
106
+ .twentytwenty-before-label:before {
107
+ content: attr(data-content); }
108
+
109
+ .twentytwenty-after-label {
110
+ opacity: 0; }
111
+ .twentytwenty-after-label:before {
112
+ content: attr(data-content); }
113
+
114
+ .twentytwenty-horizontal .twentytwenty-before-label:before {
115
+ left: 0px;
116
+ -webkit-border-radius: 0 3px 3px 0;
117
+ -moz-border-radius: 0 3px 3px 0;
118
+ border-radius:0 3px 3px 0;
119
+ }
120
+
121
+ .twentytwenty-horizontal .twentytwenty-after-label:before {
122
+ right: 0px;
123
+ -webkit-border-radius: 3px 0 0 3px;
124
+ -moz-border-radius: 3px 0 0 3px;
125
+ border-radius: 3px 0 0 3px;
126
+ }
127
+
128
+ .twentytwenty-vertical .twentytwenty-before-label:before {
129
+ top: 0px;
130
+ -webkit-border-radius: 0 0 3px 3px;
131
+ -moz-border-radius: 0 0 3px 3px;
132
+ border-radius: 0 0 3px 3px;
133
+ }
134
+
135
+ .twentytwenty-vertical .twentytwenty-after-label:before {
136
+ bottom: 0px;
137
+ -webkit-border-radius: 3px 3px 0 0 ;
138
+ -moz-border-radius: 3px 3px 0 0 ;
139
+ border-radius: 3px 3px 0 0 ;
140
+ }
141
+
142
+ .twentytwenty-overlay {
143
+ -webkit-transition-property: background;
144
+ -moz-transition-property: background;
145
+ transition-property: background;
146
+ background: rgba(0, 0, 0, 0);
147
+ z-index: 25; }
148
+ .twentytwenty-overlay:hover {
149
+ background: rgba(0, 0, 0, 0.5); }
150
+ .twentytwenty-overlay:hover .twentytwenty-after-label {
151
+ opacity: 1; }
152
+ .twentytwenty-overlay:hover .twentytwenty-before-label {
153
+ opacity: 1; }
154
+
155
+ .twentytwenty-before {
156
+ z-index: 20; }
157
+
158
+ .twentytwenty-after {
159
+ z-index: 10; }
160
+
161
+ .twentytwenty-handle {
162
+ height: 38px;
163
+ width: 38px;
164
+ position: absolute;
165
+ left: 50%;
166
+ top: 50%;
167
+ margin-left: -19px;
168
+ margin-top: -19px;
169
+ border: 2px solid white;
170
+ -webkit-border-radius: 1000px;
171
+ -moz-border-radius: 1000px;
172
+ border-radius: 1000px;
173
+ -webkit-box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5);
174
+ -moz-box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5);
175
+ box-shadow: 0px 0px 12px rgba(51, 51, 51, 0.5);
176
+ z-index: 40;
177
+ cursor: pointer; }
178
+
179
+ .twentytwenty-horizontal .twentytwenty-handle:before {
180
+ bottom: 50%;
181
+ margin-bottom: 22px;
182
+ -webkit-box-shadow: 0 3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
183
+ -moz-box-shadow: 0 3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
184
+ box-shadow: 0 3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5); }
185
+ .twentytwenty-horizontal .twentytwenty-handle:after {
186
+ top: 50%;
187
+ margin-top: 22px;
188
+ -webkit-box-shadow: 0 -3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
189
+ -moz-box-shadow: 0 -3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
190
+ box-shadow: 0 -3px 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5); }
191
+
192
+ .twentytwenty-vertical .twentytwenty-handle:before {
193
+ left: 50%;
194
+ margin-left: 22px;
195
+ -webkit-box-shadow: 3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
196
+ -moz-box-shadow: 3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
197
+ box-shadow: 3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5); }
198
+ .twentytwenty-vertical .twentytwenty-handle:after {
199
+ right: 50%;
200
+ margin-right: 22px;
201
+ -webkit-box-shadow: -3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
202
+ -moz-box-shadow: -3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5);
203
+ box-shadow: -3px 0 0 white, 0px 0px 12px rgba(51, 51, 51, 0.5); }
204
+
205
+ .twentytwenty-left-arrow {
206
+ border-right: 6px solid white;
207
+ left: 50%;
208
+ margin-left: -17px; }
209
+
210
+ .twentytwenty-right-arrow {
211
+ border-left: 6px solid white;
212
+ right: 50%;
213
+ margin-right: -17px; }
214
+
215
+ .twentytwenty-up-arrow {
216
+ border-bottom: 6px solid white;
217
+ top: 50%;
218
+ margin-top: -17px; }
219
+
220
+ .twentytwenty-down-arrow {
221
+ border-top: 6px solid white;
222
+ bottom: 50%;
223
+ margin-bottom: -17px; }
assets/vendor/twentytwenty/js/jquery.event.move.js ADDED
@@ -0,0 +1,599 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // DOM.event.move
2
+ //
3
+ // 2.0.0
4
+ //
5
+ // Stephen Band
6
+ //
7
+ // Triggers 'movestart', 'move' and 'moveend' events after
8
+ // mousemoves following a mousedown cross a distance threshold,
9
+ // similar to the native 'dragstart', 'drag' and 'dragend' events.
10
+ // Move events are throttled to animation frames. Move event objects
11
+ // have the properties:
12
+ //
13
+ // pageX:
14
+ // pageY: Page coordinates of pointer.
15
+ // startX:
16
+ // startY: Page coordinates of pointer at movestart.
17
+ // distX:
18
+ // distY: Distance the pointer has moved since movestart.
19
+ // deltaX:
20
+ // deltaY: Distance the finger has moved since last event.
21
+ // velocityX:
22
+ // velocityY: Average velocity over last few events.
23
+
24
+
25
+ (function(fn) {
26
+ if (typeof define === 'function' && define.amd) {
27
+ define([], fn);
28
+ } else if ((typeof module !== "undefined" && module !== null) && module.exports) {
29
+ module.exports = fn;
30
+ } else {
31
+ fn();
32
+ }
33
+ })(function(){
34
+ var assign = Object.assign || window.jQuery && jQuery.extend;
35
+
36
+ // Number of pixels a pressed pointer travels before movestart
37
+ // event is fired.
38
+ var threshold = 8;
39
+
40
+ // Shim for requestAnimationFrame, falling back to timer. See:
41
+ // see http://paulirish.com/2011/requestanimationframe-for-smart-animating/
42
+ var requestFrame = (function(){
43
+ return (
44
+ window.requestAnimationFrame ||
45
+ window.webkitRequestAnimationFrame ||
46
+ window.mozRequestAnimationFrame ||
47
+ window.oRequestAnimationFrame ||
48
+ window.msRequestAnimationFrame ||
49
+ function(fn, element){
50
+ return window.setTimeout(function(){
51
+ fn();
52
+ }, 25);
53
+ }
54
+ );
55
+ })();
56
+
57
+ // Shim for customEvent
58
+ // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill
59
+ (function () {
60
+ if ( typeof window.CustomEvent === "function" ) return false;
61
+ function CustomEvent ( event, params ) {
62
+ params = params || { bubbles: false, cancelable: false, detail: undefined };
63
+ var evt = document.createEvent( 'CustomEvent' );
64
+ evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
65
+ return evt;
66
+ }
67
+
68
+ CustomEvent.prototype = window.Event.prototype;
69
+ window.CustomEvent = CustomEvent;
70
+ })();
71
+
72
+ var ignoreTags = {
73
+ textarea: true,
74
+ input: true,
75
+ select: true,
76
+ button: true
77
+ };
78
+
79
+ var mouseevents = {
80
+ move: 'mousemove',
81
+ cancel: 'mouseup dragstart',
82
+ end: 'mouseup'
83
+ };
84
+
85
+ var touchevents = {
86
+ move: 'touchmove',
87
+ cancel: 'touchend',
88
+ end: 'touchend'
89
+ };
90
+
91
+ var rspaces = /\s+/;
92
+
93
+
94
+ // DOM Events
95
+
96
+ var eventOptions = { bubbles: true, cancelable: true };
97
+
98
+ var eventsSymbol = typeof Symbol === "function" ? Symbol('events') : {};
99
+
100
+ function createEvent(type) {
101
+ return new CustomEvent(type, eventOptions);
102
+ }
103
+
104
+ function getEvents(node) {
105
+ return node[eventsSymbol] || (node[eventsSymbol] = {});
106
+ }
107
+
108
+ function on(node, types, fn, data, selector) {
109
+ types = types.split(rspaces);
110
+
111
+ var events = getEvents(node);
112
+ var i = types.length;
113
+ var handlers, type;
114
+
115
+ function handler(e) { fn(e, data); }
116
+
117
+ while (i--) {
118
+ type = types[i];
119
+ handlers = events[type] || (events[type] = []);
120
+ handlers.push([fn, handler]);
121
+ node.addEventListener(type, handler);
122
+ }
123
+ }
124
+
125
+ function off(node, types, fn, selector) {
126
+ types = types.split(rspaces);
127
+
128
+ var events = getEvents(node);
129
+ var i = types.length;
130
+ var type, handlers, k;
131
+
132
+ if (!events) { return; }
133
+
134
+ while (i--) {
135
+ type = types[i];
136
+ handlers = events[type];
137
+ if (!handlers) { continue; }
138
+ k = handlers.length;
139
+ while (k--) {
140
+ if (handlers[k][0] === fn) {
141
+ node.removeEventListener(type, handlers[k][1]);
142
+ handlers.splice(k, 1);
143
+ }
144
+ }
145
+ }
146
+ }
147
+
148
+ function trigger(node, type, properties) {
149
+ // Don't cache events. It prevents you from triggering an event of a
150
+ // given type from inside the handler of another event of that type.
151
+ var event = createEvent(type);
152
+ if (properties) { assign(event, properties); }
153
+ node.dispatchEvent(event);
154
+ }
155
+
156
+
157
+ // Constructors
158
+
159
+ function Timer(fn){
160
+ var callback = fn,
161
+ active = false,
162
+ running = false;
163
+
164
+ function trigger(time) {
165
+ if (active){
166
+ callback();
167
+ requestFrame(trigger);
168
+ running = true;
169
+ active = false;
170
+ }
171
+ else {
172
+ running = false;
173
+ }
174
+ }
175
+
176
+ this.kick = function(fn) {
177
+ active = true;
178
+ if (!running) { trigger(); }
179
+ };
180
+
181
+ this.end = function(fn) {
182
+ var cb = callback;
183
+
184
+ if (!fn) { return; }
185
+
186
+ // If the timer is not running, simply call the end callback.
187
+ if (!running) {
188
+ fn();
189
+ }
190
+ // If the timer is running, and has been kicked lately, then
191
+ // queue up the current callback and the end callback, otherwise
192
+ // just the end callback.
193
+ else {
194
+ callback = active ?
195
+ function(){ cb(); fn(); } :
196
+ fn ;
197
+
198
+ active = true;
199
+ }
200
+ };
201
+ }
202
+
203
+
204
+ // Functions
205
+
206
+ function noop() {}
207
+
208
+ function preventDefault(e) {
209
+ e.preventDefault();
210
+ }
211
+
212
+ function isIgnoreTag(e) {
213
+ return !!ignoreTags[e.target.tagName.toLowerCase()];
214
+ }
215
+
216
+ function isPrimaryButton(e) {
217
+ // Ignore mousedowns on any button other than the left (or primary)
218
+ // mouse button, or when a modifier key is pressed.
219
+ return (e.which === 1 && !e.ctrlKey && !e.altKey);
220
+ }
221
+
222
+ function identifiedTouch(touchList, id) {
223
+ var i, l;
224
+
225
+ if (touchList.identifiedTouch) {
226
+ return touchList.identifiedTouch(id);
227
+ }
228
+
229
+ // touchList.identifiedTouch() does not exist in
230
+ // webkit yet… we must do the search ourselves...
231
+
232
+ i = -1;
233
+ l = touchList.length;
234
+
235
+ while (++i < l) {
236
+ if (touchList[i].identifier === id) {
237
+ return touchList[i];
238
+ }
239
+ }
240
+ }
241
+
242
+ function changedTouch(e, data) {
243
+ var touch = identifiedTouch(e.changedTouches, data.identifier);
244
+
245
+ // This isn't the touch you're looking for.
246
+ if (!touch) { return; }
247
+
248
+ // Chrome Android (at least) includes touches that have not
249
+ // changed in e.changedTouches. That's a bit annoying. Check
250
+ // that this touch has changed.
251
+ if (touch.pageX === data.pageX && touch.pageY === data.pageY) { return; }
252
+
253
+ return touch;
254
+ }
255
+
256
+
257
+ // Handlers that decide when the first movestart is triggered
258
+
259
+ function mousedown(e){
260
+ // Ignore non-primary buttons
261
+ if (!isPrimaryButton(e)) { return; }
262
+
263
+ // Ignore form and interactive elements
264
+ if (isIgnoreTag(e)) { return; }
265
+
266
+ on(document, mouseevents.move, mousemove, e);
267
+ on(document, mouseevents.cancel, mouseend, e);
268
+ }
269
+
270
+ function mousemove(e, data){
271
+ checkThreshold(e, data, e, removeMouse);
272
+ }
273
+
274
+ function mouseend(e, data) {
275
+ removeMouse();
276
+ }
277
+
278
+ function removeMouse() {
279
+ off(document, mouseevents.move, mousemove);
280
+ off(document, mouseevents.cancel, mouseend);
281
+ }
282
+
283
+ function touchstart(e) {
284
+ // Don't get in the way of interaction with form elements
285
+ if (ignoreTags[e.target.tagName.toLowerCase()]) { return; }
286
+
287
+ var touch = e.changedTouches[0];
288
+
289
+ // iOS live updates the touch objects whereas Android gives us copies.
290
+ // That means we can't trust the touchstart object to stay the same,
291
+ // so we must copy the data. This object acts as a template for
292
+ // movestart, move and moveend event objects.
293
+ var data = {
294
+ target: touch.target,
295
+ pageX: touch.pageX,
296
+ pageY: touch.pageY,
297
+ identifier: touch.identifier,
298
+
299
+ // The only way to make handlers individually unbindable is by
300
+ // making them unique.
301
+ touchmove: function(e, data) { touchmove(e, data); },
302
+ touchend: function(e, data) { touchend(e, data); }
303
+ };
304
+
305
+ on(document, touchevents.move, data.touchmove, data);
306
+ on(document, touchevents.cancel, data.touchend, data);
307
+ }
308
+
309
+ function touchmove(e, data) {
310
+ var touch = changedTouch(e, data);
311
+ if (!touch) { return; }
312
+ checkThreshold(e, data, touch, removeTouch);
313
+ }
314
+
315
+ function touchend(e, data) {
316
+ var touch = identifiedTouch(e.changedTouches, data.identifier);
317
+ if (!touch) { return; }
318
+ removeTouch(data);
319
+ }
320
+
321
+ function removeTouch(data) {
322
+ off(document, touchevents.move, data.touchmove);
323
+ off(document, touchevents.cancel, data.touchend);
324
+ }
325
+
326
+ function checkThreshold(e, data, touch, fn) {
327
+ var distX = touch.pageX - data.pageX;
328
+ var distY = touch.pageY - data.pageY;
329
+
330
+ // Do nothing if the threshold has not been crossed.
331
+ if ((distX * distX) + (distY * distY) < (threshold * threshold)) { return; }
332
+
333
+ triggerStart(e, data, touch, distX, distY, fn);
334
+ }
335
+
336
+ function triggerStart(e, data, touch, distX, distY, fn) {
337
+ var touches = e.targetTouches;
338
+ var time = e.timeStamp - data.timeStamp;
339
+
340
+ // Create a movestart object with some special properties that
341
+ // are passed only to the movestart handlers.
342
+ var template = {
343
+ altKey: e.altKey,
344
+ ctrlKey: e.ctrlKey,
345
+ shiftKey: e.shiftKey,
346
+ startX: data.pageX,
347
+ startY: data.pageY,
348
+ distX: distX,
349
+ distY: distY,
350
+ deltaX: distX,
351
+ deltaY: distY,
352
+ pageX: touch.pageX,
353
+ pageY: touch.pageY,
354
+ velocityX: distX / time,
355
+ velocityY: distY / time,
356
+ identifier: data.identifier,
357
+ targetTouches: touches,
358
+ finger: touches ? touches.length : 1,
359
+ enableMove: function() {
360
+ this.moveEnabled = true;
361
+ this.enableMove = noop;
362
+ e.preventDefault();
363
+ }
364
+ };
365
+
366
+ // Trigger the movestart event.
367
+ trigger(data.target, 'movestart', template);
368
+
369
+ // Unbind handlers that tracked the touch or mouse up till now.
370
+ fn(data);
371
+ }
372
+
373
+
374
+ // Handlers that control what happens following a movestart
375
+
376
+ function activeMousemove(e, data) {
377
+ var timer = data.timer;
378
+
379
+ data.touch = e;
380
+ data.timeStamp = e.timeStamp;
381
+ timer.kick();
382
+ }
383
+
384
+ function activeMouseend(e, data) {
385
+ var target = data.target;
386
+ var event = data.event;
387
+ var timer = data.timer;
388
+
389
+ removeActiveMouse();
390
+
391
+ endEvent(target, event, timer, function() {
392
+ // Unbind the click suppressor, waiting until after mouseup
393
+ // has been handled.
394
+ setTimeout(function(){
395
+ off(target, 'click', preventDefault);
396
+ }, 0);
397
+ });
398
+ }
399
+
400
+ function removeActiveMouse() {
401
+ off(document, mouseevents.move, activeMousemove);
402
+ off(document, mouseevents.end, activeMouseend);
403
+ }
404
+
405
+ function activeTouchmove(e, data) {
406
+ var event = data.event;
407
+ var timer = data.timer;
408
+ var touch = changedTouch(e, event);
409
+
410
+ if (!touch) { return; }
411
+
412
+ // Stop the interface from gesturing
413
+ e.preventDefault();
414
+
415
+ event.targetTouches = e.targetTouches;
416
+ data.touch = touch;
417
+ data.timeStamp = e.timeStamp;
418
+
419
+ timer.kick();
420
+ }
421
+
422
+ function activeTouchend(e, data) {
423
+ var target = data.target;
424
+ var event = data.event;
425
+ var timer = data.timer;
426
+ var touch = identifiedTouch(e.changedTouches, event.identifier);
427
+
428
+ // This isn't the touch you're looking for.
429
+ if (!touch) { return; }
430
+
431
+ removeActiveTouch(data);
432
+ endEvent(target, event, timer);
433
+ }
434
+
435
+ function removeActiveTouch(data) {
436
+ off(document, touchevents.move, data.activeTouchmove);
437
+ off(document, touchevents.end, data.activeTouchend);
438
+ }
439
+
440
+
441
+ // Logic for triggering move and moveend events
442
+
443
+ function updateEvent(event, touch, timeStamp) {
444
+ var time = timeStamp - event.timeStamp;
445
+
446
+ event.distX = touch.pageX - event.startX;
447
+ event.distY = touch.pageY - event.startY;
448
+ event.deltaX = touch.pageX - event.pageX;
449
+ event.deltaY = touch.pageY - event.pageY;
450
+
451
+ // Average the velocity of the last few events using a decay
452
+ // curve to even out spurious jumps in values.
453
+ event.velocityX = 0.3 * event.velocityX + 0.7 * event.deltaX / time;
454
+ event.velocityY = 0.3 * event.velocityY + 0.7 * event.deltaY / time;
455
+ event.pageX = touch.pageX;
456
+ event.pageY = touch.pageY;
457
+ }
458
+
459
+ function endEvent(target, event, timer, fn) {
460
+ timer.end(function(){
461
+ trigger(target, 'moveend', event);
462
+ return fn && fn();
463
+ });
464
+ }
465
+
466
+
467
+ // Set up the DOM
468
+
469
+ function movestart(e) {
470
+ if (e.defaultPrevented) { return; }
471
+ if (!e.moveEnabled) { return; }
472
+
473
+ var event = {
474
+ startX: e.startX,
475
+ startY: e.startY,
476
+ pageX: e.pageX,
477
+ pageY: e.pageY,
478
+ distX: e.distX,
479
+ distY: e.distY,
480
+ deltaX: e.deltaX,
481
+ deltaY: e.deltaY,
482
+ velocityX: e.velocityX,
483
+ velocityY: e.velocityY,
484
+ identifier: e.identifier,
485
+ targetTouches: e.targetTouches,
486
+ finger: e.finger
487
+ };
488
+
489
+ var data = {
490
+ target: e.target,
491
+ event: event,
492
+ timer: new Timer(update),
493
+ touch: undefined,
494
+ timeStamp: e.timeStamp
495
+ };
496
+
497
+ function update(time) {
498
+ updateEvent(event, data.touch, data.timeStamp);
499
+ trigger(data.target, 'move', event);
500
+ }
501
+
502
+ if (e.identifier === undefined) {
503
+ // We're dealing with a mouse event.
504
+ // Stop clicks from propagating during a move
505
+ on(e.target, 'click', preventDefault);
506
+ on(document, mouseevents.move, activeMousemove, data);
507
+ on(document, mouseevents.end, activeMouseend, data);
508
+ }
509
+ else {
510
+ // In order to unbind correct handlers they have to be unique
511
+ data.activeTouchmove = function(e, data) { activeTouchmove(e, data); };
512
+ data.activeTouchend = function(e, data) { activeTouchend(e, data); };
513
+
514
+ // We're dealing with a touch.
515
+ on(document, touchevents.move, data.activeTouchmove, data);
516
+ on(document, touchevents.end, data.activeTouchend, data);
517
+ }
518
+ }
519
+
520
+ on(document, 'mousedown', mousedown);
521
+ on(document, 'touchstart', touchstart);
522
+ on(document, 'movestart', movestart);
523
+
524
+
525
+ // jQuery special events
526
+ //
527
+ // jQuery event objects are copies of DOM event objects. They need
528
+ // a little help copying the move properties across.
529
+
530
+ if (!window.jQuery) { return; }
531
+
532
+ var properties = ("startX startY pageX pageY distX distY deltaX deltaY velocityX velocityY").split(' ');
533
+
534
+ function enableMove1(e) { e.enableMove(); }
535
+ function enableMove2(e) { e.enableMove(); }
536
+ function enableMove3(e) { e.enableMove(); }
537
+
538
+ function add(handleObj) {
539
+ var handler = handleObj.handler;
540
+
541
+ handleObj.handler = function(e) {
542
+ // Copy move properties across from originalEvent
543
+ var i = properties.length;
544
+ var property;
545
+
546
+ while(i--) {
547
+ property = properties[i];
548
+ e[property] = e.originalEvent[property];
549
+ }
550
+
551
+ handler.apply(this, arguments);
552
+ };
553
+ }
554
+
555
+ jQuery.event.special.movestart = {
556
+ setup: function() {
557
+ // Movestart must be enabled to allow other move events
558
+ on(this, 'movestart', enableMove1);
559
+
560
+ // Do listen to DOM events
561
+ return false;
562
+ },
563
+
564
+ teardown: function() {
565
+ off(this, 'movestart', enableMove1);
566
+ return false;
567
+ },
568
+
569
+ add: add
570
+ };
571
+
572
+ jQuery.event.special.move = {
573
+ setup: function() {
574
+ on(this, 'movestart', enableMove2);
575
+ return false;
576
+ },
577
+
578
+ teardown: function() {
579
+ off(this, 'movestart', enableMove2);
580
+ return false;
581
+ },
582
+
583
+ add: add
584
+ };
585
+
586
+ jQuery.event.special.moveend = {
587
+ setup: function() {
588
+ on(this, 'movestart', enableMove3);
589
+ return false;
590
+ },
591
+
592
+ teardown: function() {
593
+ off(this, 'movestart', enableMove3);
594
+ return false;
595
+ },
596
+
597
+ add: add
598
+ };
599
+ });
assets/vendor/twentytwenty/js/jquery.twentytwenty.js ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($){
2
+
3
+ $.fn.twentytwenty = function(options) {
4
+ var options = $.extend({
5
+ default_offset_pct: 0.5,
6
+ orientation: 'horizontal',
7
+ before_label: 'Before',
8
+ after_label: 'After',
9
+ no_overlay: false,
10
+ move_slider_on_hover: false,
11
+ move_with_handle_only: true,
12
+ click_to_move: false
13
+ }, options);
14
+
15
+ return this.each(function() {
16
+
17
+ var sliderPct = options.default_offset_pct;
18
+ var container = $(this);
19
+ var sliderOrientation = options.orientation;
20
+ var beforeDirection = (sliderOrientation === 'vertical') ? 'down' : 'left';
21
+ var afterDirection = (sliderOrientation === 'vertical') ? 'up' : 'right';
22
+
23
+
24
+ container.wrap("<div class='twentytwenty-wrapper twentytwenty-" + sliderOrientation + "'></div>");
25
+ if(!options.no_overlay) {
26
+ container.append("<div class='twentytwenty-overlay'></div>");
27
+ var overlay = container.find(".twentytwenty-overlay");
28
+ overlay.append("<div class='twentytwenty-before-label' data-content='"+options.before_label+"'></div>");
29
+ overlay.append("<div class='twentytwenty-after-label' data-content='"+options.after_label+"'></div>");
30
+ }
31
+ var beforeImg = container.find("img:first");
32
+ var afterImg = container.find("img:last");
33
+ container.append("<div class='twentytwenty-handle'></div>");
34
+ var slider = container.find(".twentytwenty-handle");
35
+ slider.append("<span class='twentytwenty-" + beforeDirection + "-arrow'></span>");
36
+ slider.append("<span class='twentytwenty-" + afterDirection + "-arrow'></span>");
37
+ container.addClass("twentytwenty-container");
38
+ beforeImg.addClass("twentytwenty-before");
39
+ afterImg.addClass("twentytwenty-after");
40
+
41
+ var calcOffset = function(dimensionPct) {
42
+ var w = beforeImg.width();
43
+ var h = beforeImg.height();
44
+ return {
45
+ w: w+"px",
46
+ h: h+"px",
47
+ cw: (dimensionPct*w)+"px",
48
+ ch: (dimensionPct*h)+"px"
49
+ };
50
+ };
51
+
52
+ var adjustContainer = function(offset) {
53
+ if (sliderOrientation === 'vertical') {
54
+ beforeImg.css("clip", "rect(0,"+offset.w+","+offset.ch+",0)");
55
+ afterImg.css("clip", "rect("+offset.ch+","+offset.w+","+offset.h+",0)");
56
+ }
57
+ else {
58
+ beforeImg.css("clip", "rect(0,"+offset.cw+","+offset.h+",0)");
59
+ afterImg.css("clip", "rect(0,"+offset.w+","+offset.h+","+offset.cw+")");
60
+ }
61
+ container.css("height", offset.h);
62
+ };
63
+
64
+ var adjustSlider = function(pct) {
65
+ var offset = calcOffset(pct);
66
+ slider.css((sliderOrientation==="vertical") ? "top" : "left", (sliderOrientation==="vertical") ? offset.ch : offset.cw);
67
+ adjustContainer(offset);
68
+ };
69
+
70
+ // Return the number specified or the min/max number if it outside the range given.
71
+ var minMaxNumber = function(num, min, max) {
72
+ return Math.max(min, Math.min(max, num));
73
+ };
74
+
75
+ // Calculate the slider percentage based on the position.
76
+ var getSliderPercentage = function(positionX, positionY) {
77
+ var sliderPercentage = (sliderOrientation === 'vertical') ?
78
+ (positionY-offsetY)/imgHeight :
79
+ (positionX-offsetX)/imgWidth;
80
+
81
+ return minMaxNumber(sliderPercentage, 0, 1);
82
+ };
83
+
84
+
85
+ $(window).on("resize.twentytwenty", function(e) {
86
+ adjustSlider(sliderPct);
87
+ });
88
+
89
+ var offsetX = 0;
90
+ var offsetY = 0;
91
+ var imgWidth = 0;
92
+ var imgHeight = 0;
93
+ var onMoveStart = function(e) {
94
+ if (((e.distX > e.distY && e.distX < -e.distY) || (e.distX < e.distY && e.distX > -e.distY)) && sliderOrientation !== 'vertical') {
95
+ e.preventDefault();
96
+ }
97
+ else if (((e.distX < e.distY && e.distX < -e.distY) || (e.distX > e.distY && e.distX > -e.distY)) && sliderOrientation === 'vertical') {
98
+ e.preventDefault();
99
+ }
100
+ container.addClass("active");
101
+ offsetX = container.offset().left;
102
+ offsetY = container.offset().top;
103
+ imgWidth = beforeImg.width();
104
+ imgHeight = beforeImg.height();
105
+ };
106
+ var onMove = function(e) {
107
+ if (container.hasClass("active")) {
108
+ sliderPct = getSliderPercentage(e.pageX, e.pageY);
109
+ adjustSlider(sliderPct);
110
+ }
111
+ };
112
+ var onMoveEnd = function() {
113
+ container.removeClass("active");
114
+ };
115
+
116
+ var moveTarget = options.move_with_handle_only ? slider : container;
117
+ moveTarget.on("movestart",onMoveStart);
118
+ moveTarget.on("move",onMove);
119
+ moveTarget.on("moveend",onMoveEnd);
120
+
121
+ if (options.move_slider_on_hover) {
122
+ container.on("mouseenter", onMoveStart);
123
+ container.on("mousemove", onMove);
124
+ container.on("mouseleave", onMoveEnd);
125
+ }
126
+
127
+ slider.on("touchmove", function(e) {
128
+ e.preventDefault();
129
+ });
130
+
131
+ container.find("img").on("mousedown", function(event) {
132
+ event.preventDefault();
133
+ });
134
+
135
+ if (options.click_to_move) {
136
+ container.on('click', function(e) {
137
+ offsetX = container.offset().left;
138
+ offsetY = container.offset().top;
139
+ imgWidth = beforeImg.width();
140
+ imgHeight = beforeImg.height();
141
+
142
+ sliderPct = getSliderPercentage(e.pageX, e.pageY);
143
+ adjustSlider(sliderPct);
144
+ });
145
+ }
146
+
147
+ $(window).trigger("resize.twentytwenty");
148
+ });
149
+ };
150
+
151
+ })(jQuery);
base.php CHANGED
@@ -6,13 +6,11 @@
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
9
- use Elementor\Plugin as Elementor;
10
-
11
  defined( 'ABSPATH' ) || die();
12
 
13
  class Base {
14
 
15
- const VERSION = '0.0.1';
16
 
17
  const MINIMUM_ELEMENTOR_VERSION = '2.0.0';
18
 
@@ -39,49 +37,39 @@ class Base {
39
  public function init() {
40
  // Check if Elementor installed and activated
41
  if ( ! did_action( 'elementor/loaded' ) ) {
42
- add_action( 'admin_notices', [ $this, 'admin_notice_missing_elementor' ] );
43
  return;
44
  }
45
 
46
  // Check for required Elementor version
47
  if ( ! version_compare( ELEMENTOR_VERSION, self::MINIMUM_ELEMENTOR_VERSION, '>=' ) ) {
48
- add_action( 'admin_notices', [ $this, 'admin_notice_minimum_elementor_version' ] );
49
  return;
50
  }
51
 
52
  // Check for required PHP version
53
  if ( version_compare( PHP_VERSION, self::MINIMUM_PHP_VERSION, '<' ) ) {
54
- add_action( 'admin_notices', [ $this, 'admin_notice_minimum_php_version' ] );
55
  return;
56
  }
57
 
58
  $this->include_files();
59
 
60
  // Register custom category
61
- add_action( 'elementor/elements/categories_registered', [ $this, 'add_category' ] );
62
 
63
- // Add Plugin actions
64
- add_action( 'elementor/widgets/widgets_registered', [ $this, 'init_widgets' ] );
65
 
66
- // Frontend scripts
67
- add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
68
  }
69
 
70
  public function include_files() {
71
  require( __DIR__ . '/inc/functions.php' );
72
- }
73
-
74
- /**
75
- * Enqueue frontend scripts
76
- */
77
- public function enqueue_scripts() {
78
- $suffix = ( ! ha_is_script_debug_enabled() ) ? '.min' : '';
79
- wp_enqueue_style(
80
- 'happy-addons-elementor',
81
- plugin_dir_url( __FILE__ ) . 'assets/css/main' . $suffix . '.css',
82
- ['elementor-frontend'],
83
- self::VERSION
84
- );
85
  }
86
 
87
  /**
@@ -115,7 +103,7 @@ class Base {
115
  $message = sprintf(
116
  /* translators: 1: Plugin name 2: Elementor */
117
  esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'happy_addons' ),
118
- '<strong>' . esc_html__( 'Happy Elementor Card', 'happy_addons' ) . '</strong>',
119
  '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>'
120
  );
121
 
@@ -138,7 +126,7 @@ class Base {
138
  $message = sprintf(
139
  /* translators: 1: Plugin name 2: Elementor 3: Required Elementor version */
140
  esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
141
- '<strong>' . esc_html__( 'Happy Elementor Card', 'happy_addons' ) . '</strong>',
142
  '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>',
143
  self::MINIMUM_ELEMENTOR_VERSION
144
  );
@@ -162,7 +150,7 @@ class Base {
162
  $message = sprintf(
163
  /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
164
  esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
165
- '<strong>' . esc_html__( 'Happy Elementor Card', 'happy_addons' ) . '</strong>',
166
  '<strong>' . esc_html__( 'PHP', 'happy_addons' ) . '</strong>',
167
  self::MINIMUM_PHP_VERSION
168
  );
@@ -171,30 +159,17 @@ class Base {
171
  }
172
 
173
  /**
174
- * Init Widgets
175
  *
176
- * Include widgets files and register them
177
  *
178
  * @since 1.0.0
179
  *
180
  * @access public
181
  */
182
- public function init_widgets() {
183
- require( __DIR__ . '/addons/class-addon-base.php' );
184
-
185
- $addons = [
186
- 'blurb',
187
- 'card',
188
- 'cf7',
189
- 'icon-box',
190
- ];
191
-
192
- foreach ( $addons as $addon ) {
193
- require( __DIR__ . '/addons/class-' . $addon . '.php' );
194
-
195
- $class_name = str_replace( '-', '_', $addon );
196
- $class_name = __NAMESPACE__ . '\Addons\\' . $class_name;
197
- Elementor::instance()->widgets_manager->register_widget_type( new $class_name() );
198
- }
199
  }
200
  }
6
  */
7
  namespace Happy_Addons\Elementor;
8
 
 
 
9
  defined( 'ABSPATH' ) || die();
10
 
11
  class Base {
12
 
13
+ const VERSION = '1.0.0';
14
 
15
  const MINIMUM_ELEMENTOR_VERSION = '2.0.0';
16
 
37
  public function init() {
38
  // Check if Elementor installed and activated
39
  if ( ! did_action( 'elementor/loaded' ) ) {
40
+ add_action( 'admin_notices', [$this, 'admin_notice_missing_elementor'] );
41
  return;
42
  }
43
 
44
  // Check for required Elementor version
45
  if ( ! version_compare( ELEMENTOR_VERSION, self::MINIMUM_ELEMENTOR_VERSION, '>=' ) ) {
46
+ add_action( 'admin_notices', [$this, 'admin_notice_minimum_elementor_version'] );
47
  return;
48
  }
49
 
50
  // Check for required PHP version
51
  if ( version_compare( PHP_VERSION, self::MINIMUM_PHP_VERSION, '<' ) ) {
52
+ add_action( 'admin_notices', [$this, 'admin_notice_minimum_php_version'] );
53
  return;
54
  }
55
 
56
  $this->include_files();
57
 
58
  // Register custom category
59
+ add_action( 'elementor/elements/categories_registered', [$this, 'add_category'] );
60
 
61
+ // Register custom controls
62
+ add_action( 'elementor/controls/controls_registered', [$this, 'register_controls'] );
63
 
64
+ Widget_Manager::instance()->init();
65
+ Asset_Manager::instance()->init();
66
  }
67
 
68
  public function include_files() {
69
  require( __DIR__ . '/inc/functions.php' );
70
+ require( __DIR__ . '/inc/happy-icons.php' );
71
+ require( __DIR__ . '/classes/widget-manager.php' );
72
+ require( __DIR__ . '/classes/asset-manager.php' );
 
 
 
 
 
 
 
 
 
 
73
  }
74
 
75
  /**
103
  $message = sprintf(
104
  /* translators: 1: Plugin name 2: Elementor */
105
  esc_html__( '"%1$s" requires "%2$s" to be installed and activated.', 'happy_addons' ),
106
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
107
  '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>'
108
  );
109
 
126
  $message = sprintf(
127
  /* translators: 1: Plugin name 2: Elementor 3: Required Elementor version */
128
  esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
129
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
130
  '<strong>' . esc_html__( 'Elementor', 'happy_addons' ) . '</strong>',
131
  self::MINIMUM_ELEMENTOR_VERSION
132
  );
150
  $message = sprintf(
151
  /* translators: 1: Plugin name 2: PHP 3: Required PHP version */
152
  esc_html__( '"%1$s" requires "%2$s" version %3$s or greater.', 'happy_addons' ),
153
+ '<strong>' . esc_html__( 'Happy Elementor Addons', 'happy_addons' ) . '</strong>',
154
  '<strong>' . esc_html__( 'PHP', 'happy_addons' ) . '</strong>',
155
  self::MINIMUM_PHP_VERSION
156
  );
159
  }
160
 
161
  /**
162
+ * Register custom controls
163
  *
164
+ * Include custom controls file and register them
165
  *
166
  * @since 1.0.0
167
  *
168
  * @access public
169
  */
170
+ public function register_controls() {
171
+ require( __DIR__ . '/controls/foreground.php' );
172
+ $foreground = __NAMESPACE__ . '\Controls\Group_Control_Foreground';
173
+ \Elementor\Plugin::instance()->controls_manager->add_group_control( $foreground::get_type(), new $foreground() );
 
 
 
 
 
 
 
 
 
 
 
 
 
174
  }
175
  }
base/widget-base.php ADDED
@@ -0,0 +1,161 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Happy Addons widget base
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Widget_Base;
10
+ use Elementor\Controls_Manager;
11
+
12
+ defined( 'ABSPATH' ) || die();
13
+
14
+ abstract class Base extends Widget_Base {
15
+
16
+ /**
17
+ * Get widget name.
18
+ *
19
+ * @since 1.0.0
20
+ * @access public
21
+ *
22
+ * @return string Widget name.
23
+ */
24
+ public function get_name() {
25
+ /**
26
+ * Automatically generate widget name from class
27
+ *
28
+ * Card will be card
29
+ * Blog_Card will be blog-card
30
+ */
31
+ $name = str_replace( __NAMESPACE__, '', $this->get_class_name() );
32
+ $name = str_replace( '_', '-', $name );
33
+ $name = ltrim( $name, '\\' );
34
+ $name = strtolower( $name );
35
+ return 'ha-' . $name;
36
+ }
37
+
38
+ /**
39
+ * Get widget categories.
40
+ *
41
+ * @since 1.0.0
42
+ * @access public
43
+ *
44
+ * @return array Widget categories.
45
+ */
46
+ public function get_categories() {
47
+ return [ 'happy_addons' ];
48
+ }
49
+
50
+ /**
51
+ * Override from addon to add custom wrapper class.
52
+ *
53
+ * @return string
54
+ */
55
+ protected function get_custom_wrapper_class() {
56
+ return '';
57
+ }
58
+
59
+ /**
60
+ * Overriding default function to add custom html class.
61
+ *
62
+ * @return string
63
+ */
64
+ public function get_html_wrapper_class() {
65
+ $html_class = parent::get_html_wrapper_class();
66
+ $html_class .= ' happy-addon';
67
+ $html_class .= ' ' . $this->get_name();
68
+ $html_class .= ' ' . $this->get_custom_wrapper_class();
69
+ return rtrim( $html_class );
70
+ }
71
+
72
+ /**
73
+ * Register design controls
74
+ *
75
+ * Design controls are fixed for all widgets
76
+ */
77
+ private function register_design_controls() {
78
+ $this->start_controls_section(
79
+ '_design',
80
+ [
81
+ 'label' => __( 'Design', 'happy_addons' ),
82
+ 'tab' => Controls_Manager::TAB_CONTENT,
83
+ ]
84
+ );
85
+
86
+ $this->add_control(
87
+ '_design_notes',
88
+ [
89
+ 'type' => Controls_Manager::RAW_HTML,
90
+ 'raw' => sprintf(
91
+ __( 'We know how bad you feel when you see the same design over and over again across the web. You don\'t have to feel that way anymore. %sJoin us and experience the exception.%s', 'plugin-name' ),
92
+ '<a href="https://fb.me/obiPlabon" target="_blank">',
93
+ '</a>'
94
+ ),
95
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
96
+ ]
97
+ );
98
+
99
+ if ( empty( $this->get_skins() ) ) {
100
+ $this->add_control(
101
+ '_skin',
102
+ [
103
+ 'label' => __( 'Skin', 'happy_addons' ),
104
+ 'type' => 'select',
105
+ 'options' => ['' => __( 'Default', 'happy_addons' )],
106
+ 'default' => '',
107
+ 'render_type' => 'none'
108
+ ]
109
+ );
110
+ }
111
+
112
+ $this->end_controls_section();
113
+ }
114
+
115
+ /**
116
+ * Register faq controls
117
+ */
118
+ protected function register_faq_controls() {
119
+ $this->start_controls_section(
120
+ '_faq',
121
+ [
122
+ 'label' => __( 'FAQs', 'happy_addons' ),
123
+ 'tab' => Controls_Manager::TAB_CONTENT,
124
+ ]
125
+ );
126
+
127
+ $this->add_control(
128
+ '_faq_notes',
129
+ [
130
+ 'type' => Controls_Manager::RAW_HTML,
131
+ 'raw' => __( 'A very important message to show in the panel.', 'plugin-name' ),
132
+ 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info',
133
+ ]
134
+ );
135
+
136
+ $this->end_controls_section();
137
+ }
138
+
139
+ /**
140
+ * Register widget controls
141
+ */
142
+ protected function _register_controls() {
143
+ $this->register_content_controls();
144
+
145
+ $this->register_style_controls();
146
+ }
147
+
148
+ /**
149
+ * Register content controls
150
+ *
151
+ * @return void
152
+ */
153
+ abstract protected function register_content_controls();
154
+
155
+ /**
156
+ * Register style controls
157
+ *
158
+ * @return void
159
+ */
160
+ abstract protected function register_style_controls();
161
+ }
classes/asset-manager.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Happy_Addons\Elementor;
3
+
4
+ defined( 'ABSPATH' ) || die();
5
+
6
+ class Asset_Manager {
7
+
8
+ private static $instance = null;
9
+
10
+ public static function instance() {
11
+ if ( is_null( self::$instance ) ) {
12
+ self::$instance = new self();
13
+ }
14
+ return self::$instance;
15
+ }
16
+
17
+ public function init() {
18
+ // Frontend scripts
19
+ add_action( 'wp_enqueue_scripts', [$this, 'enqueue_frontend_scripts'] );
20
+
21
+ add_action( 'elementor/editor/before_enqueue_scripts', [$this, 'enqueue_editor_scripts'] );
22
+
23
+ add_action( 'elementor/preview/enqueue_styles', [$this, 'enqueue_preview_style'] );
24
+
25
+
26
+ // Placeholder image replacement
27
+ add_filter( 'elementor/utils/get_placeholder_image_src', [$this, 'set_placeholder_image'] );
28
+ }
29
+
30
+ public function set_placeholder_image() {
31
+ return HAPPY_ASSETS . 'imgs/placeholder.jpg';
32
+ }
33
+
34
+ /**
35
+ * Enqueue frontend scripts
36
+ */
37
+ public function enqueue_frontend_scripts() {
38
+ $suffix = ha_is_script_debug_enabled() ? '.min.' : '.';
39
+
40
+ wp_enqueue_style(
41
+ 'happy-icon',
42
+ HAPPY_ASSETS . 'fonts/style.min.css',
43
+ null,
44
+ Base::VERSION
45
+ );
46
+
47
+ wp_enqueue_style(
48
+ 'twentytwenty',
49
+ HAPPY_ASSETS . 'vendor/twentytwenty/css/twentytwenty.css',
50
+ null,
51
+ Base::VERSION
52
+ );
53
+
54
+ wp_enqueue_style(
55
+ 'happy-elementor-addons',
56
+ HAPPY_ASSETS . 'css/main' . $suffix . 'css',
57
+ ['elementor-frontend'],
58
+ Base::VERSION
59
+ );
60
+
61
+ // Scripts
62
+ wp_enqueue_script(
63
+ 'jquery-event-move',
64
+ HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.event.move.js',
65
+ ['jquery'],
66
+ Base::VERSION,
67
+ true
68
+ );
69
+
70
+ wp_enqueue_script(
71
+ 'jquery-twentytwenty',
72
+ HAPPY_ASSETS . 'vendor/twentytwenty/js/jquery.twentytwenty.js',
73
+ ['jquery-event-move'],
74
+ Base::VERSION,
75
+ true
76
+ );
77
+
78
+ wp_enqueue_script(
79
+ 'anime',
80
+ HAPPY_ASSETS . 'vendor/anime/lib/anime.min.js',
81
+ null,
82
+ Base::VERSION,
83
+ true
84
+ );
85
+
86
+ wp_enqueue_script(
87
+ 'happy-elementor-addons',
88
+ HAPPY_ASSETS . 'js/happy-addons' . $suffix . 'js',
89
+ ['jquery', 'imagesloaded'],
90
+ Base::VERSION,
91
+ true
92
+ );
93
+ }
94
+
95
+ public function enqueue_editor_scripts() {
96
+ wp_enqueue_style(
97
+ 'happy-icon',
98
+ HAPPY_ASSETS . 'fonts/style.min.css',
99
+ null,
100
+ Base::VERSION
101
+ );
102
+
103
+ wp_enqueue_style(
104
+ 'happy-elementor-addons-admin',
105
+ HAPPY_ASSETS . 'admin/css/main.min.css',
106
+ null,
107
+ Base::VERSION
108
+ );
109
+
110
+ wp_enqueue_script(
111
+ 'happy-elementor-addons-admin',
112
+ HAPPY_ASSETS . 'admin/js/happy-addons.min.js',
113
+ ['elementor-editor'],
114
+ Base::VERSION,
115
+ true
116
+ );
117
+
118
+ }
119
+
120
+ public function enqueue_preview_style() {
121
+ if( class_exists( 'WeForms' ) ) {
122
+ wp_enqueue_style(
123
+ 'happy-elementor-weform-preview',
124
+ plugins_url( '/weforms/assets/wpuf/css/frontend-forms.css', 'weforms' ),
125
+ null,
126
+ Base::VERSION
127
+ );
128
+ }
129
+ if( class_exists( 'WPForms_Lite' ) ) {
130
+ wp_enqueue_style(
131
+ 'happy-elementor-wpform-preview',
132
+ plugins_url( '/wpforms-lite/assets/css/wpforms-full.css', 'wpforms-lite' ),
133
+ null,
134
+ Base::VERSION
135
+ );
136
+ }
137
+ if( class_exists( 'Caldera_Forms' ) ) {
138
+ wp_enqueue_style(
139
+ 'happy-elementor-caldera-preview',
140
+ plugins_url( '/caldera-forms/assets/css/caldera-forms-front.css', 'caldera-forms' ),
141
+ null,
142
+ Base::VERSION
143
+ );
144
+ }
145
+
146
+ }
147
+
148
+ }
classes/widget-manager.php ADDED
@@ -0,0 +1,411 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ namespace Happy_Addons\Elementor;
3
+
4
+ use Elementor\Controls_Manager;
5
+ use Elementor\Element_Base;
6
+ use Elementor\Plugin as Elementor;
7
+ use Happy_Addons\Elementor\Widget\Base as Happy_Addon_Base;
8
+
9
+ defined( 'ABSPATH' ) || die();
10
+
11
+ class Widget_Manager {
12
+
13
+ private static $instance = null;
14
+
15
+ public static function instance() {
16
+ if ( is_null( self::$instance ) ) {
17
+ self::$instance = new self();
18
+ }
19
+ return self::$instance;
20
+ }
21
+
22
+ public function init() {
23
+ // Add Plugin actions
24
+ add_action( 'elementor/widgets/widgets_registered', [ $this, 'register_widgets' ] );
25
+ add_action( 'elementor/element/common/section_effects/after_section_start', [ $this, 'add_floating_effect_controls' ] );
26
+ }
27
+
28
+ public function add_floating_effect_controls( Element_Base $element ) {
29
+ $element->add_control(
30
+ 'ha_floating_fx',
31
+ [
32
+ 'label' => __( 'Floating Effects', 'happy_addons' ),
33
+ 'type' => Controls_Manager::SWITCHER,
34
+ 'return_value' => 'yes',
35
+ 'frontend_available' => true,
36
+ ]
37
+ );
38
+
39
+ $element->add_control(
40
+ 'ha_floating_fx_translate_toggle',
41
+ [
42
+ 'label' => __( 'Translate', 'happy_addons' ),
43
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
44
+ 'return_value' => 'yes',
45
+ 'frontend_available' => true,
46
+ 'condition' => [
47
+ 'ha_floating_fx' => 'yes',
48
+ ]
49
+ ]
50
+ );
51
+
52
+ $element->start_popover();
53
+
54
+ $element->add_control(
55
+ 'ha_floating_fx_translate_x',
56
+ [
57
+ 'label' => __( 'Translate X', 'happy_addons' ),
58
+ 'type' => Controls_Manager::SLIDER,
59
+ 'size_units' => ['px'],
60
+ 'condition' => [
61
+ 'ha_floating_fx_translate_toggle' => 'yes',
62
+ 'ha_floating_fx' => 'yes',
63
+ ],
64
+ 'render_type' => 'none',
65
+ 'frontend_available' => true,
66
+ ]
67
+ );
68
+
69
+ $element->add_control(
70
+ 'ha_floating_fx_translate_y',
71
+ [
72
+ 'label' => __( 'Translate Y', 'happy_addons' ),
73
+ 'type' => Controls_Manager::SLIDER,
74
+ 'size_units' => ['px'],
75
+ 'condition' => [
76
+ 'ha_floating_fx_translate_toggle' => 'yes',
77
+ 'ha_floating_fx' => 'yes',
78
+ ],
79
+ 'render_type' => 'none',
80
+ 'frontend_available' => true,
81
+ ]
82
+ );
83
+
84
+ $element->add_control(
85
+ 'ha_floating_fx_translate_duration',
86
+ [
87
+ 'label' => __( 'Duration', 'happy_addons' ),
88
+ 'type' => Controls_Manager::SLIDER,
89
+ 'size_units' => ['px'],
90
+ 'range' => [
91
+ 'px' => [
92
+ 'min' => 0,
93
+ 'max' => 10000,
94
+ 'step' => 100
95
+ ]
96
+ ],
97
+ 'default' => [
98
+ 'size' => 1000,
99
+ ],
100
+ 'condition' => [
101
+ 'ha_floating_fx_translate_toggle' => 'yes',
102
+ 'ha_floating_fx' => 'yes',
103
+ ],
104
+ 'render_type' => 'none',
105
+ 'frontend_available' => true,
106
+ ]
107
+ );
108
+
109
+ $element->add_control(
110
+ 'ha_floating_fx_translate_delay',
111
+ [
112
+ 'label' => __( 'Delay', 'happy_addons' ),
113
+ 'type' => Controls_Manager::SLIDER,
114
+ 'size_units' => ['px'],
115
+ 'range' => [
116
+ 'px' => [
117
+ 'min' => 0,
118
+ 'max' => 5000,
119
+ 'step' => 100
120
+ ]
121
+ ],
122
+ 'condition' => [
123
+ 'ha_floating_fx_translate_toggle' => 'yes',
124
+ 'ha_floating_fx' => 'yes',
125
+ ],
126
+ 'render_type' => 'none',
127
+ 'frontend_available' => true,
128
+ ]
129
+ );
130
+
131
+ $element->end_popover();
132
+
133
+ $element->add_control(
134
+ 'ha_floating_fx_rotate_toggle',
135
+ [
136
+ 'label' => __( 'Rotate', 'happy_addons' ),
137
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
138
+ 'return_value' => 'yes',
139
+ 'frontend_available' => true,
140
+ 'condition' => [
141
+ 'ha_floating_fx' => 'yes',
142
+ ]
143
+ ]
144
+ );
145
+
146
+ $element->start_popover();
147
+
148
+ $element->add_control(
149
+ 'ha_floating_fx_rotate_x',
150
+ [
151
+ 'label' => __( 'Rotate X', 'happy_addons' ),
152
+ 'type' => Controls_Manager::SLIDER,
153
+ 'size_units' => ['px'],
154
+ 'range' => [
155
+ 'px' => [
156
+ 'min' => 0,
157
+ 'max' => 360,
158
+ ]
159
+ ],
160
+ 'condition' => [
161
+ 'ha_floating_fx_rotate_toggle' => 'yes',
162
+ 'ha_floating_fx' => 'yes',
163
+ ],
164
+ 'render_type' => 'none',
165
+ 'frontend_available' => true,
166
+ ]
167
+ );
168
+
169
+ $element->add_control(
170
+ 'ha_floating_fx_rotate_y',
171
+ [
172
+ 'label' => __( 'Rotate Y', 'happy_addons' ),
173
+ 'type' => Controls_Manager::SLIDER,
174
+ 'size_units' => ['px'],
175
+ 'range' => [
176
+ 'px' => [
177
+ 'min' => 0,
178
+ 'max' => 360,
179
+ ]
180
+ ],
181
+ 'condition' => [
182
+ 'ha_floating_fx_rotate_toggle' => 'yes',
183
+ 'ha_floating_fx' => 'yes',
184
+ ],
185
+ 'render_type' => 'none',
186
+ 'frontend_available' => true,
187
+ ]
188
+ );
189
+
190
+ $element->add_control(
191
+ 'ha_floating_fx_rotate_z',
192
+ [
193
+ 'label' => __( 'Rotate Z', 'happy_addons' ),
194
+ 'type' => Controls_Manager::SLIDER,
195
+ 'size_units' => ['px'],
196
+ 'range' => [
197
+ 'px' => [
198
+ 'min' => 0,
199
+ 'max' => 360,
200
+ ]
201
+ ],
202
+ 'condition' => [
203
+ 'ha_floating_fx_rotate_toggle' => 'yes',
204
+ 'ha_floating_fx' => 'yes',
205
+ ],
206
+ 'render_type' => 'none',
207
+ 'frontend_available' => true,
208
+ ]
209
+ );
210
+
211
+ $element->add_control(
212
+ 'ha_floating_fx_rotate_duration',
213
+ [
214
+ 'label' => __( 'Duration', 'happy_addons' ),
215
+ 'type' => Controls_Manager::SLIDER,
216
+ 'size_units' => ['px'],
217
+ 'range' => [
218
+ 'px' => [
219
+ 'min' => 0,
220
+ 'max' => 10000,
221
+ 'step' => 100
222
+ ]
223
+ ],
224
+ 'default' => [
225
+ 'size' => 1000,
226
+ ],
227
+ 'condition' => [
228
+ 'ha_floating_fx_rotate_toggle' => 'yes',
229
+ 'ha_floating_fx' => 'yes',
230
+ ],
231
+ 'render_type' => 'none',
232
+ 'frontend_available' => true,
233
+ ]
234
+ );
235
+
236
+ $element->add_control(
237
+ 'ha_floating_fx_rotate_delay',
238
+ [
239
+ 'label' => __( 'Delay', 'happy_addons' ),
240
+ 'type' => Controls_Manager::SLIDER,
241
+ 'size_units' => ['px'],
242
+ 'range' => [
243
+ 'px' => [
244
+ 'min' => 0,
245
+ 'max' => 5000,
246
+ 'step' => 100
247
+ ]
248
+ ],
249
+ 'condition' => [
250
+ 'ha_floating_fx_rotate_toggle' => 'yes',
251
+ 'ha_floating_fx' => 'yes',
252
+ ],
253
+ 'render_type' => 'none',
254
+ 'frontend_available' => true,
255
+ ]
256
+ );
257
+
258
+ $element->end_popover();
259
+
260
+ $element->add_control(
261
+ 'ha_floating_fx_scale_toggle',
262
+ [
263
+ 'label' => __( 'Scale', 'happy_addons' ),
264
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
265
+ 'return_value' => 'yes',
266
+ 'frontend_available' => true,
267
+ 'condition' => [
268
+ 'ha_floating_fx' => 'yes',
269
+ ]
270
+ ]
271
+ );
272
+
273
+ $element->start_popover();
274
+
275
+ $element->add_control(
276
+ 'ha_floating_fx_scale_x',
277
+ [
278
+ 'label' => __( 'Scale X', 'happy_addons' ),
279
+ 'type' => Controls_Manager::SLIDER,
280
+ 'size_units' => ['px'],
281
+ 'range' => [
282
+ 'px' => [
283
+ 'min' => 0,
284
+ 'max' => 10,
285
+ 'step' => .1
286
+ ]
287
+ ],
288
+ 'condition' => [
289
+ 'ha_floating_fx_scale_toggle' => 'yes',
290
+ 'ha_floating_fx' => 'yes',
291
+ ],
292
+ 'render_type' => 'none',
293
+ 'frontend_available' => true,
294
+ ]
295
+ );
296
+
297
+ $element->add_control(
298
+ 'ha_floating_fx_scale_y',
299
+ [
300
+ 'label' => __( 'Scale Y', 'happy_addons' ),
301
+ 'type' => Controls_Manager::SLIDER,
302
+ 'size_units' => ['px'],
303
+ 'range' => [
304
+ 'px' => [
305
+ 'min' => 0,
306
+ 'max' => 10,
307
+ 'step' => .1
308
+ ]
309
+ ],
310
+ 'condition' => [
311
+ 'ha_floating_fx_scale_toggle' => 'yes',
312
+ 'ha_floating_fx' => 'yes',
313
+ ],
314
+ 'render_type' => 'none',
315
+ 'frontend_available' => true,
316
+ ]
317
+ );
318
+
319
+ $element->add_control(
320
+ 'ha_floating_fx_scale_duration',
321
+ [
322
+ 'label' => __( 'Duration', 'happy_addons' ),
323
+ 'type' => Controls_Manager::SLIDER,
324
+ 'size_units' => ['px'],
325
+ 'range' => [
326
+ 'px' => [
327
+ 'min' => 0,
328
+ 'max' => 10000,
329
+ 'step' => 100
330
+ ]
331
+ ],
332
+ 'default' => [
333
+ 'size' => 1000,
334
+ ],
335
+ 'condition' => [
336
+ 'ha_floating_fx_scale_toggle' => 'yes',
337
+ 'ha_floating_fx' => 'yes',
338
+ ],
339
+ 'render_type' => 'none',
340
+ 'frontend_available' => true,
341
+ ]
342
+ );
343
+
344
+ $element->add_control(
345
+ 'ha_floating_fx_scale_delay',
346
+ [
347
+ 'label' => __( 'Delay', 'happy_addons' ),
348
+ 'type' => Controls_Manager::SLIDER,
349
+ 'size_units' => ['px'],
350
+ 'range' => [
351
+ 'px' => [
352
+ 'min' => 0,
353
+ 'max' => 5000,
354
+ 'step' => 100
355
+ ]
356
+ ],
357
+ 'condition' => [
358
+ 'ha_floating_fx_scale_toggle' => 'yes',
359
+ 'ha_floating_fx' => 'yes',
360
+ ],
361
+ 'render_type' => 'none',
362
+ 'frontend_available' => true,
363
+ ]
364
+ );
365
+
366
+ $element->end_popover();
367
+
368
+ $element->add_control(
369
+ 'hr',
370
+ [
371
+ 'type' => Controls_Manager::DIVIDER,
372
+ ]
373
+ );
374
+ }
375
+
376
+ /**
377
+ * Init Widgets
378
+ *
379
+ * Include widgets files and register them
380
+ *
381
+ * @since 1.0.0
382
+ *
383
+ * @access public
384
+ */
385
+ public function register_widgets() {
386
+ require( HAPPY_DIR_PATH . 'base/widget-base.php' );
387
+
388
+ $widgets = [
389
+ 'infobox',
390
+ 'card',
391
+ 'cf7',
392
+ 'icon-box',
393
+ 'member',
394
+ 'review',
395
+ 'image-compare',
396
+ 'skills',
397
+ 'gradient-heading',
398
+ 'wpform',
399
+ 'calderaform',
400
+ 'weform',
401
+ ];
402
+
403
+ foreach ( $widgets as $widget ) {
404
+ require( HAPPY_DIR_PATH . 'widgets/' . $widget . '/widget.php' );
405
+
406
+ $class_name = str_replace( '-', '_', $widget );
407
+ $class_name = 'Happy_Addons\Elementor\Widget\\' . $class_name;
408
+ Elementor::instance()->widgets_manager->register_widget_type( new $class_name() );
409
+ }
410
+ }
411
+ }
controls/foreground.php ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Foreground control class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Controls;
8
+
9
+ use Elementor\Group_Control_Base;
10
+ use Elementor\Controls_Manager;
11
+
12
+ defined( 'ABSPATH' ) || die();
13
+
14
+ class Group_Control_Foreground extends Group_Control_Base {
15
+
16
+ /**
17
+ * Fields.
18
+ *
19
+ * Holds all the background control fields.
20
+ *
21
+ * @access protected
22
+ * @static
23
+ *
24
+ * @var array Background control fields.
25
+ */
26
+ protected static $fields;
27
+
28
+ /**
29
+ * Get background control type.
30
+ *
31
+ * Retrieve the control type, in this case `ha_text_color`.
32
+ *
33
+ * @since 1.0.0
34
+ * @access public
35
+ * @static
36
+ *
37
+ * @return string Control type.
38
+ */
39
+ public static function get_type() {
40
+ return 'foreground';
41
+ }
42
+
43
+ /**
44
+ * Init fields.
45
+ *
46
+ * Initialize background control fields.
47
+ *
48
+ * @since 1.2.2
49
+ * @access public
50
+ *
51
+ * @return array Control fields.
52
+ */
53
+ public function init_fields() {
54
+ $fields = [];
55
+
56
+ $fields['color_type'] = [
57
+ 'label' => _x( 'Text Color', 'Background Control', 'elementor' ),
58
+ 'type' => Controls_Manager::CHOOSE,
59
+ 'label_block' => false,
60
+ 'render_type' => 'ui',
61
+ 'options' => [
62
+ 'classic' => [
63
+ 'title' => _x( 'Classic', 'Text Color Control', 'happy_addons' ),
64
+ 'icon' => 'fa fa-paint-brush',
65
+ ],
66
+ 'gradient' => [
67
+ 'title' => _x( 'Gradient', 'Text Color Control', 'happy_addons' ),
68
+ 'icon' => 'fa fa-barcode',
69
+ ],
70
+ ],
71
+ 'default' => 'classic'
72
+ ];
73
+
74
+ $fields['color'] = [
75
+ 'label' => _x( 'Color', 'Background Control', 'elementor' ),
76
+ 'type' => Controls_Manager::COLOR,
77
+ 'default' => '',
78
+ 'title' => _x( 'Text Color', 'Background Control', 'elementor' ),
79
+ 'selectors' => [
80
+ '{{SELECTOR}}' => 'color: {{VALUE}};',
81
+ ],
82
+ 'condition' => [
83
+ 'color_type' => [ 'classic', 'gradient' ],
84
+ ],
85
+ ];
86
+
87
+ $fields['color_stop'] = [
88
+ 'label' => _x( 'Location', 'Background Control', 'elementor' ),
89
+ 'type' => Controls_Manager::SLIDER,
90
+ 'size_units' => [ '%' ],
91
+ 'default' => [
92
+ 'unit' => '%',
93
+ 'size' => 0,
94
+ ],
95
+ 'render_type' => 'ui',
96
+ 'condition' => [
97
+ 'color_type' => [ 'gradient' ],
98
+ ],
99
+ 'of_type' => 'gradient',
100
+ ];
101
+
102
+ $fields['color_b'] = [
103
+ 'label' => _x( 'Second Color', 'Background Control', 'elementor' ),
104
+ 'type' => Controls_Manager::COLOR,
105
+ 'default' => '#f2295b',
106
+ 'render_type' => 'ui',
107
+ 'condition' => [
108
+ 'color_type' => [ 'gradient' ],
109
+ ],
110
+ 'of_type' => 'gradient',
111
+ ];
112
+
113
+ $fields['color_b_stop'] = [
114
+ 'label' => _x( 'Location', 'Background Control', 'elementor' ),
115
+ 'type' => Controls_Manager::SLIDER,
116
+ 'size_units' => [ '%' ],
117
+ 'default' => [
118
+ 'unit' => '%',
119
+ 'size' => 100,
120
+ ],
121
+ 'render_type' => 'ui',
122
+ 'condition' => [
123
+ 'color_type' => [ 'gradient' ],
124
+ ],
125
+ 'of_type' => 'gradient',
126
+ ];
127
+
128
+ $fields['gradient_type'] = [
129
+ 'label' => _x( 'Type', 'Background Control', 'elementor' ),
130
+ 'type' => Controls_Manager::SELECT,
131
+ 'options' => [
132
+ 'linear' => _x( 'Linear', 'Background Control', 'elementor' ),
133
+ 'radial' => _x( 'Radial', 'Background Control', 'elementor' ),
134
+ ],
135
+ 'default' => 'linear',
136
+ 'render_type' => 'ui',
137
+ 'condition' => [
138
+ 'color_type' => [ 'gradient' ],
139
+ ],
140
+ 'of_type' => 'gradient',
141
+ ];
142
+
143
+ $fields['gradient_angle'] = [
144
+ 'label' => _x( 'Angle', 'Background Control', 'elementor' ),
145
+ 'type' => Controls_Manager::SLIDER,
146
+ 'size_units' => [ 'deg' ],
147
+ 'default' => [
148
+ 'unit' => 'deg',
149
+ 'size' => 180,
150
+ ],
151
+ 'range' => [
152
+ 'deg' => [
153
+ 'step' => 10,
154
+ ],
155
+ ],
156
+ 'selectors' => [
157
+ '{{SELECTOR}}' => '-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-color: transparent; background-image: linear-gradient({{SIZE}}{{UNIT}}, {{color.VALUE}} {{color_stop.SIZE}}{{color_stop.UNIT}}, {{color_b.VALUE}} {{color_b_stop.SIZE}}{{color_b_stop.UNIT}})',
158
+ ],
159
+ 'condition' => [
160
+ 'color_type' => [ 'gradient' ],
161
+ 'gradient_type' => 'linear',
162
+ ],
163
+ 'of_type' => 'gradient',
164
+ ];
165
+
166
+ $fields['gradient_position'] = [
167
+ 'label' => _x( 'Position', 'Background Control', 'elementor' ),
168
+ 'type' => Controls_Manager::SELECT,
169
+ 'options' => [
170
+ 'center center' => _x( 'Center Center', 'Background Control', 'elementor' ),
171
+ 'center left' => _x( 'Center Left', 'Background Control', 'elementor' ),
172
+ 'center right' => _x( 'Center Right', 'Background Control', 'elementor' ),
173
+ 'top center' => _x( 'Top Center', 'Background Control', 'elementor' ),
174
+ 'top left' => _x( 'Top Left', 'Background Control', 'elementor' ),
175
+ 'top right' => _x( 'Top Right', 'Background Control', 'elementor' ),
176
+ 'bottom center' => _x( 'Bottom Center', 'Background Control', 'elementor' ),
177
+ 'bottom left' => _x( 'Bottom Left', 'Background Control', 'elementor' ),
178
+ 'bottom right' => _x( 'Bottom Right', 'Background Control', 'elementor' ),
179
+ ],
180
+ 'default' => 'center center',
181
+ 'selectors' => [
182
+ '{{SELECTOR}}' => '-webkit-background-clip: text; -webkit-text-fill-color: transparent; background-color: transparent; background-image: radial-gradient(at {{VALUE}}, {{color.VALUE}} {{color_stop.SIZE}}{{color_stop.UNIT}}, {{color_b.VALUE}} {{color_b_stop.SIZE}}{{color_b_stop.UNIT}})',
183
+ ],
184
+ 'condition' => [
185
+ 'color_type' => [ 'gradient' ],
186
+ 'gradient_type' => 'radial',
187
+ ],
188
+ 'of_type' => 'gradient',
189
+ ];
190
+
191
+ return $fields;
192
+ }
193
+
194
+ /**
195
+ * Get child default args.
196
+ *
197
+ * Retrieve the default arguments for all the child controls for a specific group
198
+ * control.
199
+ *
200
+ * @since 1.2.2
201
+ * @access protected
202
+ *
203
+ * @return array Default arguments for all the child controls.
204
+ */
205
+ protected function get_child_default_args() {
206
+ return [
207
+ 'types' => [ 'classic', 'gradient' ],
208
+ ];
209
+ }
210
+
211
+ /**
212
+ * Filter fields.
213
+ *
214
+ * Filter which controls to display, using `include`, `exclude`, `condition`
215
+ * and `of_type` arguments.
216
+ *
217
+ * @since 1.2.2
218
+ * @access protected
219
+ *
220
+ * @return array Control fields.
221
+ */
222
+ protected function filter_fields() {
223
+ $fields = parent::filter_fields();
224
+
225
+ $args = $this->get_args();
226
+
227
+ foreach ( $fields as &$field ) {
228
+ if ( isset( $field['of_type'] ) && ! in_array( $field['of_type'], $args['types'] ) ) {
229
+ unset( $field );
230
+ }
231
+ }
232
+
233
+ return $fields;
234
+ }
235
+
236
+ /**
237
+ * Get default options.
238
+ *
239
+ * Retrieve the default options of the background control. Used to return the
240
+ * default options while initializing the background control.
241
+ *
242
+ * @since 1.9.0
243
+ * @access protected
244
+ *
245
+ * @return array Default background control options.
246
+ */
247
+ protected function get_default_options() {
248
+ return [
249
+ 'popover' => false,
250
+ ];
251
+ }
252
+ }
inc/functions.php CHANGED
@@ -49,6 +49,128 @@ if ( ! function_exists( 'ha_get_cf7_forms' ) ) {
49
  }
50
  }
51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  if ( ! function_exists( 'ha_sanitize_html_class_param' ) ) {
53
  /**
54
  * Sanitize html class string
@@ -79,8 +201,79 @@ if ( ! function_exists( 'ha_is_cf7_activated' ) ) {
79
  }
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  if ( ! function_exists( 'ha_is_script_debug_enabled' ) ) {
83
  function ha_is_script_debug_enabled() {
84
  return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
85
  }
86
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  }
50
  }
51
 
52
+ if ( ! function_exists( 'ha_get_wpforms' ) ) {
53
+ /**
54
+ * Get a list of all WPForms
55
+ *
56
+ * @return array
57
+ */
58
+ function ha_get_wpforms() {
59
+ $forms = get_posts( [
60
+ 'post_type' => 'wpforms',
61
+ 'post_status' => 'publish',
62
+ 'posts_per_page' => -1,
63
+ 'orderby' => 'title',
64
+ 'order' => 'ASC',
65
+ ] );
66
+
67
+ if ( ! empty( $forms ) ) {
68
+ return wp_list_pluck( $forms, 'post_title', 'ID' );
69
+ }
70
+ return [];
71
+ }
72
+ }
73
+
74
+ if ( ! function_exists( 'ha_get_ninjaform' ) ) {
75
+ /**
76
+ * Get a list of all Ninja Form
77
+ *
78
+ * @return array
79
+ */
80
+ function ha_get_ninjaform() {
81
+ $options = array();
82
+
83
+ if ( class_exists( 'Ninja_Forms' ) ) {
84
+ $contact_forms = Ninja_Forms()->form()->get_forms();
85
+
86
+ if ( !empty($contact_forms) && !is_wp_error( $contact_forms ) ) {
87
+
88
+ $options[0] = esc_html__( 'Select Ninja Form', 'happy_addons' );
89
+
90
+ foreach ( $contact_forms as $form ) {
91
+ $options[$form->get_id()] = $form->get_setting('title');
92
+ }
93
+ }
94
+ } else {
95
+ $options[0] = esc_html__( 'Create a Form First', 'happy_addons' );
96
+ }
97
+
98
+ return $options;
99
+ }
100
+ }
101
+
102
+ if ( ! function_exists( 'ha_get_caldera_form' ) ) {
103
+ /**
104
+ * Get a list of all Caldera Form
105
+ *
106
+ * @return array
107
+ */
108
+ function ha_get_caldera_form() {
109
+ $options = array();
110
+
111
+ if ( class_exists( 'Caldera_Forms' ) ) {
112
+ $contact_forms = \Caldera_Forms_Forms::get_forms(true, true);
113
+
114
+ if ( !empty( $contact_forms ) && !is_wp_error( $contact_forms ) ) {
115
+ $options[0] = esc_html__( 'Select a Caldera Form', 'happy_addons' );
116
+ foreach ( $contact_forms as $form ) {
117
+ $options[$form['ID']] = $form['name'];
118
+ }
119
+ }
120
+ } else {
121
+ $options[0] = esc_html__( 'Create a Form First', 'happy_addons' );
122
+ }
123
+
124
+ return $options;
125
+ }
126
+ }
127
+
128
+ if ( ! function_exists( 'ha_get_we_form' ) ) {
129
+ /**
130
+ * Get a list of all WeForm
131
+ *
132
+ * @return array
133
+ */
134
+ function ha_get_we_forms() {
135
+ $forms = get_posts( [
136
+ 'post_type' => 'wpuf_contact_form',
137
+ 'post_status' => 'publish',
138
+ 'posts_per_page' => -1,
139
+ 'orderby' => 'title',
140
+ 'order' => 'ASC',
141
+ ] );
142
+
143
+ if ( ! empty( $forms ) ) {
144
+ return wp_list_pluck( $forms, 'post_title', 'ID' );
145
+ }
146
+ return [];
147
+ }
148
+ }
149
+
150
+ if ( ! function_exists( 'ha_get_modula_gallery' ) ) {
151
+ /**
152
+ * Get a list of all Modula Gallery
153
+ *
154
+ * @return array
155
+ */
156
+ function ha_get_modula_gallery() {
157
+ $gallery = get_posts( [
158
+ 'post_type' => 'modula-gallery',
159
+ 'post_status' => 'publish',
160
+ 'posts_per_page' => -1,
161
+ 'orderby' => 'title',
162
+ 'order' => 'ASC',
163
+ ] );
164
+
165
+ if ( ! empty( $gallery ) ) {
166
+ return wp_list_pluck( $gallery, 'post_title', 'ID' );
167
+ } else {
168
+ __( 'Create a Gallery', 'happy_addons' );
169
+ }
170
+ return [];
171
+ }
172
+ }
173
+
174
  if ( ! function_exists( 'ha_sanitize_html_class_param' ) ) {
175
  /**
176
  * Sanitize html class string
201
  }
202
  }
203
 
204
+ if ( ! function_exists( 'ha_is_wpf_activated' ) ) {
205
+ /**
206
+ * Check if WPForms is activated
207
+ *
208
+ * @return bool
209
+ */
210
+ function ha_is_wpf_activated() {
211
+ return class_exists( 'WPForms_Lite' );
212
+ }
213
+ }
214
+
215
+ if ( ! function_exists( 'ha_is_ninjaf_activated' ) ) {
216
+ /**
217
+ * Check if Ninja Form is activated
218
+ *
219
+ * @return bool
220
+ */
221
+ function ha_is_ninjaf_activated() {
222
+ return class_exists( 'Ninja_Forms' );
223
+ }
224
+ }
225
+
226
+ if ( ! function_exists( 'ha_is_calderaf_activated' ) ) {
227
+ /**
228
+ * Check if Caldera Form is activated
229
+ *
230
+ * @return bool
231
+ */
232
+ function ha_is_calderaf_activated() {
233
+ return class_exists( 'Caldera_Forms' );
234
+ }
235
+ }
236
+
237
+ if ( ! function_exists( 'ha_is_weform_activated' ) ) {
238
+ /**
239
+ * Check if We Form is activated
240
+ *
241
+ * @return bool
242
+ */
243
+ function ha_is_weform_activated() {
244
+ return class_exists( 'WeForms' );
245
+ }
246
+ }
247
+
248
  if ( ! function_exists( 'ha_is_script_debug_enabled' ) ) {
249
  function ha_is_script_debug_enabled() {
250
  return ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG );
251
  }
252
  }
253
+
254
+ function ha_prepare_data_prop_settings( &$settings, $field_map = [] ) {
255
+ $data = [];
256
+ foreach ( $field_map as $key => $data_key ) {
257
+ $setting_value = ha_get_setting_value( $settings, $key );
258
+ list( $data_field_key, $data_field_type ) = explode( '.', $data_key );
259
+ $validator = $data_field_type . 'val';
260
+
261
+ if ( is_callable( $validator ) ) {
262
+ $val = call_user_func( $validator, $setting_value );
263
+ } else {
264
+ $val = $setting_value;
265
+ }
266
+ $data[ $data_field_key ] = $val;
267
+ }
268
+ return wp_json_encode( $data );
269
+ }
270
+
271
+ function ha_get_setting_value( &$settings, $keys ) {
272
+ if ( ! is_array( $keys ) ) {
273
+ $keys = explode( '.', $keys );
274
+ }
275
+ if ( is_array( $settings[ $keys[0] ] ) ) {
276
+ return ha_get_setting_value( $settings[ $keys[0] ], array_slice( $keys, 1 ) );
277
+ }
278
+ return $settings[ $keys[0] ];
279
+ }
inc/happy-icons.php ADDED
@@ -0,0 +1,409 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * List of happy icons
4
+ *
5
+ * @return array
6
+ */
7
+ function ha_get_happy_icons() {
8
+ return [
9
+ 'hm hm-3d-rotate' => '3d-rotate',
10
+ 'hm hm-degree' => 'degree',
11
+ 'hm hm-accordion-horizontal' => 'accordion-horizontal',
12
+ 'hm hm-accordion-vertical' => 'accordion-vertical',
13
+ 'hm hm-alarm-clock' => 'alarm-clock',
14
+ 'hm hm-alien-gun' => 'alien-gun',
15
+ 'hm hm-alien' => 'alien',
16
+ 'hm hm-anchor' => 'anchor',
17
+ 'hm hm-android' => 'android',
18
+ 'hm hm-angle-down' => 'angle-down',
19
+ 'hm hm-angle-left' => 'angle-left',
20
+ 'hm hm-angle-right' => 'angle-right',
21
+ 'hm hm-angle-up' => 'angle-up',
22
+ 'hm hm-apple' => 'apple',
23
+ 'hm hm-arrow-left' => 'arrow-left',
24
+ 'hm hm-arrow-right' => 'arrow-right',
25
+ 'hm hm-arrow-zoom-out' => 'arrow-zoom-out',
26
+ 'hm hm-arrow-corner' => 'arrow-corner',
27
+ 'hm hm-arrow-down' => 'arrow-down',
28
+ 'hm hm-arrow-left1' => 'arrow-left1',
29
+ 'hm hm-arrow-right1' => 'arrow-right1',
30
+ 'hm hm-arrow-up' => 'arrow-up',
31
+ 'hm hm-article' => 'article',
32
+ 'hm hm-avatar-man' => 'avatar-man',
33
+ 'hm hm-avatar-woman' => 'avatar-woman',
34
+ 'hm hm-badge1' => 'badge1',
35
+ 'hm hm-badge2' => 'badge2',
36
+ 'hm hm-badge3' => 'badge3',
37
+ 'hm hm-bamboo' => 'bamboo',
38
+ 'hm hm-basketball' => 'basketball',
39
+ 'hm hm-battery' => 'battery',
40
+ 'hm hm-beach-seat' => 'beach-seat',
41
+ 'hm hm-bell' => 'bell',
42
+ 'hm hm-bicycle' => 'bicycle',
43
+ 'hm hm-blog-content' => 'blog-content',
44
+ 'hm hm-bluetooth' => 'bluetooth',
45
+ 'hm hm-board' => 'board',
46
+ 'hm hm-body' => 'body',
47
+ 'hm hm-bomb' => 'bomb',
48
+ 'hm hm-bond-hand' => 'bond-hand',
49
+ 'hm hm-bond' => 'bond',
50
+ 'hm hm-bonsai' => 'bonsai',
51
+ 'hm hm-book' => 'book',
52
+ 'hm hm-bowl' => 'bowl',
53
+ 'hm hm-brick-wall' => 'brick-wall',
54
+ 'hm hm-brush-paint' => 'brush-paint',
55
+ 'hm hm-brush-roll' => 'brush-roll',
56
+ 'hm hm-brush' => 'brush',
57
+ 'hm hm-bug' => 'bug',
58
+ 'hm hm-bulb' => 'bulb',
59
+ 'hm hm-calculation' => 'calculation',
60
+ 'hm hm-calendar' => 'calendar',
61
+ 'hm hm-camera' => 'camera',
62
+ 'hm hm-candle' => 'candle',
63
+ 'hm hm-candles' => 'candles',
64
+ 'hm hm-car' => 'car',
65
+ 'hm hm-card' => 'card',
66
+ 'hm hm-caret-down' => 'caret-down',
67
+ 'hm hm-caret-fill-down' => 'caret-fill-down',
68
+ 'hm hm-caret-fill-left' => 'caret-fill-left',
69
+ 'hm hm-caret-fill-right' => 'caret-fill-right',
70
+ 'hm hm-caret-fill-up' => 'caret-fill-up',
71
+ 'hm hm-caret-left' => 'caret-left',
72
+ 'hm hm-caret-right' => 'caret-right',
73
+ 'hm hm-caret-up' => 'caret-up',
74
+ 'hm hm-carousal' => 'carousal',
75
+ 'hm hm-cart-empty' => 'cart-empty',
76
+ 'hm hm-cart-full' => 'cart-full',
77
+ 'hm hm-caution' => 'caution',
78
+ 'hm hm-chair' => 'chair',
79
+ 'hm hm-chair2' => 'chair2',
80
+ 'hm hm-chat-bubble-single' => 'chat-bubble-single',
81
+ 'hm hm-chat-bubble' => 'chat-bubble',
82
+ 'hm hm-cheese' => 'cheese',
83
+ 'hm hm-chef-cap' => 'chef-cap',
84
+ 'hm hm-clip-board' => 'clip-board',
85
+ 'hm hm-clip' => 'clip',
86
+ 'hm hm-cloud-down' => 'cloud-down',
87
+ 'hm hm-cloud-up' => 'cloud-up',
88
+ 'hm hm-cloud' => 'cloud',
89
+ 'hm hm-code-browser' => 'code-browser',
90
+ 'hm hm-code-clean' => 'code-clean',
91
+ 'hm hm-code' => 'code',
92
+ 'hm hm-cog' => 'cog',
93
+ 'hm hm-color-card' => 'color-card',
94
+ 'hm hm-color-plate' => 'color-plate',
95
+ 'hm hm-compass-math' => 'compass-math',
96
+ 'hm hm-compass' => 'compass',
97
+ 'hm hm-corner' => 'corner',
98
+ 'hm hm-crop' => 'crop',
99
+ 'hm hm-cross-circle' => 'cross-circle',
100
+ 'hm hm-cross-game' => 'cross-game',
101
+ 'hm hm-cross-gap' => 'cross-gap',
102
+ 'hm hm-cross' => 'cross',
103
+ 'hm hm-crown' => 'crown',
104
+ 'hm hm-cube' => 'cube',
105
+ 'hm hm-cup-coffee' => 'cup-coffee',
106
+ 'hm hm-cup' => 'cup',
107
+ 'hm hm-currency-paper' => 'currency-paper',
108
+ 'hm hm-dashboard' => 'dashboard',
109
+ 'hm hm-delivery-van' => 'delivery-van',
110
+ 'hm hm-diamond-ring' => 'diamond-ring',
111
+ 'hm hm-direction-both' => 'direction-both',
112
+ 'hm hm-direction-right' => 'direction-right',
113
+ 'hm hm-disable-person' => 'disable-person',
114
+ 'hm hm-disc' => 'disc',
115
+ 'hm hm-dislike' => 'dislike',
116
+ 'hm hm-dollar-on-hand' => 'dollar-on-hand',
117
+ 'hm hm-door-path' => 'door-path',
118
+ 'hm hm-Download-circle' => 'Download-circle',
119
+ 'hm hm-download' => 'download',
120
+ 'hm hm-drag-inside' => 'drag-inside',
121
+ 'hm hm-drag-outside' => 'drag-outside',
122
+ 'hm hm-drag' => 'drag',
123
+ 'hm hm-drawer' => 'drawer',
124
+ 'hm hm-dribbble' => 'dribbble',
125
+ 'hm hm-dropper' => 'dropper',
126
+ 'hm hm-egg-fry' => 'egg-fry',
127
+ 'hm hm-ellipsis-fill-h' => 'ellipsis-fill-h',
128
+ 'hm hm-ellipsis-fill-v' => 'ellipsis-fill-v',
129
+ 'hm hm-ellipsis-horizontal' => 'ellipsis-horizontal',
130
+ 'hm hm-ellipsis-vertical' => 'ellipsis-vertical',
131
+ 'hm hm-emo-normal' => 'emo-normal',
132
+ 'hm hm-emo-sad' => 'emo-sad',
133
+ 'hm hm-emo-smile' => 'emo-smile',
134
+ 'hm hm-envelop' => 'envelop',
135
+ 'hm hm-facebook' => 'facebook',
136
+ 'hm hm-fancy-futton' => 'fancy-futton',
137
+ 'hm hm-feeder' => 'feeder',
138
+ 'hm hm-file-cabinet' => 'file-cabinet',
139
+ 'hm hm-file-rotate' => 'file-rotate',
140
+ 'hm hm-file' => 'file',
141
+ 'hm hm-files' => 'files',
142
+ 'hm hm-film-roll' => 'film-roll',
143
+ 'hm hm-film' => 'film',
144
+ 'hm hm-finger-index' => 'finger-index',
145
+ 'hm hm-finger-print' => 'finger-print',
146
+ 'hm hm-fire-flame' => 'fire-flame',
147
+ 'hm hm-flag' => 'flag',
148
+ 'hm hm-flip-card1' => 'flip-card1',
149
+ 'hm hm-flip-card2' => 'flip-card2',
150
+ 'hm hm-folder-network' => 'folder-network',
151
+ 'hm hm-folder' => 'folder',
152
+ 'hm hm-football' => 'football',
153
+ 'hm hm-footer' => 'footer',
154
+ 'hm hm-form' => 'form',
155
+ 'hm hm-forward' => 'forward',
156
+ 'hm hm-fountain-pen' => 'fountain-pen',
157
+ 'hm hm-gender-female' => 'gender-female',
158
+ 'hm hm-gender-male' => 'gender-male',
159
+ 'hm hm-gender-sign' => 'gender-sign',
160
+ 'hm hm-gender' => 'gender',
161
+ 'hm hm-ghost' => 'ghost',
162
+ 'hm hm-gift-box' => 'gift-box',
163
+ 'hm hm-globe1' => 'globe1',
164
+ 'hm hm-globe2' => 'globe2',
165
+ 'hm hm-globe3' => 'globe3',
166
+ 'hm hm-globe4' => 'globe4',
167
+ 'hm hm-google' => 'google',
168
+ 'hm hm-graduate-cap' => 'graduate-cap',
169
+ 'hm hm-graph-bar' => 'graph-bar',
170
+ 'hm hm-graph-pie' => 'graph-pie',
171
+ 'hm hm-graph' => 'graph',
172
+ 'hm hm-grid-even' => 'grid-even',
173
+ 'hm hm-grid-masonry' => 'grid-masonry',
174
+ 'hm hm-grid-twist' => 'grid-twist',
175
+ 'hm hm-grid' => 'grid',
176
+ 'hm hm-group' => 'group',
177
+ 'hm hm-hand-mike' => 'hand-mike',
178
+ 'hm hm-hand-watch' => 'hand-watch',
179
+ 'hm hm-hand' => 'hand',
180
+ 'hm hm-header' => 'header',
181
+ 'hm hm-headphone' => 'headphone',
182
+ 'hm hm-headset' => 'headset',
183
+ 'hm hm-heart-beat' => 'heart-beat',
184
+ 'hm hm-hexa' => 'hexa',
185
+ 'hm hm-highlighter' => 'highlighter',
186
+ 'hm hm-home' => 'home',
187
+ 'hm hm-hot-spot' => 'hot-spot',
188
+ 'hm hm-hotdog' => 'hotdog',
189
+ 'hm hm-ice-cream' => 'ice-cream',
190
+ 'hm hm-icon-box' => 'icon-box',
191
+ 'hm hm-imac' => 'imac',
192
+ 'hm hm-image-compare' => 'image-compare',
193
+ 'hm hm-image-slider' => 'image-slider',
194
+ 'hm hm-image' => 'image',
195
+ 'hm hm-inbox' => 'inbox',
196
+ 'hm hm-infinity' => 'infinity',
197
+ 'hm hm-info' => 'info',
198
+ 'hm hm-injection' => 'injection',
199
+ 'hm hm-instagram' => 'instagram',
200
+ 'hm hm-jar-chemical' => 'jar-chemical',
201
+ 'hm hm-key' => 'key',
202
+ 'hm hm-language-change' => 'language-change',
203
+ 'hm hm-laptop' => 'laptop',
204
+ 'hm hm-layer' => 'layer',
205
+ 'hm hm-lens' => 'lens',
206
+ 'hm hm-like' => 'like',
207
+ 'hm hm-line-graph-pointed' => 'line-graph-pointed',
208
+ 'hm hm-link' => 'link',
209
+ 'hm hm-linkedin' => 'linkedin',
210
+ 'hm hm-linux' => 'linux',
211
+ 'hm hm-list-2' => 'list-2',
212
+ 'hm hm-list-group' => 'list-group',
213
+ 'hm hm-list' => 'list',
214
+ 'hm hm-location-pointer' => 'location-pointer',
215
+ 'hm hm-lock' => 'lock',
216
+ 'hm hm-logo-carousel' => 'logo-carousel',
217
+ 'hm hm-logo-grid' => 'logo-grid',
218
+ 'hm hm-lotus' => 'lotus',
219
+ 'hm hm-love' => 'love',
220
+ 'hm hm-madel' => 'madel',
221
+ 'hm hm-magic-wand' => 'magic-wand',
222
+ 'hm hm-magnet' => 'magnet',
223
+ 'hm hm-mail-open' => 'mail-open',
224
+ 'hm hm-man-range' => 'man-range',
225
+ 'hm hm-map-marker' => 'map-marker',
226
+ 'hm hm-map-pointer' => 'map-pointer',
227
+ 'hm hm-measurement' => 'measurement',
228
+ 'hm hm-memory' => 'memory',
229
+ 'hm hm-menu-price' => 'menu-price',
230
+ 'hm hm-micro-chip' => 'micro-chip',
231
+ 'hm hm-microphone1' => 'microphone1',
232
+ 'hm hm-microphone2' => 'microphone2',
233
+ 'hm hm-mobile' => 'mobile',
234
+ 'hm hm-money-bag' => 'money-bag',
235
+ 'hm hm-money' => 'money',
236
+ 'hm hm-monitor' => 'monitor',
237
+ 'hm hm-mouse' => 'mouse',
238
+ 'hm hm-muscle' => 'muscle',
239
+ 'hm hm-net' => 'net',
240
+ 'hm hm-network1' => 'network1',
241
+ 'hm hm-network2' => 'network2',
242
+ 'hm hm-newspaper' => 'newspaper',
243
+ 'hm hm-nuclear-circle' => 'nuclear-circle',
244
+ 'hm hm-office-file' => 'office-file',
245
+ 'hm hm-pacman' => 'pacman',
246
+ 'hm hm-paper-fold' => 'paper-fold',
247
+ 'hm hm-paper-plane-alt' => 'paper-plane-alt',
248
+ 'hm hm-paper-plane' => 'paper-plane',
249
+ 'hm hm-pause' => 'pause',
250
+ 'hm hm-pen-head' => 'pen-head',
251
+ 'hm hm-pen-pencil' => 'pen-pencil',
252
+ 'hm hm-pen-scale' => 'pen-scale',
253
+ 'hm hm-pen-paper' => 'pen-paper',
254
+ 'hm hm-pen' => 'pen',
255
+ 'hm hm-pencil' => 'pencil',
256
+ 'hm hm-pendrive' => 'pendrive',
257
+ 'hm hm-phone' => 'phone',
258
+ 'hm hm-pillar' => 'pillar',
259
+ 'hm hm-pin-man-range' => 'pin-man-range',
260
+ 'hm hm-pin-man' => 'pin-man',
261
+ 'hm hm-pin' => 'pin',
262
+ 'hm hm-plane' => 'plane',
263
+ 'hm hm-play-end' => 'play-end',
264
+ 'hm hm-play-next' => 'play-next',
265
+ 'hm hm-play-previous' => 'play-previous',
266
+ 'hm hm-play-start' => 'play-start',
267
+ 'hm hm-play-button' => 'play-button',
268
+ 'hm hm-play-store' => 'play-store',
269
+ 'hm hm-play' => 'play',
270
+ 'hm hm-playing-card' => 'playing-card',
271
+ 'hm hm-plus-box' => 'plus-box',
272
+ 'hm hm-plus-circle' => 'plus-circle',
273
+ 'hm hm-plus-gap' => 'plus-gap',
274
+ 'hm hm-plus-open' => 'plus-open',
275
+ 'hm hm-popup' => 'popup',
276
+ 'hm hm-power' => 'power',
277
+ 'hm hm-printer' => 'printer',
278
+ 'hm hm-progress-bar' => 'progress-bar',
279
+ 'hm hm-promo' => 'promo',
280
+ 'hm hm-pulse' => 'pulse',
281
+ 'hm hm-puzzle' => 'puzzle',
282
+ 'hm hm-question' => 'question',
283
+ 'hm hm-quote' => 'quote',
284
+ 'hm hm-radar' => 'radar',
285
+ 'hm hm-radiation' => 'radiation',
286
+ 'hm hm-reading-glass-alt' => 'reading-glass-alt',
287
+ 'hm hm-reading-glass' => 'reading-glass',
288
+ 'hm hm-recycle-bin' => 'recycle-bin',
289
+ 'hm hm-recycle' => 'recycle',
290
+ 'hm hm-refresh-time' => 'refresh-time',
291
+ 'hm hm-reply' => 'reply',
292
+ 'hm hm-responsive-device' => 'responsive-device',
293
+ 'hm hm-review' => 'review',
294
+ 'hm hm-rocket1' => 'rocket1',
295
+ 'hm hm-rocket2' => 'rocket2',
296
+ 'hm hm-rss' => 'rss',
297
+ 'hm hm-safety-cap' => 'safety-cap',
298
+ 'hm hm-safety-kit' => 'safety-kit',
299
+ 'hm hm-sand-watch' => 'sand-watch',
300
+ 'hm hm-scale' => 'scale',
301
+ 'hm hm-scanner' => 'scanner',
302
+ 'hm hm-scissor' => 'scissor',
303
+ 'hm hm-screen' => 'screen',
304
+ 'hm hm-search' => 'search',
305
+ 'hm hm-seo' => 'seo',
306
+ 'hm hm-server-network' => 'server-network',
307
+ 'hm hm-server' => 'server',
308
+ 'hm hm-share' => 'share',
309
+ 'hm hm-shield' => 'shield',
310
+ 'hm hm-ship' => 'ship',
311
+ 'hm hm-shirt' => 'shirt',
312
+ 'hm hm-shopping-bag1' => 'shopping-bag1',
313
+ 'hm hm-shopping-bag2' => 'shopping-bag2',
314
+ 'hm hm-shopping-bag3' => 'shopping-bag3',
315
+ 'hm hm-shopping-bag4' => 'shopping-bag4',
316
+ 'hm hm-shuffle' => 'shuffle',
317
+ 'hm hm-shutter' => 'shutter',
318
+ 'hm hm-sign-in' => 'sign-in',
319
+ 'hm hm-sign-out' => 'sign-out',
320
+ 'hm hm-sitemap1' => 'sitemap1',
321
+ 'hm hm-sitemap2' => 'sitemap2',
322
+ 'hm hm-skart' => 'skart',
323
+ 'hm hm-skull' => 'skull',
324
+ 'hm hm-skyscraper' => 'skyscraper',
325
+ 'hm hm-slider-doc' => 'slider-doc',
326
+ 'hm hm-slider-h-range' => 'slider-h-range',
327
+ 'hm hm-slider-image' => 'slider-image',
328
+ 'hm hm-slider-range-h' => 'slider-range-h',
329
+ 'hm hm-slider-v-open' => 'slider-v-open',
330
+ 'hm hm-slider-video' => 'slider-video',
331
+ 'hm hm-slider' => 'slider',
332
+ 'hm hm-smart-watch' => 'smart-watch',
333
+ 'hm hm-snow' => 'snow',
334
+ 'hm hm-spa-face' => 'spa-face',
335
+ 'hm hm-spa-stone-flower' => 'spa-stone-flower',
336
+ 'hm hm-spa-stone' => 'spa-stone',
337
+ 'hm hm-spark' => 'spark',
338
+ 'hm hm-speaker-off' => 'speaker-off',
339
+ 'hm hm-speaker-on' => 'speaker-on',
340
+ 'hm hm-spoon-fork' => 'spoon-fork',
341
+ 'hm hm-spoon' => 'spoon',
342
+ 'hm hm-star' => 'star',
343
+ 'hm hm-step-flow' => 'step-flow',
344
+ 'hm hm-steps' => 'steps',
345
+ 'hm hm-stop-watch' => 'stop-watch',
346
+ 'hm hm-stop' => 'stop',
347
+ 'hm hm-support-call' => 'support-call',
348
+ 'hm hm-tab' => 'tab',
349
+ 'hm hm-table-lamp' => 'table-lamp',
350
+ 'hm hm-tablet' => 'tablet',
351
+ 'hm hm-tag' => 'tag',
352
+ 'hm hm-target-arrow' => 'target-arrow',
353
+ 'hm hm-target' => 'target',
354
+ 'hm hm-target1' => 'target1',
355
+ 'hm hm-team-carousel' => 'team-carousel',
356
+ 'hm hm-team-member' => 'team-member',
357
+ 'hm hm-tennis-ball' => 'tennis-ball',
358
+ 'hm hm-terminal' => 'terminal',
359
+ 'hm hm-testimonial-carousel' => 'testimonial-carousel',
360
+ 'hm hm-testimonial' => 'testimonial',
361
+ 'hm hm-text-animation' => 'text-animation',
362
+ 'hm hm-theatre' => 'theatre',
363
+ 'hm hm-tick-circle' => 'tick-circle',
364
+ 'hm hm-tick' => 'tick',
365
+ 'hm hm-tickets' => 'tickets',
366
+ 'hm hm-tie-knot' => 'tie-knot',
367
+ 'hm hm-tie' => 'tie',
368
+ 'hm hm-timeline' => 'timeline',
369
+ 'hm hm-toggle' => 'toggle',
370
+ 'hm hm-tools' => 'tools',
371
+ 'hm hm-tree-square' => 'tree-square',
372
+ 'hm hm-twitter-bird' => 'twitter-bird',
373
+ 'hm hm-twitter' => 'twitter',
374
+ 'hm hm-ufo' => 'ufo',
375
+ 'hm hm-umbralla' => 'umbralla',
376
+ 'hm hm-unlock' => 'unlock',
377
+ 'hm hm-up-down' => 'up-down',
378
+ 'hm hm-upload' => 'upload',
379
+ 'hm hm-upward-top-right' => 'upward-top-right',
380
+ 'hm hm-user-female' => 'user-female',
381
+ 'hm hm-user-id' => 'user-id',
382
+ 'hm hm-user-male' => 'user-male',
383
+ 'hm hm-video-camera' => 'video-camera',
384
+ 'hm hm-water-drop' => 'water-drop',
385
+ 'hm hm-weather-cloud-day' => 'weather-cloud-day',
386
+ 'hm hm-weather-cloud' => 'weather-cloud',
387
+ 'hm hm-weather-day-rain' => 'weather-day-rain',
388
+ 'hm hm-weather-day-snow' => 'weather-day-snow',
389
+ 'hm hm-weather-day-windy-rain' => 'weather-day-windy-rain',
390
+ 'hm hm-weather-flood' => 'weather-flood',
391
+ 'hm hm-weather-night-cloud' => 'weather-night-cloud',
392
+ 'hm hm-weather-rain-alt' => 'weather-rain-alt',
393
+ 'hm hm-weather-rain' => 'weather-rain',
394
+ 'hm hm-weather-snow' => 'weather-snow',
395
+ 'hm hm-weather-sun-rain' => 'weather-sun-rain',
396
+ 'hm hm-weather-sun' => 'weather-sun',
397
+ 'hm hm-weather-sunny-day' => 'weather-sunny-day',
398
+ 'hm hm-weather-thunder' => 'weather-thunder',
399
+ 'hm hm-weather-windy-rain' => 'weather-windy-rain',
400
+ 'hm hm-webcam1' => 'webcam1',
401
+ 'hm hm-webcam2' => 'webcam2',
402
+ 'hm hm-weight-scale' => 'weight-scale',
403
+ 'hm hm-windows' => 'windows',
404
+ 'hm hm-wine-glass2' => 'wine-glass2',
405
+ 'hm hm-wine-glass' => 'wine-glass',
406
+ 'hm hm-worker-cap' => 'worker-cap',
407
+ 'hm hm-youtube' => 'youtube',
408
+ ];
409
+ }
plugin.php CHANGED
@@ -3,8 +3,8 @@
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: http://happymonster.me/plugins/happy-addons-elementor
5
  * Description: Best Addons for Elementor
6
- * Version: 0.0.1
7
- * Author: HappyMonster.me
8
  * Author URI: http://happymonster.me/
9
  * License: GPLv2
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
@@ -34,6 +34,10 @@ Copyright 2019 HappyMonster <http://happymonster.me>
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
- require plugin_dir_path( __FILE__ ) . 'base.php';
 
 
 
 
38
 
39
  \Happy_Addons\Elementor\Base::instance();
3
  * Plugin Name: Happy Elementor Addons
4
  * Plugin URI: http://happymonster.me/plugins/happy-addons-elementor
5
  * Description: Best Addons for Elementor
6
+ * Version: 1.0.1
7
+ * Author: HappyMonster
8
  * Author URI: http://happymonster.me/
9
  * License: GPLv2
10
  * License URI: https://www.gnu.org/licenses/gpl-2.0.html
34
 
35
  defined( 'ABSPATH' ) || die();
36
 
37
+ define( 'HAPPY_DIR_PATH', plugin_dir_path( __FILE__ ) );
38
+ define( 'HAPPY_DIR_URL', plugin_dir_url( __FILE__ ) );
39
+ define( 'HAPPY_ASSETS', trailingslashit( HAPPY_DIR_URL . 'assets' ) );
40
+
41
+ require HAPPY_DIR_PATH . 'base.php';
42
 
43
  \Happy_Addons\Elementor\Base::instance();
readme.txt CHANGED
@@ -1,14 +1,14 @@
1
- === Happy Addons For Elementor - Best Free Widgets ===
2
- Plugin Name: Happy Addons For Elementor - Best Free Widgets
3
- Version: 0.0.1
4
  Author: HappyMonster
5
  Author URI: http://happymonster.me/
6
- Contributors: thehappymonster, happyaddons, obiplabon
7
  Tags: elementor, card, blurb, contact form 7, icon box, widget, page builder
8
  Requires at least: 4.5
9
- Tested up to: 5.0.3
10
  Requires PHP: 5.4
11
- Stable tag: 0.0.1
12
  License: GPLv2
13
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
14
 
@@ -20,11 +20,18 @@ Most advanced, highly customizable, flexible and easy-to-use FREE widgets for El
20
 
21
  ### Included Free Widgets
22
 
23
- - Blurb
24
- - Card - [Get Standalone Version](https://wordpress.org/plugins/happy-elementor-card/)
25
- - Icon Box
26
- - Contact Form 7 - [Get Standalone Version](https://wordpress.org/plugins/happy-elementor-cf7/)
27
- - More free widgets are coming in every week
 
 
 
 
 
 
 
28
 
29
  == Installation ==
30
 
@@ -40,3 +47,33 @@ It's really easy and super simple to install **Happy Elementor Addons** plugin b
40
  2. Extract the `happy-elementor-addons.zip` file. You'll get plugin files inside `happy-elementor-addons` directory.
41
  3. Upload the plugin files to the `/wp-content/plugins/happy-elementor-addons` directory.
42
  4. Activate the plugin through the 'Plugins' screen in WordPress.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Happy Elementor Addons ===
2
+ Plugin Name: Happy Elementor Addons
3
+ Version: 1.0.1
4
  Author: HappyMonster
5
  Author URI: http://happymonster.me/
6
+ Contributors: thehappymonster, happyaddons, hasinhayder, obiplabon, sourav926
7
  Tags: elementor, card, blurb, contact form 7, icon box, widget, page builder
8
  Requires at least: 4.5
9
+ Tested up to: 5.2.1
10
  Requires PHP: 5.4
11
+ Stable tag: 1.0.1
12
  License: GPLv2
13
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
14
 
20
 
21
  ### Included Free Widgets
22
 
23
+ 1. Card
24
+ 2. Gradient Heading
25
+ 3. Info Box
26
+ 4. Icon Box
27
+ 5. Image Compare
28
+ 6. Member
29
+ 7. Review
30
+ 8. Skill Bars
31
+ 9. Contact Form 7
32
+ 10. Caldera Form
33
+ 11. We Forms
34
+ 12. WP Forms
35
 
36
  == Installation ==
37
 
47
  2. Extract the `happy-elementor-addons.zip` file. You'll get plugin files inside `happy-elementor-addons` directory.
48
  3. Upload the plugin files to the `/wp-content/plugins/happy-elementor-addons` directory.
49
  4. Activate the plugin through the 'Plugins' screen in WordPress.
50
+
51
+ == Changelog ==
52
+
53
+ = 1.0.1 =
54
+
55
+ * Fix: Some minor issues
56
+
57
+ = 1.0.0 =
58
+
59
+ * New: Card Widget
60
+ * New: Gradient Heading Widget
61
+ * New: Info Box Widget
62
+ * New: Icon Box Widget
63
+ * New: Image Compare Widget
64
+ * New: Member Widget
65
+ * New: Review Widget
66
+ * New: Skill Bars Widget
67
+ * New: Contact Form 7 Widget
68
+ * New: Caldera Form Widget
69
+ * New: We Forms Widget
70
+ * New: WP Forms Widget
71
+ * New: Surprising extension
72
+ * Update: Plugin structure
73
+ * Update: Widgets CSS
74
+ * Fix: Card layout issue
75
+ * Fix: Contact Form 7 form deletion issue
76
+
77
+ = 0.0.1 =
78
+
79
+ * Initial release
widgets/calderaform/widget.php ADDED
@@ -0,0 +1,545 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Caldera Form widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Group_Control_Border;
11
+ use Elementor\Group_Control_Box_Shadow;
12
+ use Elementor\Group_Control_Typography;
13
+
14
+ defined( 'ABSPATH' ) || die();
15
+
16
+ class CalderaForm extends Base {
17
+
18
+ /**
19
+ * Get widget title.
20
+ *
21
+ * @since 1.0.0
22
+ * @access public
23
+ *
24
+ * @return string Widget title.
25
+ */
26
+ public function get_title() {
27
+ return __( 'Caldera Form', 'happy_addons' );
28
+ }
29
+
30
+ /**
31
+ * Get widget icon.
32
+ *
33
+ * @since 1.0.0
34
+ * @access public
35
+ *
36
+ * @return string Widget icon.
37
+ */
38
+ public function get_icon() {
39
+ return 'hm hm-form';
40
+ }
41
+
42
+ public function get_keywords() {
43
+ return [ 'caldera', 'wpf','wpform' , 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
44
+ }
45
+
46
+ protected function register_content_controls() {
47
+ $this->start_controls_section(
48
+ '_section_calderaf',
49
+ [
50
+ 'label' => ha_is_calderaf_activated() ? __( 'Caldera Form', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
+ 'tab' => Controls_Manager::TAB_CONTENT,
52
+ ]
53
+ );
54
+
55
+ if ( ! ha_is_calderaf_activated() ) {
56
+ $this->add_control(
57
+ 'calderaf_missing_notice',
58
+ [
59
+ 'type' => Controls_Manager::RAW_HTML,
60
+ 'raw' => sprintf(
61
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
62
+ '<a href="https://wordpress.org/plugins/caldera-forms/" target="_blank" rel="noopener">Caldera Form</a>'
63
+ )
64
+ ]
65
+ );
66
+ $this->end_controls_section();
67
+ return;
68
+ }
69
+
70
+ $this->add_control(
71
+ 'form_id',
72
+ [
73
+ 'label' => __( 'Select Your Form', 'happy_addons' ),
74
+ 'type' => Controls_Manager::SELECT,
75
+ 'label_block' => true,
76
+ 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_caldera_form(),
77
+ ]
78
+ );
79
+
80
+ $this->end_controls_section();
81
+ }
82
+
83
+ protected function register_style_controls() {
84
+ $this->start_controls_section(
85
+ '_section_fields_style',
86
+ [
87
+ 'label' => __( 'Form Fields', 'happy_addons' ),
88
+ 'tab' => Controls_Manager::TAB_STYLE,
89
+ ]
90
+ );
91
+
92
+ $this->add_responsive_control(
93
+ 'field_margin',
94
+ [
95
+ 'label' => __( 'Field Spacing', 'happy_addons' ),
96
+ 'type' => Controls_Manager::DIMENSIONS,
97
+ 'size_units' => [ 'px', '%' ],
98
+ 'selectors' => [
99
+ '{{WRAPPER}} .form-group:not(.btn)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
100
+ ],
101
+ ]
102
+ );
103
+
104
+ $this->add_responsive_control(
105
+ 'field_padding',
106
+ [
107
+ 'label' => __( 'Padding', 'happy_addons' ),
108
+ 'type' => Controls_Manager::DIMENSIONS,
109
+ 'size_units' => [ 'px', 'em', '%' ],
110
+ 'selectors' => [
111
+ '{{WRAPPER}} .form-group input:not(.btn)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
112
+ ],
113
+ ]
114
+ );
115
+
116
+ $this->add_responsive_control(
117
+ 'field_border_radius',
118
+ [
119
+ 'label' => __( 'Border Radius', 'happy_addons' ),
120
+ 'type' => Controls_Manager::DIMENSIONS,
121
+ 'size_units' => [ 'px', '%' ],
122
+ 'selectors' => [
123
+ '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
124
+ ],
125
+ ]
126
+ );
127
+
128
+ $this->add_group_control(
129
+ Group_Control_Typography::get_type(),
130
+ [
131
+ 'name' => 'field_typography',
132
+ 'label' => __( 'Typography', 'happy_addons' ),
133
+ 'selector' => '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea',
134
+ ]
135
+ );
136
+
137
+ $this->add_control(
138
+ 'field_textcolor',
139
+ [
140
+ 'label' => __( 'Field Text Color', 'happy_addons' ),
141
+ 'type' => Controls_Manager::COLOR,
142
+ 'selectors' => [
143
+ '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'color: {{VALUE}}',
144
+ ],
145
+ ]
146
+ );
147
+
148
+ $this->add_control(
149
+ 'field_placeholder_color',
150
+ [
151
+ 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
152
+ 'type' => Controls_Manager::COLOR,
153
+ 'selectors' => [
154
+ '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
155
+ '{{WRAPPER}} ::-moz-placeholder' => 'color: {{VALUE}};',
156
+ '{{WRAPPER}} ::-ms-input-placeholder' => 'color: {{VALUE}};',
157
+ ],
158
+ ]
159
+ );
160
+
161
+ $this->start_controls_tabs( 'tabs_field_state' );
162
+
163
+ $this->start_controls_tab(
164
+ 'tab_field_normal',
165
+ [
166
+ 'label' => __( 'Normal', 'happy_addons' ),
167
+ ]
168
+ );
169
+
170
+ $this->add_group_control(
171
+ Group_Control_Border::get_type(),
172
+ [
173
+ 'name' => 'field_border',
174
+ 'selector' => '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea',
175
+ ]
176
+ );
177
+
178
+ $this->add_group_control(
179
+ Group_Control_Box_Shadow::get_type(),
180
+ [
181
+ 'name' => 'field_box_shadow',
182
+ 'selector' => '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea',
183
+ ]
184
+ );
185
+
186
+ $this->add_control(
187
+ 'field_bg_color',
188
+ [
189
+ 'label' => __( 'Background Color', 'happy_addons' ),
190
+ 'type' => Controls_Manager::COLOR,
191
+ 'selectors' => [
192
+ '{{WRAPPER}} .form-group input:not(.btn), {{WRAPPER}} .form-group textarea' => 'background-color: {{VALUE}}',
193
+ ],
194
+ ]
195
+ );
196
+
197
+ $this->end_controls_tab();
198
+
199
+ $this->start_controls_tab(
200
+ 'tab_field_focus',
201
+ [
202
+ 'label' => __( 'Focus', 'happy_addons' ),
203
+ ]
204
+ );
205
+
206
+ $this->add_group_control(
207
+ Group_Control_Border::get_type(),
208
+ [
209
+ 'name' => 'field_focus_border',
210
+ 'selector' => '{{WRAPPER}} .form-group input:focus:not(.btn), {{WRAPPER}} .form-group textarea:focus',
211
+ ]
212
+ );
213
+
214
+ $this->add_group_control(
215
+ Group_Control_Box_Shadow::get_type(),
216
+ [
217
+ 'name' => 'field_focus_box_shadow',
218
+ 'exclude' => [
219
+ 'box_shadow_position',
220
+ ],
221
+ 'selector' => '{{WRAPPER}} .form-group input:focus:not(.btn), {{WRAPPER}} .form-group textarea:focus',
222
+ ]
223
+ );
224
+
225
+ $this->add_control(
226
+ 'field_focus_bg_color',
227
+ [
228
+ 'label' => __( 'Background Color', 'happy_addons' ),
229
+ 'type' => Controls_Manager::COLOR,
230
+ 'selectors' => [
231
+ '{{WRAPPER}} .form-group input:focus:not(.btn), {{WRAPPER}} .form-group textarea:focus' => 'background-color: {{VALUE}}',
232
+ ],
233
+ ]
234
+ );
235
+
236
+ $this->end_controls_tab();
237
+ $this->end_controls_tabs();
238
+
239
+ $this->end_controls_section();
240
+
241
+
242
+ $this->start_controls_section(
243
+ 'caldera-form-label',
244
+ [
245
+ 'label' => __( 'Form Fields Label', 'happy_addons' ),
246
+ 'tab' => Controls_Manager::TAB_STYLE,
247
+ ]
248
+ );
249
+
250
+ $this->add_responsive_control(
251
+ 'label_margin',
252
+ [
253
+ 'label' => __( 'Margin', 'happy_addons' ),
254
+ 'type' => Controls_Manager::DIMENSIONS,
255
+ 'size_units' => [ 'px', '%' ],
256
+ 'selectors' => [
257
+ '{{WRAPPER}} .caldera-grid label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
258
+ ],
259
+ ]
260
+ );
261
+
262
+ $this->add_responsive_control(
263
+ 'label_padding',
264
+ [
265
+ 'label' => __( 'Padding', 'happy_addons' ),
266
+ 'type' => Controls_Manager::DIMENSIONS,
267
+ 'size_units' => [ 'px', 'em', '%' ],
268
+ 'selectors' => [
269
+ '{{WRAPPER}} .caldera-grid label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
270
+ ],
271
+ ]
272
+ );
273
+
274
+ $this->add_control(
275
+ 'hr3',
276
+ [
277
+ 'type' => Controls_Manager::DIVIDER,
278
+ 'style' => 'thick',
279
+ ]
280
+ );
281
+
282
+ $this->add_group_control(
283
+ Group_Control_Typography::get_type(),
284
+ [
285
+ 'name' => 'label_typography',
286
+ 'label' => __( 'Label Typography', 'happy_addons' ),
287
+ 'selector' => '{{WRAPPER}} .caldera-grid label',
288
+ ]
289
+ );
290
+
291
+ $this->add_group_control(
292
+ Group_Control_Typography::get_type(),
293
+ [
294
+ 'name' => 'desc_typography',
295
+ 'label' => __( 'Description Typography', 'happy_addons' ),
296
+ 'selector' => '{{WRAPPER}} .caldera-grid .help-block',
297
+ ]
298
+ );
299
+
300
+ $this->add_control(
301
+ 'label_color',
302
+ [
303
+ 'label' => __( 'Label Text Color', 'happy_addons' ),
304
+ 'type' => Controls_Manager::COLOR,
305
+ 'selectors' => [
306
+ '{{WRAPPER}} .caldera-grid label' => 'color: {{VALUE}}',
307
+ ],
308
+ ]
309
+ );
310
+
311
+ $this->add_control(
312
+ 'requered_label',
313
+ [
314
+ 'label' => __( 'Required Label Color', 'happy_addons' ),
315
+ 'type' => Controls_Manager::COLOR,
316
+ 'selectors' => [
317
+ '{{WRAPPER}} .field_required' => 'color: {{VALUE}} !important',
318
+ ],
319
+ ]
320
+ );
321
+
322
+ $this->add_control(
323
+ 'desc_color',
324
+ [
325
+ 'label' => __( 'Description Text Color', 'happy_addons' ),
326
+ 'type' => Controls_Manager::COLOR,
327
+ 'selectors' => [
328
+ '{{WRAPPER}} .caldera-grid .help-block' => 'color: {{VALUE}}',
329
+ ],
330
+ ]
331
+ );
332
+
333
+ $this->end_controls_section();
334
+
335
+ $this->start_controls_section(
336
+ 'submit',
337
+ [
338
+ 'label' => __( 'Submit Button', 'happy_addons' ),
339
+ 'tab' => Controls_Manager::TAB_STYLE,
340
+ ]
341
+ );
342
+
343
+ $this->add_control(
344
+ 'submit_btn_width',
345
+ [
346
+ 'label' => __( 'Button Full Width?', 'happy_addons' ),
347
+ 'type' => Controls_Manager::SWITCHER,
348
+ 'label_on' => __( 'Yes', 'happy_addons' ),
349
+ 'label_off' => __( 'No', 'happy_addons' ),
350
+ 'return_value' => 'yes',
351
+ 'default' => 'yes',
352
+ ]
353
+ );
354
+
355
+ $this->add_responsive_control(
356
+ 'button_width',
357
+ [
358
+ 'label' => __( 'Button Width', 'happy_addons' ),
359
+ 'type' => Controls_Manager::SLIDER,
360
+ 'size_units' => [ 'px', '%' ],
361
+ 'condition' => [
362
+ 'submit_btn_width' => 'yes'
363
+ ],
364
+ 'default' => [
365
+ 'unit' => '%',
366
+ 'size' => 100
367
+ ],
368
+ 'range' => [
369
+ '%' => [
370
+ 'min' => 1,
371
+ 'max' => 100,
372
+ ],
373
+ 'px' => [
374
+ 'min' => 1,
375
+ 'max' => 800,
376
+ ],
377
+ ],
378
+ 'selectors' => [
379
+ '{{WRAPPER}} .form-group .btn' => 'display: block; width: {{SIZE}}{{UNIT}};',
380
+ ],
381
+ ]
382
+ );
383
+
384
+ $this->add_responsive_control(
385
+ 'submit_margin',
386
+ [
387
+ 'label' => __( 'Margin', 'happy_addons' ),
388
+ 'type' => Controls_Manager::DIMENSIONS,
389
+ 'size_units' => [ 'px', '%' ],
390
+ 'selectors' => [
391
+ '{{WRAPPER}} .form-group .btn' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
392
+ ],
393
+ ]
394
+ );
395
+
396
+ $this->add_responsive_control(
397
+ 'submit_padding',
398
+ [
399
+ 'label' => __( 'Padding', 'happy_addons' ),
400
+ 'type' => Controls_Manager::DIMENSIONS,
401
+ 'size_units' => [ 'px', 'em', '%' ],
402
+ 'selectors' => [
403
+ '{{WRAPPER}} .form-group .btn' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
404
+ ],
405
+ ]
406
+ );
407
+
408
+ $this->add_group_control(
409
+ Group_Control_Typography::get_type(),
410
+ [
411
+ 'name' => 'submit_typography',
412
+ 'selector' => '{{WRAPPER}} .form-group .btn',
413
+ ]
414
+ );
415
+
416
+ $this->add_group_control(
417
+ Group_Control_Border::get_type(),
418
+ [
419
+ 'name' => 'submit_border',
420
+ 'selector' => '{{WRAPPER}} .form-group .btn',
421
+ ]
422
+ );
423
+
424
+ $this->add_control(
425
+ 'submit_border_radius',
426
+ [
427
+ 'label' => __( 'Border Radius', 'happy_addons' ),
428
+ 'type' => Controls_Manager::DIMENSIONS,
429
+ 'size_units' => [ 'px', '%' ],
430
+ 'selectors' => [
431
+ '{{WRAPPER}} .form-group .btn' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
432
+ ],
433
+ ]
434
+ );
435
+
436
+ $this->add_group_control(
437
+ Group_Control_Box_Shadow::get_type(),
438
+ [
439
+ 'name' => 'submit_box_shadow',
440
+ 'selector' => '{{WRAPPER}} .form-group .btn',
441
+ ]
442
+ );
443
+
444
+ $this->add_control(
445
+ 'hr4',
446
+ [
447
+ 'type' => Controls_Manager::DIVIDER,
448
+ 'style' => 'thick',
449
+ ]
450
+ );
451
+
452
+ $this->start_controls_tabs( 'tabs_button_style' );
453
+
454
+ $this->start_controls_tab(
455
+ 'tab_button_normal',
456
+ [
457
+ 'label' => __( 'Normal', 'happy_addons' ),
458
+ ]
459
+ );
460
+
461
+ $this->add_control(
462
+ 'submit_color',
463
+ [
464
+ 'label' => __( 'Text Color', 'happy_addons' ),
465
+ 'type' => Controls_Manager::COLOR,
466
+ 'default' => '',
467
+ 'selectors' => [
468
+ '{{WRAPPER}} .form-group .btn' => 'color: {{VALUE}};',
469
+ ],
470
+ ]
471
+ );
472
+
473
+ $this->add_control(
474
+ 'submit_bg_color',
475
+ [
476
+ 'label' => __( 'Background Color', 'happy_addons' ),
477
+ 'type' => Controls_Manager::COLOR,
478
+ 'selectors' => [
479
+ '{{WRAPPER}} .form-group .btn' => 'background-color: {{VALUE}};',
480
+ ],
481
+ ]
482
+ );
483
+
484
+ $this->end_controls_tab();
485
+
486
+ $this->start_controls_tab(
487
+ 'tab_button_hover',
488
+ [
489
+ 'label' => __( 'Hover', 'happy_addons' ),
490
+ ]
491
+ );
492
+
493
+ $this->add_control(
494
+ 'submit_hover_color',
495
+ [
496
+ 'label' => __( 'Text Color', 'happy_addons' ),
497
+ 'type' => Controls_Manager::COLOR,
498
+ 'selectors' => [
499
+ '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'color: {{VALUE}};',
500
+ ],
501
+ ]
502
+ );
503
+
504
+ $this->add_control(
505
+ 'submit_hover_bg_color',
506
+ [
507
+ 'label' => __( 'Background Color', 'happy_addons' ),
508
+ 'type' => Controls_Manager::COLOR,
509
+ 'selectors' => [
510
+ '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'background-color: {{VALUE}};',
511
+ ],
512
+ ]
513
+ );
514
+
515
+ $this->add_control(
516
+ 'submit_hover_border_color',
517
+ [
518
+ 'label' => __( 'Border Color', 'happy_addons' ),
519
+ 'type' => Controls_Manager::COLOR,
520
+ 'selectors' => [
521
+ '{{WRAPPER}} .form-group .btn:hover, {{WRAPPER}} .form-group .btn:focus' => 'border-color: {{VALUE}};',
522
+ ],
523
+ ]
524
+ );
525
+
526
+ $this->end_controls_tab();
527
+ $this->end_controls_tabs();
528
+
529
+ $this->end_controls_section();
530
+ }
531
+
532
+ protected function render() {
533
+ if ( ! ha_is_calderaf_activated() ) {
534
+ return;
535
+ }
536
+
537
+ $settings = $this->get_settings_for_display();
538
+
539
+ if ( ! empty( $settings['form_id'] ) ) {
540
+ echo ha_do_shortcode( 'caldera_form', [
541
+ 'id' => $settings['form_id'],
542
+ ] );
543
+ }
544
+ }
545
+ }
addons/class-card.php → widgets/card/widget.php RENAMED
@@ -1,22 +1,23 @@
1
  <?php
2
  /**
3
- * Card addon class
4
  *
5
  * @package Happy_Addons
6
  */
7
- namespace Happy_Addons\Elementor\Addons;
8
 
 
 
9
  use Elementor\Control_Media;
 
10
  use Elementor\Group_Control_Border;
11
  use Elementor\Group_Control_Box_Shadow;
12
  use Elementor\Group_Control_Image_Size;
13
  use Elementor\Group_Control_Typography;
14
- use Elementor\Controls_Manager;
15
- use Elementor\Utils;
16
 
17
  defined( 'ABSPATH' ) || die();
18
 
19
- class Card extends Addon_Base {
20
 
21
  /**
22
  * Get widget title.
@@ -27,7 +28,7 @@ class Card extends Addon_Base {
27
  * @return string Widget title.
28
  */
29
  public function get_title() {
30
- return __( 'Happy Card', 'happy_addons' );
31
  }
32
 
33
  /**
@@ -39,18 +40,18 @@ class Card extends Addon_Base {
39
  * @return string Widget icon.
40
  */
41
  public function get_icon() {
42
- return 'fa fa-smile-o';
43
  }
44
 
45
  public function get_keywords() {
46
- return [ 'card', 'blurb', 'content', 'block', 'box' ];
47
  }
48
 
49
- protected function _register_controls() {
50
  $this->start_controls_section(
51
- 'image_section',
52
  [
53
- 'label' => __( 'Image & Label', 'happy_addons' ),
54
  'tab' => Controls_Manager::TAB_CONTENT,
55
  ]
56
  );
@@ -69,73 +70,54 @@ class Card extends Addon_Base {
69
  $this->add_group_control(
70
  Group_Control_Image_Size::get_type(),
71
  [
72
- 'name' => 'image',
73
  'default' => 'large',
74
  'separator' => 'none',
75
  ]
76
  );
77
 
78
- $this->add_responsive_control(
79
  'image_position',
80
  [
81
  'label' => __( 'Image Position', 'happy_addons' ),
82
  'type' => Controls_Manager::CHOOSE,
 
83
  'options' => [
84
  'left' => [
85
  'title' => __( 'Left', 'happy_addons' ),
86
- 'icon' => 'fa fa-align-left',
87
  ],
88
  'top' => [
89
  'title' => __( 'Top', 'happy_addons' ),
90
- 'icon' => 'fa fa-align-center',
91
  ],
92
  'right' => [
93
  'title' => __( 'Right', 'happy_addons' ),
94
- 'icon' => 'fa fa-align-right',
95
  ],
96
  ],
97
- 'desktop_default' => 'top',
98
  'toggle' => false,
99
- 'devices' => [ 'desktop', 'tablet', 'mobile' ],
100
- 'prefix_class' => 'ha-card--%s'
101
  ]
102
  );
103
 
104
  $this->add_control(
105
- 'label',
106
  [
107
- 'label' => __( 'Label', 'happy_addons' ),
108
  'type' => Controls_Manager::TEXT,
109
- 'default' => __( 'Default label', 'happy_addons' ),
110
- 'placeholder' => __( 'Type your label text here', 'happy_addons' ),
111
- 'separator' => 'before'
112
- ]
113
- );
114
-
115
- $this->add_control(
116
- 'label_position',
117
- [
118
- 'label' => __( 'Label Position', 'happy_addons' ),
119
- 'type' => Controls_Manager::SELECT,
120
- 'options' => [
121
- 'top-left' => __( 'Top Left', 'happy_addons' ),
122
- 'top-center' => __( 'Top Center', 'happy_addons' ),
123
- 'top-right' => __( 'Top Right', 'happy_addons' ),
124
- 'middle-left' => __( 'Middle Left', 'happy_addons' ),
125
- 'middle-center' => __( 'Middle Center', 'happy_addons' ),
126
- 'middle-right' => __( 'Middle Right', 'happy_addons' ),
127
- 'bottom-left' => __( 'Bottom Left', 'happy_addons' ),
128
- 'bottom-center' => __( 'Bottom Center', 'happy_addons' ),
129
- 'bottom-right' => __( 'Bottom Right', 'happy_addons' ),
130
- ],
131
- 'default' => 'top-right',
132
  ]
133
  );
134
 
135
  $this->end_controls_section();
136
 
137
  $this->start_controls_section(
138
- 'title_section',
139
  [
140
  'label' => __( 'Title & Description', 'happy_addons' ),
141
  'tab' => Controls_Manager::TAB_CONTENT,
@@ -148,8 +130,8 @@ class Card extends Addon_Base {
148
  'label' => __( 'Title', 'happy_addons' ),
149
  'label_block' => true,
150
  'type' => Controls_Manager::TEXT,
151
- 'default' => __( 'Default title', 'happy_addons' ),
152
- 'placeholder' => __( 'Type your card title here', 'happy_addons' ),
153
  ]
154
  );
155
 
@@ -158,8 +140,8 @@ class Card extends Addon_Base {
158
  [
159
  'label' => __( 'Description', 'happy_addons' ),
160
  'type' => Controls_Manager::TEXTAREA,
161
- 'default' => __( 'Default description', 'happy_addons' ),
162
- 'placeholder' => __( 'Type your card description here', 'happy_addons' ),
163
  'rows' => 5
164
  ]
165
  );
@@ -168,16 +150,35 @@ class Card extends Addon_Base {
168
  'title_tag',
169
  [
170
  'label' => __( 'Title HTML Tag', 'happy_addons' ),
171
- 'type' => Controls_Manager::SELECT,
172
  'options' => [
173
- 'h1' => __( 'H1', 'happy_addons' ),
174
- 'h2' => __( 'H2', 'happy_addons' ),
175
- 'h3' => __( 'H3', 'happy_addons' ),
176
- 'h4' => __( 'H4', 'happy_addons' ),
177
- 'h5' => __( 'H5', 'happy_addons' ),
178
- 'h6' => __( 'H6', 'happy_addons' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  ],
180
  'default' => 'h2',
 
181
  ]
182
  );
183
 
@@ -199,18 +200,22 @@ class Card extends Addon_Base {
199
  'title' => __( 'Right', 'happy_addons' ),
200
  'icon' => 'fa fa-align-right',
201
  ],
 
 
 
 
202
  ],
203
- 'desktop_default' => 'left',
204
- 'toggle' => false,
205
- 'devices' => [ 'desktop', 'tablet', 'mobile' ],
206
- 'prefix_class' => 'ha-text--%s'
207
  ]
208
  );
209
 
210
  $this->end_controls_section();
211
 
212
  $this->start_controls_section(
213
- 'button_section',
214
  [
215
  'label' => __( 'Button', 'happy_addons' ),
216
  'tab' => Controls_Manager::TAB_CONTENT,
@@ -218,55 +223,60 @@ class Card extends Addon_Base {
218
  );
219
 
220
  $this->add_control(
221
- 'btn_text',
222
  [
223
  'label' => __( 'Text', 'happy_addons' ),
224
  'type' => Controls_Manager::TEXT,
225
- 'default' => __( 'Default text', 'happy_addons' ),
226
- 'placeholder' => __( 'Type your button text here', 'happy_addons' ),
 
227
  ]
228
  );
229
 
230
  $this->add_control(
231
- 'btn_link',
232
  [
233
  'label' => __( 'Link', 'happy_addons' ),
234
  'type' => Controls_Manager::URL,
235
  'placeholder' => __( 'https://example.com/', 'happy_addons' ),
236
- 'default' => [
237
- 'url' => '#',
238
- ],
239
  ]
240
  );
241
 
242
  $this->add_control(
243
- 'btn_icon',
244
  [
245
  'label' => __( 'Icon', 'happy_addons' ),
246
  'type' => Controls_Manager::ICON,
247
- 'label_block' => true,
248
- 'default' => '',
249
  ]
250
  );
251
 
252
  $this->add_control(
253
- 'btn_icon_position',
254
  [
255
  'label' => __( 'Icon Position', 'happy_addons' ),
256
- 'type' => Controls_Manager::SELECT,
257
- 'default' => 'before',
258
  'options' => [
259
- 'before' => __( 'Before', 'happy_addons' ),
260
- 'after' => __( 'After', 'happy_addons' ),
 
 
 
 
 
 
261
  ],
 
 
262
  'condition' => [
263
- 'btn_icon!' => '',
264
  ],
265
  ]
266
  );
267
 
268
  $this->add_control(
269
- 'icon_indent',
270
  [
271
  'label' => __( 'Icon Spacing', 'happy_addons' ),
272
  'type' => Controls_Manager::SLIDER,
@@ -276,7 +286,7 @@ class Card extends Addon_Base {
276
  ],
277
  ],
278
  'condition' => [
279
- 'btn_icon!' => '',
280
  ],
281
  'selectors' => [
282
  '{{WRAPPER}} .ha-btn--icon-before .ha-btn-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
@@ -286,9 +296,11 @@ class Card extends Addon_Base {
286
  );
287
 
288
  $this->end_controls_section();
 
289
 
 
290
  $this->start_controls_section(
291
- 'image_style',
292
  [
293
  'label' => __( 'Image', 'happy_addons' ),
294
  'tab' => Controls_Manager::TAB_STYLE,
@@ -296,52 +308,114 @@ class Card extends Addon_Base {
296
  );
297
 
298
  $this->add_responsive_control(
299
- 'width',
300
  [
301
  'label' => __( 'Width', 'happy_addons' ),
302
  'type' => Controls_Manager::SLIDER,
303
- 'default' => [
304
- 'unit' => '%',
305
- ],
306
- 'tablet_default' => [
307
- 'unit' => '%',
308
- ],
309
- 'mobile_default' => [
310
- 'unit' => '%',
311
- ],
312
- 'size_units' => [ '%', 'px' ],
313
  'range' => [
314
  '%' => [
315
  'min' => 1,
316
  'max' => 100,
317
  ],
318
  'px' => [
319
- 'min' => 1,
320
  'max' => 1000,
321
  ],
322
  ],
323
  'selectors' => [
324
- '{{WRAPPER}} .ha-card-figure' => 'max-width: {{SIZE}}{{UNIT}};',
 
325
  ],
326
  ]
327
  );
328
 
329
  $this->add_responsive_control(
330
- 'image_offset',
331
  [
332
- 'label' => __( 'Offset', 'happy_addons' ),
333
- 'type' => Controls_Manager::DIMENSIONS,
334
- 'size_units' => [ 'px', '%' ],
335
- 'allowed_dimensions' => ['top', 'left'],
 
 
 
 
 
336
  'selectors' => [
337
- '{{WRAPPER}} .ha-card-figure' => '-ms-transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}}); -webkit-transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}}); transform: translate({{LEFT}}{{UNIT}}, {{TOP}}{{UNIT}});',
338
- '{{WRAPPER}} .ha-card-body' => 'margin-top: {{TOP}}{{UNIT}};',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
  ],
340
  'default' => [
341
- 'isLinked' => false,
342
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  ]
344
  );
 
345
 
346
  $this->add_responsive_control(
347
  'image_padding',
@@ -389,55 +463,123 @@ class Card extends Addon_Base {
389
  $this->end_controls_section();
390
 
391
  $this->start_controls_section(
392
- 'label_style',
393
  [
394
- 'label' => __( 'Label', 'happy_addons' ),
395
  'tab' => Controls_Manager::TAB_STYLE,
396
  ]
397
  );
398
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  $this->add_responsive_control(
400
- 'label_margin',
401
  [
402
- 'label' => __( 'Margin', 'happy_addons' ),
403
- 'type' => Controls_Manager::DIMENSIONS,
404
- 'size_units' => [ 'px', '%' ],
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  'selectors' => [
406
- '{{WRAPPER}} .ha-label' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
407
  ],
408
  ]
409
  );
 
410
 
411
  $this->add_responsive_control(
412
- 'label_padding',
413
  [
414
  'label' => __( 'Padding', 'happy_addons' ),
415
  'type' => Controls_Manager::DIMENSIONS,
416
  'size_units' => [ 'px', 'em', '%' ],
417
  'selectors' => [
418
- '{{WRAPPER}} .ha-label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
419
  ],
420
  ]
421
  );
422
 
423
  $this->add_control(
424
- 'label_color',
425
  [
426
  'label' => __( 'Text Color', 'happy_addons' ),
427
  'type' => Controls_Manager::COLOR,
428
  'selectors' => [
429
- '{{WRAPPER}} .ha-label' => 'color: {{VALUE}}',
430
  ],
431
  ]
432
  );
433
 
434
  $this->add_control(
435
- 'label_bg_color',
436
  [
437
  'label' => __( 'Background Color', 'happy_addons' ),
438
  'type' => Controls_Manager::COLOR,
439
  'selectors' => [
440
- '{{WRAPPER}} .ha-label' => 'background-color: {{VALUE}}',
441
  ],
442
  ]
443
  );
@@ -445,19 +587,19 @@ class Card extends Addon_Base {
445
  $this->add_group_control(
446
  Group_Control_Border::get_type(),
447
  [
448
- 'name' => 'label_border',
449
- 'selector' => '{{WRAPPER}} .ha-label',
450
  ]
451
  );
452
 
453
  $this->add_responsive_control(
454
- 'label_border_radius',
455
  [
456
  'label' => __( 'Border Radius', 'happy_addons' ),
457
  'type' => Controls_Manager::DIMENSIONS,
458
  'size_units' => [ 'px', '%' ],
459
  'selectors' => [
460
- '{{WRAPPER}} .ha-label' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
461
  ],
462
  ]
463
  );
@@ -465,33 +607,36 @@ class Card extends Addon_Base {
465
  $this->add_group_control(
466
  Group_Control_Box_Shadow::get_type(),
467
  [
468
- 'name' => 'label_box_shadow',
469
  'exclude' => [
470
  'box_shadow_position',
471
  ],
472
- 'selector' => '{{WRAPPER}} .ha-label',
473
  ]
474
  );
475
 
476
  $this->add_group_control(
477
  Group_Control_Typography::get_type(),
478
  [
479
- 'name' => 'label_typography',
480
  'label' => __( 'Typography', 'happy_addons' ),
481
  'exclude' => [
482
- 'font_family',
483
  'line_height'
484
  ],
485
- 'selector' => '{{WRAPPER}} .ha-label',
 
 
 
 
486
  ]
487
  );
488
 
489
  $this->end_controls_section();
490
 
491
  $this->start_controls_section(
492
- 'content_style',
493
  [
494
- 'label' => __( 'Content', 'happy_addons' ),
495
  'tab' => Controls_Manager::TAB_STYLE,
496
  ]
497
  );
@@ -499,7 +644,7 @@ class Card extends Addon_Base {
499
  $this->add_responsive_control(
500
  'content_padding',
501
  [
502
- 'label' => __( 'Padding', 'happy_addons' ),
503
  'type' => Controls_Manager::DIMENSIONS,
504
  'size_units' => [ 'px', 'em', '%' ],
505
  'selectors' => [
@@ -509,7 +654,7 @@ class Card extends Addon_Base {
509
  );
510
 
511
  $this->add_control(
512
- 'title_heading',
513
  [
514
  'type' => Controls_Manager::HEADING,
515
  'label' => __( 'Title', 'happy_addons' ),
@@ -518,13 +663,13 @@ class Card extends Addon_Base {
518
  );
519
 
520
  $this->add_responsive_control(
521
- 'title_margin',
522
  [
523
- 'label' => __( 'Margin', 'happy_addons' ),
524
- 'type' => Controls_Manager::DIMENSIONS,
525
- 'size_units' => [ 'px', '%' ],
526
  'selectors' => [
527
- '{{WRAPPER}} .ha-card-title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
528
  ],
529
  ]
530
  );
@@ -546,11 +691,12 @@ class Card extends Addon_Base {
546
  'name' => 'title_typography',
547
  'label' => __( 'Typography', 'happy_addons' ),
548
  'selector' => '{{WRAPPER}} .ha-card-title',
 
549
  ]
550
  );
551
 
552
  $this->add_control(
553
- 'description_heading',
554
  [
555
  'type' => Controls_Manager::HEADING,
556
  'label' => __( 'Description', 'happy_addons' ),
@@ -559,13 +705,13 @@ class Card extends Addon_Base {
559
  );
560
 
561
  $this->add_responsive_control(
562
- 'description_margin',
563
  [
564
- 'label' => __( 'Margin', 'happy_addons' ),
565
- 'type' => Controls_Manager::DIMENSIONS,
566
- 'size_units' => [ 'px', '%' ],
567
  'selectors' => [
568
- '{{WRAPPER}} .ha-card-text' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
569
  ],
570
  ]
571
  );
@@ -587,13 +733,14 @@ class Card extends Addon_Base {
587
  'name' => 'description_typography',
588
  'label' => __( 'Typography', 'happy_addons' ),
589
  'selector' => '{{WRAPPER}} .ha-card-text',
 
590
  ]
591
  );
592
 
593
  $this->end_controls_section();
594
 
595
  $this->start_controls_section(
596
- 'btn_style',
597
  [
598
  'label' => __( 'Button', 'happy_addons' ),
599
  'tab' => Controls_Manager::TAB_STYLE,
@@ -601,7 +748,7 @@ class Card extends Addon_Base {
601
  );
602
 
603
  $this->add_responsive_control(
604
- 'btn_padding',
605
  [
606
  'label' => __( 'Padding', 'happy_addons' ),
607
  'type' => Controls_Manager::DIMENSIONS,
@@ -615,21 +762,22 @@ class Card extends Addon_Base {
615
  $this->add_group_control(
616
  Group_Control_Typography::get_type(),
617
  [
618
- 'name' => 'btn_typography',
619
  'selector' => '{{WRAPPER}} .ha-btn',
 
620
  ]
621
  );
622
 
623
  $this->add_group_control(
624
  Group_Control_Border::get_type(),
625
  [
626
- 'name' => 'btn_border',
627
  'selector' => '{{WRAPPER}} .ha-btn',
628
  ]
629
  );
630
 
631
  $this->add_control(
632
- 'btn_border_radius',
633
  [
634
  'label' => __( 'Border Radius', 'happy_addons' ),
635
  'type' => Controls_Manager::DIMENSIONS,
@@ -643,7 +791,7 @@ class Card extends Addon_Base {
643
  $this->add_group_control(
644
  Group_Control_Box_Shadow::get_type(),
645
  [
646
- 'name' => 'btn_box_shadow',
647
  'selector' => '{{WRAPPER}} .ha-btn',
648
  ]
649
  );
@@ -656,17 +804,17 @@ class Card extends Addon_Base {
656
  ]
657
  );
658
 
659
- $this->start_controls_tabs( 'tabs_button_style' );
660
 
661
  $this->start_controls_tab(
662
- 'tab_button_normal',
663
  [
664
  'label' => __( 'Normal', 'happy_addons' ),
665
  ]
666
  );
667
 
668
  $this->add_control(
669
- 'btn_color',
670
  [
671
  'label' => __( 'Text Color', 'happy_addons' ),
672
  'type' => Controls_Manager::COLOR,
@@ -678,7 +826,7 @@ class Card extends Addon_Base {
678
  );
679
 
680
  $this->add_control(
681
- 'btn_bg_color',
682
  [
683
  'label' => __( 'Background Color', 'happy_addons' ),
684
  'type' => Controls_Manager::COLOR,
@@ -691,14 +839,14 @@ class Card extends Addon_Base {
691
  $this->end_controls_tab();
692
 
693
  $this->start_controls_tab(
694
- 'tab_button_hover',
695
  [
696
  'label' => __( 'Hover', 'happy_addons' ),
697
  ]
698
  );
699
 
700
  $this->add_control(
701
- 'btn_hover_color',
702
  [
703
  'label' => __( 'Text Color', 'happy_addons' ),
704
  'type' => Controls_Manager::COLOR,
@@ -709,7 +857,7 @@ class Card extends Addon_Base {
709
  );
710
 
711
  $this->add_control(
712
- 'btn_hover_bg_color',
713
  [
714
  'label' => __( 'Background Color', 'happy_addons' ),
715
  'type' => Controls_Manager::COLOR,
@@ -720,12 +868,12 @@ class Card extends Addon_Base {
720
  );
721
 
722
  $this->add_control(
723
- 'btn_hover_border_color',
724
  [
725
  'label' => __( 'Border Color', 'happy_addons' ),
726
  'type' => Controls_Manager::COLOR,
727
  'condition' => [
728
- 'btn_border_border!' => '',
729
  ],
730
  'selectors' => [
731
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'border-color: {{VALUE}};',
@@ -739,18 +887,14 @@ class Card extends Addon_Base {
739
  $this->end_controls_section();
740
  }
741
 
742
- public function get_custom_wrapper_class() {
743
- return 'ha-card';
744
- }
745
-
746
  protected function render() {
747
  $settings = $this->get_settings_for_display();
748
 
749
- $this->add_inline_editing_attributes( 'label', 'none' );
750
  $this->add_render_attribute(
751
- 'label',
752
  'class',
753
- ['ha-label', sprintf( 'ha-label--%s', esc_attr( $settings['label_position'] ) )]
754
  );
755
 
756
  $this->add_inline_editing_attributes( 'title', 'none' );
@@ -759,63 +903,74 @@ class Card extends Addon_Base {
759
  $this->add_inline_editing_attributes( 'description', 'basic' );
760
  $this->add_render_attribute( 'description', 'class', 'ha-card-text' );
761
 
762
- $this->add_inline_editing_attributes( 'btn_text', 'none' );
763
- $this->add_render_attribute( 'btn_text', 'class', 'ha-btn-text' );
764
 
765
- $this->add_render_attribute( 'btn', 'class', 'ha-btn' );
766
- $this->add_render_attribute( 'btn', 'href', esc_url( $settings['btn_link']['url'] ) );
767
- if ( ! empty( $settings['btn_link']['is_external'] ) ) {
768
- $this->add_render_attribute( 'btn', 'target', '_blank' );
769
  }
770
- if ( ! empty( $settings['btn_link']['nofollow'] ) ) {
771
- $this->set_render_attribute( 'btn', 'rel', 'nofollow' );
772
  }
773
  ?>
774
 
775
- <?php if ( ! empty( $settings['image']['url'] ) ) :
776
  $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
777
  $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
778
  $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
779
  $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
780
  ?>
781
  <figure class="ha-card-figure">
782
- <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'image', 'image' ); ?>
783
- <div <?php echo $this->get_render_attribute_string( 'label' ); ?>><?php echo esc_html( $settings['label'] ); ?></div>
 
 
784
  </figure>
785
  <?php endif; ?>
786
 
787
  <div class="ha-card-body">
788
- <?php printf( '<%1$s %2$s>%3$s</%1$s>',
789
- tag_escape( $settings['title_tag'] ),
790
- $this->get_render_attribute_string( 'title' ),
791
- esc_html( $settings['title' ] )
792
- ); ?>
793
- <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
794
- <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
795
- </div>
796
  <?php
797
- if ( $settings['btn_text'] && empty( $settings['btn_icon'] ) ) :
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
798
  printf( '<a %1$s>%2$s</a>',
799
- $this->get_render_attribute_string( 'btn' ),
800
- sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'btn_text' ), esc_html( $settings['btn_text'] ) )
801
  );
802
- elseif ( empty( $settings['btn_text'] ) && $settings['btn_icon'] ) :
803
  printf( '<a %1$s>%2$s</a>',
804
- $this->get_render_attribute_string( 'btn' ),
805
- sprintf( '<i class="%1$s"></i>', esc_attr( $settings['btn_icon'] ) )
806
  );
807
- elseif ( $settings['btn_text'] && $settings['btn_icon'] ) :
808
- if ( $settings['btn_icon_position'] === 'before' ) :
809
- $this->add_render_attribute( 'btn', 'class', 'ha-btn--icon-before' );
810
- $btn_before = sprintf( '<i class="ha-btn-icon %1$s"></i>', esc_attr( $settings['btn_icon'] ) );
811
- $btn_after = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'btn_text' ), esc_html( $settings['btn_text'] ) );
812
  else :
813
- $this->add_render_attribute( 'btn', 'class', 'ha-btn--icon-after' );
814
- $btn_before = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'btn_text' ), esc_html( $settings['btn_text'] ) );
815
- $btn_after = sprintf( '<i class="ha-btn-icon %1$s"></i>', esc_attr( $settings['btn_icon'] ) );
816
  endif;
817
  printf( '<a %1$s>%2$s %3$s</a>',
818
- $this->get_render_attribute_string( 'btn' ),
819
  $btn_before,
820
  $btn_after
821
  );
@@ -828,11 +983,11 @@ class Card extends Addon_Base {
828
  public function _content_template() {
829
  ?>
830
  <#
831
- view.addInlineEditingAttributes( 'label', 'none' );
832
  view.addRenderAttribute(
833
- 'label',
834
  'class',
835
- ['ha-label', 'ha-label--' + settings.label_position]
836
  );
837
 
838
  view.addInlineEditingAttributes( 'title', 'none' );
@@ -841,53 +996,57 @@ class Card extends Addon_Base {
841
  view.addInlineEditingAttributes( 'description', 'basic' );
842
  view.addRenderAttribute( 'description', 'class', 'ha-card-text' );
843
 
844
- view.addInlineEditingAttributes( 'btn_text', 'none' );
845
- view.addRenderAttribute( 'btn_text', 'class', 'ha-btn-text' );
846
 
847
- view.addRenderAttribute( 'btn', 'class', 'ha-btn' );
848
- view.addRenderAttribute( 'btn', 'href', settings.btn_link.url );
849
 
850
- if ( settings.image.url ) {
851
  var image = {
852
  id: settings.image.id,
853
  url: settings.image.url,
854
- size: settings.image_size,
855
- dimension: settings.image_custom_dimension,
856
  model: view.getEditModel()
857
  };
858
 
859
- var image_url = elementor.imagesManager.getImageUrl( image );
860
- #>
861
  <figure class="ha-card-figure">
862
  <img src="{{ image_url }}">
863
- <div {{{ view.getRenderAttributeString( 'label' ) }}}>{{ settings.label }}</div>
 
 
864
  </figure>
865
  <# } #>
866
 
867
  <div class="ha-card-body">
868
- <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
869
-
870
- <div {{{ view.getRenderAttributeString( 'description' ) }}}>
871
- <p>{{{ settings.description }}}</p>
872
- </div>
873
-
874
- <# if ( settings.btn_text && ! settings.btn_icon ) { #>
875
- <a {{{ view.getRenderAttributeString( 'btn' ) }}}><span {{{ view.getRenderAttributeString( 'btn_text' ) }}}>{{ settings.btn_text }}</span></a>
876
- <# } else if ( ! settings.btn_text && settings.btn_icon ) { #>
877
- <a {{{ view.getRenderAttributeString( 'btn' ) }}}><i class="{{ settings.btn_icon }}"></i></a>
878
- <# } else if ( settings.btn_text && settings.btn_icon ) { #>
879
- <#
880
- if ( settings.btn_icon_position === 'before' ) {
881
- view.addRenderAttribute( 'btn', 'class', 'ha-btn--icon-before' );
882
- var btn_before = '<i class="ha-btn-icon ' + settings.btn_icon + '"></i>';
883
- var btn_after = '<span ' + view.getRenderAttributeString( 'btn_text' ) + '>' + settings.btn_text + '</span>';
 
 
 
884
  } else {
885
- view.addRenderAttribute( 'btn', 'class', 'ha-btn--icon-after' );
886
- var btn_after = '<i class="ha-btn-icon ' + settings.btn_icon + '"></i>';
887
- var btn_before = '<span ' + view.getRenderAttributeString( 'btn_text' ) + '>' + settings.btn_text + '</span>';
888
  }
889
  #>
890
- <a {{{ view.getRenderAttributeString( 'btn' ) }}}>{{{ btn_before }}} {{{ btn_after }}}</a>
891
  <# } #>
892
  </div>
893
  <?php
1
  <?php
2
  /**
3
+ * Card widget class
4
  *
5
  * @package Happy_Addons
6
  */
7
+ namespace Happy_Addons\Elementor\Widget;
8
 
9
+ use Elementor\Scheme_Typography;
10
+ use Elementor\Utils;
11
  use Elementor\Control_Media;
12
+ use Elementor\Controls_Manager;
13
  use Elementor\Group_Control_Border;
14
  use Elementor\Group_Control_Box_Shadow;
15
  use Elementor\Group_Control_Image_Size;
16
  use Elementor\Group_Control_Typography;
 
 
17
 
18
  defined( 'ABSPATH' ) || die();
19
 
20
+ class Card extends Base {
21
 
22
  /**
23
  * Get widget title.
28
  * @return string Widget title.
29
  */
30
  public function get_title() {
31
+ return __( 'Card', 'happy_addons' );
32
  }
33
 
34
  /**
40
  * @return string Widget icon.
41
  */
42
  public function get_icon() {
43
+ return 'hm hm-card';
44
  }
45
 
46
  public function get_keywords() {
47
+ return [ 'card', 'blurb', 'infobox', 'content', 'block', 'box' ];
48
  }
49
 
50
+ protected function register_content_controls() {
51
  $this->start_controls_section(
52
+ '_section_image',
53
  [
54
+ 'label' => __( 'Image & Badge', 'happy_addons' ),
55
  'tab' => Controls_Manager::TAB_CONTENT,
56
  ]
57
  );
70
  $this->add_group_control(
71
  Group_Control_Image_Size::get_type(),
72
  [
73
+ 'name' => 'thumbnail',
74
  'default' => 'large',
75
  'separator' => 'none',
76
  ]
77
  );
78
 
79
+ $this->add_control(
80
  'image_position',
81
  [
82
  'label' => __( 'Image Position', 'happy_addons' ),
83
  'type' => Controls_Manager::CHOOSE,
84
+ 'label_block' => false,
85
  'options' => [
86
  'left' => [
87
  'title' => __( 'Left', 'happy_addons' ),
88
+ 'icon' => 'eicon-h-align-left',
89
  ],
90
  'top' => [
91
  'title' => __( 'Top', 'happy_addons' ),
92
+ 'icon' => 'eicon-v-align-top',
93
  ],
94
  'right' => [
95
  'title' => __( 'Right', 'happy_addons' ),
96
+ 'icon' => 'eicon-h-align-right',
97
  ],
98
  ],
 
99
  'toggle' => false,
100
+ 'default' => 'top',
101
+ 'prefix_class' => 'ha-card--'
102
  ]
103
  );
104
 
105
  $this->add_control(
106
+ 'badge_text',
107
  [
108
+ 'label' => __( 'Badge Text', 'happy_addons' ),
109
  'type' => Controls_Manager::TEXT,
110
+ 'default' => __( 'Badget Text', 'happy_addons' ),
111
+ 'placeholder' => __( 'Type badge text', 'happy_addons' ),
112
+ 'separator' => 'before',
113
+ 'description' => __( 'Set badget position and control all the style settings from Style tab', 'happy_addons' ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  ]
115
  );
116
 
117
  $this->end_controls_section();
118
 
119
  $this->start_controls_section(
120
+ '_section_title',
121
  [
122
  'label' => __( 'Title & Description', 'happy_addons' ),
123
  'tab' => Controls_Manager::TAB_CONTENT,
130
  'label' => __( 'Title', 'happy_addons' ),
131
  'label_block' => true,
132
  'type' => Controls_Manager::TEXT,
133
+ 'default' => __( 'Happy Card Title', 'happy_addons' ),
134
+ 'placeholder' => __( 'Type Card Title', 'happy_addons' ),
135
  ]
136
  );
137
 
140
  [
141
  'label' => __( 'Description', 'happy_addons' ),
142
  'type' => Controls_Manager::TEXTAREA,
143
+ 'default' => __( 'Happy card description goes here', 'happy_addons' ),
144
+ 'placeholder' => __( 'Type card description', 'happy_addons' ),
145
  'rows' => 5
146
  ]
147
  );
150
  'title_tag',
151
  [
152
  'label' => __( 'Title HTML Tag', 'happy_addons' ),
153
+ 'type' => Controls_Manager::CHOOSE,
154
  'options' => [
155
+ 'h1' => [
156
+ 'title' => __( 'H1', 'happy_addons' ),
157
+ 'icon' => 'eicon-editor-h1'
158
+ ],
159
+ 'h2' => [
160
+ 'title' => __( 'H2', 'happy_addons' ),
161
+ 'icon' => 'eicon-editor-h2'
162
+ ],
163
+ 'h3' => [
164
+ 'title' => __( 'H3', 'happy_addons' ),
165
+ 'icon' => 'eicon-editor-h3'
166
+ ],
167
+ 'h4' => [
168
+ 'title' => __( 'H4', 'happy_addons' ),
169
+ 'icon' => 'eicon-editor-h4'
170
+ ],
171
+ 'h5' => [
172
+ 'title' => __( 'H5', 'happy_addons' ),
173
+ 'icon' => 'eicon-editor-h5'
174
+ ],
175
+ 'h6' => [
176
+ 'title' => __( 'H6', 'happy_addons' ),
177
+ 'icon' => 'eicon-editor-h6'
178
+ ]
179
  ],
180
  'default' => 'h2',
181
+ 'toggle' => false,
182
  ]
183
  );
184
 
200
  'title' => __( 'Right', 'happy_addons' ),
201
  'icon' => 'fa fa-align-right',
202
  ],
203
+ 'justify' => [
204
+ 'title' => __( 'Justify', 'happy_addons' ),
205
+ 'icon' => 'fa fa-align-justify',
206
+ ],
207
  ],
208
+ 'toggle' => true,
209
+ 'selectors' => [
210
+ '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
211
+ ]
212
  ]
213
  );
214
 
215
  $this->end_controls_section();
216
 
217
  $this->start_controls_section(
218
+ '_section_button',
219
  [
220
  'label' => __( 'Button', 'happy_addons' ),
221
  'tab' => Controls_Manager::TAB_CONTENT,
223
  );
224
 
225
  $this->add_control(
226
+ 'button_text',
227
  [
228
  'label' => __( 'Text', 'happy_addons' ),
229
  'type' => Controls_Manager::TEXT,
230
+ 'default' => __( 'Button Text', 'happy_addons' ),
231
+ 'placeholder' => __( 'Type button text here', 'happy_addons' ),
232
+ 'label_block' => true,
233
  ]
234
  );
235
 
236
  $this->add_control(
237
+ 'button_link',
238
  [
239
  'label' => __( 'Link', 'happy_addons' ),
240
  'type' => Controls_Manager::URL,
241
  'placeholder' => __( 'https://example.com/', 'happy_addons' ),
 
 
 
242
  ]
243
  );
244
 
245
  $this->add_control(
246
+ 'button_icon',
247
  [
248
  'label' => __( 'Icon', 'happy_addons' ),
249
  'type' => Controls_Manager::ICON,
250
+ 'options' => ha_get_happy_icons(),
 
251
  ]
252
  );
253
 
254
  $this->add_control(
255
+ 'button_icon_position',
256
  [
257
  'label' => __( 'Icon Position', 'happy_addons' ),
258
+ 'type' => Controls_Manager::CHOOSE,
259
+ 'label_block' => false,
260
  'options' => [
261
+ 'before' => [
262
+ 'title' => __( 'Before', 'happy_addons' ),
263
+ 'icon' => 'eicon-h-align-left',
264
+ ],
265
+ 'after' => [
266
+ 'title' => __( 'After', 'happy_addons' ),
267
+ 'icon' => 'eicon-h-align-right',
268
+ ],
269
  ],
270
+ 'default' => 'before',
271
+ 'toggle' => false,
272
  'condition' => [
273
+ 'button_icon!' => '',
274
  ],
275
  ]
276
  );
277
 
278
  $this->add_control(
279
+ 'button_icon_spacing',
280
  [
281
  'label' => __( 'Icon Spacing', 'happy_addons' ),
282
  'type' => Controls_Manager::SLIDER,
286
  ],
287
  ],
288
  'condition' => [
289
+ 'button_icon!' => '',
290
  ],
291
  'selectors' => [
292
  '{{WRAPPER}} .ha-btn--icon-before .ha-btn-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
296
  );
297
 
298
  $this->end_controls_section();
299
+ }
300
 
301
+ protected function register_style_controls() {
302
  $this->start_controls_section(
303
+ '_section_style_image',
304
  [
305
  'label' => __( 'Image', 'happy_addons' ),
306
  'tab' => Controls_Manager::TAB_STYLE,
308
  );
309
 
310
  $this->add_responsive_control(
311
+ 'image_width',
312
  [
313
  'label' => __( 'Width', 'happy_addons' ),
314
  'type' => Controls_Manager::SLIDER,
315
+ 'size_units' => [ 'px', '%' ],
 
 
 
 
 
 
 
 
 
316
  'range' => [
317
  '%' => [
318
  'min' => 1,
319
  'max' => 100,
320
  ],
321
  'px' => [
322
+ 'min' => 50,
323
  'max' => 1000,
324
  ],
325
  ],
326
  'selectors' => [
327
+ '{{WRAPPER}} .ha-card-figure' => 'flex: 0 0 {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}};',
328
+ '{{WRAPPER}}.ha-card--right .ha-card-body, {{WRAPPER}}.ha-card--left .ha-card-body' => 'flex: 0 0 calc(100% - {{SIZE}}{{UNIT}}); max-width: calc(100% - {{SIZE}}{{UNIT}});',
329
  ],
330
  ]
331
  );
332
 
333
  $this->add_responsive_control(
334
+ 'image_height',
335
  [
336
+ 'label' => __( 'Height', 'happy_addons' ),
337
+ 'type' => Controls_Manager::SLIDER,
338
+ 'size_units' => [ 'px' ],
339
+ 'range' => [
340
+ 'px' => [
341
+ 'min' => 50,
342
+ 'max' => 1000,
343
+ ],
344
+ ],
345
  'selectors' => [
346
+ '{{WRAPPER}} .ha-card-figure' => 'height: {{SIZE}}{{UNIT}};',
347
+ ],
348
+ ]
349
+ );
350
+
351
+ $this->add_control(
352
+ 'offset_toggle',
353
+ [
354
+ 'label' => __( 'Offset', 'happy_addons' ),
355
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
356
+ 'label_off' => __( 'None', 'happy_addons' ),
357
+ 'label_on' => __( 'Custom', 'happy_addons' ),
358
+ 'return_value' => 'yes',
359
+ ]
360
+ );
361
+
362
+ $this->start_popover();
363
+
364
+ $this->add_responsive_control(
365
+ 'image_offset_x',
366
+ [
367
+ 'label' => __( 'Offset Left', 'happy_addons' ),
368
+ 'type' => Controls_Manager::SLIDER,
369
+ 'size_units' => ['px'],
370
+ 'condition' => [
371
+ 'offset_toggle' => 'yes'
372
  ],
373
  'default' => [
374
+ 'size' => 1
375
+ ],
376
+ 'range' => [
377
+ 'px' => [
378
+ 'min' => -1000,
379
+ 'max' => 1000,
380
+ ],
381
+ ],
382
+ 'render_type' => 'ui'
383
+ ]
384
+ );
385
+
386
+ $this->add_responsive_control(
387
+ 'image_offset_y',
388
+ [
389
+ 'label' => __( 'Offset Top', 'happy_addons' ),
390
+ 'type' => Controls_Manager::SLIDER,
391
+ 'size_units' => ['px'],
392
+ 'condition' => [
393
+ 'offset_toggle' => 'yes'
394
+ ],
395
+ 'default' => [
396
+ 'size' => 1
397
+ ],
398
+ 'range' => [
399
+ 'px' => [
400
+ 'min' => -1000,
401
+ 'max' => 1000,
402
+ ],
403
+ ],
404
+ 'selectors' => [
405
+ '{{WRAPPER}} .ha-card-figure' => '-ms-transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); -webkit-transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}});',
406
+ '{{WRAPPER}}.ha-card--top .ha-card-body' => 'margin-top: {{SIZE}}{{UNIT}};',
407
+ '{{WRAPPER}}.ha-card--left .ha-card-body' =>
408
+ 'margin-left: {{image_offset_x.SIZE}}{{UNIT}};'
409
+ . 'flex: 0 0 calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + (-1 * {{image_offset_x.SIZE}}{{UNIT}}));'
410
+ . 'max-width: calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + (-1 * {{image_offset_x.SIZE}}{{UNIT}}));',
411
+ '{{WRAPPER}}.ha-card--right .ha-card-body' =>
412
+ 'margin-right: calc(-1 * {{image_offset_x.SIZE}}{{UNIT}});'
413
+ . 'flex: 0 0 calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + {{image_offset_x.SIZE}}{{UNIT}});'
414
+ . 'max-width: calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + {{image_offset_x.SIZE}}{{UNIT}});',
415
+ ],
416
  ]
417
  );
418
+ $this->end_popover();
419
 
420
  $this->add_responsive_control(
421
  'image_padding',
463
  $this->end_controls_section();
464
 
465
  $this->start_controls_section(
466
+ '_section_style_badge',
467
  [
468
+ 'label' => __( 'Badge', 'happy_addons' ),
469
  'tab' => Controls_Manager::TAB_STYLE,
470
  ]
471
  );
472
 
473
+ $this->add_control(
474
+ 'badge_position',
475
+ [
476
+ 'label' => __( 'Position', 'happy_addons' ),
477
+ 'type' => Controls_Manager::SELECT,
478
+ 'options' => [
479
+ 'top-left' => __( 'Top Left', 'happy_addons' ),
480
+ 'top-center' => __( 'Top Center', 'happy_addons' ),
481
+ 'top-right' => __( 'Top Right', 'happy_addons' ),
482
+ 'middle-left' => __( 'Middle Left', 'happy_addons' ),
483
+ 'middle-center' => __( 'Middle Center', 'happy_addons' ),
484
+ 'middle-right' => __( 'Middle Right', 'happy_addons' ),
485
+ 'bottom-left' => __( 'Bottom Left', 'happy_addons' ),
486
+ 'bottom-center' => __( 'Bottom Center', 'happy_addons' ),
487
+ 'bottom-right' => __( 'Bottom Right', 'happy_addons' ),
488
+ ],
489
+ 'default' => 'top-right',
490
+ ]
491
+ );
492
+
493
+ $this->add_control(
494
+ 'badge_offset_toggle',
495
+ [
496
+ 'label' => __( 'Offset', 'happy_addons' ),
497
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
498
+ 'label_off' => __( 'None', 'happy_addons' ),
499
+ 'label_on' => __( 'Custom', 'happy_addons' ),
500
+ 'return_value' => 'yes',
501
+ ]
502
+ );
503
+
504
+ $this->start_popover();
505
+
506
  $this->add_responsive_control(
507
+ 'badge_offset_x',
508
  [
509
+ 'label' => __( 'Offset Left', 'happy_addons' ),
510
+ 'type' => Controls_Manager::SLIDER,
511
+ 'size_units' => ['px'],
512
+ 'condition' => [
513
+ 'badge_offset_toggle' => 'yes'
514
+ ],
515
+ 'default' => [
516
+ 'size' => 1
517
+ ],
518
+ 'range' => [
519
+ 'px' => [
520
+ 'min' => -1000,
521
+ 'max' => 1000,
522
+ ],
523
+ ],
524
+ 'render_type' => 'ui'
525
+ ]
526
+ );
527
+
528
+ $this->add_responsive_control(
529
+ 'badge_offset_y',
530
+ [
531
+ 'label' => __( 'Offset Top', 'happy_addons' ),
532
+ 'type' => Controls_Manager::SLIDER,
533
+ 'size_units' => ['px'],
534
+ 'condition' => [
535
+ 'badge_offset_toggle' => 'yes'
536
+ ],
537
+ 'default' => [
538
+ 'size' => 1
539
+ ],
540
+ 'range' => [
541
+ 'px' => [
542
+ 'min' => -1000,
543
+ 'max' => 1000,
544
+ ],
545
+ ],
546
  'selectors' => [
547
+ '{{WRAPPER}} .ha-badge' => '-ms-transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); -webkit-transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}});',
548
  ],
549
  ]
550
  );
551
+ $this->end_popover();
552
 
553
  $this->add_responsive_control(
554
+ 'badge_padding',
555
  [
556
  'label' => __( 'Padding', 'happy_addons' ),
557
  'type' => Controls_Manager::DIMENSIONS,
558
  'size_units' => [ 'px', 'em', '%' ],
559
  'selectors' => [
560
+ '{{WRAPPER}} .ha-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
561
  ],
562
  ]
563
  );
564
 
565
  $this->add_control(
566
+ 'badge_color',
567
  [
568
  'label' => __( 'Text Color', 'happy_addons' ),
569
  'type' => Controls_Manager::COLOR,
570
  'selectors' => [
571
+ '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
572
  ],
573
  ]
574
  );
575
 
576
  $this->add_control(
577
+ 'badge_bg_color',
578
  [
579
  'label' => __( 'Background Color', 'happy_addons' ),
580
  'type' => Controls_Manager::COLOR,
581
  'selectors' => [
582
+ '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
583
  ],
584
  ]
585
  );
587
  $this->add_group_control(
588
  Group_Control_Border::get_type(),
589
  [
590
+ 'name' => 'badge_border',
591
+ 'selector' => '{{WRAPPER}} .ha-badge',
592
  ]
593
  );
594
 
595
  $this->add_responsive_control(
596
+ 'badge_border_radius',
597
  [
598
  'label' => __( 'Border Radius', 'happy_addons' ),
599
  'type' => Controls_Manager::DIMENSIONS,
600
  'size_units' => [ 'px', '%' ],
601
  'selectors' => [
602
+ '{{WRAPPER}} .ha-badge' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
603
  ],
604
  ]
605
  );
607
  $this->add_group_control(
608
  Group_Control_Box_Shadow::get_type(),
609
  [
610
+ 'name' => 'badge_box_shadow',
611
  'exclude' => [
612
  'box_shadow_position',
613
  ],
614
+ 'selector' => '{{WRAPPER}} .ha-badge',
615
  ]
616
  );
617
 
618
  $this->add_group_control(
619
  Group_Control_Typography::get_type(),
620
  [
621
+ 'name' => 'badge_typography',
622
  'label' => __( 'Typography', 'happy_addons' ),
623
  'exclude' => [
 
624
  'line_height'
625
  ],
626
+ 'default' => [
627
+ 'font_size' => ['']
628
+ ],
629
+ 'selector' => '{{WRAPPER}} .ha-badge',
630
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
631
  ]
632
  );
633
 
634
  $this->end_controls_section();
635
 
636
  $this->start_controls_section(
637
+ '_section_style_content',
638
  [
639
+ 'label' => __( 'Title & Description', 'happy_addons' ),
640
  'tab' => Controls_Manager::TAB_STYLE,
641
  ]
642
  );
644
  $this->add_responsive_control(
645
  'content_padding',
646
  [
647
+ 'label' => __( 'Content Padding', 'happy_addons' ),
648
  'type' => Controls_Manager::DIMENSIONS,
649
  'size_units' => [ 'px', 'em', '%' ],
650
  'selectors' => [
654
  );
655
 
656
  $this->add_control(
657
+ '_heading_title',
658
  [
659
  'type' => Controls_Manager::HEADING,
660
  'label' => __( 'Title', 'happy_addons' ),
663
  );
664
 
665
  $this->add_responsive_control(
666
+ 'title_spacing',
667
  [
668
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
669
+ 'type' => Controls_Manager::SLIDER,
670
+ 'size_units' => ['px'],
671
  'selectors' => [
672
+ '{{WRAPPER}} .ha-card-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
673
  ],
674
  ]
675
  );
691
  'name' => 'title_typography',
692
  'label' => __( 'Typography', 'happy_addons' ),
693
  'selector' => '{{WRAPPER}} .ha-card-title',
694
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_2,
695
  ]
696
  );
697
 
698
  $this->add_control(
699
+ '_heading_description',
700
  [
701
  'type' => Controls_Manager::HEADING,
702
  'label' => __( 'Description', 'happy_addons' ),
705
  );
706
 
707
  $this->add_responsive_control(
708
+ 'description_spacing',
709
  [
710
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
711
+ 'type' => Controls_Manager::SLIDER,
712
+ 'size_units' => ['px'],
713
  'selectors' => [
714
+ '{{WRAPPER}} .ha-card-text' => 'margin-bottom: {{SIZE}}{{UNIT}};',
715
  ],
716
  ]
717
  );
733
  'name' => 'description_typography',
734
  'label' => __( 'Typography', 'happy_addons' ),
735
  'selector' => '{{WRAPPER}} .ha-card-text',
736
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
737
  ]
738
  );
739
 
740
  $this->end_controls_section();
741
 
742
  $this->start_controls_section(
743
+ '_section_style_button',
744
  [
745
  'label' => __( 'Button', 'happy_addons' ),
746
  'tab' => Controls_Manager::TAB_STYLE,
748
  );
749
 
750
  $this->add_responsive_control(
751
+ 'button_padding',
752
  [
753
  'label' => __( 'Padding', 'happy_addons' ),
754
  'type' => Controls_Manager::DIMENSIONS,
762
  $this->add_group_control(
763
  Group_Control_Typography::get_type(),
764
  [
765
+ 'name' => 'button_typography',
766
  'selector' => '{{WRAPPER}} .ha-btn',
767
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4,
768
  ]
769
  );
770
 
771
  $this->add_group_control(
772
  Group_Control_Border::get_type(),
773
  [
774
+ 'name' => 'button_border',
775
  'selector' => '{{WRAPPER}} .ha-btn',
776
  ]
777
  );
778
 
779
  $this->add_control(
780
+ 'button_border_radius',
781
  [
782
  'label' => __( 'Border Radius', 'happy_addons' ),
783
  'type' => Controls_Manager::DIMENSIONS,
791
  $this->add_group_control(
792
  Group_Control_Box_Shadow::get_type(),
793
  [
794
+ 'name' => 'button_box_shadow',
795
  'selector' => '{{WRAPPER}} .ha-btn',
796
  ]
797
  );
804
  ]
805
  );
806
 
807
+ $this->start_controls_tabs( '_tabs_button' );
808
 
809
  $this->start_controls_tab(
810
+ '_tab_button_normal',
811
  [
812
  'label' => __( 'Normal', 'happy_addons' ),
813
  ]
814
  );
815
 
816
  $this->add_control(
817
+ 'button_color',
818
  [
819
  'label' => __( 'Text Color', 'happy_addons' ),
820
  'type' => Controls_Manager::COLOR,
826
  );
827
 
828
  $this->add_control(
829
+ 'button_bg_color',
830
  [
831
  'label' => __( 'Background Color', 'happy_addons' ),
832
  'type' => Controls_Manager::COLOR,
839
  $this->end_controls_tab();
840
 
841
  $this->start_controls_tab(
842
+ '_tab_button_hover',
843
  [
844
  'label' => __( 'Hover', 'happy_addons' ),
845
  ]
846
  );
847
 
848
  $this->add_control(
849
+ 'button_hover_color',
850
  [
851
  'label' => __( 'Text Color', 'happy_addons' ),
852
  'type' => Controls_Manager::COLOR,
857
  );
858
 
859
  $this->add_control(
860
+ 'button_hover_bg_color',
861
  [
862
  'label' => __( 'Background Color', 'happy_addons' ),
863
  'type' => Controls_Manager::COLOR,
868
  );
869
 
870
  $this->add_control(
871
+ 'button_hover_border_color',
872
  [
873
  'label' => __( 'Border Color', 'happy_addons' ),
874
  'type' => Controls_Manager::COLOR,
875
  'condition' => [
876
+ 'button_border_border!' => '',
877
  ],
878
  'selectors' => [
879
  '{{WRAPPER}} .ha-btn:hover, {{WRAPPER}} .ha-btn:focus' => 'border-color: {{VALUE}};',
887
  $this->end_controls_section();
888
  }
889
 
 
 
 
 
890
  protected function render() {
891
  $settings = $this->get_settings_for_display();
892
 
893
+ $this->add_inline_editing_attributes( 'badge_text', 'none' );
894
  $this->add_render_attribute(
895
+ 'badge_text',
896
  'class',
897
+ ['ha-badge', sprintf( 'ha-badge--%s', esc_attr( $settings['badge_position'] ) )]
898
  );
899
 
900
  $this->add_inline_editing_attributes( 'title', 'none' );
903
  $this->add_inline_editing_attributes( 'description', 'basic' );
904
  $this->add_render_attribute( 'description', 'class', 'ha-card-text' );
905
 
906
+ $this->add_inline_editing_attributes( 'button_text', 'none' );
907
+ $this->add_render_attribute( 'button_text', 'class', 'ha-btn-text' );
908
 
909
+ $this->add_render_attribute( 'button', 'class', 'ha-btn' );
910
+ $this->add_render_attribute( 'button', 'href', esc_url( $settings['button_link']['url'] ) );
911
+ if ( ! empty( $settings['button_link']['is_external'] ) ) {
912
+ $this->add_render_attribute( 'button', 'target', '_blank' );
913
  }
914
+ if ( ! empty( $settings['button_link']['nofollow'] ) ) {
915
+ $this->set_render_attribute( 'button', 'rel', 'nofollow' );
916
  }
917
  ?>
918
 
919
+ <?php if ( $settings['image']['url'] || $settings['image']['id'] ) :
920
  $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
921
  $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
922
  $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
923
  $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
924
  ?>
925
  <figure class="ha-card-figure">
926
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
927
+ <?php if ( $settings['badge_text'] ) : ?>
928
+ <div <?php echo $this->get_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></div>
929
+ <?php endif; ?>
930
  </figure>
931
  <?php endif; ?>
932
 
933
  <div class="ha-card-body">
934
+
 
 
 
 
 
 
 
935
  <?php
936
+ if ( $settings['title_tag'] ) :
937
+ printf( '<%1$s %2$s>%3$s</%1$s>',
938
+ tag_escape( $settings['title_tag'] ),
939
+ $this->get_render_attribute_string( 'title' ),
940
+ esc_html( $settings['title' ] )
941
+ );
942
+ endif;
943
+ ?>
944
+
945
+ <?php if ( $settings['description'] ) : ?>
946
+ <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
947
+ <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
948
+ </div>
949
+ <?php endif; ?>
950
+
951
+ <?php
952
+ if ( $settings['button_text'] && empty( $settings['button_icon'] ) ) :
953
  printf( '<a %1$s>%2$s</a>',
954
+ $this->get_render_attribute_string( 'button' ),
955
+ sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) )
956
  );
957
+ elseif ( empty( $settings['button_text'] ) && $settings['button_icon'] ) :
958
  printf( '<a %1$s>%2$s</a>',
959
+ $this->get_render_attribute_string( 'button' ),
960
+ sprintf( '<i class="%1$s"></i>', esc_attr( $settings['button_icon'] ) )
961
  );
962
+ elseif ( $settings['button_text'] && $settings['button_icon'] ) :
963
+ if ( $settings['button_icon_position'] === 'before' ) :
964
+ $this->add_render_attribute( 'button', 'class', 'ha-btn--icon-before' );
965
+ $btn_before = sprintf( '<i class="ha-btn-icon %1$s"></i>', esc_attr( $settings['button_icon'] ) );
966
+ $btn_after = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) );
967
  else :
968
+ $this->add_render_attribute( 'button', 'class', 'ha-btn--icon-after' );
969
+ $btn_before = sprintf( '<span %1$s>%2$s</span>', $this->get_render_attribute_string( 'button_text' ), esc_html( $settings['button_text'] ) );
970
+ $btn_after = sprintf( '<i class="ha-btn-icon %1$s"></i>', esc_attr( $settings['button_icon'] ) );
971
  endif;
972
  printf( '<a %1$s>%2$s %3$s</a>',
973
+ $this->get_render_attribute_string( 'button' ),
974
  $btn_before,
975
  $btn_after
976
  );
983
  public function _content_template() {
984
  ?>
985
  <#
986
+ view.addInlineEditingAttributes( 'badge_text', 'none' );
987
  view.addRenderAttribute(
988
+ 'badge_text',
989
  'class',
990
+ ['ha-badge', 'ha-badge--' + settings.badge_position]
991
  );
992
 
993
  view.addInlineEditingAttributes( 'title', 'none' );
996
  view.addInlineEditingAttributes( 'description', 'basic' );
997
  view.addRenderAttribute( 'description', 'class', 'ha-card-text' );
998
 
999
+ view.addInlineEditingAttributes( 'button_text', 'none' );
1000
+ view.addRenderAttribute( 'button_text', 'class', 'ha-btn-text' );
1001
 
1002
+ view.addRenderAttribute( 'button', 'class', 'ha-btn' );
1003
+ view.addRenderAttribute( 'button', 'href', settings.button_link.url );
1004
 
1005
+ if ( settings.image.url || settings.image.id ) {
1006
  var image = {
1007
  id: settings.image.id,
1008
  url: settings.image.url,
1009
+ size: settings.thumbnail_size,
1010
+ dimension: settings.thumbnail_custom_dimension,
1011
  model: view.getEditModel()
1012
  };
1013
 
1014
+ var image_url = elementor.imagesManager.getImageUrl( image ); #>
 
1015
  <figure class="ha-card-figure">
1016
  <img src="{{ image_url }}">
1017
+ <# if (settings.badge_text) { #>
1018
+ <div {{{ view.getRenderAttributeString( 'badge_text' ) }}}>{{ settings.badge_text }}</div>
1019
+ <# } #>
1020
  </figure>
1021
  <# } #>
1022
 
1023
  <div class="ha-card-body">
1024
+ <# if (settings.title) { #>
1025
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
1026
+ <# } #>
1027
+
1028
+ <# if (settings.description) { #>
1029
+ <div {{{ view.getRenderAttributeString( 'description' ) }}}>
1030
+ <p>{{{ settings.description }}}</p>
1031
+ </div>
1032
+ <# } #>
1033
+
1034
+ <# if ( settings.button_text && ! settings.button_icon ) { #>
1035
+ <a {{{ view.getRenderAttributeString( 'button' ) }}}><span {{{ view.getRenderAttributeString( 'button_text' ) }}}>{{ settings.button_text }}</span></a>
1036
+ <# } else if ( ! settings.button_text && settings.button_icon ) { #>
1037
+ <a {{{ view.getRenderAttributeString( 'button' ) }}}><i class="{{ settings.button_icon }}"></i></a>
1038
+ <# } else if ( settings.button_text && settings.button_icon ) {
1039
+ if ( settings.button_icon_position === 'before' ) {
1040
+ view.addRenderAttribute( 'button', 'class', 'ha-btn--icon-before' );
1041
+ var button_before = '<i class="ha-btn-icon ' + settings.button_icon + '"></i>';
1042
+ var button_after = '<span ' + view.getRenderAttributeString( 'button_text' ) + '>' + settings.button_text + '</span>';
1043
  } else {
1044
+ view.addRenderAttribute( 'button', 'class', 'ha-btn--icon-after' );
1045
+ var button_after = '<i class="ha-btn-icon ' + settings.button_icon + '"></i>';
1046
+ var button_before = '<span ' + view.getRenderAttributeString( 'button_text' ) + '>' + settings.button_text + '</span>';
1047
  }
1048
  #>
1049
+ <a {{{ view.getRenderAttributeString( 'button' ) }}}>{{{ button_before }}} {{{ button_after }}}</a>
1050
  <# } #>
1051
  </div>
1052
  <?php
addons/class-cf7.php → widgets/cf7/widget.php RENAMED
@@ -1,10 +1,10 @@
1
  <?php
2
  /**
3
- * Contact form 7 addon class
4
  *
5
  * @package Happy_Addons
6
  */
7
- namespace Happy_Addons\Elementor\Addons;
8
 
9
  use Elementor\Controls_Manager;
10
  use Elementor\Group_Control_Border;
@@ -13,7 +13,7 @@ use Elementor\Group_Control_Typography;
13
 
14
  defined( 'ABSPATH' ) || die();
15
 
16
- class CF7 extends Addon_Base {
17
 
18
  /**
19
  * Get widget title.
@@ -24,7 +24,7 @@ class CF7 extends Addon_Base {
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
- return __( 'Happy CF7', 'happy_addons' );
28
  }
29
 
30
  /**
@@ -36,16 +36,16 @@ class CF7 extends Addon_Base {
36
  * @return string Widget icon.
37
  */
38
  public function get_icon() {
39
- return 'fa fa-smile-o';
40
  }
41
 
42
  public function get_keywords() {
43
  return [ 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
44
  }
45
 
46
- protected function _register_controls() {
47
  $this->start_controls_section(
48
- 'cf7',
49
  [
50
  'label' => ha_is_cf7_activated() ? __( 'Contact Form 7', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
@@ -68,7 +68,7 @@ class CF7 extends Addon_Base {
68
  }
69
 
70
  $this->add_control(
71
- 'id',
72
  [
73
  'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
@@ -88,11 +88,13 @@ class CF7 extends Addon_Base {
88
  );
89
 
90
  $this->end_controls_section();
 
91
 
 
92
  $this->start_controls_section(
93
- 'cf7-form-fields',
94
  [
95
- 'label' => __( 'Form Fields (Regular Style)', 'happy_addons' ),
96
  'tab' => Controls_Manager::TAB_STYLE,
97
  ]
98
  );
@@ -124,6 +126,7 @@ class CF7 extends Addon_Base {
124
  ],
125
  'selectors' => [
126
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'width: {{SIZE}}{{UNIT}};',
 
127
  ],
128
  ]
129
  );
@@ -131,11 +134,17 @@ class CF7 extends Addon_Base {
131
  $this->add_responsive_control(
132
  'field_margin',
133
  [
134
- 'label' => __( 'Margin', 'happy_addons' ),
135
- 'type' => Controls_Manager::DIMENSIONS,
136
- 'size_units' => [ 'px', '%' ],
 
 
 
 
 
 
137
  'selectors' => [
138
- '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
139
  ],
140
  ]
141
  );
@@ -152,14 +161,6 @@ class CF7 extends Addon_Base {
152
  ]
153
  );
154
 
155
- $this->add_group_control(
156
- Group_Control_Border::get_type(),
157
- [
158
- 'name' => 'field_border',
159
- 'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
160
- ]
161
- );
162
-
163
  $this->add_responsive_control(
164
  'field_border_radius',
165
  [
@@ -172,14 +173,6 @@ class CF7 extends Addon_Base {
172
  ]
173
  );
174
 
175
- $this->add_group_control(
176
- Group_Control_Box_Shadow::get_type(),
177
- [
178
- 'name' => 'field_box_shadow',
179
- 'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
180
- ]
181
- );
182
-
183
  $this->add_control(
184
  'hr',
185
  [
@@ -219,6 +212,31 @@ class CF7 extends Addon_Base {
219
  '{{WRAPPER}} ::-ms-input-placeholder' => 'color: {{VALUE}};',
220
  ],
221
  ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  );
223
 
224
  $this->add_control(
@@ -230,19 +248,18 @@ class CF7 extends Addon_Base {
230
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'background-color: {{VALUE}}',
231
  ],
232
  ]
233
- );
234
 
235
- $this->end_controls_section();
236
 
237
- $this->start_controls_section(
238
- 'cf7-form-fields-focus',
239
  [
240
- 'label' => __( 'Form Fields (Focus Style)', 'happy_addons' ),
241
- 'tab' => Controls_Manager::TAB_STYLE,
242
  ]
243
- );
244
 
245
- $this->add_group_control(
246
  Group_Control_Border::get_type(),
247
  [
248
  'name' => 'field_focus_border',
@@ -259,41 +276,9 @@ class CF7 extends Addon_Base {
259
  ],
260
  'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus',
261
  ]
262
- );
263
-
264
- $this->add_control(
265
- 'hr2',
266
- [
267
- 'type' => Controls_Manager::DIVIDER,
268
- 'style' => 'thick',
269
- ]
270
- );
271
-
272
- $this->add_control(
273
- 'field_focus_color',
274
- [
275
- 'label' => __( 'Text Color', 'happy_addons' ),
276
- 'type' => Controls_Manager::COLOR,
277
- 'selectors' => [
278
- '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus' => 'color: {{VALUE}}',
279
- ],
280
- ]
281
- );
282
-
283
- $this->add_control(
284
- 'field_focus_placeholder_color',
285
- [
286
- 'label' => __( 'Placeholder Text Color', 'happy_addons' ),
287
- 'type' => Controls_Manager::COLOR,
288
- 'selectors' => [
289
- '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus::-webkit-input-placeholder' => 'color: {{VALUE}};',
290
- '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus::-moz-placeholder' => 'color: {{VALUE}};',
291
- '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus::-ms-input-placeholder' => 'color: {{VALUE}};',
292
- ],
293
- ]
294
- );
295
 
296
- $this->add_control(
297
  'field_focus_bg_color',
298
  [
299
  'label' => __( 'Background Color', 'happy_addons' ),
@@ -304,7 +289,11 @@ class CF7 extends Addon_Base {
304
  ]
305
  );
306
 
307
- $this->end_controls_section();
 
 
 
 
308
 
309
  $this->start_controls_section(
310
  'cf7-form-label',
@@ -317,23 +306,17 @@ class CF7 extends Addon_Base {
317
  $this->add_responsive_control(
318
  'label_margin',
319
  [
320
- 'label' => __( 'Margin', 'happy_addons' ),
321
- 'type' => Controls_Manager::DIMENSIONS,
322
- 'size_units' => [ 'px', '%' ],
323
- 'selectors' => [
324
- '{{WRAPPER}} label' => 'display: inline-block; padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
 
 
 
325
  ],
326
- ]
327
- );
328
-
329
- $this->add_responsive_control(
330
- 'label_padding',
331
- [
332
- 'label' => __( 'Padding', 'happy_addons' ),
333
- 'type' => Controls_Manager::DIMENSIONS,
334
- 'size_units' => [ 'px', 'em', '%' ],
335
  'selectors' => [
336
- '{{WRAPPER}} label' => 'display: inline-block; padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
337
  ],
338
  ]
339
  );
@@ -512,9 +495,6 @@ class CF7 extends Addon_Base {
512
  [
513
  'label' => __( 'Border Color', 'happy_addons' ),
514
  'type' => Controls_Manager::COLOR,
515
- 'condition' => [
516
- 'btn_border_border!' => '',
517
- ],
518
  'selectors' => [
519
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'border-color: {{VALUE}};',
520
  ],
@@ -527,18 +507,18 @@ class CF7 extends Addon_Base {
527
  $this->end_controls_section();
528
  }
529
 
530
- protected function render() {
531
  if ( ! ha_is_cf7_activated() ) {
532
  return;
533
  }
534
 
535
  $settings = $this->get_settings_for_display();
536
 
537
- if ( ! empty( $settings['id'] ) ) {
538
  echo ha_do_shortcode( 'contact-form-7', [
539
- 'id' => $settings['id'],
540
  'html_class' => 'ha-cf7-form ' . ha_sanitize_html_class_param( $settings['html_class'] ),
541
- ] );
542
  }
543
  }
544
  }
1
  <?php
2
  /**
3
+ * Contact form 7 widget class
4
  *
5
  * @package Happy_Addons
6
  */
7
+ namespace Happy_Addons\Elementor\Widget;
8
 
9
  use Elementor\Controls_Manager;
10
  use Elementor\Group_Control_Border;
13
 
14
  defined( 'ABSPATH' ) || die();
15
 
16
+ class CF7 extends Base {
17
 
18
  /**
19
  * Get widget title.
24
  * @return string Widget title.
25
  */
26
  public function get_title() {
27
+ return __( 'Contact Form 7', 'happy_addons' );
28
  }
29
 
30
  /**
36
  * @return string Widget icon.
37
  */
38
  public function get_icon() {
39
+ return 'hm hm-form';
40
  }
41
 
42
  public function get_keywords() {
43
  return [ 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
44
  }
45
 
46
+ protected function register_content_controls() {
47
  $this->start_controls_section(
48
+ '_section_cf7',
49
  [
50
  'label' => ha_is_cf7_activated() ? __( 'Contact Form 7', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
51
  'tab' => Controls_Manager::TAB_CONTENT,
68
  }
69
 
70
  $this->add_control(
71
+ 'form_id',
72
  [
73
  'label' => __( 'Select Your Form', 'happy_addons' ),
74
  'type' => Controls_Manager::SELECT,
88
  );
89
 
90
  $this->end_controls_section();
91
+ }
92
 
93
+ protected function register_style_controls() {
94
  $this->start_controls_section(
95
+ '_section_fields_style',
96
  [
97
+ 'label' => __( 'Form Fields', 'happy_addons' ),
98
  'tab' => Controls_Manager::TAB_STYLE,
99
  ]
100
  );
126
  ],
127
  'selectors' => [
128
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'width: {{SIZE}}{{UNIT}};',
129
+ '{{WRAPPER}} .ha-cf7-form label' => 'width: {{SIZE}}{{UNIT}};',
130
  ],
131
  ]
132
  );
134
  $this->add_responsive_control(
135
  'field_margin',
136
  [
137
+ 'label' => __( 'Spacing Bottom', 'happy_addons' ),
138
+ 'type' => Controls_Manager::SLIDER,
139
+ 'size_units' => [ 'px' ],
140
+ 'range' => [
141
+ 'px' => [
142
+ 'min' => 0,
143
+ 'max' => 100,
144
+ ],
145
+ ],
146
  'selectors' => [
147
+ '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'margin-bottom: {{SIZE}}{{UNIT}};',
148
  ],
149
  ]
150
  );
161
  ]
162
  );
163
 
 
 
 
 
 
 
 
 
164
  $this->add_responsive_control(
165
  'field_border_radius',
166
  [
173
  ]
174
  );
175
 
 
 
 
 
 
 
 
 
176
  $this->add_control(
177
  'hr',
178
  [
212
  '{{WRAPPER}} ::-ms-input-placeholder' => 'color: {{VALUE}};',
213
  ],
214
  ]
215
+ );
216
+
217
+ $this->start_controls_tabs( 'tabs_field_state' );
218
+
219
+ $this->start_controls_tab(
220
+ 'tab_field_normal',
221
+ [
222
+ 'label' => __( 'Normal', 'happy_addons' ),
223
+ ]
224
+ );
225
+
226
+ $this->add_group_control(
227
+ Group_Control_Border::get_type(),
228
+ [
229
+ 'name' => 'field_border',
230
+ 'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
231
+ ]
232
+ );
233
+
234
+ $this->add_group_control(
235
+ Group_Control_Box_Shadow::get_type(),
236
+ [
237
+ 'name' => 'field_box_shadow',
238
+ 'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)',
239
+ ]
240
  );
241
 
242
  $this->add_control(
248
  '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'background-color: {{VALUE}}',
249
  ],
250
  ]
251
+ );
252
 
253
+ $this->end_controls_tab();
254
 
255
+ $this->start_controls_tab(
256
+ 'tab_field_focus',
257
  [
258
+ 'label' => __( 'Focus', 'happy_addons' ),
 
259
  ]
260
+ );
261
 
262
+ $this->add_group_control(
263
  Group_Control_Border::get_type(),
264
  [
265
  'name' => 'field_focus_border',
276
  ],
277
  'selector' => '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit):focus',
278
  ]
279
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
 
281
+ $this->add_control(
282
  'field_focus_bg_color',
283
  [
284
  'label' => __( 'Background Color', 'happy_addons' ),
289
  ]
290
  );
291
 
292
+ $this->end_controls_tab();
293
+ $this->end_controls_tabs();
294
+
295
+ $this->end_controls_section();
296
+
297
 
298
  $this->start_controls_section(
299
  'cf7-form-label',
306
  $this->add_responsive_control(
307
  'label_margin',
308
  [
309
+ 'label' => __( 'Spacing Bottom', 'happy_addons' ),
310
+ 'type' => Controls_Manager::SLIDER,
311
+ 'size_units' => [ 'px' ],
312
+ 'range' => [
313
+ 'px' => [
314
+ 'min' => 0,
315
+ 'max' => 100,
316
+ ],
317
  ],
 
 
 
 
 
 
 
 
 
318
  'selectors' => [
319
+ '{{WRAPPER}} .wpcf7-form-control:not(.wpcf7-submit)' => 'margin-top: {{SIZE}}{{UNIT}};',
320
  ],
321
  ]
322
  );
495
  [
496
  'label' => __( 'Border Color', 'happy_addons' ),
497
  'type' => Controls_Manager::COLOR,
 
 
 
498
  'selectors' => [
499
  '{{WRAPPER}} .wpcf7-submit:hover, {{WRAPPER}} .wpcf7-submit:focus' => 'border-color: {{VALUE}};',
500
  ],
507
  $this->end_controls_section();
508
  }
509
 
510
+ protected function render() {
511
  if ( ! ha_is_cf7_activated() ) {
512
  return;
513
  }
514
 
515
  $settings = $this->get_settings_for_display();
516
 
517
+ if ( ! empty( $settings['form_id'] ) ) {
518
  echo ha_do_shortcode( 'contact-form-7', [
519
+ 'id' => $settings['form_id'],
520
  'html_class' => 'ha-cf7-form ' . ha_sanitize_html_class_param( $settings['html_class'] ),
521
+ ] );
522
  }
523
  }
524
  }
widgets/gradient-heading/widget.php ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Gradient Heading widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Group_Control_Text_Shadow;
11
+ use Elementor\Group_Control_Typography;
12
+ use Elementor\Scheme_Typography;
13
+ use Happy_Addons\Elementor\Controls\Group_Control_Foreground;
14
+
15
+ defined( 'ABSPATH' ) || die();
16
+
17
+ class Gradient_Heading extends Base {
18
+
19
+ /**
20
+ * Get widget title.
21
+ *
22
+ * @since 1.0.0
23
+ * @access public
24
+ *
25
+ * @return string Widget title.
26
+ */
27
+ public function get_title() {
28
+ return __( 'Gradient Heading', 'happy_addons' );
29
+ }
30
+
31
+ /**
32
+ * Get widget icon.
33
+ *
34
+ * @since 1.0.0
35
+ * @access public
36
+ *
37
+ * @return string Widget icon.
38
+ */
39
+ public function get_icon() {
40
+ return 'hm hm-spark';
41
+ }
42
+
43
+ public function get_keywords() {
44
+ return [ 'gradient', 'advanced', 'heading', 'title', 'colorful' ];
45
+ }
46
+
47
+ protected function register_content_controls() {
48
+ $this->start_controls_section(
49
+ '_section_title',
50
+ [
51
+ 'label' => __( 'Title', 'happy_addons' ),
52
+ 'tab' => Controls_Manager::TAB_CONTENT,
53
+ ]
54
+ );
55
+
56
+ $this->add_control(
57
+ 'title',
58
+ [
59
+ 'label' => __( 'Title', 'happy_addons' ),
60
+ 'type' => Controls_Manager::TEXTAREA,
61
+ 'default' => __( 'Happy Gradient Heading', 'happy_addons' ),
62
+ 'placeholder' => __( 'Type Gradient Heading Text', 'happy_addons' ),
63
+ ]
64
+ );
65
+
66
+ $this->add_control(
67
+ 'link',
68
+ [
69
+ 'label' => __( 'Link', 'happy_addons' ),
70
+ 'type' => Controls_Manager::URL,
71
+ 'separator' => 'before',
72
+ 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
73
+ ]
74
+ );
75
+
76
+ $this->add_control(
77
+ 'title_tag',
78
+ [
79
+ 'label' => __( 'Title HTML Tag', 'happy_addons' ),
80
+ 'type' => Controls_Manager::CHOOSE,
81
+ 'options' => [
82
+ 'h1' => [
83
+ 'title' => __( 'H1', 'happy_addons' ),
84
+ 'icon' => 'eicon-editor-h1'
85
+ ],
86
+ 'h2' => [
87
+ 'title' => __( 'H2', 'happy_addons' ),
88
+ 'icon' => 'eicon-editor-h2'
89
+ ],
90
+ 'h3' => [
91
+ 'title' => __( 'H3', 'happy_addons' ),
92
+ 'icon' => 'eicon-editor-h3'
93
+ ],
94
+ 'h4' => [
95
+ 'title' => __( 'H4', 'happy_addons' ),
96
+ 'icon' => 'eicon-editor-h4'
97
+ ],
98
+ 'h5' => [
99
+ 'title' => __( 'H5', 'happy_addons' ),
100
+ 'icon' => 'eicon-editor-h5'
101
+ ],
102
+ 'h6' => [
103
+ 'title' => __( 'H6', 'happy_addons' ),
104
+ 'icon' => 'eicon-editor-h6'
105
+ ]
106
+ ],
107
+ 'default' => 'h2',
108
+ 'toggle' => false,
109
+ ]
110
+ );
111
+
112
+ $this->add_responsive_control(
113
+ 'align',
114
+ [
115
+ 'label' => __( 'Alignment', 'happy_addons' ),
116
+ 'type' => Controls_Manager::CHOOSE,
117
+ 'options' => [
118
+ 'left' => [
119
+ 'title' => __( 'Left', 'happy_addons' ),
120
+ 'icon' => 'fa fa-align-left',
121
+ ],
122
+ 'center' => [
123
+ 'title' => __( 'Center', 'happy_addons' ),
124
+ 'icon' => 'fa fa-align-center',
125
+ ],
126
+ 'right' => [
127
+ 'title' => __( 'Right', 'happy_addons' ),
128
+ 'icon' => 'fa fa-align-right',
129
+ ],
130
+ 'justify' => [
131
+ 'title' => __( 'Justify', 'happy_addons' ),
132
+ 'icon' => 'fa fa-align-justify',
133
+ ],
134
+ ],
135
+ 'toggle' => true,
136
+ 'selectors' => [
137
+ '{{WRAPPER}}' => 'text-align: {{VALUE}}'
138
+ ]
139
+ ]
140
+ );
141
+
142
+ $this->end_controls_section();
143
+ }
144
+
145
+ protected function register_style_controls() {
146
+ $this->start_controls_section(
147
+ '_section_style_title',
148
+ [
149
+ 'label' => __( 'Title', 'happy_addons' ),
150
+ 'tab' => Controls_Manager::TAB_STYLE,
151
+ ]
152
+ );
153
+
154
+ $this->add_group_control(
155
+ Group_Control_Foreground::get_type(),
156
+ [
157
+ 'name' => 'title',
158
+ 'selector' => '{{WRAPPER}} .ha-gradient-heading',
159
+ ]
160
+ );
161
+
162
+ $this->add_group_control(
163
+ Group_Control_Typography::get_type(),
164
+ [
165
+ 'name' => 'title',
166
+ 'selector' => '{{WRAPPER}} .ha-gradient-heading',
167
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_1,
168
+ ]
169
+ );
170
+
171
+ $this->add_group_control(
172
+ Group_Control_Text_Shadow::get_type(),
173
+ [
174
+ 'name' => 'title',
175
+ 'label' => __( 'Text Shadow', 'happy_addons' ),
176
+ 'selector' => '{{WRAPPER}} .ha-gradient-heading',
177
+ ]
178
+ );
179
+
180
+ $this->add_control(
181
+ 'blend_mode',
182
+ [
183
+ 'label' => __( 'Blend Mode', 'happy_addons' ),
184
+ 'type' => Controls_Manager::SELECT,
185
+ 'options' => [
186
+ '' => __( 'Normal', 'happy_addons' ),
187
+ 'multiply' => 'Multiply',
188
+ 'screen' => 'Screen',
189
+ 'overlay' => 'Overlay',
190
+ 'darken' => 'Darken',
191
+ 'lighten' => 'Lighten',
192
+ 'color-dodge' => 'Color Dodge',
193
+ 'saturation' => 'Saturation',
194
+ 'color' => 'Color',
195
+ 'difference' => 'Difference',
196
+ 'exclusion' => 'Exclusion',
197
+ 'hue' => 'Hue',
198
+ 'luminosity' => 'Luminosity',
199
+ ],
200
+ 'selectors' => [
201
+ '{{WRAPPER}} .ha-gradient-heading' => 'mix-blend-mode: {{VALUE}}',
202
+ ],
203
+ 'separator' => 'none',
204
+ ]
205
+ );
206
+
207
+ $this->end_controls_section();
208
+ }
209
+
210
+ protected function render() {
211
+ $settings = $this->get_settings_for_display();
212
+
213
+ $this->add_inline_editing_attributes( 'title', 'basic' );
214
+ $this->add_render_attribute( 'title', 'class', 'ha-gradient-heading' );
215
+
216
+ $title = wp_kses_post( $settings['title' ] );
217
+
218
+ if ( ! empty( $settings['link']['url'] ) ) {
219
+ $this->add_render_attribute( 'link', 'href', esc_url( $settings['link']['url'] ) );
220
+ if ( ! empty( $settings['link']['is_external'] ) ) {
221
+ $this->add_render_attribute( 'link', 'target', '_blank' );
222
+ }
223
+
224
+ if ( ! empty( $settings['link']['nofollow'] ) ) {
225
+ $this->set_render_attribute( 'link', 'rel', 'nofollow' );
226
+ }
227
+
228
+ $title = sprintf( '<a %s>%s</a>',
229
+ $this->get_render_attribute_string( 'link' ),
230
+ $title
231
+ );
232
+ }
233
+
234
+ printf( '<%1$s %2$s>%3$s</%1$s>',
235
+ tag_escape( $settings['title_tag'] ),
236
+ $this->get_render_attribute_string( 'title' ),
237
+ $title
238
+ );
239
+ }
240
+
241
+ public function _content_template() {
242
+ ?>
243
+ <#
244
+ view.addInlineEditingAttributes( 'title', 'none' );
245
+ view.addRenderAttribute( 'title', 'class', 'ha-gradient-heading' );
246
+
247
+ var title = _.isEmpty(settings.link.url) ? settings.title : '<a href="'+settings.link.url+'">'+settings.title+'</a>';
248
+ #>
249
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{{ title }}}</{{ settings.title_tag }}>
250
+ <?php
251
+ }
252
+ }
widgets/icon-box/widget.php ADDED
@@ -0,0 +1,753 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Icon Box widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Group_Control_Border;
11
+ use Elementor\Group_Control_Box_Shadow;
12
+ use Elementor\Group_Control_Text_Shadow;
13
+ use Elementor\Group_Control_Typography;
14
+ use Elementor\Scheme_Typography;
15
+
16
+ defined( 'ABSPATH' ) || die();
17
+
18
+ class Icon_Box extends Base {
19
+
20
+ /**
21
+ * Get widget title.
22
+ *
23
+ * @since 1.0.0
24
+ * @access public
25
+ *
26
+ * @return string Widget title.
27
+ */
28
+ public function get_title() {
29
+ return __( 'Icon Box', 'happy_addons' );
30
+ }
31
+
32
+ /**
33
+ * Get widget icon.
34
+ *
35
+ * @since 1.0.0
36
+ * @access public
37
+ *
38
+ * @return string Widget icon.
39
+ */
40
+ public function get_icon() {
41
+ return 'hm hm-icon-box';
42
+ }
43
+
44
+ public function get_keywords() {
45
+ return [ 'info', 'box', 'icon' ];
46
+ }
47
+
48
+ protected function register_content_controls() {
49
+ $this->start_controls_section(
50
+ '_section_icon',
51
+ [
52
+ 'label' => __( 'Content', 'happy_addons' ),
53
+ 'tab' => Controls_Manager::TAB_CONTENT,
54
+ ]
55
+ );
56
+
57
+ $this->add_control(
58
+ 'icon',
59
+ [
60
+ 'show_label' => false,
61
+ 'type' => Controls_Manager::ICON,
62
+ 'label_block' => true,
63
+ 'options' => ha_get_happy_icons(),
64
+ 'default' => 'fa fa-smile-o',
65
+ ]
66
+ );
67
+
68
+ $this->add_control(
69
+ 'title',
70
+ [
71
+ 'label' => __( 'Title', 'happy_addons' ),
72
+ 'type' => Controls_Manager::TEXT,
73
+ 'label_block' => true,
74
+ 'default' => __( 'Happy Icon Box', 'happy_addons' ),
75
+ 'placeholder' => __( 'Type Icon Box Title', 'happy_addons' ),
76
+ ]
77
+ );
78
+
79
+ $this->add_control(
80
+ 'badge_text',
81
+ [
82
+ 'label' => __( 'Badge Text', 'happy_addons' ),
83
+ 'type' => Controls_Manager::TEXT,
84
+ 'label_block' => true,
85
+ 'placeholder' => __( 'Type Icon Badge Text', 'happy_addons' ),
86
+ ]
87
+ );
88
+
89
+ $this->add_control(
90
+ 'link',
91
+ [
92
+ 'label' => __( 'Box Link', 'happy_addons' ),
93
+ 'separator' => 'before',
94
+ 'type' => Controls_Manager::URL,
95
+ 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
96
+ ]
97
+ );
98
+
99
+ $this->add_control(
100
+ 'title_tag',
101
+ [
102
+ 'label' => __( 'Title HTML Tag', 'happy_addons' ),
103
+ 'type' => Controls_Manager::CHOOSE,
104
+ 'separator' => 'before',
105
+ 'options' => [
106
+ 'h1' => [
107
+ 'title' => __( 'H1', 'happy_addons' ),
108
+ 'icon' => 'eicon-editor-h1'
109
+ ],
110
+ 'h2' => [
111
+ 'title' => __( 'H2', 'happy_addons' ),
112
+ 'icon' => 'eicon-editor-h2'
113
+ ],
114
+ 'h3' => [
115
+ 'title' => __( 'H3', 'happy_addons' ),
116
+ 'icon' => 'eicon-editor-h3'
117
+ ],
118
+ 'h4' => [
119
+ 'title' => __( 'H4', 'happy_addons' ),
120
+ 'icon' => 'eicon-editor-h4'
121
+ ],
122
+ 'h5' => [
123
+ 'title' => __( 'H5', 'happy_addons' ),
124
+ 'icon' => 'eicon-editor-h5'
125
+ ],
126
+ 'h6' => [
127
+ 'title' => __( 'H6', 'happy_addons' ),
128
+ 'icon' => 'eicon-editor-h6'
129
+ ]
130
+ ],
131
+ 'default' => 'h2',
132
+ 'toggle' => false,
133
+ ]
134
+ );
135
+
136
+ $this->add_responsive_control(
137
+ 'align',
138
+ [
139
+ 'label' => __( 'Alignment', 'happy_addons' ),
140
+ 'type' => Controls_Manager::CHOOSE,
141
+ 'options' => [
142
+ 'left' => [
143
+ 'title' => __( 'Left', 'happy_addons' ),
144
+ 'icon' => 'fa fa-align-left',
145
+ ],
146
+ 'center' => [
147
+ 'title' => __( 'Center', 'happy_addons' ),
148
+ 'icon' => 'fa fa-align-center',
149
+ ],
150
+ 'right' => [
151
+ 'title' => __( 'Right', 'happy_addons' ),
152
+ 'icon' => 'fa fa-align-right',
153
+ ],
154
+ 'justify' => [
155
+ 'title' => __( 'Justify', 'happy_addons' ),
156
+ 'icon' => 'fa fa-align-justify',
157
+ ],
158
+ ],
159
+ 'toggle' => true,
160
+ 'selectors' => [
161
+ '{{WRAPPER}}' => 'text-align: {{VALUE}}'
162
+ ]
163
+ ]
164
+ );
165
+
166
+ $this->end_controls_section();
167
+ }
168
+
169
+ protected function register_style_controls() {
170
+ $this->start_controls_section(
171
+ '_section_style_icon',
172
+ [
173
+ 'label' => __( 'Icon', 'happy_addons' ),
174
+ 'tab' => Controls_Manager::TAB_STYLE,
175
+ ]
176
+ );
177
+
178
+ $this->add_responsive_control(
179
+ 'icon_size',
180
+ [
181
+ 'label' => __( 'Size', 'happy_addons' ),
182
+ 'type' => Controls_Manager::SLIDER,
183
+ 'size_units' => [ 'px' ],
184
+ 'range' => [
185
+ 'px' => [
186
+ 'min' => 10,
187
+ 'max' => 300,
188
+ ],
189
+ ],
190
+ 'selectors' => [
191
+ '{{WRAPPER}} .ha-icon-box-icon' => 'font-size: {{SIZE}}{{UNIT}};',
192
+ ],
193
+ ]
194
+ );
195
+
196
+ $this->add_responsive_control(
197
+ 'icon_padding',
198
+ [
199
+ 'label' => __( 'Padding', 'happy_addons' ),
200
+ 'type' => Controls_Manager::SLIDER,
201
+ 'size_units' => ['px'],
202
+ 'selectors' => [
203
+ '{{WRAPPER}} .ha-icon-box-icon' => 'padding: {{SIZE}}{{UNIT}};',
204
+ ],
205
+ ]
206
+ );
207
+
208
+ $this->add_responsive_control(
209
+ 'icon_spacing',
210
+ [
211
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
212
+ 'type' => Controls_Manager::SLIDER,
213
+ 'size_units' => ['px'],
214
+ 'range' => [
215
+ 'px' => [
216
+ 'max' => 150,
217
+ ]
218
+ ],
219
+ 'selectors' => [
220
+ '{{WRAPPER}} .ha-icon-box-icon' => 'margin-bottom: {{SIZE}}{{UNIT}};',
221
+ ],
222
+ ]
223
+ );
224
+
225
+ $this->add_group_control(
226
+ Group_Control_Border::get_type(),
227
+ [
228
+ 'name' => 'icon_border',
229
+ 'selector' => '{{WRAPPER}} .ha-icon-box-icon'
230
+ ]
231
+ );
232
+
233
+ $this->add_responsive_control(
234
+ 'icon_border_radius',
235
+ [
236
+ 'label' => __( 'Border Radius', 'happy_addons' ),
237
+ 'type' => Controls_Manager::DIMENSIONS,
238
+ 'size_units' => [ 'px', '%' ],
239
+ 'selectors' => [
240
+ '{{WRAPPER}} .ha-icon-box-icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
241
+ ],
242
+ ]
243
+ );
244
+
245
+ $this->add_group_control(
246
+ Group_Control_Box_Shadow::get_type(),
247
+ [
248
+ 'name' => 'icon_shadow',
249
+ 'exclude' => [
250
+ 'box_shadow_position',
251
+ ],
252
+ 'selector' => '{{WRAPPER}} .ha-icon-box-icon'
253
+ ]
254
+ );
255
+
256
+ $this->start_controls_tabs( '_tabs_icon' );
257
+
258
+ $this->start_controls_tab(
259
+ '_tab_icon_normal',
260
+ [
261
+ 'label' => __( 'Normal', 'happy_addons' ),
262
+ ]
263
+ );
264
+
265
+ $this->add_control(
266
+ 'icon_color',
267
+ [
268
+ 'label' => __( 'Color', 'happy_addons' ),
269
+ 'type' => Controls_Manager::COLOR,
270
+ 'selectors' => [
271
+ '{{WRAPPER}} .ha-icon-box-icon' => 'color: {{VALUE}}',
272
+ ],
273
+ ]
274
+ );
275
+
276
+ $this->add_control(
277
+ 'icon_bg_color',
278
+ [
279
+ 'label' => __( 'Background Color', 'happy_addons' ),
280
+ 'type' => Controls_Manager::COLOR,
281
+ 'selectors' => [
282
+ '{{WRAPPER}} .ha-icon-box-icon' => 'background-color: {{VALUE}}',
283
+ ],
284
+ ]
285
+ );
286
+
287
+ $this->add_control(
288
+ 'icon_bg_rotate',
289
+ [
290
+ 'label' => __( 'Rotate Icon Box', 'happy_addons' ),
291
+ 'type' => Controls_Manager::SLIDER,
292
+ 'size_units' => [ 'deg' ],
293
+ 'default' => [
294
+ 'unit' => 'deg',
295
+ ],
296
+ 'range' => [
297
+ 'deg' => [
298
+ 'min' => 0,
299
+ 'max' => 360,
300
+ ],
301
+ ],
302
+ 'selectors' => [
303
+ '{{WRAPPER}} .ha-icon-box-icon' => '-webkit-transform: rotate({{SIZE}}{{UNIT}}); transform: rotate({{SIZE}}{{UNIT}});',
304
+ '{{WRAPPER}} .ha-icon-box-icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});',
305
+ ],
306
+ 'condition' => [
307
+ 'icon_bg_color!' => '',
308
+ ]
309
+ ]
310
+ );
311
+
312
+ $this->end_controls_tab();
313
+
314
+ $this->start_controls_tab(
315
+ '_tab_button_hover',
316
+ [
317
+ 'label' => __( 'Hover', 'happy_addons' ),
318
+ ]
319
+ );
320
+
321
+ $this->add_control(
322
+ 'icon_hover_color',
323
+ [
324
+ 'label' => __( 'Color', 'happy_addons' ),
325
+ 'type' => Controls_Manager::COLOR,
326
+ 'selectors' => [
327
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'color: {{VALUE}}',
328
+ ],
329
+ ]
330
+ );
331
+
332
+ $this->add_control(
333
+ 'icon_hover_bg_color',
334
+ [
335
+ 'label' => __( 'Background Color', 'happy_addons' ),
336
+ 'type' => Controls_Manager::COLOR,
337
+ 'selectors' => [
338
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'background-color: {{VALUE}}',
339
+ ],
340
+ ]
341
+ );
342
+
343
+ $this->add_control(
344
+ 'icon_hover_border_color',
345
+ [
346
+ 'label' => __( 'Border Color', 'happy_addons' ),
347
+ 'type' => Controls_Manager::COLOR,
348
+ 'selectors' => [
349
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => 'border-color: {{VALUE}}',
350
+ ],
351
+ 'condition' => [
352
+ 'icon_border_border!' => '',
353
+ ]
354
+ ]
355
+ );
356
+
357
+ $this->add_control(
358
+ 'icon_hover_bg_rotate',
359
+ [
360
+ 'label' => __( 'Rotate Icon Box', 'happy_addons' ),
361
+ 'type' => Controls_Manager::SLIDER,
362
+ 'size_units' => [ 'deg' ],
363
+ 'default' => [
364
+ 'unit' => 'deg',
365
+ ],
366
+ 'range' => [
367
+ 'deg' => [
368
+ 'min' => 0,
369
+ 'max' => 360,
370
+ ],
371
+ ],
372
+ 'selectors' => [
373
+ '{{WRAPPER}}:hover .ha-icon-box-icon' => '-webkit-transform: rotate({{SIZE}}{{UNIT}}); transform: rotate({{SIZE}}{{UNIT}});',
374
+ '{{WRAPPER}}:hover .ha-icon-box-icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});',
375
+ ],
376
+ 'condition' => [
377
+ 'icon_bg_color!' => '',
378
+ ]
379
+ ]
380
+ );
381
+
382
+ $this->end_controls_tab();
383
+ $this->end_controls_tabs();
384
+
385
+ $this->end_controls_section();
386
+
387
+ $this->start_controls_section(
388
+ '_section_style_title',
389
+ [
390
+ 'label' => __( 'Title', 'happy_addons' ),
391
+ 'tab' => Controls_Manager::TAB_STYLE,
392
+ ]
393
+ );
394
+
395
+ $this->add_group_control(
396
+ Group_Control_Typography::get_type(),
397
+ [
398
+ 'name' => 'title',
399
+ 'selector' => '{{WRAPPER}} .ha-icon-box-title',
400
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_2
401
+ ]
402
+ );
403
+
404
+ $this->add_group_control(
405
+ Group_Control_Text_Shadow::get_type(),
406
+ [
407
+ 'name' => 'title',
408
+ 'selector' => '{{WRAPPER}} .ha-icon-box-title',
409
+ ]
410
+ );
411
+
412
+ $this->start_controls_tabs( '_tabs_title' );
413
+
414
+ $this->start_controls_tab(
415
+ '_tab_title_normal',
416
+ [
417
+ 'label' => __( 'Normal', 'happy_addons' ),
418
+ ]
419
+ );
420
+
421
+ $this->add_control(
422
+ 'title_color',
423
+ [
424
+ 'label' => __( 'Text Color', 'happy_addons' ),
425
+ 'type' => Controls_Manager::COLOR,
426
+ 'selectors' => [
427
+ '{{WRAPPER}} .ha-icon-box-title' => 'color: {{VALUE}}',
428
+ ],
429
+ ]
430
+ );
431
+
432
+ $this->end_controls_tab();
433
+
434
+ $this->start_controls_tab(
435
+ '_tab_title_hover',
436
+ [
437
+ 'label' => __( 'Hover', 'happy_addons' ),
438
+ ]
439
+ );
440
+
441
+ $this->add_control(
442
+ 'title_hover_color',
443
+ [
444
+ 'label' => __( 'Text Color', 'happy_addons' ),
445
+ 'type' => Controls_Manager::COLOR,
446
+ 'selectors' => [
447
+ '{{WRAPPER}}:hover .ha-icon-box-title' => 'color: {{VALUE}}',
448
+ ],
449
+ ]
450
+ );
451
+
452
+ $this->end_controls_tab();
453
+ $this->end_controls_tabs();
454
+
455
+ $this->end_controls_section();
456
+
457
+ $this->start_controls_section(
458
+ '_section_style_badge',
459
+ [
460
+ 'label' => __( 'Badge', 'happy_addons' ),
461
+ 'tab' => Controls_Manager::TAB_STYLE,
462
+ ]
463
+ );
464
+
465
+ $this->add_control(
466
+ 'badge_offset_toggle',
467
+ [
468
+ 'label' => __( 'Offset', 'happy_addons' ),
469
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
470
+ 'label_off' => __( 'None', 'happy_addons' ),
471
+ 'label_on' => __( 'Custom', 'happy_addons' ),
472
+ 'return_value' => 'yes',
473
+ ]
474
+ );
475
+
476
+ $this->start_popover();
477
+
478
+ $this->add_responsive_control(
479
+ 'badge_offset_x',
480
+ [
481
+ 'label' => __( 'Offset Left', 'happy_addons' ),
482
+ 'type' => Controls_Manager::SLIDER,
483
+ 'size_units' => ['px'],
484
+ 'condition' => [
485
+ 'badge_offset_toggle' => 'yes'
486
+ ],
487
+ 'default' => [
488
+ 'size' => 1
489
+ ],
490
+ 'range' => [
491
+ 'px' => [
492
+ 'min' => -250,
493
+ 'max' => 250,
494
+ ],
495
+ ],
496
+ 'render_type' => 'ui'
497
+ ]
498
+ );
499
+
500
+ $this->add_responsive_control(
501
+ 'badge_offset_y',
502
+ [
503
+ 'label' => __( 'Offset Top', 'happy_addons' ),
504
+ 'type' => Controls_Manager::SLIDER,
505
+ 'size_units' => ['px'],
506
+ 'condition' => [
507
+ 'badge_offset_toggle' => 'yes'
508
+ ],
509
+ 'default' => [
510
+ 'size' => 1
511
+ ],
512
+ 'range' => [
513
+ 'px' => [
514
+ 'min' => -250,
515
+ 'max' => 250,
516
+ ],
517
+ ],
518
+ 'selectors' => [
519
+ '{{WRAPPER}} .ha-badge' => '-ms-transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); -webkit-transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); transform: translate({{badge_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}});',
520
+ ],
521
+ ]
522
+ );
523
+ $this->end_popover();
524
+
525
+ $this->add_responsive_control(
526
+ 'badge_padding',
527
+ [
528
+ 'label' => __( 'Padding', 'happy_addons' ),
529
+ 'type' => Controls_Manager::DIMENSIONS,
530
+ 'size_units' => [ 'px', 'em', '%' ],
531
+ 'selectors' => [
532
+ '{{WRAPPER}} .ha-badge' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
533
+ ],
534
+ ]
535
+ );
536
+
537
+ $this->add_control(
538
+ 'badge_color',
539
+ [
540
+ 'label' => __( 'Text Color', 'happy_addons' ),
541
+ 'type' => Controls_Manager::COLOR,
542
+ 'selectors' => [
543
+ '{{WRAPPER}} .ha-badge' => 'color: {{VALUE}}',
544
+ ],
545
+ ]
546
+ );
547
+
548
+ $this->add_control(
549
+ 'badge_bg_color',
550
+ [
551
+ 'label' => __( 'Background Color', 'happy_addons' ),
552
+ 'type' => Controls_Manager::COLOR,
553
+ 'selectors' => [
554
+ '{{WRAPPER}} .ha-badge' => 'background-color: {{VALUE}}',
555
+ ],
556
+ ]
557
+ );
558
+
559
+ $this->add_group_control(
560
+ Group_Control_Border::get_type(),
561
+ [
562
+ 'name' => 'badge_border',
563
+ 'selector' => '{{WRAPPER}} .ha-badge',
564
+ ]
565
+ );
566
+
567
+ $this->add_responsive_control(
568
+ 'badge_border_radius',
569
+ [
570
+ 'label' => __( 'Border Radius', 'happy_addons' ),
571
+ 'type' => Controls_Manager::DIMENSIONS,
572
+ 'size_units' => [ 'px', '%' ],
573
+ 'selectors' => [
574
+ '{{WRAPPER}} .ha-badge' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
575
+ ],
576
+ ]
577
+ );
578
+
579
+ $this->add_group_control(
580
+ Group_Control_Box_Shadow::get_type(),
581
+ [
582
+ 'name' => 'badge_box_shadow',
583
+ 'exclude' => [
584
+ 'box_shadow_position',
585
+ ],
586
+ 'selector' => '{{WRAPPER}} .ha-badge',
587
+ ]
588
+ );
589
+
590
+ $this->add_group_control(
591
+ Group_Control_Typography::get_type(),
592
+ [
593
+ 'name' => 'badge_typography',
594
+ 'label' => __( 'Typography', 'happy_addons' ),
595
+ 'exclude' => [
596
+ 'font_family',
597
+ 'line_height'
598
+ ],
599
+ 'default' => [
600
+ 'font_size' => ['']
601
+ ],
602
+ 'selector' => '{{WRAPPER}} .ha-badge',
603
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
604
+ ]
605
+ );
606
+
607
+ $this->end_controls_section();
608
+ }
609
+
610
+ /**
611
+ * Render widget output on the frontend.
612
+ *
613
+ * Used to generate the final HTML displayed on the frontend.
614
+ *
615
+ * Note that if skin is selected, it will be rendered by the skin itself,
616
+ * not the widget.
617
+ *
618
+ * @since 1.0.0
619
+ * @access public
620
+ */
621
+ public function render_content() {
622
+ /**
623
+ * Before widget render content.
624
+ *
625
+ * Fires before Elementor widget is being rendered.
626
+ *
627
+ * @since 1.0.0
628
+ *
629
+ * @param Widget_Base $this The current widget.
630
+ */
631
+ do_action( 'elementor/widget/before_render_content', $this );
632
+
633
+ ob_start();
634
+
635
+ $skin = $this->get_current_skin();
636
+ if ( $skin ) {
637
+ $skin->set_parent( $this );
638
+ $skin->render();
639
+ } else {
640
+ $this->render();
641
+ }
642
+
643
+ $widget_content = ob_get_clean();
644
+
645
+ if ( empty( $widget_content ) ) {
646
+ return;
647
+ }
648
+
649
+ if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
650
+ $this->render_edit_tools();
651
+ }
652
+
653
+ $tag = 'div';
654
+ $link = $this->get_settings_for_display( 'link' );
655
+ $this->add_render_attribute( 'icon_box', 'class', 'elementor-widget-container' );
656
+
657
+ if ( ! empty( $link['url'] ) ) {
658
+ $tag = 'a';
659
+ $this->add_render_attribute( 'icon_box', 'class', 'ha-icon-box-link' );
660
+ $this->add_render_attribute( 'icon_box', 'href', esc_url( $link['url'] ) );
661
+ if ( ! empty ( $link['is_external'] ) ) {
662
+ $this->add_render_attribute( 'icon_box', 'target', '_blank' );
663
+ }
664
+ if ( ! empty( $link['nofollow'] ) ) {
665
+ $this->set_render_attribute( 'icon_box', 'rel', 'nofollow' );
666
+ }
667
+ }
668
+ ?>
669
+ <<?php echo $tag; ?> <?php echo $this->get_render_attribute_string( 'icon_box' ); ?>>
670
+ <?php
671
+
672
+ /**
673
+ * Render widget content.
674
+ *
675
+ * Filters the widget content before it's rendered.
676
+ *
677
+ * @since 1.0.0
678
+ *
679
+ * @param string $widget_content The content of the widget.
680
+ * @param Widget_Base $this The widget.
681
+ */
682
+ $widget_content = apply_filters( 'elementor/widget/render_content', $widget_content, $this );
683
+
684
+ echo $widget_content; // XSS ok.
685
+ ?>
686
+ </<?php echo $tag; ?>>
687
+ <?php
688
+ }
689
+
690
+ protected function render() {
691
+ $settings = $this->get_settings_for_display();
692
+
693
+ $this->add_inline_editing_attributes( 'title', 'none' );
694
+ $this->add_render_attribute( 'title', 'class', 'ha-icon-box-title' );
695
+
696
+ $this->add_inline_editing_attributes( 'badge_text', 'none' );
697
+ $this->add_render_attribute( 'badge_text', 'class', 'ha-badge ha-badge--top-right' );
698
+ ?>
699
+
700
+ <?php if ( $settings['badge_text'] ) : ?>
701
+ <span <?php echo $this->get_render_attribute_string( 'badge_text' ); ?>><?php echo esc_html( $settings['badge_text'] ); ?></span>
702
+ <?php endif; ?>
703
+
704
+ <?php if ( $settings['icon'] ) : ?>
705
+ <span class="ha-icon-box-icon">
706
+ <i aria-hidden="true" class="<?php echo esc_attr( $settings['icon'] ); ?>"></i>
707
+ </span>
708
+ <?php endif; ?>
709
+
710
+ <?php
711
+ if ( $settings['title' ] ) :
712
+ printf( '<%1$s %2$s>%3$s</%1$s>',
713
+ tag_escape( $settings['title_tag'] ),
714
+ $this->get_render_attribute_string( 'title' ),
715
+ esc_html( $settings['title' ] )
716
+ );
717
+ endif;
718
+ }
719
+
720
+ public function _content_template() {
721
+ ?>
722
+ <#
723
+ view.addInlineEditingAttributes( 'title', 'none' );
724
+ view.addRenderAttribute( 'title', 'class', 'ha-icon-box-title' );
725
+
726
+ view.addInlineEditingAttributes( 'badge_text', 'none' );
727
+ view.addRenderAttribute( 'badge_text', 'class', 'ha-badge ha-badge--top-right' );
728
+
729
+ if (settings.link.url) {
730
+ view.addRenderAttribute( 'link', 'class', 'ha-icon-box-link' );
731
+ view.addRenderAttribute( 'link', 'href', settings.link.url );
732
+ print( '<a ' + view.getRenderAttributeString( 'link' ) + '>' );
733
+ } #>
734
+
735
+ <# if (settings.badge_text) { #>
736
+ <span {{{ view.getRenderAttributeString( 'badge_text' ) }}}>{{ settings.badge_text }}</span>
737
+ <# } #>
738
+
739
+ <# if (settings.icon) { #>
740
+ <span class="ha-icon-box-icon">
741
+ <i class="{{ settings.icon }}"></i>
742
+ </span>
743
+ <# } #>
744
+ <# if (settings.title) { #>
745
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
746
+ <# } #>
747
+
748
+ <# if (settings.link.url) {
749
+ print( '</a>' );
750
+ } #>
751
+ <?php
752
+ }
753
+ }
widgets/image-compare/widget.php ADDED
@@ -0,0 +1,590 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Image Compare widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Scheme_Typography;
10
+ use Elementor\Utils;
11
+ use Elementor\Control_Media;
12
+ use Elementor\Controls_Manager;
13
+ use Elementor\Group_Control_Border;
14
+ use Elementor\Group_Control_Box_Shadow;
15
+ use Elementor\Group_Control_Image_Size;
16
+ use Elementor\Group_Control_Typography;
17
+
18
+ defined( 'ABSPATH' ) || die();
19
+
20
+ class Image_Compare extends Base {
21
+
22
+ /**
23
+ * Get widget title.
24
+ *
25
+ * @since 1.0.0
26
+ * @access public
27
+ *
28
+ * @return string Widget title.
29
+ */
30
+ public function get_title() {
31
+ return __( 'Image Compare', 'happy_addons' );
32
+ }
33
+
34
+ /**
35
+ * Get widget icon.
36
+ *
37
+ * @since 1.0.0
38
+ * @access public
39
+ *
40
+ * @return string Widget icon.
41
+ */
42
+ public function get_icon() {
43
+ return 'hm hm-image-compare';
44
+ }
45
+
46
+ public function get_keywords() {
47
+ return [ 'compare', 'image', 'before', 'after' ];
48
+ }
49
+
50
+ protected function register_content_controls() {
51
+ $this->start_controls_section(
52
+ '_section_images',
53
+ [
54
+ 'label' => __( 'Images', 'happy_addons' ),
55
+ 'tab' => Controls_Manager::TAB_CONTENT,
56
+ ]
57
+ );
58
+
59
+ $this->start_controls_tabs( '_tab_images' );
60
+ $this->start_controls_tab(
61
+ '_tab_before_image',
62
+ [
63
+ 'label' => __( 'Before', 'happy_addons' ),
64
+ ]
65
+ );
66
+
67
+ $this->add_control(
68
+ 'before_image',
69
+ [
70
+ 'label' => __( 'Image', 'happy_addons' ),
71
+ 'type' => Controls_Manager::MEDIA,
72
+ 'default' => [
73
+ 'url' => Utils::get_placeholder_image_src(),
74
+ ],
75
+ ]
76
+ );
77
+
78
+ $this->add_control(
79
+ 'before_label',
80
+ [
81
+ 'label' => __( 'Label', 'happy_addons' ),
82
+ 'type' => Controls_Manager::TEXT,
83
+ 'default' => __( 'Before', 'happy_addons' ),
84
+ 'placeholder' => __( 'Type before image label', 'happy_addons' ),
85
+ 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy_addons' ),
86
+ ]
87
+ );
88
+
89
+ $this->end_controls_tab();
90
+
91
+ $this->start_controls_tab(
92
+ '_tab_after_image',
93
+ [
94
+ 'label' => __( 'After', 'happy_addons' ),
95
+ ]
96
+ );
97
+
98
+ $this->add_control(
99
+ 'after_image',
100
+ [
101
+ 'label' => __( 'Image', 'happy_addons' ),
102
+ 'type' => Controls_Manager::MEDIA,
103
+ 'default' => [
104
+ 'url' => Utils::get_placeholder_image_src(),
105
+ ],
106
+ ]
107
+ );
108
+
109
+ $this->add_control(
110
+ 'after_label',
111
+ [
112
+ 'label' => __( 'Label', 'happy_addons' ),
113
+ 'type' => Controls_Manager::TEXT,
114
+ 'default' => __( 'After', 'happy_addons' ),
115
+ 'placeholder' => __( 'Type after image label', 'happy_addons' ),
116
+ 'description' => __( 'Label will not be shown if Hide Overlay is enabled in Settings', 'happy_addons' ),
117
+ ]
118
+ );
119
+
120
+ $this->end_controls_tab();
121
+ $this->end_controls_tabs();
122
+
123
+ $this->add_group_control(
124
+ Group_Control_Image_Size::get_type(),
125
+ [
126
+ 'name' => 'thumbnail',
127
+ 'default' => 'full',
128
+ 'separator' => 'before',
129
+ ]
130
+ );
131
+
132
+ $this->end_controls_section();
133
+
134
+ $this->start_controls_section(
135
+ '_section_settings',
136
+ [
137
+ 'label' => __( 'Settings', 'happy_addons' ),
138
+ 'tab' => Controls_Manager::TAB_CONTENT,
139
+ ]
140
+ );
141
+
142
+ $this->add_control(
143
+ 'offset',
144
+ [
145
+ 'label' => __( 'Visibility Ratio', 'happy_addons' ),
146
+ 'type' => Controls_Manager::SLIDER,
147
+ 'size_units' => ['px'],
148
+ 'range' => [
149
+ 'px' => [
150
+ 'min' => 0,
151
+ 'max' => 1,
152
+ 'step' => .1,
153
+ ],
154
+ ],
155
+ 'default' => [
156
+ 'size' => .5,
157
+ ],
158
+ ]
159
+ );
160
+
161
+ $this->add_control(
162
+ 'orientation',
163
+ [
164
+ 'label' => __( 'Orientation', 'happy_addons' ),
165
+ 'type' => Controls_Manager::CHOOSE,
166
+ 'label_block' => false,
167
+ 'options' => [
168
+ 'horizontal' => [
169
+ 'title' => __( 'Horizontal', 'happy_addons' ),
170
+ 'icon' => 'fa fa-arrows-h',
171
+ ],
172
+ 'vertical' => [
173
+ 'title' => __( 'Vertical', 'happy_addons' ),
174
+ 'icon' => 'fa fa-arrows-v',
175
+ ],
176
+ ],
177
+ 'default' => 'horizontal',
178
+ ]
179
+ );
180
+
181
+ $this->add_control(
182
+ 'hide_overlay',
183
+ [
184
+ 'label' => __( 'Hide Overlay', 'happy_addons' ),
185
+ 'type' => Controls_Manager::SWITCHER,
186
+ 'label_on' => __( 'Yes', 'happy_addons' ),
187
+ 'label_off' => __( 'No', 'happy_addons' ),
188
+ 'return_value' => 'yes',
189
+ 'description' => __( 'Hide overlay with before and after label', 'happy_addons' )
190
+ ]
191
+ );
192
+
193
+ $this->add_control(
194
+ 'move_handle',
195
+ [
196
+ 'label' => __( 'Move Handle', 'happy_addons' ),
197
+ 'type' => Controls_Manager::SELECT,
198
+ 'default' => 'on_swipe',
199
+ 'options' => [
200
+ 'on_hover' => __( 'On Hover', 'happy_addons' ),
201
+ 'on_click' => __( 'On Click', 'happy_addons' ),
202
+ 'on_swipe' => __( 'On Swipe', 'happy_addons' ),
203
+ ],
204
+ 'description' => __( 'Select handle movement type. Note: overlay does not work with On Hover.', 'happy_addons' )
205
+ ]
206
+ );
207
+
208
+ $this->end_controls_section();
209
+ }
210
+
211
+ protected function register_style_controls() {
212
+ $this->start_controls_section(
213
+ '_section_style_handle',
214
+ [
215
+ 'label' => __( 'Handle', 'happy_addons' ),
216
+ 'tab' => Controls_Manager::TAB_STYLE,
217
+ ]
218
+ );
219
+
220
+ $this->add_control(
221
+ 'handle_color',
222
+ [
223
+ 'label' => __( 'Color', 'happy_addons' ),
224
+ 'type' => Controls_Manager::COLOR,
225
+ 'selectors' => [
226
+ '{{WRAPPER}} .twentytwenty-handle:before, {{WRAPPER}} .twentytwenty-handle:after' => 'background-color: {{VALUE}}',
227
+ '{{WRAPPER}} .twentytwenty-handle' => 'border-color: {{VALUE}}',
228
+ '{{WRAPPER}} .twentytwenty-left-arrow' => 'border-right-color: {{VALUE}}',
229
+ '{{WRAPPER}} .twentytwenty-right-arrow' => 'border-left-color: {{VALUE}}',
230
+ '{{WRAPPER}} .twentytwenty-handle:before' =>
231
+ '-webkit-box-shadow: 0 3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);'
232
+ . '-moz-box-shadow: 0 3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);'
233
+ . 'box-shadow: 0 3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);',
234
+ '{{WRAPPER}} .twentytwenty-handle:after' =>
235
+ '-webkit-box-shadow: 0 -3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);'
236
+ . '-moz-box-shadow: 0 -3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);'
237
+ . 'box-shadow: 0 -3px 0 {{VALUE}}, 0px 0px 12px rgba(51, 51, 51, 0.5);',
238
+ ],
239
+ ]
240
+ );
241
+
242
+ $this->add_control(
243
+ '_heading_bar',
244
+ [
245
+ 'label' => __( 'Handle Bar', 'plugin-name' ),
246
+ 'type' => Controls_Manager::HEADING,
247
+ 'separator' => 'before',
248
+ ]
249
+ );
250
+
251
+ $this->add_responsive_control(
252
+ 'bar_size',
253
+ [
254
+ 'label' => __( 'Size', 'happy_addons' ),
255
+ 'type' => Controls_Manager::SLIDER,
256
+ 'size_units' => [ 'px' ],
257
+ 'range' => [
258
+ 'px' => [
259
+ 'min' => 0,
260
+ 'max' => 50,
261
+ ],
262
+ ],
263
+ 'selectors' => [
264
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-handle:before, {{WRAPPER}} .twentytwenty-horizontal .twentytwenty-handle:after' => 'width: {{SIZE}}{{UNIT}}; margin-left: calc(-0px - {{SIZE}}{{UNIT}} / 2);',
265
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-handle:before, {{WRAPPER}} .twentytwenty-vertical .twentytwenty-handle:after' => 'height: {{SIZE}}{{UNIT}}; margin-top: calc(-0px - {{SIZE}}{{UNIT}} / 2);',
266
+ ],
267
+ ]
268
+ );
269
+
270
+ $this->add_control(
271
+ '_heading_arrow',
272
+ [
273
+ 'label' => __( 'Handle Arrow', 'plugin-name' ),
274
+ 'type' => Controls_Manager::HEADING,
275
+ 'separator' => 'before',
276
+ ]
277
+ );
278
+
279
+ $this->add_responsive_control(
280
+ 'arrow_box_width',
281
+ [
282
+ 'label' => __( 'Box Width', 'happy_addons' ),
283
+ 'type' => Controls_Manager::SLIDER,
284
+ 'size_units' => [ 'px' ],
285
+ 'range' => [
286
+ 'px' => [
287
+ 'min' => 20,
288
+ 'max' => 250,
289
+ ],
290
+ ],
291
+ 'selectors' => [
292
+ '{{WRAPPER}} .twentytwenty-handle' => 'width: {{SIZE}}{{UNIT}}; margin-left: calc(-1 * ({{SIZE}}{{UNIT}} / 2));',
293
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-handle:before' => 'margin-left: calc(({{SIZE}}{{UNIT}} / 2) - 1px);',
294
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-handle:after' => 'margin-right: calc(({{SIZE}}{{UNIT}} / 2) - 1px);',
295
+ ],
296
+ ]
297
+ );
298
+ $this->add_responsive_control(
299
+ 'arrow_box_height',
300
+ [
301
+ 'label' => __( 'Box Height', 'happy_addons' ),
302
+ 'type' => Controls_Manager::SLIDER,
303
+ 'size_units' => [ 'px' ],
304
+ 'range' => [
305
+ 'px' => [
306
+ 'min' => 20,
307
+ 'max' => 250,
308
+ ],
309
+ ],
310
+ 'selectors' => [
311
+ '{{WRAPPER}} .twentytwenty-handle' => 'height: {{SIZE}}{{UNIT}}; margin-top: calc(-1 * ({{SIZE}}{{UNIT}} / 2));',
312
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-handle:before' => 'margin-bottom: calc(({{SIZE}}{{UNIT}} / 2) + 2px);',
313
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-handle:after' => 'margin-top: calc(({{SIZE}}{{UNIT}} / 2) + 2px);',
314
+ ],
315
+ ]
316
+ );
317
+
318
+ $this->add_group_control(
319
+ Group_Control_Border::get_type(),
320
+ [
321
+ 'name' => 'box_border',
322
+ 'selector' => '{{WRAPPER}} .twentytwenty-handle',
323
+ 'exclude' => [
324
+ 'color'
325
+ ]
326
+ ]
327
+ );
328
+
329
+ $this->add_responsive_control(
330
+ 'box_border_radius',
331
+ [
332
+ 'label' => __( 'Border Radius', 'happy_addons' ),
333
+ 'type' => Controls_Manager::DIMENSIONS,
334
+ 'size_units' => [ 'px', '%' ],
335
+ 'selectors' => [
336
+ '{{WRAPPER}} .twentytwenty-handle' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
337
+ ],
338
+ ]
339
+ );
340
+
341
+ $this->end_controls_section();
342
+
343
+ $this->start_controls_section(
344
+ '_section_style_label',
345
+ [
346
+ 'label' => __( 'Label', 'happy_addons' ),
347
+ 'tab' => Controls_Manager::TAB_STYLE,
348
+ ]
349
+ );
350
+
351
+ $this->add_responsive_control(
352
+ 'label_padding',
353
+ [
354
+ 'label' => __( 'Padding', 'happy_addons' ),
355
+ 'type' => Controls_Manager::DIMENSIONS,
356
+ 'size_units' => [ 'px', 'em', '%' ],
357
+ 'selectors' => [
358
+ '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
359
+ ],
360
+ ]
361
+ );
362
+
363
+ $this->add_control(
364
+ 'position_toggle',
365
+ [
366
+ 'label' => __( 'Position', 'happy_addons' ),
367
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
368
+ 'label_off' => __( 'None', 'happy_addons' ),
369
+ 'label_on' => __( 'Custom', 'happy_addons' ),
370
+ 'return_value' => 'yes',
371
+ ]
372
+ );
373
+
374
+ $this->start_popover();
375
+
376
+ $this->add_responsive_control(
377
+ 'label_offset_y',
378
+ [
379
+ 'label' => __( 'Vertical', 'happy_addons' ),
380
+ 'type' => Controls_Manager::SLIDER,
381
+ 'size_units' => ['px'],
382
+ 'range' => [
383
+ 'px' => [
384
+ 'min' => -10,
385
+ 'max' => 1000,
386
+ ],
387
+ ],
388
+ 'selectors' => [
389
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-after-label:before' => 'bottom: {{SIZE}}{{UNIT}};',
390
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-before-label:before' => 'top: {{SIZE}}{{UNIT}};',
391
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-horizontal .twentytwenty-after-label:before' => 'top: {{SIZE}}{{UNIT}};'
392
+ ],
393
+ 'condition' => [
394
+ 'position_toggle' => 'yes',
395
+ ]
396
+ ]
397
+ );
398
+
399
+ $this->add_responsive_control(
400
+ 'label_offset_x',
401
+ [
402
+ 'label' => __( 'Horizontal', 'happy_addons' ),
403
+ 'type' => Controls_Manager::SLIDER,
404
+ 'size_units' => ['px'],
405
+ 'range' => [
406
+ 'px' => [
407
+ 'min' => -10,
408
+ 'max' => 1000,
409
+ ],
410
+ ],
411
+ 'selectors' => [
412
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-after-label:before' => 'right: {{SIZE}}{{UNIT}};',
413
+ '{{WRAPPER}} .twentytwenty-horizontal .twentytwenty-before-label:before' => 'left: {{SIZE}}{{UNIT}};',
414
+ '{{WRAPPER}} .twentytwenty-vertical .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-vertical .twentytwenty-after-label:before' => 'left: {{SIZE}}{{UNIT}};'
415
+ ],
416
+ 'condition' => [
417
+ 'position_toggle' => 'yes',
418
+ ]
419
+ ]
420
+ );
421
+
422
+ $this->end_popover();
423
+
424
+ $this->add_group_control(
425
+ Group_Control_Border::get_type(),
426
+ [
427
+ 'name' => 'label_border',
428
+ 'selector' => '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before',
429
+ ]
430
+ );
431
+
432
+ $this->add_responsive_control(
433
+ 'label_border_radius',
434
+ [
435
+ 'label' => __( 'Border Radius', 'happy_addons' ),
436
+ 'type' => Controls_Manager::DIMENSIONS,
437
+ 'size_units' => [ 'px', '%' ],
438
+ 'selectors' => [
439
+ '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
440
+ ],
441
+ ]
442
+ );
443
+
444
+ $this->add_control(
445
+ 'label_color',
446
+ [
447
+ 'label' => __( 'Color', 'happy_addons' ),
448
+ 'type' => Controls_Manager::COLOR,
449
+ 'selectors' => [
450
+ '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'color: {{VALUE}}',
451
+ ],
452
+ ]
453
+ );
454
+
455
+ $this->add_control(
456
+ 'label_bg_color',
457
+ [
458
+ 'label' => __( 'Background Color', 'happy_addons' ),
459
+ 'type' => Controls_Manager::COLOR,
460
+ 'selectors' => [
461
+ '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before' => 'background-color: {{VALUE}}',
462
+ ],
463
+ ]
464
+ );
465
+
466
+ $this->add_group_control(
467
+ Group_Control_Box_Shadow::get_type(),
468
+ [
469
+ 'name' => 'label_box_shadow',
470
+ 'selector' => '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before'
471
+ ]
472
+ );
473
+
474
+ $this->add_group_control(
475
+ Group_Control_Typography::get_type(),
476
+ [
477
+ 'name' => 'label_typography',
478
+ 'selector' => '{{WRAPPER}} .twentytwenty-before-label:before, {{WRAPPER}} .twentytwenty-after-label:before',
479
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
480
+ ]
481
+ );
482
+
483
+ $this->end_controls_section();
484
+ }
485
+
486
+ protected static function get_data_settings( $settings ) {
487
+ $field_map = [
488
+ 'offset.size' => 'default_offset_pct.float',
489
+ 'orientation' => 'orientation.str',
490
+ 'hide_overlay' => 'no_overlay.bool',
491
+ 'move_handle' => 'move_handle.str',
492
+ 'before_label' => 'before_label.str',
493
+ 'after_label' => 'after_label.str',
494
+ ];
495
+ return ha_prepare_data_prop_settings( $settings, $field_map );
496
+ }
497
+
498
+ protected function render() {
499
+ $settings = $this->get_settings_for_display();
500
+
501
+ $this->add_render_attribute( 'container', 'class', [
502
+ 'twentytwenty-container',
503
+ 'hajs-image-comparison',
504
+ ] );
505
+
506
+ $this->add_render_attribute( 'container', 'data-happy-settings', self::get_data_settings( $settings ) );
507
+ ?>
508
+ <div <?php echo $this->get_render_attribute_string( 'container' ); ?>>
509
+ <?php if ( $settings['before_image']['url'] || $settings['before_image']['id'] ) :
510
+ $this->add_render_attribute( 'before_image', 'src', $settings['before_image']['url'] );
511
+ $this->add_render_attribute( 'before_image', 'alt', Control_Media::get_image_alt( $settings['before_image'] ) );
512
+ $this->add_render_attribute( 'before_image', 'title', Control_Media::get_image_title( $settings['before_image'] ) );
513
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
514
+ echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'before_image' );
515
+ endif;
516
+
517
+ if ( $settings['after_image']['url'] || $settings['after_image']['id'] ) :
518
+ $this->add_render_attribute( 'after_image', 'src', $settings['after_image']['url'] );
519
+ $this->add_render_attribute( 'after_image', 'alt', Control_Media::get_image_alt( $settings['after_image'] ) );
520
+ $this->add_render_attribute( 'after_image', 'title', Control_Media::get_image_title( $settings['after_image'] ) );
521
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
522
+ echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'after_image' );
523
+ endif; ?>
524
+ </div>
525
+ <?php
526
+ }
527
+
528
+
529
+ public function _content_template() {
530
+ ?>
531
+ <#
532
+ view.addRenderAttribute( 'container', 'class', [
533
+ 'twentytwenty-container',
534
+ 'hajs-image-comparison',
535
+ ] );
536
+
537
+ var fieldMap = {
538
+ 'offset.size': 'default_offset_pct',
539
+ 'orientation': 'orientation',
540
+ 'hide_overlay': 'no_overlay',
541
+ 'move_handle': 'move_handle',
542
+ 'before_label': 'before_label',
543
+ 'after_label': 'after_label',
544
+ };
545
+
546
+ var data = {};
547
+
548
+ _.each(fieldMap, function(dKey, sKey) {
549
+ if (sKey === 'offset.size') {
550
+ data[dKey] = settings.offset.size;
551
+ return;
552
+ }
553
+ if (_.isUndefined(settings[sKey])) {
554
+ return;
555
+ }
556
+ data[dKey] = settings[sKey];
557
+ });
558
+ console.log(elementorFrontend)
559
+ view.addRenderAttribute('container', 'data-happy-settings', JSON.stringify(data)); #>
560
+
561
+ <div {{{ view.getRenderAttributeString( 'container' ) }}}>
562
+ <# if ( settings.before_image.url || settings.before_image.id ) {
563
+ var image = {
564
+ id: settings.before_image.id,
565
+ url: settings.before_image.url,
566
+ size: settings.thumbnail_size,
567
+ dimension: settings.thumbnail_custom_dimension,
568
+ model: view.getEditModel()
569
+ };
570
+
571
+ var image_url = elementor.imagesManager.getImageUrl( image ); #>
572
+ <img src="{{ image_url }}">
573
+ <# }
574
+
575
+ if ( settings.after_image.url || settings.after_image.id ) {
576
+ var image = {
577
+ id: settings.after_image.id,
578
+ url: settings.after_image.url,
579
+ size: settings.thumbnail_size,
580
+ dimension: settings.thumbnail_custom_dimension,
581
+ model: view.getEditModel()
582
+ };
583
+
584
+ var image_url = elementor.imagesManager.getImageUrl( image ); #>
585
+ <img src="{{ image_url }}">
586
+ <# } #>
587
+ </div>
588
+ <?php
589
+ }
590
+ }
widgets/infobox/widget.php ADDED
@@ -0,0 +1,841 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Info box widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Scheme_Typography;
10
+ use Elementor\Utils;
11
+ use Elementor\Control_Media;
12
+ use Elementor\Controls_Manager;
13
+ use Elementor\Group_Control_Border;
14
+ use Elementor\Group_Control_Box_Shadow;
15
+ use Elementor\Group_Control_Image_Size;
16
+ use Elementor\Group_Control_Typography;
17
+
18
+ defined( 'ABSPATH' ) || die();
19
+
20
+ class InfoBox extends Base {
21
+
22
+ /**
23
+ * Get widget title.
24
+ *
25
+ * @since 1.0.0
26
+ * @access public
27
+ *
28
+ * @return string Widget title.
29
+ */
30
+ public function get_title() {
31
+ return __( 'Info Box', 'happy_addons' );
32
+ }
33
+
34
+ /**
35
+ * Get widget icon.
36
+ *
37
+ * @since 1.0.0
38
+ * @access public
39
+ *
40
+ * @return string Widget icon.
41
+ */
42
+ public function get_icon() {
43
+ return 'hm hm-blog-content';
44
+ }
45
+
46
+ public function get_keywords() {
47
+ return [ 'info', 'blurb', 'box', 'text', 'content' ];
48
+ }
49
+
50
+ /**
51
+ * Register content related controls
52
+ */
53
+ protected function register_content_controls() {
54
+ $this->start_controls_section(
55
+ '_section_media',
56
+ [
57
+ 'label' => __( 'Icon / Image', 'happy_addons' ),
58
+ 'tab' => Controls_Manager::TAB_CONTENT,
59
+ ]
60
+ );
61
+
62
+ $this->add_control(
63
+ 'type',
64
+ [
65
+ 'label' => __( 'Media Type', 'happy_addons' ),
66
+ 'type' => Controls_Manager::CHOOSE,
67
+ 'label_block' => false,
68
+ 'options' => [
69
+ 'icon' => [
70
+ 'title' => __( 'Icon', 'happy_addons' ),
71
+ 'icon' => 'fa fa-smile-o',
72
+ ],
73
+ 'image' => [
74
+ 'title' => __( 'Image', 'happy_addons' ),
75
+ 'icon' => 'fa fa-image',
76
+ ],
77
+ ],
78
+ 'default' => 'icon',
79
+ 'toggle' => false,
80
+ ]
81
+ );
82
+
83
+ $this->add_control(
84
+ 'image',
85
+ [
86
+ 'label' => __( 'Image', 'happy_addons' ),
87
+ 'type' => Controls_Manager::MEDIA,
88
+ 'default' => [
89
+ 'url' => Utils::get_placeholder_image_src(),
90
+ ],
91
+ 'condition' => [
92
+ 'type' => 'image'
93
+ ]
94
+ ]
95
+ );
96
+
97
+ $this->add_group_control(
98
+ Group_Control_Image_Size::get_type(),
99
+ [
100
+ 'name' => 'thumbnail',
101
+ 'default' => 'medium_large',
102
+ 'separator' => 'none',
103
+ 'exclude' => [
104
+ 'full',
105
+ 'custom',
106
+ 'large',
107
+ 'shop_catalog',
108
+ 'shop_single',
109
+ 'shop_thumbnail'
110
+ ],
111
+ 'condition' => [
112
+ 'type' => 'image'
113
+ ]
114
+ ]
115
+ );
116
+
117
+ $this->add_control(
118
+ 'icon',
119
+ [
120
+ 'label' => __( 'Icon', 'happy_addons' ),
121
+ 'type' => Controls_Manager::ICON,
122
+ 'default' => 'fa fa-smile-o',
123
+ 'options' => ha_get_happy_icons(),
124
+ 'condition' => [
125
+ 'type' => 'icon'
126
+ ]
127
+ ]
128
+ );
129
+
130
+ $this->end_controls_section();
131
+
132
+ $this->start_controls_section(
133
+ '_section_title',
134
+ [
135
+ 'label' => __( 'Title & Description', 'happy_addons' ),
136
+ 'tab' => Controls_Manager::TAB_CONTENT,
137
+ ]
138
+ );
139
+
140
+ $this->add_control(
141
+ 'title',
142
+ [
143
+ 'label' => __( 'Title', 'happy_addons' ),
144
+ 'label_block' => true,
145
+ 'type' => Controls_Manager::TEXT,
146
+ 'default' => __( 'Happy Info Box Title', 'happy_addons' ),
147
+ 'placeholder' => __( 'Type Info Box Title', 'happy_addons' ),
148
+ ]
149
+ );
150
+
151
+ $this->add_control(
152
+ 'description',
153
+ [
154
+ 'label' => __( 'Description', 'happy_addons' ),
155
+ 'type' => Controls_Manager::TEXTAREA,
156
+ 'default' => __( 'Happy info box description goes here', 'happy_addons' ),
157
+ 'placeholder' => __( 'Type info box description', 'happy_addons' ),
158
+ 'rows' => 5
159
+ ]
160
+ );
161
+
162
+ $this->add_control(
163
+ 'title_tag',
164
+ [
165
+ 'label' => __( 'Title HTML Tag', 'happy_addons' ),
166
+ 'type' => Controls_Manager::CHOOSE,
167
+ 'options' => [
168
+ 'h1' => [
169
+ 'title' => __( 'H1', 'happy_addons' ),
170
+ 'icon' => 'eicon-editor-h1'
171
+ ],
172
+ 'h2' => [
173
+ 'title' => __( 'H2', 'happy_addons' ),
174
+ 'icon' => 'eicon-editor-h2'
175
+ ],
176
+ 'h3' => [
177
+ 'title' => __( 'H3', 'happy_addons' ),
178
+ 'icon' => 'eicon-editor-h3'
179
+ ],
180
+ 'h4' => [
181
+ 'title' => __( 'H4', 'happy_addons' ),
182
+ 'icon' => 'eicon-editor-h4'
183
+ ],
184
+ 'h5' => [
185
+ 'title' => __( 'H5', 'happy_addons' ),
186
+ 'icon' => 'eicon-editor-h5'
187
+ ],
188
+ 'h6' => [
189
+ 'title' => __( 'H6', 'happy_addons' ),
190
+ 'icon' => 'eicon-editor-h6'
191
+ ]
192
+ ],
193
+ 'default' => 'h2',
194
+ 'toggle' => false,
195
+ ]
196
+ );
197
+
198
+ $this->add_responsive_control(
199
+ 'align',
200
+ [
201
+ 'label' => __( 'Alignment', 'happy_addons' ),
202
+ 'type' => Controls_Manager::CHOOSE,
203
+ 'options' => [
204
+ 'left' => [
205
+ 'title' => __( 'Left', 'happy_addons' ),
206
+ 'icon' => 'fa fa-align-left',
207
+ ],
208
+ 'center' => [
209
+ 'title' => __( 'Center', 'happy_addons' ),
210
+ 'icon' => 'fa fa-align-center',
211
+ ],
212
+ 'right' => [
213
+ 'title' => __( 'Right', 'happy_addons' ),
214
+ 'icon' => 'fa fa-align-right',
215
+ ],
216
+ 'justify' => [
217
+ 'title' => __( 'Justify', 'happy_addons' ),
218
+ 'icon' => 'fa fa-align-justify',
219
+ ],
220
+ ],
221
+ 'toggle' => true,
222
+ 'selectors' => [
223
+ '{{WRAPPER}}' => 'text-align: {{VALUE}}'
224
+ ]
225
+ ]
226
+ );
227
+
228
+ $this->end_controls_section();
229
+
230
+ $this->start_controls_section(
231
+ '_section_link',
232
+ [
233
+ 'label' => __( 'Link', 'happy_addons' ),
234
+ 'tab' => Controls_Manager::TAB_CONTENT,
235
+ ]
236
+ );
237
+
238
+ $this->add_control(
239
+ 'button_text',
240
+ [
241
+ 'label' => __( 'Text', 'happy_addons' ),
242
+ 'type' => Controls_Manager::TEXT,
243
+ 'label_block' => true,
244
+ 'default' => __( 'Link Text', 'happy_addons' ),
245
+ 'placeholder' => __( 'Type Link Text', 'happy_addons' ),
246
+ ]
247
+ );
248
+
249
+ $this->add_control(
250
+ 'button_link',
251
+ [
252
+ 'label' => __( 'URL', 'happy_addons' ),
253
+ 'type' => Controls_Manager::URL,
254
+ 'label_block' => true,
255
+ 'placeholder' => __( 'https://example.com/', 'happy_addons' ),
256
+ ]
257
+ );
258
+
259
+ $this->end_controls_section();
260
+ }
261
+
262
+ /**
263
+ * Register styles related controls
264
+ */
265
+ protected function register_style_controls() {
266
+ $this->start_controls_section(
267
+ '_section_media_style',
268
+ [
269
+ 'label' => __( 'Icon / Image', 'happy_addons' ),
270
+ 'tab' => Controls_Manager::TAB_STYLE,
271
+ ]
272
+ );
273
+
274
+ $this->add_responsive_control(
275
+ 'icon_size',
276
+ [
277
+ 'label' => __( 'Size', 'happy_addons' ),
278
+ 'type' => Controls_Manager::SLIDER,
279
+ 'size_units' => [ 'px' ],
280
+ 'range' => [
281
+ 'px' => [
282
+ 'min' => 10,
283
+ 'max' => 300,
284
+ ],
285
+ ],
286
+ 'selectors' => [
287
+ '{{WRAPPER}} .ha-infobox-figure--icon' => 'font-size: {{SIZE}}{{UNIT}};',
288
+ ],
289
+ 'condition' => [
290
+ 'type' => 'icon'
291
+ ]
292
+ ]
293
+ );
294
+
295
+ $this->add_responsive_control(
296
+ 'image_width',
297
+ [
298
+ 'label' => __( 'Width', 'happy_addons' ),
299
+ 'type' => Controls_Manager::SLIDER,
300
+ 'size_units' => [ 'px', '%' ],
301
+ 'range' => [
302
+ 'px' => [
303
+ 'min' => 1,
304
+ 'max' => 400,
305
+ ],
306
+ '%' => [
307
+ 'min' => 1,
308
+ 'max' => 100,
309
+ ],
310
+ ],
311
+ 'selectors' => [
312
+ '{{WRAPPER}} .ha-infobox-figure--image' => 'width: {{SIZE}}{{UNIT}};',
313
+ ],
314
+ 'condition' => [
315
+ 'type' => 'image'
316
+ ]
317
+ ]
318
+ );
319
+
320
+ $this->add_responsive_control(
321
+ 'image_height',
322
+ [
323
+ 'label' => __( 'Height', 'happy_addons' ),
324
+ 'type' => Controls_Manager::SLIDER,
325
+ 'size_units' => [ 'px' ],
326
+ 'range' => [
327
+ 'px' => [
328
+ 'min' => 1,
329
+ 'max' => 400,
330
+ ],
331
+ ],
332
+ 'selectors' => [
333
+ '{{WRAPPER}} .ha-infobox-figure--image' => 'height: {{SIZE}}{{UNIT}};',
334
+ ],
335
+ 'condition' => [
336
+ 'type' => 'image'
337
+ ]
338
+ ]
339
+ );
340
+
341
+ $this->add_control(
342
+ 'offset_toggle',
343
+ [
344
+ 'label' => __( 'Offset', 'plugin-name' ),
345
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
346
+ 'label_off' => __( 'None', 'your-plugin' ),
347
+ 'label_on' => __( 'Custom', 'your-plugin' ),
348
+ 'return_value' => 'yes',
349
+ ]
350
+ );
351
+
352
+ $this->start_popover();
353
+
354
+ $this->add_responsive_control(
355
+ 'media_offset_x',
356
+ [
357
+ 'label' => __( 'Offset Left', 'happy_addons' ),
358
+ 'type' => Controls_Manager::SLIDER,
359
+ 'size_units' => ['px'],
360
+ 'condition' => [
361
+ 'offset_toggle' => 'yes'
362
+ ],
363
+ 'default' => [
364
+ 'size' => 1
365
+ ],
366
+ 'range' => [
367
+ 'px' => [
368
+ 'min' => -1000,
369
+ 'max' => 1000,
370
+ ],
371
+ ],
372
+ 'render_type' => 'ui',
373
+ ]
374
+ );
375
+
376
+ $this->add_responsive_control(
377
+ 'media_offset_y',
378
+ [
379
+ 'label' => __( 'Offset Top', 'happy_addons' ),
380
+ 'type' => Controls_Manager::SLIDER,
381
+ 'size_units' => ['px'],
382
+ 'condition' => [
383
+ 'offset_toggle' => 'yes'
384
+ ],
385
+ 'default' => [
386
+ 'size' => 1
387
+ ],
388
+ 'range' => [
389
+ 'px' => [
390
+ 'min' => -1000,
391
+ 'max' => 1000,
392
+ ],
393
+ ],
394
+ 'selectors' => [
395
+ '{{WRAPPER}} .ha-infobox-figure' => '-ms-transform: translate({{media_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); -webkit-transform: translate({{media_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); transform: translate({{media_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}});',
396
+ '{{WRAPPER}} .ha-infobox-body' => 'margin-top: {{SIZE}}{{UNIT}};',
397
+ ],
398
+ ]
399
+ );
400
+ $this->end_popover();
401
+
402
+ $this->add_responsive_control(
403
+ 'media_spacing',
404
+ [
405
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
406
+ 'type' => Controls_Manager::SLIDER,
407
+ 'size_units' => ['px'],
408
+ 'selectors' => [
409
+ '{{WRAPPER}} .ha-infobox-figure' => 'margin-bottom: {{SIZE}}{{UNIT}} !important;',
410
+ ],
411
+ ]
412
+ );
413
+
414
+ $this->add_responsive_control(
415
+ 'media_padding',
416
+ [
417
+ 'label' => __( 'Padding', 'happy_addons' ),
418
+ 'type' => Controls_Manager::SLIDER,
419
+ 'size_units' => ['px'],
420
+ 'selectors' => [
421
+ '{{WRAPPER}} .ha-infobox-figure--image > img, {{WRAPPER}} .ha-infobox-figure--icon' => 'padding: {{SIZE}}{{UNIT}};',
422
+ ],
423
+ ]
424
+ );
425
+
426
+ $this->add_group_control(
427
+ Group_Control_Border::get_type(),
428
+ [
429
+ 'name' => 'media_border',
430
+ 'selector' => '{{WRAPPER}} .ha-infobox-figure--image > img, {{WRAPPER}} .ha-infobox-figure--icon',
431
+ ]
432
+ );
433
+
434
+ $this->add_responsive_control(
435
+ 'media_border_radius',
436
+ [
437
+ 'label' => __( 'Border Radius', 'happy_addons' ),
438
+ 'type' => Controls_Manager::DIMENSIONS,
439
+ 'size_units' => [ 'px', '%' ],
440
+ 'selectors' => [
441
+ '{{WRAPPER}} .ha-infobox-figure--image > img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
442
+ '{{WRAPPER}} .ha-infobox-figure--icon' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
443
+ ],
444
+ ]
445
+ );
446
+
447
+ $this->add_group_control(
448
+ Group_Control_Box_Shadow::get_type(),
449
+ [
450
+ 'name' => 'media_box_shadow',
451
+ 'exclude' => [
452
+ 'box_shadow_position',
453
+ ],
454
+ 'selector' => '{{WRAPPER}} .ha-infobox-figure--image > img, {{WRAPPER}} .ha-infobox-figure--icon'
455
+ ]
456
+ );
457
+
458
+ $this->add_control(
459
+ 'icon_color',
460
+ [
461
+ 'label' => __( 'Color', 'happy_addons' ),
462
+ 'type' => Controls_Manager::COLOR,
463
+ 'selectors' => [
464
+ '{{WRAPPER}} .ha-infobox-figure--icon' => 'color: {{VALUE}}',
465
+ ],
466
+ 'condition' => [
467
+ 'type' => 'icon'
468
+ ]
469
+ ]
470
+ );
471
+
472
+ $this->add_control(
473
+ 'icon_bg_color',
474
+ [
475
+ 'label' => __( 'Background Color', 'happy_addons' ),
476
+ 'type' => Controls_Manager::COLOR,
477
+ 'selectors' => [
478
+ '{{WRAPPER}} .ha-infobox-figure--icon' => 'background-color: {{VALUE}}',
479
+ ],
480
+ 'condition' => [
481
+ 'type' => 'icon'
482
+ ]
483
+ ]
484
+ );
485
+
486
+ $this->add_control(
487
+ 'icon_bg_rotate',
488
+ [
489
+ 'label' => __( 'Rotate Background', 'happy_addons' ),
490
+ 'type' => Controls_Manager::SLIDER,
491
+ 'size_units' => [ 'deg' ],
492
+ 'default' => [
493
+ 'unit' => 'deg',
494
+ ],
495
+ 'range' => [
496
+ 'deg' => [
497
+ 'min' => 0,
498
+ 'max' => 360,
499
+ ],
500
+ ],
501
+ 'selectors' => [
502
+ '{{WRAPPER}} .ha-infobox-figure--icon' => '-webkit-transform: rotate({{SIZE}}{{UNIT}}); transform: rotate({{SIZE}}{{UNIT}});',
503
+ '{{WRAPPER}} .ha-infobox-figure--icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});',
504
+ ],
505
+ 'condition' => [
506
+ 'type' => 'icon',
507
+ 'icon_bg_color!' => '',
508
+ 'offset_toggle!' => 'yes',
509
+ ]
510
+ ]
511
+ );
512
+
513
+ $this->add_control(
514
+ 'icon_bg_rotate_conditional',
515
+ [
516
+ 'label' => __( 'Rotate Background', 'happy_addons' ),
517
+ 'type' => Controls_Manager::SLIDER,
518
+ 'size_units' => [ 'deg' ],
519
+ 'default' => [
520
+ 'unit' => 'deg',
521
+ ],
522
+ 'range' => [
523
+ 'deg' => [
524
+ 'min' => 0,
525
+ 'max' => 360,
526
+ ],
527
+ ],
528
+ 'selectors' => [
529
+ '{{WRAPPER}} .ha-infobox-figure--icon' => '-ms-transform: translate({{media_offset_x.SIZE}}px, {{media_offset_y.SIZE}}px) rotate({{SIZE}}deg); -webkit-transform: translate({{media_offset_x.SIZE}}px, {{media_offset_y.SIZE}}px) rotate({{SIZE}}deg); transform: translate({{media_offset_x.SIZE}}px, {{media_offset_y.SIZE}}px) rotate({{SIZE}}deg) !important;',
530
+ '{{WRAPPER}} .ha-infobox-figure--icon > i' => '-webkit-transform: rotate(-{{SIZE}}{{UNIT}}); transform: rotate(-{{SIZE}}{{UNIT}});',
531
+ ],
532
+ 'condition' => [
533
+ 'offset_toggle' => 'yes',
534
+ 'type' => 'icon',
535
+ 'icon_bg_color!' => '',
536
+ ]
537
+ ]
538
+ );
539
+
540
+ $this->end_controls_section();
541
+
542
+ $this->start_controls_section(
543
+ '_section_title_style',
544
+ [
545
+ 'label' => __( 'Title & Description', 'happy_addons' ),
546
+ 'tab' => Controls_Manager::TAB_STYLE,
547
+ ]
548
+ );
549
+
550
+ $this->add_responsive_control(
551
+ 'content_padding',
552
+ [
553
+ 'label' => __( 'Container Padding', 'happy_addons' ),
554
+ 'type' => Controls_Manager::DIMENSIONS,
555
+ 'size_units' => [ 'px', 'em', '%' ],
556
+ 'selectors' => [
557
+ '{{WRAPPER}} .ha-infobox-body' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
558
+ ],
559
+ ]
560
+ );
561
+
562
+ $this->add_control(
563
+ 'title_heading',
564
+ [
565
+ 'type' => Controls_Manager::HEADING,
566
+ 'label' => __( 'Title', 'happy_addons' ),
567
+ 'separator' => 'before'
568
+ ]
569
+ );
570
+
571
+ $this->add_responsive_control(
572
+ 'title_spacing',
573
+ [
574
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
575
+ 'type' => Controls_Manager::SLIDER,
576
+ 'size_units' => ['px'],
577
+ 'selectors' => [
578
+ '{{WRAPPER}} .ha-infobox-title' => 'margin-bottom: {{SIZE}}{{UNIT}};',
579
+ ],
580
+ ]
581
+ );
582
+
583
+ $this->add_control(
584
+ 'title_color',
585
+ [
586
+ 'label' => __( 'Text Color', 'happy_addons' ),
587
+ 'type' => Controls_Manager::COLOR,
588
+ 'selectors' => [
589
+ '{{WRAPPER}} .ha-infobox-title' => 'color: {{VALUE}}',
590
+ ],
591
+ ]
592
+ );
593
+
594
+ $this->add_group_control(
595
+ Group_Control_Typography::get_type(),
596
+ [
597
+ 'name' => 'title_typography',
598
+ 'label' => __( 'Typography', 'happy_addons' ),
599
+ 'selector' => '{{WRAPPER}} .ha-infobox-title',
600
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_2
601
+ ]
602
+ );
603
+
604
+ $this->add_control(
605
+ 'description_heading',
606
+ [
607
+ 'type' => Controls_Manager::HEADING,
608
+ 'label' => __( 'Description', 'happy_addons' ),
609
+ 'separator' => 'before'
610
+ ]
611
+ );
612
+
613
+ $this->add_responsive_control(
614
+ 'description_spacing',
615
+ [
616
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
617
+ 'type' => Controls_Manager::SLIDER,
618
+ 'size_units' => ['px'],
619
+ 'selectors' => [
620
+ '{{WRAPPER}} .ha-infobox-text' => 'margin-bottom: {{SIZE}}{{UNIT}};',
621
+ ],
622
+ ]
623
+ );
624
+
625
+ $this->add_control(
626
+ 'description_color',
627
+ [
628
+ 'label' => __( 'Text Color', 'happy_addons' ),
629
+ 'type' => Controls_Manager::COLOR,
630
+ 'selectors' => [
631
+ '{{WRAPPER}} .ha-infobox-text' => 'color: {{VALUE}}',
632
+ ],
633
+ ]
634
+ );
635
+
636
+ $this->add_group_control(
637
+ Group_Control_Typography::get_type(),
638
+ [
639
+ 'name' => 'description_typography',
640
+ 'label' => __( 'Typography', 'happy_addons' ),
641
+ 'selector' => '{{WRAPPER}} .ha-infobox-text',
642
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
643
+ ]
644
+ );
645
+
646
+ $this->end_controls_section();
647
+
648
+ $this->start_controls_section(
649
+ '_section_link_style',
650
+ [
651
+ 'label' => __( 'Link', 'happy_addons' ),
652
+ 'tab' => Controls_Manager::TAB_STYLE,
653
+ ]
654
+ );
655
+
656
+ $this->add_responsive_control(
657
+ 'link_padding',
658
+ [
659
+ 'label' => __( 'Padding', 'happy_addons' ),
660
+ 'type' => Controls_Manager::DIMENSIONS,
661
+ 'size_units' => [ 'px', 'em', '%' ],
662
+ 'selectors' => [
663
+ '{{WRAPPER}} .ha-link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
664
+ ],
665
+ ]
666
+ );
667
+
668
+ $this->add_group_control(
669
+ Group_Control_Typography::get_type(),
670
+ [
671
+ 'name' => 'btn_typography',
672
+ 'selector' => '{{WRAPPER}} .ha-link',
673
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_4,
674
+ ]
675
+ );
676
+
677
+ $this->start_controls_tabs( 'tabs_link_style' );
678
+
679
+ $this->start_controls_tab(
680
+ 'tab_link_normal',
681
+ [
682
+ 'label' => __( 'Normal', 'happy_addons' ),
683
+ ]
684
+ );
685
+
686
+ $this->add_control(
687
+ 'link_color',
688
+ [
689
+ 'label' => __( 'Text Color', 'happy_addons' ),
690
+ 'type' => Controls_Manager::COLOR,
691
+ 'default' => '',
692
+ 'selectors' => [
693
+ '{{WRAPPER}} .ha-link' => 'color: {{VALUE}};',
694
+ ],
695
+ ]
696
+ );
697
+
698
+ $this->end_controls_tab();
699
+
700
+ $this->start_controls_tab(
701
+ 'tab_link_hover',
702
+ [
703
+ 'label' => __( 'Hover', 'happy_addons' ),
704
+ ]
705
+ );
706
+
707
+ $this->add_control(
708
+ 'link_hover_color',
709
+ [
710
+ 'label' => __( 'Text Color', 'happy_addons' ),
711
+ 'type' => Controls_Manager::COLOR,
712
+ 'selectors' => [
713
+ '{{WRAPPER}} .ha-link:hover, {{WRAPPER}} .ha-link:focus' => 'color: {{VALUE}};',
714
+ ],
715
+ ]
716
+ );
717
+
718
+ $this->end_controls_tab();
719
+ $this->end_controls_tabs();
720
+
721
+ $this->end_controls_section();
722
+ }
723
+
724
+ protected function render() {
725
+ $settings = $this->get_settings_for_display();
726
+
727
+ $this->add_inline_editing_attributes( 'title', 'none' );
728
+ $this->add_render_attribute( 'title', 'class', 'ha-infobox-title' );
729
+
730
+ $this->add_inline_editing_attributes( 'description', 'basic' );
731
+ $this->add_render_attribute( 'description', 'class', 'ha-infobox-text' );
732
+
733
+ $this->add_inline_editing_attributes( 'button_text', 'none' );
734
+ $this->add_render_attribute( 'button_text', 'class', 'ha-link' );
735
+
736
+ $this->add_render_attribute( 'button_text', 'href', esc_url( $settings['button_link']['url'] ) );
737
+ if ( ! empty( $settings['button_link']['is_external'] ) ) {
738
+ $this->add_render_attribute( 'button_text', 'target', '_blank' );
739
+ }
740
+
741
+ if ( ! empty( $settings['button_link']['nofollow'] ) ) {
742
+ $this->set_render_attribute( 'button_text', 'rel', 'nofollow' );
743
+ }
744
+ ?>
745
+
746
+ <?php if ( $settings['type'] === 'image' ) :
747
+ if ( $settings['image']['url'] || $settings['image']['id'] ) :
748
+ $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
749
+ $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
750
+ $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
751
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
752
+ ?>
753
+ <figure class="ha-infobox-figure ha-infobox-figure--image">
754
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
755
+ </figure>
756
+ <?php endif;
757
+ elseif ( $settings['icon'] ) : ?>
758
+ <figure class="ha-infobox-figure ha-infobox-figure--icon">
759
+ <i aria-hidden="true" class="<?php echo esc_attr( $settings['icon'] ); ?>"></i>
760
+ </figure>
761
+ <?php endif; ?>
762
+
763
+ <div class="ha-infobox-body">
764
+ <?php
765
+ if ( $settings['title' ] ) :
766
+ printf( '<%1$s %2$s>%3$s</%1$s>',
767
+ tag_escape( $settings['title_tag'] ),
768
+ $this->get_render_attribute_string( 'title' ),
769
+ esc_html( $settings['title' ] )
770
+ );
771
+ endif;
772
+ ?>
773
+
774
+ <?php if ( $settings['description'] ) : ?>
775
+ <div <?php echo $this->get_render_attribute_string( 'description' ); ?>>
776
+ <p><?php echo wp_kses_data( $settings['description'] ); ?></p>
777
+ </div>
778
+ <?php endif; ?>
779
+
780
+ <?php if ( $settings['button_text'] ):
781
+ printf( '<a %1$s>%2$s</a>',
782
+ $this->get_render_attribute_string( 'button_text' ),
783
+ esc_html( $settings['button_text'] )
784
+ );
785
+ endif; ?>
786
+ </div>
787
+ <?php
788
+ }
789
+
790
+ public function _content_template() {
791
+ ?>
792
+ <#
793
+ view.addInlineEditingAttributes( 'title', 'none' );
794
+ view.addRenderAttribute( 'title', 'class', 'ha-infobox-title' );
795
+
796
+ view.addInlineEditingAttributes( 'description', 'basic' );
797
+ view.addRenderAttribute( 'description', 'class', 'ha-infobox-text' );
798
+
799
+ view.addInlineEditingAttributes( 'button_text', 'none' );
800
+ view.addRenderAttribute( 'button_text', 'class', 'ha-link' );
801
+ view.addRenderAttribute( 'button_text', 'href', settings.button_link.url );
802
+
803
+ if ( settings.type === 'image' ) {
804
+ if ( settings.image.url ) {
805
+ var image = {
806
+ id: settings.image.id,
807
+ url: settings.image.url,
808
+ size: settings.thumbnail_size,
809
+ model: view.getEditModel()
810
+ };
811
+
812
+ var image_url = elementor.imagesManager.getImageUrl( image );
813
+ #>
814
+ <figure class="ha-infobox-figure ha-infobox-figure--image">
815
+ <img src="{{ image_url }}">
816
+ </figure>
817
+ <# }
818
+ } else if (settings.icon) { #>
819
+ <figure class="ha-infobox-figure ha-infobox-figure--icon">
820
+ <i aria-hidden="true" class="{{ settings.icon }}"></i>
821
+ </figure>
822
+ <# } #>
823
+
824
+ <div class="ha-infobox-body">
825
+ <# if (settings.title) { #>
826
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
827
+ <# } #>
828
+
829
+ <# if (settings.description) { #>
830
+ <div {{{ view.getRenderAttributeString( 'description' ) }}}>
831
+ <p>{{{ settings.description }}}</p>
832
+ </div>
833
+ <# } #>
834
+
835
+ <# if ( settings.button_text ) { #>
836
+ <a {{{ view.getRenderAttributeString( 'button_text' ) }}}>{{ settings.button_text }}</a>
837
+ <# } #>
838
+ </div>
839
+ <?php
840
+ }
841
+ }
widgets/member/widget.php ADDED
@@ -0,0 +1,964 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Member widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Group_Control_Text_Shadow;
10
+ use Elementor\Repeater;
11
+ use Elementor\Scheme_Typography;
12
+ use Elementor\Utils;
13
+ use Elementor\Control_Media;
14
+ use Elementor\Controls_Manager;
15
+ use Elementor\Group_Control_Border;
16
+ use Elementor\Group_Control_Box_Shadow;
17
+ use Elementor\Group_Control_Image_Size;
18
+ use Elementor\Group_Control_Typography;
19
+
20
+ defined( 'ABSPATH' ) || die();
21
+
22
+ class Member extends Base {
23
+
24
+ /**
25
+ * Get widget title.
26
+ *
27
+ * @since 1.0.0
28
+ * @access public
29
+ *
30
+ * @return string Widget title.
31
+ */
32
+ public function get_title() {
33
+ return __( 'Team Member', 'happy_addons' );
34
+ }
35
+
36
+ /**
37
+ * Get widget icon.
38
+ *
39
+ * @since 1.0.0
40
+ * @access public
41
+ *
42
+ * @return string Widget icon.
43
+ */
44
+ public function get_icon() {
45
+ return 'hm hm-team-member';
46
+ }
47
+
48
+ public function get_keywords() {
49
+ return [ 'team', 'member', 'crew', 'staff', 'person' ];
50
+ }
51
+
52
+ protected static function get_profile_names() {
53
+ return [
54
+ '500px' => __( '500px', 'happy_addons' ),
55
+ 'apple' => __( 'Apple', 'happy_addons' ),
56
+ 'behance' => __( 'Behance', 'happy_addons' ),
57
+ 'bitbucket' => __( 'BitBucket', 'happy_addons' ),
58
+ 'codepen' => __( 'CodePen', 'happy_addons' ),
59
+ 'delicious' => __( 'Delicious', 'happy_addons' ),
60
+ 'deviantart' => __( 'DeviantArt', 'happy_addons' ),
61
+ 'digg' => __( 'Digg', 'happy_addons' ),
62
+ 'dribbble' => __( 'Dribbble', 'happy_addons' ),
63
+ 'email' => __( 'Email', 'happy_addons' ),
64
+ 'facebook' => __( 'Facebook', 'happy_addons' ),
65
+ 'flickr' => __( 'Flicker', 'happy_addons' ),
66
+ 'foursquare' => __( 'FourSquare', 'happy_addons' ),
67
+ 'github' => __( 'Github', 'happy_addons' ),
68
+ 'houzz' => __( 'Houzz', 'happy_addons' ),
69
+ 'instagram' => __( 'Instagram', 'happy_addons' ),
70
+ 'jsfiddle' => __( 'JS Fiddle', 'happy_addons' ),
71
+ 'linkedin' => __( 'LinkedIn', 'happy_addons' ),
72
+ 'medium' => __( 'Medium', 'happy_addons' ),
73
+ 'pinterest' => __( 'Pinterest', 'happy_addons' ),
74
+ 'product-hunt' => __( 'Product Hunt', 'happy_addons' ),
75
+ 'reddit' => __( 'Reddit', 'happy_addons' ),
76
+ 'slideshare' => __( 'Slide Share', 'happy_addons' ),
77
+ 'snapchat' => __( 'Snapchat', 'happy_addons' ),
78
+ 'soundcloud' => __( 'SoundCloud', 'happy_addons' ),
79
+ 'spotify' => __( 'Spotify', 'happy_addons' ),
80
+ 'stack-overflow' => __( 'StackOverflow', 'happy_addons' ),
81
+ 'tripadvisor' => __( 'TripAdvisor', 'happy_addons' ),
82
+ 'tumblr' => __( 'Tumblr', 'happy_addons' ),
83
+ 'twitch' => __( 'Twitch', 'happy_addons' ),
84
+ 'twitter' => __( 'Twitter', 'happy_addons' ),
85
+ 'vimeo' => __( 'Vimeo', 'happy_addons' ),
86
+ 'vk' => __( 'VK', 'happy_addons' ),
87
+ 'website' => __( 'Website', 'happy_addons' ),
88
+ 'whatsapp' => __( 'WhatsApp', 'happy_addons' ),
89
+ 'wordpress' => __( 'WordPress', 'happy_addons' ),
90
+ 'xing' => __( 'Xing', 'happy_addons' ),
91
+ 'yelp' => __( 'Yelp', 'happy_addons' ),
92
+ 'youtube' => __( 'YouTube', 'happy_addons' ),
93
+ ];
94
+ }
95
+
96
+ /**
97
+ * Register content related controls
98
+ */
99
+ protected function register_content_controls() {
100
+ $this->start_controls_section(
101
+ '_section_info',
102
+ [
103
+ 'label' => __( 'Information', 'happy_addons' ),
104
+ 'tab' => Controls_Manager::TAB_CONTENT,
105
+ ]
106
+ );
107
+
108
+ $this->add_control(
109
+ 'image',
110
+ [
111
+ 'label' => __( 'Photo', 'happy_addons' ),
112
+ 'type' => Controls_Manager::MEDIA,
113
+ 'default' => [
114
+ 'url' => Utils::get_placeholder_image_src(),
115
+ ],
116
+ ]
117
+ );
118
+
119
+ $this->add_group_control(
120
+ Group_Control_Image_Size::get_type(),
121
+ [
122
+ 'name' => 'thumbnail',
123
+ 'default' => 'large',
124
+ 'separator' => 'none',
125
+ ]
126
+ );
127
+
128
+ $this->add_control(
129
+ 'title',
130
+ [
131
+ 'label' => __( 'Name', 'happy_addons' ),
132
+ 'label_block' => true,
133
+ 'type' => Controls_Manager::TEXT,
134
+ 'default' => __( 'Happy Member Name', 'happy_addons' ),
135
+ 'placeholder' => __( 'Type Member Name', 'happy_addons' ),
136
+ ]
137
+ );
138
+
139
+ $this->add_control(
140
+ 'job_title',
141
+ [
142
+ 'label' => __( 'Job Title', 'happy_addons' ),
143
+ 'label_block' => true,
144
+ 'type' => Controls_Manager::TEXT,
145
+ 'default' => __( 'Happy Officer', 'happy_addons' ),
146
+ 'placeholder' => __( 'Type Member Job Title', 'happy_addons' ),
147
+ ]
148
+ );
149
+
150
+ $this->add_control(
151
+ 'bio',
152
+ [
153
+ 'label' => __( 'Short Bio', 'happy_addons' ),
154
+ 'type' => Controls_Manager::TEXTAREA,
155
+ 'placeholder' => __( 'Write something amazing about the happy member', 'happy_addons' ),
156
+ 'rows' => 5
157
+ ]
158
+ );
159
+
160
+ $this->add_control(
161
+ 'title_tag',
162
+ [
163
+ 'label' => __( 'Title HTML Tag', 'happy_addons' ),
164
+ 'type' => Controls_Manager::CHOOSE,
165
+ 'options' => [
166
+ 'h1' => [
167
+ 'title' => __( 'H1', 'happy_addons' ),
168
+ 'icon' => 'eicon-editor-h1'
169
+ ],
170
+ 'h2' => [
171
+ 'title' => __( 'H2', 'happy_addons' ),
172
+ 'icon' => 'eicon-editor-h2'
173
+ ],
174
+ 'h3' => [
175
+ 'title' => __( 'H3', 'happy_addons' ),
176
+ 'icon' => 'eicon-editor-h3'
177
+ ],
178
+ 'h4' => [
179
+ 'title' => __( 'H4', 'happy_addons' ),
180
+ 'icon' => 'eicon-editor-h4'
181
+ ],
182
+ 'h5' => [
183
+ 'title' => __( 'H5', 'happy_addons' ),
184
+ 'icon' => 'eicon-editor-h5'
185
+ ],
186
+ 'h6' => [
187
+ 'title' => __( 'H6', 'happy_addons' ),
188
+ 'icon' => 'eicon-editor-h6'
189
+ ]
190
+ ],
191
+ 'default' => 'h2',
192
+ 'toggle' => false,
193
+ ]
194
+ );
195
+
196
+ $this->add_responsive_control(
197
+ 'align',
198
+ [
199
+ 'label' => __( 'Alignment', 'happy_addons' ),
200
+ 'type' => Controls_Manager::CHOOSE,
201
+ 'options' => [
202
+ 'left' => [
203
+ 'title' => __( 'Left', 'happy_addons' ),
204
+ 'icon' => 'fa fa-align-left',
205
+ ],
206
+ 'center' => [
207
+ 'title' => __( 'Center', 'happy_addons' ),
208
+ 'icon' => 'fa fa-align-center',
209
+ ],
210
+ 'right' => [
211
+ 'title' => __( 'Right', 'happy_addons' ),
212
+ 'icon' => 'fa fa-align-right',
213
+ ],
214
+ 'justify' => [
215
+ 'title' => __( 'Justify', 'happy_addons' ),
216
+ 'icon' => 'fa fa-align-justify',
217
+ ],
218
+ ],
219
+ 'toggle' => true,
220
+ 'selectors' => [
221
+ '{{WRAPPER}}' => 'text-align: {{VALUE}}'
222
+ ]
223
+ ]
224
+ );
225
+
226
+ $this->end_controls_section();
227
+
228
+ $this->start_controls_section(
229
+ '_section_social',
230
+ [
231
+ 'label' => __( 'Social Profiles', 'happy_addons' ),
232
+ 'tab' => Controls_Manager::TAB_CONTENT,
233
+ ]
234
+ );
235
+
236
+ $repeater = new Repeater();
237
+
238
+ $repeater->add_control(
239
+ 'name',
240
+ [
241
+ 'label' => __( 'Profile Name', 'happy_addons' ),
242
+ 'type' => Controls_Manager::SELECT2,
243
+ 'select2options' => [
244
+ 'allowClear' => false,
245
+ ],
246
+ 'options' => self::get_profile_names()
247
+ ]
248
+ );
249
+
250
+ $repeater->add_control(
251
+ 'link', [
252
+ 'label' => __( 'Profile Link', 'happy_addons' ),
253
+ 'placeholder' => __( 'Add your profile link', 'happy_addons' ),
254
+ 'type' => Controls_Manager::URL,
255
+ 'label_block' => false,
256
+ 'autocomplete' => false,
257
+ 'show_external' => false,
258
+ 'condition' => [
259
+ 'name!' => 'email'
260
+ ]
261
+ ]
262
+ );
263
+
264
+ $repeater->add_control(
265
+ 'email', [
266
+ 'label' => __( 'Email Address', 'happy_addons' ),
267
+ 'placeholder' => __( 'Add your email address', 'happy_addons' ),
268
+ 'type' => Controls_Manager::TEXT,
269
+ 'label_block' => false,
270
+ 'input_type' => 'email',
271
+ 'condition' => [
272
+ 'name' => 'email'
273
+ ]
274
+ ]
275
+ );
276
+
277
+ $repeater->add_control(
278
+ 'customize',
279
+ [
280
+ 'label' => __( 'Want To Customize?', 'happy_addons' ),
281
+ 'type' => Controls_Manager::SWITCHER,
282
+ 'label_on' => __( 'Yes', 'happy_addons' ),
283
+ 'label_off' => __( 'No', 'happy_addons' ),
284
+ 'return_value' => 'yes',
285
+ ]
286
+ );
287
+
288
+ $repeater->start_controls_tabs(
289
+ '_tab_icon_colors',
290
+ [
291
+ 'condition' => ['customize' => 'yes']
292
+ ]
293
+ );
294
+ $repeater->start_controls_tab(
295
+ '_tab_icon_normal',
296
+ [
297
+ 'label' => __( 'Normal', 'happy_addons' ),
298
+ ]
299
+ );
300
+
301
+ $repeater->add_control(
302
+ 'color',
303
+ [
304
+ 'label' => __( 'Text Color', 'happy_addons' ),
305
+ 'type' => Controls_Manager::COLOR,
306
+ 'selectors' => [
307
+ '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'color: {{VALUE}}',
308
+ ],
309
+ 'condition' => ['customize' => 'yes']
310
+ ]
311
+ );
312
+
313
+ $repeater->add_control(
314
+ 'bg_color',
315
+ [
316
+ 'label' => __( 'Background Color', 'happy_addons' ),
317
+ 'type' => Controls_Manager::COLOR,
318
+ 'selectors' => [
319
+ '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}' => 'background-color: {{VALUE}}',
320
+ ],
321
+ 'condition' => ['customize' => 'yes']
322
+ ]
323
+ );
324
+
325
+ $repeater->end_controls_tab();
326
+ $repeater->start_controls_tab(
327
+ '_tab_icon_hover',
328
+ [
329
+ 'label' => __( 'Hover', 'happy_addons' ),
330
+ ]
331
+ );
332
+
333
+ $repeater->add_control(
334
+ 'hover_color',
335
+ [
336
+ 'label' => __( 'Text Color', 'happy_addons' ),
337
+ 'type' => Controls_Manager::COLOR,
338
+ 'selectors' => [
339
+ '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'color: {{VALUE}}',
340
+ ],
341
+ 'condition' => ['customize' => 'yes']
342
+ ]
343
+ );
344
+
345
+ $repeater->add_control(
346
+ 'hover_bg_color',
347
+ [
348
+ 'label' => __( 'Background Color', 'happy_addons' ),
349
+ 'type' => Controls_Manager::COLOR,
350
+ 'selectors' => [
351
+ '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'background-color: {{VALUE}}',
352
+ ],
353
+ 'condition' => ['customize' => 'yes']
354
+ ]
355
+ );
356
+
357
+ $repeater->add_control(
358
+ 'hover_border_color',
359
+ [
360
+ 'label' => __( 'Border Color', 'happy_addons' ),
361
+ 'type' => Controls_Manager::COLOR,
362
+ 'selectors' => [
363
+ '{{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:hover, {{WRAPPER}} .ha-member-links > {{CURRENT_ITEM}}:focus' => 'border-color: {{VALUE}}',
364
+ ],
365
+ 'condition' => ['customize' => 'yes']
366
+ ]
367
+ );
368
+
369
+ $repeater->end_controls_tab();
370
+ $repeater->end_controls_tabs();
371
+
372
+ $this->add_control(
373
+ 'show_profiles',
374
+ [
375
+ 'label' => __( 'Show Profiles', 'plugin-domain' ),
376
+ 'type' => Controls_Manager::SWITCHER,
377
+ 'label_on' => __( 'Show', 'your-plugin' ),
378
+ 'label_off' => __( 'Hide', 'your-plugin' ),
379
+ 'return_value' => 'yes',
380
+ 'default' => 'yes',
381
+ ]
382
+ );
383
+
384
+ $this->add_control(
385
+ 'profiles',
386
+ [
387
+ 'show_label' => false,
388
+ 'type' => Controls_Manager::REPEATER,
389
+ 'fields' => $repeater->get_controls(),
390
+ 'title_field' => '<# print(name.slice(0,1).toUpperCase() + name.slice(1)) #>',
391
+ 'default' => [
392
+ [
393
+ 'link' => ['url' => 'https://facebook.com/'],
394
+ 'name' => 'facebook'
395
+ ],
396
+ [
397
+ 'link' => ['url' => 'https://twitter.com/'],
398
+ 'name' => 'twitter'
399
+ ],
400
+ [
401
+ 'link' => ['url' => 'https://linkedin.com/'],
402
+ 'name' => 'linkedin'
403
+ ]
404
+ ]
405
+ ]
406
+ );
407
+
408
+ $this->end_controls_section();
409
+ }
410
+
411
+ /**
412
+ * Register styles related controls
413
+ */
414
+ protected function register_style_controls() {
415
+ $this->start_controls_section(
416
+ '_section_style_image',
417
+ [
418
+ 'label' => __( 'Photo', 'happy_addons' ),
419
+ 'tab' => Controls_Manager::TAB_STYLE,
420
+ ]
421
+ );
422
+
423
+ $this->add_responsive_control(
424
+ 'image_width',
425
+ [
426
+ 'label' => __( 'Width', 'happy_addons' ),
427
+ 'type' => Controls_Manager::SLIDER,
428
+ 'size_units' => [ 'px', '%'],
429
+ 'range' => [
430
+ '%' => [
431
+ 'min' => 20,
432
+ 'max' => 100,
433
+ ],
434
+ 'px' => [
435
+ 'min' => 100,
436
+ 'max' => 700,
437
+ ],
438
+ ],
439
+ 'selectors' => [
440
+ '{{WRAPPER}} .ha-member-figure' => 'width: {{SIZE}}{{UNIT}};',
441
+ ],
442
+ ]
443
+ );
444
+
445
+ $this->add_responsive_control(
446
+ 'image_height',
447
+ [
448
+ 'label' => __( 'Height', 'happy_addons' ),
449
+ 'type' => Controls_Manager::SLIDER,
450
+ 'size_units' => [ 'px' ],
451
+ 'range' => [
452
+ 'px' => [
453
+ 'min' => 100,
454
+ 'max' => 700,
455
+ ],
456
+ ],
457
+ 'selectors' => [
458
+ '{{WRAPPER}} .ha-member-figure' => 'height: {{SIZE}}{{UNIT}};',
459
+ ],
460
+ ]
461
+ );
462
+
463
+ $this->add_responsive_control(
464
+ 'image_spacing',
465
+ [
466
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
467
+ 'type' => Controls_Manager::SLIDER,
468
+ 'size_units' => ['px'],
469
+ 'selectors' => [
470
+ '{{WRAPPER}} .ha-member-figure' => 'margin-bottom: {{SIZE}}{{UNIT}} !important;',
471
+ ],
472
+ ]
473
+ );
474
+
475
+ $this->add_responsive_control(
476
+ 'image_padding',
477
+ [
478
+ 'label' => __( 'Padding', 'happy_addons' ),
479
+ 'type' => Controls_Manager::DIMENSIONS,
480
+ 'size_units' => [ 'px', 'em', '%' ],
481
+ 'selectors' => [
482
+ '{{WRAPPER}} .ha-member-figure > img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
483
+ ],
484
+ ]
485
+ );
486
+
487
+ $this->add_group_control(
488
+ Group_Control_Border::get_type(),
489
+ [
490
+ 'name' => 'image_border',
491
+ 'selector' => '{{WRAPPER}} .ha-member-figure > img, {{WRAPPER}} .ha-blurb-figure--icon'
492
+ ]
493
+ );
494
+
495
+ $this->add_responsive_control(
496
+ 'image_border_radius',
497
+ [
498
+ 'label' => __( 'Border Radius', 'happy_addons' ),
499
+ 'type' => Controls_Manager::DIMENSIONS,
500
+ 'size_units' => [ 'px', '%' ],
501
+ 'selectors' => [
502
+ '{{WRAPPER}} .ha-member-figure > img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
503
+ ],
504
+ ]
505
+ );
506
+
507
+ $this->add_group_control(
508
+ Group_Control_Box_Shadow::get_type(),
509
+ [
510
+ 'name' => 'image_box_shadow',
511
+ 'exclude' => [
512
+ 'box_shadow_position',
513
+ ],
514
+ 'selector' => '{{WRAPPER}} .ha-member-figure > img'
515
+ ]
516
+ );
517
+
518
+ $this->end_controls_section();
519
+
520
+ $this->start_controls_section(
521
+ '_section_style_content',
522
+ [
523
+ 'label' => __( 'Name, Job Title & Bio', 'happy_addons' ),
524
+ 'tab' => Controls_Manager::TAB_STYLE,
525
+ ]
526
+ );
527
+
528
+ $this->add_responsive_control(
529
+ 'content_padding',
530
+ [
531
+ 'label' => __( 'Content Padding', 'happy_addons' ),
532
+ 'type' => Controls_Manager::DIMENSIONS,
533
+ 'size_units' => [ 'px', 'em', '%' ],
534
+ 'selectors' => [
535
+ '{{WRAPPER}} .ha-member-body' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
536
+ ],
537
+ ]
538
+ );
539
+
540
+ $this->add_control(
541
+ '_heading_title',
542
+ [
543
+ 'type' => Controls_Manager::HEADING,
544
+ 'label' => __( 'Name', 'happy_addons' ),
545
+ 'separator' => 'before',
546
+ ]
547
+ );
548
+
549
+ $this->add_responsive_control(
550
+ 'title_spacing',
551
+ [
552
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
553
+ 'type' => Controls_Manager::SLIDER,
554
+ 'size_units' => ['px'],
555
+ 'selectors' => [
556
+ '{{WRAPPER}} .ha-member-name' => 'margin-bottom: {{SIZE}}{{UNIT}};',
557
+ ],
558
+ ]
559
+ );
560
+
561
+ $this->add_control(
562
+ 'title_color',
563
+ [
564
+ 'label' => __( 'Text Color', 'happy_addons' ),
565
+ 'type' => Controls_Manager::COLOR,
566
+ 'selectors' => [
567
+ '{{WRAPPER}} .ha-member-name' => 'color: {{VALUE}}',
568
+ ],
569
+ ]
570
+ );
571
+
572
+ $this->add_group_control(
573
+ Group_Control_Typography::get_type(),
574
+ [
575
+ 'name' => 'title_typography',
576
+ 'selector' => '{{WRAPPER}} .ha-member-name',
577
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_2,
578
+ ]
579
+ );
580
+
581
+ $this->add_group_control(
582
+ Group_Control_Text_Shadow::get_type(),
583
+ [
584
+ 'name' => 'title_text_shadow',
585
+ 'selector' => '{{WRAPPER}} .ha-member-name',
586
+ ]
587
+ );
588
+
589
+ $this->add_control(
590
+ '_heading_job_title',
591
+ [
592
+ 'type' => Controls_Manager::HEADING,
593
+ 'label' => __( 'Job Title', 'happy_addons' ),
594
+ 'separator' => 'before'
595
+ ]
596
+ );
597
+
598
+ $this->add_responsive_control(
599
+ 'job_title_spacing',
600
+ [
601
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
602
+ 'type' => Controls_Manager::SLIDER,
603
+ 'size_units' => ['px'],
604
+ 'selectors' => [
605
+ '{{WRAPPER}} .ha-member-position' => 'margin-bottom: {{SIZE}}{{UNIT}};',
606
+ ],
607
+ ]
608
+ );
609
+
610
+ $this->add_control(
611
+ 'job_title_color',
612
+ [
613
+ 'label' => __( 'Text Color', 'happy_addons' ),
614
+ 'type' => Controls_Manager::COLOR,
615
+ 'selectors' => [
616
+ '{{WRAPPER}} .ha-member-position' => 'color: {{VALUE}}',
617
+ ],
618
+ ]
619
+ );
620
+
621
+ $this->add_group_control(
622
+ Group_Control_Typography::get_type(),
623
+ [
624
+ 'name' => 'job_title_typography',
625
+ 'selector' => '{{WRAPPER}} .ha-member-position',
626
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
627
+ ]
628
+ );
629
+
630
+ $this->add_group_control(
631
+ Group_Control_Text_Shadow::get_type(),
632
+ [
633
+ 'name' => 'job_title_text_shadow',
634
+ 'selector' => '{{WRAPPER}} .ha-member-position',
635
+ ]
636
+ );
637
+
638
+ $this->add_control(
639
+ '_heading_bio',
640
+ [
641
+ 'type' => Controls_Manager::HEADING,
642
+ 'label' => __( 'Short Bio', 'happy_addons' ),
643
+ 'separator' => 'before'
644
+ ]
645
+ );
646
+
647
+ $this->add_responsive_control(
648
+ 'bio_spacing',
649
+ [
650
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
651
+ 'type' => Controls_Manager::SLIDER,
652
+ 'size_units' => ['px'],
653
+ 'selectors' => [
654
+ '{{WRAPPER}} .ha-member-bio' => 'margin-bottom: {{SIZE}}{{UNIT}};',
655
+ ],
656
+ ]
657
+ );
658
+
659
+ $this->add_control(
660
+ 'bio_color',
661
+ [
662
+ 'label' => __( 'Text Color', 'happy_addons' ),
663
+ 'type' => Controls_Manager::COLOR,
664
+ 'selectors' => [
665
+ '{{WRAPPER}} .ha-member-bio' => 'color: {{VALUE}}',
666
+ ],
667
+ ]
668
+ );
669
+
670
+ $this->add_group_control(
671
+ Group_Control_Typography::get_type(),
672
+ [
673
+ 'name' => 'bio_typography',
674
+ 'selector' => '{{WRAPPER}} .ha-member-bio',
675
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
676
+ ]
677
+ );
678
+
679
+ $this->add_group_control(
680
+ Group_Control_Text_Shadow::get_type(),
681
+ [
682
+ 'name' => 'bio_text_shadow',
683
+ 'selector' => '{{WRAPPER}} .ha-member-bio',
684
+ ]
685
+ );
686
+
687
+ $this->end_controls_section();
688
+
689
+ $this->start_controls_section(
690
+ '_section_style_social',
691
+ [
692
+ 'label' => __( 'Social Icons', 'happy_addons' ),
693
+ 'tab' => Controls_Manager::TAB_STYLE,
694
+ ]
695
+ );
696
+
697
+ $this->add_responsive_control(
698
+ 'links_spacing',
699
+ [
700
+ 'label' => __( 'Right Spacing', 'happy_addons' ),
701
+ 'type' => Controls_Manager::SLIDER,
702
+ 'size_units' => ['px'],
703
+ 'selectors' => [
704
+ '{{WRAPPER}} .ha-member-links > a:not(:last-child)' => 'margin-right: {{SIZE}}{{UNIT}};',
705
+ ],
706
+ ]
707
+ );
708
+
709
+ $this->add_responsive_control(
710
+ 'links_padding',
711
+ [
712
+ 'label' => __( 'Padding', 'happy_addons' ),
713
+ 'type' => Controls_Manager::SLIDER,
714
+ 'size_units' => ['px'],
715
+ 'selectors' => [
716
+ '{{WRAPPER}} .ha-member-links > a' => 'padding: {{SIZE}}{{UNIT}};',
717
+ ],
718
+ ]
719
+ );
720
+
721
+ $this->add_responsive_control(
722
+ 'links_icon_size',
723
+ [
724
+ 'label' => __( 'Icon Size', 'happy_addons' ),
725
+ 'type' => Controls_Manager::SLIDER,
726
+ 'size_units' => ['px'],
727
+ 'selectors' => [
728
+ '{{WRAPPER}} .ha-member-links > a' => 'font-size: {{SIZE}}{{UNIT}};',
729
+ ],
730
+ ]
731
+ );
732
+
733
+ $this->add_group_control(
734
+ Group_Control_Border::get_type(),
735
+ [
736
+ 'name' => 'links_border',
737
+ 'selector' => '{{WRAPPER}} .ha-member-links > a'
738
+ ]
739
+ );
740
+
741
+ $this->add_responsive_control(
742
+ 'links_border_radius',
743
+ [
744
+ 'label' => __( 'Border Radius', 'happy_addons' ),
745
+ 'type' => Controls_Manager::DIMENSIONS,
746
+ 'size_units' => [ 'px', '%' ],
747
+ 'selectors' => [
748
+ '{{WRAPPER}} .ha-member-links > a' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
749
+ ],
750
+ ]
751
+ );
752
+
753
+ $this->start_controls_tabs( '_tab_links_colors' );
754
+ $this->start_controls_tab(
755
+ '_tab_links_normal',
756
+ [
757
+ 'label' => __( 'Normal', 'happy_addons' ),
758
+ ]
759
+ );
760
+
761
+ $this->add_control(
762
+ 'links_color',
763
+ [
764
+ 'label' => __( 'Text Color', 'happy_addons' ),
765
+ 'type' => Controls_Manager::COLOR,
766
+ 'selectors' => [
767
+ '{{WRAPPER}} .ha-member-links > a' => 'color: {{VALUE}}',
768
+ ],
769
+ ]
770
+ );
771
+
772
+ $this->add_control(
773
+ 'links_bg_color',
774
+ [
775
+ 'label' => __( 'Background Color', 'happy_addons' ),
776
+ 'type' => Controls_Manager::COLOR,
777
+ 'selectors' => [
778
+ '{{WRAPPER}} .ha-member-links > a' => 'background-color: {{VALUE}}',
779
+ ],
780
+ ]
781
+ );
782
+
783
+ $this->end_controls_tab();
784
+ $this->start_controls_tab(
785
+ '_tab_links_hover',
786
+ [
787
+ 'label' => __( 'Hover', 'happy_addons' ),
788
+ ]
789
+ );
790
+
791
+ $this->add_control(
792
+ 'links_hover_color',
793
+ [
794
+ 'label' => __( 'Text Color', 'happy_addons' ),
795
+ 'type' => Controls_Manager::COLOR,
796
+ 'selectors' => [
797
+ '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'color: {{VALUE}}',
798
+ ],
799
+ ]
800
+ );
801
+
802
+ $this->add_control(
803
+ 'links_hover_bg_color',
804
+ [
805
+ 'label' => __( 'Background Color', 'happy_addons' ),
806
+ 'type' => Controls_Manager::COLOR,
807
+ 'selectors' => [
808
+ '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'background-color: {{VALUE}}',
809
+ ],
810
+ ]
811
+ );
812
+
813
+ $this->add_control(
814
+ 'links_hover_border_color',
815
+ [
816
+ 'label' => __( 'Border Color', 'happy_addons' ),
817
+ 'type' => Controls_Manager::COLOR,
818
+ 'selectors' => [
819
+ '{{WRAPPER}} .ha-member-links > a:hover, {{WRAPPER}} .ha-member-links > a:focus' => 'border-color: {{VALUE}};',
820
+ ],
821
+ 'condition' => [
822
+ 'links_border_border!' => '',
823
+ ]
824
+ ]
825
+ );
826
+
827
+ $this->end_controls_tab();
828
+ $this->end_controls_tabs();
829
+
830
+ $this->end_controls_section();
831
+ }
832
+
833
+ protected function render() {
834
+ $settings = $this->get_settings_for_display();
835
+
836
+ $this->add_inline_editing_attributes( 'title', 'none' );
837
+ $this->add_render_attribute( 'title', 'class', 'ha-member-name' );
838
+
839
+ $this->add_inline_editing_attributes( 'job_title', 'none' );
840
+ $this->add_render_attribute( 'job_title', 'class', 'ha-member-position' );
841
+
842
+ $this->add_inline_editing_attributes( 'bio', 'basic' );
843
+ $this->add_render_attribute( 'bio', 'class', 'ha-member-bio' );
844
+ ?>
845
+
846
+ <?php if ( $settings['image']['url'] || $settings['image']['id'] ) :
847
+ $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
848
+ $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
849
+ $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
850
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
851
+ ?>
852
+ <figure class="ha-member-figure">
853
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
854
+ </figure>
855
+ <?php endif; ?>
856
+
857
+ <div class="ha-member-body">
858
+ <?php if ( $settings['title'] ) :
859
+ printf( '<%1$s %2$s>%3$s</%1$s>',
860
+ tag_escape( $settings['title_tag'] ),
861
+ $this->get_render_attribute_string( 'title' ),
862
+ esc_html( $settings['title'] )
863
+ );
864
+ endif; ?>
865
+
866
+ <?php if ( $settings['job_title' ] ) : ?>
867
+ <div <?php echo $this->get_render_attribute_string( 'job_title' ); ?>><?php echo esc_html( $settings['job_title' ] ); ?></div>
868
+ <?php endif; ?>
869
+
870
+ <?php if ( $settings['bio'] ) : ?>
871
+ <div <?php echo $this->get_render_attribute_string( 'bio' ); ?>>
872
+ <p><?php echo wp_kses_data( $settings['bio'] ); ?></p>
873
+ </div>
874
+ <?php endif; ?>
875
+
876
+ <?php if ( $settings['show_profiles' ] && is_array( $settings['profiles' ] ) ) : ?>
877
+ <div class="ha-member-links">
878
+ <?php
879
+ foreach ( $settings['profiles'] as $profile ) :
880
+ $icon = $profile['name'];
881
+ $url = esc_url( $profile['link']['url'] );
882
+
883
+ if ($profile['name'] === 'website') {
884
+ $icon = 'globe';
885
+ } elseif ($profile['name'] === 'email') {
886
+ $icon = 'envelope';
887
+ $url = 'mailto:' . antispambot( $profile['email'] );
888
+ }
889
+
890
+ printf( '<a target="_blank" rel="noopener" data-tooltip="hello" href="%s" class="elementor-repeater-item-%s"><i class="fa fa-%s" aria-hidden="true"></i></a>',
891
+ $url,
892
+ esc_attr( $profile['_id'] ),
893
+ esc_attr( $icon )
894
+ );
895
+ endforeach; ?>
896
+ </div>
897
+ <?php endif; ?>
898
+ </div>
899
+ <?php
900
+ }
901
+
902
+ public function _content_template() {
903
+ ?>
904
+ <#
905
+ view.addInlineEditingAttributes( 'title', 'none' );
906
+ view.addRenderAttribute( 'title', 'class', 'ha-member-name' );
907
+
908
+ view.addInlineEditingAttributes( 'job_title', 'none' );
909
+ view.addRenderAttribute( 'job_title', 'class', 'ha-member-position' );
910
+
911
+ view.addInlineEditingAttributes( 'bio', 'basic' );
912
+ view.addRenderAttribute( 'bio', 'class', 'ha-member-bio' );
913
+
914
+ if ( settings.image.url || settings.image.id ) {
915
+ var image = {
916
+ id: settings.image.id,
917
+ url: settings.image.url,
918
+ size: settings.thumbnail_size,
919
+ dimension: settings.thumbnail_custom_dimension,
920
+ model: view.getEditModel()
921
+ };
922
+
923
+ var image_url = elementor.imagesManager.getImageUrl( image );
924
+ #>
925
+ <figure class="ha-member-figure">
926
+ <img src="{{ image_url }}">
927
+ </figure>
928
+ <# } #>
929
+ <div class="ha-member-body">
930
+ <# if (settings.title) { #>
931
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
932
+ <# } #>
933
+ <# if (settings.job_title) { #>
934
+ <div {{{ view.getRenderAttributeString( 'job_title' ) }}}>{{ settings.job_title }}</div>
935
+ <# } #>
936
+ <# if (settings.bio) { #>
937
+ <div {{{ view.getRenderAttributeString( 'bio' ) }}}>
938
+ <p>{{{ settings.bio }}}</p>
939
+ </div>
940
+ <# } #>
941
+ <# if (settings.show_profiles && _.isArray(settings.profiles)) { #>
942
+ <div class="ha-member-links">
943
+ <# _.each(settings.profiles, function(profile, index) {
944
+ var icon = profile.name,
945
+ url = profile.link.url,
946
+ linkKey = view.getRepeaterSettingKey( 'profile', 'profiles', index);
947
+
948
+ if (profile.name === 'website') {
949
+ icon = 'globe';
950
+ } else if (profile.name === 'email') {
951
+ icon = 'envelope'
952
+ url = 'mailto:' + profile.email;
953
+ }
954
+
955
+ view.addRenderAttribute( linkKey, 'class', 'elementor-repeater-item-' + profile._id );
956
+ view.addRenderAttribute( linkKey, 'href', url ); #>
957
+ <a {{{view.getRenderAttributeString( linkKey )}}}><i class="fa fa-{{{icon}}}"></i></a>
958
+ <# }); #>
959
+ </div>
960
+ <# } #>
961
+ </div>
962
+ <?php
963
+ }
964
+ }
widgets/review/widget.php ADDED
@@ -0,0 +1,791 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Review widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Scheme_Typography;
10
+ use Elementor\Utils;
11
+ use Elementor\Control_Media;
12
+ use Elementor\Controls_Manager;
13
+ use Elementor\Group_Control_Border;
14
+ use Elementor\Group_Control_Box_Shadow;
15
+ use Elementor\Group_Control_Image_Size;
16
+ use Elementor\Group_Control_Typography;
17
+
18
+ defined( 'ABSPATH' ) || die();
19
+
20
+ class Review extends Base {
21
+
22
+ /**
23
+ * Get widget title.
24
+ *
25
+ * @since 1.0.0
26
+ * @access public
27
+ *
28
+ * @return string Widget title.
29
+ */
30
+ public function get_title() {
31
+ return __( 'Review', 'happy_addons' );
32
+ }
33
+
34
+ /**
35
+ * Get widget icon.
36
+ *
37
+ * @since 1.0.0
38
+ * @access public
39
+ *
40
+ * @return string Widget icon.
41
+ */
42
+ public function get_icon() {
43
+ return 'hm hm-review';
44
+ }
45
+
46
+ public function get_keywords() {
47
+ return [ 'review', 'comment', 'feedback', 'testimonial' ];
48
+ }
49
+
50
+ protected function register_content_controls() {
51
+ $this->start_controls_section(
52
+ '_section_content',
53
+ [
54
+ 'label' => __( 'Content', 'happy_addons' ),
55
+ 'tab' => Controls_Manager::TAB_CONTENT,
56
+ ]
57
+ );
58
+
59
+ $this->start_controls_tabs( '_tab_content' );
60
+ $this->start_controls_tab(
61
+ '_tab_reviewer',
62
+ [
63
+ 'label' => __( 'Reviewer', 'happy_addons' ),
64
+ ]
65
+ );
66
+
67
+ $this->add_control(
68
+ 'image',
69
+ [
70
+ 'label' => __( 'Photo', 'happy_addons' ),
71
+ 'type' => Controls_Manager::MEDIA,
72
+ 'default' => [
73
+ 'url' => Utils::get_placeholder_image_src(),
74
+ ],
75
+ ]
76
+ );
77
+
78
+ $this->add_control(
79
+ 'title',
80
+ [
81
+ 'label' => __( 'Name', 'happy_addons' ),
82
+ 'type' => Controls_Manager::TEXT,
83
+ 'default' => __( 'Happy Reviewer', 'happy_addons' ),
84
+ 'placeholder' => __( 'Type Reviewer Name', 'happy_addons' ),
85
+ ]
86
+ );
87
+
88
+ $this->add_control(
89
+ 'job_title',
90
+ [
91
+ 'label' => __( 'Job Title', 'happy_addons' ),
92
+ 'type' => Controls_Manager::TEXT,
93
+ 'default' => __( 'Happy Officer', 'happy_addons' ),
94
+ 'placeholder' => __( 'Type Reviewer Job Title', 'happy_addons' ),
95
+ ]
96
+ );
97
+
98
+ $this->add_group_control(
99
+ Group_Control_Image_Size::get_type(),
100
+ [
101
+ 'name' => 'thumbnail',
102
+ 'default' => 'large',
103
+ 'separator' => 'none',
104
+ ]
105
+ );
106
+
107
+ $this->add_control(
108
+ 'image_position',
109
+ [
110
+ 'label' => __( 'Image Position', 'happy_addons' ),
111
+ 'type' => Controls_Manager::CHOOSE,
112
+ 'label_block' => false,
113
+ 'options' => [
114
+ 'left' => [
115
+ 'title' => __( 'Left', 'happy_addons' ),
116
+ 'icon' => 'eicon-h-align-left',
117
+ ],
118
+ 'top' => [
119
+ 'title' => __( 'Top', 'happy_addons' ),
120
+ 'icon' => 'eicon-v-align-top',
121
+ ],
122
+ 'right' => [
123
+ 'title' => __( 'Right', 'happy_addons' ),
124
+ 'icon' => 'eicon-h-align-right',
125
+ ],
126
+ ],
127
+ 'default' => 'top',
128
+ 'toggle' => false,
129
+ 'prefix_class' => 'ha-review--'
130
+ ]
131
+ );
132
+
133
+ $this->add_control(
134
+ 'title_tag',
135
+ [
136
+ 'label' => __( 'Name HTML Tag', 'happy_addons' ),
137
+ 'type' => Controls_Manager::CHOOSE,
138
+ 'options' => [
139
+ 'h1' => [
140
+ 'title' => __( 'H1', 'happy_addons' ),
141
+ 'icon' => 'eicon-editor-h1'
142
+ ],
143
+ 'h2' => [
144
+ 'title' => __( 'H2', 'happy_addons' ),
145
+ 'icon' => 'eicon-editor-h2'
146
+ ],
147
+ 'h3' => [
148
+ 'title' => __( 'H3', 'happy_addons' ),
149
+ 'icon' => 'eicon-editor-h3'
150
+ ],
151
+ 'h4' => [
152
+ 'title' => __( 'H4', 'happy_addons' ),
153
+ 'icon' => 'eicon-editor-h4'
154
+ ],
155
+ 'h5' => [
156
+ 'title' => __( 'H5', 'happy_addons' ),
157
+ 'icon' => 'eicon-editor-h5'
158
+ ],
159
+ 'h6' => [
160
+ 'title' => __( 'H6', 'happy_addons' ),
161
+ 'icon' => 'eicon-editor-h6'
162
+ ]
163
+ ],
164
+ 'default' => 'h2',
165
+ 'toggle' => false,
166
+ ]
167
+ );
168
+
169
+ $this->end_controls_tab();
170
+
171
+ $this->start_controls_tab(
172
+ '_tab_review',
173
+ [
174
+ 'label' => __( 'Review', 'happy_addons' ),
175
+ ]
176
+ );
177
+ $this->add_control(
178
+ 'ratting',
179
+ [
180
+ 'label' => __( 'Ratting', 'happy_addons' ),
181
+ 'type' => Controls_Manager::SLIDER,
182
+ 'default' => [
183
+ 'unit' => 'px',
184
+ 'size' => 4.2,
185
+ ],
186
+ 'size_units' => [ 'px' ],
187
+ 'range' => [
188
+ 'px' => [
189
+ 'min' => 0,
190
+ 'max' => 5,
191
+ 'step' => .1,
192
+ ],
193
+ ],
194
+ ]
195
+ );
196
+
197
+ $this->add_control(
198
+ 'ratting_style',
199
+ [
200
+ 'label' => __( 'Style', 'happy_addons' ),
201
+ 'type' => Controls_Manager::SELECT,
202
+ 'options' => [
203
+ 'star' => __( 'Star Rating', 'happy_addons' ),
204
+ 'num' => __( 'Number Rating', 'happy_addons' ),
205
+ ],
206
+ 'default' => 'star',
207
+ ]
208
+ );
209
+
210
+ $this->add_control(
211
+ 'review',
212
+ [
213
+ 'label' => __( 'Review', 'happy_addons' ),
214
+ 'type' => Controls_Manager::TEXTAREA,
215
+ 'default' => __( 'Happy reviewer is super excited being part of happy addons family', 'happy_addons' ),
216
+ 'placeholder' => __( 'Type amazing review from happy reviewer', 'happy_addons' ),
217
+ ]
218
+ );
219
+ $this->end_controls_tab();
220
+ $this->end_controls_tabs();
221
+
222
+ $this->add_responsive_control(
223
+ 'align',
224
+ [
225
+ 'label' => __( 'Alignment', 'happy_addons' ),
226
+ 'type' => Controls_Manager::CHOOSE,
227
+ 'separator' => 'before',
228
+ 'options' => [
229
+ 'left' => [
230
+ 'title' => __( 'Left', 'happy_addons' ),
231
+ 'icon' => 'fa fa-align-left',
232
+ ],
233
+ 'center' => [
234
+ 'title' => __( 'Center', 'happy_addons' ),
235
+ 'icon' => 'fa fa-align-center',
236
+ ],
237
+ 'right' => [
238
+ 'title' => __( 'Right', 'happy_addons' ),
239
+ 'icon' => 'fa fa-align-right',
240
+ ],
241
+ 'justify' => [
242
+ 'title' => __( 'Justify', 'happy_addons' ),
243
+ 'icon' => 'fa fa-align-justify',
244
+ ],
245
+ ],
246
+ 'toggle' => true,
247
+ 'selectors' => [
248
+ '{{WRAPPER}} .elementor-widget-container' => 'text-align: {{VALUE}}'
249
+ ]
250
+ ]
251
+ );
252
+
253
+ $this->add_control(
254
+ 'review_position',
255
+ [
256
+ 'label' => __( 'Review Position', 'happy_addons' ),
257
+ 'type' => Controls_Manager::SELECT,
258
+ 'options' => [
259
+ 'before' => __( 'Review Before', 'happy_addons' ),
260
+ 'after' => __( 'Review After', 'happy_addons' ),
261
+ ],
262
+ 'default' => 'before',
263
+ ]
264
+ );
265
+
266
+ $this->end_controls_section();
267
+ }
268
+
269
+ protected function register_style_controls() {
270
+ $this->start_controls_section(
271
+ '_section_photo_style',
272
+ [
273
+ 'label' => __( 'Photo', 'happy_addons' ),
274
+ 'tab' => Controls_Manager::TAB_STYLE,
275
+ ]
276
+ );
277
+
278
+ $this->add_responsive_control(
279
+ 'image_width',
280
+ [
281
+ 'label' => __( 'Width', 'happy_addons' ),
282
+ 'type' => Controls_Manager::SLIDER,
283
+ 'size_units' => [ 'px', '%' ],
284
+ 'range' => [
285
+ 'px' => [
286
+ 'min' => 70,
287
+ 'max' => 500,
288
+ ],
289
+ '%' => [
290
+ 'min' => 10,
291
+ 'max' => 100,
292
+ ],
293
+ ],
294
+ 'selectors' => [
295
+ '{{WRAPPER}} .ha-review-figure' => 'flex: 0 0 {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}};',
296
+ '{{WRAPPER}}.ha-review--right .ha-review-body, {{WRAPPER}}.ha-review--left .ha-review-body' => 'flex: 0 0 calc(100% - {{SIZE}}{{UNIT}}); max-width: calc(100% - {{SIZE}}{{UNIT}});',
297
+ ],
298
+ ]
299
+ );
300
+
301
+ $this->add_responsive_control(
302
+ 'image_height',
303
+ [
304
+ 'label' => __( 'Height', 'happy_addons' ),
305
+ 'type' => Controls_Manager::SLIDER,
306
+ 'size_units' => [ 'px' ],
307
+ 'range' => [
308
+ 'px' => [
309
+ 'min' => 70,
310
+ 'max' => 500,
311
+ ],
312
+ ],
313
+ 'selectors' => [
314
+ '{{WRAPPER}} .ha-review-figure' => 'height: {{SIZE}}{{UNIT}};',
315
+ ],
316
+ ]
317
+ );
318
+
319
+ $this->add_control(
320
+ 'offset_toggle',
321
+ [
322
+ 'label' => __( 'Offset', 'plugin-name' ),
323
+ 'type' => Controls_Manager::POPOVER_TOGGLE,
324
+ 'label_off' => __( 'None', 'your-plugin' ),
325
+ 'label_on' => __( 'Custom', 'your-plugin' ),
326
+ 'return_value' => 'yes',
327
+ ]
328
+ );
329
+
330
+ $this->start_popover();
331
+
332
+ $this->add_responsive_control(
333
+ 'image_offset_x',
334
+ [
335
+ 'label' => __( 'Offset X', 'happy_addons' ),
336
+ 'type' => Controls_Manager::SLIDER,
337
+ 'size_units' => ['px'],
338
+ 'condition' => [
339
+ 'offset_toggle' => 'yes'
340
+ ],
341
+ 'default' => [
342
+ 'size' => 1
343
+ ],
344
+ 'range' => [
345
+ 'px' => [
346
+ 'min' => -1000,
347
+ 'max' => 1000,
348
+ ],
349
+ ],
350
+ 'render_type' => 'ui'
351
+ ]
352
+ );
353
+
354
+ $this->add_responsive_control(
355
+ 'image_offset_y',
356
+ [
357
+ 'label' => __( 'Offset Y', 'happy_addons' ),
358
+ 'type' => Controls_Manager::SLIDER,
359
+ 'size_units' => ['px'],
360
+ 'condition' => [
361
+ 'offset_toggle' => 'yes'
362
+ ],
363
+ 'default' => [
364
+ 'size' => 1
365
+ ],
366
+ 'range' => [
367
+ 'px' => [
368
+ 'min' => -1000,
369
+ 'max' => 1000,
370
+ ],
371
+ ],
372
+ 'selectors' => [
373
+ '{{WRAPPER}} .ha-review-figure' => '-ms-transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); -webkit-transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}}); transform: translate({{image_offset_x.SIZE}}{{UNIT}}, {{SIZE}}{{UNIT}});',
374
+ '{{WRAPPER}}.ha-review--top .ha-review-body' => 'margin-top: {{SIZE}}{{UNIT}};',
375
+ '{{WRAPPER}}.ha-review--left .ha-review-body' =>
376
+ 'margin-left: {{image_offset_x.SIZE}}{{UNIT}};'
377
+ . 'flex: 0 0 calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + (-1 * {{image_offset_x.SIZE}}{{UNIT}}));'
378
+ . 'max-width: calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + (-1 * {{image_offset_x.SIZE}}{{UNIT}}));',
379
+ '{{WRAPPER}}.ha-review--right .ha-review-body' =>
380
+ 'margin-right: calc(-1 * {{image_offset_x.SIZE}}{{UNIT}});'
381
+ . 'flex: 0 0 calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + {{image_offset_x.SIZE}}{{UNIT}});'
382
+ . 'max-width: calc((100% - {{image_width.SIZE}}{{image_width.UNIT}}) + {{image_offset_x.SIZE}}{{UNIT}});',
383
+ ],
384
+ ]
385
+ );
386
+ $this->end_popover();
387
+
388
+ $this->add_responsive_control(
389
+ 'image_padding',
390
+ [
391
+ 'label' => __( 'Padding', 'happy_addons' ),
392
+ 'type' => Controls_Manager::DIMENSIONS,
393
+ 'size_units' => [ 'px', 'em', '%' ],
394
+ 'selectors' => [
395
+ '{{WRAPPER}} .ha-review-figure > img' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
396
+ ],
397
+ ]
398
+ );
399
+
400
+ $this->add_group_control(
401
+ Group_Control_Border::get_type(),
402
+ [
403
+ 'name' => 'image_border',
404
+ 'selector' => '{{WRAPPER}} .ha-review-figure > img',
405
+ ]
406
+ );
407
+
408
+ $this->add_responsive_control(
409
+ 'image_border_radius',
410
+ [
411
+ 'label' => __( 'Border Radius', 'happy_addons' ),
412
+ 'type' => Controls_Manager::DIMENSIONS,
413
+ 'size_units' => [ 'px', '%' ],
414
+ 'selectors' => [
415
+ '{{WRAPPER}} .ha-review-figure > img' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
416
+ ],
417
+ ]
418
+ );
419
+
420
+ $this->add_group_control(
421
+ Group_Control_Box_Shadow::get_type(),
422
+ [
423
+ 'name' => 'image_box_shadow',
424
+ 'exclude' => [
425
+ 'box_shadow_position',
426
+ ],
427
+ 'selector' => '{{WRAPPER}} .ha-review-figure > img',
428
+ ]
429
+ );
430
+
431
+ $this->end_controls_section();
432
+
433
+ $this->start_controls_section(
434
+ '_section_review_style',
435
+ [
436
+ 'label' => __( 'Review', 'happy_addons' ),
437
+ 'tab' => Controls_Manager::TAB_STYLE,
438
+ ]
439
+ );
440
+
441
+ $this->add_responsive_control(
442
+ 'body_padding',
443
+ [
444
+ 'label' => __( 'Text Box Padding', 'happy_addons' ),
445
+ 'type' => Controls_Manager::DIMENSIONS,
446
+ 'size_units' => [ 'px', 'em', '%' ],
447
+ 'selectors' => [
448
+ '{{WRAPPER}} .ha-review-body' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
449
+ ],
450
+ ]
451
+ );
452
+
453
+ $this->add_control(
454
+ '_heading_name',
455
+ [
456
+ 'type' => Controls_Manager::HEADING,
457
+ 'label' => __( 'Name', 'happy_addons' ),
458
+ 'separator' => 'before'
459
+ ]
460
+ );
461
+
462
+ $this->add_responsive_control(
463
+ 'title_spacing',
464
+ [
465
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
466
+ 'type' => Controls_Manager::SLIDER,
467
+ 'size_units' => ['px'],
468
+ 'selectors' => [
469
+ '{{WRAPPER}} .ha-review-reviewer' => 'margin-bottom: {{SIZE}}{{UNIT}};',
470
+ ],
471
+ ]
472
+ );
473
+
474
+ $this->add_control(
475
+ 'name_color',
476
+ [
477
+ 'label' => __( 'Text Color', 'happy_addons' ),
478
+ 'type' => Controls_Manager::COLOR,
479
+ 'selectors' => [
480
+ '{{WRAPPER}} .ha-review-reviewer' => 'color: {{VALUE}}',
481
+ ],
482
+ ]
483
+ );
484
+
485
+ $this->add_group_control(
486
+ Group_Control_Typography::get_type(),
487
+ [
488
+ 'name' => 'name_typography',
489
+ 'selector' => '{{WRAPPER}} .ha-review-reviewer',
490
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_2,
491
+ ]
492
+ );
493
+
494
+ $this->add_control(
495
+ '_heading_job_title',
496
+ [
497
+ 'type' => Controls_Manager::HEADING,
498
+ 'label' => __( 'Job Title', 'happy_addons' ),
499
+ 'separator' => 'before'
500
+ ]
501
+ );
502
+
503
+ $this->add_responsive_control(
504
+ 'job_title_spacing',
505
+ [
506
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
507
+ 'type' => Controls_Manager::SLIDER,
508
+ 'size_units' => ['px'],
509
+ 'selectors' => [
510
+ '{{WRAPPER}} .ha-review-position' => 'margin-bottom: {{SIZE}}{{UNIT}};',
511
+ ],
512
+ ]
513
+ );
514
+
515
+ $this->add_control(
516
+ 'job_title_color',
517
+ [
518
+ 'label' => __( 'Text Color', 'happy_addons' ),
519
+ 'type' => Controls_Manager::COLOR,
520
+ 'selectors' => [
521
+ '{{WRAPPER}} .ha-review-position' => 'color: {{VALUE}}',
522
+ ],
523
+ ]
524
+ );
525
+
526
+ $this->add_group_control(
527
+ Group_Control_Typography::get_type(),
528
+ [
529
+ 'name' => 'job_title_typography',
530
+ 'selector' => '{{WRAPPER}} .ha-review-position',
531
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
532
+ ]
533
+ );
534
+
535
+ $this->add_control(
536
+ '_heading_review',
537
+ [
538
+ 'type' => Controls_Manager::HEADING,
539
+ 'label' => __( 'Review', 'happy_addons' ),
540
+ 'separator' => 'before'
541
+ ]
542
+ );
543
+
544
+ $this->add_responsive_control(
545
+ 'review_spacing',
546
+ [
547
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
548
+ 'type' => Controls_Manager::SLIDER,
549
+ 'size_units' => ['px'],
550
+ 'selectors' => [
551
+ '{{WRAPPER}} .ha-review-desc' => 'margin-bottom: {{SIZE}}{{UNIT}};',
552
+ ],
553
+ ]
554
+ );
555
+
556
+ $this->add_control(
557
+ 'review_color',
558
+ [
559
+ 'label' => __( 'Text Color', 'happy_addons' ),
560
+ 'type' => Controls_Manager::COLOR,
561
+ 'selectors' => [
562
+ '{{WRAPPER}} .ha-review-desc' => 'color: {{VALUE}}',
563
+ ],
564
+ ]
565
+ );
566
+
567
+ $this->add_group_control(
568
+ Group_Control_Typography::get_type(),
569
+ [
570
+ 'name' => 'review_typography',
571
+ 'selector' => '{{WRAPPER}} .ha-review-desc',
572
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
573
+ ]
574
+ );
575
+
576
+ $this->end_controls_section();
577
+
578
+ $this->start_controls_section(
579
+ '_section_ratting_style',
580
+ [
581
+ 'label' => __( 'Ratting', 'happy_addons' ),
582
+ 'tab' => Controls_Manager::TAB_STYLE,
583
+ ]
584
+ );
585
+
586
+ $this->add_responsive_control(
587
+ 'ratting_size',
588
+ [
589
+ 'label' => __( 'Size', 'happy_addons' ),
590
+ 'type' => Controls_Manager::SLIDER,
591
+ 'size_units' => ['px'],
592
+ 'selectors' => [
593
+ '{{WRAPPER}} .ha-review-ratting' => 'font-size: {{SIZE}}{{UNIT}};',
594
+ ],
595
+ ]
596
+ );
597
+
598
+ $this->add_responsive_control(
599
+ 'ratting_spacing',
600
+ [
601
+ 'label' => __( 'Bottom Spacing', 'happy_addons' ),
602
+ 'type' => Controls_Manager::SLIDER,
603
+ 'size_units' => ['px'],
604
+ 'selectors' => [
605
+ '{{WRAPPER}} .ha-review-ratting' => 'margin-bottom: {{SIZE}}{{UNIT}};',
606
+ ],
607
+ ]
608
+ );
609
+
610
+ $this->add_responsive_control(
611
+ 'ratting_padding',
612
+ [
613
+ 'label' => __( 'Padding', 'happy_addons' ),
614
+ 'type' => Controls_Manager::DIMENSIONS,
615
+ 'size_units' => [ 'px', 'em', '%' ],
616
+ 'selectors' => [
617
+ '{{WRAPPER}} .ha-review-ratting' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
618
+ ],
619
+ ]
620
+ );
621
+
622
+ $this->add_control(
623
+ 'ratting_color',
624
+ [
625
+ 'label' => __( 'Text Color', 'happy_addons' ),
626
+ 'type' => Controls_Manager::COLOR,
627
+ 'selectors' => [
628
+ '{{WRAPPER}} .ha-review-ratting' => 'color: {{VALUE}}',
629
+ ],
630
+ ]
631
+ );
632
+
633
+ $this->add_control(
634
+ 'ratting_bg_color',
635
+ [
636
+ 'label' => __( 'Background Color', 'happy_addons' ),
637
+ 'type' => Controls_Manager::COLOR,
638
+ 'selectors' => [
639
+ '{{WRAPPER}} .ha-review-ratting' => 'background-color: {{VALUE}}',
640
+ ],
641
+ ]
642
+ );
643
+
644
+ $this->add_group_control(
645
+ Group_Control_Border::get_type(),
646
+ [
647
+ 'name' => 'ratting_border',
648
+ 'selector' => '{{WRAPPER}} .ha-review-ratting',
649
+ ]
650
+ );
651
+
652
+ $this->add_control(
653
+ 'ratting_border_radius',
654
+ [
655
+ 'label' => __( 'Border Radius', 'happy_addons' ),
656
+ 'type' => Controls_Manager::DIMENSIONS,
657
+ 'size_units' => [ 'px', '%' ],
658
+ 'selectors' => [
659
+ '{{WRAPPER}} .ha-review-ratting' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
660
+ ],
661
+ ]
662
+ );
663
+
664
+ $this->end_controls_section();
665
+ }
666
+
667
+ protected function render() {
668
+ $settings = $this->get_settings_for_display();
669
+
670
+ $this->add_inline_editing_attributes( 'title', 'none' );
671
+ $this->add_render_attribute( 'title', 'class', 'ha-review-reviewer' );
672
+
673
+ $this->add_inline_editing_attributes( 'job_title', 'none' );
674
+ $this->add_render_attribute( 'job_title', 'class', 'ha-review-position' );
675
+
676
+ $this->add_inline_editing_attributes( 'review', 'basic' );
677
+ $this->add_render_attribute( 'review', 'class', 'ha-review-desc' );
678
+
679
+ $this->add_render_attribute( 'ratting', 'class', [
680
+ 'ha-review-ratting',
681
+ 'ha-review-ratting--' . $settings['ratting_style']
682
+ ] );
683
+ ?>
684
+
685
+ <?php if ( $settings['image']['url'] || $settings['image']['id'] ) :
686
+ $this->add_render_attribute( 'image', 'src', $settings['image']['url'] );
687
+ $this->add_render_attribute( 'image', 'alt', Control_Media::get_image_alt( $settings['image'] ) );
688
+ $this->add_render_attribute( 'image', 'title', Control_Media::get_image_title( $settings['image'] ) );
689
+ $settings['hover_animation'] = 'disable-animation'; // hack to prevent image hover animation
690
+ ?>
691
+ <figure class="ha-review-figure">
692
+ <?php echo Group_Control_Image_Size::get_attachment_image_html( $settings, 'thumbnail', 'image' ); ?>
693
+ </figure>
694
+ <?php endif; ?>
695
+
696
+ <div class="ha-review-body">
697
+ <?php if ( $settings['review_position'] === 'before' && $settings['review'] ) : ?>
698
+ <div <?php echo $this->get_render_attribute_string( 'review' ); ?>>
699
+ <p><?php echo wp_kses_data( $settings['review'] ); ?></p>
700
+ </div>
701
+ <?php endif; ?>
702
+
703
+ <div class="ha-review-header">
704
+ <?php if ( $settings['title' ] ) :
705
+ printf( '<%1$s %2$s>%3$s</%1$s>',
706
+ tag_escape( $settings['title_tag'] ),
707
+ $this->get_render_attribute_string( 'title' ),
708
+ esc_html( $settings['title' ] )
709
+ );
710
+ endif; ?>
711
+
712
+ <?php if ( $settings['job_title' ] ) : ?>
713
+ <div <?php echo $this->get_render_attribute_string( 'job_title' ); ?>><?php echo esc_html( $settings['job_title' ] ); ?></div>
714
+ <?php endif; ?>
715
+
716
+ <div <?php echo $this->get_render_attribute_string( 'ratting' ); ?>>
717
+ <?php if ( $settings['ratting_style'] === 'num' ) : ?>
718
+ <?php echo esc_html( $settings['ratting']['size'] ); ?> <i class="fa fa-star"></i>
719
+ <?php else : ?>
720
+ <span><span style="width:<?php echo ($settings['ratting']['size'] * 20); ?>%"></span></span>
721
+ <?php endif; ?>
722
+ </div>
723
+ </div>
724
+
725
+ <?php if ( $settings['review_position'] === 'after' && $settings['review'] ) : ?>
726
+ <div <?php echo $this->get_render_attribute_string( 'review' ); ?>>
727
+ <p><?php echo wp_kses_data( $settings['review'] ); ?></p>
728
+ </div>
729
+ <?php endif; ?>
730
+ </div>
731
+ <?php
732
+ }
733
+
734
+ public function _content_template() {
735
+ ?>
736
+ <#
737
+ view.addInlineEditingAttributes( 'title', 'none' );
738
+ view.addRenderAttribute( 'title', 'class', 'ha-review-reviewer' );
739
+
740
+ view.addInlineEditingAttributes( 'job_title', 'none' );
741
+ view.addRenderAttribute( 'job_title', 'class', 'ha-review-position' );
742
+
743
+ view.addInlineEditingAttributes( 'review', 'basic' );
744
+ view.addRenderAttribute( 'review', 'class', 'ha-review-desc' );
745
+
746
+ if (settings.image.url || settings.image.id) {
747
+ var image = {
748
+ id: settings.image.id,
749
+ url: settings.image.url,
750
+ size: settings.thumbnail_size,
751
+ dimension: settings.thumbnail_custom_dimension,
752
+ model: view.getEditModel()
753
+ };
754
+
755
+ var image_url = elementor.imagesManager.getImageUrl( image );
756
+ #>
757
+ <figure class="ha-review-figure">
758
+ <img src="{{ image_url }}">
759
+ </figure>
760
+ <# } #>
761
+
762
+ <div class="ha-review-body">
763
+ <# if (settings.review_position === 'before' && settings.review) { #>
764
+ <div {{{ view.getRenderAttributeString( 'review' ) }}}>
765
+ <p>{{{ settings.review }}}</p>
766
+ </div>
767
+ <# } #>
768
+ <div class="ha-review-header">
769
+ <# if (settings.title) { #>
770
+ <{{ settings.title_tag }} {{{ view.getRenderAttributeString( 'title' ) }}}>{{ settings.title }}</{{ settings.title_tag }}>
771
+ <# } #>
772
+ <# if (settings.job_title) { #>
773
+ <div {{{ view.getRenderAttributeString( 'job_title' ) }}}>{{ settings.job_title }}</div>
774
+ <# } #>
775
+ <# if ( settings.ratting_style === 'num' ) { #>
776
+ <div class="ha-review-ratting ha-review-ratting--num">{{ settings.ratting.size }} <i class="fa fa-star"></i></div>
777
+ <# } else { var ratingPercent = ( settings.ratting.size * 20 ) #>
778
+ <div class="ha-review-ratting ha-review-ratting--star">
779
+ <span><span style="width:{{ ratingPercent }}%"></span></span>
780
+ </div>
781
+ <# } #>
782
+ </div>
783
+ <# if ( settings.review_position === 'after' && settings.review) { #>
784
+ <div {{{ view.getRenderAttributeString( 'review' ) }}}>
785
+ <p>{{{ settings.review }}}</p>
786
+ </div>
787
+ <# } #>
788
+ </div>
789
+ <?php
790
+ }
791
+ }
widgets/skills/widget.php ADDED
@@ -0,0 +1,331 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Skillsbar widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Group_Control_Text_Shadow;
10
+ use Elementor\Repeater;
11
+ use Elementor\Controls_Manager;
12
+ use Elementor\Group_Control_Box_Shadow;
13
+ use Elementor\Group_Control_Typography;
14
+ use Elementor\Scheme_Typography;
15
+
16
+ defined( 'ABSPATH' ) || die();
17
+
18
+ class Skills extends Base {
19
+
20
+ /**
21
+ * Get widget title.
22
+ *
23
+ * @since 1.0.0
24
+ * @access public
25
+ *
26
+ * @return string Widget title.
27
+ */
28
+ public function get_title() {
29
+ return __( 'Skill Bars', 'happy_addons' );
30
+ }
31
+
32
+ /**
33
+ * Get widget icon.
34
+ *
35
+ * @since 1.0.0
36
+ * @access public
37
+ *
38
+ * @return string Widget icon.
39
+ */
40
+ public function get_icon() {
41
+ return 'hm hm-progress-bar';
42
+ }
43
+
44
+ public function get_keywords() {
45
+ return [ 'progress', 'skill', 'bar' ];
46
+ }
47
+
48
+ protected function register_content_controls() {
49
+ $this->start_controls_section(
50
+ '_section_skills',
51
+ [
52
+ 'label' => __( 'Skills', 'happy_addons' ),
53
+ 'tab' => Controls_Manager::TAB_CONTENT,
54
+ ]
55
+ );
56
+
57
+ $repeater = new Repeater();
58
+
59
+ $repeater->add_control(
60
+ 'name',
61
+ [
62
+ 'type' => Controls_Manager::TEXT,
63
+ 'label' => __( 'Name', 'happy_addons' ),
64
+ 'default' => __( 'Happy Skill', 'happy_addons' ),
65
+ 'placeholder' => __( 'Type Happy Skill Name', 'happy_addons' ),
66
+ ]
67
+ );
68
+
69
+ $repeater->add_control(
70
+ 'level',
71
+ [
72
+ 'label' => __( 'Level (Out Of 100)', 'happy_addons' ),
73
+ 'type' => Controls_Manager::SLIDER,
74
+ 'default' => [
75
+ 'unit' => '%',
76
+ 'size' => 85
77
+ ],
78
+ 'size_units' => ['%'],
79
+ 'range' => [
80
+ '%' => [
81
+ 'min' => 0,
82
+ 'max' => 100,
83
+ ],
84
+ ]
85
+ ]
86
+ );
87
+
88
+ $repeater->add_control(
89
+ 'customize',
90
+ [
91
+ 'label' => __( 'Want To Customize?', 'happy_addons' ),
92
+ 'type' => Controls_Manager::SWITCHER,
93
+ 'label_on' => __( 'Yes', 'happy_addons' ),
94
+ 'label_off' => __( 'No', 'happy_addons' ),
95
+ 'return_value' => 'yes',
96
+ 'description' => __( 'You can customize this skill bar color from here or customize from Style tab', 'happy_addons' )
97
+ ]
98
+ );
99
+
100
+ $repeater->add_control(
101
+ 'color',
102
+ [
103
+ 'label' => __( 'Text Color', 'happy_addons' ),
104
+ 'type' => Controls_Manager::COLOR,
105
+ 'selectors' => [
106
+ '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-info' => 'color: {{VALUE}}',
107
+ ],
108
+ 'condition' => ['customize' => 'yes']
109
+ ]
110
+ );
111
+
112
+ $repeater->add_control(
113
+ 'level_color',
114
+ [
115
+ 'label' => __( 'Level Color', 'happy_addons' ),
116
+ 'type' => Controls_Manager::COLOR,
117
+ 'selectors' => [
118
+ '{{WRAPPER}} {{CURRENT_ITEM}} .ha-skill-level' => 'background-color: {{VALUE}}',
119
+ ],
120
+ 'condition' => ['customize' => 'yes']
121
+ ]
122
+ );
123
+
124
+ $repeater->add_control(
125
+ 'base_color',
126
+ [
127
+ 'label' => __( 'Base Color', 'happy_addons' ),
128
+ 'type' => Controls_Manager::COLOR,
129
+ 'selectors' => [
130
+ '{{WRAPPER}} {{CURRENT_ITEM}}.ha-skill' => 'background-color: {{VALUE}}',
131
+ ],
132
+ 'condition' => ['customize' => 'yes']
133
+ ]
134
+ );
135
+
136
+ $this->add_control(
137
+ 'skills',
138
+ [
139
+ 'show_label' => false,
140
+ 'type' => Controls_Manager::REPEATER,
141
+ 'fields' => $repeater->get_controls(),
142
+ 'title_field' => '<# print((name || level.size) ? (name || "Skill") + " - " + level.size + level.unit : "Skill - 0%") #>'
143
+ ]
144
+ );
145
+
146
+ $this->add_control(
147
+ 'view',
148
+ [
149
+ 'type' => Controls_Manager::SELECT,
150
+ 'label' => __( 'Text Position', 'happy_addons' ),
151
+ 'separator' => 'before',
152
+ 'default' => 'inside',
153
+ 'options' => [
154
+ 'inside' => __( 'Text Inside', 'happy_addons' ),
155
+ 'outside' => __( 'Text Outside', 'happy_addons' ),
156
+ ]
157
+ ]
158
+ );
159
+
160
+ $this->end_controls_section();
161
+ }
162
+
163
+ protected function register_style_controls() {
164
+ $this->start_controls_section(
165
+ '_section_style_bars',
166
+ [
167
+ 'label' => __( 'Skill Bars', 'happy_addons' ),
168
+ 'tab' => Controls_Manager::TAB_STYLE,
169
+ ]
170
+ );
171
+
172
+ $this->add_control(
173
+ 'height',
174
+ [
175
+ 'label' => __( 'Height', 'happy_addons' ),
176
+ 'type' => Controls_Manager::SLIDER,
177
+ 'size_units' => [ 'px' ],
178
+ 'range' => [
179
+ 'px' => [
180
+ 'min' => 1,
181
+ 'max' => 250,
182
+ ],
183
+ ],
184
+ 'selectors' => [
185
+ '{{WRAPPER}} .ha-skill--outside' => 'height: {{SIZE}}{{UNIT}};',
186
+ '{{WRAPPER}} .ha-skill--inside' => 'height: {{SIZE}}{{UNIT}};',
187
+ ],
188
+ ]
189
+ );
190
+
191
+ $this->add_control(
192
+ 'spacing',
193
+ [
194
+ 'label' => __( 'Top Spacing', 'happy_addons' ),
195
+ 'type' => Controls_Manager::SLIDER,
196
+ 'size_units' => [ 'px' ],
197
+ 'range' => [
198
+ 'px' => [
199
+ 'min' => 0,
200
+ 'max' => 250,
201
+ ],
202
+ ],
203
+ 'selectors' => [
204
+ '{{WRAPPER}} .ha-skill--outside' => 'margin-top: {{SIZE}}{{UNIT}};',
205
+ '{{WRAPPER}} .ha-skill--inside:not(:first-child)' => 'margin-top: {{SIZE}}{{UNIT}};',
206
+ ],
207
+ ]
208
+ );
209
+
210
+ $this->add_control(
211
+ 'border_radius',
212
+ [
213
+ 'label' => __( 'Border Radius', 'happy_addons' ),
214
+ 'type' => Controls_Manager::DIMENSIONS,
215
+ 'size_units' => [ 'px', '%' ],
216
+ 'selectors' => [
217
+ '{{WRAPPER}} .ha-skill, {{WRAPPER}} .ha-skill-level' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
218
+ ],
219
+ ]
220
+ );
221
+
222
+ $this->add_group_control(
223
+ Group_Control_Box_Shadow::get_type(),
224
+ [
225
+ 'name' => 'box_shadow',
226
+ 'exclude' => [
227
+ 'box_shadow_position',
228
+ ],
229
+ 'selector' => '{{WRAPPER}} .ha-skill'
230
+ ]
231
+ );
232
+
233
+ $this->end_controls_section();
234
+
235
+ $this->start_controls_section(
236
+ '_section_content',
237
+ [
238
+ 'label' => __( 'Content', 'happy_addons' ),
239
+ 'tab' => Controls_Manager::TAB_STYLE,
240
+ ]
241
+ );
242
+
243
+ $this->add_control(
244
+ 'color',
245
+ [
246
+ 'label' => __( 'Text Color', 'happy_addons' ),
247
+ 'type' => Controls_Manager::COLOR,
248
+ 'selectors' => [
249
+ '{{WRAPPER}} .ha-skill-info' => 'color: {{VALUE}}',
250
+ ],
251
+ ]
252
+ );
253
+
254
+ $this->add_control(
255
+ 'level_color',
256
+ [
257
+ 'label' => __( 'Level Color', 'happy_addons' ),
258
+ 'type' => Controls_Manager::COLOR,
259
+ 'selectors' => [
260
+ '{{WRAPPER}} .ha-skill-level' => 'background-color: {{VALUE}}',
261
+ ],
262
+ ]
263
+ );
264
+
265
+ $this->add_control(
266
+ 'base_color',
267
+ [
268
+ 'label' => __( 'Base Color', 'happy_addons' ),
269
+ 'type' => Controls_Manager::COLOR,
270
+ 'selectors' => [
271
+ '{{WRAPPER}} .ha-skill' => 'background-color: {{VALUE}}',
272
+ ],
273
+ ]
274
+ );
275
+
276
+ $this->add_group_control(
277
+ Group_Control_Typography::get_type(),
278
+ [
279
+ 'name' => 'info_typography',
280
+ 'selector' => '{{WRAPPER}} .ha-skill-info',
281
+ 'scheme' => Scheme_Typography::TYPOGRAPHY_3,
282
+ ]
283
+ );
284
+
285
+ $this->add_group_control(
286
+ Group_Control_Text_Shadow::get_type(),
287
+ [
288
+ 'name' => 'info_text_shadow',
289
+ 'selector' => '{{WRAPPER}} .ha-skill-info',
290
+ ]
291
+ );
292
+ }
293
+
294
+ protected function render() {
295
+ $settings = $this->get_settings_for_display();
296
+
297
+ if ( ! is_array( $settings['skills'] ) ) {
298
+ return;
299
+ }
300
+
301
+ foreach ( $settings['skills'] as $index => $skill ) :
302
+ $name_key = $this->get_repeater_setting_key( 'name', 'bars', $index );
303
+ $this->add_inline_editing_attributes( $name_key, 'none' );
304
+ ?>
305
+ <div class="ha-skill ha-skill--<?php echo esc_attr( $settings['view'] ); ?> elementor-repeater-item-<?php echo $skill['_id']; ?>">
306
+ <div class="ha-skill-level" style="width: <?php echo esc_attr( $skill['level']['size'] ); ?>%;">
307
+ <div class="ha-skill-info"><span <?php echo $this->get_render_attribute_string( $name_key ); ?>><?php echo esc_html( $skill['name'] ); ?></span><span class="ha-skill-level-text"><?php echo esc_html( $skill['level']['size'] ); ?>%</span></div>
308
+ </div>
309
+ </div>
310
+ <?php
311
+ endforeach;
312
+ }
313
+
314
+ protected function _content_template() {
315
+ ?>
316
+ <#
317
+ if (_.isArray(settings.skills)) {
318
+ _.each(settings.skills, function(skill, index) {
319
+ var nameKey = view.getRepeaterSettingKey( 'name', 'skills', index);
320
+ view.addInlineEditingAttributes( nameKey, 'none' );
321
+ #>
322
+ <div class="ha-skill ha-skill--{{settings.view}} elementor-repeater-item-{{skill._id}}">
323
+ <div class="ha-skill-level" style="width: {{skill.level.size}}%;">
324
+ <div class="ha-skill-info"><span {{{view.getRenderAttributeString( nameKey )}}}>{{skill.name}}</span><span class="ha-skill-level-text">{{skill.level.size}}%</span></div>
325
+ </div>
326
+ </div>
327
+ <# });
328
+ } #>
329
+ <?php
330
+ }
331
+ }
widgets/weform/widget.php ADDED
@@ -0,0 +1,619 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WeForm widget class
4
+ *
5
+ * @package Happy_Addons
6
+ */
7
+ namespace Happy_Addons\Elementor\Widget;
8
+
9
+ use Elementor\Controls_Manager;
10
+ use Elementor\Group_Control_Border;
11
+ use Elementor\Group_Control_Box_Shadow;
12
+ use Elementor\Group_Control_Text_Shadow;
13
+ use Elementor\Group_Control_Typography;
14
+
15
+ defined( 'ABSPATH' ) || die();
16
+
17
+ class WeForm extends Base {
18
+
19
+ /**
20
+ * Get widget title.
21
+ *
22
+ * @since 1.0.0
23
+ * @access public
24
+ *
25
+ * @return string Widget title.
26
+ */
27
+ public function get_title() {
28
+ return __( 'We Form', 'happy_addons' );
29
+ }
30
+
31
+ /**
32
+ * Get widget icon.
33
+ *
34
+ * @since 1.0.0
35
+ * @access public
36
+ *
37
+ * @return string Widget icon.
38
+ */
39
+ public function get_icon() {
40
+ return 'hm hm-form';
41
+ }
42
+
43
+ public function get_keywords() {
44
+ return [ 'we form', 'caldera', 'wpf','wpform' , 'form', 'contact', 'cf7', 'contact form', 'gravity', 'ninja' ];
45
+ }
46
+
47
+ // Whether the reload preview is required or not.
48
+ public function is_reload_preview_required() {
49
+ return true;
50
+ }
51
+
52
+ protected function register_content_controls() {
53
+ $this->start_controls_section(
54
+ '_section_weform',
55
+ [
56
+ 'label' => ha_is_weform_activated() ? __( 'We Form', 'happy_addons' ) : __( 'Notice', 'happy_addons' ),
57
+ 'tab' => Controls_Manager::TAB_CONTENT,
58
+ ]
59
+ );
60
+
61
+ if ( ! ha_is_weform_activated() ) {
62
+ $this->add_control(
63
+ 'wef_missing_notice',
64
+ [
65
+ 'type' => Controls_Manager::RAW_HTML,
66
+ 'raw' => sprintf(
67
+ __( 'Hi, it seems %1$s is missing in your site. Please install and activate %1$s first.', 'happy_addons' ),
68
+ '<a href="https://wordpress.org/plugins/weforms/" target="_blank" rel="noopener">We Form</a>'
69
+ )
70
+ ]
71
+ );
72
+ $this->end_controls_section();
73
+ return;
74
+ }
75
+
76
+ $this->add_control(
77
+ 'form_id',
78
+ [
79
+ 'label' => __( 'Select Your Form', 'happy_addons' ),
80
+ 'type' => Controls_Manager::SELECT,
81
+ 'label_block' => true,
82
+ 'options' => ['' => __( '', 'happy_addons' ) ] + \ha_get_we_forms(),
83
+ ]
84
+ );
85
+
86
+ $this->end_controls_section();
87
+ }
88
+
89
+ protected function register_style_controls() {
90
+ $this->start_controls_section(
91
+ '_section_fields_style',
92
+ [
93
+ 'label' => __( 'Form Fields', 'happy_addons' ),
94
+ 'tab' => Controls_Manager::TAB_STYLE,
95
+ ]
96
+ );
97
+
98
+ $this->add_responsive_control(
99
+ 'large_field_width',
100
+ [
101
+ 'label' => __( 'Large Field Width', 'happy_addons' ),
102
+ 'type' => Controls_Manager::SLIDER,
103
+ 'size_units' => [ 'px', '%' ],
104
+ 'default' => [
105
+ 'unit' => '%',
106
+ 'size' => 99
107
+ ],
108
+ 'range' => [
109
+ '%' => [
110
+ 'min' => 1,
111
+ 'max' => 100,
112
+ ],
113
+ 'px' => [
114
+ 'min' => 1,
115
+ 'max' => 800,
116
+ ],
117
+ ],
118
+ 'selectors' => [
119
+ '{{WRAPPER}} .wpuf-form > li.wpuf-el.field-size-large > .wpuf-fields input' => 'width: {{SIZE}}{{UNIT}};',
120
+ '{{WRAPPER}} .wpuf-form > li.wpuf-el.field-size-large > .wpuf-fields textarea' => 'width: {{SIZE}}{{UNIT}};',
121
+
122
+ ],
123
+ ]
124
+ );
125
+
126
+ $this->add_responsive_control(
127
+ 'field_margin',
128
+ [
129
+ 'label' => __( 'Field Spacing', 'happy_addons' ),
130
+ 'type' => Controls_Manager::DIMENSIONS,
131
+ 'size_units' => [ 'px', '%' ],
132
+ 'selectors' => [
133
+ '{{WRAPPER}} .wpuf-el:not(.wpuf-submit)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
134
+ ],
135
+ ]
136
+ );
137
+
138
+ $this->add_responsive_control(
139
+ 'field_padding',
140
+ [
141
+ 'label' => __( 'Padding', 'happy_addons' ),
142
+ 'type' => Controls_Manager::DIMENSIONS,
143
+ 'size_units' => [ 'px', '%' ],
144
+ 'selectors' => [
145
+ '{{WRAPPER}} .wpuf-fields input:not(.weforms_submit_btn)' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;',
146
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
147
+ ],
148
+ ]
149
+ );
150
+
151
+ $this->add_responsive_control(
152
+ 'field_border_radius',
153
+ [
154
+ 'label' => __( 'Border Radius', 'happy_addons' ),
155
+ 'type' => Controls_Manager::DIMENSIONS,
156
+ 'size_units' => [ 'px', '%' ],
157
+ 'selectors' => [
158
+ '{{WRAPPER}} .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-fields textarea' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
159
+ ],
160
+ ]
161
+ );
162
+
163
+ $this->add_group_control(
164
+ Group_Control_Typography::get_type(),
165
+ [
166
+ 'name' => 'field_typography',
167
+ 'label' => __( 'Typography', 'happy_addons' ),
168
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea',
169
+ ]
170
+ );
171
+
172
+ $this->add_control(
173
+ 'field_textcolor',
174
+ [
175
+ 'label' => __( 'Field Text Color', 'happy_addons' ),
176
+ 'type' => Controls_Manager::COLOR,
177
+ 'selectors' => [
178
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'color: {{VALUE}};',
179
+ ],
180
+ ]
181
+ );
182
+
183
+ $this->add_control(
184
+ 'field_placeholder_color',
185
+ [
186
+ 'label' => __( 'Field Placeholder Color', 'happy_addons' ),
187
+ 'type' => Controls_Manager::COLOR,
188
+ 'selectors' => [
189
+ '{{WRAPPER}} ::-webkit-input-placeholder' => 'color: {{VALUE}};',
190
+ '{{WRAPPER}} ::-moz-placeholder' => 'color: {{VALUE}};',
191
+ '{{WRAPPER}} ::-ms-input-placeholder' => 'color: {{VALUE}};',
192
+ ],
193
+ ]
194
+ );
195
+
196
+ $this->start_controls_tabs( 'tabs_field_state' );
197
+
198
+ $this->start_controls_tab(
199
+ 'tab_field_normal',
200
+ [
201
+ 'label' => __( 'Normal', 'happy_addons' ),
202
+ ]
203
+ );
204
+
205
+ $this->add_group_control(
206
+ Group_Control_Border::get_type(),
207
+ [
208
+ 'name' => 'field_border',
209
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea',
210
+ ]
211
+ );
212
+
213
+ $this->add_group_control(
214
+ Group_Control_Box_Shadow::get_type(),
215
+ [
216
+ 'name' => 'field_box_shadow',
217
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea',
218
+ ]
219
+ );
220
+
221
+ $this->add_control(
222
+ 'field_bg_color',
223
+ [
224
+ 'label' => __( 'Background Color', 'happy_addons' ),
225
+ 'type' => Controls_Manager::COLOR,
226
+ 'selectors' => [
227
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea' => 'background-color: {{VALUE}}',
228
+ ],
229
+ ]
230
+ );
231
+
232
+ $this->end_controls_tab();
233
+
234
+ $this->start_controls_tab(
235
+ 'tab_field_focus',
236
+ [
237
+ 'label' => __( 'Focus', 'happy_addons' ),
238
+ ]
239
+ );
240
+
241
+ $this->add_group_control(
242
+ Group_Control_Border::get_type(),
243
+ [
244
+ 'name' => 'field_focus_border',
245
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:focus:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea:focus',
246
+ ]
247
+ );
248
+
249
+ $this->add_group_control(
250
+ Group_Control_Box_Shadow::get_type(),
251
+ [
252
+ 'name' => 'field_focus_box_shadow',
253
+ 'exclude' => [
254
+ 'box_shadow_position',
255
+ ],
256
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:focus:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea:focus',
257
+ ]
258
+ );
259
+
260
+ $this->add_control(
261
+ 'field_focus_bg_color',
262
+ [
263
+ 'label' => __( 'Background Color', 'happy_addons' ),
264
+ 'type' => Controls_Manager::COLOR,
265
+ 'selectors' => [
266
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields input:focus:not(.weforms_submit_btn), {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-fields textarea:focus' => 'background-color: {{VALUE}}',
267
+ ],
268
+ ]
269
+ );
270
+
271
+ $this->end_controls_tab();
272
+ $this->end_controls_tabs();
273
+
274
+ $this->end_controls_section();
275
+
276
+
277
+ $this->start_controls_section(
278
+ 'we-form-label',
279
+ [
280
+ 'label' => __( 'Form Fields Label', 'happy_addons' ),
281
+ 'tab' => Controls_Manager::TAB_STYLE,
282
+ ]
283
+ );
284
+
285
+ $this->add_responsive_control(
286
+ 'label_margin',
287
+ [
288
+ 'label' => __( 'Margin', 'happy_addons' ),
289
+ 'type' => Controls_Manager::DIMENSIONS,
290
+ 'size_units' => [ 'px', '%' ],
291
+ 'selectors' => [
292
+ '{{WRAPPER}} .wpuf-label label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
293
+ ],
294
+ ]
295
+ );
296
+
297
+ $this->add_responsive_control(
298
+ 'label_padding',
299
+ [
300
+ 'label' => __( 'Padding', 'happy_addons' ),
301
+ 'type' => Controls_Manager::DIMENSIONS,
302
+ 'size_units' => [ 'px', 'em', '%' ],
303
+ 'selectors' => [
304
+ '{{WRAPPER}} .wpuf-label label' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
305
+ ],
306
+ ]
307
+ );
308
+
309
+ $this->add_control(
310
+ 'hr3',
311
+ [
312
+ 'type' => Controls_Manager::DIVIDER,
313
+ 'style' => 'thick',
314
+ ]
315
+ );
316
+
317
+ $this->add_group_control(
318
+ Group_Control_Typography::get_type(),
319
+ [
320
+ 'name' => 'label_typography',
321
+ 'label' => __( 'Label Typography', 'happy_addons' ),
322
+ 'selector' => '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label',
323
+ ]
324
+ );
325
+
326
+ $this->add_group_control(
327
+ Group_Control_Typography::get_type(),
328
+ [
329
+ 'name' => 'desc_typography',
330
+ 'label' => __( 'Help Text Typography', 'happy_addons' ),
331
+ 'selector' => '{{WRAPPER}} .wpuf-fields .wpuf-help',
332
+ ]
333
+ );
334
+
335
+ $this->add_control(
336
+ 'label_color',
337
+ [
338
+ 'label' => __( 'Label Text Color', 'happy_addons' ),
339
+ 'type' => Controls_Manager::COLOR,
340
+ 'selectors' => [
341
+ '{{WRAPPER}} .wpuf-label label, {{WRAPPER}} .wpuf-form-sub-label' => 'color: {{VALUE}}',
342
+ ],
343
+ ]
344
+ );
345
+
346
+ $this->add_control(
347
+ 'requered_label',
348
+ [
349
+ 'label' => __( 'Required Label Color', 'happy_addons' ),
350
+ 'type' => Controls_Manager::COLOR,
351
+ 'selectors' => [
352
+ '{{WRAPPER}} .wpuf-label .required' => 'color: {{VALUE}} !important',
353
+ ],
354
+ ]
355
+ );
356
+
357
+ $this->add_control(
358
+ 'desc_color',
359
+ [
360
+ 'label' => __( 'Help Text Color', 'happy_addons' ),
361
+ 'type' => Controls_Manager::COLOR,
362
+ 'selectors' => [
363
+ '{{WRAPPER}} .wpuf-fields .wpuf-help' => 'color: {{VALUE}}',
364
+ ],
365
+ ]
366
+ );
367
+
368
+ $this->end_controls_section();
369
+
370
+ $this->start_controls_section(
371
+ 'submit',
372
+ [
373
+ 'label' => __( 'Submit Button', 'happy_addons' ),
374
+ 'tab' => Controls_Manager::TAB_STYLE,
375
+ ]
376
+ );
377
+
378
+ $this->add_control(
379
+ 'submit_btn_width',
380
+ [
381
+ 'label' => __( 'Button Full Width?', 'happy_addons' ),
382
+ 'type' => Controls_Manager::SWITCHER,
383
+ 'label_on' => __( 'Yes', 'happy_addons' ),
384
+ 'label_off' => __( 'No', 'happy_addons' ),
385
+ 'return_value' => 'yes',
386
+ 'default' => 'yes',
387
+ ]
388
+ );
389
+
390
+ $this->add_responsive_control(
391
+ 'button_width',
392
+ [
393
+ 'label' => __( 'Button Width', 'happy_addons' ),
394
+ 'type' => Controls_Manager::SLIDER,
395
+ 'size_units' => [ 'px', '%' ],
396
+ 'condition' => [
397
+ 'submit_btn_width' => 'yes'
398
+ ],
399
+ 'default' => [
400
+ 'unit' => '%',
401
+ 'size' => 100
402
+ ],
403
+ 'range' => [
404
+ '%' => [
405
+ 'min' => 1,
406
+ 'max' => 100,
407
+ ],
408
+ 'px' => [
409
+ 'min' => 1,
410
+ 'max' => 800,
411
+ ],
412
+ ],
413
+ 'selectors' => [
414
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit .weforms_submit_btn' => 'display: block; width: {{SIZE}}{{UNIT}};',
415
+ ],
416
+ ]
417
+ );
418
+
419
+ $this->add_responsive_control(
420
+ 'submit_btn_position',
421
+ [
422
+ 'label' => __( 'Button Position', 'happy_addons' ),
423
+ 'type' => Controls_Manager::CHOOSE,
424
+ 'options' => [
425
+ 'left' => [
426
+ 'title' => __( 'Left', 'happy_addons' ),
427
+ 'icon' => 'eicon-h-align-left',
428
+ ],
429
+ 'center' => [
430
+ 'title' => __( 'Center', 'happy_addons' ),
431
+ 'icon' => 'eicon-h-align-center',
432
+ ],
433
+ 'right' => [
434
+ 'title' => __( 'Right', 'happy_addons' ),
435
+ 'icon' => 'eicon-h-align-right',
436
+ ],
437
+ ],
438
+ 'condition' => [
439
+ 'submit_btn_width' => ''
440
+ ],
441
+ 'desktop_default' => 'left',
442
+ 'toggle' => false,
443
+ 'prefix_class' => 'ha-form-btn--%s',
444
+ 'selectors' => [
445
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit' => 'text-align: {{Value}};',
446
+ ],
447
+ ]
448
+ );
449
+
450
+ $this->add_responsive_control(
451
+ 'submit_margin',
452
+ [
453
+ 'label' => __( 'Margin', 'happy_addons' ),
454
+ 'type' => Controls_Manager::DIMENSIONS,
455
+ 'size_units' => [ 'px', '%' ],
456
+ 'selectors' => [
457
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
458
+ ],
459
+ ]
460
+ );
461
+
462
+ $this->add_responsive_control(
463
+ 'submit_padding',
464
+ [
465
+ 'label' => __( 'Padding', 'happy_addons' ),
466
+ 'type' => Controls_Manager::DIMENSIONS,
467
+ 'size_units' => [ 'px', 'em', '%' ],
468
+ 'selectors' => [
469
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
470
+ ],
471
+ ]
472
+ );
473
+
474
+ $this->add_group_control(
475
+ Group_Control_Typography::get_type(),
476
+ [
477
+ 'name' => 'submit_typography',
478
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]',
479
+ ]
480
+ );
481
+
482
+ $this->add_group_control(
483
+ Group_Control_Border::get_type(),
484
+ [
485
+ 'name' => 'submit_border',
486
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]',
487
+ ]
488
+ );
489
+
490
+ $this->add_control(
491
+ 'submit_border_radius',
492
+ [
493
+ 'label' => __( 'Border Radius', 'happy_addons' ),
494
+ 'type' => Controls_Manager::DIMENSIONS,
495
+ 'size_units' => [ 'px', '%' ],
496
+ 'selectors' => [
497
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
498
+ ],
499
+ ]
500
+ );
501
+
502
+ $this->add_group_control(
503
+ Group_Control_Box_Shadow::get_type(),
504
+ [
505
+ 'name' => 'submit_box_shadow',
506
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]',
507
+ ]
508
+ );
509
+
510
+ $this->add_group_control(
511
+ Group_Control_Text_Shadow::get_type(),
512
+ [
513
+ 'name' => 'submit_text_shadow',
514
+ 'selector' => '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]',
515
+ ]
516
+ );
517
+
518
+ $this->add_control(
519
+ 'hr4',
520
+ [
521
+ 'type' => Controls_Manager::DIVIDER,
522
+ 'style' => 'thick',
523
+ ]
524
+ );
525
+
526
+ $this->start_controls_tabs( 'tabs_button_style' );
527
+
528
+ $this->start_controls_tab(
529
+ 'tab_button_normal',
530
+ [
531
+ 'label' => __( 'Normal', 'happy_addons' ),
532
+ ]
533
+ );
534
+
535
+ $this->add_control(
536
+ 'submit_color',
537
+ [
538
+ 'label' => __( 'Text Color', 'happy_addons' ),
539
+ 'type' => Controls_Manager::COLOR,
540
+ 'default' => '',
541
+ 'selectors' => [
542
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'color: {{VALUE}};',
543
+ ],
544
+ ]
545
+ );
546
+
547
+ $this->add_control(
548
+ 'submit_bg_color',
549
+ [
550
+ 'label' => __( 'Background Color', 'happy_addons' ),
551
+ 'type' => Controls_Manager::COLOR,
552
+ 'selectors' => [
553
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]' => 'background-color: {{VALUE}};',
554
+ ],
555
+ ]
556
+ );
557
+
558
+ $this->end_controls_tab();
559
+
560
+ $this->start_controls_tab(
561
+ 'tab_button_hover',
562
+ [
563
+ 'label' => __( 'Hover', 'happy_addons' ),
564
+ ]
565
+ );
566
+
567
+ $this->add_control(
568
+ 'submit_hover_color',
569
+ [
570
+ 'label' => __( 'Text Color', 'happy_addons' ),
571
+ 'type' => Controls_Manager::COLOR,
572
+ 'selectors' => [
573
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'color: {{VALUE}};',
574
+ ],
575
+ ]
576
+ );
577
+
578
+ $this->add_control(
579
+ 'submit_hover_bg_color',
580
+ [
581
+ 'label' => __( 'Background Color', 'happy_addons' ),
582
+ 'type' => Controls_Manager::COLOR,
583
+ 'selectors' => [
584
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'background-color: {{VALUE}};',
585
+ ],
586
+ ]
587
+ );
588
+
589
+ $this->add_control(
590
+ 'submit_hover_border_color',
591
+ [
592
+ 'label' => __( 'Border Color', 'happy_addons' ),
593
+ 'type' => Controls_Manager::COLOR,
594
+ 'selectors' => [
595
+ '{{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:hover, {{WRAPPER}} .wpuf-form-add.wpuf-style ul.wpuf-form .wpuf-submit input[type=submit]:focus' => 'border-color: {{VALUE}};',
596
+ ],
597
+ ]
598
+ );
599
+
600
+ $this->end_controls_tab();
601
+