Browse Source

initial commit

tags/v0.0.2
Boris Grozev 8 years ago
commit
72d4ecb607
100 changed files with 6768 additions and 0 deletions
  1. 1
    0
      .gitattributes
  2. 6
    0
      .gitignore
  3. 6
    0
      .jshintignore
  4. 16
    0
      .jshintrc
  5. 202
    0
      LICENSE
  6. 27
    0
      Makefile
  7. 52
    0
      README.md
  8. 8
    0
      analytics.js
  9. 55
    0
      app.js
  10. 34
    0
      bump-js-versions.sh
  11. 43
    0
      config.js
  12. 239
    0
      css/chat.css
  13. 51
    0
      css/contact_list.css
  14. 126
    0
      css/font.css
  15. 105
    0
      css/jitsi_popover.css
  16. 128
    0
      css/jquery-impromptu.css
  17. 61
    0
      css/login_menu.css
  18. 377
    0
      css/main.css
  19. 34
    0
      css/modaldialog.css
  20. 11
    0
      css/notice.css
  21. 124
    0
      css/popover.css
  22. 72
    0
      css/popup_menu.css
  23. 68
    0
      css/settingsmenu.css
  24. 180
    0
      css/toastr.css
  25. 118
    0
      css/unsupported_browser.css
  26. 474
    0
      css/videolayout_default.css
  27. 205
    0
      css/welcome_page.css
  28. 5
    0
      debian/changelog
  29. 1
    0
      debian/compat
  30. 35
    0
      debian/control
  31. 31
    0
      debian/copyright
  32. 7
    0
      debian/jitsi-meet-prosody.README.Debian
  33. 4
    0
      debian/jitsi-meet-prosody.config
  34. 2
    0
      debian/jitsi-meet-prosody.docs
  35. 131
    0
      debian/jitsi-meet-prosody.postinst
  36. 57
    0
      debian/jitsi-meet-prosody.postrm
  37. 4
    0
      debian/jitsi-meet-prosody.templates
  38. 8
    0
      debian/jitsi-meet.README.Debian
  39. 24
    0
      debian/jitsi-meet.README.source
  40. 8
    0
      debian/jitsi-meet.config
  41. 1
    0
      debian/jitsi-meet.dirs
  42. 4
    0
      debian/jitsi-meet.docs
  43. 11
    0
      debian/jitsi-meet.install
  44. 3
    0
      debian/jitsi-meet.links
  45. 192
    0
      debian/jitsi-meet.postinst
  46. 56
    0
      debian/jitsi-meet.postrm
  47. 32
    0
      debian/jitsi-meet.templates
  48. 202
    0
      debian/missing-source/libs/strophe/sha1.js
  49. 240
    0
      debian/missing-source/libs/strophe/strophe.caps.jsonly.js
  50. 232
    0
      debian/missing-source/libs/strophe/strophe.disco.js
  51. 22
    0
      debian/patches/jquery-package
  52. 1
    0
      debian/patches/series
  53. 1
    0
      debian/po/POTFILES.in
  54. 98
    0
      debian/po/templates.pot
  55. 19
    0
      debian/rules
  56. 1
    0
      debian/source/format
  57. 2
    0
      debian/watch
  58. 12
    0
      doc/adding-an-icon.md
  59. 174
    0
      doc/api.md
  60. 1
    0
      doc/debian/jitsi-meet-prosody/README
  61. 28
    0
      doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example
  62. 13
    0
      doc/debian/jitsi-meet/README
  63. 36
    0
      doc/debian/jitsi-meet/jitsi-meet.example
  64. 9
    0
      doc/example-config-files/config.js.example
  65. 33
    0
      doc/example-config-files/jitsi.example.com.example
  66. 54
    0
      doc/example-config-files/nginx.conf.example
  67. 205
    0
      doc/example-config-files/prosody.cfg.lua.example
  68. 29
    0
      doc/influxdb.md
  69. 223
    0
      doc/manual-install.md
  70. 74
    0
      doc/quick-install.md
  71. 355
    0
      external_api.js
  72. BIN
      favicon.ico
  73. BIN
      fonts/jitsi.eot
  74. 39
    0
      fonts/jitsi.svg
  75. BIN
      fonts/jitsi.ttf
  76. BIN
      fonts/jitsi.woff
  77. 916
    0
      fonts/selection.json
  78. BIN
      images/avatar1.png
  79. BIN
      images/avatar2.png
  80. BIN
      images/avatarprezi.png
  81. 12
    0
      images/chatArrow.svg
  82. BIN
      images/chrome.png
  83. BIN
      images/chromium.png
  84. BIN
      images/dropdownPointer.png
  85. BIN
      images/estoslogo.png
  86. BIN
      images/favicon.ico
  87. BIN
      images/firefox-nightly.png
  88. BIN
      images/firefox.png
  89. BIN
      images/jitsilogo.png
  90. BIN
      images/noMic.png
  91. BIN
      images/noVideo.png
  92. BIN
      images/opera.png
  93. BIN
      images/popupPointer.png
  94. 25
    0
      images/smile.svg
  95. 34
    0
      images/smileys/smiley1.svg
  96. 61
    0
      images/smileys/smiley10.svg
  97. 60
    0
      images/smileys/smiley11.svg
  98. 99
    0
      images/smileys/smiley12.svg
  99. 19
    0
      images/smileys/smiley13.svg
  100. 0
    0
      images/smileys/smiley14.svg

+ 1
- 0
.gitattributes View File

@@ -0,0 +1 @@
1
+*.bundle.js -text -diff

+ 6
- 0
.gitignore View File

@@ -0,0 +1,6 @@
1
+node_modules
2
+*.swp
3
+.idea/
4
+*.iml
5
+.*.tmp
6
+deploy-local.sh

+ 6
- 0
.jshintignore View File

@@ -0,0 +1,6 @@
1
+node_modules
2
+libs
3
+replacement.js
4
+prezi.js
5
+muc.js
6
+app.js

+ 16
- 0
.jshintrc View File

@@ -0,0 +1,16 @@
1
+{
2
+    "asi": false, // true: Tolerate Automatic Semicolon Insertion (no semicolons)
3
+    "expr": true, // true: Tolerate `ExpressionStatement` as Programs
4
+    "loopfunc": true, // true: Tolerate functions being defined in loops
5
+    "curly": false, // true: Require {} for every new block or scope
6
+    "evil": true, // true: Tolerate use of `eval` and `new Function()`
7
+    "white": true,
8
+    "undef": true, // true: Require all non-global variables to be declared (prevents global leaks)
9
+    "browser": true, // Web Browser (window, document, etc)
10
+    "node": true, // Node.js
11
+    "trailing": true,
12
+    "indent": 4, // {int} Number of spaces to use for indentation
13
+    "latedef": true, // true: Require variables/functions to be defined before being used
14
+    "newcap": true, // true: Require capitalization of all constructor functions e.g. `new F()`
15
+    "maxlen": 80    // {int} Max number of characters per line
16
+}

+ 202
- 0
LICENSE View File

@@ -0,0 +1,202 @@
1
+                                 Apache License
2
+                           Version 2.0, January 2004
3
+                        http://www.apache.org/licenses/
4
+
5
+
6
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+   1. Definitions.
9
+
10
+      "License" shall mean the terms and conditions for use, reproduction,
11
+      and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+      "Licensor" shall mean the copyright owner or entity authorized by
14
+      the copyright owner that is granting the License.
15
+
16
+      "Legal Entity" shall mean the union of the acting entity and all
17
+      other entities that control, are controlled by, or are under common
18
+      control with that entity. For the purposes of this definition,
19
+      "control" means (i) the power, direct or indirect, to cause the
20
+      direction or management of such entity, whether by contract or
21
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+      outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+      "You" (or "Your") shall mean an individual or Legal Entity
25
+      exercising permissions granted by this License.
26
+
27
+      "Source" form shall mean the preferred form for making modifications,
28
+      including but not limited to software source code, documentation
29
+      source, and configuration files.
30
+
31
+      "Object" form shall mean any form resulting from mechanical
32
+      transformation or translation of a Source form, including but
33
+      not limited to compiled object code, generated documentation,
34
+      and conversions to other media types.
35
+
36
+      "Work" shall mean the work of authorship, whether in Source or
37
+      Object form, made available under the License, as indicated by a
38
+      copyright notice that is included in or attached to the work
39
+      (an example is provided in the Appendix below).
40
+
41
+      "Derivative Works" shall mean any work, whether in Source or Object
42
+      form, that is based on (or derived from) the Work and for which the
43
+      editorial revisions, annotations, elaborations, or other modifications
44
+      represent, as a whole, an original work of authorship. For the purposes
45
+      of this License, Derivative Works shall not include works that remain
46
+      separable from, or merely link (or bind by name) to the interfaces of,
47
+      the Work and Derivative Works thereof.
48
+
49
+      "Contribution" shall mean any work of authorship, including
50
+      the original version of the Work and any modifications or additions
51
+      to that Work or Derivative Works thereof, that is intentionally
52
+      submitted to Licensor for inclusion in the Work by the copyright owner
53
+      or by an individual or Legal Entity authorized to submit on behalf of
54
+      the copyright owner. For the purposes of this definition, "submitted"
55
+      means any form of electronic, verbal, or written communication sent
56
+      to the Licensor or its representatives, including but not limited to
57
+      communication on electronic mailing lists, source code control systems,
58
+      and issue tracking systems that are managed by, or on behalf of, the
59
+      Licensor for the purpose of discussing and improving the Work, but
60
+      excluding communication that is conspicuously marked or otherwise
61
+      designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+      "Contributor" shall mean Licensor and any individual or Legal Entity
64
+      on behalf of whom a Contribution has been received by Licensor and
65
+      subsequently incorporated within the Work.
66
+
67
+   2. Grant of Copyright License. Subject to the terms and conditions of
68
+      this License, each Contributor hereby grants to You a perpetual,
69
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+      copyright license to reproduce, prepare Derivative Works of,
71
+      publicly display, publicly perform, sublicense, and distribute the
72
+      Work and such Derivative Works in Source or Object form.
73
+
74
+   3. Grant of Patent License. Subject to the terms and conditions of
75
+      this License, each Contributor hereby grants to You a perpetual,
76
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+      (except as stated in this section) patent license to make, have made,
78
+      use, offer to sell, sell, import, and otherwise transfer the Work,
79
+      where such license applies only to those patent claims licensable
80
+      by such Contributor that are necessarily infringed by their
81
+      Contribution(s) alone or by combination of their Contribution(s)
82
+      with the Work to which such Contribution(s) was submitted. If You
83
+      institute patent litigation against any entity (including a
84
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+      or a Contribution incorporated within the Work constitutes direct
86
+      or contributory patent infringement, then any patent licenses
87
+      granted to You under this License for that Work shall terminate
88
+      as of the date such litigation is filed.
89
+
90
+   4. Redistribution. You may reproduce and distribute copies of the
91
+      Work or Derivative Works thereof in any medium, with or without
92
+      modifications, and in Source or Object form, provided that You
93
+      meet the following conditions:
94
+
95
+      (a) You must give any other recipients of the Work or
96
+          Derivative Works a copy of this License; and
97
+
98
+      (b) You must cause any modified files to carry prominent notices
99
+          stating that You changed the files; and
100
+
101
+      (c) You must retain, in the Source form of any Derivative Works
102
+          that You distribute, all copyright, patent, trademark, and
103
+          attribution notices from the Source form of the Work,
104
+          excluding those notices that do not pertain to any part of
105
+          the Derivative Works; and
106
+
107
+      (d) If the Work includes a "NOTICE" text file as part of its
108
+          distribution, then any Derivative Works that You distribute must
109
+          include a readable copy of the attribution notices contained
110
+          within such NOTICE file, excluding those notices that do not
111
+          pertain to any part of the Derivative Works, in at least one
112
+          of the following places: within a NOTICE text file distributed
113
+          as part of the Derivative Works; within the Source form or
114
+          documentation, if provided along with the Derivative Works; or,
115
+          within a display generated by the Derivative Works, if and
116
+          wherever such third-party notices normally appear. The contents
117
+          of the NOTICE file are for informational purposes only and
118
+          do not modify the License. You may add Your own attribution
119
+          notices within Derivative Works that You distribute, alongside
120
+          or as an addendum to the NOTICE text from the Work, provided
121
+          that such additional attribution notices cannot be construed
122
+          as modifying the License.
123
+
124
+      You may add Your own copyright statement to Your modifications and
125
+      may provide additional or different license terms and conditions
126
+      for use, reproduction, or distribution of Your modifications, or
127
+      for any such Derivative Works as a whole, provided Your use,
128
+      reproduction, and distribution of the Work otherwise complies with
129
+      the conditions stated in this License.
130
+
131
+   5. Submission of Contributions. Unless You explicitly state otherwise,
132
+      any Contribution intentionally submitted for inclusion in the Work
133
+      by You to the Licensor shall be under the terms and conditions of
134
+      this License, without any additional terms or conditions.
135
+      Notwithstanding the above, nothing herein shall supersede or modify
136
+      the terms of any separate license agreement you may have executed
137
+      with Licensor regarding such Contributions.
138
+
139
+   6. Trademarks. This License does not grant permission to use the trade
140
+      names, trademarks, service marks, or product names of the Licensor,
141
+      except as required for reasonable and customary use in describing the
142
+      origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+   7. Disclaimer of Warranty. Unless required by applicable law or
145
+      agreed to in writing, Licensor provides the Work (and each
146
+      Contributor provides its Contributions) on an "AS IS" BASIS,
147
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+      implied, including, without limitation, any warranties or conditions
149
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+      PARTICULAR PURPOSE. You are solely responsible for determining the
151
+      appropriateness of using or redistributing the Work and assume any
152
+      risks associated with Your exercise of permissions under this License.
153
+
154
+   8. Limitation of Liability. In no event and under no legal theory,
155
+      whether in tort (including negligence), contract, or otherwise,
156
+      unless required by applicable law (such as deliberate and grossly
157
+      negligent acts) or agreed to in writing, shall any Contributor be
158
+      liable to You for damages, including any direct, indirect, special,
159
+      incidental, or consequential damages of any character arising as a
160
+      result of this License or out of the use or inability to use the
161
+      Work (including but not limited to damages for loss of goodwill,
162
+      work stoppage, computer failure or malfunction, or any and all
163
+      other commercial damages or losses), even if such Contributor
164
+      has been advised of the possibility of such damages.
165
+
166
+   9. Accepting Warranty or Additional Liability. While redistributing
167
+      the Work or Derivative Works thereof, You may choose to offer,
168
+      and charge a fee for, acceptance of support, warranty, indemnity,
169
+      or other liability obligations and/or rights consistent with this
170
+      License. However, in accepting such obligations, You may act only
171
+      on Your own behalf and on Your sole responsibility, not on behalf
172
+      of any other Contributor, and only if You agree to indemnify,
173
+      defend, and hold each Contributor harmless for any liability
174
+      incurred by, or claims asserted against, such Contributor by reason
175
+      of your accepting any such warranty or additional liability.
176
+
177
+   END OF TERMS AND CONDITIONS
178
+
179
+   APPENDIX: How to apply the Apache License to your work.
180
+
181
+      To apply the Apache License to your work, attach the following
182
+      boilerplate notice, with the fields enclosed by brackets "[]"
183
+      replaced with your own identifying information. (Don't include
184
+      the brackets!)  The text should be enclosed in the appropriate
185
+      comment syntax for the file format. We also recommend that a
186
+      file or class name and description of purpose be included on the
187
+      same "printed page" as the copyright notice for easier
188
+      identification within third-party archives.
189
+
190
+   Copyright [yyyy] [name of copyright owner]
191
+
192
+   Licensed under the Apache License, Version 2.0 (the "License");
193
+   you may not use this file except in compliance with the License.
194
+   You may obtain a copy of the License at
195
+
196
+       http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+   Unless required by applicable law or agreed to in writing, software
199
+   distributed under the License is distributed on an "AS IS" BASIS,
200
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+   See the License for the specific language governing permissions and
202
+   limitations under the License.

+ 27
- 0
Makefile View File

@@ -0,0 +1,27 @@
1
+NPM = npm
2
+BROWSERIFY = browserify
3
+GLOBAL_FLAGS = -x jquery -e
4
+OUTPUT_DIR = .
5
+DEPLOY_DIR = libs
6
+
7
+all: compile deploy clean
8
+
9
+compile:FLAGS = $(GLOBAL_FLAGS)
10
+compile: app
11
+
12
+debug: compile-debug deploy clean
13
+
14
+compile-debug:FLAGS = -d $(GLOBAL_FLAGS)
15
+compile-debug: app
16
+
17
+app:
18
+	$(NPM) update && $(BROWSERIFY) $(FLAGS) app.js -s APP -o $(OUTPUT_DIR)/app.bundle.js
19
+
20
+clean:
21
+	rm -f $(OUTPUT_DIR)/*.bundle.js
22
+
23
+deploy:
24
+	mkdir -p $(DEPLOY_DIR) && \
25
+	cp $(OUTPUT_DIR)/*.bundle.js $(DEPLOY_DIR) && \
26
+	./bump-js-versions.sh && \
27
+	([ ! -x deploy-local.sh ] || ./deploy-local.sh)

+ 52
- 0
README.md View File

@@ -0,0 +1,52 @@
1
+Jitsi Meet - Secure, Simple and Scalable Video Conferences 
2
+====
3
+Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses [Jitsi Videobridge](https://jitsi.org/videobridge) to provide high quality, scalable video conferences. You can see [Jitsi Meet in action](http://youtu.be/7vFUVClsNh0) here at the session #482 of the VoIP Users Conference.
4
+
5
+You can also try it out yourself at https://meet.jit.si .
6
+
7
+Jitsi Meet allows for very efficient collaboration. It allows users to stream their desktop or only some windows. It also supports shared document editing with Etherpad and remote presentations with Prezi. 
8
+
9
+## Installation
10
+
11
+Installing Jitsi Meet is quite a simple experience. For Debian-based systems, we recommend following the [quick-install](https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md) document, which uses the package system.
12
+
13
+For other systems, or if you wish to install all components manually, see the [detailed manual installation instructions](https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md).
14
+
15
+## Building the sources
16
+
17
+Jitsi Meet uses [Browserify](http://browserify.org). If you want to make changes in the code you need to [install Browserify](http://browserify.org/#install). Browserify requires [nodejs](http://nodejs.org). 
18
+
19
+On Debian/Ubuntu systems, the required packages can be installed with:
20
+```
21
+sudo apt-get install npm
22
+sudo npm install -g browserify
23
+cd jitsi-meet
24
+npm install
25
+```
26
+
27
+To build the Jitsi Meet application, just type
28
+```
29
+make
30
+```
31
+
32
+## Discuss
33
+Please use the [Jitsi dev mailing list](http://lists.jitsi.org/pipermail/dev/) to discuss feature requests before opening an issue on Github. 
34
+
35
+## Acknowledgements
36
+
37
+Jitsi Meet started out as a sample conferencing application using Jitsi Videobridge. It was originally developed by then ESTOS' developer Philipp Hancke who then contributed it to the community where development continues with joint forces! 
38
+
39
+## Miscellaneous
40
+
41
+This project was originally contributed to the community under the MIT license and with the following notice:
42
+
43
+The MIT License (MIT)
44
+
45
+Copyright (c) 2013 ESTOS GmbH 
46
+Copyright (c) 2013 BlueJimp SARL
47
+
48
+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:
49
+
50
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
51
+
52
+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.

+ 8
- 0
analytics.js View File

@@ -0,0 +1,8 @@
1
+/**
2
+ * Google Analytics
3
+ */
4
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5
+             (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+          })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
7
+        ga('create', 'UA-319188-14', 'jit.si');
8
+        ga('send', 'pageview');

+ 55
- 0
app.js View File

@@ -0,0 +1,55 @@
1
+/* jshint -W117 */
2
+/* application specific logic */
3
+
4
+var APP =
5
+{
6
+    init: function () {
7
+        this.UI = require("./modules/UI/UI");
8
+        this.API = require("./modules/API/API");
9
+        this.connectionquality = require("./modules/connectionquality/connectionquality");
10
+        this.statistics = require("./modules/statistics/statistics");
11
+        this.RTC = require("./modules/RTC/RTC");
12
+        this.desktopsharing = require("./modules/desktopsharing/desktopsharing");
13
+        this.xmpp = require("./modules/xmpp/xmpp");
14
+        this.keyboardshortcut = require("./modules/keyboardshortcut/keyboardshortcut");
15
+        this.translation = require("./modules/translation/translation");
16
+        this.settings = require("./modules/settings/Settings");
17
+        this.DTMF = require("./modules/DTMF/DTMF");
18
+        this.members = require("./modules/members/MemberList");
19
+    }
20
+};
21
+
22
+function init() {
23
+
24
+    APP.desktopsharing.init();
25
+    APP.RTC.start();
26
+    APP.xmpp.start();
27
+    APP.statistics.start();
28
+    APP.connectionquality.init();
29
+    APP.keyboardshortcut.init();
30
+    APP.members.start();
31
+}
32
+
33
+
34
+$(document).ready(function () {
35
+
36
+    var URLProcessor = require("./modules/URLProcessor/URLProcessor");
37
+    URLProcessor.setConfigParametersFromUrl();
38
+    APP.init();
39
+
40
+    APP.translation.init();
41
+
42
+    if(APP.API.isEnabled())
43
+        APP.API.init();
44
+
45
+    APP.UI.start(init);
46
+
47
+});
48
+
49
+$(window).bind('beforeunload', function () {
50
+    if(APP.API.isEnabled())
51
+        APP.API.dispose();
52
+});
53
+
54
+module.exports = APP;
55
+

+ 34
- 0
bump-js-versions.sh View File

@@ -0,0 +1,34 @@
1
+#!/bin/sh
2
+
3
+if ! which git > /dev/null 2>&1 ;then
4
+    echo "Cannot find git executable, not bumping js versions."
5
+    exit
6
+fi
7
+if ! git status > /dev/null 2>&1 ;then
8
+    echo "Not a git repository, not bumping js versions."
9
+    exit
10
+fi
11
+
12
+# This script finds all js files included from index.html which have been
13
+# modified and bumps their version (the value of the "v" parameter used
14
+# in index.html)
15
+
16
+# contents of index.html at HEAD (excluding not-committed changes)
17
+index=`git show HEAD:index.html`
18
+
19
+# js files included from index.html. The sort needed for comm
20
+jsfiles=.bump-js-versions-jsfiles.tmp
21
+echo "$index" | grep '<script src=".*"' -o | sed -e 's/<script src="//' | sed -e 's/\?.*//' |  tr -d \" | sort > $jsfiles
22
+
23
+# modified files since the last commit
24
+gitmodified=.bump-js-versions-gitmodified.tmp
25
+git ls-files -m | sort > $gitmodified
26
+
27
+for file in `comm -12 $jsfiles $gitmodified` ;do
28
+    old_version=`echo "$index" | grep "<script src=\"${file}?v=[0-9]*" -o | sed -e 's/.*v=//'| tr -d \"`
29
+    new_version=$((1+$old_version))
30
+    echo Bumping version of $file from $old_version to $new_version
31
+    sed -i.tmp -e "s%script src=\"${file}\?v=.*\"%script src=\"$file?v=$new_version\"%" index.html
32
+done
33
+
34
+rm -f $jsfiles $gitmodified index.html.tmp

+ 43
- 0
config.js View File

@@ -0,0 +1,43 @@
1
+var config = {
2
+    hosts: {
3
+        domain: 'jitsi-meet.example.com',
4
+        //anonymousdomain: 'guest.example.com',
5
+        muc: 'conference.jitsi-meet.example.com', // FIXME: use XEP-0030
6
+        bridge: 'jitsi-videobridge.jitsi-meet.example.com', // FIXME: use XEP-0030
7
+        //jirecon: 'jirecon.jitsi-meet.example.com',
8
+        //call_control: 'callcontrol.jitsi-meet.example.com',
9
+        //focus: 'focus.jitsi-meet.example.com' - defaults to 'focus.jitsi-meet.example.com'
10
+    },
11
+//  getroomnode: function (path) { return 'someprefixpossiblybasedonpath'; },
12
+//  useStunTurn: true, // use XEP-0215 to fetch STUN and TURN server
13
+//  useIPv6: true, // ipv6 support. use at your own risk
14
+    useNicks: false,
15
+    bosh: '//jitsi-meet.example.com/http-bind', // FIXME: use xep-0156 for that
16
+    clientNode: 'http://jitsi.org/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
17
+    //focusUserJid: 'focus@auth.jitsi-meet.example.com', // The real JID of focus participant - can be overridden here
18
+    //defaultSipNumber: '', // Default SIP number
19
+    desktopSharing: 'ext', // Desktop sharing method. Can be set to 'ext', 'webrtc' or false to disable.
20
+    chromeExtensionId: 'diibjkoicjeejcmhdnailmkgecihlobk', // Id of desktop streamer Chrome extension
21
+    desktopSharingSources: ['screen', 'window'],
22
+    minChromeExtVersion: '0.1', // Required version of Chrome extension
23
+    openSctp: true, // Toggle to enable/disable SCTP channels
24
+    disableStats: false,
25
+    disableAudioLevels: false,
26
+    channelLastN: -1, // The default value of the channel attribute last-n.
27
+    adaptiveLastN: false,
28
+    adaptiveSimulcast: false,
29
+    enableRecording: false,
30
+    enableWelcomePage: true,
31
+    enableSimulcast: false, // blocks FF support
32
+    logStats: false, // Enable logging of PeerConnection stats via the focus
33
+//    requireDisplayName: true,//Forces the participants that doesn't have display name to enter it when they enter the room.
34
+//    startAudioMuted: 10, //every participant after the Nth will start audio muted
35
+//    startVideoMuted: 10, //every participant after the Nth will start video muted
36
+//    defaultLanguage: "en",
37
+// To enable sending statistics to callstats.io you should provide Applicaiton ID and Secret.
38
+//    callStatsID: "",//Application ID for callstats.io API
39
+//    callStatsSecret: ""//Secret for callstats.io API
40
+    /*noticeMessage: 'Service update is scheduled for 16th March 2015. ' +
41
+    'During that time service will not be available. ' +
42
+    'Apologise for inconvenience.'*/
43
+};

+ 239
- 0
css/chat.css View File

@@ -0,0 +1,239 @@
1
+#chatspace {
2
+    background-color: black;
3
+    border-left: 1px solid #424242;
4
+}
5
+
6
+#chatspace * {
7
+    -webkit-user-select: text;
8
+    user-select: text;
9
+}
10
+
11
+#chatconversation {
12
+    visibility: hidden;
13
+    position: relative;
14
+    top: 5px;
15
+    padding: 5px;
16
+    text-align: left;
17
+    line-height: 20px;
18
+    font-size: 10pt;
19
+    width: 100%;
20
+    height: 90%;
21
+    overflow-y: scroll;
22
+    overflow-x: hidden;
23
+    word-wrap: break-word;
24
+}
25
+
26
+.localuser {
27
+    color: #087dba;
28
+}
29
+
30
+.errorMessage {
31
+    color: red;
32
+}
33
+
34
+.remoteuser {
35
+    color: white;
36
+}
37
+
38
+#usermsg {
39
+    visibility:hidden;
40
+    position: absolute;
41
+    bottom: 0px;
42
+    right: 0px;
43
+    width: 83%;
44
+    height: 30px;
45
+    padding: 5px 5px 5px 0px;
46
+    max-height:150px;
47
+    min-height:35px;
48
+    border: 0px none;
49
+    background: #3a3a3a;
50
+    color: #a7a7a7;
51
+    box-shadow: none;
52
+    border-radius:0;
53
+    font-size: 10pt;
54
+    line-height: 30px;
55
+    overflow: hidden;
56
+    resize: none;
57
+}
58
+
59
+#usermsg:hover {
60
+    border: 0px none;
61
+    box-shadow: none;
62
+}
63
+
64
+#nickname {
65
+    position: absolute;
66
+    text-align: center;
67
+    color: #9d9d9d;
68
+    font-size: 18px;
69
+    top: 100px;
70
+    left: 5px;
71
+    right: 5px;
72
+    width: 95%;
73
+}
74
+
75
+#nickinput {
76
+    margin-top: 20px;
77
+    font-size: 14px;
78
+    background: #3a3a3a;
79
+    box-shadow: inset 0 0 3px 2px #a7a7a7;
80
+    border: 1px solid #a7a7a7;
81
+    color: #a7a7a7;
82
+}
83
+
84
+#unreadMessages {
85
+    font-size: 8px;
86
+    position: absolute;
87
+    left: 46%;
88
+    top: 27%
89
+}
90
+
91
+#bottomUnreadMessages {
92
+    top: 5px;
93
+    left: 10px;
94
+    position: absolute;
95
+    font-size: 8px;
96
+}
97
+
98
+#chatspace .username {
99
+    float: left;
100
+    padding-left: 5px;
101
+    font-weight: bold;
102
+}
103
+
104
+#chatspace .timestamp {
105
+    float: right;
106
+    padding-right: 5px;
107
+    font-size: 11px;
108
+}
109
+
110
+#chatspace .usermessage {
111
+    padding-top: 20px;
112
+    padding-left: 5px;
113
+}
114
+
115
+.chatArrow {
116
+    position: absolute;
117
+    height: 15px;
118
+    left: 5px;
119
+}
120
+
121
+.chatmessage {
122
+    background: #3a3a3a;
123
+    width: 93%;
124
+    margin-left: 5%;
125
+    margin-right: auto;
126
+    border-radius: 5px;
127
+    border-top-left-radius: 0px;
128
+    margin-top: 3px;
129
+    left: 5px;
130
+    color: #a7a7a7;
131
+    overflow: hidden;
132
+    padding-bottom: 3px;
133
+}
134
+
135
+.smiley {
136
+    height: 26px;
137
+}
138
+
139
+#smileys {
140
+    position: absolute;
141
+    bottom: 7px;
142
+    right: 5px;
143
+    background: white;
144
+    border-radius: 50px;
145
+    height: 26px;
146
+    margin: auto;
147
+    cursor: pointer;
148
+}
149
+
150
+#smileys img {
151
+    width: 22px;
152
+    padding: 2px;
153
+}
154
+
155
+#smileysarea {
156
+    position: absolute;
157
+    bottom: 0px;
158
+    left: 0px;
159
+    width: 17%;
160
+    min-width: 31px;
161
+    height: 40px;
162
+    padding: 0px;
163
+    max-height:150px;
164
+    min-height:35px;
165
+    border: 0px none;
166
+    background: #3a3a3a;
167
+    overflow: hidden;
168
+    visibility: hidden;
169
+}
170
+
171
+#smileysContainer {
172
+    display: none;
173
+    position: absolute;
174
+    background: #3a3a3a;
175
+    border-bottom: 1px solid;
176
+    border-top: 1px solid;
177
+    width: 100%;
178
+    bottom: 10%;
179
+}
180
+
181
+#smileysContainer .smiley {
182
+    padding: 7px;
183
+}
184
+
185
+.smileyContainer {
186
+    width: 40px;
187
+    height: 40px;
188
+    display: inline-block;
189
+}
190
+
191
+.smileyContainer:hover {
192
+    background: #3e3e3e;
193
+}
194
+
195
+#usermsg::-webkit-input-placeholder {
196
+    line-height: 30px;
197
+}
198
+
199
+::-webkit-scrollbar {
200
+    background: #06a5df;
201
+    width: 7px;
202
+}
203
+
204
+::-webkit-scrollbar-button {
205
+    display: none;
206
+}
207
+
208
+::-webkit-scrollbar-track {
209
+    background: black;
210
+}
211
+
212
+::-webkit-scrollbar-track-piece {
213
+    background: black;
214
+}
215
+
216
+::-webkit-scrollbar-thumb {
217
+    background: #06a5df;
218
+    border-radius: 4px;
219
+}
220
+
221
+#usermsg::-webkit-scrollbar-track-piece {
222
+    background: #3a3a3a;
223
+}
224
+
225
+a:link {
226
+    color: rgb(184, 184, 184);
227
+}
228
+
229
+a:visited {
230
+    color: white;
231
+}
232
+
233
+a:hover {
234
+    color: rgb(213, 213, 213);
235
+}
236
+
237
+a:active {
238
+    color: black;
239
+}

+ 51
- 0
css/contact_list.css View File

@@ -0,0 +1,51 @@
1
+#contactlist {
2
+    background-color: black;
3
+    cursor: default;
4
+}
5
+
6
+#contactlist>div.title {
7
+    text-align: left;
8
+    padding: 7px 10px;
9
+    margin: 2px;
10
+    color: #00ccff;
11
+    font-size: 11pt;
12
+    border-bottom: 1px solid #676767;
13
+}
14
+
15
+#contactlist>ul#contacts {
16
+    position: absolute;
17
+    top: 31px;
18
+    bottom: 0px;
19
+    width: 100%;
20
+    margin: 0px;
21
+    padding: 0px;
22
+    overflow-y: scroll;
23
+    overflow-x: hidden;
24
+}
25
+
26
+#contacts>li {
27
+    list-style-type: none;
28
+    text-align: left;
29
+    color: #FFF;
30
+    font-size: 10pt;
31
+    padding: 7px 10px;
32
+    margin: 2px;
33
+}
34
+
35
+#contacts>li>p {
36
+    display: inline-block;
37
+    vertical-align: middle;
38
+    margin: 0px;
39
+}
40
+
41
+.avatar {
42
+    padding: 0px;
43
+    margin-right: 10px;
44
+    vertical-align: middle;
45
+    font-size: 22pt;
46
+    border-radius: 20px;
47
+}
48
+
49
+#contactlist .clickable {
50
+    cursor: pointer;
51
+}

+ 126
- 0
css/font.css View File

@@ -0,0 +1,126 @@
1
+@font-face {
2
+    font-family: 'jitsi';
3
+    src:url('../fonts/jitsi.eot?94d075');
4
+    src:url('../fonts/jitsi.eot?#iefix94d075') format('embedded-opentype'),
5
+        url('../fonts/jitsi.woff?94d075') format('woff'),
6
+        url('../fonts/jitsi.ttf?94d075') format('truetype'),
7
+        url('../fonts/jitsi.svg?94d075#jitsi') format('svg');
8
+    font-weight: normal;
9
+    font-style: normal;
10
+}
11
+
12
+[class^="icon-"], [class*=" icon-"] {
13
+    font-family: 'jitsi';
14
+    speak: none;
15
+    font-style: normal;
16
+    font-weight: normal;
17
+    font-variant: normal;
18
+    text-transform: none;
19
+    line-height: 0.75em;
20
+    font-size: 1.22em;
21
+
22
+    /* Better Font Rendering =========== */
23
+    -webkit-font-smoothing: antialiased;
24
+    -moz-osx-font-smoothing: grayscale;
25
+}
26
+
27
+.icon-contactList:before {
28
+    content: "\e615";
29
+}
30
+.icon-avatar:before {
31
+    content: "\e616";
32
+}
33
+.icon-callRetro:before {
34
+    content: "\e611";
35
+}
36
+.icon-callModern:before {
37
+    content: "\e612";
38
+}
39
+.icon-recDisable:before {
40
+    content: "\e613";
41
+}
42
+.icon-recEnable:before {
43
+    content: "\e614";
44
+}
45
+.icon-authenticate:before {
46
+    content: "\e1ae";
47
+}
48
+.icon-kick1:before {
49
+    content: "\e60f";
50
+}
51
+.icon-kick:before {
52
+    content: "\e610";
53
+}
54
+.icon-share-desktop:before {
55
+	content: "\e602";
56
+}
57
+.icon-chat-simple:before {
58
+	content: "\e606";
59
+}
60
+.icon-full-screen:before {
61
+	content: "\e60d";
62
+}
63
+.icon-exit-full-screen:before {
64
+	content: "\e60e";
65
+}
66
+.icon-prezi:before {
67
+	content: "\e60c";
68
+}
69
+.icon-link:before {
70
+	content: "\e600";
71
+}
72
+.icon-chat:before {
73
+	content: "\e601";
74
+}
75
+.icon-presentation:before {
76
+	content: "\e603";
77
+}
78
+.icon-security:before {
79
+	content: "\e604";
80
+}
81
+.icon-share-doc:before {
82
+	content: "\e605";
83
+}
84
+.icon-telephone:before {
85
+    content: "\e611";
86
+}
87
+.icon-security-locked:before {
88
+	content: "\e607";
89
+}
90
+.icon-camera:before {
91
+	content: "\e608";
92
+}
93
+.icon-camera-disabled:before {
94
+	content: "\e609";
95
+}
96
+.icon-mic-disabled:before {
97
+	content: "\e60a";
98
+}
99
+.icon-microphone:before {
100
+	content: "\e60b";
101
+}
102
+
103
+.icon-hangup:before {
104
+    content: "\e617";
105
+}
106
+
107
+.icon-reload:before {
108
+    content: "\e618";
109
+}
110
+
111
+.icon-filmstrip:before {
112
+    content: "\e619";
113
+}
114
+
115
+.icon-connection:before {
116
+    line-height: normal;
117
+    content: "\e61a";
118
+}
119
+
120
+.icon-settings:before {
121
+    content: "\e61b";
122
+}
123
+
124
+.icon-dialPad:before {
125
+    content: "\e61c";
126
+}

+ 105
- 0
css/jitsi_popover.css View File

@@ -0,0 +1,105 @@
1
+.jitsipopover {
2
+    position: absolute;
3
+    top: 0;
4
+    left: 0;
5
+    z-index: 1010;
6
+    display: none;
7
+    max-width: 300px;
8
+    min-width: 100px;
9
+    padding: 1px;
10
+    text-align: left;
11
+    color: #333333;
12
+    background-color: #ffffff;
13
+    background-clip: padding-box;
14
+    border: 1px solid #cccccc;
15
+    border: 1px solid rgba(0, 0, 0, 0.2);
16
+    border-radius: 6px;
17
+    /*-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);*/
18
+    /*box-shadow: 0 5px 10px rgba(0, 0, 0, 0.4);*/
19
+    white-space: normal;
20
+    margin-top: -10px;
21
+    margin-bottom: 35px;
22
+}
23
+
24
+.jitsipopover.black
25
+{
26
+    background-color: rgba(0,0,0,0.8);
27
+    color: #ffffff;
28
+}
29
+
30
+.jitsipopover-content {
31
+    padding: 9px 14px;
32
+    font-size: 10pt;
33
+    white-space:pre-wrap;
34
+    text-align: center;
35
+}
36
+
37
+.jitsipopover > .arrow,
38
+.jitsipopover > .arrow:after {
39
+    position: absolute;
40
+    display: block;
41
+    width: 0;
42
+    height: 0;
43
+    border-color: transparent;
44
+    border-style: solid;
45
+}
46
+
47
+.jitsipopover > .arrow {
48
+    border-width: 11px;
49
+    left: 50%;
50
+    margin-left: -11px;
51
+    border-bottom-width: 0;
52
+    border-top-color: #999999;
53
+    border-top-color: rgba(0, 0, 0, 0.25);
54
+    bottom: -11px;
55
+}
56
+.jitsipopover > .arrow:after {
57
+    border-width: 10px;
58
+    content: " ";
59
+    bottom: 1px;
60
+    margin-left: -10px;
61
+    border-bottom-width: 0;
62
+    border-top-color: #ffffff;
63
+}
64
+
65
+.jitsipopover.black > .arrow:after
66
+{
67
+    border-top-color: rgba(0, 0, 0, 0.8);
68
+}
69
+
70
+.jitsiPopupmenuPadding {
71
+    height: 35px;
72
+    width: 100px;
73
+    position: absolute;
74
+    bottom: -35;
75
+}
76
+
77
+.jitsipopover_green
78
+{
79
+    color: #4abd04;
80
+}
81
+
82
+.jitsipopover_orange
83
+{
84
+    color: #ffa800;
85
+}
86
+
87
+.jitsipopover_blue
88
+{
89
+    color: #06a5df;
90
+}
91
+
92
+.jitsipopover_showmore
93
+{
94
+    background-color: #06a5df;
95
+    color: #ffffff;
96
+    cursor: pointer;
97
+    border-radius: 3px;
98
+    text-align: center;
99
+    width: 90px;
100
+    height: 16px;
101
+    padding-top: 4px;
102
+    padding-left: 10px;
103
+    padding-right: 10px;
104
+    margin: 15px auto 0px auto;
105
+}

+ 128
- 0
css/jquery-impromptu.css View File

@@ -0,0 +1,128 @@
1
+/*
2
+------------------------------
3
+	Impromptu
4
+------------------------------
5
+*/
6
+.jqifade{
7
+	position: absolute; 
8
+	background-color: #000;
9
+}
10
+div.jqi{ 
11
+	width: 400px;
12
+	position: absolute; 
13
+	background-color: #ffffff; 
14
+	font-size: 11px; 
15
+	text-align: left; 
16
+	border: solid 1px #eeeeee;
17
+	border-radius: 6px;
18
+	-moz-border-radius: 6px;
19
+	-webkit-border-radius: 6px;
20
+	padding: 7px;
21
+}
22
+div.jqi .jqicontainer{ 
23
+}
24
+div.jqi .jqiclose{ 
25
+	position: absolute;
26
+	top: 4px; right: -2px; 
27
+	width: 18px; 
28
+	cursor: default; 
29
+	color: #bbbbbb; 
30
+	font-weight: bold; 
31
+}
32
+div.jqi .jqistate{
33
+	background-color: #fff;
34
+}
35
+div.jqi .jqititle{
36
+	padding: 5px 10px;
37
+	font-size: 16px; 
38
+	line-height: 20px; 
39
+	border-bottom: solid 1px #eeeeee;
40
+}
41
+div.jqi .jqimessage{ 
42
+	padding: 10px; 
43
+	line-height: 20px; 
44
+	color: #444444; 
45
+}
46
+div.jqi .jqibuttons{ 
47
+	text-align: right; 
48
+	margin: 0 -7px -7px -7px;
49
+	border-top: solid 1px #e4e4e4; 
50
+	background-color: #f4f4f4;
51
+	border-radius: 0 0 6px 6px;
52
+	-moz-border-radius: 0 0 6px 6px;
53
+	-webkit-border-radius: 0 0 6px 6px;
54
+}
55
+div.jqi .jqibuttons button{ 
56
+	margin: 0;
57
+	padding: 5px 20px;
58
+	background-color: transparent;
59
+	font-weight: normal; 
60
+	border: none;
61
+	border-left: solid 1px #e4e4e4; 
62
+	color: #777; 
63
+	font-weight: bold; 
64
+	font-size: 12px; 
65
+}
66
+div.jqi .jqibuttons button.jqidefaultbutton{
67
+	color: #489afe;
68
+}
69
+
70
+div.jqi .jqibuttons button:disabled {
71
+    color: #b6b6b6 !important;
72
+}
73
+div.jqi .jqibuttons button:hover,
74
+div.jqi .jqibuttons button:focus{
75
+	color: #287ade;
76
+	outline: none;
77
+}
78
+.jqiwarning .jqi .jqibuttons{ 
79
+	background-color: #b95656;
80
+}
81
+
82
+/* sub states */
83
+div.jqi .jqiparentstate::after{ 
84
+	background-color: #777;
85
+	opacity: 0.6;
86
+	filter: alpha(opacity=60);
87
+	content: '';
88
+	position: absolute;
89
+	top:0;left:0;bottom:0;right:0;
90
+	border-radius: 6px;
91
+	-moz-border-radius: 6px;
92
+	-webkit-border-radius: 6px;
93
+}
94
+div.jqi .jqisubstate{
95
+	position: absolute;
96
+	top:0;
97
+	left: 20%;
98
+	width: 60%;
99
+	padding: 7px;
100
+	border: solid 1px #eeeeee;
101
+	border-top: none;
102
+	border-radius: 0 0 6px 6px;
103
+	-moz-border-radius: 0 0 6px 6px;
104
+	-webkit-border-radius: 0 0 6px 6px;
105
+}
106
+div.jqi .jqisubstate .jqibuttons button{
107
+	padding: 10px 18px;
108
+}
109
+
110
+/* arrows for tooltips/tours */
111
+.jqi .jqiarrow{ position: absolute; height: 0; width:0; line-height: 0; font-size: 0; border: solid 10px transparent;}
112
+
113
+.jqi .jqiarrowtl{ left: 10px; top: -20px; border-bottom-color: #ffffff; }
114
+.jqi .jqiarrowtc{ left: 50%; top: -20px; border-bottom-color: #ffffff; margin-left: -10px; }
115
+.jqi .jqiarrowtr{ right: 10px; top: -20px; border-bottom-color: #ffffff; }
116
+
117
+.jqi .jqiarrowbl{ left: 10px; bottom: -20px; border-top-color: #ffffff; }
118
+.jqi .jqiarrowbc{ left: 50%; bottom: -20px; border-top-color: #ffffff; margin-left: -10px; }
119
+.jqi .jqiarrowbr{ right: 10px; bottom: -20px; border-top-color: #ffffff; }
120
+
121
+.jqi .jqiarrowlt{ left: -20px; top: 10px; border-right-color: #ffffff; }
122
+.jqi .jqiarrowlm{ left: -20px; top: 50%; border-right-color: #ffffff; margin-top: -10px; }
123
+.jqi .jqiarrowlb{ left: -20px; bottom: 10px; border-right-color: #ffffff; }
124
+
125
+.jqi .jqiarrowrt{ right: -20px; top: 10px; border-left-color: #ffffff; }
126
+.jqi .jqiarrowrm{ right: -20px; top: 50%; border-left-color: #ffffff; margin-top: -10px; }
127
+.jqi .jqiarrowrb{ right: -20px; bottom: 10px; border-left-color: #ffffff; }
128
+

+ 61
- 0
css/login_menu.css View File

@@ -0,0 +1,61 @@
1
+/*Initialize*/
2
+ul.loginmenu {
3
+    display:none;
4
+    position: absolute;
5
+    margin: 0;
6
+    padding: 5px;
7
+    padding-bottom: 7px;
8
+    top: 45px;
9
+    left: -5px;
10
+    background-color: rgba(0,0,0,0.9);
11
+    border: 1px solid rgba(256, 256, 256, 0.2);
12
+    border-radius:8px;
13
+}
14
+
15
+ul.loginmenu li {
16
+    list-style-type: none;
17
+    padding: 7px;
18
+}
19
+
20
+ul.loginmenu li.identity {
21
+    color: #fff;
22
+    font-size: 11pt;
23
+    cursor: default;
24
+}
25
+
26
+ul.loginmenu:after {
27
+    content: url('../images/dropdownPointer.png');
28
+    display: block;
29
+    position: absolute;
30
+    top: -7px;
31
+    left: 18px;
32
+}
33
+
34
+li a.authButton{
35
+    background-color: #06a5df;
36
+    padding-top: 3px;
37
+    padding-bottom: 3px;
38
+    padding-left: 29px;
39
+    padding-right: 29px;
40
+    border-radius: 4px;
41
+    color: #fff;
42
+    font-size: 11pt;
43
+    cursor: pointer;
44
+}
45
+
46
+span.authentication:hover ul.loginmenu, ul.loginmenu:hover {
47
+    display:block !important;
48
+}
49
+
50
+a.disabled {
51
+    color: gray !important;
52
+    pointer-events: none;
53
+}
54
+
55
+.loginmenuPadding {
56
+    width: 50px;
57
+    height: 30px;
58
+    position: absolute;
59
+    top: -30px;
60
+    left: 0px;
61
+}

+ 377
- 0
css/main.css View File

@@ -0,0 +1,377 @@
1
+* {
2
+    -webkit-user-select: none;
3
+    user-select: none;
4
+}
5
+
6
+html, body{
7
+    margin:0px;
8
+    height:100%;
9
+    color: #424242;
10
+    font-family:'Helvetica Neue', Helvetica, sans-serif;
11
+    font-weight: 400;
12
+    background: #000000;
13
+    overflow-x: hidden;
14
+}
15
+
16
+.right-panel {
17
+    display:none;
18
+    position:absolute;
19
+    float: right;
20
+    top: 0px;
21
+    bottom: 0px;
22
+    right: 0px;
23
+    width: 20%;
24
+    max-width: 200px;
25
+    overflow: hidden;
26
+    /* background-color:#dfebf1;*/
27
+    background-color:#FFFFFF;
28
+    border-left:1px solid #424242;
29
+    z-index: 5;
30
+}
31
+
32
+#nowebrtc {
33
+    display:none;
34
+}
35
+
36
+.toolbar_span {
37
+    display: inline-block;
38
+    position: relative;
39
+}
40
+
41
+#toolbar a.button::after {
42
+    content: '';
43
+    display: inline-block;
44
+    position: absolute;
45
+    left: 40px;
46
+    width: 1px;
47
+    height: 20px;
48
+    background: #373737;
49
+}
50
+
51
+#toolbar a.button:last-child::after {
52
+    content: none;
53
+}
54
+
55
+.button {
56
+    display: inline-block;
57
+    position: relative;
58
+    color: #FFFFFF;
59
+    top: 0;
60
+    padding: 10px 0;
61
+    width: 38px;
62
+    cursor: pointer;
63
+    text-align: center;
64
+    text-shadow: 0 1px 0 rgba(255,255,255,.3), 0 -1px 0 rgba(0,0,0,.6);
65
+    z-index: 1;
66
+}
67
+
68
+.toolbar_span>span {
69
+    display: inline-block;
70
+    position: absolute;
71
+    font-size: 7pt;
72
+    color: #ffffff;
73
+    text-align:center;
74
+    cursor: pointer;
75
+}
76
+
77
+#toolbar_button_chat, #chatBottomButton, #contactListButton, #numberOfParticipants {
78
+    -webkit-transition: all .5s ease-in-out;
79
+       -moz-transition: all .5s ease-in-out;
80
+            transition: all .5s ease-in-out;
81
+}
82
+/*#ffde00*/
83
+#toolbar_button_chat.active, #contactListButton.glowing, #chatBottomButton.glowing {
84
+    -webkit-text-shadow:    -1px 0 10px #00ccff,
85
+                            0 1px 10px #00ccff,
86
+                            1px 0 10px #00ccff,
87
+                            0 -1px 10px #00ccff;
88
+    -moz-text-shadow:   1px 0 10px #00ccff,
89
+                        0 1px 10px #00ccff,
90
+                        1px 0 10px #00ccff,
91
+                        0 -1px 10px #00ccff;
92
+    text-shadow:    -1px 0 10px #00ccff,
93
+                    0 1px 10px #00ccff,
94
+                    1px 0 10px #00ccff,
95
+                    0 -1px 10px #00ccff;
96
+}
97
+
98
+#toolbar_button_hangup {
99
+    color: #ff0000;
100
+    font-size: 1.4em;
101
+}
102
+
103
+#numberOfParticipants {
104
+    position: absolute;
105
+    top: 0px;
106
+    right: -1;
107
+    color: white;
108
+    width: 13px;
109
+    height: 13px;
110
+    line-height: 13px;
111
+    font-weight: bold;
112
+    border-radius: 2px;
113
+    font-size: 11px;
114
+    text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
115
+}
116
+
117
+#contactListButton.active #numberOfParticipants {
118
+    color: #00ccff;
119
+}
120
+
121
+#toolbar_button_record {
122
+    -webkit-transition: all .5s ease-in-out;
123
+    -moz-transition: all .5s ease-in-out;
124
+    transition: all .5s ease-in-out;
125
+}
126
+/*#ffde00*/
127
+#toolbar_button_record.active {
128
+    -webkit-text-shadow:    -1px 0 10px #00ccff,
129
+    0 1px 10px #00ccff,
130
+    1px 0 10px #00ccff,
131
+    0 -1px 10px #00ccff;
132
+    -moz-text-shadow:   1px 0 10px #00ccff,
133
+    0 1px 10px #00ccff,
134
+    1px 0 10px #00ccff,
135
+    0 -1px 10px #00ccff;
136
+    text-shadow:    -1px 0 10px #00ccff,
137
+    0 1px 10px #00ccff,
138
+    1px 0 10px #00ccff,
139
+    0 -1px 10px #00ccff;
140
+}
141
+
142
+a.button:hover,
143
+a.bottomToolbarButton:hover {
144
+    top: 0px;
145
+    cursor: pointer;
146
+    background: rgba(255, 255, 255, 0.1);
147
+    border-radius: 6px;
148
+    background-clip: padding-box;
149
+    -webkit-border-radius: 6px;
150
+    -webkit-background-clip: padding-box;
151
+}
152
+
153
+.no-fa-video-camera, .fa-microphone-slash {
154
+    color: #636363;
155
+}
156
+
157
+.header_button_separator {
158
+    display: inline-block;
159
+    position:relative;
160
+    top: 5;
161
+    width: 1px;
162
+    height: 20px;
163
+    background: #373737;
164
+}
165
+
166
+.bottom_button_separator {
167
+    display: inline-block;
168
+    position: relative;
169
+    left: 5;
170
+    width: 20px;
171
+    height: 1px;
172
+    background: #373737;
173
+}
174
+
175
+input[type='text'], input[type='password'], textarea {
176
+    -webkit-user-select: text;
177
+    user-select: text;
178
+    display: inline-block;
179
+    font-size: 14px;
180
+    padding: 5px;
181
+    background: #f3f3f3;
182
+    border-radius: 3px;
183
+    font-weight: 100;
184
+    line-height: 20px;
185
+    height: 40px;
186
+    color: #333;
187
+    text-align: left;
188
+    border:1px solid #ACD8F0;
189
+    outline: none; /* removes the default outline */
190
+    resize: none; /* prevents the user-resizing, adjust to taste */
191
+}
192
+
193
+input[type='text'], input[type='password'], textarea:focus {
194
+    box-shadow: inset 0 0 3px 2px #ACD8F0; /* provides a more style-able
195
+                                         replacement to the outline */
196
+}
197
+
198
+textarea {
199
+    overflow: hidden;
200
+    word-wrap: break-word;
201
+    resize: horizontal;
202
+}
203
+
204
+button.no-icon {
205
+    padding: 0 1em;
206
+}
207
+
208
+button {
209
+    border: none;
210
+    height: 35px;
211
+    padding: 0 1em 0 2em;
212
+    position: relative;
213
+    border-radius: 3px;
214
+    font-weight: bold;
215
+    color: #fff;
216
+    line-height: 35px;
217
+    background: #2c8ad2;
218
+}
219
+
220
+button, input, select, textarea {
221
+    margin: 0;
222
+    vertical-align: baseline;
223
+}
224
+
225
+button, input[type="button"], input[type="reset"], input[type="submit"] {
226
+    cursor: pointer;
227
+    -webkit-appearance: button;
228
+}
229
+
230
+form {
231
+    display: block;
232
+}
233
+
234
+#downloadlog {
235
+    position: absolute;
236
+    bottom: 5;
237
+    left: 5;
238
+    overflow: visible;
239
+    z-index: 100;
240
+    color: rgba(255,255,255,.50);
241
+}
242
+
243
+#bottomToolbar {
244
+    display:block;
245
+    position: absolute;
246
+    right: 0;
247
+    margin-right: 5px;
248
+    bottom: 40px;
249
+    width: 29px;
250
+    border-radius: 6px;
251
+    color: #FFF;
252
+    border: 1px solid rgba(256, 256, 256, 0.2);
253
+    background: rgba(0,0,0,0.8);
254
+    z-index: 6; /*+1 from #remoteVideos*/
255
+}
256
+
257
+.bottomToolbarButton {
258
+    display: inline-block;
259
+    position: relative;
260
+    color: #FFFFFF;
261
+    top: 0;
262
+    padding-top: 6px;
263
+    margin: 2px;
264
+    width: 25px;
265
+    height: 20px;
266
+    cursor: pointer;
267
+    font-size: 10pt;
268
+    text-align: center;
269
+    text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
270
+    z-index: 1;
271
+}
272
+
273
+.active {
274
+    color: #00ccff;
275
+}
276
+
277
+.bottomToolbar_span>span {
278
+    display: inline-block;
279
+    position: absolute;
280
+    font-size: 7pt;
281
+    color: #ffffff;
282
+    text-align: center;
283
+    cursor: pointer;
284
+}
285
+
286
+.glow
287
+{
288
+    text-shadow: 0px 0px 30px #06a5df, 0px 0px 10px #06a5df, 0px 0px 5px #06a5df,0px 0px 3px #06a5df;
289
+}
290
+
291
+.watermark {
292
+    display: block;
293
+    position: absolute;
294
+    top: 15;
295
+    width: 186px;
296
+    height: 74px;
297
+    background-size: contain;
298
+    background-repeat: no-repeat;
299
+    z-index: 2;
300
+}
301
+
302
+.leftwatermark {
303
+    display: none;
304
+    left: 15;
305
+    background-image:url(../images/watermark.png);
306
+    background-position: center left;
307
+}
308
+
309
+.rightwatermark {
310
+    display: none;
311
+    right: 15;
312
+    background-position: center right;
313
+}
314
+
315
+.poweredby {
316
+    display: none;
317
+    position: absolute;
318
+    left: 25;
319
+    bottom: 7;
320
+    font-size: 11pt;
321
+    color: rgba(255,255,255,.50);
322
+    text-decoration: none;
323
+    z-index: 100;
324
+}
325
+
326
+#toast-container.notification-bottom-right {
327
+    bottom: 120px;
328
+    right: 5px;
329
+}
330
+
331
+#toast-container.notification-bottom-right-center {
332
+    right: 205px;
333
+}
334
+
335
+#toast-container .toast-info {
336
+    -webkit-box-shadow: none;
337
+    box-shadow: none;
338
+}
339
+
340
+.toast-close-button {
341
+    right: -7px;
342
+    top: -19px;
343
+}
344
+
345
+#toast-container .toast-info {
346
+    background-color: black;
347
+    border: 1px solid #3a3a3a;
348
+    width: 220px;
349
+    padding: 10px 10px 10px 50px;
350
+}
351
+
352
+.connected {
353
+    color: forestgreen;
354
+    font-size: 12px;
355
+}
356
+
357
+.disconnected {
358
+    color: darkred;
359
+    font-size: 12px;
360
+}
361
+
362
+.lastN {
363
+    color: #a3a3a3;
364
+    font-size: 12px;
365
+}
366
+
367
+.toast-close-button:hover,
368
+.toast-close-button:focus {
369
+    color: #ffffff;
370
+    opacity: 1;
371
+    -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
372
+    filter: alpha(opacity=100);
373
+}
374
+
375
+.toast-message .nickname {
376
+    font-weight: bold;
377
+}

+ 34
- 0
css/modaldialog.css View File

@@ -0,0 +1,34 @@
1
+.jqistates {
2
+    font-size: 14px;
3
+}
4
+
5
+.jqistates h2 {
6
+    padding-bottom: 10px;
7
+    border-bottom: 1px solid #eee;
8
+    font-size: 18px;
9
+    line-height: 25px;
10
+    text-align: center;
11
+    color: #424242;
12
+}
13
+
14
+.jqistates input {
15
+    margin: 10px 0;
16
+}
17
+
18
+.jqistates input[type='text'], input[type='password'] {
19
+    width: 100%;
20
+}
21
+
22
+.jqibuttons button {
23
+    margin-right: 5px;
24
+    float:right;
25
+}
26
+
27
+button.jqidefaultbutton #inviteLinkRef {
28
+    color: #2c8ad2;
29
+}
30
+
31
+#inviteLinkRef {
32
+    -webkit-user-select: text;
33
+    user-select: text;
34
+}

+ 11
- 0
css/notice.css View File

@@ -0,0 +1,11 @@
1
+#notice {
2
+    position: relative;
3
+    z-index: 3;
4
+    margin-top: 6px;
5
+}
6
+#noticeText {
7
+    background-color: #000000;
8
+    color: white;
9
+    padding: 3px;
10
+    border-radius: 5px;
11
+}

+ 124
- 0
css/popover.css View File

@@ -0,0 +1,124 @@
1
+.popover {
2
+  position: absolute;
3
+  top: 0;
4
+  left: 0;
5
+  z-index: 1010;
6
+  display: none;
7
+  max-width: 300px;
8
+  min-width: 100px;
9
+  padding: 1px;
10
+  text-align: left;
11
+  color: #333333;
12
+  background-color: #ffffff;
13
+  background-clip: padding-box;
14
+  border: 1px solid #cccccc;
15
+  border: 1px solid rgba(0, 0, 0, 0.2);
16
+  border-radius: 6px;
17
+  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
18
+  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.4);
19
+  white-space: normal;
20
+}
21
+.popover.top {
22
+  margin-top: -10px;
23
+}
24
+.popover.right {
25
+  margin-left: 10px;
26
+}
27
+.popover.bottom {
28
+  margin-top: 10px;
29
+}
30
+.popover.left {
31
+  margin-left: -10px;
32
+}
33
+.popover-title {
34
+  margin: 0;
35
+  padding: 8px 14px;
36
+  font-size: 11pt;
37
+  font-weight: normal;
38
+  line-height: 18px;
39
+  background-color: #f7f7f7;
40
+  border-bottom: 1px solid #ebebeb;
41
+  border-radius: 5px 5px 0 0;
42
+}
43
+.popover-content {
44
+  padding: 9px 14px;
45
+  font-size: 10pt;
46
+  white-space:pre-wrap;
47
+  text-align: center;
48
+}
49
+.popover > .arrow,
50
+.popover > .arrow:after {
51
+  position: absolute;
52
+  display: block;
53
+  width: 0;
54
+  height: 0;
55
+  border-color: transparent;
56
+  border-style: solid;
57
+}
58
+.popover > .arrow {
59
+  border-width: 11px;
60
+}
61
+.popover > .arrow:after {
62
+  border-width: 10px;
63
+  content: "";
64
+}
65
+.popover.top > .arrow {
66
+  left: 50%;
67
+  margin-left: -11px;
68
+  border-bottom-width: 0;
69
+  border-top-color: #999999;
70
+  border-top-color: rgba(0, 0, 0, 0.25);
71
+  bottom: -11px;
72
+}
73
+.popover.top > .arrow:after {
74
+  content: " ";
75
+  bottom: 1px;
76
+  margin-left: -10px;
77
+  border-bottom-width: 0;
78
+  border-top-color: #ffffff;
79
+}
80
+.popover.right > .arrow {
81
+  top: 50%;
82
+  left: -11px;
83
+  margin-top: -11px;
84
+  border-left-width: 0;
85
+  border-right-color: #999999;
86
+  border-right-color: rgba(0, 0, 0, 0.25);
87
+}
88
+.popover.right > .arrow:after {
89
+  content: " ";
90
+  left: 1px;
91
+  bottom: -10px;
92
+  border-left-width: 0;
93
+  border-right-color: #ffffff;
94
+}
95
+.popover.bottom > .arrow {
96
+  left: 50%;
97
+  margin-left: -11px;
98
+  border-top-width: 0;
99
+  border-bottom-color: #999999;
100
+  border-bottom-color: rgba(0, 0, 0, 0.25);
101
+  top: -11px;
102
+}
103
+.popover.bottom > .arrow:after {
104
+  content: " ";
105
+  top: 1px;
106
+  margin-left: -10px;
107
+  border-top-width: 0;
108
+  border-bottom-color: #ffffff;
109
+}
110
+.popover.left > .arrow {
111
+  top: 50%;
112
+  right: -11px;
113
+  margin-top: -11px;
114
+  border-right-width: 0;
115
+  border-left-color: #999999;
116
+  border-left-color: rgba(0, 0, 0, 0.25);
117
+}
118
+.popover.left > .arrow:after {
119
+  content: " ";
120
+  right: 1px;
121
+  border-right-width: 0;
122
+  border-left-color: #ffffff;
123
+  bottom: -10px;
124
+}

+ 72
- 0
css/popup_menu.css View File

@@ -0,0 +1,72 @@
1
+/*Initialize*/
2
+ul.popupmenu {
3
+    display:none;
4
+    position: absolute;
5
+    padding:10px;
6
+    margin: 0;
7
+    bottom: 0;
8
+    margin-bottom: 35px;
9
+    padding-bottom:  10px;
10
+    padding-top: 10px;
11
+    right: 10px;
12
+    left: -5px;
13
+    width: 100px;
14
+    background-color: rgba(0,0,0,0.9);
15
+    border: 1px solid rgba(256, 256, 256, 0.2);
16
+    border-radius:8px;
17
+}
18
+
19
+ul.popupmenu:after {
20
+    content: url('../images/popupPointer.png');
21
+    display: block;
22
+    position: absolute;
23
+    bottom: -8px;
24
+    left: 11px;
25
+}
26
+
27
+ul.popupmenu li {
28
+    list-style-type: none;
29
+    text-align: left;
30
+}
31
+
32
+ul.popupmenu li:hover {
33
+    background-color: rgba(256, 256, 256, .2);
34
+    border-radius:6px;
35
+}
36
+
37
+/*Link Appearance*/
38
+ul.popupmenu li a {
39
+    text-decoration: none;
40
+    color: #fff;
41
+    padding: 5px;
42
+    display: inline-block;
43
+    font-size: 9pt;
44
+}
45
+
46
+ul.popupmenu li a i.icon-kick {
47
+    font-size: 8pt;
48
+}
49
+
50
+ul.popupmenu li a span {
51
+    display: inline-block;
52
+    width: 20px;
53
+    height: 16px;
54
+    text-align: center;
55
+}
56
+
57
+span.remotevideomenu:hover ul.popupmenu, ul.popupmenu:hover {
58
+    display:block !important;
59
+}
60
+
61
+a.disabled {
62
+    color: gray !important;
63
+    pointer-events: none;
64
+}
65
+
66
+.popupmenuPadding {
67
+    height: 35px;
68
+    width: 100px;
69
+    position: absolute;
70
+    bottom: -35;
71
+    left: 0px;
72
+}

+ 68
- 0
css/settingsmenu.css View File

@@ -0,0 +1,68 @@
1
+#settingsmenu {
2
+    background: black;
3
+    color: #00ccff;
4
+}
5
+
6
+#settingsmenu input, select {
7
+    margin-top: 10px;
8
+    margin-left: 10%;
9
+    width: 80%;
10
+    font-size: 14px;
11
+    background: #3a3a3a;
12
+    border: none;
13
+    box-shadow: none;
14
+    color: #a7a7a7;
15
+}
16
+
17
+#settingsmenu .arrow-up {
18
+    width: 0;
19
+    height: 0;
20
+    border-left: 5px solid transparent;
21
+    border-right: 5px solid transparent;
22
+    border-bottom: 5px solid #3a3a3a;
23
+    position: relative;
24
+    top: 10px;
25
+    margin-left: auto;
26
+    margin-right: auto;
27
+}
28
+
29
+#settingsmenu button {
30
+    width: 45%;
31
+    left: 26%;
32
+    padding: 0;
33
+    margin-top: 10px;
34
+}
35
+
36
+#settingsmenu #avatar {
37
+    width: 24%;
38
+    left: 38%;
39
+    border-radius: 25px;
40
+    position: relative;
41
+}
42
+
43
+#settingsmenu .icon-settings {
44
+    padding: 34px;
45
+}
46
+
47
+#languages_selectbox{
48
+    height: 40px;
49
+}
50
+
51
+
52
+#startMutedOptions {
53
+    padding-left: 10%;
54
+    text-indent: -10%;
55
+}
56
+
57
+#startAudioMuted {
58
+    width: 13px !important;
59
+}
60
+
61
+#startVideoMuted {
62
+    width: 13px !important;
63
+}
64
+
65
+.startMutedLabel {
66
+    width: 94%;
67
+    float: left;
68
+}

+ 180
- 0
css/toastr.css View File

@@ -0,0 +1,180 @@
1
+/*
2
+ * Toastr
3
+ * Copyright 2012-2014 John Papa and Hans Fjällemark.
4
+ * All Rights Reserved.
5
+ * Use, reproduction, distribution, and modification of this code is subject to the terms and
6
+ * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php
7
+ *
8
+ * Author: John Papa and Hans Fjällemark
9
+ * Project: https://github.com/CodeSeven/toastr
10
+ */
11
+.toast-title {
12
+  font-weight: bold;
13
+}
14
+.toast-message {
15
+  -ms-word-wrap: break-word;
16
+  word-wrap: break-word;
17
+}
18
+.toast-message a,
19
+.toast-message label {
20
+  color: #ffffff;
21
+}
22
+.toast-message a:hover {
23
+  color: #cccccc;
24
+  text-decoration: none;
25
+}
26
+.toast-close-button {
27
+  position: relative;
28
+  right: -0.3em;
29
+  top: -0.3em;
30
+  float: right;
31
+  font-size: 20px;
32
+  font-weight: bold;
33
+  color: #ffffff;
34
+  -webkit-text-shadow: 0 1px 0 #ffffff;
35
+  text-shadow: 0 1px 0 #ffffff;
36
+  opacity: 0.8;
37
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
38
+  filter: alpha(opacity=80);
39
+}
40
+.toast-close-button:hover,
41
+.toast-close-button:focus {
42
+  color: #000000;
43
+  text-decoration: none;
44
+  cursor: pointer;
45
+  opacity: 0.4;
46
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
47
+  filter: alpha(opacity=40);
48
+}
49
+/*Additional properties for button version
50
+ iOS requires the button element instead of an anchor tag.
51
+ If you want the anchor version, it requires `href="#"`.*/
52
+button.toast-close-button {
53
+  padding: 0;
54
+  cursor: pointer;
55
+  background: transparent;
56
+  border: 0;
57
+  -webkit-appearance: none;
58
+}
59
+.toast-top-full-width {
60
+  top: 0;
61
+  right: 0;
62
+  width: 100%;
63
+}
64
+.toast-bottom-full-width {
65
+  bottom: 0;
66
+  right: 0;
67
+  width: 100%;
68
+}
69
+.toast-top-left {
70
+  top: 12px;
71
+  left: 12px;
72
+}
73
+.toast-top-right {
74
+  top: 12px;
75
+  right: 12px;
76
+}
77
+.toast-bottom-right {
78
+  right: 12px;
79
+  bottom: 12px;
80
+}
81
+.toast-bottom-left {
82
+  bottom: 12px;
83
+  left: 12px;
84
+}
85
+#toast-container {
86
+  position: fixed;
87
+  z-index: 999999;
88
+  /*overrides*/
89
+
90
+}
91
+#toast-container * {
92
+  -moz-box-sizing: border-box;
93
+  -webkit-box-sizing: border-box;
94
+  box-sizing: border-box;
95
+}
96
+#toast-container > div {
97
+  margin: 0 0 6px;
98
+  padding: 15px 15px 15px 50px;
99
+  width: 300px;
100
+  -moz-border-radius: 3px 3px 3px 3px;
101
+  -webkit-border-radius: 3px 3px 3px 3px;
102
+  border-radius: 3px 3px 3px 3px;
103
+  background-position: 15px center;
104
+  background-repeat: no-repeat;
105
+  -moz-box-shadow: 0 0 12px #999999;
106
+  -webkit-box-shadow: 0 0 12px #999999;
107
+  box-shadow: 0 0 12px #999999;
108
+  color: #ffffff;
109
+  opacity: 0.8;
110
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
111
+  filter: alpha(opacity=80);
112
+}
113
+#toast-container > :hover {
114
+  -moz-box-shadow: 0 0 12px #000000;
115
+  -webkit-box-shadow: 0 0 12px #000000;
116
+  box-shadow: 0 0 12px #000000;
117
+  opacity: 1;
118
+  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
119
+  filter: alpha(opacity=100);
120
+  cursor: pointer;
121
+}
122
+#toast-container > .toast-info {
123
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
124
+}
125
+#toast-container > .toast-error {
126
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
127
+}
128
+#toast-container > .toast-success {
129
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
130
+}
131
+#toast-container > .toast-warning {
132
+  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
133
+}
134
+#toast-container.toast-top-full-width > div,
135
+#toast-container.toast-bottom-full-width > div {
136
+  width: 96%;
137
+  margin: auto;
138
+}
139
+.toast {
140
+  background-color: #030303;
141
+}
142
+.toast-success {
143
+  background-color: #51a351;
144
+}
145
+.toast-error {
146
+  background-color: #bd362f;
147
+}
148
+.toast-info {
149
+  background-color: #2f96b4;
150
+}
151
+.toast-warning {
152
+  background-color: #f89406;
153
+}
154
+/*Responsive Design*/
155
+@media all and (max-width: 240px) {
156
+  #toast-container > div {
157
+    padding: 8px 8px 8px 50px;
158
+    width: 11em;
159
+  }
160
+  #toast-container .toast-close-button {
161
+    right: -0.2em;
162
+    top: -0.2em;
163
+  }
164
+}
165
+@media all and (min-width: 241px) and (max-width: 480px) {
166
+  #toast-container > div {
167
+    padding: 8px 8px 8px 50px;
168
+    width: 18em;
169
+  }
170
+  #toast-container .toast-close-button {
171
+    right: -0.2em;
172
+    top: -0.2em;
173
+  }
174
+}
175
+@media all and (min-width: 481px) and (max-width: 768px) {
176
+  #toast-container > div {
177
+    padding: 15px 15px 15px 50px;
178
+    width: 25em;
179
+  }
180
+}

+ 118
- 0
css/unsupported_browser.css View File

@@ -0,0 +1,118 @@
1
+body {
2
+    width:100%;
3
+    height:100%;
4
+    background-color: white;
5
+    color: #424242;
6
+    font-family:Helvetica,'YanoneKaffeesatzLight',Verdana,Tahoma,Arial;
7
+    font-size: 28px;
8
+    margin:0;
9
+    padding:0;
10
+}
11
+#wrap{
12
+    display: block;
13
+    position: absolute;
14
+    width:900px;
15
+    height: 365px;
16
+    overflow:hidden;
17
+    text-align: center;
18
+    margin: auto;
19
+    top: 0; left: 0; bottom: 0; right: 0;
20
+}
21
+.firefox{
22
+    font-size: 11pt;
23
+    color: #c8c8c8;
24
+    width: 468px;
25
+    text-align: center;
26
+    margin: 30px auto 0px auto;
27
+    padding-left: 15px;
28
+}
29
+#text{
30
+    display:inline-block;
31
+    font-size: 28px;
32
+    width: 568px;
33
+    vertical-align:middle;
34
+    padding-top: 25px;
35
+}
36
+
37
+a {
38
+    color: #087dba;
39
+    text-decoration:none;
40
+}
41
+
42
+.browser {
43
+    width: 138px;
44
+    height: 163px;
45
+    margin-top: 5px;
46
+    background-color: #e8e8e8;
47
+    border: 1px solid #cfcfcf;
48
+    border-radius: 10px;
49
+}
50
+
51
+.browser_wrapper
52
+{
53
+    width: 138px;
54
+    height: 188px;
55
+    vertical-align: middle;
56
+    color: #929391;
57
+    font-size: 20px;
58
+    float: left;
59
+    margin-left: 15px;
60
+}
61
+
62
+.supported_browsers
63
+{
64
+    margin: 0px auto 0px auto;
65
+    width: 660px;
66
+}
67
+
68
+.clear
69
+{
70
+    clear: both;
71
+}
72
+
73
+.button
74
+{
75
+    background-color: #62c82a;
76
+    border: 1px solid #3c8117;
77
+    border-radius: 10px;
78
+    color: #FFFFFF;
79
+    font-size: 12px;
80
+    text-align: center;
81
+    width: 115px;
82
+    height: 26px;
83
+    padding-top: 13px;
84
+    margin: 15px auto 0px auto;
85
+}
86
+
87
+.logo
88
+{
89
+    margin: 20px auto 0px auto;
90
+}
91
+
92
+#chrome_logo
93
+{
94
+    width: 78px;
95
+    height: 78px;
96
+    background-image: url('/images/chrome.png');
97
+}
98
+#chromium_logo
99
+{
100
+    width: 77px;
101
+    height: 79px;
102
+    background-image: url('/images/chromium.png');
103
+}
104
+#firefox-nightly_logo
105
+{
106
+    width: 73px;
107
+    height: 79px;
108
+    background-image: url('/images/firefox-nightly.png');
109
+}
110
+
111
+#opera_logo
112
+{
113
+    width: 73px;
114
+    height: 78px;
115
+    background-image: url('/images/opera.png');
116
+}
117
+   
118
+   

+ 474
- 0
css/videolayout_default.css View File

@@ -0,0 +1,474 @@
1
+#videospace {
2
+    display: block;
3
+    position: absolute;
4
+    top: 0px;
5
+    left: 0px;
6
+    right: 0px;
7
+    overflow: hidden;
8
+}
9
+
10
+#remoteVideos {
11
+    display:block;
12
+    position:absolute;
13
+    text-align:right;
14
+    height:196px;
15
+    padding: 18px;
16
+    bottom: 0;
17
+    left: 0;
18
+    right: 20px;
19
+    width:auto;
20
+    border:1px solid transparent;
21
+    z-index: 5;
22
+    transition: bottom 2s;
23
+    overflow: visible !important;
24
+}
25
+
26
+#remotevideos.hidden {
27
+    bottom: -196px;
28
+}
29
+
30
+.videocontainer {
31
+    position: relative;
32
+    margin-left: auto;
33
+    margin-right: auto;
34
+}
35
+
36
+#remoteVideos .videocontainer {
37
+    display: inline-block;
38
+    background-color: black;
39
+    background-size: contain;
40
+    border-radius:8px;
41
+    border: 2px solid #212425;
42
+    margin-right: 3px;
43
+}
44
+
45
+#remoteVideos .videocontainer:hover,
46
+#remoteVideos .videocontainer.videoContainerFocused {
47
+    width: 100%;
48
+    height: 100%;
49
+    content:"";
50
+    cursor: pointer;
51
+    cursor: hand;
52
+    /* transform:scale(1.08, 1.08);
53
+    -webkit-transform:scale(1.08, 1.08); */
54
+    transition-duration: 0.5s;
55
+    -webkit-transition-duration: 0.5s;
56
+    -webkit-animation-name: greyPulse;
57
+    -webkit-animation-duration: 2s;
58
+    -webkit-animation-iteration-count: 1;
59
+    overflow: visible !important;
60
+}
61
+
62
+#remoteVideos .videocontainer:hover {
63
+    box-shadow:  inset 0 0 10px #FFFFFF, 0 0 10px #FFFFFF;
64
+    border: 2px solid #FFFFFF;
65
+}
66
+
67
+#remoteVideos .videocontainer.videoContainerFocused {
68
+    box-shadow: inset 0 0 28px #006d91;
69
+    border: 2px solid #006d91;
70
+}
71
+
72
+#remoteVideos .videocontainer.videoContainerFocused:hover {
73
+    box-shadow: inset 0 0 5px #FFFFFF, 0 0 10px #FFFFFF, inset 0 0 60px #006d91;
74
+    border: 2px solid #FFFFFF;
75
+}
76
+
77
+#localVideoWrapper {
78
+    display:inline-block;
79
+    -webkit-mask-box-image: url(../images/videomask.svg);
80
+    border-radius:4px !important;
81
+    border: 0px !important;
82
+}
83
+
84
+/* With TemasysWebRTC plugin <object/> element is used
85
+   instead of <video/> */
86
+#remoteVideos .videocontainer>video,
87
+#remoteVideos .videocontainer>object {
88
+    border-radius:4px;
89
+}
90
+
91
+.flipVideoX {
92
+    transform: scale(-1, 1);
93
+    -moz-transform: scale(-1, 1);
94
+    -webkit-transform: scale(-1, 1);
95
+    -o-transform: scale(-1, 1);
96
+}
97
+
98
+#localVideoWrapper>video,
99
+#localVideoWrapper>object {
100
+    border-radius:4px !important;
101
+}
102
+
103
+#largeVideo,
104
+#largeVideoContainer {
105
+    overflow: hidden;
106
+    text-align: center;
107
+}
108
+
109
+#largeVideo
110
+{
111
+    object-fit: cover;
112
+}
113
+
114
+#presentation,
115
+#etherpad,
116
+#localVideoWrapper>video,
117
+#localVideoWrapper>object,
118
+#localVideoWrapper,
119
+.videocontainer>video,
120
+.videocontainer>object {
121
+    position: absolute;
122
+    left: 0;
123
+    top: 0;
124
+    z-index: 1;
125
+    width: 100%;
126
+    height: 100%;
127
+}
128
+
129
+#etherpad,
130
+#presentation {
131
+    text-align: center;
132
+}
133
+
134
+#etherpad {
135
+    z-index: 0;
136
+}
137
+
138
+#toolbar_button_etherpad {
139
+    display: none;
140
+}
141
+
142
+#remoteVideos .videocontainer>span.focusindicator,
143
+#remoteVideos .videocontainer>span.remotevideomenu {
144
+    display: inline-block;
145
+    position: absolute;
146
+    color: #FFFFFF;
147
+    top: 0;
148
+    left: 0;
149
+    padding: 5px 0px;
150
+    width: 25px;
151
+    font-size: 11pt;
152
+    text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
153
+    border: 0px;
154
+    z-index: 2;
155
+    text-align: center;
156
+}
157
+
158
+#remoteVideos .nick {
159
+    display: none; /* enable when you want nicks to be shown */
160
+    position: absolute;
161
+    left: 0px;
162
+    bottom: -20px;
163
+    z-index: 0;
164
+    width: 100%;
165
+    font-size: 10pt;
166
+}
167
+
168
+.videocontainer>span.displayname,
169
+.videocontainer>input.displayname {
170
+    display: none;
171
+    position: absolute;
172
+    color: #FFFFFF;
173
+    background: rgba(0,0,0,.7);
174
+    text-align: center;
175
+    text-overflow: ellipsis;
176
+    width: 70%;
177
+    height: 20%;
178
+    left: 15%;
179
+    top: 40%;
180
+    padding: 5px;
181
+    font-size: 11pt;
182
+    overflow: hidden;
183
+    white-space: nowrap;
184
+    z-index: 2;
185
+    border-radius:20px;
186
+}
187
+
188
+.videocontainer>span.status {
189
+    display: inline-block;
190
+    position: absolute;
191
+    color: #FFFFFF;
192
+    background: rgba(0,0,0,.7);
193
+    text-align: center;
194
+    text-overflow: ellipsis;
195
+    width: 70%;
196
+    height: 15%;
197
+    left: 15%;
198
+    bottom: 2%;
199
+    padding: 5px;
200
+    font-size: 10pt;
201
+    overflow: hidden;
202
+    white-space: nowrap;
203
+    z-index: 2;
204
+    border-radius:20px;
205
+}
206
+
207
+.connectionindicator
208
+{
209
+    display: inline-block;
210
+    position: absolute;
211
+    top: 7px;
212
+    right: 0;
213
+    padding: 0px 5px;
214
+    z-index: 3;
215
+    width: 18px;
216
+    height: 13px;
217
+}
218
+
219
+.connection.connection_empty
220
+{
221
+    color: #8B8B8B;/*#FFFFFF*/
222
+    overflow: hidden;
223
+}
224
+
225
+.connection.connection_full
226
+{
227
+    color: #FFFFFF;/*#15A1ED*/
228
+    overflow: hidden;
229
+}
230
+
231
+.connection
232
+{
233
+    position: absolute;
234
+    left: 0px;
235
+    top: 0px;
236
+    font-size: 8pt;
237
+    border: 0px;
238
+    width: 18px;
239
+    height: 13px;
240
+}
241
+
242
+.connection_info
243
+{
244
+    float: left;
245
+    padding-bottom: 5px;
246
+}
247
+
248
+.connection_info > table
249
+{
250
+    white-space: nowrap;
251
+}
252
+
253
+.connection_info, .connection_info > table
254
+{
255
+    text-align: left;
256
+    font-size: 11px;
257
+    color: #ffffff;
258
+}
259
+
260
+#localVideoContainer>span.status:hover,
261
+#localVideoContainer>span.displayname:hover {
262
+    cursor: text;
263
+}
264
+
265
+.videocontainer>span.status,
266
+.videocontainer>span.displayname {
267
+    pointer-events: none;
268
+}
269
+
270
+.videocontainer>input.displayname {
271
+    height: auto;
272
+}
273
+
274
+#localDisplayName {
275
+    pointer-events: auto !important;
276
+}
277
+
278
+.videocontainer>a.status,
279
+.videocontainer>a.displayname {
280
+    display: inline-block;
281
+    position: absolute;
282
+    color: #FFFFFF;
283
+    bottom: 0;
284
+    right: 0;
285
+    padding: 3px 5px;
286
+    font-size: 9pt;
287
+    cursor: pointer;
288
+    z-index: 2;
289
+}
290
+
291
+.videocontainer>span.audioMuted {
292
+    display: inline-block;
293
+    position: absolute;
294
+    color: #FFFFFF;
295
+    top: 0;
296
+    padding: 8px 5px;
297
+    width: 25px;
298
+    font-size: 8pt;
299
+    text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
300
+    border: 0px;
301
+    z-index: 3;
302
+    text-align: center;
303
+}
304
+
305
+.videocontainer>span.videoMuted {
306
+    display: inline-block;
307
+    position: absolute;
308
+    color: #FFFFFF;
309
+    top: 0;
310
+    right: 0;
311
+    padding: 8px 5px;
312
+    width: 25px;
313
+    font-size: 8pt;
314
+    text-shadow: 0px 1px 0px rgba(255,255,255,.3), 0px -1px 0px rgba(0,0,0,.7);
315
+    border: 0px;
316
+    z-index: 3;
317
+}
318
+
319
+#reloadPresentation {
320
+    display: none;
321
+    position: absolute;
322
+    color: #FFFFFF;
323
+    top: 0;
324
+    right:0;
325
+    padding: 10px 10px;
326
+    font-size: 11pt;
327
+    cursor: pointer;
328
+    background: rgba(0, 0, 0, 0.3);
329
+    border-radius: 5px;
330
+    background-clip: padding-box;
331
+    -webkit-border-radius: 5px;
332
+    -webkit-background-clip: padding-box;
333
+    z-index: 20; /*The reload button should appear on top of the header!*/
334
+}
335
+
336
+#header{
337
+    display:none;
338
+    position:absolute;
339
+    text-align:center;
340
+    top:0;
341
+    left:0;
342
+    right:0;
343
+    z-index:10;
344
+    pointer-events: none;
345
+}
346
+
347
+#toolbar {
348
+    display:inline-block;
349
+    position:relative;
350
+    margin-top:5px;
351
+    margin-left:auto;
352
+    margin-right:auto;
353
+    padding-left:2px;
354
+    padding-right:2px;
355
+    height:38px;
356
+    width:auto;
357
+    background-color: rgba(0,0,0,0.8); 
358
+    border: 1px solid rgba(256, 256, 256, 0.2);
359
+    border-radius: 6px;
360
+    pointer-events: auto;
361
+}
362
+
363
+#subject {
364
+    position: relative;
365
+    z-index: 3;
366
+    width: auto;
367
+    padding: 5px;
368
+    margin-left: 40%;
369
+    margin-right: 40%;
370
+    text-align: center;
371
+    background: linear-gradient(to bottom, rgba(255,255,255,.85) , rgba(255,255,255,.35));
372
+    box-shadow: 0 0 2px #000000, 0 0 10px #000000;
373
+    border-bottom-left-radius: 12px;
374
+    border-bottom-right-radius: 12px;
375
+    display: none;
376
+}
377
+
378
+.audiolevel {
379
+    display: inline-block;
380
+    position: absolute;
381
+    z-index: 0;
382
+    border-radius:10px;
383
+    pointer-events: none;
384
+}
385
+
386
+#activeSpeaker {
387
+    visibility: hidden;
388
+    width: 150px;
389
+    height: 150px;
390
+    margin: auto;
391
+    overflow: hidden;
392
+    position: relative;
393
+}
394
+
395
+#activeSpeakerAudioLevel {
396
+    position: absolute;
397
+    top: 0px;
398
+    left: 0px;
399
+    z-index: 1;
400
+    visibility: inherit;
401
+}
402
+
403
+#mixedstream {
404
+    display:none !important;
405
+}
406
+
407
+#activeSpeakerAvatar {
408
+    width: 100px;
409
+    height: 100px;
410
+    top: 25px;
411
+    margin: auto;
412
+    position: relative;
413
+    border-radius: 50px;
414
+    z-index: 2;
415
+    visibility: inherit;
416
+}
417
+
418
+.userAvatar {
419
+    height: 100%;
420
+    position: absolute;
421
+    left: 35px;
422
+    border-radius: 200px;
423
+}
424
+
425
+.noMic {
426
+    position: absolute;
427
+    border-radius: 8px;
428
+    z-index: 1;
429
+    width: 100%;
430
+    height: 100%;
431
+    background-image: url("../images/noMic.png");
432
+    background-color: #000;
433
+    background-repeat: no-repeat;
434
+    background-position: center;
435
+}
436
+
437
+.noVideo {
438
+    position: absolute;
439
+    border-radius: 8px;
440
+    z-index: 1;
441
+    width: 100%;
442
+    height: 100%;
443
+    background-image: url("../images/noVideo.png");
444
+    background-color: #000;
445
+    background-repeat: no-repeat;
446
+    background-position: center;
447
+}
448
+
449
+.videoMessageFilter {
450
+    -webkit-filter: grayscale(.5) opacity(0.8);
451
+    filter: grayscale(.5) opacity(0.8);
452
+}
453
+
454
+.videoProblemFilter {
455
+    -webkit-filter: blur(10px) grayscale(.5) opacity(0.8);
456
+    filter: blur(10px) grayscale(.5) opacity(0.8);
457
+}
458
+
459
+#videoConnectionMessage {
460
+    display: none;
461
+    position: absolute;
462
+    width: 100%;
463
+    top:50%;
464
+    z-index: 10000;
465
+    font-weight: 600;
466
+    font-size: 14px;
467
+    text-align: center;
468
+    color: #FFF;
469
+    opacity: .80;
470
+    text-shadow:    0px 0px 1px rgba(0,0,0,0.3),
471
+                    0px 1px 1px rgba(0,0,0,0.3),
472
+                    1px 0px 1px rgba(0,0,0,0.3),
473
+                    0px 0px 1px rgba(0,0,0,0.3);
474
+}

+ 205
- 0
css/welcome_page.css View File

@@ -0,0 +1,205 @@
1
+
2
+#disable_welcome {
3
+    display:none;
4
+}
5
+
6
+.disable_welcome_position
7
+{
8
+    margin: -139px auto 0px auto;
9
+    padding-left: 39px;
10
+    padding-top: 7px;
11
+    width: 269px;
12
+    height: 31px;
13
+    display:block;
14
+}
15
+
16
+#disable_welcome + label
17
+{
18
+    background-image: url(../images/welcome_page/disable-welcome.png);
19
+    cursor: pointer;
20
+    -webkit-user-select: none;
21
+    -moz-user-select: none;
22
+    background-repeat: no-repeat;
23
+    font-weight: 500;
24
+    font-family: Helvetica;
25
+    font-size: 16px;
26
+    color: #acacac;
27
+    z-index: 2;
28
+}
29
+
30
+#disable_welcome:checked + label
31
+{
32
+    background-image: url(../images/welcome_page/disable-welcome-selected.png);
33
+    cursor: pointer;
34
+    -webkit-user-select: none;
35
+    -moz-user-select: none;
36
+    background-repeat: no-repeat;
37
+    font-weight: 500;
38
+    font-family: Helvetica;
39
+    font-size: 16px;
40
+    color: #acacac;
41
+    z-index: 2;
42
+}
43
+
44
+#enter_room_form {
45
+    border-radius: 10px;
46
+    background-color: #FFFFFF;
47
+    border: none;
48
+    -moz-border-radius: 10px;
49
+    -webkit-border-radius: 10px;
50
+    -webkit-appearance: none;
51
+    height: 55px;
52
+    box-shadow: none;
53
+    float: left;
54
+}
55
+
56
+#domain_name
57
+{
58
+    float: left;
59
+    padding: 20px 0px 10px 20px;
60
+    font-size: 18px;
61
+    font-weight: 500;
62
+    font-family: Helvetica;
63
+}
64
+
65
+#enter_room_field {
66
+    font-size: 15px;
67
+    padding: 15px 0px 10px 10px;
68
+    border: none;
69
+    -webkit-appearance: none;
70
+    width: 228px;
71
+    height: 55px;
72
+    font-weight: 500;
73
+    font-family: Helvetica;
74
+    box-shadow: none;
75
+    float: left;
76
+    background-color: #FFFFFF;
77
+    position: relative;
78
+    z-index: 2;
79
+}
80
+
81
+#enter_room_button {
82
+    width: 73px;
83
+    height: 45px;
84
+    background-color: #16a8fe;
85
+    moz-border-radius: 10px;
86
+    -webkit-border-radius: 10px;
87
+    color: #ffffff;
88
+    font-weight: 600;
89
+    border: none;
90
+    margin-top: 5px;
91
+    font-size: 19px;
92
+    font-family: Helvetica;
93
+    padding-top: 6px;
94
+    outline: none;
95
+    float:left;
96
+    position: relative;
97
+    z-index: 2;
98
+}
99
+
100
+#enter_room_container {
101
+    margin: 70px auto 0px auto;
102
+    display: table;
103
+}
104
+
105
+#enter_room{
106
+    float:left;
107
+    padding-right: 5px;
108
+}
109
+
110
+#welcome_page_header
111
+{
112
+    background-image: url(../images/welcome_page/pattern-header.png);
113
+    height: 290px;
114
+    width: 100%;
115
+    position: absolute;
116
+}
117
+
118
+#welcome_page_main
119
+{
120
+    background-image:url(../images/welcome_page/pattern-body.png);
121
+    width: 100%;
122
+    position: absolute;
123
+    margin-top: 290px;
124
+}
125
+
126
+#brand_header
127
+{
128
+    background-image:url(../images/welcome_page/header-big.png);
129
+    width: 583px;
130
+    height: 274px;
131
+    margin: -110px auto 0px auto;
132
+}
133
+
134
+#header_text
135
+{
136
+    width: 885px;
137
+    height: 100px;
138
+    color: #ffffff;
139
+    font-family: Helvetica;
140
+    font-size: 24px;
141
+    text-align: center;
142
+    margin: 0px auto 0px auto;
143
+}
144
+
145
+#features
146
+{
147
+    margin-top: 30px;
148
+    position: relative;
149
+}
150
+
151
+.feature_row
152
+{
153
+    position: relative;
154
+    width: 976px;
155
+    margin: 0px auto 30px auto;
156
+    padding-right: 75px;
157
+
158
+}
159
+
160
+.feature_holder
161
+{
162
+    float:left;
163
+    width: 169px;
164
+    padding-left: 75px;
165
+    padding-bottom: 30px;
166
+}
167
+
168
+.feature_icon
169
+{
170
+    background-image:url(../images/welcome_page/bubble.png);
171
+    background-repeat: no-repeat;
172
+    width: 169px;
173
+    height: 169px;
174
+    font-family: Helvetica;
175
+    color: #ffffff;
176
+    font-size: 22px;
177
+    /*font-weight: bold;*/
178
+    text-align: center;
179
+    display: table-cell;
180
+    padding: 50px 26px 0px 20px;
181
+}
182
+
183
+.feature_description
184
+{
185
+    width: 190px;
186
+    font-family: Helvetica;
187
+    color: #ffffff;
188
+    font-size: 16px;
189
+    padding-top: 30px;
190
+    line-height: 22px;
191
+    font-weight: 200;
192
+}
193
+
194
+#reload_roomname
195
+{
196
+    width: 30px;
197
+    height: 19px;
198
+    color: #acacac;
199
+    margin-top: 22px;
200
+    z-index: 3;
201
+    float:  left;
202
+    cursor: pointer;
203
+    text-align: center;
204
+    display: none;
205
+}

+ 5
- 0
debian/changelog View File

@@ -0,0 +1,5 @@
1
+jitsi-meet (1.0.1-1) unstable; urgency=low
2
+
3
+  * Initial release. (Closes: #760485)
4
+
5
+ -- Damian Minkov <damencho@jitsi.org>  Wed, 22 Oct 2014 10:30:00 +0200

+ 1
- 0
debian/compat View File

@@ -0,0 +1 @@
1
+8

+ 35
- 0
debian/control View File

@@ -0,0 +1,35 @@
1
+Source: jitsi-meet
2
+Section: net
3
+Priority: extra
4
+Maintainer: Jitsi Team <dev@jitsi.org>
5
+Uploaders: Emil Ivov <emcho@jitsi.org>, Damian Minkov <damencho@jitsi.org>
6
+Build-Depends: debhelper (>= 8.0.0), libjs-strophe (>= 1.1.3), yui-compressor,
7
+ libjs-jquery, libjs-jquery-ui
8
+Standards-Version: 3.9.6
9
+Homepage: https://jitsi.org/meet
10
+
11
+Package: jitsi-meet
12
+Architecture: all
13
+Depends: ${misc:Depends}, jitsi-videobridge, jitsi-meet-prosody, libjs-strophe (>= 1.1.3),
14
+ libjs-jquery, libjs-jquery-ui, openjdk-8-jre-headless | nginx
15
+Description: WebRTC JavaScript video conferences
16
+ Jitsi Meet is a WebRTC JavaScript application that uses Jitsi
17
+ Videobridge to provide high quality, scalable video conferences.
18
+ .
19
+ It is a web interface to Jitsi Videobridge for audio and video
20
+ forwarding and relaying, configured to work with jetty instance
21
+ running embedded into Jitsi Videobridge
22
+
23
+Package: jitsi-meet-prosody
24
+Architecture: all
25
+Depends: ${misc:Depends}, openssl, prosody | prosody-trunk, jitsi-videobridge, jicofo
26
+Description: Prosody configuration for Jitsi Meet
27
+ Jitsi Meet is a WebRTC JavaScript application that uses Jitsi
28
+ Videobridge to provide high quality, scalable video conferences.
29
+ .
30
+ It is a web interface to Jitsi Videobridge for audio and video
31
+ forwarding and relaying, configured to work with jetty instance
32
+ running embedded into Jitsi Videobridge
33
+ .
34
+ This package contains configuration for Prosody to be used with
35
+ Jitsi Meet.

+ 31
- 0
debian/copyright View File

@@ -0,0 +1,31 @@
1
+Format: http://dep.debian.net/deps/dep5
2
+Upstream-Name: Jitsi Meet
3
+Upstream-Contact: Emil Ivov <emcho@jitsi.org>
4
+Source: https://github.com/jitsi/jitsi-meet
5
+
6
+Files: *
7
+Copyright: 2013-2014 Jitsi
8
+License: MIT
9
+
10
+License: MIT
11
+ The MIT License (MIT)
12
+ .
13
+ Copyright (c) 2013 ESTOS GmbH
14
+ Copyright (c) 2013 BlueJimp SARL
15
+ .
16
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
17
+ this software and associated documentation files (the "Software"), to deal in
18
+ the Software without restriction, including without limitation the rights to
19
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
20
+ the Software, and to permit persons to whom the Software is furnished to do so,
21
+ subject to the following conditions:
22
+ .
23
+ The above copyright notice and this permission notice shall be included in all
24
+ copies or substantial portions of the Software.
25
+ .
26
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
28
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
29
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
30
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 7
- 0
debian/jitsi-meet-prosody.README.Debian View File

@@ -0,0 +1,7 @@
1
+Prosody configuration for Jitsi Meet for Debian
2
+----------------------------
3
+
4
+Jitsi Meet is a WebRTC video conferencing application. This package contains 
5
+configuration of prosody which are needed for Jitsi Meet to work.
6
+
7
+ -- Yasen Pramatarov <yasen@bluejimp.com>  Mon, 30 Jun 2014 23:05:18 +0100

+ 4
- 0
debian/jitsi-meet-prosody.config View File

@@ -0,0 +1,4 @@
1
+#!/bin/sh -e
2
+
3
+# Source debconf library.
4
+. /usr/share/debconf/confmodule

+ 2
- 0
debian/jitsi-meet-prosody.docs View File

@@ -0,0 +1,2 @@
1
+doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example
2
+doc/debian/jitsi-meet-prosody/README

+ 131
- 0
debian/jitsi-meet-prosody.postinst View File

@@ -0,0 +1,131 @@
1
+#!/bin/bash
2
+# postinst script for jitsi-meet-prosody
3
+#
4
+# see: dh_installdeb(1)
5
+
6
+set -e
7
+
8
+# summary of how this script can be called:
9
+#        * <postinst> `configure' <most-recently-configured-version>
10
+#        * <old-postinst> `abort-upgrade' <new version>
11
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
12
+#          <new-version>
13
+#        * <postinst> `abort-remove'
14
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
15
+#          <failed-install-package> <version> `removing'
16
+#          <conflicting-package> <version>
17
+# for details, see http://www.debian.org/doc/debian-policy/ or
18
+# the debian-policy package
19
+
20
+
21
+case "$1" in
22
+    configure)
23
+
24
+        . /etc/jitsi/videobridge/config
25
+
26
+        . /etc/jitsi/jicofo/config
27
+
28
+        # loading debconf
29
+        . /usr/share/debconf/confmodule
30
+
31
+        # detect dpkg-reconfigure, just delete old links
32
+        db_get jitsi-meet-prosody/jvb-hostname
33
+        JVB_HOSTNAME_OLD=$RET
34
+        if [ -n "$RET" ] && [ ! "$JVB_HOSTNAME_OLD" = "$JVB_HOSTNAME" ] ; then
35
+            rm -f /etc/prosody/conf.d/$JVB_HOSTNAME_OLD.cfg.lua
36
+            rm -f /etc/prosody/certs/$JVB_HOSTNAME_OLD.key
37
+            rm -f /etc/prosody/certs/$JVB_HOSTNAME_OLD.crt
38
+        fi
39
+
40
+        # stores the hostname so we will reuse it later, like in purge
41
+        db_set jitsi-meet-prosody/jvb-hostname $JVB_HOSTNAME
42
+
43
+        # and we're done with debconf
44
+        db_stop
45
+
46
+        PROSODY_CONFIG_PRESENT="true"
47
+        PROSODY_CREATE_JICOFO_USER="false"
48
+        PROSODY_HOST_CONFIG="/etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua"
49
+        PROSODY_CONFIG_OLD="/etc/prosody/prosody.cfg.lua"
50
+        # if there is no prosody config extract our template
51
+        # check for config in conf.avail or check whether it wasn't already configured in main config
52
+        if [ ! -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"$JVB_HOSTNAME\"" $PROSODY_CONFIG_OLD; then
53
+            PROSODY_CONFIG_PRESENT="false"
54
+            mkdir -p /etc/prosody/conf.avail/
55
+            cp /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example $PROSODY_HOST_CONFIG
56
+            sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" $PROSODY_HOST_CONFIG
57
+            sed -i "s/jitmeetSecret/$JVB_SECRET/g" $PROSODY_HOST_CONFIG
58
+            sed -i "s/focusSecret/$JICOFO_SECRET/g" $PROSODY_HOST_CONFIG
59
+            sed -i "s/focusUser/$JICOFO_AUTH_USER/g" $PROSODY_HOST_CONFIG
60
+            if [ ! -f /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua ]; then
61
+                ln -s $PROSODY_HOST_CONFIG /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua
62
+            fi
63
+            PROSODY_CREATE_JICOFO_USER="true"
64
+            # on some distributions main prosody config doesn't include configs
65
+            # from conf.d folder enable it as this where we put our config by default
66
+            if ! grep -q "Include \"conf\.d\/\*\.cfg.lua\"" $PROSODY_CONFIG_OLD; then
67
+                echo -e "\nInclude \"conf.d/*.cfg.lua\"" >> $PROSODY_CONFIG_OLD
68
+            fi
69
+        fi
70
+        # UPGRADE to server side focus check if focus is configured
71
+        if [ -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"auth.$JVB_HOSTNAME\"" $PROSODY_HOST_CONFIG; then
72
+            echo -e "\nVirtualHost \"auth.$JVB_HOSTNAME\"" >> $PROSODY_HOST_CONFIG
73
+            echo -e "        authentication = \"internal_plain\"\n" >> $PROSODY_HOST_CONFIG
74
+            sed -i "s/Component \"conference.$JVB_HOSTNAME\" \"muc\"/Component \"conference.$JVB_HOSTNAME\" \"muc\"\nadmins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n/g" $PROSODY_HOST_CONFIG
75
+            echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_HOST_CONFIG
76
+            echo -e "    component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_HOST_CONFIG
77
+            PROSODY_CREATE_JICOFO_USER="true"
78
+        # UPGRADE to server side focus on old config(/etc/prosody/prosody.cfg.lua)
79
+        elif [ ! -f $PROSODY_HOST_CONFIG ] && ! grep -q "VirtualHost \"auth.$JVB_HOSTNAME\"" $PROSODY_CONFIG_OLD; then
80
+            echo -e "\nVirtualHost \"auth.$JVB_HOSTNAME\"" >> $PROSODY_CONFIG_OLD
81
+            echo -e "        authentication = \"internal_plain\"\n" >> $PROSODY_CONFIG_OLD
82
+            if ! grep -q "admins = { }" $PROSODY_CONFIG_OLD; then
83
+                echo -e "admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n" >> $PROSODY_CONFIG_OLD
84
+            else
85
+                sed -i "s/admins = { }/admins = { \"$JICOFO_AUTH_USER@auth.$JVB_HOSTNAME\" }\n/g" $PROSODY_CONFIG_OLD
86
+            fi
87
+            echo -e "Component \"focus.$JVB_HOSTNAME\"" >> $PROSODY_CONFIG_OLD
88
+            echo -e "    component_secret=\"$JICOFO_SECRET\"\n" >> $PROSODY_CONFIG_OLD
89
+            PROSODY_CREATE_JICOFO_USER="true"
90
+        fi
91
+
92
+        if [ "$PROSODY_CREATE_JICOFO_USER" = "true" ]; then
93
+            # create 'focus@auth.domain' prosody user
94
+            prosodyctl register $JICOFO_AUTH_USER $JICOFO_AUTH_DOMAIN $JICOFO_AUTH_PASSWORD
95
+            # trigger a restart
96
+            PROSODY_CONFIG_PRESENT="false"
97
+        fi
98
+
99
+        if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
100
+            HOST="$( (hostname -s; echo localhost) | head -n 1)"
101
+            DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"
102
+            openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj \
103
+                "/O=$DOMAIN/OU=$HOST/CN=$JVB_HOSTNAME/emailAddress=webmaster@$HOST.$DOMAIN" \
104
+                -keyout /var/lib/prosody/$JVB_HOSTNAME.key \
105
+                -out /var/lib/prosody/$JVB_HOSTNAME.crt
106
+        fi
107
+        ln -sf /var/lib/prosody/$JVB_HOSTNAME.key /etc/prosody/certs/$JVB_HOSTNAME.key
108
+        ln -sf /var/lib/prosody/$JVB_HOSTNAME.crt /etc/prosody/certs/$JVB_HOSTNAME.crt
109
+
110
+        if [ "$PROSODY_CONFIG_PRESENT" = "false" ]; then
111
+            invoke-rc.d prosody restart
112
+            invoke-rc.d jitsi-videobridge restart
113
+            invoke-rc.d jicofo restart
114
+        fi
115
+    ;;
116
+
117
+    abort-upgrade|abort-remove|abort-deconfigure)
118
+    ;;
119
+
120
+    *)
121
+        echo "postinst called with unknown argument \`$1'" >&2
122
+        exit 1
123
+    ;;
124
+esac
125
+
126
+# dh_installdeb will replace this with shell code automatically
127
+# generated by other debhelper scripts.
128
+
129
+#DEBHELPER#
130
+
131
+exit 0

+ 57
- 0
debian/jitsi-meet-prosody.postrm View File

@@ -0,0 +1,57 @@
1
+#!/bin/sh
2
+# postrm script for jitsi-meet-prosody
3
+#
4
+# see: dh_installdeb(1)
5
+
6
+set -e
7
+
8
+# summary of how this script can be called:
9
+#        * <postrm> `remove'
10
+#        * <postrm> `purge'
11
+#        * <old-postrm> `upgrade' <new-version>
12
+#        * <new-postrm> `failed-upgrade' <old-version>
13
+#        * <new-postrm> `abort-install'
14
+#        * <new-postrm> `abort-install' <old-version>
15
+#        * <new-postrm> `abort-upgrade' <old-version>
16
+#        * <disappearer's-postrm> `disappear' <overwriter>
17
+#          <overwriter-version>
18
+# for details, see http://www.debian.org/doc/debian-policy/ or
19
+# the debian-policy package
20
+
21
+# Load debconf
22
+. /usr/share/debconf/confmodule
23
+
24
+
25
+case "$1" in
26
+    remove)
27
+        if [ -x "/etc/init.d/prosody" ]; then
28
+            invoke-rc.d prosody reload
29
+        fi
30
+    ;;
31
+
32
+    purge)
33
+        db_get jitsi-meet-prosody/jvb-hostname
34
+        JVB_HOSTNAME=$RET
35
+        if [ -n "$RET" ]; then
36
+            rm -f /etc/prosody/conf.avail/$JVB_HOSTNAME.cfg.lua
37
+            rm -f /etc/prosody/conf.d/$JVB_HOSTNAME.cfg.lua
38
+        fi
39
+    ;;
40
+
41
+    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
42
+    ;;
43
+
44
+    *)
45
+        echo "postrm called with unknown argument \`$1'" >&2
46
+        exit 1
47
+    ;;
48
+esac
49
+
50
+# dh_installdeb will replace this with shell code automatically
51
+# generated by other debhelper scripts.
52
+
53
+#DEBHELPER#
54
+
55
+db_stop
56
+
57
+exit 0

+ 4
- 0
debian/jitsi-meet-prosody.templates View File

@@ -0,0 +1,4 @@
1
+Template: jitsi-meet-prosody/jvb-hostname
2
+Type: string
3
+_Description: The hostname of the current installation:
4
+ The value for the hostname that is set in Jitsi Videobridge installation.

+ 8
- 0
debian/jitsi-meet.README.Debian View File

@@ -0,0 +1,8 @@
1
+Jitsi Meet for Debian
2
+----------------------------
3
+
4
+This is a WebRTC frontend of the video conferencing tool Jitsi Meet. It depends on the
5
+jitsi-videobridge package, which is a SFU (Selective Forwarding Unit) and both packages
6
+are designed to work together.
7
+
8
+ -- Yasen Pramatarov <yasen@bluejimp.com>  Mon, 30 Jun 2014 23:05:18 +0100

+ 24
- 0
debian/jitsi-meet.README.source View File

@@ -0,0 +1,24 @@
1
+jitsi-meet for Debian
2
+---------------------
3
+
4
+The jitsi-meet package is built from the sources of Jitsi Meet.
5
+
6
+Jitsi Meet is downloaded from https://github.com/jitsi/jitsi-meet and the git files are removed. you can recreate the source with 'git clone https://github.com/jitsi/jitsi-meet.git'.
7
+Use something like the script below to update from Git
8
+
9
+#!/bin/bash
10
+
11
+VERSION=1.0.1
12
+
13
+echo "*.min.js export-ignore" > .gitattributes
14
+echo "jquery-2.1.1.* export-ignore" >> .gitattributes
15
+echo "jquery-ui.js export-ignore" >> .gitattributes
16
+echo ".gitignore export-ignore" >> .gitattributes
17
+
18
+sed -i "s/1.0.1/$VERSION/g" debian/changelog
19
+
20
+git archive --worktree-attributes --format tar --prefix jitsi-meet-$VERSION/ -o ../jitsi-meet_${VERSION}.orig.tar master
21
+tar --transform "s,^,jitsi-meet-$VERSION/,"  -rf ../jitsi-meet_${VERSION}.orig.tar
22
+cd ..
23
+
24
+bzip2 jitsi-meet_${VERSION}.orig.tar

+ 8
- 0
debian/jitsi-meet.config View File

@@ -0,0 +1,8 @@
1
+#!/bin/sh -e
2
+
3
+# Source debconf library.
4
+. /usr/share/debconf/confmodule
5
+
6
+# certificate type choice
7
+db_input critical jitsi-meet/cert-choice || true
8
+db_go

+ 1
- 0
debian/jitsi-meet.dirs View File

@@ -0,0 +1 @@
1
+etc/jitsi/meet/

+ 4
- 0
debian/jitsi-meet.docs View File

@@ -0,0 +1,4 @@
1
+README.md
2
+doc/debian/jitsi-meet/jitsi-meet.example
3
+doc/debian/jitsi-meet/README
4
+config.js

+ 11
- 0
debian/jitsi-meet.install View File

@@ -0,0 +1,11 @@
1
+*.js					/usr/share/jitsi-meet/
2
+*.json					/usr/share/jitsi-meet/
3
+*.html					/usr/share/jitsi-meet/
4
+*.ico					/usr/share/jitsi-meet/
5
+libs					/usr/share/jitsi-meet/
6
+service					/usr/share/jitsi-meet/
7
+css					/usr/share/jitsi-meet/
8
+sounds					/usr/share/jitsi-meet/
9
+fonts					/usr/share/jitsi-meet/
10
+images					/usr/share/jitsi-meet/
11
+lang					/usr/share/jitsi-meet/

+ 3
- 0
debian/jitsi-meet.links View File

@@ -0,0 +1,3 @@
1
+usr/share/javascript/strophe/strophe.min.js usr/share/jitsi-meet/libs/strophe/strophe.min.js
2
+usr/share/javascript/jquery/jquery.min.js usr/share/jitsi-meet/libs/jquery.min.js
3
+usr/share/javascript/jquery-ui/jquery-ui.min.js usr/share/jitsi-meet/libs/jquery-ui.min.js

+ 192
- 0
debian/jitsi-meet.postinst View File

@@ -0,0 +1,192 @@
1
+#!/bin/bash
2
+# postinst script for jitsi-meet
3
+#
4
+# see: dh_installdeb(1)
5
+
6
+set -e
7
+
8
+# summary of how this script can be called:
9
+#        * <postinst> `configure' <most-recently-configured-version>
10
+#        * <old-postinst> `abort-upgrade' <new version>
11
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
12
+#          <new-version>
13
+#        * <postinst> `abort-remove'
14
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
15
+#          <failed-install-package> <version> `removing'
16
+#          <conflicting-package> <version>
17
+# for details, see http://www.debian.org/doc/debian-policy/ or
18
+# the debian-policy package
19
+
20
+case "$1" in
21
+    configure)
22
+
23
+        JVB_ETC_CONFIG="/etc/jitsi/videobridge/config"
24
+        JVB_CONFIG="/usr/share/jitsi-videobridge/.sip-communicator/sip-communicator.properties"
25
+
26
+        . $JVB_ETC_CONFIG
27
+
28
+        # loading debconf
29
+        . /usr/share/debconf/confmodule
30
+
31
+        # detect dpkg-reconfigure
32
+        RECONFIGURING="false"
33
+        db_get jitsi-meet/jvb-hostname
34
+        JVB_HOSTNAME_OLD=$RET
35
+        if [ -n "$RET" ] && [ ! "$JVB_HOSTNAME_OLD" = "$JVB_HOSTNAME" ] ; then
36
+            RECONFIGURING="true"
37
+            rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
38
+        fi
39
+
40
+        JVB_SERVE="false"
41
+        db_get jitsi-meet/jvb-serve
42
+        if [ -n "$RET" ] && [ "$RET" = "true" ] ; then
43
+            JVB_SERVE="true"
44
+        fi
45
+
46
+        # stores the hostname so we will reuse it later, like in purge
47
+        db_set jitsi-meet/jvb-hostname $JVB_HOSTNAME
48
+
49
+        NGINX_INSTALL_CHECK="$(dpkg-query -W -f '${PackageSpec}:${Status}\n' nginx 2>&1 | grep -v "ok installed" || :)"
50
+        if [ -z "${NGINX_INSTALL_CHECK}" ]; then
51
+            FORCE_NGINX="true"
52
+        fi
53
+
54
+        # SSL for nginx
55
+        db_get jitsi-meet/cert-choice
56
+        CERT_CHOICE="$RET"
57
+        UPLOADED_CERT_CHOICE="A certificate is available and the files are uploaded on the server"
58
+
59
+        # jitsi meet
60
+        JITSI_MEET_CONFIG="/etc/jitsi/meet/$JVB_HOSTNAME-config.js"
61
+        if [ ! -f $JITSI_MEET_CONFIG ] ; then
62
+            cp /usr/share/doc/jitsi-meet/config.js $JITSI_MEET_CONFIG
63
+            sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" $JITSI_MEET_CONFIG
64
+        fi
65
+
66
+        # this is new install let's configure jvb to serve meet
67
+        if [[ -z $FORCE_NGINX && ( -z $JVB_HOSTNAME_OLD || "$JVB_SERVE" = "true" ) ]] ; then
68
+            # this is a reconfigure, lets just delete old links
69
+            if [ "$RECONFIGURING" = "true" ] ; then
70
+                rm -f $JVB_CONFIG
71
+            fi
72
+
73
+            # configure jvb
74
+            echo "AUTHBIND=yes" >> $JVB_ETC_CONFIG
75
+            sed -i "s/JVB_OPTS=.*/JVB_OPTS=--apis=rest,xmpp/g" $JVB_ETC_CONFIG
76
+
77
+            echo "org.jitsi.videobridge.rest.jetty.host=::" >> $JVB_CONFIG
78
+            echo "org.jitsi.videobridge.rest.jetty.port=443" >> $JVB_CONFIG
79
+            echo "org.jitsi.videobridge.rest.jetty.ProxyServlet.hostHeader=$JVB_HOSTNAME" >> $JVB_CONFIG
80
+            echo "org.jitsi.videobridge.rest.jetty.ProxyServlet.pathSpec=/http-bind" >> $JVB_CONFIG
81
+            echo "org.jitsi.videobridge.rest.jetty.ProxyServlet.proxyTo=http://localhost:5280/http-bind" >> $JVB_CONFIG
82
+            echo "org.jitsi.videobridge.rest.jetty.ResourceHandler.resourceBase=/usr/share/jitsi-meet" >> $JVB_CONFIG
83
+            echo "org.jitsi.videobridge.rest.jetty.ResourceHandler.alias./config.js=/etc/jitsi/meet/$JVB_HOSTNAME-config.js" >> $JVB_CONFIG
84
+            echo "org.jitsi.videobridge.rest.jetty.RewriteHandler.regex=^/([a-zA-Z0-9]+)$" >> $JVB_CONFIG
85
+            echo "org.jitsi.videobridge.rest.jetty.RewriteHandler.replacement=/" >> $JVB_CONFIG
86
+            echo "org.jitsi.videobridge.rest.jetty.tls.port=443" >> $JVB_CONFIG
87
+            echo "org.jitsi.videobridge.TCP_HARVESTER_PORT=443" >> $JVB_CONFIG
88
+            echo "org.jitsi.videobridge.rest.jetty.sslContextFactory.keyStorePath=/etc/jitsi/videobridge/$JVB_HOSTNAME.jks" >> $JVB_CONFIG
89
+            echo "org.jitsi.videobridge.rest.jetty.sslContextFactory.keyStorePassword=changeit" >> $JVB_CONFIG
90
+
91
+            # configure authbind to allow jvb to bind to privileged ports
92
+            OWNER=$(stat -c '%U' /usr/share/jitsi-videobridge)
93
+            GROUP=$(stat -c '%G' /usr/share/jitsi-videobridge)
94
+            JVB_UID="`id -u $OWNER`"
95
+            if [ ! -f "/etc/authbind/byuid/$JVB_UID" ] ; then
96
+                if [ ! -d "/etc/authbind/byuid" ] ; then
97
+                        mkdir -p /etc/authbind/byuid
98
+                        chmod 755 /etc/authbind
99
+                        chmod 755 /etc/authbind/byuid
100
+                fi
101
+                echo '::,443' >/etc/authbind/byuid/$JVB_UID
102
+                chown $OWNER:$GROUP /etc/authbind/byuid/$JVB_UID
103
+                chmod 700 /etc/authbind/byuid/$JVB_UID
104
+            fi
105
+
106
+            if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
107
+                # create jks from uploaded certs
108
+                openssl pkcs12 -export \
109
+                    -in /etc/ssl/$JVB_HOSTNAME.crt \
110
+                    -inkey /etc/ssl/$JVB_HOSTNAME.key \
111
+                    -passout pass:changeit > /etc/jitsi/videobridge/$JVB_HOSTNAME.p12
112
+                keytool -importkeystore \
113
+                    -srckeystore /etc/jitsi/videobridge/$JVB_HOSTNAME.p12 \
114
+                    -destkeystore /etc/jitsi/videobridge/$JVB_HOSTNAME.jks \
115
+                    -srcstoretype pkcs12 \
116
+                    -noprompt -storepass changeit -srcstorepass changeit
117
+            else
118
+                # create jks from self-signed certs
119
+                openssl pkcs12 -export \
120
+                    -in /var/lib/prosody/$JVB_HOSTNAME.crt \
121
+                    -inkey /var/lib/prosody/$JVB_HOSTNAME.key \
122
+                    -passout pass:changeit > /etc/jitsi/videobridge/$JVB_HOSTNAME.p12
123
+                keytool -importkeystore \
124
+                    -srckeystore /etc/jitsi/videobridge/$JVB_HOSTNAME.p12 \
125
+                    -destkeystore /etc/jitsi/videobridge/$JVB_HOSTNAME.jks \
126
+                    -srcstoretype pkcs12 \
127
+                    -noprompt -storepass changeit -srcstorepass changeit
128
+            fi
129
+
130
+            db_set jitsi-meet/jvb-serve "true"
131
+
132
+            invoke-rc.d jitsi-videobridge restart
133
+        elif [[ "$FORCE_NGINX" = "true" || ( -n $JVB_HOSTNAME_OLD && "$JVB_SERVE" = "false" ) ]] ; then
134
+            # this is a reconfigure, lets just delete old links
135
+            if [ "$RECONFIGURING" = "true" ] ; then
136
+                rm -f /etc/nginx/sites-enabled/$JVB_HOSTNAME_OLD.conf
137
+                rm -f /etc/jitsi/meet/$JVB_HOSTNAME_OLD-config.js
138
+            fi
139
+
140
+            # nginx conf
141
+            if [ ! -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf ] ; then
142
+                cp /usr/share/doc/jitsi-meet/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf
143
+                if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ] ; then
144
+                    ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
145
+                fi
146
+                sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf
147
+            fi
148
+
149
+            if [ "$CERT_CHOICE" = "$UPLOADED_CERT_CHOICE" ] ; then
150
+                db_set jitsi-meet/cert-path-key "/etc/ssl/$JVB_HOSTNAME.key"
151
+                db_input critical jitsi-meet/cert-path-key || true
152
+                db_go
153
+                db_get jitsi-meet/cert-path-key
154
+                CERT_KEY="$RET"
155
+                db_set jitsi-meet/cert-path-crt "/etc/ssl/$JVB_HOSTNAME.crt"
156
+                db_input critical jitsi-meet/cert-path-crt || true
157
+                db_go
158
+                db_get jitsi-meet/cert-path-crt
159
+                CERT_CRT="$RET"
160
+                # replace self-signed certificate paths with user provided ones
161
+                CERT_KEY_ESC=$(echo $CERT_KEY | sed 's/\./\\\./g')
162
+                CERT_KEY_ESC=$(echo $CERT_KEY_ESC | sed 's/\//\\\//g')
163
+                sed -i "s/ssl_certificate_key\ \/var\/lib\/prosody\/.*key/ssl_certificate_key\ $CERT_KEY_ESC/g" \
164
+                    /etc/nginx/sites-available/$JVB_HOSTNAME.conf
165
+                CERT_CRT_ESC=$(echo $CERT_CRT | sed 's/\./\\\./g')
166
+                CERT_CRT_ESC=$(echo $CERT_CRT_ESC | sed 's/\//\\\//g')
167
+                sed -i "s/ssl_certificate\ \/var\/lib\/prosody\/.*crt/ssl_certificate\ $CERT_CRT_ESC/g" \
168
+                    /etc/nginx/sites-available/$JVB_HOSTNAME.conf
169
+            fi
170
+
171
+            invoke-rc.d nginx reload
172
+        fi
173
+
174
+        # and we're done with debconf
175
+        db_stop
176
+    ;;
177
+
178
+    abort-upgrade|abort-remove|abort-deconfigure)
179
+    ;;
180
+
181
+    *)
182
+        echo "postinst called with unknown argument \`$1'" >&2
183
+        exit 1
184
+    ;;
185
+esac
186
+
187
+# dh_installdeb will replace this with shell code automatically
188
+# generated by other debhelper scripts.
189
+
190
+#DEBHELPER#
191
+
192
+exit 0

+ 56
- 0
debian/jitsi-meet.postrm View File

@@ -0,0 +1,56 @@
1
+#!/bin/sh
2
+# postrm script for jitsi-meet
3
+#
4
+# see: dh_installdeb(1)
5
+
6
+set -e
7
+
8
+# summary of how this script can be called:
9
+#        * <postrm> `remove'
10
+#        * <postrm> `purge'
11
+#        * <old-postrm> `upgrade' <new-version>
12
+#        * <new-postrm> `failed-upgrade' <old-version>
13
+#        * <new-postrm> `abort-install'
14
+#        * <new-postrm> `abort-install' <old-version>
15
+#        * <new-postrm> `abort-upgrade' <old-version>
16
+#        * <disappearer's-postrm> `disappear' <overwriter>
17
+#          <overwriter-version>
18
+# for details, see http://www.debian.org/doc/debian-policy/ or
19
+# the debian-policy package
20
+
21
+# Load debconf
22
+. /usr/share/debconf/confmodule
23
+
24
+
25
+case "$1" in
26
+    remove)
27
+        if [ -x "/etc/init.d/nginx" ]; then
28
+            invoke-rc.d nginx reload
29
+        fi
30
+    ;;
31
+    purge)
32
+        db_get jitsi-meet/jvb-hostname
33
+        JVB_HOSTNAME=$RET
34
+        if [ -n "$RET" ]; then
35
+            rm -f /etc/jitsi/meet/$JVB_HOSTNAME-config.js
36
+            rm -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf
37
+            rm -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
38
+        fi
39
+    ;;
40
+    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
41
+    ;;
42
+
43
+    *)
44
+        echo "postrm called with unknown argument \`$1'" >&2
45
+        exit 1
46
+    ;;
47
+esac
48
+
49
+# dh_installdeb will replace this with shell code automatically
50
+# generated by other debhelper scripts.
51
+
52
+#DEBHELPER#
53
+
54
+db_stop
55
+
56
+exit 0

+ 32
- 0
debian/jitsi-meet.templates View File

@@ -0,0 +1,32 @@
1
+Template: jitsi-meet/cert-choice
2
+Type: select
3
+__Choices: Self-signed certificate will be generated, A certificate is available and the files are uploaded on the server
4
+_Description: SSL certificate for the Jitsi Meet instance
5
+ Jitsi Meet is best to be set up with an SSL certificate.
6
+ Having no certificate, a self-signed one will be generated.
7
+ Having a certificate signed by a recognised CA, it can be uploaded on the server
8
+ and point its location. The default filenames will be /etc/ssl/--domain.name--.key
9
+ for the key and /etc/ssl/--domain.name--.crt for the certificate.
10
+
11
+Template: jitsi-meet/cert-path-key
12
+Type: string
13
+_Description: Full local server path to the SSL key file:
14
+ The full path to the SSL key file on the server.
15
+ If it has not been uploaded, now is a good time to do so.
16
+
17
+Template: jitsi-meet/cert-path-crt
18
+Type: string
19
+_Description: Full local server path to the SSL certificate file:
20
+ The full path to the SSL certificate file on the server.
21
+ If you haven't uploaded it, now is a good time to upload it in another console.
22
+
23
+Template: jitsi-meet/jvb-hostname
24
+Type: string
25
+_Description: The hostname of the current installation:
26
+ The value for the hostname that is set in Jitsi Videobridge installation.
27
+
28
+Template: jitsi-meet/jvb-serve
29
+Type: boolean
30
+Default: false
31
+_Description: for internal use
32
+ for internal use.

+ 202
- 0
debian/missing-source/libs/strophe/sha1.js View File

@@ -0,0 +1,202 @@
1
+/*
2
+ * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
3
+ * in FIPS PUB 180-1
4
+ * Version 2.1a Copyright Paul Johnston 2000 - 2002.
5
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
6
+ * Distributed under the BSD License
7
+ * See http://pajhome.org.uk/crypt/md5 for details.
8
+ */
9
+
10
+/*
11
+ * Configurable variables. You may need to tweak these to be compatible with
12
+ * the server-side, but the defaults work in most cases.
13
+ */
14
+var hexcase = 0;  /* hex output format. 0 - lowercase; 1 - uppercase        */
15
+var b64pad  = ""; /* base-64 pad character. "=" for strict RFC compliance   */
16
+var chrsz   = 8;  /* bits per input character. 8 - ASCII; 16 - Unicode      */
17
+
18
+/*
19
+ * These are the functions you'll usually want to call
20
+ * They take string arguments and return either hex or base-64 encoded strings
21
+ */
22
+function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));}
23
+function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));}
24
+function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));}
25
+function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));}
26
+function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));}
27
+function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));}
28
+
29
+/*
30
+ * Perform a simple self-test to see if the VM is working
31
+ */
32
+function sha1_vm_test()
33
+{
34
+  return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
35
+}
36
+
37
+/*
38
+ * Calculate the SHA-1 of an array of big-endian words, and a bit length
39
+ */
40
+function core_sha1(x, len)
41
+{
42
+  /* append padding */
43
+  x[len >> 5] |= 0x80 << (24 - len % 32);
44
+  x[((len + 64 >> 9) << 4) + 15] = len;
45
+
46
+  var w = Array(80);
47
+  var a =  1732584193;
48
+  var b = -271733879;
49
+  var c = -1732584194;
50
+  var d =  271733878;
51
+  var e = -1009589776;
52
+
53
+  for(var i = 0; i < x.length; i += 16)
54
+  {
55
+    var olda = a;
56
+    var oldb = b;
57
+    var oldc = c;
58
+    var oldd = d;
59
+    var olde = e;
60
+
61
+    for(var j = 0; j < 80; j++)
62
+    {
63
+      if(j < 16) w[j] = x[i + j];
64
+      else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
65
+      var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)),
66
+                       safe_add(safe_add(e, w[j]), sha1_kt(j)));
67
+      e = d;
68
+      d = c;
69
+      c = rol(b, 30);
70
+      b = a;
71
+      a = t;
72
+    }
73
+
74
+    a = safe_add(a, olda);
75
+    b = safe_add(b, oldb);
76
+    c = safe_add(c, oldc);
77
+    d = safe_add(d, oldd);
78
+    e = safe_add(e, olde);
79
+  }
80
+  return Array(a, b, c, d, e);
81
+
82
+}
83
+
84
+/*
85
+ * Perform the appropriate triplet combination function for the current
86
+ * iteration
87
+ */
88
+function sha1_ft(t, b, c, d)
89
+{
90
+  if(t < 20) return (b & c) | ((~b) & d);
91
+  if(t < 40) return b ^ c ^ d;
92
+  if(t < 60) return (b & c) | (b & d) | (c & d);
93
+  return b ^ c ^ d;
94
+}
95
+
96
+/*
97
+ * Determine the appropriate additive constant for the current iteration
98
+ */
99
+function sha1_kt(t)
100
+{
101
+  return (t < 20) ?  1518500249 : (t < 40) ?  1859775393 :
102
+         (t < 60) ? -1894007588 : -899497514;
103
+}
104
+
105
+/*
106
+ * Calculate the HMAC-SHA1 of a key and some data
107
+ */
108
+function core_hmac_sha1(key, data)
109
+{
110
+  var bkey = str2binb(key);
111
+  if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
112
+
113
+  var ipad = Array(16), opad = Array(16);
114
+  for(var i = 0; i < 16; i++)
115
+  {
116
+    ipad[i] = bkey[i] ^ 0x36363636;
117
+    opad[i] = bkey[i] ^ 0x5C5C5C5C;
118
+  }
119
+
120
+  var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
121
+  return core_sha1(opad.concat(hash), 512 + 160);
122
+}
123
+
124
+/*
125
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
126
+ * to work around bugs in some JS interpreters.
127
+ */
128
+function safe_add(x, y)
129
+{
130
+  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
131
+  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
132
+  return (msw << 16) | (lsw & 0xFFFF);
133
+}
134
+
135
+/*
136
+ * Bitwise rotate a 32-bit number to the left.
137
+ */
138
+function rol(num, cnt)
139
+{
140
+  return (num << cnt) | (num >>> (32 - cnt));
141
+}
142
+
143
+/*
144
+ * Convert an 8-bit or 16-bit string to an array of big-endian words
145
+ * In 8-bit function, characters >255 have their hi-byte silently ignored.
146
+ */
147
+function str2binb(str)
148
+{
149
+  var bin = Array();
150
+  var mask = (1 << chrsz) - 1;
151
+  for(var i = 0; i < str.length * chrsz; i += chrsz)
152
+    bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32);
153
+  return bin;
154
+}
155
+
156
+/*
157
+ * Convert an array of big-endian words to a string
158
+ */
159
+function binb2str(bin)
160
+{
161
+  var str = "";
162
+  var mask = (1 << chrsz) - 1;
163
+  for(var i = 0; i < bin.length * 32; i += chrsz)
164
+    str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask);
165
+  return str;
166
+}
167
+
168
+/*
169
+ * Convert an array of big-endian words to a hex string.
170
+ */
171
+function binb2hex(binarray)
172
+{
173
+  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
174
+  var str = "";
175
+  for(var i = 0; i < binarray.length * 4; i++)
176
+  {
177
+    str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
178
+           hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8  )) & 0xF);
179
+  }
180
+  return str;
181
+}
182
+
183
+/*
184
+ * Convert an array of big-endian words to a base-64 string
185
+ */
186
+function binb2b64(binarray)
187
+{
188
+  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
189
+  var str = "";
190
+  for(var i = 0; i < binarray.length * 4; i += 3)
191
+  {
192
+    var triplet = (((binarray[i   >> 2] >> 8 * (3 -  i   %4)) & 0xFF) << 16)
193
+                | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 )
194
+                |  ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF);
195
+    for(var j = 0; j < 4; j++)
196
+    {
197
+      if(i * 8 + j * 6 > binarray.length * 32) str += b64pad;
198
+      else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F);
199
+    }
200
+  }
201
+  return str;
202
+}

+ 240
- 0
debian/missing-source/libs/strophe/strophe.caps.jsonly.js View File

@@ -0,0 +1,240 @@
1
+/**
2
+ * Entity Capabilities (XEP-0115)
3
+ *
4
+ * Depends on disco plugin.
5
+ *
6
+ * See: http://xmpp.org/extensions/xep-0115.html
7
+ *
8
+ * Authors:
9
+ *   - Michael Weibel <michael.weibel@gmail.com>
10
+ *
11
+ * Copyright:
12
+ *   - Michael Weibel <michael.weibel@gmail.com>
13
+ */
14
+
15
+ Strophe.addConnectionPlugin('caps', {
16
+	/** Constant: HASH
17
+	 * Hash used
18
+	 *
19
+	 * Currently only sha-1 is supported.
20
+	 */
21
+	HASH: 'sha-1',
22
+	/** Variable: node
23
+	 * Client which is being used.
24
+	 *
25
+	 * Can be overwritten as soon as Strophe has been initialized.
26
+	 */
27
+	node: 'http://strophe.im/strophejs/',
28
+	/** PrivateVariable: _ver
29
+	 * Own generated version string
30
+	 */
31
+	_ver: '',
32
+	/** PrivateVariable: _connection
33
+	 * Strophe connection
34
+	 */
35
+	_connection: null,
36
+	/** PrivateVariable: _knownCapabilities
37
+	 * A hashtable containing version-strings and their capabilities, serialized
38
+	 * as string.
39
+	 *
40
+	 * TODO: Maybe those caps shouldn't be serialized.
41
+	 */
42
+	_knownCapabilities: {},
43
+	/** PrivateVariable: _jidVerIndex
44
+	 * A hashtable containing jids and their versions for better lookup of capabilities.
45
+	 */
46
+	_jidVerIndex: {},
47
+
48
+	/** Function: init
49
+	 * Initialize plugin:
50
+	 *   - Add caps namespace
51
+	 *   - Add caps feature to disco plugin
52
+	 *   - Add handler for caps stanzas
53
+	 *
54
+	 * Parameters:
55
+	 *   (Strophe.Connection) conn - Strophe connection
56
+	 */
57
+	init: function(conn) {
58
+		this._connection = conn;
59
+
60
+		Strophe.addNamespace('CAPS', 'http://jabber.org/protocol/caps');
61
+
62
+		if (!this._connection.disco) {
63
+			throw "Caps plugin requires the disco plugin to be installed.";
64
+		}
65
+
66
+		this._connection.disco.addFeature(Strophe.NS.CAPS);
67
+		this._connection.addHandler(this._delegateCapabilities.bind(this), Strophe.NS.CAPS);
68
+	},
69
+
70
+	/** Function: generateCapsAttrs
71
+	 * Returns the attributes for generating the "c"-stanza containing the own version
72
+	 *
73
+	 * Returns:
74
+	 *   (Object) - attributes
75
+	 */
76
+	generateCapsAttrs: function() {
77
+		return {
78
+			'xmlns': Strophe.NS.CAPS,
79
+			'hash': this.HASH,
80
+			'node': this.node,
81
+			'ver': this.generateVer()
82
+		};
83
+	},
84
+
85
+	/** Function: generateVer
86
+	 * Returns the base64 encoded version string (encoded itself with sha1)
87
+	 *
88
+	 * Returns:
89
+	 *   (String) - version
90
+	 */
91
+	generateVer: function() {
92
+		if (this._ver !== "") {
93
+			return this._ver;
94
+		}
95
+
96
+		var ver = "",
97
+			identities = this._connection.disco._identities.sort(this._sortIdentities),
98
+			identitiesLen = identities.length,
99
+			features = this._connection.disco._features.sort(),
100
+			featuresLen = features.length;
101
+		for(var i = 0; i < identitiesLen; i++) {
102
+			var curIdent = identities[i];
103
+			ver += curIdent.category + "/" + curIdent.type + "/" + curIdent.lang + "/" + curIdent.name + "<";
104
+		}
105
+		for(var i = 0; i < featuresLen; i++) {
106
+			ver += features[i] + '<';
107
+		}
108
+
109
+		this._ver = b64_sha1(ver);
110
+		return this._ver;
111
+	},
112
+
113
+	/** Function: getCapabilitiesByJid
114
+	 * Returns serialized capabilities of a jid (if available).
115
+	 * Otherwise null.
116
+	 *
117
+	 * Parameters:
118
+	 *   (String) jid - Jabber id
119
+	 *
120
+	 * Returns:
121
+	 *   (String|null) - capabilities, serialized; or null when not available.
122
+	 */
123
+	getCapabilitiesByJid: function(jid) {
124
+		if (this._jidVerIndex[jid]) {
125
+			return this._knownCapabilities[this._jidVerIndex[jid]];
126
+		}
127
+		return null;
128
+	},
129
+
130
+	/** PrivateFunction: _delegateCapabilities
131
+	 * Checks if the version has already been saved.
132
+	 * If yes: do nothing.
133
+	 * If no: Request capabilities
134
+	 *
135
+	 * Parameters:
136
+	 *   (Strophe.Builder) stanza - Stanza
137
+	 *
138
+	 * Returns:
139
+	 *   (Boolean)
140
+	 */
141
+	_delegateCapabilities: function(stanza) {
142
+		var from = stanza.getAttribute('from'),
143
+			c = stanza.querySelector('c'),
144
+			ver = c.getAttribute('ver'),
145
+			node = c.getAttribute('node');
146
+		if (!this._knownCapabilities[ver]) {
147
+			return this._requestCapabilities(from, node, ver);
148
+		} else {
149
+			this._jidVerIndex[from] = ver;
150
+		}
151
+		if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
152
+			this._jidVerIndex[from] = ver;
153
+		}
154
+		return true;
155
+	},
156
+
157
+	/** PrivateFunction: _requestCapabilities
158
+	 * Requests capabilities from the one which sent the caps-info stanza.
159
+	 * This is done using disco info.
160
+	 *
161
+	 * Additionally, it registers a handler for handling the reply.
162
+	 *
163
+	 * Parameters:
164
+	 *   (String) to - Destination jid
165
+	 *   (String) node - Node attribute of the caps-stanza
166
+	 *   (String) ver - Version of the caps-stanza
167
+	 *
168
+	 * Returns:
169
+	 *   (Boolean) - true
170
+	 */
171
+	_requestCapabilities: function(to, node, ver) {
172
+		if (to !== this._connection.jid) {
173
+			var id = this._connection.disco.info(to, node + '#' + ver);
174
+			this._connection.addHandler(this._handleDiscoInfoReply.bind(this), Strophe.NS.DISCO_INFO, 'iq', 'result', id, to);
175
+		}
176
+		return true;
177
+	},
178
+
179
+	/** PrivateFunction: _handleDiscoInfoReply
180
+	 * Parses the disco info reply and adds the version & it's capabilities to the _knownCapabilities variable.
181
+	 * Additionally, it adds the jid & the version to the _jidVerIndex variable for a better lookup.
182
+	 *
183
+	 * Parameters:
184
+	 *   (Strophe.Builder) stanza - Disco info stanza
185
+	 *
186
+	 * Returns:
187
+	 *   (Boolean) - false, to automatically remove the handler.
188
+	 */
189
+	_handleDiscoInfoReply: function(stanza) {
190
+		var query = stanza.querySelector('query'),
191
+			node = query.getAttribute('node').split('#'),
192
+			ver = node[1],
193
+			from = stanza.getAttribute('from');
194
+		if (!this._knownCapabilities[ver]) {
195
+			var childNodes = query.childNodes,
196
+				childNodesLen = childNodes.length;
197
+			this._knownCapabilities[ver] = [];
198
+			for(var i = 0; i < childNodesLen; i++) {
199
+				var node = childNodes[i];
200
+				this._knownCapabilities[ver].push({name: node.nodeName, attributes: node.attributes});
201
+			}
202
+			this._jidVerIndex[from] = ver;
203
+		} else if (!this._jidVerIndex[from] || !this._jidVerIndex[from] !== ver) {
204
+			this._jidVerIndex[from] = ver;
205
+		}
206
+		return false;
207
+	},
208
+
209
+	/** PrivateFunction: _sortIdentities
210
+	 * Sorts two identities according the sorting requirements in XEP-0115.
211
+	 *
212
+	 * Parameters:
213
+	 *   (Object) a - Identity a
214
+	 *   (Object) b - Identity b
215
+	 *
216
+	 * Returns:
217
+	 *   (Integer) - 1, 0 or -1; according to which one's greater.
218
+	 */
219
+	_sortIdentities: function(a, b) {
220
+		if (a.category > b.category) {
221
+			return 1;
222
+		}
223
+		if (a.category < b.category) {
224
+			return -1;
225
+		}
226
+		if (a.type > b.type) {
227
+			return 1;
228
+		}
229
+		if (a.type < b.type) {
230
+			return -1;
231
+		}
232
+		if (a.lang > b.lang) {
233
+			return 1;
234
+		}
235
+		if (a.lang < b.lang) {
236
+			return -1;
237
+		}
238
+		return 0;
239
+	}
240
+ });

+ 232
- 0
debian/missing-source/libs/strophe/strophe.disco.js View File

@@ -0,0 +1,232 @@
1
+/*
2
+  Copyright 2010, François de Metz <francois@2metz.fr>
3
+*/
4
+
5
+/**
6
+ * Disco Strophe Plugin
7
+ * Implement http://xmpp.org/extensions/xep-0030.html
8
+ * TODO: manage node hierarchies, and node on info request
9
+ */
10
+Strophe.addConnectionPlugin('disco',
11
+{
12
+    _connection: null,
13
+    _identities : [],
14
+    _features : [],
15
+    _items : [],
16
+    /** Function: init
17
+     * Plugin init
18
+     *
19
+     * Parameters:
20
+     *   (Strophe.Connection) conn - Strophe connection
21
+     */
22
+    init: function(conn)
23
+    {
24
+    this._connection = conn;
25
+        this._identities = [];
26
+        this._features   = [];
27
+        this._items      = [];
28
+        // disco info
29
+        conn.addHandler(this._onDiscoInfo.bind(this), Strophe.NS.DISCO_INFO, 'iq', 'get', null, null);
30
+        // disco items
31
+        conn.addHandler(this._onDiscoItems.bind(this), Strophe.NS.DISCO_ITEMS, 'iq', 'get', null, null);
32
+    },
33
+    /** Function: addIdentity
34
+     * See http://xmpp.org/registrar/disco-categories.html
35
+     * Parameters:
36
+     *   (String) category - category of identity (like client, automation, etc ...)
37
+     *   (String) type - type of identity (like pc, web, bot , etc ...)
38
+     *   (String) name - name of identity in natural language
39
+     *   (String) lang - lang of name parameter
40
+     *
41
+     * Returns:
42
+     *   Boolean
43
+     */
44
+    addIdentity: function(category, type, name, lang)
45
+    {
46
+        for (var i=0; i<this._identities.length; i++)
47
+        {
48
+            if (this._identities[i].category == category &&
49
+                this._identities[i].type == type &&
50
+                this._identities[i].name == name &&
51
+                this._identities[i].lang == lang)
52
+            {
53
+                return false;
54
+            }
55
+        }
56
+        this._identities.push({category: category, type: type, name: name, lang: lang});
57
+        return true;
58
+    },
59
+    /** Function: addFeature
60
+     *
61
+     * Parameters:
62
+     *   (String) var_name - feature name (like jabber:iq:version)
63
+     *
64
+     * Returns:
65
+     *   boolean
66
+     */
67
+    addFeature: function(var_name)
68
+    {
69
+        for (var i=0; i<this._features.length; i++)
70
+        {
71
+             if (this._features[i] == var_name)
72
+                 return false;
73
+        }
74
+        this._features.push(var_name);
75
+        return true;
76
+    },
77
+    /** Function: removeFeature
78
+     *
79
+     * Parameters:
80
+     *   (String) var_name - feature name (like jabber:iq:version)
81
+     *
82
+     * Returns:
83
+     *   boolean
84
+     */
85
+    removeFeature: function(var_name)
86
+    {
87
+        for (var i=0; i<this._features.length; i++)
88
+        {
89
+             if (this._features[i] === var_name){
90
+                 this._features.splice(i,1)
91
+                 return true;
92
+             }
93
+        }
94
+        return false;
95
+    },
96
+    /** Function: addItem
97
+     *
98
+     * Parameters:
99
+     *   (String) jid
100
+     *   (String) name
101
+     *   (String) node
102
+     *   (Function) call_back
103
+     *
104
+     * Returns:
105
+     *   boolean
106
+     */
107
+    addItem: function(jid, name, node, call_back)
108
+    {
109
+        if (node && !call_back)
110
+            return false;
111
+        this._items.push({jid: jid, name: name, node: node, call_back: call_back});
112
+        return true;
113
+    },
114
+    /** Function: info
115
+     * Info query
116
+     *
117
+     * Parameters:
118
+     *   (Function) call_back
119
+     *   (String) jid
120
+     *   (String) node
121
+     */
122
+    info: function(jid, node, success, error, timeout)
123
+    {
124
+        var attrs = {xmlns: Strophe.NS.DISCO_INFO};
125
+        if (node)
126
+            attrs.node = node;
127
+
128
+        var info = $iq({from:this._connection.jid,
129
+                         to:jid, type:'get'}).c('query', attrs);
130
+        this._connection.sendIQ(info, success, error, timeout);
131
+    },
132
+    /** Function: items
133
+     * Items query
134
+     *
135
+     * Parameters:
136
+     *   (Function) call_back
137
+     *   (String) jid
138
+     *   (String) node
139
+     */
140
+    items: function(jid, node, success, error, timeout)
141
+    {
142
+        var attrs = {xmlns: Strophe.NS.DISCO_ITEMS};
143
+        if (node)
144
+            attrs.node = node;
145
+
146
+        var items = $iq({from:this._connection.jid,
147
+                         to:jid, type:'get'}).c('query', attrs);
148
+        this._connection.sendIQ(items, success, error, timeout);
149
+    },
150
+
151
+    /** PrivateFunction: _buildIQResult
152
+     */
153
+    _buildIQResult: function(stanza, query_attrs)
154
+    {
155
+        var id   =  stanza.getAttribute('id');
156
+        var from = stanza.getAttribute('from');
157
+        var iqresult = $iq({type: 'result', id: id});
158
+
159
+        if (from !== null) {
160
+            iqresult.attrs({to: from});
161
+        }
162
+
163
+        return iqresult.c('query', query_attrs);
164
+    },
165
+
166
+    /** PrivateFunction: _onDiscoInfo
167
+     * Called when receive info request
168
+     */
169
+    _onDiscoInfo: function(stanza)
170
+    {
171
+        var node = stanza.getElementsByTagName('query')[0].getAttribute('node');
172
+        var attrs = {xmlns: Strophe.NS.DISCO_INFO};
173
+        if (node)
174
+        {
175
+            attrs.node = node;
176
+        }
177
+        var iqresult = this._buildIQResult(stanza, attrs);
178
+        for (var i=0; i<this._identities.length; i++)
179
+        {
180
+            var attrs = {category: this._identities[i].category,
181
+                         type    : this._identities[i].type};
182
+            if (this._identities[i].name)
183
+                attrs.name = this._identities[i].name;
184
+            if (this._identities[i].lang)
185
+                attrs['xml:lang'] = this._identities[i].lang;
186
+            iqresult.c('identity', attrs).up();
187
+        }
188
+        for (var i=0; i<this._features.length; i++)
189
+        {
190
+            iqresult.c('feature', {'var':this._features[i]}).up();
191
+        }
192
+        this._connection.send(iqresult.tree());
193
+        return true;
194
+    },
195
+    /** PrivateFunction: _onDiscoItems
196
+     * Called when receive items request
197
+     */
198
+    _onDiscoItems: function(stanza)
199
+    {
200
+        var query_attrs = {xmlns: Strophe.NS.DISCO_ITEMS};
201
+        var node = stanza.getElementsByTagName('query')[0].getAttribute('node');
202
+        if (node)
203
+        {
204
+            query_attrs.node = node;
205
+            var items = [];
206
+            for (var i = 0; i < this._items.length; i++)
207
+            {
208
+                if (this._items[i].node == node)
209
+                {
210
+                    items = this._items[i].call_back(stanza);
211
+                    break;
212
+                }
213
+            }
214
+        }
215
+        else
216
+        {
217
+            var items = this._items;
218
+        }
219
+        var iqresult = this._buildIQResult(stanza, query_attrs);
220
+        for (var i = 0; i < items.length; i++)
221
+        {
222
+            var attrs = {jid:  items[i].jid};
223
+            if (items[i].name)
224
+                attrs.name = items[i].name;
225
+            if (items[i].node)
226
+                attrs.node = items[i].node;
227
+            iqresult.c('item', attrs).up();
228
+        }
229
+        this._connection.send(iqresult.tree());
230
+        return true;
231
+    }
232
+});

+ 22
- 0
debian/patches/jquery-package View File

@@ -0,0 +1,22 @@
1
+Description: Update the used js files for jquery to generic ones, to be able to use local system installed version (through symlinks).
2
+Index: jitsi-meet/index.html
3
+===================================================================
4
+--- jitsi-meet.orig/index.html
5
++++ jitsi-meet/index.html
6
+@@ -10,14 +10,14 @@
7
+     <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
8
+     <meta itemprop="image" content="/images/jitsilogo.png"/>
9
+     <script src="https://api.callstats.io/static/callstats.min.js"></script>
10
+-    <script src="libs/jquery-2.1.1.min.js"></script>
11
++    <script src="libs/jquery.min.js"></script>
12
+     <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
13
+     <script src="https://cdnjs.cloudflare.com/ajax/libs/jsSHA/1.5.0/sha.js"></script>
14
+     <script src="config.js?v=11"></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
15
+     <script src="libs/strophe/strophe.min.js?v=2"></script>
16
+     <script src="libs/strophe/strophe.disco.min.js?v=1"></script>
17
+     <script src="libs/strophe/strophe.caps.jsonly.min.js?v=1"></script>
18
+-    <script src="libs/jquery-ui.js"></script>
19
++    <script src="libs/jquery-ui.min.js"></script>
20
+     <script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib -->
21
+     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
22
+     <script src="libs/toastr.js?v=1"></script><!-- notifications lib -->

+ 1
- 0
debian/patches/series View File

@@ -0,0 +1 @@
1
+jquery-package

+ 1
- 0
debian/po/POTFILES.in View File

@@ -0,0 +1 @@
1
+[type: gettext/rfc822deb] jitsi-meet.templates

+ 98
- 0
debian/po/templates.pot View File

@@ -0,0 +1,98 @@
1
+#
2
+#, fuzzy
3
+msgid ""
4
+msgstr ""
5
+"Project-Id-Version: jitsi-meet\n"
6
+"Report-Msgid-Bugs-To: jitsi-meet@packages.debian.org\n"
7
+"POT-Creation-Date: 2014-09-03 17:26+0200\n"
8
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
9
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
10
+"Language-Team: LANGUAGE <LL@li.org>\n"
11
+"Language: \n"
12
+"MIME-Version: 1.0\n"
13
+"Content-Type: text/plain; charset=CHARSET\n"
14
+"Content-Transfer-Encoding: 8bit\n"
15
+
16
+#. Type: select
17
+#. Choices
18
+#: ../jitsi-meet.templates:1001
19
+msgid "Self-signed certificate will be generated"
20
+msgstr ""
21
+
22
+#. Type: select
23
+#. Choices
24
+#: ../jitsi-meet.templates:1001
25
+msgid "A certificate is available and the files are uploaded on the server"
26
+msgstr ""
27
+
28
+#. Type: select
29
+#. Description
30
+#: ../jitsi-meet.templates:1002
31
+msgid "SSL certificate for the Jitsi Meet instance"
32
+msgstr ""
33
+
34
+#. Type: select
35
+#. Description
36
+#: ../jitsi-meet.templates:1002
37
+msgid ""
38
+"Jitsi Meet is best to be set up with an SSL certificate. Having no "
39
+"certificate, a self-signed one will be generated. Having a certificate "
40
+"signed by a recognised CA, it can be uploaded on the server and point its "
41
+"location. The default filenames will be /etc/ssl/--domain.name--.key for the "
42
+"key and /etc/ssl/--domain.name--.crt for the certificate."
43
+msgstr ""
44
+
45
+#. Type: string
46
+#. Description
47
+#: ../jitsi-meet.templates:2001
48
+msgid "Full local server path to the SSL key file:"
49
+msgstr ""
50
+
51
+#. Type: string
52
+#. Description
53
+#: ../jitsi-meet.templates:2001
54
+msgid ""
55
+"The full path to the SSL key file on the server. If it has not been "
56
+"uploaded, now is a good time to do so."
57
+msgstr ""
58
+
59
+#. Type: string
60
+#. Description
61
+#: ../jitsi-meet.templates:3001
62
+msgid "Full local server path to the SSL certificate file:"
63
+msgstr ""
64
+
65
+#. Type: string
66
+#. Description
67
+#: ../jitsi-meet.templates:3001
68
+msgid ""
69
+"The full path to the SSL certificate file on the server. If you haven't "
70
+"uploaded it, now is a good time to upload it in another console."
71
+msgstr ""
72
+
73
+#. Type: string
74
+#. Description
75
+#: ../jitsi-meet.templates:4001
76
+msgid "The hostname of the current installation:"
77
+msgstr ""
78
+
79
+#. Type: string
80
+#. Description
81
+#: ../jitsi-meet.templates:4001
82
+msgid ""
83
+"The value for the hostname that is set in Jitsi Videobridge installation."
84
+msgstr ""
85
+
86
+
87
+#. Type: string
88
+#. Description
89
+#: ../jitsi-meet.templates:5001
90
+msgid "for internal use"
91
+msgstr ""
92
+
93
+#. Type: string
94
+#. Description
95
+#: ../jitsi-meet.templates:5001
96
+msgid ""
97
+"Jitsi Videobridge installation can use its internal jetty to serve static meet pages."
98
+msgstr ""

+ 19
- 0
debian/rules View File

@@ -0,0 +1,19 @@
1
+#!/usr/bin/make -f
2
+
3
+# Uncomment this to turn on verbose mode.
4
+#export DH_VERBOSE=1
5
+
6
+%:
7
+	dh $@
8
+
9
+# we skip making Makefile exists for updating browserify modules when developing
10
+override_dh_auto_build:
11
+
12
+override_dh_install:
13
+	dh_installdirs
14
+	dh_install -X/config.js
15
+	yui-compressor -o debian/jitsi-meet/usr/share/jitsi-meet/libs/strophe/strophe.caps.jsonly.min.js \
16
+		debian/missing-source/libs/strophe/strophe.caps.jsonly.js
17
+	yui-compressor -o debian/jitsi-meet/usr/share/jitsi-meet/libs/strophe/strophe.disco.min.js \
18
+		debian/missing-source/libs/strophe/sha1.js \
19
+		debian/missing-source/libs/strophe/strophe.disco.js

+ 1
- 0
debian/source/format View File

@@ -0,0 +1 @@
1
+3.0 (quilt)

+ 2
- 0
debian/watch View File

@@ -0,0 +1,2 @@
1
+version=3
2
+opts="uversionmangle=s/^/1.0./" https://github.com/jitsi/jitsi-meet/releases/ /jitsi/jitsi-meet/archive/(\S+)\.tar\.gz

+ 12
- 0
doc/adding-an-icon.md View File

@@ -0,0 +1,12 @@
1
+### Adding an icon to the font file (e.g. for the floating menu)
2
+1. Go to https://icomoon.io/app/
3
+2. Go to "Manage Projects" from the menu on the top left.
4
+3. Use "Import project" and select <code>fonts/selection.json</code> from Jitsi Meet.
5
+4. Import icons (e.g. svg files) using the "import items" button.
6
+5. Go to "generate font" and make sure the identifiers for the new icons are correct.
7
+6. Download the result in a zip file using the "download" button.
8
+7. Copy <code>selection.json</code> and <code>fonts/jitsi.*</code> from the zip file to <code>fonts/</code> in Jitsi Meet
9
+8. Copy the class for the new icon from <code>style.css</code> in the zip file to <code>css/font.css</code> in Jitsi Meet (do *not* copy the whole file)
10
+
11
+Sample commit: https://github.com/jitsi/jitsi-meet/commit/68bc819b89aec12364fcf07b81efa83a1900eed6
12
+

+ 174
- 0
doc/api.md View File

@@ -0,0 +1,174 @@
1
+Jitsi Meet API
2
+============
3
+
4
+You can use Jitsi Meet API to embed Jitsi Meet in to your application.
5
+
6
+Installation
7
+==========
8
+
9
+To embed Jitsi Meet in your application you need to add Jitsi Meet API library
10
+```javascript
11
+<script src="https://meet.jit.si/external_api.js"></script>
12
+```
13
+
14
+The next step for embedding Jitsi Meet is to create the Jitsi Meet API object
15
+```javascript
16
+<script>
17
+    var domain = "meet.jit.si";
18
+    var room = "JitsiMeetAPIExample";
19
+    var width = 700;
20
+    var height = 700;
21
+    var api = new JitsiMeetExternalAPI(domain, room, width, height);
22
+</script>
23
+``` 
24
+You can paste that lines in your html code where you want to be placed the Jitsi Meet conference
25
+or you can specify the parent HTML element for the Jitsi Meet conference in the JitsiMeetExternalAPI
26
+constructor.
27
+```javascript
28
+    var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement);
29
+``` 
30
+If you don't specify room the user will enter in new conference with random room name.
31
+
32
+You can enable the "film strip only" mode(only the small videos are visible) by setting 6th parameter to ```true```:
33
+```javascript
34
+    var api = new JitsiMeetExternalAPI(domain, room, width, height, htmlElement, true);
35
+``` 
36
+
37
+Controlling embedded Jitsi Meet Conference
38
+=========
39
+
40
+You can control the embedded Jitsi Meet conference using the JitsiMeetExternalAPI object.
41
+
42
+You can send command to Jitsi Meet conference using ```executeCommand```. 
43
+```
44
+api.executeCommand(command, arguments)
45
+```
46
+The ```command``` parameter is String object with the name of the command.
47
+The ```arguments``` parameter is array with the arguments required by the command. 
48
+If no arguments are required by the command this parameter can be omitted or you can pass empty array.
49
+Currently we support the following commands:
50
+
51
+
52
+* **displayName** - sets the display name of the local participant. This command requires one argument - 
53
+the new display name to be set
54
+```
55
+api.executeCommand('displayName', ['New Nickname']);
56
+```
57
+* **toggleAudio** - mutes / unmutes the audio for the local participant. No arguments are required.
58
+```
59
+api.executeCommand('toggleAudio', [])
60
+```
61
+* **toggleVideo** - mutes / unmutes the video for the local participant. No arguments are required.
62
+```
63
+api.executeCommand('toggleVideo', [])
64
+```
65
+* **toggleFilmStrip** - hides / shows the film strip. No arguments are required.
66
+```
67
+api.executeCommand('filmStrip', [])
68
+```
69
+* **toggleChat** - hides / shows the chat. No arguments are required.
70
+```
71
+api.executeCommand('toggleChat', [])
72
+```
73
+* **toggleContactList** - hides / shows the contact list. No arguments are required.
74
+```
75
+api.executeCommand('toggleContactList', [])
76
+```
77
+
78
+You can also execute multiple commands using the method ```executeCommands```. 
79
+```
80
+api.executeCommands(commands)
81
+```
82
+The ```commands``` parameter is object with keys the names of the commands and values the arguments for the
83
+commands.
84
+
85
+```
86
+api.executeCommands({displayName: ['nickname'], toggleAudio: []});
87
+```
88
+
89
+You can add event listeners to the embedded Jitsi Meet using ```addEventListener``` method.
90
+```
91
+api.addEventListener(event, listener)
92
+```
93
+The ```event``` parameter is String object with the name of the event.
94
+The ```listener``` paramenter is Function object with one argument that will be notified when the event occurs
95
+with data related to the event.
96
+
97
+Currently we support the following events:
98
+
99
+* **incomingMessage** - event notifications about incoming
100
+messages. The listener will receive object with the following structure:
101
+```
102
+{
103
+"from": from,//JID of the user that sent the message
104
+"nick": nick,//the nickname of the user that sent the message
105
+"message": txt//the text of the message
106
+}
107
+```
108
+* **outgoingMessage** - event notifications about outgoing
109
+messages. The listener will receive object with the following structure:
110
+```
111
+{
112
+"message": txt//the text of the message
113
+}
114
+```
115
+* **displayNameChanged** - event notifications about display name
116
+change. The listener will receive object with the following structure:
117
+```
118
+{
119
+jid: jid,//the JID of the participant that changed his display name
120
+displayname: displayName //the new display name
121
+}
122
+```
123
+* **participantJoined** - event notifications about new participant.
124
+The listener will receive object with the following structure:
125
+```
126
+{
127
+jid: jid //the jid of the participant
128
+}
129
+```
130
+* **participantLeft** - event notifications about participant that left room.
131
+The listener will receive object with the following structure:
132
+```
133
+{
134
+jid: jid //the jid of the participant
135
+}
136
+```
137
+
138
+You can also add multiple event listeners by using ```addEventListeners```.
139
+This method requires one argument of type Object. The object argument must 
140
+have keys with the names of the events and values the listeners of the events.
141
+
142
+```
143
+function incomingMessageListener(object)
144
+{
145
+...
146
+}
147
+
148
+function outgoingMessageListener(object)
149
+{
150
+...
151
+}
152
+
153
+api.addEventListeners({
154
+    incomingMessage: incomingMessageListener,
155
+    outgoingMessage: outgoingMessageListener})
156
+```
157
+
158
+If you want to remove a listener you can use ```removeEventListener``` method with argument the name of the event.
159
+```
160
+api.removeEventListener("incomingMessage");
161
+```
162
+
163
+If you want to remove more than one event you can use ```removeEventListeners``` method with argument
164
+ array with the names of the events.
165
+```
166
+api.removeEventListeners(["incomingMessage", "outgoingMessageListener"]);
167
+```
168
+
169
+You can remove the embedded Jitsi Meet Conference with the following code:
170
+```
171
+api.dispose()
172
+```
173
+
174
+It is a good practice to remove the conference before the page is unloaded. 

+ 1
- 0
doc/debian/jitsi-meet-prosody/README View File

@@ -0,0 +1 @@
1
+Prosody configuration for Jitsi Meet

+ 28
- 0
doc/debian/jitsi-meet-prosody/prosody.cfg.lua-jvb.example View File

@@ -0,0 +1,28 @@
1
+VirtualHost "jitmeet.example.com"
2
+        -- enabled = false -- Remove this line to enable this host
3
+        authentication = "anonymous"
4
+        -- Assign this host a certificate for TLS, otherwise it would use the one
5
+        -- set in the global section (if any).
6
+        -- Note that old-style SSL on port 5223 only supports one certificate, and will always
7
+        -- use the global one.
8
+        ssl = {
9
+                key = "/etc/prosody/certs/jitmeet.example.com.key";
10
+                certificate = "/etc/prosody/certs/jitmeet.example.com.crt";
11
+        }
12
+        -- we need bosh
13
+        modules_enabled = {
14
+            "bosh";
15
+            "pubsub";
16
+        }
17
+
18
+Component "conference.jitmeet.example.com" "muc"
19
+admins = { "focusUser@auth.jitmeet.example.com" }
20
+
21
+Component "jitsi-videobridge.jitmeet.example.com"
22
+    component_secret = "jitmeetSecret"
23
+
24
+VirtualHost "auth.jitmeet.example.com"
25
+        authentication = "internal_plain"
26
+
27
+Component "focus.jitmeet.example.com"
28
+    component_secret = "focusSecret"

+ 13
- 0
doc/debian/jitsi-meet/README View File

@@ -0,0 +1,13 @@
1
+Jitsi Meet
2
+
3
+====
4
+
5
+A WebRTC-powered multi-user videochat. For a live demo, check out either
6
+https://meet.estos.de/ or https://meet.jit.si/.
7
+
8
+Built using colibri.js[0] and strophe.jingle[1], powered by the jitsi-videobridge[2]
9
+
10
+
11
+[0] https://github.com/ESTOS/colibri.js
12
+[1] https://github.com/ESTOS/strophe.jingle
13
+[3] https://github.com/jitsi/jitsi-videobridge

+ 36
- 0
doc/debian/jitsi-meet/jitsi-meet.example View File

@@ -0,0 +1,36 @@
1
+server_names_hash_bucket_size 64;
2
+
3
+server {
4
+    listen 80;
5
+    server_name jitsi-meet.example.com;
6
+    return 301 https://$host$request_uri;
7
+}
8
+server {
9
+    listen 443 ssl;
10
+    server_name jitsi-meet.example.com;
11
+
12
+    ssl_certificate /var/lib/prosody/jitsi-meet.example.com.crt;
13
+    ssl_certificate_key /var/lib/prosody/jitsi-meet.example.com.key;
14
+
15
+    root /usr/share/jitsi-meet;
16
+    index index.html index.htm;
17
+
18
+    location /config.js {
19
+        alias /etc/jitsi/meet/jitsi-meet.example.com-config.js;
20
+    }
21
+
22
+    location ~ ^/([a-zA-Z0-9=\?]+)$ {
23
+        rewrite ^/(.*)$ / break;
24
+    }
25
+
26
+    location / {
27
+        ssi on;
28
+    }
29
+
30
+    # BOSH
31
+    location /http-bind {
32
+        proxy_pass      http://localhost:5280/http-bind;
33
+        proxy_set_header X-Forwarded-For $remote_addr;
34
+        proxy_set_header Host $http_host;
35
+    }
36
+}

+ 9
- 0
doc/example-config-files/config.js.example View File

@@ -0,0 +1,9 @@
1
+var config = {
2
+    hosts: {
3
+        domain: 'jitsi.example.com',
4
+        muc: 'conference.jitsi.example.com', // FIXME: use XEP-0030
5
+        bridge: 'jitsi-videobridge.jitsi.example.com' // FIXME: use XEP-0030
6
+    },
7
+    useNicks: false,
8
+    bosh: '//jitsi.example.com/http-bind' // FIXME: use xep-0156 for that
9
+};

+ 33
- 0
doc/example-config-files/jitsi.example.com.example View File

@@ -0,0 +1,33 @@
1
+server {
2
+    listen 80;
3
+
4
+    server_name jitsi.example.com;
5
+    # set the root
6
+    root /srv/jitsi.example.com;
7
+    index index.html;
8
+
9
+    location ~ ^/([a-zA-Z0-9=\?]+)$ {
10
+        rewrite ^/(.*)$ / break;
11
+        }
12
+
13
+    location / {
14
+        ssi on;
15
+    }
16
+
17
+    # BOSH
18
+    location /http-bind {
19
+        proxy_pass      http://localhost:5280/http-bind;
20
+        proxy_set_header X-Forwarded-For $remote_addr;
21
+        proxy_set_header Host $http_host;
22
+    }
23
+
24
+    # xmpp websockets
25
+    location /xmpp-websocket {
26
+        proxy_pass http://localhost:5280;
27
+        proxy_http_version 1.1;
28
+        proxy_set_header Upgrade $http_upgrade;
29
+        proxy_set_header Connection "upgrade";
30
+        proxy_set_header Host $host;
31
+        tcp_nodelay on;
32
+    }
33
+}

+ 54
- 0
doc/example-config-files/nginx.conf.example View File

@@ -0,0 +1,54 @@
1
+user www-data;
2
+worker_processes  1;
3
+
4
+error_log  /var/log/nginx/error.log;
5
+pid        /var/run/nginx.pid;
6
+
7
+events {
8
+    worker_connections  1024;
9
+    # multi_accept on;
10
+}
11
+
12
+http {
13
+    include       /etc/nginx/mime.types;
14
+
15
+    access_log	/var/log/nginx/access.log;
16
+
17
+    sendfile        on;
18
+    #tcp_nopush     on;
19
+
20
+    #keepalive_timeout  0;
21
+    keepalive_timeout  65;
22
+    tcp_nodelay        on;
23
+
24
+    tcp_nopush on;
25
+    types_hash_max_size 2048;
26
+    server_names_hash_bucket_size 64;
27
+
28
+    gzip  on;
29
+    gzip_disable "MSIE [1-6]\.(?!.*SV1)";
30
+
31
+    include /etc/nginx/conf.d/*.conf;
32
+    include /etc/nginx/sites-enabled/*;
33
+}
34
+
35
+# mail {
36
+#     # See sample authentication script at:
37
+#     # http://wiki.nginx.org/NginxImapAuthenticateWithApachePhpScript
38
+# 
39
+#     # auth_http localhost/auth.php;
40
+#     # pop3_capabilities "TOP" "USER";
41
+#     # imap_capabilities "IMAP4rev1" "UIDPLUS";
42
+# 
43
+#     server {
44
+#         listen     localhost:110;
45
+#         protocol   pop3;
46
+#         proxy      on;
47
+#     }
48
+# 
49
+#     server {
50
+#         listen     localhost:143;
51
+#         protocol   imap;
52
+#         proxy      on;
53
+#     }
54
+# }

+ 205
- 0
doc/example-config-files/prosody.cfg.lua.example View File

@@ -0,0 +1,205 @@
1
+-- Prosody XMPP Server Configuration
2
+--
3
+-- Information on configuring Prosody can be found on our
4
+-- website at http://prosody.im/doc/configure
5
+--
6
+-- Tip: You can check that the syntax of this file is correct
7
+-- when you have finished by running: prosodyctl check config
8
+-- If there are any errors, it will let you know what and where
9
+-- they are, otherwise it will keep quiet.
10
+--
11
+-- Good luck, and happy Jabbering!
12
+
13
+
14
+---------- Server-wide settings ----------
15
+-- Settings in this section apply to the whole server and are the default settings
16
+-- for any virtual hosts
17
+
18
+-- This is a (by default, empty) list of accounts that are admins
19
+-- for the server. Note that you must create the accounts separately
20
+-- (see http://prosody.im/doc/creating_accounts for info)
21
+-- Example: admins = { "user1@example.com", "user2@example.net" }
22
+admins = { }
23
+daemonize = true
24
+cross_domain_bosh = true;
25
+component_ports = { 5347 }
26
+--component_interface = "192.168.0.10"
27
+
28
+-- Enable use of libevent for better performance under high load
29
+-- For more information see: http://prosody.im/doc/libevent
30
+--use_libevent = true
31
+
32
+-- This is the list of modules Prosody will load on startup.
33
+-- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
34
+-- Documentation on modules can be found at: http://prosody.im/doc/modules
35
+modules_enabled = {
36
+
37
+	-- Generally required
38
+		"roster"; -- Allow users to have a roster. Recommended ;)
39
+		"saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
40
+		"tls"; -- Add support for secure TLS on c2s/s2s connections
41
+		"dialback"; -- s2s dialback support
42
+		"disco"; -- Service discovery
43
+		"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
44
+
45
+	-- Not essential, but recommended
46
+		"private"; -- Private XML storage (for room bookmarks, etc.)
47
+		"vcard"; -- Allow users to set vCards
48
+	
49
+	-- These are commented by default as they have a performance impact
50
+		--"privacy"; -- Support privacy lists
51
+		"compression"; -- Stream compression (requires the lua-zlib package installed)
52
+
53
+	-- Nice to have
54
+		"version"; -- Replies to server version requests
55
+		"uptime"; -- Report how long server has been running
56
+		"time"; -- Let others know the time here on this server
57
+		"ping"; -- Replies to XMPP pings with pongs
58
+		"pep"; -- Enables users to publish their mood, activity, playing music and more
59
+		"register"; -- Allow users to register on this server using a client and change passwords
60
+
61
+	-- Admin interfaces
62
+		"admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
63
+		--"admin_telnet"; -- Opens telnet console interface on localhost port 5582
64
+
65
+	-- HTTP modules
66
+		"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
67
+		--"http_files"; -- Serve static files from a directory over HTTP
68
+
69
+	-- Other specific functionality
70
+		--"groups"; -- Shared roster support
71
+		--"announce"; -- Send announcement to all online users
72
+		--"welcome"; -- Welcome users who register accounts
73
+		--"watchregistrations"; -- Alert admins of registrations
74
+		--"motd"; -- Send a message to users when they log in
75
+		--"legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
76
+	-- jitsi
77
+		"smacks";
78
+		"carbons";
79
+		"mam";
80
+		"lastactivity";
81
+		"offline";
82
+		"pubsub";
83
+		"adhoc";
84
+		"websocket";
85
+		"http_altconnect";
86
+}
87
+
88
+-- These modules are auto-loaded, but should you want
89
+-- to disable them then uncomment them here:
90
+modules_disabled = {
91
+	-- "offline"; -- Store offline messages
92
+	-- "c2s"; -- Handle client connections
93
+	-- "s2s"; -- Handle server-to-server connections
94
+}
95
+
96
+-- Disable account creation by default, for security
97
+-- For more information see http://prosody.im/doc/creating_accounts
98
+allow_registration = false
99
+
100
+-- These are the SSL/TLS-related settings. If you don't want
101
+-- to use SSL/TLS, you may comment or remove this
102
+ssl = {
103
+    key = "/etc/prosody/certs/localhost.key";
104
+    certificate = "/etc/prosody/certs/localhost.crt";
105
+}
106
+
107
+-- Force clients to use encrypted connections? This option will
108
+-- prevent clients from authenticating unless they are using encryption.
109
+
110
+-- c2s_require_encryption = true
111
+
112
+-- Force certificate authentication for server-to-server connections?
113
+-- This provides ideal security, but requires servers you communicate
114
+-- with to support encryption AND present valid, trusted certificates.
115
+-- NOTE: Your version of LuaSec must support certificate verification!
116
+-- For more information see http://prosody.im/doc/s2s#security
117
+
118
+-- s2s_secure_auth = false
119
+
120
+-- Many servers don't support encryption or have invalid or self-signed
121
+-- certificates. You can list domains here that will not be required to
122
+-- authenticate using certificates. They will be authenticated using DNS.
123
+
124
+--s2s_insecure_domains = { "gmail.com" }
125
+
126
+-- Even if you leave s2s_secure_auth disabled, you can still require valid
127
+-- certificates for some domains by specifying a list here.
128
+
129
+--s2s_secure_domains = { "jabber.org" }
130
+
131
+-- Required for init scripts and prosodyctl
132
+pidfile = "/var/run/prosody/prosody.pid"
133
+
134
+-- Select the authentication backend to use. The 'internal' providers
135
+-- use Prosody's configured data storage to store the authentication data.
136
+-- To allow Prosody to offer secure authentication mechanisms to clients, the
137
+-- default provider stores passwords in plaintext. If you do not trust your
138
+-- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed
139
+-- for information about using the hashed backend.
140
+
141
+-- authentication = "internal_plain"
142
+authentication = "internal_hashed"
143
+
144
+-- Select the storage backend to use. By default Prosody uses flat files
145
+-- in its configured data directory, but it also supports more backends
146
+-- through modules. An "sql" backend is included by default, but requires
147
+-- additional dependencies. See http://prosody.im/doc/storage for more info.
148
+
149
+--storage = "sql" -- Default is "internal"
150
+
151
+-- For the "sql" backend, you can uncomment *one* of the below to configure:
152
+--sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.
153
+--sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
154
+--sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }
155
+
156
+-- Logging configuration
157
+-- For advanced logging see http://prosody.im/doc/logging
158
+log = {
159
+	info = "/var/log/prosody/prosody.log"; -- Change 'info' to 'debug' for verbose logging
160
+	error = "/var/log/prosody/prosody.err";
161
+	"*syslog";
162
+}
163
+
164
+----------- Virtual hosts -----------
165
+-- You need to add a VirtualHost entry for each domain you wish Prosody to serve.
166
+-- Settings under each VirtualHost entry apply *only* to that host.
167
+
168
+--VirtualHost "localhost"
169
+
170
+VirtualHost "jitsi.example.com"
171
+	-- enabled = false -- Remove this line to enable this host
172
+	authentication = "anonymous"
173
+	-- Assign this host a certificate for TLS, otherwise it would use the one
174
+	-- set in the global section (if any).
175
+	-- Note that old-style SSL on port 5223 only supports one certificate, and will always
176
+	-- use the global one.
177
+	ssl = {
178
+		key = "/var/lib/prosody/jitsi.example.com.key";
179
+		certificate = "/var/lib/prosody/jitsi.example.com.crt";
180
+	}
181
+
182
+------ Components ------
183
+-- You can specify components to add hosts that provide special services,
184
+-- like multi-user conferences, and transports.
185
+-- For more information on components, see http://prosody.im/doc/components
186
+
187
+---Set up a MUC (multi-user chat) room server on conference.example.com:
188
+--Component "conference.example.com" "muc"
189
+
190
+-- Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
191
+--Component "proxy.example.com" "proxy65"
192
+
193
+---Set up an external component (default component port is 5347)
194
+--
195
+-- External components allow adding various services, such as gateways/
196
+-- transports to other networks like ICQ, MSN and Yahoo. For more info
197
+-- see: http://prosody.im/doc/components#adding_an_external_component
198
+--
199
+--Component "gateway.example.com"
200
+--	component_secret = "password"
201
+
202
+Component "conference.jitsi.example.com" "muc"
203
+
204
+Component "jitsi-videobridge.jitsi.example.com"
205
+    component_secret = "IfGaish6"

+ 29
- 0
doc/influxdb.md View File

@@ -0,0 +1,29 @@
1
+# Overview
2
+Jitsi Meet supports logging to an [InfluxDB](http://influxdb.com/) database.
3
+
4
+# Configuration
5
+The following needs to be done to enable this functionality.
6
+
7
+## Install InfluxDB
8
+The details are outside the scope of the document, see http://influxdb.com/download/ .
9
+
10
+## Create an InfluxDB database
11
+Use the InfluxDB admin interface (running on port 8083) and create a database. In this example we name it <code>jitsi_database</code>
12
+
13
+## Enable logging for Jitsi Videobridge
14
+Add the following properties to <code>/usr/share/jitsi-videobridge/.sip-communicator/sip-communicator.properties</code>.
15
+
16
+- org.jitsi.videobridge.log.INFLUX_DB_ENABLED=true
17
+- org.jitsi.videobridge.log.INFLUX_URL_BASE=http://influxdb.example.com:8086
18
+- org.jitsi.videobridge.log.INFLUX_DATABASE=jitsi_database
19
+- org.jitsi.videobridge.log.INFLUX_USER=user
20
+- org.jitsi.videobridge.log.INFLUX_PASS=pass
21
+
22
+## Enable logging for Jicofo
23
+Add the same properties as above to <code>/usr/share/jicofo/.sip-communicator/sip-communicator.properties</code>.
24
+
25
+## Enable logging for Jitsi Meet itself
26
+Change "logStats" to "true" in <code>/etc/jitsi/meet/you-domain.config.js</code> or the <code>config.js</code> file used in your installation.
27
+
28
+# User interface
29
+You can explore the database using the [Jiloin](https://github.com/jitsi/jiloin) web interface.

+ 223
- 0
doc/manual-install.md View File

@@ -0,0 +1,223 @@
1
+# Server Installation for Jitsi Meet
2
+
3
+This describes configuring a server `jitsi.example.com` running Debian or a Debian Derivative. You will need to
4
+change references to that to match your host, and generate some passwords for
5
+`YOURSECRET1`, `YOURSECRET2`, `YOURSECRET3` and `YOURSECRET4`.
6
+
7
+There are also some complete [example config files](https://github.com/jitsi/jitsi-meet/tree/master/doc/example-config-files/) available, mentioned in each section.
8
+
9
+## Install prosody
10
+```sh
11
+apt-get install prosody
12
+```
13
+
14
+## Configure prosody
15
+Add config file in `/etc/prosody/conf.avail/jitsi.example.com.cfg.lua` :
16
+
17
+- add your domain virtual host section:
18
+
19
+```
20
+VirtualHost "jitsi.example.com"
21
+    authentication = "anonymous"
22
+    ssl = {
23
+        key = "/var/lib/prosody/jitsi.example.com.key";
24
+        certificate = "/var/lib/prosody/jitsi.example.com.crt";
25
+    }
26
+    modules_enabled = {
27
+        "bosh";
28
+        "pubsub";
29
+    }
30
+```
31
+- add domain with authentication for conference focus user:
32
+```
33
+VirtualHost "auth.jitsi.example.com"
34
+    authentication = "internal_plain"
35
+```
36
+- add focus user to server admins:
37
+```
38
+admins = { "focus@auth.jitsi.example.com" }
39
+```
40
+- and finally configure components:
41
+```
42
+Component "conference.jitsi.example.com" "muc"
43
+Component "jitsi-videobridge.jitsi.example.com"
44
+    component_secret = "YOURSECRET1"
45
+Component "focus.jitsi.example.com"
46
+    component_secret = "YOURSECRET2"
47
+```
48
+
49
+Add link for the added configuration
50
+```sh
51
+ln -s /etc/prosody/conf.avail/jitsi.example.com.cfg.lua /etc/prosody/conf.d/jitsi.example.com.cfg.lua
52
+```
53
+
54
+Generate certs for the domain:
55
+```sh
56
+prosodyctl cert generate jitsi.example.com
57
+```
58
+
59
+Create conference focus user:
60
+```sh
61
+prosodyctl register focus auth.jitsi.example.com YOURSECRET3
62
+```
63
+
64
+Restart prosody XMPP server with the new config
65
+```sh
66
+prosodyctl restart
67
+```
68
+
69
+## Install nginx
70
+```sh
71
+apt-get install nginx
72
+```
73
+
74
+Add a new file `jitsi.example.com` in `/etc/nginx/sites-available` (see also the example config file):
75
+```
76
+server_names_hash_bucket_size 64;
77
+
78
+server {
79
+    listen 80;
80
+    server_name jitsi.example.com;
81
+    # set the root
82
+    root /srv/jitsi.example.com;
83
+    index index.html;
84
+    location ~ ^/([a-zA-Z0-9=\?]+)$ {
85
+        rewrite ^/(.*)$ / break;
86
+    }
87
+    location / {
88
+        ssi on;
89
+    }
90
+    # BOSH
91
+    location /http-bind {
92
+        proxy_pass      http://localhost:5280/http-bind;
93
+        proxy_set_header X-Forwarded-For $remote_addr;
94
+        proxy_set_header Host $http_host;
95
+    }
96
+}
97
+```
98
+
99
+Add link for the added configuration
100
+```sh
101
+cd /etc/nginx/sites-enabled
102
+ln -s ../sites-available/jitsi.example.com jitsi.example.com
103
+```
104
+
105
+## Install Jitsi Videobridge
106
+```sh
107
+wget https://download.jitsi.org/jitsi-videobridge/linux/jitsi-videobridge-linux-{arch-buildnum}.zip
108
+unzip jitsi-videobridge-linux-{arch-buildnum}.zip
109
+```
110
+
111
+Install JRE if missing:
112
+```
113
+apt-get install default-jre
114
+```
115
+
116
+_NOTE: When installing on older Debian releases keep in mind that you need JRE >= 1.7._
117
+
118
+In the user home that will be starting Jitsi Videobridge create `.sip-communicator` folder and add the file `sip-communicator.properties` with one line in it:
119
+```
120
+org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false
121
+```
122
+
123
+Start the videobridge with:
124
+```sh
125
+./jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 &
126
+```
127
+Or autostart it by adding the line in `/etc/rc.local`:
128
+```sh
129
+/bin/bash /root/jitsi-videobridge-linux-{arch-buildnum}/jvb.sh --host=localhost --domain=jitsi.example.com --port=5347 --secret=YOURSECRET1 </dev/null >> /var/log/jvb.log 2>&1
130
+```
131
+
132
+## Install Jitsi Conference Focus (jicofo)
133
+
134
+Install JDK and Ant if missing:
135
+```
136
+apt-get install default-jdk ant
137
+```
138
+
139
+_NOTE: When installing on older Debian releases keep in mind that you need JDK >= 1.7._
140
+
141
+Clone source from Github repo:
142
+```sh
143
+git clone https://github.com/jitsi/jicofo.git
144
+```
145
+Build distribution package. Replace {os-name} with one of: 'lin', 'lin64', 'macosx', 'win', 'win64'.
146
+```sh
147
+cd jicofo
148
+ant dist.{os-name}
149
+```
150
+Run jicofo:
151
+```sh
152
+cd dist/{os-name}'
153
+./jicofo.sh --domain=jitsi.example.com --secret=YOURSECRET2 --user_domain=auth.jitsi.example.com --user_name=focus --user_password=YOURSECRET3
154
+```
155
+
156
+## Deploy Jitsi Meet
157
+Checkout and configure Jitsi Meet:
158
+```sh
159
+cd /srv
160
+git clone https://github.com/jitsi/jitsi-meet.git
161
+mv jitsi-meet/ jitsi.example.com
162
+```
163
+
164
+Edit host names in `/srv/jitsi.example.com/config.js` (see also the example config file):
165
+```
166
+var config = {
167
+    hosts: {
168
+        domain: 'jitsi.example.com',
169
+        muc: 'conference.jitsi.example.com',
170
+        bridge: 'jitsi-videobridge.jitsi.example.com'
171
+    },
172
+    useNicks: false,
173
+    bosh: '//jitsi.example.com/http-bind', // FIXME: use xep-0156 for that
174
+    desktopSharing: 'false' // Desktop sharing method. Can be set to 'ext', 'webrtc' or false to disable.
175
+    //chromeExtensionId: 'diibjkoicjeejcmhdnailmkgecihlobk', // Id of desktop streamer Chrome extension
176
+    //minChromeExtVersion: '0.1' // Required version of Chrome extension
177
+};
178
+```
179
+
180
+Restart nginx to get the new configuration:
181
+```sh
182
+invoke-rc.d nginx restart
183
+```
184
+
185
+## Running behind NAT
186
+In case of videobridge being installed on a machine behind NAT, add the following extra lines to the file `~/.sip-communicator/sip-communicator.properties` (in the home of user running the videobridge):
187
+```
188
+org.jitsi.videobridge.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
189
+org.jitsi.videobridge.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
190
+```
191
+
192
+So the file should look like this at the end:
193
+```
194
+org.jitsi.impl.neomedia.transform.srtp.SRTPCryptoContext.checkReplay=false
195
+org.jitsi.videobridge.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
196
+org.jitsi.videobridge.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>
197
+```
198
+
199
+# Hold your first conference
200
+You are now all set and ready to have your first meet by going to http://jitsi.example.com
201
+
202
+
203
+## Enabling recording
204
+Currently recording is only supported for linux-64 and macos. To enable it, add
205
+the following properties to sip-communicator.properties:
206
+```
207
+org.jitsi.videobridge.ENABLE_MEDIA_RECORDING=true
208
+org.jitsi.videobridge.MEDIA_RECORDING_PATH=/path/to/recordings/dir
209
+org.jitsi.videobridge.MEDIA_RECORDING_TOKEN=secret
210
+```
211
+
212
+where /path/to/recordings/dir is the path to a pre-existing directory where recordings
213
+will be stored (needs to be writeable by the user running jitsi-videobridge),
214
+and "secret" is a string which will be used for authentication.
215
+
216
+Then, edit the Jitsi-Meet config.js file and set:
217
+```
218
+enableRecording: true
219
+```
220
+
221
+Restart jitsi-videobridge and start a new conference (making sure that the page
222
+is reloaded with the new config.js) -- the organizer of the conference should
223
+now have a "recording" button in the floating menu, near the "mute" button.

+ 74
- 0
doc/quick-install.md View File

@@ -0,0 +1,74 @@
1
+# Jitsi Meet quick install
2
+
3
+This document describes the required steps for a quick Jitsi Meet installation on a Debian based GNU/Linux system.
4
+
5
+N.B.: All commands are supposed to be run by root. If you are logged in as a regular user with sudo rights, please prepend ___sudo___ to each of the commands.
6
+
7
+## Basic Jitsi Meet install
8
+
9
+### Add the repository
10
+```sh
11
+echo 'deb http://download.jitsi.org/nightly/deb unstable/' >> /etc/apt/sources.list
12
+wget -qO - https://download.jitsi.org/nightly/deb/unstable/archive.key | apt-key add -
13
+```
14
+
15
+### Update the package lists
16
+
17
+```sh
18
+apt-get update
19
+```
20
+
21
+### Install Jitsi Meet
22
+
23
+```sh
24
+apt-get -y install jitsi-meet
25
+```
26
+
27
+During the installation, you will be asked to enter the hostname of the Jitsi Meet instance. If you have a FQDN hostname for the instance already set up in DNS, enter it there. If you don't have a resolvable hostname, you can enter the IP address of the machine (if it is static or doesn't change).
28
+
29
+This hostname (or IP address) will be used for virtualhost configuration inside the Jitsi Meet and also, you and your correspondents will be using it to access the web conferences.
30
+
31
+### Open a conference
32
+
33
+Launch a web browser (Chrome, Chromium or latest Opera) and enter in the URL bar the hostname (or IP address) you used in the previous step.
34
+
35
+Confirm that you trust the self-signed certificate of the newly installed Jitsi Meet.
36
+
37
+Enjoy!
38
+
39
+## Adding sip-gateway to Jitsi Meet
40
+
41
+### Install Jigasi
42
+
43
+```sh
44
+apt-get -y install jigasi
45
+```
46
+or
47
+
48
+```sh
49
+wget https://download.jitsi.org/jigasi_1.0-1_amd64.deb
50
+dpkg -i jigasi_1.0-1_amd64.deb
51
+```
52
+
53
+During the installation, you will be asked to enter your SIP account and password. This account will be used to invite the other SIP participants.
54
+
55
+### Reload Jitsi Meet
56
+
57
+Launch again a browser with the Jitsi Meet URL and you'll see a telephone icon on the right end of the toolbar. Use it to invite SIP accounts to join the current conference.
58
+
59
+Enjoy!
60
+
61
+## Uninstall
62
+
63
+```sh
64
+apt-get purge jigasi jitsi-meet jicofo jitsi-videobridge
65
+```
66
+
67
+Sometimes the following packages will fail to uninstall properly:
68
+
69
+- jigasi
70
+- jitsi-videobridge
71
+
72
+When this happens, just run the uninstall command a second time and it should be ok.
73
+
74
+The reason for failure is that sometimes, the uninstall script is faster than the process that stops the daemons. The second run of the uninstall command fixes this, as by then the jigasi or jvb daemons are already stopped.

+ 355
- 0
external_api.js View File

@@ -0,0 +1,355 @@
1
+/**
2
+ * Implements API class that embeds Jitsi Meet in external applications.
3
+ */
4
+var JitsiMeetExternalAPI = (function()
5
+{
6
+    /**
7
+     * The minimum width for the Jitsi Meet frame
8
+     * @type {number}
9
+     */
10
+    var MIN_WIDTH = 790;
11
+
12
+    /**
13
+     * The minimum height for the Jitsi Meet frame
14
+     * @type {number}
15
+     */
16
+    var MIN_HEIGHT = 300;
17
+
18
+    /**
19
+     * Constructs new API instance. Creates iframe element that loads
20
+     * Jitsi Meet.
21
+     * @param domain the domain name of the server that hosts the conference
22
+     * @param room_name the name of the room to join
23
+     * @param width width of the iframe
24
+     * @param height height of the iframe
25
+     * @param parent_node the node that will contain the iframe
26
+     * @param filmStripOnly if the value is true only the small videos will be
27
+     * visible.
28
+     * @constructor
29
+     */
30
+    function JitsiMeetExternalAPI(domain, room_name, width, height, parentNode,
31
+        filmStripOnly) {
32
+        if(!width || width < MIN_WIDTH)
33
+            width = MIN_WIDTH;
34
+        if(!height || height < MIN_HEIGHT)
35
+            height = MIN_HEIGHT;
36
+
37
+        this.parentNode = null;
38
+        if (parentNode) {
39
+            this.parentNode = parentNode;
40
+        } else {
41
+            var scriptTag = document.scripts[document.scripts.length - 1];
42
+            this.parentNode = scriptTag.parentNode;
43
+        }
44
+
45
+        this.iframeHolder =
46
+            this.parentNode.appendChild(document.createElement("div"));
47
+        this.iframeHolder.id = "jitsiConference" + JitsiMeetExternalAPI.id;
48
+        this.iframeHolder.style.width = width + "px";
49
+        this.iframeHolder.style.height = height + "px";
50
+        this.frameName = "jitsiConferenceFrame" + JitsiMeetExternalAPI.id;
51
+        this.url = "//" + domain + "/";
52
+        if(room_name)
53
+            this.url += room_name;
54
+        this.url += "#external=true";
55
+        if(filmStripOnly)
56
+            this.url += "&interfaceConfig.filmStripOnly=true";
57
+
58
+        JitsiMeetExternalAPI.id++;
59
+
60
+        this.frame = document.createElement("iframe");
61
+        this.frame.src = this.url;
62
+        this.frame.name = this.frameName;
63
+        this.frame.id = this.frameName;
64
+        this.frame.width = "100%";
65
+        this.frame.height = "100%";
66
+        this.frame.setAttribute("allowFullScreen","true");
67
+        this.frame = this.iframeHolder.appendChild(this.frame);
68
+
69
+
70
+        this.frameLoaded = false;
71
+        this.initialCommands = [];
72
+        this.eventHandlers = {};
73
+        this.initListeners();
74
+    }
75
+
76
+    /**
77
+     * Last id of api object
78
+     * @type {number}
79
+     */
80
+    JitsiMeetExternalAPI.id = 0;
81
+
82
+    /**
83
+     * Sends the passed object to Jitsi Meet
84
+     * @param object the object to be sent
85
+     */
86
+    JitsiMeetExternalAPI.prototype.sendMessage = function(object) {
87
+        if (this.frameLoaded) {
88
+            this.frame.contentWindow.postMessage(
89
+                JSON.stringify(object), this.frame.src);
90
+        }
91
+        else {
92
+            this.initialCommands.push(object);
93
+        }
94
+
95
+    };
96
+
97
+    /**
98
+     * Executes command. The available commands are:
99
+     * displayName - sets the display name of the local participant to the value
100
+     * passed in the arguments array.
101
+     * toggleAudio - mutes / unmutes audio with no arguments
102
+     * toggleVideo - mutes / unmutes video with no arguments
103
+     * filmStrip - hides / shows the film strip with no arguments
104
+     * If the command doesn't require any arguments the parameter should be set
105
+     * to empty array or it may be omitted.
106
+     * @param name the name of the command
107
+     * @param arguments array of arguments
108
+     */
109
+    JitsiMeetExternalAPI.prototype.executeCommand = function(name,
110
+                                                             argumentsList) {
111
+        var argumentsArray = argumentsList;
112
+        if (!argumentsArray)
113
+            argumentsArray = [];
114
+        var object = {type: "command", action: "execute"};
115
+        object[name] = argumentsArray;
116
+        this.sendMessage(object);
117
+    };
118
+
119
+    /**
120
+     * Executes commands. The available commands are:
121
+     * displayName - sets the display name of the local participant to the value
122
+     * passed in the arguments array.
123
+     * toggleAudio - mutes / unmutes audio with no arguments
124
+     * toggleVideo - mutes / unmutes video with no arguments
125
+     * filmStrip - hides / shows the film strip with no arguments
126
+     * @param object the object with commands to be executed. The keys of the
127
+     * object are the commands that will be executed and the values are the
128
+     * arguments for the command.
129
+     */
130
+    JitsiMeetExternalAPI.prototype.executeCommands = function (object) {
131
+        object.type = "command";
132
+        object.action = "execute";
133
+        this.sendMessage(object);
134
+    };
135
+
136
+    /**
137
+     * Adds event listeners to Meet Jitsi. The object key should be the name of
138
+     * the event and value - the listener.
139
+     * Currently we support the following
140
+     * events:
141
+     * incomingMessage - receives event notifications about incoming
142
+     * messages. The listener will receive object with the following structure:
143
+     * {{
144
+     *  "from": from,//JID of the user that sent the message
145
+     *  "nick": nick,//the nickname of the user that sent the message
146
+     *  "message": txt//the text of the message
147
+     * }}
148
+     * outgoingMessage - receives event notifications about outgoing
149
+     * messages. The listener will receive object with the following structure:
150
+     * {{
151
+     *  "message": txt//the text of the message
152
+     * }}
153
+     * displayNameChanged - receives event notifications about display name
154
+     * change. The listener will receive object with the following structure:
155
+     * {{
156
+     * jid: jid,//the JID of the participant that changed his display name
157
+     * displayname: displayName //the new display name
158
+     * }}
159
+     * participantJoined - receives event notifications about new participant.
160
+     * The listener will receive object with the following structure:
161
+     * {{
162
+     * jid: jid //the jid of the participant
163
+     * }}
164
+     * participantLeft - receives event notifications about participant that left room.
165
+     * The listener will receive object with the following structure:
166
+     * {{
167
+     * jid: jid //the jid of the participant
168
+     * }}
169
+     * @param object
170
+     */
171
+    JitsiMeetExternalAPI.prototype.addEventListeners
172
+        = function (object) {
173
+
174
+        var message = {type: "event", action: "add", events: []};
175
+        for(var i in object)
176
+        {
177
+            message.events.push(i);
178
+            this.eventHandlers[i] = object[i];
179
+        }
180
+        this.sendMessage(message);
181
+    };
182
+
183
+    /**
184
+     * Adds event listeners to Meet Jitsi. Currently we support the following
185
+     * events:
186
+     * incomingMessage - receives event notifications about incoming
187
+     * messages. The listener will receive object with the following structure:
188
+     * {{
189
+     *  "from": from,//JID of the user that sent the message
190
+     *  "nick": nick,//the nickname of the user that sent the message
191
+     *  "message": txt//the text of the message
192
+     * }}
193
+     * outgoingMessage - receives event notifications about outgoing
194
+     * messages. The listener will receive object with the following structure:
195
+     * {{
196
+     *  "message": txt//the text of the message
197
+     * }}
198
+     * displayNameChanged - receives event notifications about display name
199
+     * change. The listener will receive object with the following structure:
200
+     * {{
201
+     * jid: jid,//the JID of the participant that changed his display name
202
+     * displayname: displayName //the new display name
203
+     * }}
204
+     * participantJoined - receives event notifications about new participant.
205
+     * The listener will receive object with the following structure:
206
+     * {{
207
+     * jid: jid //the jid of the participant
208
+     * }}
209
+     * participantLeft - receives event notifications about participant that left room.
210
+     * The listener will receive object with the following structure:
211
+     * {{
212
+     * jid: jid //the jid of the participant
213
+     * }}
214
+     * @param event the name of the event
215
+     * @param listener the listener
216
+     */
217
+    JitsiMeetExternalAPI.prototype.addEventListener
218
+        = function (event, listener) {
219
+
220
+        var message = {type: "event", action: "add", events: [event]};
221
+        this.eventHandlers[event] = listener;
222
+        this.sendMessage(message);
223
+    };
224
+
225
+    /**
226
+     * Removes event listener.
227
+     * @param event the name of the event.
228
+     */
229
+    JitsiMeetExternalAPI.prototype.removeEventListener
230
+        = function (event) {
231
+        if(!this.eventHandlers[event])
232
+        {
233
+            console.error("The event " + event + " is not registered.");
234
+            return;
235
+        }
236
+        var message = {type: "event", action: "remove", events: [event]};
237
+        delete this.eventHandlers[event];
238
+        this.sendMessage(message);
239
+    };
240
+
241
+    /**
242
+     * Removes event listeners.
243
+     * @param events array with the names of the events.
244
+     */
245
+    JitsiMeetExternalAPI.prototype.removeEventListeners
246
+        = function (events) {
247
+        var eventsArray = [];
248
+        for(var i = 0; i < events.length; i++)
249
+        {
250
+            var event = events[i];
251
+            if(!this.eventHandlers[event])
252
+            {
253
+                console.error("The event " + event + " is not registered.");
254
+                continue;
255
+            }
256
+            delete this.eventHandlers[event];
257
+            eventsArray.push(event);
258
+        }
259
+
260
+        if(eventsArray.length > 0)
261
+        {
262
+            this.sendMessage(
263
+                {type: "event", action: "remove", events: eventsArray});
264
+        }
265
+
266
+    };
267
+
268
+    /**
269
+     * Processes message events sent from Jitsi Meet
270
+     * @param event the event
271
+     */
272
+    JitsiMeetExternalAPI.prototype.processMessage = function(event) {
273
+        var message;
274
+        try {
275
+            message = JSON.parse(event.data);
276
+        } catch (e) {}
277
+
278
+        if(!message.type) {
279
+            console.error("Message without type is received.");
280
+            return;
281
+        }
282
+        switch (message.type) {
283
+            case "system":
284
+                if(message.loaded) {
285
+                    this.onFrameLoaded();
286
+                }
287
+                break;
288
+            case "event":
289
+                if(message.action != "result" ||
290
+                    !message.event || !this.eventHandlers[message.event]) {
291
+                    console.warn("The received event cannot be parsed.");
292
+                    return;
293
+                }
294
+                this.eventHandlers[message.event](message.result);
295
+                break;
296
+            default :
297
+                console.error("Unknown message type.");
298
+                return;
299
+        }
300
+    };
301
+
302
+    /**
303
+     * That method is called when the Jitsi Meet is loaded. Executes saved
304
+     * commands that are send before the frame was loaded.
305
+     */
306
+    JitsiMeetExternalAPI.prototype.onFrameLoaded = function () {
307
+        this.frameLoaded = true;
308
+        for (var i = 0; i < this.initialCommands.length; i++) {
309
+            this.sendMessage(this.initialCommands[i]);
310
+        }
311
+        this.initialCommands = null;
312
+    };
313
+
314
+    /**
315
+     * Setups the listener for message events from Jitsi Meet.
316
+     */
317
+    JitsiMeetExternalAPI.prototype.initListeners = function () {
318
+        var self = this;
319
+        this.eventListener = function (event) {
320
+            self.processMessage(event);
321
+        };
322
+        if (window.addEventListener) {
323
+            window.addEventListener('message',
324
+                this.eventListener, false);
325
+        }
326
+        else {
327
+            window.attachEvent('onmessage', this.eventListener);
328
+        }
329
+    };
330
+
331
+    /**
332
+     * Removes the listeners and removes the Jitsi Meet frame.
333
+     */
334
+    JitsiMeetExternalAPI.prototype.dispose = function () {
335
+        if (window.removeEventListener) {
336
+            window.removeEventListener('message',
337
+                this.eventListener, false);
338
+        }
339
+        else {
340
+            window.detachEvent('onmessage',
341
+                this.eventListener);
342
+        }
343
+        var frame = document.getElementById(this.frameName);
344
+        if(frame)
345
+            frame.src = 'about:blank';
346
+        var self = this;
347
+        window.setTimeout(function () {
348
+                self.iframeHolder.removeChild(self.frame);
349
+                self.iframeHolder.parentNode.removeChild(self.iframeHolder);
350
+        }, 10);
351
+    };
352
+
353
+    return JitsiMeetExternalAPI;
354
+
355
+})();

BIN
favicon.ico View File


BIN
fonts/jitsi.eot View File


+ 39
- 0
fonts/jitsi.svg View File

@@ -0,0 +1,39 @@
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="jitsi" 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;" d="" horiz-adv-x="512" />
10
+<glyph unicode="&#xe600;" d="M831.678 16.386h-144.885v258.653c-45.729 29.159-41.794 84.953-24.574 109.307 11.939 16.905 22.43 34.662 23.663 57.004 0.423 8.241 8.303 19.031 15.847 23.364 26.122 15.037 38.223 39.632 50.12 65.116 3.143 6.714 7.392 13.187 12.3 18.753 8.471 9.686 12.295 19.264 6.115 31.922-1.466 2.972 1.318 8.326 2.779 12.362 4.335 12.106 10.326 23.745 13.169 36.148 3.522 15.399 5.398 31.305 6.244 47.086 0.379 6.543-6.074 13.574-5.351 19.986 3.486 32.030-14.612 56.346-24.785 84.189-12.509 34.28-37.036 55.732-58.681 81.26-4.074 4.843-5.225 13.125-5.563 19.942-0.722 14.63-6.752 21.875-22.048 19.898-6.161-0.805-12.808-2.526-18.474-1.019-4.969 1.316-12.408 6.288-12.702 10.13-1.553 19.393-8.285 22.577-28.098 19.305-12.406-2.062-28.527 9.134-40.677 17.587-10.15 7.049-18.941 10.065-30.751 7.175-4.928-1.187-11.598-0.973-15.716 1.466-4.461 2.634-8.837 4.226-13.169 5.119v0.722c-0.975 0-1.976-0.17-2.934-0.276-0.975 0.106-1.951 0.276-2.908 0.276v-0.722c-4.355-0.893-8.726-2.485-13.169-5.119-4.167-2.441-10.811-2.652-15.718-1.466-11.851 2.89-20.598-0.126-30.751-7.175-12.212-8.453-28.287-19.648-40.671-17.587-19.816 3.272-26.591 0.085-28.119-19.305-0.299-3.844-7.73-8.816-12.7-10.13-5.692-1.509-12.32 0.212-18.497 1.019-15.27 1.976-21.302-5.269-22.024-19.898-0.338-6.819-1.486-15.102-5.565-19.942-21.622-25.528-46.154-46.98-58.684-81.26-10.171-27.843-28.271-52.161-24.765-84.189 0.699-6.412-5.736-13.443-5.395-19.986 0.87-15.78 2.74-31.687 6.267-47.086 2.843-12.403 8.835-24.042 13.187-36.148 1.466-4.033 4.229-9.387 2.784-12.362-6.203-12.658-2.379-22.236 6.115-31.922 4.887-5.565 9.134-12.039 12.277-18.753 11.874-25.484 24.001-50.079 50.125-65.116 7.516-4.332 15.417-15.122 15.863-23.364 1.21-22.342 11.701-40.099 23.64-57.004 18.33-25.954 21.194-86.95-34.216-114.687-76.673-38.336-154.083-75.357-232.624-109.632-49.189-21.498-73.891-57.6-82.238-108.192-2.549-15.331-5.862-30.539-7.88-45.961-3.014-22.956-7.839-69.874-7.839-69.874h831.678v80.386zM1188.556 80.89h-144.89v-144.89h-147.481v144.89h-144.885v147.481h144.885v144.888h147.481v-144.888h144.89v-147.481z" horiz-adv-x="1189" />
11
+<glyph unicode="&#xe601;" d="M956.063 962.932h-819.824c-73.036 0-132.489-60.717-132.489-135.316v-540.205c0-74.537 59.453-135.246 132.489-135.246h35.826v-212.941l344.987 212.941h439.011c72.964 0 132.42 60.711 132.42 135.246v540.202c0 74.602-59.456 135.318-132.42 135.318zM496.5 293.887l-195.714-123.997v123.997h-158.261v527.257h807.189l0.064-527.255h-453.278zM239.062 715.554h605.126v-110.62h-605.126v110.62zM239.062 522.476h605.126v-110.615h-605.126v110.615z" horiz-adv-x="1088" />
12
+<glyph unicode="&#xe602;" d="M955.816 960.317h-822.841c-73.303 0-132.975-60.931-132.975-135.844v-542.186c0-74.851 59.672-135.785 132.975-135.785h822.841c73.239 0 132.916 60.934 132.916 135.785v542.186c0 74.913-59.677 135.844-132.916 135.844zM949.51 288.784h-810.226v529.223h810.164l0.062-529.223zM945.219 0.34c0-35.738-28.261-64.66-63.207-64.66h-675.228c-34.949 0-63.209 28.921-63.209 64.66v29.618c0 35.7 28.261 64.657 63.209 64.657h675.228c34.946 0 63.207-28.957 63.207-64.657v-29.618zM776.792 342.434l-302.669 302.605 112.411 112.316 302.545-302.602v-112.318z" horiz-adv-x="1089" />
13
+<glyph unicode="&#xe603;" d="M952.495 955.065h-818.689c-72.81 0-132.183-60.63-132.183-135.162v-750.719c0-74.473 59.372-135.101 132.183-135.101h818.686c72.936 0 132.314 60.625 132.314 135.101v750.722c0.003 74.532-59.378 135.159-132.311 135.159zM946.346 75.651h-806.14v737.822h806.015l0.126-737.822zM685.753 674.544h216.911v-566.758h-216.911v566.758zM428.672 546.002h216.911v-438.216h-216.911v438.216zM172.339 417.46h216.161v-309.677h-216.161v309.677z" horiz-adv-x="1088" />
14
+<glyph unicode="&#xe604;" d="M878.259 965.513c-163.545 0-296.573-133.036-296.573-296.612v-43.752h-448.909c-73.14 0-132.777-60.909-132.777-135.751v-412.768c0-74.777 59.637-135.678 132.777-135.678h564.152c73.265 0 132.919 60.901 132.919 135.678v412.768c0 70.054-52.267 127.895-119.040 135.009v44.494c0 92.367 75.154 167.49 167.451 167.49 92.305 0 167.462-75.12 167.462-167.49v-77.422c0-35.681 28.883-64.564 64.556-64.564 35.69 0 64.569 28.883 64.569 64.564v77.422c-0.003 163.576-133.028 296.612-296.587 296.612z" horiz-adv-x="1179" />
15
+<glyph unicode="&#xe605;" d="M1.518 641.614h277.533v319.798c0 0-78.033-8.102-176.18-111.633-98.139-103.529-101.353-208.165-101.353-208.165zM683.281 961.412h-339.684v-384.596l-342.080 0.251-1.515 3.468v-510.502c0-73.845 61.4-133.979 136.847-133.979h546.434c75.514 0 136.911 60.137 136.911 133.979v757.403c-0.003 73.843-61.397 133.976-136.914 133.976zM691.854 145.164h-572.848v92.788h572.845v-92.788zM691.854 338.802h-572.848v92.783h572.845v-92.783z" horiz-adv-x="820" />
16
+<glyph unicode="&#xe606;" d="M953.901 962.387h-819.775c-72.965 0-132.418-60.712-132.418-135.344v-540.168c0-74.567 59.453-135.279 132.418-135.279h35.823v-212.891l344.966 212.891h438.986c72.963 0 132.415 60.709 132.415 135.279v540.168c0.003 74.632-59.45 135.344-132.415 135.344zM494.429 293.354l-195.769-124.001v124.001h-158.184v527.252h807.078l0.124-527.252h-453.249z" horiz-adv-x="1089" />
17
+<glyph unicode="&#xe607;" d="M709.515 620.094v44.455c0 163.090-132.662 295.749-295.749 295.749-163.093 0-295.752-132.659-295.752-295.749v-44.455c-66.226-7.393-118.013-64.915-118.013-134.607v-411.623c0-74.629 59.481-135.365 132.472-135.365h562.583c73.059 0 132.534 60.736 132.534 135.365v411.623c0 69.697-51.792 127.219-118.074 134.607zM413.765 831.537c92.043 0 166.987-74.944 166.987-166.987v-43.632h-333.978v43.632c0 92.043 74.883 166.987 166.99 166.987z" horiz-adv-x="828" />
18
+<glyph unicode="&#xe608;" d="M1223.129 717.217l-180.128-175.796v217.716c0 74.673-59.512 135.496-132.599 135.496h-634.716c-73.084 0-132.596-60.823-132.596-135.496v-609.237c0-74.673 59.512-135.496 132.596-135.496h634.716c73.084 0 132.599 60.82 132.599 135.496v172.679l193.45-153.712c48.784-35.558 96.695 5.178 96.695 40.424v483.533c-0.003 35.248-55.897 71.306-110.017 24.393zM601.169 199.935c-141.111 0-255.524 114.411-255.524 255.521s114.411 255.521 255.524 255.521c141.108 0 255.519-114.411 255.519-255.521 0-141.113-114.408-255.521-255.519-255.521zM599.045 600.249c-80.474 0-145.727-65.253-145.727-145.729 0-80.471 65.25-145.727 145.727-145.727s145.729 65.256 145.729 145.727c0 80.474-65.253 145.729-145.729 145.729z" horiz-adv-x="1334" />
19
+<glyph unicode="&#xe609;" d="M1223.934 717.147l-180.299-175.956v217.848c0 7.661-0.666 15.148-1.902 22.432l73.695 65.346c26.349 23.41 28.841 63.8 5.369 90.24-23.475 26.406-63.803 28.872-90.273 5.4l-1009.019-894.712c-26.408-23.41-28.841-63.806-5.398-90.209 12.607-14.237 30.183-21.539 47.85-21.539 15.076 0 30.214 5.305 42.39 16.1l95.841 84.979c20.995-14.627 46.26-23.232 73.592-23.232h635.191c73.099 0 132.66 60.807 132.66 135.537v172.868l193.659-153.955c48.815-35.46 96.765 5.248 96.765 40.584v483.829c0.003 35.305-55.933 71.386-110.123 24.44zM601.515 199.448c-58.81 0-112.566 20.216-155.526 53.797l82.93 73.533c20.863-11.665 44.849-18.386 70.47-18.386 80.533 0 145.832 65.299 145.832 145.835 0 19.421-3.896 37.857-10.857 54.713l86.847 77.001c22.848-38.259 36.012-82.969 36.012-130.782 0-141.214-114.493-255.71-255.707-255.71zM345.797 455.16c0 141.216 114.496 255.715 255.717 255.715 21.501 0 42.075-3.434 61.986-8.429l216.757 192.191h-604.474c-73.138 0-132.697-60.838-132.697-135.597v-518.074l205.894 182.543c-1.308 10.486-3.184 20.853-3.184 31.651z" horiz-adv-x="1334" />
20
+<glyph unicode="&#xe60a;" d="M1121.124 938.866c-23.48 26.413-63.883 28.849-90.296 5.372l-1009.306-894.905c-26.413-23.418-28.852-63.816-5.434-90.232 12.612-14.243 30.224-21.547 47.893-21.547 15.050 0 30.224 5.307 42.403 16.108l257.072 227.934c33.225-22.863 69.988-39.678 108.611-49.713-70.191-35.653-118.771-107.715-118.771-191.894h431.872c0 85.737-50.329 159.115-122.765 194.079 54.95 14.49 105.842 39.965 147.497 77.496 51.888 46.712 113.712 131.515 113.712 270.329v130.323c0 18.812-7.924 35.767-20.585 47.798l212.664 188.558c26.419 23.477 28.849 63.816 5.434 90.294zM791.535 481.891c0-157.985-117.649-229.923-226.99-229.923-35.214 0-68.659 7.217-98.285 20.786l55.735 49.416c14.733-4.59 30.356-7.132 46.609-7.132 89.357 0 161.984 72.687 161.984 161.979v30.1l60.947 54.042v-79.269zM730.589 793.867c0 89.298-72.625 161.984-161.984 161.984-89.298 0-161.984-72.687-161.984-161.984v-316.85c0-0.25 0-0.498 0-0.748l323.969 287.25v30.348zM350.795 426.69c-3.246 17.483-5.119 35.782-5.119 55.201v130.323c0 36.406-29.6 66.004-66.006 66.004-36.466 0-66.004-29.597-66.004-66.004v-130.323c0-57.198 11.115-107.026 29.099-150.931l108.030 95.73z" horiz-adv-x="1137" />
21
+<glyph unicode="&#xe60b;" d="M858.414 679.944c-36.595 0-66.246-29.652-66.246-66.182v-130.725c0-158.421-117.982-230.597-227.635-230.597-58.674 0-112.618 19.87-151.86 55.959-44.23 40.819-67.696 101.203-67.696 174.64v130.725c0 36.53-29.654 66.182-66.182 66.182-36.53 0-66.182-29.652-66.182-66.182v-130.725c0-195.834 119.494-314.763 259.177-351.040-70.408-35.71-119.176-108.014-119.176-192.431h433.118c0 85.993-50.409 159.621-123.029 194.572 55.079 14.64 106.121 40.127 147.886 77.79 52.050 46.877 114.008 131.925 114.008 271.106v130.725c0 36.53-29.59 66.182-66.184 66.182zM568.571 315.719c-89.589 0-162.459 72.932-162.459 162.521v317.665c0 89.589 72.87 162.459 162.459 162.459 89.592 0 162.524-72.87 162.524-162.459v-317.665c0.003-89.592-72.929-162.521-162.524-162.521z" horiz-adv-x="1137" />
22
+<glyph unicode="&#xe60c;" d="M512.356 960c-282.456 0-512.356-229.838-512.356-512.478 0-282.389 229.9-512.227 512.356-512.227 282.515 0 512.414 229.838 512.414 512.227 0 282.64-229.9 512.478-512.414 512.478zM512.356 14.856c-238.545 0-432.671 194.126-432.671 432.666 0 238.796 194.126 432.858 432.671 432.858 238.601 0 432.856-194.062 432.856-432.858 0-238.54-194.255-432.666-432.856-432.666zM512.545 854.962c-224.755 0-407.508-182.75-407.508-407.315 0-224.563 182.75-407.315 407.508-407.315 224.437 0 407.187 182.755 407.187 407.315-0.003 224.566-182.75 407.315-407.187 407.315zM512.545 127.323c-176.715 0-320.453 143.804-320.453 320.324 0 176.523 143.737 320.324 320.453 320.324 176.523 0 320.196-143.802 320.196-320.324 0-176.52-143.673-320.324-320.196-320.324zM283.851 562.789l-0.954-1.398v-234.413l0.954-1.398c15.757-23.060 36.473-44.542 61.699-63.797l8.961-6.801v378.341l-8.961-6.735c-25.1-19.191-45.814-40.544-61.699-63.799zM415.637 665.729l-3.621-1.334v-440.36l3.621-1.398c18.683-7.055 38.887-11.94 61.766-14.931l6.224-0.762v474.415l-6.163-0.762c-22.237-2.795-43.016-7.753-61.827-14.869zM547.367 680.599l-6.165 0.762v-474.415l6.165 0.762c22.301 2.793 43.077 7.811 61.763 14.864l3.685 1.4v440.488l-3.685 1.334c-18.811 7.053-39.525 12.010-61.763 14.805zM740.98 562.789c-15.692 23.002-36.473 44.48-61.699 63.797l-8.894 6.86v-378.469l8.894 6.801c25.351 19.381 46.132 40.862 61.699 63.861l0.89 1.398v234.352l-0.89 1.4z" horiz-adv-x="1025" />
23
+<glyph unicode="&#xe60d;" d="M952.366 960.134h-820.477c-73.027 0-132.531-60.761-132.531-135.455v-752.358c0-74.66 59.504-135.424 132.531-135.424h820.48c73.089 0 132.596 60.766 132.596 135.424v752.358c-0.003 74.694-59.507 135.455-132.599 135.455zM946.135 78.801h-807.894v739.462h807.834l0.059-739.462zM569.742 511.875l91.772 96.865-77.305 77.308 316.393 85.040-84.981-316.391-75.357 75.293-91.834-96.865zM514.763 384.563l-91.767-96.865 77.3-77.305-316.388-85.043 84.979 316.388 75.357-75.29 91.834 96.871z" horiz-adv-x="1089" />
24
+<glyph unicode="&#xe60e;" d="M953.225 959.18h-820.663c-73.045 0-132.562-60.776-132.562-135.488v-752.525c0-74.647 59.517-135.421 132.562-135.421h820.66c73.107 0 132.624 60.776 132.624 135.421v752.525c0.003 74.712-59.515 135.488-132.622 135.488zM946.994 77.647h-808.079v739.596h808.017l0.062-739.596zM915.539 706.7l-91.795-96.889 77.326-77.323-316.463-85.030 84.999 316.463 75.373-75.339 91.852 96.889zM170.625 188.221l91.793 96.884-77.323 77.326 316.463 85.028-84.997-316.46-75.373 75.342-91.857-96.891z" horiz-adv-x="1089" />
25
+<glyph unicode="&#xe60f;" d="M513.036 960c283.57-0.188 512.414-229.474 512.037-512.664-0.377-283.756-228.965-512.228-512.541-512.288-283.191-0.067-512.912 229.474-512.533 512.099 0.374 284.638 228.965 513.103 513.036 512.853zM512.285 810.729c-200.79-0.126-362.957-162.291-362.831-363.014 0-201.105 161.788-363.081 362.831-363.334 201.164-0.312 363.581 162.294 363.455 363.772-0.25 200.852-162.417 362.702-363.455 362.575zM597.392 447.588h-0.503l-0.126 0.126h0.63l115.615 115.866c0 0-78.247 78.505-82.153 82.153l-117.754-116.183-119.014 118.196-82.024-82.279 88.815-88.818 26.674-29.061h0.503l0.253-0.253h-0.756l-115.489-115.806c0 0 78.249-78.564 82.024-82.212l117.76 116.245 119.008-118.26 82.153 82.406-88.815 88.82-26.8 29.061z" horiz-adv-x="1025" />
26
+<glyph unicode="&#xe610;" d="M66.491-63.997h1027.94zM1198.596 487.986c-135.702 135.893-271.415 271.66-407.367 407.241-6.244 6.089-13.868 11.714-21.867 14.653-31.236 11.399-63.48-12.808-63.728-47.674-0.253-67.663-0.126-135.331-0.126-202.965 0-4.281 0-8.62 0-13.964-6.123 0-10.87 0-15.62 0-106.247 0-212.334 0.062-318.485 0-35.178-0.031-54.86-19.71-54.86-54.922-0.059-92.778-0.059-185.5 0-278.345 0-35.8 19.682-55.479 55.611-55.479 105.775-0.062 211.423 0 317.11 0 4.877 0 9.622 0 16.245 0 0-5.375 0-9.374 0-13.309 0-66.793 0.25-133.703 0-200.496 0-23.057 9.247-40.241 30.242-49.547 21.116-9.371 39.361-2.81 55.231 12.937 135.955 136.079 272.031 272.034 407.989 408.175 23.49 23.431 23.24 50.112-0.374 73.695zM532.596 44.729c-2.627 19.62-22.055 32.116-27.928 35.426-8.811 5.186-18.371 5.811-25.683 5.811l-6.37-0.126-227.926 0.188c-56.042 0.124-98.468 42.173-98.591 97.717-0.188 177.127-0.188 354.321 0.065 531.51 0.059 53.983 42.671 96.53 96.968 96.811l235.922 0.062c33.426 0.031 51.294 16.121 54.481 49.235 1.001 12.965 0.81 26.052 0.439 39.172-1.128 39.737-19.369 57.481-59.107 57.512l-217.866-0.121c-15.494 0-30.926-0.562-46.361-2.343-115.52-13.154-207.555-113.649-209.681-228.798-1.313-63.888-0.996-127.804-0.684-191.718l0.186-60.201h-0.377c0 0-0.121-227.954 0.065-289.811 0.248-135.702 101.528-240.796 235.545-244.48 33.176-0.875 66.419-1.189 99.654-1.189h0.065l148.012 0.753c29.368 0 47.483 17.37 49.73 47.545 1.755 22.058 1.628 40.173-0.557 57.045z" horiz-adv-x="1216" />
27
+<glyph unicode="&#xe611;" d="M839.334 386.487c0-79.199-64.257-143.461-143.486-143.461-79.174 0-143.431 64.262-143.431 143.461 0 79.227 64.257 143.431 143.431 143.431 79.23-0.003 143.486-64.204 143.486-143.431zM1372.769 706.485c-6.595 39.459-29.496 64.168-70.606 69.276-23.788 2.918-38.256 15.637-44.726 39.040-9.706 35.519-33.678 58.993-67.811 70.76-24.807 8.595-50.3 16.462-76.186 20.491-69.655 10.911-140.51 15.924-209.526 29.943-69.53 14.178-139.053 23.342-208.893 24.073-69.845-0.731-139.371-9.895-208.893-24.073-69.022-14.016-139.876-19.029-209.526-29.94-25.884-4.028-51.385-11.896-76.189-20.491-34.13-11.767-58.105-35.24-67.814-70.76-6.469-23.403-20.934-36.122-44.723-39.040-41.105-5.108-64.006-29.82-70.601-69.278-6.788-40.41-11.737-81.202-16.811-121.885-2.728-22.109 6.405-32.576 30.386-32.448 120.839 0.697 241.692 0.697 362.595 0.095 24.045-0.128 33.115 9.388 33.433 33.338 0.762 57.369-4.631 111.895-47.136 156.618-7.041 7.39-10.849 25.281-6.726 33.846 4.062 8.5 40.856 16.716 45.992 16.716 43.328-0.19 43.138-0.223 49.418-43.423 1.205-8.28 2.539-18.46 7.803-23.853 30.319-30.863 21.252-66.706 7.234-97.634-30.389-67.139-61.537-134.827-100.867-196.869-73.458-115.831-104.41-160.744-198.679-260.844-58.675-62.293-68.573-101.687-68.573-137.466 0-70.989 41.038-96.744 137.148-96.744 181.614 0 260.908 0.315 442.528 0.315 181.614 0 260.905-0.315 442.528-0.315 96.102 0 137.142 25.752 137.142 96.744 0 35.779-9.898 75.173-68.573 137.466-94.264 100.1-125.222 145.012-198.679 260.844-39.333 62.042-70.475 129.73-100.861 196.869-14.019 30.927-23.091 66.77 7.234 97.634 5.264 5.393 6.595 15.575 7.803 23.853 6.28 43.202 6.090 43.233 49.412 43.423 5.139 0 41.933-8.216 45.992-16.716 4.126-8.565 0.318-26.453-6.723-33.846-42.502-44.723-47.898-99.249-47.136-156.618 0.315-23.947 9.388-33.466 33.43-33.338 120.909 0.603 241.753 0.603 362.601-0.095 23.975-0.126 33.109 10.342 30.383 32.448-5.075 40.686-10.018 81.475-16.806 121.885zM959.991 383.505c0-146.315-118.624-264.936-264.97-264.936s-264.973 118.621-264.973 264.936c0 146.318 118.624 264.936 264.973 264.936 146.343 0 264.97-118.621 264.97-264.936z" horiz-adv-x="1390" />
28
+<glyph unicode="&#xe612;" d="M310.262 30.43c0-52.13-42.207-94.43-94.399-94.43h-121.405c-52.195 0-94.458 42.3-94.458 94.43v835.67c0 52.158 42.266 94.458 94.458 94.458h121.403c52.195 0 94.399-42.3 94.399-94.458v-835.67zM1077.118 960.56h-561.987c-72.919 0-132.33-60.673-132.33-135.253v-754.115c0-74.518 59.411-135.191 132.33-135.191h561.987c72.98 0 132.394 60.673 132.394 135.191v754.115c0 74.58-59.414 135.253-132.394 135.253zM529.83 826.906h532.653l0.062-143.298h-532.715v143.298zM643.255 51.628h-113.551v113.551h113.551v-113.551zM643.255 256.748h-113.551v113.554h113.551v-113.554zM643.382 463.756h-113.551v113.554h113.551v-113.554zM852.9 51.628h-113.551v113.551h113.551v-113.551zM852.9 256.748h-113.551v113.554h113.551v-113.554zM853.027 463.756h-113.556v113.554h113.556v-113.554zM1062.548 51.628h-113.556v113.551h113.556v-113.551zM1062.548 256.748h-113.556v113.554h113.556v-113.554zM1062.669 463.756h-113.554v113.554h113.554v-113.554z" horiz-adv-x="1210" />
29
+<glyph unicode="&#xe613;" d="M1123.444 939.015c-23.593 26.481-64.131 28.989-90.74 5.395l-1008.269-893.436c-26.609-23.468-28.991-64.131-5.46-90.676 12.674-14.306 30.308-21.649 48.126-21.649 15.123 0 30.372 5.401 42.544 16.195l130.045 115.22c90.743-81.844 210.569-132.165 342.473-132.101 282.816 0.061 510.913 227.969 511.287 510.972 0.126 109.934-34.682 211.367-93.499 294.72l118.088 104.625c26.483 23.526 28.997 64.129 5.404 90.735zM944.422 449.818c0.128-200.922-161.896-363.201-362.509-362.952-87.56 0.123-167.573 31.151-230.061 82.569l331.277 293.509v-73.176c1.071-60.993 32.696-92.18 94.944-93.692 61.997 1.512 93.686 32.763 95.131 93.756v41.096h-72.227v-47.499c0.251-4.642-0.564-10.607-2.511-17.949-1.25-3.261-3.448-6.020-6.525-8.093-3.197-2.572-7.845-3.828-13.868-3.828-10.543 0.31-17.132 4.268-19.827 11.921-1.068 3.512-1.947 6.905-2.508 10.163-0.254 2.887-0.377 5.532-0.377 7.786v143.511l42.477 37.634c0.215-0.432 0.452-0.851 0.63-1.303 1.947-6.467 2.762-12.799 2.511-19.076v-36.772h72.227v30.121c-0.246 31.245-9.086 54.699-26.363 70.447l40.711 36.069c35.787-56.055 56.803-122.585 56.867-194.244zM239.795 331.47c-12.613 37.023-19.827 76.557-19.827 117.913-0.19 200.236 161.584 362.009 361.945 362.135 56.853 0 110.313-13.302 158.133-36.398l117.846 104.421c-79.444 50.952-173.758 80.817-275.292 80.948-283.377 0.181-511.354-227.729-511.789-511.675-0.126-79.567 18.636-154.679 51.137-221.882l117.848 104.538zM388.576 626.020h-97.514v-249.057l72.23 64.070v0.689h0.815l117.72 104.418c0 0.564 0.123 0.94 0.123 1.509 0.753 53.898-30.369 80.069-93.374 78.37zM405.959 561.517c1.942-2.767 3.074-6.469 3.323-11.112 0.312-4.452 0.438-9.6 0.438-15.246 0.251-10.916-0.689-19.83-2.949-26.985-2.952-7.594-10.983-11.357-24.159-11.357h-19.325v74.043h15.31c7.842 0 13.865-0.683 18.072-2.19 4.397-1.573 7.468-3.953 9.29-7.153z" horiz-adv-x="1140" />
30
+<glyph unicode="&#xe614;" d="M581.278 961.708c284.857-0.19 514.807-230.517 514.427-514.997-0.378-285.047-230.073-514.553-514.869-514.615-284.541-0.062-515.311 230.517-514.933 514.422 0.439 285.936 230.009 515.439 515.375 515.19zM580.579 811.756c-201.764-0.123-364.666-163.032-364.478-364.663 0-202.018 162.524-364.735 364.478-364.984 202.018-0.316 365.174 163.030 365.048 365.423-0.252 201.767-163.156 364.35-365.048 364.224zM287.698 624.907h98.196c63.442 1.767 94.785-24.518 94.027-78.863 0.254-19.081-2.211-34.882-7.456-47.521-6.005-12.508-18.706-21.988-38.167-28.181v-0.819c28.373-6.259 43.031-23.573 43.981-51.946v-57.689c0-11.247 0.254-22.813 0.758-34.756 0.819-12.005 3.033-20.979 6.696-27.043h-71.846c-3.727 6.064-6.128 15.038-7.14 27.043-1.012 11.943-1.454 23.509-1.138 34.756v52.321c0 9.603-2.214 16.553-6.573 20.979-4.675 4.107-12.701 6.19-24.012 6.19h-14.599v-141.291h-72.73v326.82zM360.428 494.861h19.463c13.271 0 21.359 3.794 24.331 11.375 2.276 7.204 3.221 16.304 2.969 27.171 0 5.815-0.126 10.867-0.442 15.418-0.252 4.675-1.392 8.404-3.352 11.247-1.831 3.157-4.926 5.561-9.352 7.14-4.233 1.454-10.299 2.211-18.2 2.211h-15.418v-74.564zM498.372 624.907h162.082v-62.687h-89.35v-65.587h78.103v-62.685h-78.103v-73.11h92.822v-62.749h-165.557v326.818zM682.507 535.999c0.316 31.782 9.416 55.542 27.425 71.407 17.44 15.29 40.185 22.936 68.181 22.936 28.247 0 51.119-7.646 68.623-23 17.82-15.798 26.92-39.623 27.171-71.407v-30.333h-72.73v37.031c0.254 6.192-0.57 12.639-2.527 19.209-1.264 3.157-3.475 5.938-6.573 8.214-3.221 1.515-7.898 2.404-13.964 2.404-10.615-0.316-17.249-3.855-19.967-10.618-2.211-6.573-3.223-13.017-2.907-19.209v-161.956c0-2.273 0.126-4.865 0.38-7.772 0.568-3.411 1.454-6.824 2.527-10.233 2.717-7.775 9.352-11.756 19.967-12.007 6.067 0 10.744 1.261 13.964 3.791 3.098 2.15 5.309 4.867 6.573 8.216 1.96 7.33 2.782 13.33 2.527 18.007v47.837h72.73v-41.328c-1.451-61.547-33.364-93.015-95.794-94.469-62.685 1.454-94.53 32.922-95.607 94.343v148.937z" horiz-adv-x="1142" />
31
+<glyph unicode="&#xe615;" d="M1016.824 5.766c-2.051 15.373-5.331 30.537-7.859 45.847-8.334 50.458-33.006 86.503-82.063 107.922-78.373 34.198-155.103 72.121-232.111 109.395-55.686 27.025-52.409 88.519-34.097 114.413 11.89 16.88 22.344 34.572 23.575 56.852 0.444 8.226 8.303 18.99 15.817 23.294 26.070 15.035 38.161 39.565 50.020 64.982 3.109 6.696 7.379 13.187 12.266 18.722 8.471 9.668 12.264 19.235 6.079 31.842-1.435 2.97 1.331 8.334 2.8 12.367 4.304 12.026 10.285 23.676 13.12 36.043 3.556 15.339 5.398 31.225 6.252 46.975 0.374 6.523-6.045 13.528-5.362 19.95 3.483 31.912-14.557 56.202-24.739 83.977-12.465 34.198-36.928 55.619-58.519 81.106-4.066 4.784-5.227 13.051-5.571 19.886-0.72 14.588-6.732 21.797-22.004 19.813-6.11-0.787-12.772-2.495-18.41-0.991-4.957 1.334-12.406 6.288-12.676 10.112-1.538 19.336-8.264 22.517-28.016 19.235-12.364-2.049-28.457 9.155-40.584 17.561-10.145 7.041-18.89 10.045-30.681 7.176-4.915-1.195-11.544-0.991-15.716 1.435-4.441 2.663-8.775 4.237-13.118 5.124v0.748c-0.957-0.031-1.982-0.204-2.939-0.307-0.955 0.103-1.912 0.274-2.867 0.307v-0.751c-4.371-0.888-8.749-2.462-13.156-5.124-4.133-2.425-10.762-2.632-15.68-1.435-11.822 2.867-20.569-0.137-30.684-7.176-12.158-8.404-28.217-19.609-40.584-17.561-19.746 3.282-26.509 0.103-28.047-19.235-0.307-3.824-7.686-8.778-12.676-10.112-5.669-1.504-12.297 0.204-18.446 0.991-15.236 1.984-21.25-5.225-21.97-19.813-0.338-6.832-1.502-15.102-5.568-19.886-21.588-25.485-46.051-46.908-58.555-81.106-10.117-27.773-28.189-52.063-24.669-83.975 0.686-6.422-5.744-13.427-5.4-19.95 0.89-15.749 2.735-31.636 6.254-46.975 2.836-12.367 8.814-24.019 13.151-36.043 1.437-4.033 4.242-9.397 2.769-12.367-6.182-12.607-2.358-22.174 6.115-31.842 4.853-5.535 9.121-12.026 12.23-18.722 11.859-25.417 23.947-49.947 50.014-64.982 7.519-4.304 15.378-15.068 15.858-23.294 1.192-22.28 11.65-39.972 23.57-56.852 18.281-25.895 21.147-86.738-34.162-114.413-76.456-38.264-153.741-75.2-232.042-109.395-49.129-21.418-73.726-57.463-82.063-107.922-2.526-15.311-5.878-30.475-7.859-45.847-3.009-22.928-7.823-69.766-7.823-69.766h1024.611c-0.003 0-4.781 46.838-7.787 69.766z" horiz-adv-x="1025" />
32
+<glyph unicode="&#xe616;" d="M1026.175 449.067c0-283.345-229.709-513.051-513.108-513.051-283.348 0-513.069 229.703-513.069 513.051 0 283.384 229.721 513.106 513.069 513.106 283.4 0 513.108-229.721 513.108-513.106zM513.069-63.985c135.725 0 259.112 52.711 350.874 138.739-9.717 11.65-22.551 21.114-39.113 28.343-58.934 25.745-116.627 54.256-174.534 82.256-41.871 20.322-39.405 66.587-25.639 86.057 8.943 12.692 16.805 25.998 17.728 42.746 0.333 6.169 6.241 14.284 11.889 17.522 19.604 11.304 28.697 29.747 37.604 48.861 2.34 5.031 5.555 9.89 9.229 14.077 6.37 7.243 9.224 14.436 4.572 23.942-1.086 2.209 1.004 6.241 2.105 9.273 3.238 9.067 7.733 17.801 9.861 27.115 2.67 11.549 4.059 23.48 4.701 35.323 0.281 4.902-4.544 10.184-4.033 14.986 2.621 24.022-10.943 42.271-18.598 63.158-9.376 25.714-27.771 41.82-44.005 60.97-3.058 3.623-3.927 9.838-4.188 14.952-0.539 10.981-5.060 16.415-16.544 14.924-4.598-0.601-9.611-1.886-13.843-0.756-3.728 0.988-9.327 4.724-9.534 7.604-1.153 14.539-6.213 16.929-21.065 14.475-9.296-1.543-21.395 6.858-30.513 13.203-7.632 5.292-14.209 7.555-23.069 5.38-3.697-0.9-8.682-0.746-11.815 1.094-3.341 1.976-6.605 3.184-9.867 3.839v0.552c-0.72-0.013-1.489-0.129-2.209-0.217-0.722 0.088-1.44 0.206-2.157 0.217v-0.552c-3.29-0.653-6.574-1.863-9.89-3.839-3.112-1.837-8.091-1.992-11.797-1.094-8.886 2.173-15.448-0.088-23.064-5.38-9.157-6.345-21.222-14.746-30.518-13.203-14.862 2.451-19.94 0.062-21.093-14.475-0.219-2.879-5.793-6.616-9.516-7.604-4.278-1.13-9.247 0.155-13.887 0.756-11.456 1.491-15.987-3.943-16.516-14.924-0.261-5.111-1.13-11.33-4.19-14.952-16.222-19.15-34.616-35.258-44.018-60.97-7.627-20.887-21.204-39.136-18.57-63.158 0.511-4.802-4.304-10.083-4.046-14.986 0.655-11.846 2.041-23.776 4.701-35.323 2.131-9.312 6.626-18.048 9.89-27.115 1.094-3.032 3.174-7.062 2.082-9.273-4.649-9.508-1.788-16.702 4.582-23.942 3.674-4.188 6.874-9.046 9.224-14.077 8.899-19.111 17.992-37.557 37.596-48.861 5.653-3.238 11.559-11.353 11.905-17.522 0.913-16.748 8.773-30.054 17.739-42.746 13.745-19.47 15.902-65.245-25.673-86.057-57.52-28.772-115.6-56.511-174.503-82.256-16.57-7.23-29.409-16.694-39.123-28.338 91.759-86.031 215.138-138.744 350.843-138.744z" horiz-adv-x="1026" />
33
+<glyph unicode="&#xe617;" d="M65.774 516.748c10.052 9.358 25.988 21.772 43.285 32.699 51.335 32.619 108.115 50.897 166.829 64.133 48.763 10.95 98.246 16.887 148.066 20.203 55.755 3.754 111.559 3.78 167.392 0.797 39.944-2.185 79.686-6.502 119.119-13.211 43.956-7.506 87.037-17.994 128.785-33.751 24.419-9.175 48.172-20.105 70.534-33.573 29.716-17.891 56.552-39.224 77.22-67.348 20.819-28.302 31.721-60.407 33.829-95.392 1.747-27.402 0.717-54.697-5.656-81.588-2.877-12.083-8.226-23.134-16.554-32.386-11.417-12.648-26.424-17.021-42.772-17.636-20.463-0.668-40.411 4.113-60.361 8.226-38.912 7.97-77.836 16.245-116.699 24.728-14.137 3.034-28.689 5.093-41.649 12.596-22.308 12.955-34.445 31.775-34.033 57.783 0.258 16.869 2.216 33.782 2.469 50.695 0.312 25.010-9.923 45.161-30.898 59.042-14.395 9.539-30.694 14.911-47.452 18.665-40.411 9.046-81.387 10.179-122.561 10.050-28.821-0.126-57.582-1.669-86.093-6.143-19.947-3.161-39.562-7.813-57.732-17.014-24.318-12.364-39.353-31.465-40.073-59.352-0.441-16.351 0.973-32.802 1.927-49.15 0.642-11.822-0.080-23.446-5.295-34.288-9.26-19.385-24.935-31.672-45.37-36.964-22.646-5.865-45.605-10.54-68.504-15.223-38.102-7.764-76.216-15.368-114.416-22.517-14.526-2.774-29.254-1.951-43.133 3.602-18.742 7.457-28.924 22.775-34.138 41.337-7.096 25.397-7.841 51.513-6.966 77.731 0.9 27.040 5.883 53.237 18.404 77.607 9.794 19.065 22.491 35.955 42.493 55.642z" horiz-adv-x="1026" />
34
+<glyph unicode="&#xe618;" d="M797.086 112.301c-0.059 0.163-0.119 0.328-0.16 0.485-71.399-45.638-151.782-69.931-234.023-69.931-0.013 0-0.021 0-0.028 0-122.52 0-237.501 52.772-315.469 144.741-99.778 117.698-134.252 329.954-73.022 427.789 4.004-1.662 7.875-3.233 11.68-4.773 13.585-5.511 26.413-10.716 42.305-19.096 6.063-3.202 12.338-4.812 18.673-4.812 11.714 0 22.6 5.648 29.848 15.486 7.815 10.617 10.313 24.778 6.538 36.951l-3.525 11.41c-10.687 34.59-21.723 70.354-34.211 105.078-9.983 27.765-22.399 62.327-59.226 62.327-12.057 0-26.037-3.656-46.73-12.204-44.294-18.319-71.058-29.961-114.534-49.81-15.102-6.887-25.234-22.698-25.203-39.343 0.028-15.842 8.992-29.337 23.975-36.115 18.208-8.257 30.536-13.716 43.468-19.447l10.687-4.753c-101.938-259.102 24.803-526.458 211.314-639.212 83.497-50.474 178.5-77.14 274.769-77.14h0.041c102.72 0 205.561 31.099 284.501 85.198-31.729 28.803-45.566 69.167-51.671 87.171zM1098.203 210.090c-18.113 8.577-30.356 14.258-43.221 20.244l-10.496 4.892c106.448 257.268-15.569 526.801-200.067 642.788-85.36 53.663-183.123 82.032-282.716 82.032-104.848 0-206.41-30.593-285.967-86.165l-5.385-3.764c31.597-27.564 45.86-66.788 52.917-86.41 72.926 47.94 155.675 73.409 239.895 73.409 125.407 0 242.142-54.785 320.294-150.316 97.683-119.447 128.439-332.255 65.498-429.015-3.989 1.736-7.815 3.385-11.624 4.998-13.471 5.759-26.204 11.18-41.954 19.821-6.203 3.424-12.645 5.155-19.212 5.155-11.585 0-22.399-5.558-29.69-15.267-7.813-10.434-10.478-24.432-6.966-36.515l3.279-11.301c10.096-34.845 20.531-70.857 32.412-105.842 9.588-28.238 21.514-63.382 59.179-63.382 11.843 0 25.577 3.424 45.881 11.399 44.351 17.439 71.319 28.601 115.409 47.777 15.19 6.623 25.601 22.252 25.859 38.894 0.281 15.822-8.445 29.499-23.325 36.569z" horiz-adv-x="1122" />
35
+<glyph unicode="&#xe619;" d="M46.993 961.7c461.234 0 553.793 0 1015.024 0 35.919 0 53.356-25.959 53.356-57.959-0.581-303.259-0.325-606.488-0.449-909.809 0-43.984-13.203-57.058-57.703-57.058-443.072-0.126-556.453-0.126-999.553 0-44.534 0-57.799 13.009-57.799 57.058-0.098 303.257 0.485 608.072-0.093 911.329-0.034 26.21 11.301 53.761 47.217 56.439zM311.405 450.298c0-119.045-0.072-172.168 0.057-291.249 0.036-50.043 11.208-61.050 62.12-61.050 233.352 0 137.075 0 370.522 0 47.075 0 59.249 11.982 59.249 58.095 0.126 239.111 0.126 346.338 0 585.389 0 48.138-10.687 58.991-57.768 58.991-235.323 0.101-140.844 0.101-376.157 0-47.044 0-57.93-11.043-57.966-58.89-0.129-119.109-0.057-172.209-0.057-291.287zM153.944 838.566c-74.929-0.062-66.687 5.958-66.845-66.685-0.201-63.95-7.054-63.534 62.528-63.372 72.999 0.194 67.201-3.764 67.302 67.554 0 67.722 4.087 62.595-62.985 62.502zM963.644 838.566c-71.159-0.034-65.56 6.185-65.751-65.364-0.129-67.302-4.508-64.693 64.528-64.693 73.089 0 65.299-2.031 65.299 66.238-0.003 68.646 6.956 63.911-64.076 63.818zM216.828 122.408c0.359 73.094 4.639 66.914-67.358 67.17-68.104 0.191-62.569 2.763-62.407-63.31 0.129-73.476-6.954-66.52 67.074-66.649 66.042-0.065 63.142-6.056 62.691 62.789zM1027.718 124.4c0.134 68.334 6.443 65.304-63.297 65.178-70.132-0.132-66.656 5.793-66.527-65.304 0.129-70.645-4.384-64.721 63.756-64.657 71.995 0.132 66.202-6.698 66.068 64.783zM1027.718 342.077c0 70.55 7.219 66.842-67.485 66.522-0.898 0-1.873 0-2.838 0-59.375 0-59.375 0-59.375-58.023 0-77.922-6.443-69.936 69.293-70.196 66.076-0.387 60.539-3.091 60.405 61.697zM151.307 489.873c68.295-0.163 65.815-5.568 65.624 62.982-0.194 71.128 4.895 64.917-66.014 65.010-69.905 0.101-63.813 4.704-63.885-63.978-0.062-67.431-5.7-64.463 64.275-64.014zM961.263 489.873c72.511-0.258 66.589-4.603 66.455 64.494 0 68.558 6.185 63.537-64.267 63.498-70.196-0.028-65.686 6.053-65.498-65.493 0.132-62.5 0.067-62.5 63.31-62.5zM150.399 280.38c71.004 0 66.659-6.567 66.466 64.528-0.163 63.694-0.036 63.501-65.013 63.756-70.805 0.258-64.822 2.673-64.822-63.756 0.036-69.167-5.919-64.788 63.369-64.528z" horiz-adv-x="1115" />
36
+<glyph unicode="&#xe61a;" d="M3.881 146.835h220.26v-210.835h-220.26v210.835zM308.817 350.143h220.27v-414.143h-220.27v414.143zM613.764 553.412h220.268v-617.412h-220.268v617.412zM918.685 756.715h220.265v-820.715h-220.265v820.715zM1223.629 960h220.263v-1024h-220.263v1024z" horiz-adv-x="1444" />
37
+<glyph unicode="&#xe61b;" d="M526.071 234.749c-28.637-30.869-56.465-60.861-84.282-90.859-51.578-55.636-103.047-111.376-154.842-166.832-7.606-8.135-15.958-16.1-25.317-22.012-28.075-17.708-58.31-18.090-88.472-6.492-59.84 23.028-80.004 90.727-59.734 139.234 5.413 12.95 13.721 23.601 23.709 33.173 70.256 67.351 140.506 134.717 210.76 202.077 15.638 14.993 31.264 29.995 47.364 45.45-9.302 9.529-18.386 18.833-27.451 28.137-12.122 12.442-13.234 20.28-5.067 35.498 4.735 8.816 4.789 8.878-2.627 16.198-20.012 19.72-40.168 39.198-63.498 55.188-27.167 18.624-57.161 24.233-89.083 19.849-53.402-7.328-91.609-38.372-121.413-81.046-12.774-18.299-15.365-40.313-17.517-61.875-3.23-32.245-2.415-64.479 2.209-96.597 1.654-11.515-3.863-16.539-13.835-11.175-8.306 4.448-16.095 11.048-22.115 18.353-15.574 18.89-22.223 42.042-27.474 65.395-12.955 57.652-8.86 114.49 12.191 169.495 32.345 84.537 79.743 159.571 145.953 221.932 13.659 12.857 176.841 180.564 202.944 207.021 7.493 7.599 14.895 7.635 22.393 0.028 43.009-43.641 85.985-87.316 128.927-131.029 8.117-8.267 8.019-15.097-0.222-23.49-26.339-26.834-52.726-53.627-79.106-80.419-6.244-6.334-97.34-82.437-73.027-128.816 22.693-25.090 46.196-49.449 69.575-73.904 1.189-1.238 4.686-1.386 6.523-0.632 3.63 1.499 6.848 3.997 10.248 6.066 9.745 5.94 19.545 4.918 27.812-3.083 11.755-11.381 23.405-22.858 35.392-34.59 4.807 4.575 9.939 9.41 15.027 14.294 27.128 26.039 54.272 52.071 81.351 78.146 16.413 15.778 18.652 28.418 11.038 49.658-10.473 29.221-14.356 59.677-13.85 90.624 1.017 61.045 20.438 115.334 61.003 161.416 32.825 37.286 72.054 64.311 121.643 74.325 35.227 7.101 69.139 4.513 100.663-14.026 6.365-3.752 11.908-9.007 17.455-14.005 3.491-3.125 3.153-6.236-0.565-9.98-42.503-42.885-84.772-86.013-127.154-129.035-12.442-12.638-12.356-23.167 0.196-35.914 40.344-40.978 80.597-82.050 120.936-123.052 10.076-10.233 19.537-10.021 29.504 0.134 43.195 44.077 86.449 88.090 129.706 132.118 1.21 1.233 2.572 2.322 5.135 4.624 5.491-5.893 11.895-10.924 15.961-17.406 19.452-30.944 22.608-64.83 17.073-100.25-14.253-91.080-97.188-175.638-197.712-190.123-39.977-5.764-79.372-2.562-118.067 9.031-5.898 1.775-11.541 4.629-17.538 5.829-12.47 2.474-23.872-0.366-32.74-9.877-30.921-33.168-61.674-66.484-92.474-99.758-0.73-0.805-1.349-1.718-0.181-1.099 8.992-10.006 17.354-20.662 27.061-29.94 81.064-77.54 164.91-151.986 250.882-224.063 9.936-8.347 10.274-15.695 1.040-25.1-42.338-43.068-84.689-86.111-127.059-129.154-9.413-9.575-16.846-9.152-25.291 1.295-76.686 94.78-156.8 186.609-239.707 276.002-1.334 1.453-2.562 3.029-4.257 5.042z" horiz-adv-x="1105" />
38
+<glyph unicode="&#xe61c;" d="M74.418 881.299h239.304v-228.491h-239.304v228.491zM393.455 881.299h239.304v-228.491h-239.304v228.491zM712.494 881.299h239.263v-228.491h-239.263v228.491zM74.418 562.265h239.304v-228.555h-239.304v228.555zM393.455 562.265h239.304v-228.555h-239.304v228.555zM712.494 562.265h239.263v-228.555h-239.263v228.555zM74.418 243.166h239.304v-228.465h-239.304v228.465zM393.455 243.166h239.304v-228.465h-239.304v228.465zM712.494 243.166h239.263v-228.465h-239.263v228.465z" horiz-adv-x="1026" />
39
+</font></defs></svg>

BIN
fonts/jitsi.ttf View File


BIN
fonts/jitsi.woff View File


+ 916
- 0
fonts/selection.json View File

@@ -0,0 +1,916 @@
1
+{
2
+	"IcoMoonType": "selection",
3
+	"icons": [
4
+		{
5
+			"icon": {
6
+				"paths": [
7
+					"M74.418 78.701h239.304v228.491h-239.304v-228.491z",
8
+					"M393.455 78.701h239.304v228.491h-239.304v-228.491z",
9
+					"M712.494 78.701h239.263v228.491h-239.263v-228.491z",
10
+					"M74.418 397.735h239.304v228.555h-239.304v-228.555z",
11
+					"M393.455 397.735h239.304v228.555h-239.304v-228.555z",
12
+					"M712.494 397.735h239.263v228.555h-239.263v-228.555z",
13
+					"M74.418 716.834h239.304v228.465h-239.304v-228.465z",
14
+					"M393.455 716.834h239.304v228.465h-239.304v-228.465z",
15
+					"M712.494 716.834h239.263v228.465h-239.263v-228.465z"
16
+				],
17
+				"attrs": [
18
+					{},
19
+					{},
20
+					{},
21
+					{},
22
+					{},
23
+					{},
24
+					{},
25
+					{},
26
+					{}
27
+				],
28
+				"isMulticolor": false,
29
+				"width": 1026,
30
+				"grid": 0,
31
+				"tags": [
32
+					"dailPad"
33
+				]
34
+			},
35
+			"attrs": [
36
+				{},
37
+				{},
38
+				{},
39
+				{},
40
+				{},
41
+				{},
42
+				{},
43
+				{},
44
+				{}
45
+			],
46
+			"properties": {
47
+				"order": 29,
48
+				"id": 0,
49
+				"prevSize": 32,
50
+				"code": 58908,
51
+				"name": "dialPad"
52
+			},
53
+			"setIdx": 0,
54
+			"setId": 2,
55
+			"iconIdx": 0
56
+		},
57
+		{
58
+			"icon": {
59
+				"paths": [
60
+					"M526.071 725.251c-28.637 30.869-56.465 60.861-84.282 90.859-51.578 55.636-103.047 111.376-154.842 166.832-7.606 8.135-15.958 16.1-25.317 22.012-28.075 17.708-58.31 18.090-88.472 6.492-59.84-23.028-80.004-90.727-59.734-139.234 5.413-12.95 13.721-23.601 23.709-33.173 70.256-67.351 140.506-134.717 210.76-202.077 15.638-14.993 31.264-29.995 47.364-45.45-9.302-9.529-18.386-18.833-27.451-28.137-12.122-12.442-13.234-20.28-5.067-35.498 4.735-8.816 4.789-8.878-2.627-16.198-20.012-19.72-40.168-39.198-63.498-55.188-27.167-18.624-57.161-24.233-89.083-19.849-53.402 7.328-91.609 38.372-121.413 81.046-12.774 18.299-15.365 40.313-17.517 61.875-3.23 32.245-2.415 64.479 2.209 96.597 1.654 11.515-3.863 16.539-13.835 11.175-8.306-4.448-16.095-11.048-22.115-18.353-15.574-18.89-22.223-42.042-27.474-65.395-12.955-57.652-8.86-114.49 12.191-169.495 32.345-84.537 79.743-159.571 145.953-221.932 13.659-12.857 176.841-180.564 202.944-207.021 7.493-7.599 14.895-7.635 22.393-0.028 43.009 43.641 85.985 87.316 128.927 131.029 8.117 8.267 8.019 15.097-0.222 23.49-26.339 26.834-52.726 53.627-79.106 80.419-6.244 6.334-97.34 82.437-73.027 128.816 22.693 25.090 46.196 49.449 69.575 73.904 1.189 1.238 4.686 1.386 6.523 0.632 3.63-1.499 6.848-3.997 10.248-6.066 9.745-5.94 19.545-4.918 27.812 3.083 11.755 11.381 23.405 22.858 35.392 34.59 4.807-4.575 9.939-9.41 15.027-14.294 27.128-26.039 54.272-52.071 81.351-78.146 16.413-15.778 18.652-28.418 11.038-49.658-10.473-29.221-14.356-59.677-13.85-90.624 1.017-61.045 20.438-115.334 61.003-161.416 32.825-37.286 72.054-64.311 121.643-74.325 35.227-7.101 69.139-4.513 100.663 14.026 6.365 3.752 11.908 9.007 17.455 14.005 3.491 3.125 3.153 6.236-0.565 9.98-42.503 42.885-84.772 86.013-127.154 129.035-12.442 12.638-12.356 23.167 0.196 35.914 40.344 40.978 80.597 82.050 120.936 123.052 10.076 10.233 19.537 10.021 29.504-0.134 43.195-44.077 86.449-88.090 129.706-132.118 1.21-1.233 2.572-2.322 5.135-4.624 5.491 5.893 11.895 10.924 15.961 17.406 19.452 30.944 22.608 64.83 17.073 100.25-14.253 91.080-97.188 175.638-197.712 190.123-39.977 5.764-79.372 2.562-118.067-9.031-5.898-1.775-11.541-4.629-17.538-5.829-12.47-2.474-23.872 0.366-32.74 9.877-30.921 33.168-61.674 66.484-92.474 99.758-0.73 0.805-1.349 1.718-0.181 1.099 8.992 10.006 17.354 20.662 27.061 29.94 81.064 77.54 164.91 151.986 250.882 224.063 9.936 8.347 10.274 15.695 1.040 25.1-42.338 43.068-84.689 86.111-127.059 129.154-9.413 9.575-16.846 9.152-25.291-1.295-76.686-94.78-156.8-186.609-239.707-276.002-1.334-1.453-2.562-3.029-4.257-5.042z"
61
+				],
62
+				"attrs": [
63
+					{
64
+						"opacity": 1,
65
+						"visibility": false
66
+					}
67
+				],
68
+				"width": 1105,
69
+				"grid": 0,
70
+				"tags": [
71
+					"settings"
72
+				]
73
+			},
74
+			"attrs": [
75
+				{
76
+					"opacity": 1,
77
+					"visibility": false
78
+				}
79
+			],
80
+			"properties": {
81
+				"order": 1,
82
+				"id": 33,
83
+				"prevSize": 32,
84
+				"code": 58907,
85
+				"name": "settings"
86
+			},
87
+			"setIdx": 1,
88
+			"setId": 1,
89
+			"iconIdx": 0
90
+		},
91
+		{
92
+			"icon": {
93
+				"paths": [
94
+					"M1223.129 242.783l-180.128 175.796v-217.716c0-74.673-59.512-135.496-132.599-135.496h-634.716c-73.084 0-132.596 60.823-132.596 135.496v609.237c0 74.673 59.512 135.496 132.596 135.496h634.716c73.084 0 132.599-60.82 132.599-135.496v-172.679l193.45 153.712c48.784 35.558 96.695-5.178 96.695-40.424v-483.533c-0.003-35.248-55.897-71.306-110.017-24.393zM601.169 760.065c-141.111 0-255.524-114.411-255.524-255.521s114.411-255.521 255.524-255.521c141.108 0 255.519 114.411 255.519 255.521-0 141.113-114.408 255.521-255.519 255.521z",
95
+					"M599.045 359.751c-80.474 0-145.727 65.253-145.727 145.729 0 80.471 65.25 145.727 145.727 145.727s145.729-65.256 145.729-145.727c0-80.474-65.253-145.729-145.729-145.729z"
96
+				],
97
+				"width": 1334,
98
+				"attrs": [
99
+					{
100
+						"opacity": 1,
101
+						"visibility": false
102
+					},
103
+					{
104
+						"opacity": 1,
105
+						"visibility": false
106
+					}
107
+				],
108
+				"tags": [
109
+					"webCam"
110
+				],
111
+				"grid": 0
112
+			},
113
+			"attrs": [
114
+				{
115
+					"opacity": 1,
116
+					"visibility": false
117
+				},
118
+				{
119
+					"opacity": 1,
120
+					"visibility": false
121
+				}
122
+			],
123
+			"properties": {
124
+				"order": 4,
125
+				"id": 32,
126
+				"prevSize": 32,
127
+				"code": 58888,
128
+				"name": "webCam",
129
+				"ligatures": ""
130
+			},
131
+			"setIdx": 1,
132
+			"setId": 1,
133
+			"iconIdx": 1
134
+		},
135
+		{
136
+			"icon": {
137
+				"paths": [
138
+					"M3.881 813.165h220.26v210.835h-220.26v-210.835z",
139
+					"M308.817 609.857h220.27v414.143h-220.27v-414.143z",
140
+					"M613.764 406.588h220.268v617.412h-220.268v-617.412z",
141
+					"M918.685 203.285h220.265v820.715h-220.265v-820.715z",
142
+					"M1223.629 0h220.263v1024h-220.263v-1024z"
143
+				],
144
+				"width": 1444,
145
+				"attrs": [
146
+					{
147
+						"opacity": 1,
148
+						"visibility": false
149
+					},
150
+					{
151
+						"opacity": 1,
152
+						"visibility": false
153
+					},
154
+					{
155
+						"opacity": 1,
156
+						"visibility": false
157
+					},
158
+					{
159
+						"opacity": 1,
160
+						"visibility": false
161
+					},
162
+					{
163
+						"opacity": 1,
164
+						"visibility": false
165
+					}
166
+				],
167
+				"tags": [
168
+					"connection-2"
169
+				],
170
+				"grid": 0
171
+			},
172
+			"attrs": [
173
+				{
174
+					"opacity": 1,
175
+					"visibility": false
176
+				},
177
+				{
178
+					"opacity": 1,
179
+					"visibility": false
180
+				},
181
+				{
182
+					"opacity": 1,
183
+					"visibility": false
184
+				},
185
+				{
186
+					"opacity": 1,
187
+					"visibility": false
188
+				},
189
+				{
190
+					"opacity": 1,
191
+					"visibility": false
192
+				}
193
+			],
194
+			"properties": {
195
+				"order": 27,
196
+				"id": 31,
197
+				"prevSize": 32,
198
+				"code": 58906,
199
+				"name": "connection",
200
+				"ligatures": ""
201
+			},
202
+			"setIdx": 1,
203
+			"setId": 1,
204
+			"iconIdx": 2
205
+		},
206
+		{
207
+			"icon": {
208
+				"paths": [
209
+					"M46.993-1.7c461.234 0 553.793 0 1015.024 0 35.919 0 53.356 25.959 53.356 57.959-0.581 303.259-0.325 606.488-0.449 909.809 0 43.984-13.203 57.058-57.703 57.058-443.072 0.126-556.453 0.126-999.553 0-44.534 0-57.799-13.009-57.799-57.058-0.098-303.257 0.485-608.072-0.093-911.329-0.034-26.21 11.301-53.761 47.217-56.439zM311.405 509.702c0 119.045-0.072 172.168 0.057 291.249 0.036 50.043 11.208 61.050 62.12 61.050 233.352 0 137.075 0 370.522 0 47.075 0 59.249-11.982 59.249-58.095 0.126-239.111 0.126-346.338 0-585.389 0-48.138-10.687-58.991-57.768-58.991-235.323-0.101-140.844-0.101-376.157 0-47.044 0-57.93 11.043-57.966 58.89-0.129 119.109-0.057 172.209-0.057 291.287zM153.944 121.434c-74.929 0.062-66.687-5.958-66.845 66.685-0.201 63.95-7.054 63.534 62.528 63.372 72.999-0.194 67.201 3.764 67.302-67.554 0-67.722 4.087-62.595-62.985-62.502zM963.644 121.434c-71.159 0.034-65.56-6.185-65.751 65.364-0.129 67.302-4.508 64.693 64.528 64.693 73.089 0 65.299 2.031 65.299-66.238-0.003-68.646 6.956-63.911-64.076-63.818zM216.828 837.592c0.359-73.094 4.639-66.914-67.358-67.17-68.104-0.191-62.569-2.763-62.407 63.31 0.129 73.476-6.954 66.52 67.074 66.649 66.042 0.065 63.142 6.056 62.691-62.789zM1027.718 835.6c0.134-68.334 6.443-65.304-63.297-65.178-70.132 0.132-66.656-5.793-66.527 65.304 0.129 70.645-4.384 64.721 63.756 64.657 71.995-0.132 66.202 6.698 66.068-64.783zM1027.718 617.923c0-70.55 7.219-66.842-67.485-66.522-0.898 0-1.873 0-2.838 0-59.375 0-59.375 0-59.375 58.023 0 77.922-6.443 69.936 69.293 70.196 66.076 0.387 60.539 3.091 60.405-61.697zM151.307 470.127c68.295 0.163 65.815 5.568 65.624-62.982-0.194-71.128 4.895-64.917-66.014-65.010-69.905-0.101-63.813-4.704-63.885 63.978-0.062 67.431-5.7 64.463 64.275 64.014zM961.263 470.127c72.511 0.258 66.589 4.603 66.455-64.494 0-68.558 6.185-63.537-64.267-63.498-70.196 0.028-65.686-6.053-65.498 65.493 0.132 62.5 0.067 62.5 63.31 62.5zM150.399 679.62c71.004 0 66.659 6.567 66.466-64.528-0.163-63.694-0.036-63.501-65.013-63.756-70.805-0.258-64.822-2.673-64.822 63.756 0.036 69.167-5.919 64.788 63.369 64.528z"
210
+				],
211
+				"width": 1115,
212
+				"attrs": [],
213
+				"tags": [
214
+					"filmstrip"
215
+				],
216
+				"grid": 0
217
+			},
218
+			"attrs": [],
219
+			"properties": {
220
+				"order": 25,
221
+				"id": 29,
222
+				"prevSize": 32,
223
+				"code": 58905,
224
+				"name": "filmstrip",
225
+				"ligatures": ""
226
+			},
227
+			"setIdx": 1,
228
+			"setId": 1,
229
+			"iconIdx": 3
230
+		},
231
+		{
232
+			"icon": {
233
+				"paths": [
234
+					"",
235
+					"M797.086 847.699c-0.059-0.163-0.119-0.328-0.16-0.485-71.399 45.638-151.782 69.931-234.023 69.931-0.013 0-0.021 0-0.028 0-122.52 0-237.501-52.772-315.469-144.741-99.778-117.698-134.252-329.954-73.022-427.789 4.004 1.662 7.875 3.233 11.68 4.773 13.585 5.511 26.413 10.716 42.305 19.096 6.063 3.202 12.338 4.812 18.673 4.812 11.714 0 22.6-5.648 29.848-15.486 7.815-10.617 10.313-24.778 6.538-36.951l-3.525-11.41c-10.687-34.59-21.723-70.354-34.211-105.078-9.983-27.765-22.399-62.327-59.226-62.327-12.057 0-26.037 3.656-46.73 12.204-44.294 18.319-71.058 29.961-114.534 49.81-15.102 6.887-25.234 22.698-25.203 39.343 0.028 15.842 8.992 29.337 23.975 36.115 18.208 8.257 30.536 13.716 43.468 19.447l10.687 4.753c-101.938 259.102 24.803 526.458 211.314 639.212 83.497 50.474 178.5 77.14 274.769 77.14h0.041c102.72 0 205.561-31.099 284.501-85.198-31.729-28.803-45.566-69.167-51.671-87.171z",
236
+					"M1098.203 749.91c-18.113-8.577-30.356-14.258-43.221-20.244l-10.496-4.892c106.448-257.268-15.569-526.801-200.067-642.788-85.36-53.663-183.123-82.032-282.716-82.032-104.848 0-206.41 30.593-285.967 86.165l-5.385 3.764c31.597 27.564 45.86 66.788 52.917 86.41 72.926-47.94 155.675-73.409 239.895-73.409 125.407 0 242.142 54.785 320.294 150.316 97.683 119.447 128.439 332.255 65.498 429.015-3.989-1.736-7.815-3.385-11.624-4.998-13.471-5.759-26.204-11.18-41.954-19.821-6.203-3.424-12.645-5.155-19.212-5.155-11.585 0-22.399 5.558-29.69 15.267-7.813 10.434-10.478 24.432-6.966 36.515l3.279 11.301c10.096 34.845 20.531 70.857 32.412 105.842 9.588 28.238 21.514 63.382 59.179 63.382 11.843 0 25.577-3.424 45.881-11.399 44.351-17.439 71.319-28.601 115.409-47.777 15.19-6.623 25.601-22.252 25.859-38.894 0.281-15.822-8.445-29.499-23.325-36.569z"
237
+				],
238
+				"width": 1122,
239
+				"attrs": [],
240
+				"tags": [
241
+					"reload"
242
+				],
243
+				"grid": 0
244
+			},
245
+			"attrs": [],
246
+			"properties": {
247
+				"order": 24,
248
+				"id": 28,
249
+				"prevSize": 32,
250
+				"code": 58904,
251
+				"name": "reload",
252
+				"ligatures": ""
253
+			},
254
+			"setIdx": 1,
255
+			"setId": 1,
256
+			"iconIdx": 4
257
+		},
258
+		{
259
+			"icon": {
260
+				"paths": [
261
+					"M65.774 443.252c10.052-9.358 25.988-21.772 43.285-32.699 51.335-32.619 108.115-50.897 166.829-64.133 48.763-10.95 98.246-16.887 148.066-20.203 55.755-3.754 111.559-3.78 167.392-0.797 39.944 2.185 79.686 6.502 119.119 13.211 43.956 7.506 87.037 17.994 128.785 33.751 24.419 9.175 48.172 20.105 70.534 33.573 29.716 17.891 56.552 39.224 77.22 67.348 20.819 28.302 31.721 60.407 33.829 95.392 1.747 27.402 0.717 54.697-5.656 81.588-2.877 12.083-8.226 23.134-16.554 32.386-11.417 12.648-26.424 17.021-42.772 17.636-20.463 0.668-40.411-4.113-60.361-8.226-38.912-7.97-77.836-16.245-116.699-24.728-14.137-3.034-28.689-5.093-41.649-12.596-22.308-12.955-34.445-31.775-34.033-57.783 0.258-16.869 2.216-33.782 2.469-50.695 0.312-25.010-9.923-45.161-30.898-59.042-14.395-9.539-30.694-14.911-47.452-18.665-40.411-9.046-81.387-10.179-122.561-10.050-28.821 0.126-57.582 1.669-86.093 6.143-19.947 3.161-39.562 7.813-57.732 17.014-24.318 12.364-39.353 31.465-40.073 59.352-0.441 16.351 0.973 32.802 1.927 49.15 0.642 11.822-0.080 23.446-5.295 34.288-9.26 19.385-24.935 31.672-45.37 36.964-22.646 5.865-45.605 10.54-68.504 15.223-38.102 7.764-76.216 15.368-114.416 22.517-14.526 2.774-29.254 1.951-43.133-3.602-18.742-7.457-28.924-22.775-34.138-41.337-7.096-25.397-7.841-51.513-6.966-77.731 0.9-27.040 5.883-53.237 18.404-77.607 9.794-19.065 22.491-35.955 42.493-55.642z"
262
+				],
263
+				"width": 1026,
264
+				"attrs": [],
265
+				"tags": [
266
+					"hangup"
267
+				],
268
+				"grid": 0
269
+			},
270
+			"attrs": [],
271
+			"properties": {
272
+				"order": 23,
273
+				"id": 27,
274
+				"prevSize": 32,
275
+				"code": 58903,
276
+				"name": "hangup",
277
+				"ligatures": ""
278
+			},
279
+			"setIdx": 1,
280
+			"setId": 1,
281
+			"iconIdx": 5
282
+		},
283
+		{
284
+			"icon": {
285
+				"paths": [
286
+					"M1016.824 954.234c-2.051-15.373-5.331-30.537-7.859-45.847-8.334-50.458-33.006-86.503-82.063-107.922-78.373-34.198-155.103-72.121-232.111-109.395-55.686-27.025-52.409-88.519-34.097-114.413 11.89-16.88 22.344-34.572 23.575-56.852 0.444-8.226 8.303-18.99 15.817-23.294 26.070-15.035 38.161-39.565 50.020-64.982 3.109-6.696 7.379-13.187 12.266-18.722 8.471-9.668 12.264-19.235 6.079-31.842-1.435-2.97 1.331-8.334 2.8-12.367 4.304-12.026 10.285-23.676 13.12-36.043 3.556-15.339 5.398-31.225 6.252-46.975 0.374-6.523-6.045-13.528-5.362-19.95 3.483-31.912-14.557-56.202-24.739-83.977-12.465-34.198-36.928-55.619-58.519-81.106-4.066-4.784-5.227-13.051-5.571-19.886-0.72-14.588-6.732-21.797-22.004-19.813-6.11 0.787-12.772 2.495-18.41 0.991-4.957-1.334-12.406-6.288-12.676-10.112-1.538-19.336-8.264-22.517-28.016-19.235-12.364 2.049-28.457-9.155-40.584-17.561-10.145-7.041-18.89-10.045-30.681-7.176-4.915 1.195-11.544 0.991-15.716-1.435-4.441-2.663-8.775-4.237-13.118-5.124v-0.748c-0.957 0.031-1.982 0.204-2.939 0.307-0.955-0.103-1.912-0.274-2.867-0.307v0.751c-4.371 0.888-8.749 2.462-13.156 5.124-4.133 2.425-10.762 2.632-15.68 1.435-11.822-2.867-20.569 0.137-30.684 7.176-12.158 8.404-28.217 19.609-40.584 17.561-19.746-3.282-26.509-0.103-28.047 19.235-0.307 3.824-7.686 8.778-12.676 10.112-5.669 1.504-12.297-0.204-18.446-0.991-15.236-1.984-21.25 5.225-21.97 19.813-0.338 6.832-1.502 15.102-5.568 19.886-21.588 25.485-46.051 46.908-58.555 81.106-10.117 27.773-28.189 52.063-24.669 83.975 0.686 6.422-5.744 13.427-5.4 19.95 0.89 15.749 2.735 31.636 6.254 46.975 2.836 12.367 8.814 24.019 13.151 36.043 1.437 4.033 4.242 9.397 2.769 12.367-6.182 12.607-2.358 22.174 6.115 31.842 4.853 5.535 9.121 12.026 12.23 18.722 11.859 25.417 23.947 49.947 50.014 64.982 7.519 4.304 15.378 15.068 15.858 23.294 1.192 22.28 11.65 39.972 23.57 56.852 18.281 25.895 21.147 86.738-34.162 114.413-76.456 38.264-153.741 75.2-232.042 109.395-49.129 21.418-73.726 57.463-82.063 107.922-2.526 15.311-5.878 30.475-7.859 45.847-3.009 22.928-7.823 69.766-7.823 69.766h1024.611c-0.003 0-4.781-46.838-7.787-69.766z"
287
+				],
288
+				"width": 1025,
289
+				"attrs": [],
290
+				"tags": [
291
+					"contactListIcon"
292
+				],
293
+				"grid": 0
294
+			},
295
+			"attrs": [],
296
+			"properties": {
297
+				"order": 21,
298
+				"id": 26,
299
+				"prevSize": 32,
300
+				"code": 58901,
301
+				"name": "contactList",
302
+				"ligatures": ""
303
+			},
304
+			"setIdx": 1,
305
+			"setId": 1,
306
+			"iconIdx": 6
307
+		},
308
+		{
309
+			"icon": {
310
+				"paths": [
311
+					"M1026.175 510.933c0 283.345-229.709 513.051-513.108 513.051-283.348 0-513.069-229.703-513.069-513.051 0-283.384 229.721-513.106 513.069-513.106 283.4-0 513.108 229.721 513.108 513.106z",
312
+					"M513.069 1023.985c135.725 0 259.112-52.711 350.874-138.739-9.717-11.65-22.551-21.114-39.113-28.343-58.934-25.745-116.627-54.256-174.534-82.256-41.871-20.322-39.405-66.587-25.639-86.057 8.943-12.692 16.805-25.998 17.728-42.746 0.333-6.169 6.241-14.284 11.889-17.522 19.604-11.304 28.697-29.747 37.604-48.861 2.34-5.031 5.555-9.89 9.229-14.077 6.37-7.243 9.224-14.436 4.572-23.942-1.086-2.209 1.004-6.241 2.105-9.273 3.238-9.067 7.733-17.801 9.861-27.115 2.67-11.549 4.059-23.48 4.701-35.323 0.281-4.902-4.544-10.184-4.033-14.986 2.621-24.022-10.943-42.271-18.598-63.158-9.376-25.714-27.771-41.82-44.005-60.97-3.058-3.623-3.927-9.838-4.188-14.952-0.539-10.981-5.060-16.415-16.544-14.924-4.598 0.601-9.611 1.886-13.843 0.756-3.728-0.988-9.327-4.724-9.534-7.604-1.153-14.539-6.213-16.929-21.065-14.475-9.296 1.543-21.395-6.858-30.513-13.203-7.632-5.292-14.209-7.555-23.069-5.38-3.697 0.9-8.682 0.746-11.815-1.094-3.341-1.976-6.605-3.184-9.867-3.839v-0.552c-0.72 0.013-1.489 0.129-2.209 0.217-0.722-0.088-1.44-0.206-2.157-0.217v0.552c-3.29 0.653-6.574 1.863-9.89 3.839-3.112 1.837-8.091 1.992-11.797 1.094-8.886-2.173-15.448 0.088-23.064 5.38-9.157 6.345-21.222 14.746-30.518 13.203-14.862-2.451-19.94-0.062-21.093 14.475-0.219 2.879-5.793 6.616-9.516 7.604-4.278 1.13-9.247-0.155-13.887-0.756-11.456-1.491-15.987 3.943-16.516 14.924-0.261 5.111-1.13 11.33-4.19 14.952-16.222 19.15-34.616 35.258-44.018 60.97-7.627 20.887-21.204 39.136-18.57 63.158 0.511 4.802-4.304 10.083-4.046 14.986 0.655 11.846 2.041 23.776 4.701 35.323 2.131 9.312 6.626 18.048 9.89 27.115 1.094 3.032 3.174 7.062 2.082 9.273-4.649 9.508-1.788 16.702 4.582 23.942 3.674 4.188 6.874 9.046 9.224 14.077 8.899 19.111 17.992 37.557 37.596 48.861 5.653 3.238 11.559 11.353 11.905 17.522 0.913 16.748 8.773 30.054 17.739 42.746 13.745 19.47 15.902 65.245-25.673 86.057-57.52 28.772-115.6 56.511-174.503 82.256-16.57 7.23-29.409 16.694-39.123 28.338 91.759 86.031 215.138 138.744 350.843 138.744z"
313
+				],
314
+				"width": 1026,
315
+				"attrs": [],
316
+				"tags": [
317
+					"avatar"
318
+				],
319
+				"grid": 0
320
+			},
321
+			"attrs": [],
322
+			"properties": {
323
+				"order": 22,
324
+				"id": 25,
325
+				"prevSize": 32,
326
+				"code": 58902,
327
+				"name": "avatar",
328
+				"ligatures": ""
329
+			},
330
+			"setIdx": 1,
331
+			"setId": 1,
332
+			"iconIdx": 7
333
+		},
334
+		{
335
+			"icon": {
336
+				"paths": [
337
+					"M839.334 573.513c0 79.199-64.257 143.461-143.486 143.461-79.174 0-143.431-64.262-143.431-143.461 0-79.227 64.257-143.431 143.431-143.431 79.23 0.003 143.486 64.204 143.486 143.431z",
338
+					"M1372.769 253.515c-6.595-39.459-29.496-64.168-70.606-69.276-23.788-2.918-38.256-15.637-44.726-39.040-9.706-35.519-33.678-58.993-67.811-70.76-24.807-8.595-50.3-16.462-76.186-20.491-69.655-10.911-140.51-15.924-209.526-29.943-69.53-14.178-139.053-23.342-208.893-24.073-69.845 0.731-139.371 9.895-208.893 24.073-69.022 14.016-139.876 19.029-209.526 29.94-25.884 4.028-51.385 11.896-76.189 20.491-34.13 11.767-58.105 35.24-67.814 70.76-6.469 23.403-20.934 36.122-44.723 39.040-41.105 5.108-64.006 29.82-70.601 69.278-6.788 40.41-11.737 81.202-16.811 121.885-2.728 22.109 6.405 32.576 30.386 32.448 120.839-0.697 241.692-0.697 362.595-0.095 24.045 0.128 33.115-9.388 33.433-33.338 0.762-57.369-4.631-111.895-47.136-156.618-7.041-7.39-10.849-25.281-6.726-33.846 4.062-8.5 40.856-16.716 45.992-16.716 43.328 0.19 43.138 0.223 49.418 43.423 1.205 8.28 2.539 18.46 7.803 23.853 30.319 30.863 21.252 66.706 7.234 97.634-30.389 67.139-61.537 134.827-100.867 196.869-73.458 115.831-104.41 160.744-198.679 260.844-58.675 62.293-68.573 101.687-68.573 137.466 0 70.989 41.038 96.744 137.148 96.744 181.614 0 260.908-0.315 442.528-0.315 181.614 0 260.905 0.315 442.528 0.315 96.102 0 137.142-25.752 137.142-96.744 0-35.779-9.898-75.173-68.573-137.466-94.264-100.1-125.222-145.012-198.679-260.844-39.333-62.042-70.475-129.73-100.861-196.869-14.019-30.927-23.091-66.77 7.234-97.634 5.264-5.393 6.595-15.575 7.803-23.853 6.28-43.202 6.090-43.233 49.412-43.423 5.139 0 41.933 8.216 45.992 16.716 4.126 8.565 0.318 26.453-6.723 33.846-42.502 44.723-47.898 99.249-47.136 156.618 0.315 23.947 9.388 33.466 33.43 33.338 120.909-0.603 241.753-0.603 362.601 0.095 23.975 0.126 33.109-10.342 30.383-32.448-5.075-40.686-10.018-81.475-16.806-121.885zM959.991 576.495c0 146.315-118.624 264.936-264.97 264.936s-264.973-118.621-264.973-264.936c0-146.318 118.624-264.936 264.973-264.936 146.343-0 264.97 118.621 264.97 264.936z"
339
+				],
340
+				"width": 1390,
341
+				"attrs": [],
342
+				"tags": [
343
+					"callRetro"
344
+				],
345
+				"grid": 0
346
+			},
347
+			"attrs": [],
348
+			"properties": {
349
+				"order": 17,
350
+				"id": 24,
351
+				"prevSize": 32,
352
+				"code": 58897,
353
+				"name": "callRetro",
354
+				"ligatures": ""
355
+			},
356
+			"setIdx": 1,
357
+			"setId": 1,
358
+			"iconIdx": 8
359
+		},
360
+		{
361
+			"icon": {
362
+				"paths": [
363
+					"M310.262 929.57c0 52.13-42.207 94.43-94.399 94.43h-121.405c-52.195 0-94.458-42.3-94.458-94.43v-835.67c0-52.158 42.266-94.458 94.458-94.458h121.403c52.195 0 94.399 42.3 94.399 94.458v835.67z",
364
+					"M1077.118-0.56h-561.987c-72.919 0-132.33 60.673-132.33 135.253v754.115c0 74.518 59.411 135.191 132.33 135.191h561.987c72.98 0 132.394-60.673 132.394-135.191v-754.115c0-74.58-59.414-135.253-132.394-135.253zM529.83 133.094h532.653l0.062 143.298h-532.715v-143.298zM643.255 908.372h-113.551v-113.551h113.551v113.551zM643.255 703.252h-113.551v-113.554h113.551v113.554zM643.382 496.244h-113.551v-113.554h113.551v113.554zM852.9 908.372h-113.551v-113.551h113.551v113.551zM852.9 703.252h-113.551v-113.554h113.551v113.554zM853.027 496.244h-113.556v-113.554h113.556v113.554zM1062.548 908.372h-113.556v-113.551h113.556v113.551zM1062.548 703.252h-113.556v-113.554h113.556v113.554zM1062.669 496.244h-113.554v-113.554h113.554v113.554z"
365
+				],
366
+				"width": 1210,
367
+				"attrs": [],
368
+				"tags": [
369
+					"callModern"
370
+				],
371
+				"grid": 0
372
+			},
373
+			"attrs": [],
374
+			"properties": {
375
+				"order": 18,
376
+				"id": 23,
377
+				"prevSize": 32,
378
+				"code": 58898,
379
+				"name": "callModern",
380
+				"ligatures": ""
381
+			},
382
+			"setIdx": 1,
383
+			"setId": 1,
384
+			"iconIdx": 9
385
+		},
386
+		{
387
+			"icon": {
388
+				"paths": [
389
+					"M1123.444 20.985c-23.593-26.481-64.131-28.989-90.74-5.395l-1008.269 893.436c-26.609 23.468-28.991 64.131-5.46 90.676 12.674 14.306 30.308 21.649 48.126 21.649 15.123 0 30.372-5.401 42.544-16.195l130.045-115.22c90.743 81.844 210.569 132.165 342.473 132.101 282.816-0.061 510.913-227.969 511.287-510.972 0.126-109.934-34.682-211.367-93.499-294.72l118.088-104.625c26.483-23.526 28.997-64.129 5.404-90.735zM944.422 510.182c0.128 200.922-161.896 363.201-362.509 362.952-87.56-0.123-167.573-31.151-230.061-82.569l331.277-293.509v73.176c1.071 60.993 32.696 92.18 94.944 93.692 61.997-1.512 93.686-32.763 95.131-93.756v-41.096h-72.227v47.499c0.251 4.642-0.564 10.607-2.511 17.949-1.25 3.261-3.448 6.020-6.525 8.093-3.197 2.572-7.845 3.828-13.868 3.828-10.543-0.31-17.132-4.268-19.827-11.921-1.068-3.512-1.947-6.905-2.508-10.163-0.254-2.887-0.377-5.532-0.377-7.786v-143.511l42.477-37.634c0.215 0.432 0.452 0.851 0.63 1.303 1.947 6.467 2.762 12.799 2.511 19.076v36.772h72.227v-30.121c-0.246-31.245-9.086-54.699-26.363-70.447l40.711-36.069c35.787 56.055 56.803 122.585 56.867 194.244z",
390
+					"M239.795 628.53c-12.613-37.023-19.827-76.557-19.827-117.913-0.19-200.236 161.584-362.009 361.945-362.135 56.853 0 110.313 13.302 158.133 36.398l117.846-104.421c-79.444-50.952-173.758-80.817-275.292-80.948-283.377-0.181-511.354 227.729-511.789 511.675-0.126 79.567 18.636 154.679 51.137 221.882l117.848-104.538z",
391
+					"M388.576 333.98h-97.514v249.057l72.23-64.070v-0.689h0.815l117.72-104.418c0-0.564 0.123-0.94 0.123-1.509 0.753-53.898-30.369-80.069-93.374-78.37zM405.959 398.483c1.942 2.767 3.074 6.469 3.323 11.112 0.312 4.452 0.438 9.6 0.438 15.246 0.251 10.916-0.689 19.83-2.949 26.985-2.952 7.594-10.983 11.357-24.159 11.357h-19.325v-74.043h15.31c7.842 0 13.865 0.683 18.072 2.19 4.397 1.573 7.468 3.953 9.29 7.153z"
392
+				],
393
+				"width": 1140,
394
+				"attrs": [],
395
+				"tags": [
396
+					"recDisable"
397
+				],
398
+				"grid": 0
399
+			},
400
+			"attrs": [],
401
+			"properties": {
402
+				"order": 19,
403
+				"id": 22,
404
+				"prevSize": 32,
405
+				"code": 58899,
406
+				"name": "recDisable",
407
+				"ligatures": ""
408
+			},
409
+			"setIdx": 1,
410
+			"setId": 1,
411
+			"iconIdx": 10
412
+		},
413
+		{
414
+			"icon": {
415
+				"paths": [
416
+					"M581.278-1.708c284.857 0.19 514.807 230.517 514.427 514.997-0.378 285.047-230.073 514.553-514.869 514.615-284.541 0.062-515.311-230.517-514.933-514.422 0.439-285.936 230.009-515.439 515.375-515.19zM580.579 148.244c-201.764 0.123-364.666 163.032-364.478 364.663 0 202.018 162.524 364.735 364.478 364.984 202.018 0.316 365.174-163.030 365.048-365.423-0.252-201.767-163.156-364.35-365.048-364.224z",
417
+					"M287.698 335.093h98.196c63.442-1.767 94.785 24.518 94.027 78.863 0.254 19.081-2.211 34.882-7.456 47.521-6.005 12.508-18.706 21.988-38.167 28.181v0.819c28.373 6.259 43.031 23.573 43.981 51.946v57.689c0 11.247 0.254 22.813 0.758 34.756 0.819 12.005 3.033 20.979 6.696 27.043h-71.846c-3.727-6.064-6.128-15.038-7.14-27.043-1.012-11.943-1.454-23.509-1.138-34.756v-52.321c0-9.603-2.214-16.553-6.573-20.979-4.675-4.107-12.701-6.19-24.012-6.19h-14.599v141.291h-72.73v-326.82zM360.428 465.139h19.463c13.271 0 21.359-3.794 24.331-11.375 2.276-7.204 3.221-16.304 2.969-27.171 0-5.815-0.126-10.867-0.442-15.418-0.252-4.675-1.392-8.404-3.352-11.247-1.831-3.157-4.926-5.561-9.352-7.14-4.233-1.454-10.299-2.211-18.2-2.211h-15.418v74.564z",
418
+					"M498.372 335.093h162.082v62.687h-89.35v65.587h78.103v62.685h-78.103v73.11h92.822v62.749h-165.557v-326.818z",
419
+					"M682.507 424.001c0.316-31.782 9.416-55.542 27.425-71.407 17.44-15.29 40.185-22.936 68.181-22.936 28.247 0 51.119 7.646 68.623 23 17.82 15.798 26.92 39.623 27.171 71.407v30.333h-72.73v-37.031c0.254-6.192-0.57-12.639-2.527-19.209-1.264-3.157-3.475-5.938-6.573-8.214-3.221-1.515-7.898-2.404-13.964-2.404-10.615 0.316-17.249 3.855-19.967 10.618-2.211 6.573-3.223 13.017-2.907 19.209v161.956c0 2.273 0.126 4.865 0.38 7.772 0.568 3.411 1.454 6.824 2.527 10.233 2.717 7.775 9.352 11.756 19.967 12.007 6.067 0 10.744-1.261 13.964-3.791 3.098-2.15 5.309-4.867 6.573-8.216 1.96-7.33 2.782-13.33 2.527-18.007v-47.837h72.73v41.328c-1.451 61.547-33.364 93.015-95.794 94.469-62.685-1.454-94.53-32.922-95.607-94.343v-148.937z"
420
+				],
421
+				"width": 1142,
422
+				"attrs": [],
423
+				"tags": [
424
+					"recEnable"
425
+				],
426
+				"grid": 0
427
+			},
428
+			"attrs": [],
429
+			"properties": {
430
+				"order": 20,
431
+				"id": 21,
432
+				"prevSize": 32,
433
+				"code": 58900,
434
+				"name": "recEnable",
435
+				"ligatures": ""
436
+			},
437
+			"setIdx": 1,
438
+			"setId": 1,
439
+			"iconIdx": 11
440
+		},
441
+		{
442
+			"icon": {
443
+				"paths": [
444
+					"M513.036 0c283.57 0.188 512.414 229.474 512.037 512.664-0.377 283.756-228.965 512.228-512.541 512.288-283.191 0.067-512.912-229.474-512.533-512.099 0.374-284.638 228.965-513.103 513.036-512.853zM512.285 149.271c-200.79 0.126-362.957 162.291-362.831 363.014 0 201.105 161.788 363.081 362.831 363.334 201.164 0.312 363.581-162.294 363.455-363.772-0.25-200.852-162.417-362.702-363.455-362.575z",
445
+					"M597.392 512.412h-0.503l-0.126-0.126h0.63l115.615-115.866c0 0-78.247-78.505-82.153-82.153l-117.754 116.183-119.014-118.196-82.024 82.279 88.815 88.818 26.674 29.061h0.503l0.253 0.253h-0.756l-115.489 115.806c0 0 78.249 78.564 82.024 82.212l117.76-116.245 119.008 118.26 82.153-82.406-88.815-88.82-26.8-29.061z"
446
+				],
447
+				"width": 1025,
448
+				"attrs": [],
449
+				"tags": [
450
+					"kickUser1"
451
+				],
452
+				"grid": 0
453
+			},
454
+			"attrs": [],
455
+			"properties": {
456
+				"order": 16,
457
+				"id": 20,
458
+				"prevSize": 32,
459
+				"code": 58895,
460
+				"name": "kick1",
461
+				"ligatures": ""
462
+			},
463
+			"setIdx": 1,
464
+			"setId": 1,
465
+			"iconIdx": 12
466
+		},
467
+		{
468
+			"icon": {
469
+				"paths": [
470
+					"M66.491 1023.997h1027.94z",
471
+					"M1198.596 472.014c-135.702-135.893-271.415-271.66-407.367-407.241-6.244-6.089-13.868-11.714-21.867-14.653-31.236-11.399-63.48 12.808-63.728 47.674-0.253 67.663-0.126 135.331-0.126 202.965 0 4.281 0 8.62 0 13.964-6.123 0-10.87 0-15.62 0-106.247 0-212.334-0.062-318.485 0-35.178 0.031-54.86 19.71-54.86 54.922-0.059 92.778-0.059 185.5 0 278.345 0 35.8 19.682 55.479 55.611 55.479 105.775 0.062 211.423 0 317.11 0 4.877 0 9.622 0 16.245 0 0 5.375 0 9.374 0 13.309 0 66.793 0.25 133.703 0 200.496 0 23.057 9.247 40.241 30.242 49.547 21.116 9.371 39.361 2.81 55.231-12.937 135.955-136.079 272.031-272.034 407.989-408.175 23.49-23.431 23.24-50.112-0.374-73.695z",
472
+					"M532.596 915.271c-2.627-19.62-22.055-32.116-27.928-35.426-8.811-5.186-18.371-5.811-25.683-5.811l-6.37 0.126-227.926-0.188c-56.042-0.124-98.468-42.173-98.591-97.717-0.188-177.127-0.188-354.321 0.065-531.51 0.059-53.983 42.671-96.53 96.968-96.811l235.922-0.062c33.426-0.031 51.294-16.121 54.481-49.235 1.001-12.965 0.81-26.052 0.439-39.172-1.128-39.737-19.369-57.481-59.107-57.512l-217.866 0.121c-15.494 0-30.926 0.562-46.361 2.343-115.52 13.154-207.555 113.649-209.681 228.798-1.313 63.888-0.996 127.804-0.684 191.718l0.186 60.201h-0.377c0 0-0.121 227.954 0.065 289.811 0.248 135.702 101.528 240.796 235.545 244.48 33.176 0.875 66.419 1.189 99.654 1.189h0.065l148.012-0.753c29.368 0 47.483-17.37 49.73-47.545 1.755-22.058 1.628-40.173-0.557-57.045z"
473
+				],
474
+				"width": 1216,
475
+				"attrs": [],
476
+				"tags": [
477
+					"kickUser"
478
+				],
479
+				"grid": 0
480
+			},
481
+			"attrs": [],
482
+			"properties": {
483
+				"order": 15,
484
+				"id": 19,
485
+				"prevSize": 32,
486
+				"code": 58896,
487
+				"name": "kick",
488
+				"ligatures": ""
489
+			},
490
+			"setIdx": 1,
491
+			"setId": 1,
492
+			"iconIdx": 13
493
+		},
494
+		{
495
+			"icon": {
496
+				"paths": [
497
+					"M955.816-0.317h-822.841c-73.303 0-132.975 60.931-132.975 135.844v542.186c0 74.851 59.672 135.785 132.975 135.785h822.841c73.239 0 132.916-60.934 132.916-135.785v-542.186c0-74.913-59.677-135.844-132.916-135.844zM949.51 671.216h-810.226v-529.223h810.164l0.062 529.223z",
498
+					"M945.219 959.66c0 35.738-28.261 64.66-63.207 64.66h-675.228c-34.949 0-63.209-28.921-63.209-64.66v-29.618c0-35.7 28.261-64.657 63.209-64.657h675.228c34.946 0 63.207 28.957 63.207 64.657v29.618z",
499
+					"M776.792 617.566l-302.669-302.605 112.411-112.316 302.545 302.602v112.318z"
500
+				],
501
+				"width": 1089,
502
+				"attrs": [],
503
+				"tags": [
504
+					"shareDesktop"
505
+				],
506
+				"grid": 0
507
+			},
508
+			"attrs": [],
509
+			"properties": {
510
+				"order": 14,
511
+				"id": 18,
512
+				"prevSize": 32,
513
+				"code": 58882,
514
+				"name": "share-desktop",
515
+				"ligatures": ""
516
+			},
517
+			"setIdx": 1,
518
+			"setId": 1,
519
+			"iconIdx": 14
520
+		},
521
+		{
522
+			"icon": {
523
+				"paths": [
524
+					"M953.901-2.387h-819.775c-72.965 0-132.418 60.712-132.418 135.344v540.168c0 74.567 59.453 135.279 132.418 135.279h35.823v212.891l344.966-212.891h438.986c72.963 0 132.415-60.709 132.415-135.279v-540.168c0.003-74.632-59.45-135.344-132.415-135.344zM494.429 666.646l-195.769 124.001v-124.001h-158.184v-527.252h807.078l0.124 527.252h-453.249z"
525
+				],
526
+				"width": 1089,
527
+				"attrs": [],
528
+				"tags": [
529
+					"chatNoLines"
530
+				],
531
+				"grid": 0
532
+			},
533
+			"attrs": [],
534
+			"properties": {
535
+				"order": 13,
536
+				"id": 17,
537
+				"prevSize": 32,
538
+				"code": 58886,
539
+				"name": "chat-simple",
540
+				"ligatures": ""
541
+			},
542
+			"setIdx": 1,
543
+			"setId": 1,
544
+			"iconIdx": 15
545
+		},
546
+		{
547
+			"icon": {
548
+				"paths": [
549
+					"M952.366-0.134h-820.477c-73.027 0-132.531 60.761-132.531 135.455v752.358c0 74.66 59.504 135.424 132.531 135.424h820.48c73.089 0 132.596-60.766 132.596-135.424v-752.358c-0.003-74.694-59.507-135.455-132.599-135.455zM946.135 881.199h-807.894v-739.462h807.834l0.059 739.462z",
550
+					"M569.742 448.125l91.772-96.865-77.305-77.308 316.393-85.040-84.981 316.391-75.357-75.293-91.834 96.865z",
551
+					"M514.763 575.437l-91.767 96.865 77.3 77.305-316.388 85.043 84.979-316.388 75.357 75.29 91.834-96.871z"
552
+				],
553
+				"width": 1089,
554
+				"attrs": [],
555
+				"tags": [
556
+					"fullScreen 1"
557
+				],
558
+				"grid": 0
559
+			},
560
+			"attrs": [],
561
+			"properties": {
562
+				"order": 12,
563
+				"id": 16,
564
+				"prevSize": 32,
565
+				"code": 58893,
566
+				"name": "full-screen",
567
+				"ligatures": ""
568
+			},
569
+			"setIdx": 1,
570
+			"setId": 1,
571
+			"iconIdx": 16
572
+		},
573
+		{
574
+			"icon": {
575
+				"paths": [
576
+					"M953.225 0.82h-820.663c-73.045 0-132.562 60.776-132.562 135.488v752.525c0 74.647 59.517 135.421 132.562 135.421h820.66c73.107 0 132.624-60.776 132.624-135.421v-752.525c0.003-74.712-59.515-135.488-132.622-135.488zM946.994 882.353h-808.079v-739.596h808.017l0.062 739.596z",
577
+					"M915.539 253.3l-91.795 96.889 77.326 77.323-316.463 85.030 84.999-316.463 75.373 75.339 91.852-96.889z",
578
+					"M170.625 771.779l91.793-96.884-77.323-77.326 316.463-85.028-84.997 316.46-75.373-75.342-91.857 96.891z"
579
+				],
580
+				"width": 1089,
581
+				"attrs": [],
582
+				"tags": [
583
+					"exitFullScreen 1"
584
+				],
585
+				"grid": 0
586
+			},
587
+			"attrs": [],
588
+			"properties": {
589
+				"order": 11,
590
+				"id": 15,
591
+				"prevSize": 32,
592
+				"code": 58894,
593
+				"name": "exit-full-screen",
594
+				"ligatures": ""
595
+			},
596
+			"setIdx": 1,
597
+			"setId": 1,
598
+			"iconIdx": 17
599
+		},
600
+		{
601
+			"icon": {
602
+				"paths": [
603
+					"M512.356-0c-282.456 0-512.356 229.838-512.356 512.478 0 282.389 229.9 512.227 512.356 512.227 282.515 0 512.414-229.838 512.414-512.227 0-282.64-229.9-512.478-512.414-512.478zM512.356 945.144c-238.545 0-432.671-194.126-432.671-432.666 0-238.796 194.126-432.858 432.671-432.858 238.601 0 432.856 194.062 432.856 432.858 0 238.54-194.255 432.666-432.856 432.666z",
604
+					"M512.545 105.038c-224.755 0-407.508 182.75-407.508 407.315 0 224.563 182.75 407.315 407.508 407.315 224.437 0 407.187-182.755 407.187-407.315-0.003-224.566-182.75-407.315-407.187-407.315zM512.545 832.677c-176.715 0-320.453-143.804-320.453-320.324 0-176.523 143.737-320.324 320.453-320.324 176.523 0 320.196 143.802 320.196 320.324 0 176.52-143.673 320.324-320.196 320.324z",
605
+					"M283.851 397.211l-0.954 1.398v234.413l0.954 1.398c15.757 23.060 36.473 44.542 61.699 63.797l8.961 6.801v-378.341l-8.961 6.735c-25.1 19.191-45.814 40.544-61.699 63.799z",
606
+					"M415.637 294.271l-3.621 1.334v440.36l3.621 1.398c18.683 7.055 38.887 11.94 61.766 14.931l6.224 0.762v-474.415l-6.163 0.762c-22.237 2.795-43.016 7.753-61.827 14.869z",
607
+					"M547.367 279.401l-6.165-0.762v474.415l6.165-0.762c22.301-2.793 43.077-7.811 61.763-14.864l3.685-1.4v-440.488l-3.685-1.334c-18.811-7.053-39.525-12.010-61.763-14.805z",
608
+					"M740.98 397.211c-15.692-23.002-36.473-44.48-61.699-63.797l-8.894-6.86v378.469l8.894-6.801c25.351-19.381 46.132-40.862 61.699-63.861l0.89-1.398v-234.352l-0.89-1.4z"
609
+				],
610
+				"width": 1025,
611
+				"attrs": [],
612
+				"tags": [
613
+					"prezisimple"
614
+				],
615
+				"grid": 0
616
+			},
617
+			"attrs": [],
618
+			"properties": {
619
+				"order": 10,
620
+				"id": 14,
621
+				"prevSize": 32,
622
+				"code": 58892,
623
+				"name": "prezi",
624
+				"ligatures": ""
625
+			},
626
+			"setIdx": 1,
627
+			"setId": 1,
628
+			"iconIdx": 18
629
+		},
630
+		{
631
+			"icon": {
632
+				"paths": [
633
+					"M831.678 943.614h-144.885v-258.653c-45.729-29.159-41.794-84.953-24.574-109.307 11.939-16.905 22.43-34.662 23.663-57.004 0.423-8.241 8.303-19.031 15.847-23.364 26.122-15.037 38.223-39.632 50.12-65.116 3.143-6.714 7.392-13.187 12.3-18.753 8.471-9.686 12.295-19.264 6.115-31.922-1.466-2.972 1.318-8.326 2.779-12.362 4.335-12.106 10.326-23.745 13.169-36.148 3.522-15.399 5.398-31.305 6.244-47.086 0.379-6.543-6.074-13.574-5.351-19.986 3.486-32.030-14.612-56.346-24.785-84.189-12.509-34.28-37.036-55.732-58.681-81.26-4.074-4.843-5.225-13.125-5.563-19.942-0.722-14.63-6.752-21.875-22.048-19.898-6.161 0.805-12.808 2.526-18.474 1.019-4.969-1.316-12.408-6.288-12.702-10.13-1.553-19.393-8.285-22.577-28.098-19.305-12.406 2.062-28.527-9.134-40.677-17.587-10.15-7.049-18.941-10.065-30.751-7.175-4.928 1.187-11.598 0.973-15.716-1.466-4.461-2.634-8.837-4.226-13.169-5.119v-0.722c-0.975 0-1.976 0.17-2.934 0.276-0.975-0.106-1.951-0.276-2.908-0.276v0.722c-4.355 0.893-8.726 2.485-13.169 5.119-4.167 2.441-10.811 2.652-15.718 1.466-11.851-2.89-20.598 0.126-30.751 7.175-12.212 8.453-28.287 19.648-40.671 17.587-19.816-3.272-26.591-0.085-28.119 19.305-0.299 3.844-7.73 8.816-12.7 10.13-5.692 1.509-12.32-0.212-18.497-1.019-15.27-1.976-21.302 5.269-22.024 19.898-0.338 6.819-1.486 15.102-5.565 19.942-21.622 25.528-46.154 46.98-58.684 81.26-10.171 27.843-28.271 52.161-24.765 84.189 0.699 6.412-5.736 13.443-5.395 19.986 0.87 15.78 2.74 31.687 6.267 47.086 2.843 12.403 8.835 24.042 13.187 36.148 1.466 4.033 4.229 9.387 2.784 12.362-6.203 12.658-2.379 22.236 6.115 31.922 4.887 5.565 9.134 12.039 12.277 18.753 11.874 25.484 24.001 50.079 50.125 65.116 7.516 4.332 15.417 15.122 15.863 23.364 1.21 22.342 11.701 40.099 23.64 57.004 18.33 25.954 21.194 86.95-34.216 114.687-76.673 38.336-154.083 75.357-232.624 109.632-49.189 21.498-73.891 57.6-82.238 108.192-2.549 15.331-5.862 30.539-7.88 45.961-3.014 22.956-7.839 69.874-7.839 69.874h831.678v-80.386z",
634
+					"M1188.556 879.11h-144.89v144.89h-147.481v-144.89h-144.885v-147.481h144.885v-144.888h147.481v144.888h144.89v147.481z"
635
+				],
636
+				"width": 1189,
637
+				"attrs": [
638
+					{
639
+						"opacity": 1,
640
+						"visibility": false
641
+					},
642
+					{
643
+						"opacity": 1,
644
+						"visibility": false
645
+					}
646
+				],
647
+				"tags": [
648
+					"addNew-V5"
649
+				],
650
+				"grid": 0
651
+			},
652
+			"attrs": [
653
+				{
654
+					"opacity": 1,
655
+					"visibility": false
656
+				},
657
+				{
658
+					"opacity": 1,
659
+					"visibility": false
660
+				}
661
+			],
662
+			"properties": {
663
+				"order": 26,
664
+				"id": 30,
665
+				"prevSize": 32,
666
+				"code": 58880,
667
+				"name": "addNew-V5",
668
+				"ligatures": ""
669
+			},
670
+			"setIdx": 1,
671
+			"setId": 1,
672
+			"iconIdx": 19
673
+		},
674
+		{
675
+			"icon": {
676
+				"paths": [
677
+					"M956.063-2.932h-819.824c-73.036 0-132.489 60.717-132.489 135.316v540.205c0 74.537 59.453 135.246 132.489 135.246h35.826v212.941l344.987-212.941h439.011c72.964 0 132.42-60.711 132.42-135.246v-540.202c0-74.602-59.456-135.318-132.42-135.318zM496.5 666.113l-195.714 123.997v-123.997h-158.261v-527.257h807.189l0.064 527.255h-453.278z",
678
+					"M239.062 244.446h605.126v110.62h-605.126v-110.62z",
679
+					"M239.062 437.524h605.126v110.615h-605.126v-110.615z"
680
+				],
681
+				"width": 1088,
682
+				"attrs": [],
683
+				"tags": [
684
+					"chat"
685
+				],
686
+				"grid": 0
687
+			},
688
+			"attrs": [],
689
+			"properties": {
690
+				"order": 1,
691
+				"id": 11,
692
+				"prevSize": 32,
693
+				"code": 58881,
694
+				"name": "chat",
695
+				"ligatures": ""
696
+			},
697
+			"setIdx": 1,
698
+			"setId": 1,
699
+			"iconIdx": 20
700
+		},
701
+		{
702
+			"icon": {
703
+				"paths": [
704
+					"M952.495 4.935h-818.689c-72.81 0-132.183 60.63-132.183 135.162v750.719c0 74.473 59.372 135.101 132.183 135.101h818.686c72.936 0 132.314-60.625 132.314-135.101v-750.722c0.003-74.532-59.378-135.159-132.311-135.159zM946.346 884.349h-806.14v-737.822h806.015l0.126 737.822z",
705
+					"M685.753 285.456h216.911v566.758h-216.911v-566.758z",
706
+					"M428.672 413.998h216.911v438.216h-216.911v-438.216z",
707
+					"M172.339 542.54h216.161v309.677h-216.161v-309.677z"
708
+				],
709
+				"width": 1088,
710
+				"attrs": [],
711
+				"tags": [
712
+					"presentation"
713
+				],
714
+				"grid": 0
715
+			},
716
+			"attrs": [],
717
+			"properties": {
718
+				"order": 3,
719
+				"id": 9,
720
+				"prevSize": 32,
721
+				"code": 58883,
722
+				"name": "presentation",
723
+				"ligatures": ""
724
+			},
725
+			"setIdx": 1,
726
+			"setId": 1,
727
+			"iconIdx": 21
728
+		},
729
+		{
730
+			"icon": {
731
+				"paths": [
732
+					"M878.259-5.513c-163.545 0-296.573 133.036-296.573 296.612v43.752h-448.909c-73.14 0-132.777 60.909-132.777 135.751v412.768c0 74.777 59.637 135.678 132.777 135.678h564.152c73.265 0 132.919-60.901 132.919-135.678v-412.768c0-70.054-52.267-127.895-119.040-135.009v-44.494c0-92.367 75.154-167.49 167.451-167.49 92.305 0 167.462 75.12 167.462 167.49v77.422c0 35.681 28.883 64.564 64.556 64.564 35.69 0 64.569-28.883 64.569-64.564v-77.422c-0.003-163.576-133.028-296.612-296.587-296.612z"
733
+				],
734
+				"width": 1179,
735
+				"attrs": [],
736
+				"tags": [
737
+					"security"
738
+				],
739
+				"grid": 0
740
+			},
741
+			"attrs": [],
742
+			"properties": {
743
+				"order": 5,
744
+				"id": 8,
745
+				"prevSize": 32,
746
+				"code": 58884,
747
+				"name": "security",
748
+				"ligatures": ""
749
+			},
750
+			"setIdx": 1,
751
+			"setId": 1,
752
+			"iconIdx": 22
753
+		},
754
+		{
755
+			"icon": {
756
+				"paths": [
757
+					"M1.518 318.386h277.533v-319.798c0 0-78.033 8.102-176.18 111.633-98.139 103.529-101.353 208.165-101.353 208.165z",
758
+					"M683.281-1.412h-339.684v384.596l-342.080-0.251-1.515-3.468v510.502c0 73.845 61.4 133.979 136.847 133.979h546.434c75.514 0 136.911-60.137 136.911-133.979v-757.403c-0.003-73.843-61.397-133.976-136.914-133.976zM691.854 814.836h-572.848v-92.788h572.845v92.788zM691.854 621.198h-572.848v-92.783h572.845v92.783z"
759
+				],
760
+				"width": 820,
761
+				"attrs": [],
762
+				"tags": [
763
+					"shareDoc"
764
+				],
765
+				"grid": 0
766
+			},
767
+			"attrs": [],
768
+			"properties": {
769
+				"order": 6,
770
+				"id": 7,
771
+				"prevSize": 32,
772
+				"code": 58885,
773
+				"name": "share-doc",
774
+				"ligatures": ""
775
+			},
776
+			"setIdx": 1,
777
+			"setId": 1,
778
+			"iconIdx": 23
779
+		},
780
+		{
781
+			"icon": {
782
+				"paths": [
783
+					"M709.515 339.906v-44.455c0-163.090-132.662-295.749-295.749-295.749-163.093 0-295.752 132.659-295.752 295.749v44.455c-66.226 7.393-118.013 64.915-118.013 134.607v411.623c0 74.629 59.481 135.365 132.472 135.365h562.583c73.059 0 132.534-60.736 132.534-135.365v-411.623c-0-69.697-51.792-127.219-118.074-134.607zM413.765 128.463c92.043 0 166.987 74.944 166.987 166.987v43.632h-333.978v-43.632c0-92.043 74.883-166.987 166.99-166.987z"
784
+				],
785
+				"width": 828,
786
+				"attrs": [],
787
+				"tags": [
788
+					"securityLock"
789
+				],
790
+				"grid": 0
791
+			},
792
+			"attrs": [],
793
+			"properties": {
794
+				"order": 2,
795
+				"id": 5,
796
+				"prevSize": 32,
797
+				"code": 58887,
798
+				"name": "security-locked",
799
+				"ligatures": ""
800
+			},
801
+			"setIdx": 1,
802
+			"setId": 1,
803
+			"iconIdx": 24
804
+		},
805
+		{
806
+			"icon": {
807
+				"paths": [
808
+					"M1223.934 242.853l-180.299 175.956v-217.848c0-7.661-0.666-15.148-1.902-22.432l73.695-65.346c26.349-23.41 28.841-63.8 5.369-90.24-23.475-26.406-63.803-28.872-90.273-5.4l-1009.019 894.712c-26.408 23.41-28.841 63.806-5.398 90.209 12.607 14.237 30.183 21.539 47.85 21.539 15.076 0 30.214-5.305 42.39-16.1l95.841-84.979c20.995 14.627 46.26 23.232 73.592 23.232h635.191c73.099 0 132.66-60.807 132.66-135.537v-172.868l193.659 153.955c48.815 35.46 96.765-5.248 96.765-40.584v-483.829c0.003-35.305-55.933-71.386-110.123-24.44zM601.515 760.552c-58.81 0-112.566-20.216-155.526-53.797l82.93-73.533c20.863 11.665 44.849 18.386 70.47 18.386 80.533 0 145.832-65.299 145.832-145.835 0-19.421-3.896-37.857-10.857-54.713l86.847-77.001c22.848 38.259 36.012 82.969 36.012 130.782 0 141.214-114.493 255.71-255.707 255.71z",
809
+					"M345.797 504.84c0-141.216 114.496-255.715 255.717-255.715 21.501 0 42.075 3.434 61.986 8.429l216.757-192.191h-604.474c-73.138 0-132.697 60.838-132.697 135.597v518.074l205.894-182.543c-1.308-10.486-3.184-20.853-3.184-31.651z"
810
+				],
811
+				"width": 1334,
812
+				"attrs": [],
813
+				"tags": [
814
+					"disableWebCam"
815
+				],
816
+				"grid": 0
817
+			},
818
+			"attrs": [],
819
+			"properties": {
820
+				"order": 7,
821
+				"id": 3,
822
+				"prevSize": 32,
823
+				"code": 58889,
824
+				"name": "camera-disabled",
825
+				"ligatures": ""
826
+			},
827
+			"setIdx": 1,
828
+			"setId": 1,
829
+			"iconIdx": 25
830
+		},
831
+		{
832
+			"icon": {
833
+				"paths": [
834
+					"M1121.124 21.134c-23.48-26.413-63.883-28.849-90.296-5.372l-1009.306 894.905c-26.413 23.418-28.852 63.816-5.434 90.232 12.612 14.243 30.224 21.547 47.893 21.547 15.050 0 30.224-5.307 42.403-16.108l257.072-227.934c33.225 22.863 69.988 39.678 108.611 49.713-70.191 35.653-118.771 107.715-118.771 191.894h431.872c0-85.737-50.329-159.115-122.765-194.079 54.95-14.49 105.842-39.965 147.497-77.496 51.888-46.712 113.712-131.515 113.712-270.329v-130.323c0-18.812-7.924-35.767-20.585-47.798l212.664-188.558c26.419-23.477 28.849-63.816 5.434-90.294zM791.535 478.109c0 157.985-117.649 229.923-226.99 229.923-35.214 0-68.659-7.217-98.285-20.786l55.735-49.416c14.733 4.59 30.356 7.132 46.609 7.132 89.357 0 161.984-72.687 161.984-161.979v-30.1l60.947-54.042v79.269z",
835
+					"M730.589 166.133c0-89.298-72.625-161.984-161.984-161.984-89.298 0-161.984 72.687-161.984 161.984v316.85c0 0.25 0 0.498 0 0.748l323.969-287.25v-30.348z",
836
+					"M350.795 533.31c-3.246-17.483-5.119-35.782-5.119-55.201v-130.323c0-36.406-29.6-66.004-66.006-66.004-36.466 0-66.004 29.597-66.004 66.004v130.323c0 57.198 11.115 107.026 29.099 150.931l108.030-95.73z"
837
+				],
838
+				"width": 1137,
839
+				"attrs": [],
840
+				"tags": [
841
+					"disableMic"
842
+				],
843
+				"grid": 0
844
+			},
845
+			"attrs": [],
846
+			"properties": {
847
+				"order": 8,
848
+				"id": 2,
849
+				"prevSize": 32,
850
+				"code": 58890,
851
+				"name": "mic-disabled",
852
+				"ligatures": ""
853
+			},
854
+			"setIdx": 1,
855
+			"setId": 1,
856
+			"iconIdx": 26
857
+		},
858
+		{
859
+			"icon": {
860
+				"paths": [
861
+					"M858.414 280.056c-36.595 0-66.246 29.652-66.246 66.182v130.725c0 158.421-117.982 230.597-227.635 230.597-58.674 0-112.618-19.87-151.86-55.959-44.23-40.819-67.696-101.203-67.696-174.64v-130.725c0-36.53-29.654-66.182-66.182-66.182-36.53 0-66.182 29.652-66.182 66.182v130.725c0 195.834 119.494 314.763 259.177 351.040-70.408 35.71-119.176 108.014-119.176 192.431h433.118c0-85.993-50.409-159.621-123.029-194.572 55.079-14.64 106.121-40.127 147.886-77.79 52.050-46.877 114.008-131.925 114.008-271.106v-130.725c0-36.53-29.59-66.182-66.184-66.182z",
862
+					"M568.571 644.281c-89.589 0-162.459-72.932-162.459-162.521v-317.665c0-89.589 72.87-162.459 162.459-162.459 89.592 0 162.524 72.87 162.524 162.459v317.665c0.003 89.592-72.929 162.521-162.524 162.521z"
863
+				],
864
+				"width": 1137,
865
+				"attrs": [],
866
+				"tags": [
867
+					"mic"
868
+				],
869
+				"grid": 0
870
+			},
871
+			"attrs": [],
872
+			"properties": {
873
+				"order": 9,
874
+				"id": 1,
875
+				"prevSize": 32,
876
+				"code": 58891,
877
+				"name": "microphone",
878
+				"ligatures": ""
879
+			},
880
+			"setIdx": 1,
881
+			"setId": 1,
882
+			"iconIdx": 27
883
+		}
884
+	],
885
+	"height": 1024,
886
+	"metadata": {
887
+		"name": "jitsi"
888
+	},
889
+	"preferences": {
890
+		"showGlyphs": true,
891
+		"showQuickUse": true,
892
+		"showQuickUse2": true,
893
+		"showSVGs": true,
894
+		"fontPref": {
895
+			"prefix": "icon-",
896
+			"metadata": {
897
+				"fontFamily": "jitsi",
898
+				"majorVersion": 1,
899
+				"minorVersion": 0
900
+			},
901
+			"metrics": {
902
+				"emSize": 1024,
903
+				"baseline": 6.25,
904
+				"whitespace": 50
905
+			}
906
+		},
907
+		"imagePref": {
908
+			"prefix": "icon-",
909
+			"png": true,
910
+			"useClassSelector": true
911
+		},
912
+		"historySize": 100,
913
+		"showCodes": true,
914
+		"search": ""
915
+	}
916
+}

BIN
images/avatar1.png View File


BIN
images/avatar2.png View File


BIN
images/avatarprezi.png View File


+ 12
- 0
images/chatArrow.svg View File

@@ -0,0 +1,12 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="258.559px" height="396.871px" viewBox="0 0 258.559 396.871" enable-background="new 0 0 258.559 396.871"
6
+	 xml:space="preserve">
7
+<g id="u6PRpE_1_">
8
+	<g>
9
+		<path fill="#3A3A3A" d="M341.829,396.871c0,0-16.524-193.936-258.445-396.871c86.17,0,258.445,0,258.445,0V396.871z"/>
10
+	</g>
11
+</g>
12
+</svg>

BIN
images/chrome.png View File


BIN
images/chromium.png View File


BIN
images/dropdownPointer.png View File


BIN
images/estoslogo.png View File


BIN
images/favicon.ico View File


BIN
images/firefox-nightly.png View File


BIN
images/firefox.png View File


BIN
images/jitsilogo.png View File


BIN
images/noMic.png View File


BIN
images/noVideo.png View File


BIN
images/opera.png View File


BIN
images/popupPointer.png View File


+ 25
- 0
images/smile.svg View File

@@ -0,0 +1,25 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="394.595px" height="396.871px" viewBox="83.27 0 394.595 396.871" enable-background="new 83.27 0 394.595 396.871"
6
+	 xml:space="preserve">
7
+<g>
8
+	<path d="M280.573,396.025c-108.796,0-197.303-88.533-197.303-197.305c0-108.797,88.507-197.305,197.303-197.305
9
+		c108.784,0,197.292,88.508,197.292,197.305C477.865,307.492,389.357,396.025,280.573,396.025z M280.573,54.997
10
+		c-79.246,0-143.722,64.478-143.722,143.724c0,79.26,64.476,143.724,143.722,143.724c79.247,0,143.711-64.464,143.711-143.724
11
+		C424.284,119.475,359.82,54.997,280.573,54.997z"/>
12
+</g>
13
+<g>
14
+	<path d="M252.547,174.154c0,16.339-13.239,29.577-29.591,29.577c-16.326,0-29.576-13.238-29.576-29.577
15
+		c0-16.326,13.25-29.577,29.576-29.577C239.308,144.577,252.547,157.828,252.547,174.154z"/>
16
+</g>
17
+<g>
18
+	<path d="M366.457,174.154c0,16.339-13.239,29.577-29.615,29.577c-16.326,0-29.565-13.238-29.565-29.577
19
+		c0-16.326,13.239-29.577,29.565-29.577C353.217,144.577,366.457,157.828,366.457,174.154z"/>
20
+</g>
21
+<g>
22
+	<path d="M369.579,226.074c0,0-23.966,55.255-89.843,55.255c-67.119,0-89.856-55.255-89.856-55.255s31.252,30.139,89.856,30.139
23
+		C338.549,256.213,369.579,226.074,369.579,226.074z"/>
24
+</g>
25
+</svg>

+ 34
- 0
images/smileys/smiley1.svg View File

@@ -0,0 +1,34 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="550px" height="550px" viewBox="-85.106 -76.564 550 550" enable-background="new -85.106 -76.564 550 550"
6
+	 xml:space="preserve">
7
+<path fill="#FFFFFF" d="M372.248,107.851C339.151,40.429,274.366,0.178,198.949,0.178c-80.411,0-149.197,47.67-171.166,118.624
8
+	c-16.011,51.71-25.219,126.751,21.835,190.569c48.128,65.281,132.732,88.441,190.568,88.441c0.006,0,0.013,0,0.019,0
9
+	c2.147,0,4.292-0.033,6.383-0.094c21.169-0.604,31.88-17.354,38.017-29.355c48.385-23.785,82.444-61.1,98.547-107.961
10
+	C399.895,211.666,395.92,156.065,372.248,107.851z"/>
11
+<path fill="#231F20" d="M344.649,119.812C280.709-10.436,92.562,5.397,55.103,126.384c-55.37,178.83,97.09,243.395,189.835,240.728
12
+	c7.195-0.205,11.967-13.817,16.975-23.18c2.725-0.688,5.336-1.609,7.793-2.805C369.67,292.52,378.961,189.702,344.649,119.812z
13
+	 M336.959,225.568c-33.385,127.58-148.073,96.354-154.979,97.659C42.987,280.825-1.426,137.46,153.207,62.316
14
+	C253.958,13.355,364.406,120.68,336.959,225.568z"/>
15
+<path fill="#231F20" d="M162.596,162.239c4.438,11.093-15.069,24.402-27.729,24.402c-12.659,0-21.074-17.657-21.074-30.316
16
+	c0-12.659,9.523-27.358,22.183-27.358C148.636,128.967,157.895,150.487,162.596,162.239z"/>
17
+<path fill="#231F20" d="M288.049,158.705c0,8.158-1.366,14.828-7.185,19.149c-3.609,2.68-10.833,9.577-15.562,9.577
18
+	c-22.736,0-24.337-20.694-24.337-33.914c0-13.222,10.003-23.938,22.343-23.938C275.649,129.579,288.049,145.482,288.049,158.705z"/>
19
+<g>
20
+	<path fill="#EC1C24" d="M118.379,254.148c-0.418-0.569-0.588-0.766-0.631-1.903c-0.174-1.904-0.23-3.902,0.406-5.953
21
+		c0.598-2.013,1.649-3.72,3.172-4.839c1.573-1.124,3.509-1.684,5.92-1.74c2.424-0.07,5.022,0.252,8.26,0.669
22
+		c0.223,0.036,1.113,0.275,1.457,0.513c2.61,3.606,6.503,7.162,10.902,10.217c4.414,3.074,9.353,5.729,14.524,7.949
23
+		c4.23,1.896,8.709,3.317,13.197,4.643c4.537,1.166,9.12,2.226,13.768,2.767c6.275,0.834,12.607,1.089,18.845,0.728
24
+		c0,0,0.483,0.004,1.372,0c0.886-0.026,2.197,0.061,3.808-0.041c3.224-0.174,7.804-0.4,12.942-1.405
25
+		c10.383-1.633,22.947-6.716,32.402-13.301c2.045-1.339,3.75-2.776,5.353-4.056c0.808-0.636,1.58-1.244,2.315-1.817
26
+		c0.692-0.616,1.352-1.206,1.976-1.765c1.26-1.11,2.444-2.059,3.461-2.92c0.963-0.896,1.837-1.649,2.612-2.268
27
+		c3.129-2.467,4.673-2.768,5.023-1.256c0.293,1.466-0.531,4.812-2.597,9.178c-2.155,4.282-5.472,9.703-10.267,14.79
28
+		c0.602-0.41-1.855,2.508-6.584,6.507c-4.732,3.948-11.853,8.863-19.804,12.461c-1.997,0.846-3.995,1.746-6.007,2.52
29
+		c-2.04,0.699-4.05,1.388-5.999,2.058c-1.985,0.536-3.911,1.054-5.735,1.546c-1.836,0.481-3.602,0.758-5.222,1.104
30
+		c-6.506,1.219-10.944,1.514-10.944,1.514c-6.701,0.304-13.359-0.182-19.938-0.999c-5.676-0.691-11.252-1.938-16.773-3.355
31
+		c-5.477-1.586-10.922-3.322-16.192-5.649c-6.415-2.763-12.654-6.076-18.596-10.205
32
+		C128.892,265.673,123.195,260.766,118.379,254.148z"/>
33
+</g>
34
+</svg>

+ 61
- 0
images/smileys/smiley10.svg View File

@@ -0,0 +1,61 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="550px" height="550px" viewBox="-85.961 -76.564 550 550" enable-background="new -85.961 -76.564 550 550"
6
+	 xml:space="preserve">
7
+<path fill="#FFFFFF" d="M205.199,396.419c-0.004,0,0,0-0.004,0c-1.295-0.003-2.603-0.073-3.889-0.215"/>
8
+<path fill="#FFFFFF" d="M225.126,397.08c-57.758,0-142.257-23.135-190.316-88.328c-25.936-35.177-50.769-96.746-21.804-190.293
9
+	C34.943,47.605,103.633,0,183.932,0c75.313,0,140.007,40.195,173.061,107.523c23.636,48.15,27.604,103.677,10.884,152.344
10
+	c-16.079,46.794-50.091,84.05-98.4,107.802c-6.131,11.986-16.83,28.716-37.966,29.321c-2.097,0.06-4.221,0.09-6.375,0.09
11
+	C225.132,397.08,225.129,397.08,225.126,397.08z"/>
12
+<path fill="#231F20" d="M329.688,120.928C266.169-8.457,79.271,7.271,42.063,127.455c-55.002,177.641,96.446,241.78,188.576,239.129
13
+	c7.155-0.204,11.899-13.762,16.879-23.062c2.693-0.684,5.291-1.567,7.719-2.749C354.542,292.488,363.77,190.353,329.688,120.928z
14
+	 M322.044,225.98c-33.132,126.628-146.884,95.768-153.913,97.015C30.039,280.886-14.103,138.464,139.513,63.812
15
+	C239.595,15.176,349.314,121.789,322.044,225.98z"/>
16
+<path fill="#231F20" d="M88.652,158.686c0,0,0.039-0.397,0.116-1.138c0.083-0.73,0.19-1.795,0.618-3.193
17
+	c0.392-1.396,0.99-3.012,1.938-4.803c0.933-1.797,2.233-3.706,3.9-5.605c3.321-3.805,8.243-7.359,14.011-9.767
18
+	c1.438-0.621,2.926-1.157,4.454-1.617c1.526-0.486,3.083-0.897,4.669-1.212c3.164-0.725,6.414-1.013,9.646-1.212
19
+	c3.24-0.115,6.455,0,9.592,0.337c1.56,0.192,3.113,0.359,4.616,0.683c1.509,0.27,2.998,0.56,4.426,0.961
20
+	c2.89,0.704,5.593,1.641,8.115,2.607c1.248,0.53,2.46,1.031,3.612,1.559c1.129,0.569,2.219,1.123,3.271,1.652
21
+	c2.056,1.152,3.885,2.265,5.448,3.368c1.578,1.059,2.87,2.139,3.927,3c1.051,0.877,1.817,1.68,2.361,2.173
22
+	c0.529,0.514,0.796,0.812,0.796,0.812s-1.616-0.046-4.292-0.284c-1.354-0.076-2.935-0.285-4.762-0.425
23
+	c-1.782-0.171-3.799-0.367-5.998-0.581c-4.349-0.406-9.306-0.834-14.508-1.115c-2.596-0.184-5.27-0.194-7.945-0.301
24
+	c-2.68,0.021-5.383-0.056-8.06,0.112c-2.673,0.093-5.338,0.28-7.913,0.576c-2.572,0.327-5.094,0.667-7.491,1.172
25
+	c-2.386,0.519-4.69,1.073-6.827,1.773c-2.121,0.715-4.15,1.458-5.95,2.335c-1.815,0.854-3.463,1.766-4.893,2.699
26
+	c-1.44,0.909-2.676,1.859-3.669,2.645c-0.514,0.411-0.962,0.782-1.36,1.102c-0.392,0.365-0.722,0.676-0.992,0.928
27
+	C88.953,158.421,88.652,158.686,88.652,158.686z"/>
28
+<path fill="#231F20" d="M284.468,157.075c0,0-0.278-0.284-0.802-0.813c-0.25-0.271-0.562-0.604-0.924-0.997
29
+	c-0.374-0.348-0.803-0.747-1.281-1.192c-0.936-0.856-2.107-1.888-3.48-2.896c-1.356-1.026-2.938-2.055-4.693-3.031
30
+	c-1.733-1-3.706-1.879-5.771-2.739c-2.078-0.848-4.346-1.56-6.687-2.243c-2.353-0.67-4.851-1.182-7.396-1.688
31
+	c-2.546-0.474-5.189-0.845-7.852-1.124c-2.659-0.352-5.359-0.46-8.032-0.668c-2.683-0.077-5.347-0.252-7.948-0.248
32
+	c-5.207-0.083-10.184,0.002-14.545,0.107c-2.216,0.061-4.234,0.116-6.029,0.164c-1.83,0.01-3.424,0.113-4.778,0.093
33
+	c-2.687,0.052-4.299-0.013-4.299-0.013s0.282-0.279,0.853-0.753c0.573-0.458,1.393-1.203,2.501-2.007
34
+	c1.117-0.787,2.48-1.771,4.126-2.721c1.637-0.991,3.541-1.977,5.665-2.982c1.087-0.456,2.216-0.933,3.38-1.424
35
+	c1.188-0.446,2.428-0.86,3.715-1.301c2.582-0.79,5.346-1.537,8.274-2.041c1.456-0.299,2.955-0.487,4.481-0.651
36
+	c1.52-0.217,3.08-0.28,4.649-0.363c3.151-0.119,6.369-0.01,9.595,0.327c3.211,0.422,6.435,0.936,9.537,1.879
37
+	c1.562,0.426,3.084,0.94,4.572,1.535c1.487,0.566,2.943,1.201,4.331,1.92c5.591,2.801,10.251,6.688,13.308,10.715
38
+	c1.53,2.009,2.697,4.004,3.5,5.86c0.819,1.851,1.305,3.507,1.599,4.927c0.333,1.423,0.362,2.494,0.397,3.229
39
+	C284.455,156.679,284.468,157.075,284.468,157.075z"/>
40
+<path fill="#EC1C24" d="M159.606,193.566c8.195-14.061,26.514-13.454,39.519-7.108c3.211,1.565,7.952-4.404,21.914-3.785
41
+	c14.748,0.652,25.139,14.76,26.169,29.503c0.842,11.993,10.032,16.975,10.032,16.975s-9.206,15.434-20.797,38.101
42
+	c-14.689,26.586-64.421,25.285-82.202-8.062c-10.557-19.803-21.771-35.438-21.771-35.438S143.681,220.877,159.606,193.566z"/>
43
+<path fill="#F3CEA5" d="M233.488,231.941c0,0-0.211,0.23-0.618,0.633c-0.415,0.391-1.004,1.001-1.791,1.703
44
+	c-0.39,0.359-0.824,0.746-1.31,1.156c-0.513,0.393-1.088,0.785-1.703,1.226c-0.614,0.44-1.293,0.877-2.008,1.358
45
+	c-0.717,0.489-1.5,0.846-2.311,1.308c-0.812,0.44-1.678,0.866-2.573,1.327c-0.913,0.395-1.876,0.76-2.864,1.16
46
+	c-1.974,0.834-4.149,1.369-6.405,1.983c-1.132,0.276-2.302,0.45-3.484,0.661c-0.593,0.102-1.188,0.204-1.789,0.307
47
+	c-0.604,0.053-1.212,0.104-1.821,0.156c-1.222,0.079-2.453,0.249-3.693,0.251c-1.24,0.006-2.487-0.014-3.733-0.034
48
+	c-1.245-0.018-2.483-0.188-3.72-0.302c-0.617-0.063-1.232-0.127-1.846-0.207c-0.608-0.095-1.213-0.221-1.815-0.33
49
+	c-1.205-0.226-2.402-0.435-3.563-0.741c-1.158-0.326-2.301-0.637-3.41-0.992c-1.116-0.319-2.183-0.76-3.22-1.182
50
+	c-0.518-0.212-1.029-0.422-1.534-0.63c-0.507-0.196-1-0.414-1.47-0.676c-1.9-0.979-3.681-1.884-5.206-2.96
51
+	c-0.767-0.523-1.503-1.01-2.185-1.495c-0.666-0.521-1.283-1.033-1.852-1.522c-1.141-0.974-2.107-1.828-2.817-2.658
52
+	c-0.735-0.785-1.264-1.452-1.638-1.881c-0.367-0.438-0.549-0.687-0.549-0.687s0.302,0.072,0.867,0.207
53
+	c0.55,0.153,1.375,0.343,2.365,0.644c0.979,0.32,2.211,0.604,3.581,0.961c0.689,0.166,1.39,0.397,2.151,0.58
54
+	c0.762,0.172,1.562,0.354,2.397,0.541c1.626,0.447,3.447,0.73,5.302,1.14c0.921,0.224,1.906,0.329,2.882,0.506
55
+	c0.99,0.131,1.958,0.405,2.992,0.487c1.025,0.111,2.051,0.275,3.089,0.431c0.517,0.087,1.052,0.097,1.581,0.149
56
+	c0.526,0.058,1.057,0.115,1.588,0.174c0.531,0.055,1.062,0.127,1.6,0.168c0.539,0.019,1.077,0.053,1.615,0.089
57
+	c1.08,0.042,2.156,0.2,3.24,0.198c1.084,0.025,2.166,0.053,3.246,0.104c1.079,0.025,2.155-0.006,3.226-0.003
58
+	c2.146,0.053,4.239-0.169,6.302-0.194c2.031-0.224,4.055-0.238,5.934-0.523c0.95-0.096,1.875-0.209,2.787-0.282
59
+	c0.894-0.132,1.756-0.28,2.602-0.39c1.716-0.188,3.214-0.48,4.596-0.711c0.696-0.104,1.348-0.219,1.971-0.297
60
+	c0.622-0.131,1.192-0.25,1.709-0.357c1.032-0.217,1.873-0.328,2.435-0.432C233.178,231.973,233.488,231.941,233.488,231.941z"/>
61
+</svg>

+ 60
- 0
images/smileys/smiley11.svg View File

@@ -0,0 +1,60 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="550px" height="550px" viewBox="-119.308 -76.564 550 550" enable-background="new -119.308 -76.564 550 550"
6
+	 xml:space="preserve">
7
+<g>
8
+	<path fill="#FFFFFF" d="M170.544,137.515c-20.367,14.509-6.455,36.763,15.367,35.446c22.026-1.311,72.6,11.714,84.758-13.486
9
+		C297.285,104.302,191.251,122.738,170.544,137.515C161.852,143.705,185.56,126.801,170.544,137.515z"/>
10
+	<path fill="#FFFFFF" d="M162.255,96.077c-7.345,6.5-7.59,16.066-2.086,23.809c8.896,12.441,22.86,7.643,35.291,5.155
11
+		c15.899-3.181,60.977-0.028,64.656-20.233C270.22,49.553,181.905,78.69,162.255,96.077
12
+		C154.837,102.647,184.021,76.819,162.255,96.077z"/>
13
+	<path fill="#FFFFFF" d="M239.044,174.366c-20.393-0.729-54.571-6.287-69.414,11.935c-17.746,21.795,21.174,34.35,35.566,38.506
14
+		c18.034,5.209,44.348,12.816,57.229-6.117C275.306,199.764,261.093,175.138,239.044,174.366
15
+		C220.919,173.717,256.907,174.991,239.044,174.366z"/>
16
+	<path fill="#FFFFFF" d="M157.497,93.978c16.782-12.917,36.779-20.151,57.432-23.992c14.131-2.635,30.313-7.809,12.996-23.727
17
+		C202.874,23.241,129.894,61.457,157.497,93.978C177.938,78.245,147.569,82.283,157.497,93.978z"/>
18
+	<g>
19
+		<path fill="#FFFFFF" d="M92.718,252.908c19.169,12.041,36.049,28.307,42.513,50.615c6.091,21.039,1.184,50.614,30.805,53.139
20
+			c26.652,2.301,29.416-33.986,28.387-52.596c-1.551-28.18-14.588-52.062-37.713-68.379c12.183-2.088,24.364-4.181,36.545-6.271
21
+			c-15.277-6.637-61.725-34.374-31.276-52.983c-17.726-12.784-17.2-30.642-0.359-43.938c-18.104-12.907-12.999-21.332-18.258-40.033
22
+			c-5.771-20.531-6.353-35.972,20.394-41.561c-40.553,5.912-106.982,4.196-118.688,55.019c-2.496,10.832-2.359,22.149-1.183,33.135
23
+			c1.54,14.219-4.803,27.1-5.206,41.146C37.729,212.992,67.358,237.014,92.718,252.908
24
+			C118.691,269.221,77.217,243.191,92.718,252.908z"/>
25
+		<path fill="#FFFFFF" d="M170.771,9.064c-2.172,1.105-4.34,2.323-6.484,3.641c-11.731,2.444-32.728,4.51-44.623,5.678
26
+			c-9.721,0.956-13.568,1.352-16.61,1.962C35.832,33.059,6.568,68.877,5.217,140.062c-0.093,4.819-1.099,10.639-2.168,16.804
27
+			c-2.884,16.69-6.481,37.458,3.703,59.669c11.805,25.738,37.366,52.957,64.044,68.335l0.219,0.169l1.02,0.639
28
+			c16.979,10.733,23.158,20.396,28.316,44.558c6.011,39.879,31.678,65.578,65.624,65.578c5.088,0,10.346-0.599,15.622-1.775
29
+			c34.767-7.756,54.046-40.525,51.565-87.652c-0.601-11.399-2.707-24.752-6.544-37.76c3.499,0.34,6.849,0.509,10.114,0.509
30
+			c38.864,0,54.842-23.876,60.908-38.102c6.27-14.71,6.545-30.86,1.619-45.295c6.902-9.824,11.149-21.776,11.978-34.765
31
+			c1.037-16.193-3.489-31.422-12.351-43.338c0.531-7.476-0.354-15.351-2.698-23.349c-4.067-13.879-12.147-26.453-22.511-35.696
32
+			c-1.397-5.847-3.959-11.559-7.65-16.938c-13.191-19.216-38.652-30.387-55.914-31.14c-1.221-0.054-2.426-0.08-3.613-0.08
33
+			c-12.428,0-24.442,2.899-35.713,8.623"/>
34
+		<path fill="#231F20" d="M33.621,204.215c10.037,21.887,32.566,44.321,53.376,55.86c0.295,0.221,0.575,0.429,0.831,0.62
35
+			c26.339,16.649,35.521,35.17,41.635,64.338c3.314,23.511,17.321,46.489,45.697,40.155c49.61-11.065,25.081-120.181-0.976-123.173
36
+			c12.129-2.125,24.266-4.188,36.403-6.255c22.026,5.441,49.221,8.646,59.862-16.321c6.162-14.455,1.271-30.441-9.7-39.282
37
+			c25.539-10.25,28.693-49.963,4.916-63.24c10.34-15.362-1.771-44.087-21.164-52.482c6.088-18.129-21.521-33.777-35.679-34.394
38
+			c-9.442-0.417-17.42,1.695-24.651,5.369c0-0.012,0.002-0.025,0-0.034c0.002,0.009-0.006,0.022-0.004,0.036
39
+			c-2.748,1.396-5.395,3.009-7.964,4.818c-18.286,5.097-62.049,7.953-67.427,9.114C53.167,59.8,35.801,86.287,34.771,140.622
40
+			C34.366,161.877,24.077,183.406,33.621,204.215z M260.833,207.342c-7.533,19.649-32.582,14.041-47.851,10.115
41
+			c-8.812-2.266-53.341-13.945-32.733-28.58c3.228-2.297,8.034-3.867,13.741-4.913c17.504,1.494,37.365,1.641,54.101-0.909
42
+			c3.312,0.188,6.309,0.362,8.832,0.484C262.154,189.916,264.335,198.487,260.833,207.342z M250.484,163.634
43
+			c-9.089,0.304-18.396,0.611-27.707,0.734c-6.405-0.289-13.135-0.44-19.783-0.096c-4.521-0.121-9.013-0.312-13.44-0.618
44
+			c-24.941,2.332-18.954-18.59-18.288-27.658c0.598-0.455,1.184-0.905,1.743-1.33c4.961,1.284,10.067,1.793,14.83,1.339
45
+			c17.727-1.69,35.725-5.71,53.545-8.507c6.438,1.39,12.142,3.514,16.406,6.643C267.833,142.295,264.917,163.448,250.484,163.634z
46
+			 M242.423,108.709c-2.104,1.033-4.445,1.888-6.938,2.618c-8.097,0.327-16.578,1.729-24.844,3.938
47
+			c-10.044,0.874-20.067,1.43-27.9,3.031c-7.136,1.456-19.395-0.354-17.135-10.994c1.256-5.628-0.376-8.416-3.564-11.875
48
+			c14.508-7.146,34.487-11.958,47.807-14.984c3.761-0.853,8.478-1.31,13.211-2.083c3.926,0.277,7.629,0.902,10.921,2.04
49
+			C245.925,84.51,261.615,106.587,242.423,108.709z M155.544,60.764c26-12.812,69.963-14.247,69.963-1.807
50
+			c-24.998,3.814-55.776,12.289-77.252,27.11c-1.78-7.684-3.121-13.859-3.221-14.248C147.189,68.28,151.057,64.517,155.544,60.764z
51
+			 M148.866,176.693c-0.066,0.103-0.107,0.207-0.172,0.312C148.686,176.951,148.747,176.901,148.866,176.693z M62.385,90.061
52
+			C74.368,74.97,94.09,70.775,112.027,67.396c6.252-1.376,32.013-13.519,37.185-8.872c-5.177-3.663-28.547,7.563-18.721,28.005
53
+			c1.782,8.326,4.832,13.434,5.207,23.274c-0.006-0.102,9.381,25.433,11.584,23.884c-11.205,12.959-10.665,31.013,1.412,43.322
54
+			c-11.304,18.524,0.622,38.056,17.116,47.907c0.118,0.088,1.532-0.104,3.176-0.385c-10.535,2.451-31.194,7.506-34.351,5.975
55
+			c31.017,23.391,60.317,50.249,49.885,95.066c-7.186,29.937-32.71,24.183-36.773-2.441c-4.156-34.713-27.054-59.17-56.686-77.898
56
+			c-9.724-2.244-15.367-2.838-18.262-2.377c-15.498-21.883-23.021-49.957-16.223-77.92C62.527,140.44,45.479,111.354,62.385,90.061z
57
+			"/>
58
+	</g>
59
+</g>
60
+</svg>

+ 99
- 0
images/smileys/smiley12.svg View File

@@ -0,0 +1,99 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="550px" height="550px" viewBox="-85.961 -76.564 550 550" enable-background="new -85.961 -76.564 550 550"
6
+	 xml:space="preserve">
7
+<path fill="#FFFFFF" d="M375.337,306.797c-0.469-4.74-1.526-9.275-3.114-13.497c1.934-10.411,0.559-21.495-4.283-31.819
8
+	c-0.162-0.34-0.363-0.644-0.529-0.979c0.09-0.258,0.195-0.508,0.285-0.766c16.713-48.639,12.746-104.139-10.879-152.264
9
+	C323.779,40.176,259.117,0,183.84,0C103.582,0,34.926,47.582,13,118.4c-28.951,93.5-4.13,155.04,21.792,190.2
10
+	c48.036,65.161,132.493,88.283,190.222,88.283c0.004,0,0.006,0,0.01,0c2.152,0,4.275-0.029,6.371-0.089
11
+	c13.791-0.395,23.117-7.666,29.648-15.994c4.46,2.898,10.195,5.138,17.535,5.745c8.615,3.305,19.753,7.126,32.374,7.126
12
+	c0,0,0,0,0.003,0c8.932,0,17.656-1.896,25.936-5.638c13.137-5.941,28.543-21.57,32.572-39.955c0.826-3.771,1.148-7.541,0.989-11.231
13
+	C374.557,327.583,376.355,317.076,375.337,306.797z"/>
14
+<g>
15
+	<path fill="#F0584F" d="M123.774,226.914c-0.133-0.514-0.174-0.708,0.095-1.488c0.687-2.66,2.555-5.93,5.501-7.16
16
+		c0.738-0.258,1.528-0.408,2.366-0.422c0.419-0.006,0.85,0.022,1.293,0.09c0.441,0.049,0.896,0.112,1.365,0.229
17
+		c1.878,0.437,3.955,1.407,6.389,2.94c0.183,0.114,0.861,0.674,1.029,0.996c1.099,4.151,2.818,8.189,4.974,11.875
18
+		c2.216,3.649,4.833,7.021,7.983,9.825c2.338,2.166,4.933,4.062,7.761,5.638c2.824,1.573,5.798,2.97,9.003,3.939
19
+		c4.671,1.536,9.667,2.463,14.797,2.921c0,0,0.396,0.062,1.122,0.173c0.731,0.096,1.776,0.328,3.135,0.434
20
+		c1.356,0.113,2.974,0.361,4.838,0.463c0.937,0.052,1.923,0.105,2.956,0.164c0.518,0.029,1.047,0.062,1.587,0.094
21
+		c0.492,0.008,0.994,0.016,1.505,0.023c1.029,0.051,2.069-0.039,3.159-0.055c1.068-0.102,2.188-0.145,3.298-0.322
22
+		c2.239-0.285,4.545-0.75,6.822-1.439c4.569-1.343,9.059-3.521,12.936-6.031c3.222-2.205,5.746-4.355,7.771-6.165
23
+		c2.021-1.85,3.589-3.282,4.766-4.358c2.387-2.125,3.51-2.598,3.984-1.395c0.391,1.283-0.109,4.118-1.755,7.784
24
+		c-1.633,3.651-4.435,8.106-8.465,12.33c0.489-0.359-1.573,2.084-5.726,5.229c-2.07,1.568-4.675,3.297-7.695,4.859
25
+		c-3.014,1.568-6.445,2.956-10.014,3.971c-1.783,0.496-3.593,0.941-5.396,1.264c-0.9,0.19-1.798,0.308-2.688,0.432
26
+		c-0.896,0.13-1.781,0.249-2.563,0.309c-1.62,0.146-3.188,0.287-4.679,0.422c-1.494,0.119-2.933,0.129-4.254,0.189
27
+		c-2.639,0.148-4.89,0.014-6.458-0.001c-0.786-0.021-1.404-0.022-1.828-0.052c-0.424-0.033-0.651-0.053-0.651-0.053
28
+		c-5.439-0.601-10.915-1.764-16.291-3.489c-4.259-1.325-8.418-3.209-12.4-5.429c-3.989-2.221-7.755-4.939-11.153-8.061
29
+		c-4.546-4.08-8.348-8.93-11.464-14.099C127.672,238.273,125.326,232.734,123.774,226.914z"/>
30
+</g>
31
+<path fill="#231F20" d="M329.523,120.868C266.038-8.453,79.232,7.267,42.043,127.394c-54.975,177.551,96.398,241.658,188.482,239.01
32
+	c7.151-0.205,11.892-13.756,16.869-23.053c2.693-0.683,5.289-1.566,7.717-2.749C354.366,292.344,363.589,190.257,329.523,120.868z
33
+	 M321.886,225.87c-33.116,126.562-146.812,95.719-153.837,96.966C30.024,280.747-14.096,138.397,139.444,63.779
34
+	C239.479,15.169,349.143,121.729,321.886,225.87z"/>
35
+<path fill="#231F20" d="M276.364,165.563c0,8.1-1.354,14.72-7.13,19.011c-3.582,2.66-10.756,9.507-15.449,9.507
36
+	c-22.58,0-24.165-20.543-24.165-33.672c0-13.126,9.935-23.764,22.185-23.764S276.364,152.435,276.364,165.563z"/>
37
+<circle fill="#231F20" cx="245.201" cy="161.605" r="77.524"/>
38
+<circle fill="#26A9E0" cx="246.434" cy="161.772" r="57.766"/>
39
+<g>
40
+	<path fill="#FFFFFF" d="M276.572,307.569c-15.525-3.474-12.379-19.646,0.955-24.13c13.459-4.533,40.652-24.197,53.761-12.595
41
+		C359.986,296.257,292.367,311.117,276.572,307.569C269.948,306.091,288.029,310.135,276.572,307.569z"/>
42
+	<path fill="#FFFFFF" d="M281.229,333.453c-5.886-1.986-8.254-7.443-6.762-13.228c2.424-9.309,11.889-9.898,19.887-11.451
43
+		c10.229-1.989,36.432-14.642,43.315-3.882C356.514,334.326,297.005,338.753,281.229,333.453
44
+		C275.277,331.446,298.703,339.32,281.229,333.453z"/>
45
+	<path fill="#FFFFFF" d="M308.943,269.859c-12.014,5.32-31.141,16.742-44.225,9.804c-15.662-8.298,4.67-24.894,12.307-30.747
46
+		c9.563-7.334,23.516-18.04,35.6-10.223C324.712,246.505,321.934,264.117,308.943,269.859
47
+		C298.27,274.592,319.473,265.207,308.943,269.859z"/>
48
+	<g>
49
+		<path fill="#FFFFFF" d="M278.879,335.802c13.021,3.411,26.643,2.778,39.871,0.032c9.053-1.876,19.919-2.785,13.27,10.552
50
+			C322.391,365.676,269.932,361.189,278.879,335.802C294.732,339.958,275.663,344.929,278.879,335.802z"/>
51
+		<g>
52
+			<path fill="#231F20" d="M338.177,296.574c11.107-13.36,0.026-35.477-17.589-35.27c4.483-7.736,3.688-18.129-3.337-24.976
53
+				c-12.551-12.231-28.678-2.877-40.715,5.812c-11.662,8.426-36.786,30.599-14.849,42.565c0.701,0.384,1.422,0.681,2.146,0.978
54
+				c-6.666,8.979,0.023,21.068,12.973,24.43c-8.686,7.328-13.363,18.951-3.453,25.862c-0.185,1.903-0.09,3.521-0.828,5.998
55
+				c16.658,4.278,38.404,1.689,55.099-2.328c3.437,8.539-34.906,20.703-51.631,13.824c0.112,0.169,0.208,0.332,0.325,0.504
56
+				c2.537,3.757,6.918,1.344,10.337,3.095c12.805,4.993,24.423,9.267,37.712,3.261c8.308-3.756,21.115-19.382,13.308-28.378
57
+				C347.342,322.459,347.934,302.955,338.177,296.574z M313.293,331.024c-8.669,1.461-21.691,3.449-32.021,2.812
58
+				c1.09-2.74,1.408-4.738-0.642-7.666c-3.812-5.591,3.085-9.578,7.688-10.454c5.052-0.959,11.171-3.049,17.373-4.961
59
+				c5.444-0.713,10.834-1.938,15.742-3.696c1.658-0.176,3.26-0.246,4.762-0.156c11.947-3.389,7.701,13.113,1.518,18.349
60
+				c-1.701,1.442-3.768,2.695-6.045,3.8C318.661,329.742,315.736,330.611,313.293,331.024z M283.377,251.282
61
+				c8.216-5.929,21.87-15.188,30.936-5.671c4.145,4.267,4.834,9.731,3.186,14.664c-1.487,0.683-3.23,1.496-5.178,2.408
62
+				c-10.562,2.547-22.342,7.377-32.428,12.431c-3.677,0.778-6.957,1.062-9.431,0.508
63
+				C254.759,272.141,278.645,254.705,283.377,251.282z M281.869,287.932c2.556-1.231,5.189-2.406,7.847-3.557
64
+				c4.035-1.396,7.986-3.094,11.73-4.795c5.624-2.184,11.288-4.264,16.819-6.282c8.664-3.358,15.313,8.129,11.211,15.249
65
+				c-1.809,2.803-4.683,5.373-8.162,7.704c-11.332,2.688-23.036,4.731-34.062,8.031c-3.281,0.983-6.538,2.755-9.427,5.003
66
+				c-0.009,0-0.015,0-0.021,0C276.223,304.787,265.296,292.92,281.869,287.932z"/>
67
+			<path fill="#231F20" d="M275.993,353.471c-3.812-5.691-5.179-10.645-6.95-15.042
68
+				C266.952,346.395,270.174,351.077,275.993,353.471z"/>
69
+		</g>
70
+	</g>
71
+</g>
72
+<path fill="#FFFFFF" d="M229.84,155.754c0,7.553-6.125,13.681-13.682,13.681s-13.682-6.128-13.682-13.681
73
+	c0-7.56,6.125-13.682,13.682-13.682S229.84,148.194,229.84,155.754z"/>
74
+<circle fill="#FFFFFF" cx="245.292" cy="189.446" r="22.549"/>
75
+<path fill="#231F20" d="M87.469,204.523c0,0-0.08-0.394-0.229-1.121c-0.128-0.721-0.333-1.771-0.335-3.232
76
+	c-0.033-1.448,0.068-3.17,0.457-5.157c0.365-1.989,1.054-4.195,2.096-6.493c2.069-4.608,5.736-9.438,10.552-13.42
77
+	c1.194-1.01,2.461-1.959,3.789-2.841c1.318-0.912,2.687-1.755,4.115-2.521c2.812-1.612,5.834-2.833,8.866-3.966
78
+	c3.067-1.054,6.178-1.876,9.271-2.471c1.547-0.267,3.079-0.561,4.611-0.688c1.523-0.184,3.028-0.338,4.513-0.368
79
+	c2.969-0.169,5.828-0.06,8.518,0.131c1.348,0.142,2.651,0.267,3.907,0.436c1.247,0.217,2.452,0.428,3.61,0.629
80
+	c2.298,0.502,4.37,1.033,6.188,1.633c1.817,0.556,3.364,1.212,4.632,1.726c1.256,0.534,2.224,1.081,2.886,1.395
81
+	c0.656,0.333,1.003,0.541,1.003,0.541s-1.565,0.428-4.186,0.979c-1.324,0.321-2.895,0.582-4.677,0.98
82
+	c-1.757,0.356-3.744,0.754-5.905,1.194c-4.278,0.873-9.142,1.906-14.198,3.153c-2.542,0.582-5.095,1.348-7.687,2.025
83
+	c-2.553,0.802-5.166,1.514-7.672,2.452c-2.532,0.867-5.023,1.823-7.402,2.856c-2.363,1.06-4.679,2.12-6.823,3.302
84
+	c-2.129,1.188-4.171,2.39-6.012,3.682c-1.814,1.3-3.542,2.601-5.003,3.963c-1.49,1.339-2.803,2.699-3.895,4.002
85
+	c-1.114,1.292-2.019,2.56-2.741,3.602c-0.368,0.54-0.698,1.027-0.98,1.448c-0.267,0.464-0.49,0.854-0.677,1.176
86
+	C87.677,204.186,87.469,204.523,87.469,204.523z"/>
87
+<path fill="#231F20" d="M84.328,129.534c0,0,0.392-0.074,1.125-0.208c0.359-0.08,0.801-0.175,1.324-0.288
88
+	c0.505-0.071,1.084-0.151,1.734-0.244c1.25-0.163,2.806-0.338,4.507-0.374c1.695-0.065,3.583,0.003,5.582,0.205
89
+	c1.989,0.175,4.109,0.585,6.292,1.06c2.188,0.502,4.454,1.214,6.763,2.001c2.312,0.799,4.653,1.812,7.025,2.854
90
+	c2.36,1.072,4.736,2.283,7.075,3.578c2.373,1.229,4.652,2.696,6.962,4.056c2.239,1.473,4.522,2.856,6.65,4.347
91
+	c4.312,2.918,8.337,5.837,11.85,8.426c1.778,1.318,3.402,2.518,4.846,3.586c1.493,1.057,2.74,2.052,3.859,2.815
92
+	c2.173,1.582,3.536,2.452,3.536,2.452s-0.077-0.392-0.27-1.104c-0.208-0.704-0.458-1.781-0.9-3.073
93
+	c-0.466-1.286-1.018-2.877-1.826-4.599c-0.769-1.746-1.764-3.643-2.927-5.686c-0.63-0.995-1.283-2.034-1.954-3.103
94
+	c-0.715-1.045-1.493-2.097-2.295-3.195c-1.663-2.123-3.5-4.323-5.608-6.407c-1.019-1.087-2.141-2.096-3.296-3.106
95
+	c-1.119-1.048-2.366-1.995-3.601-2.963c-2.518-1.9-5.208-3.655-8.043-5.226c-2.874-1.496-5.81-2.921-8.889-3.928
96
+	c-1.52-0.543-3.07-0.998-4.625-1.363c-1.544-0.392-3.097-0.707-4.646-0.909c-6.182-0.911-12.227-0.398-17.036,1.152
97
+	c-2.405,0.769-4.504,1.73-6.224,2.791c-1.736,1.048-3.079,2.126-4.133,3.121c-1.083,0.977-1.725,1.835-2.176,2.417
98
+	C84.565,129.217,84.328,129.534,84.328,129.534z"/>
99
+</svg>

+ 19
- 0
images/smileys/smiley13.svg View File

@@ -0,0 +1,19 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
5
+	 width="550px" height="550px" viewBox="0 0 550 550" enable-background="new 0 0 550 550" xml:space="preserve">
6
+<g>
7
+	<path fill="#FFFFFF" d="M405.188,83.625c-12.981-4.652-26.33-7.009-39.682-7.009c-32.229,0-64.362,14.062-92.078,39.577
8
+		c-4.251-4.12-7.979-7.578-9.813-9.096c-22.675-18.704-49.315-28.593-77.035-28.593c-20.612,0-41.31,5.714-59.878,16.522
9
+		c-31.396,17.634-59.658,48.545-75.659,82.785c-20.474,43.936-28.3,110.994,50.703,180.941
10
+		c46.296,40.986,108.883,71.457,154.583,93.705l2.356,1.146c0.929,0.508,1.88,0.969,2.851,1.391l37.554,18.391
11
+		c0,0,180.547-113.275,208.379-208.913C528.599,189.847,484.63,112.101,405.188,83.625z"/>
12
+	<path fill="#EE4036" d="M276.211,417.891c12.285,1.695,12.34-4.02,6.492,8.115c-85.112-41.695-253.535-117.604-199.63-233.271
13
+		c12.292-26.302,35.257-52.559,61.172-67.035c32.051-18.783,68.468-14.787,96.885,8.659c3.176,2.623,34.549,32.413,31.713,36.136
14
+		c27.132-38.738,71.108-71.279,120.424-53.604c57.24,20.519,97.48,76.929,80.199,137.95
15
+		c-25.957,89.207-117.41,140.075-195.729,176.312c51.723-41.762,206.95-182.596,129.942-248.605
16
+		c-34.086-29.215-76.645-27.041-103.692,13.896c-2.963,4.49-36.04,61.062-32.605,64.044
17
+		c-18.579-43.202-50.354-123.388-103.915-97.417C63.586,249.091,192.26,376.773,276.211,417.891z"/>
18
+</g>
19
+</svg>

+ 0
- 0
images/smileys/smiley14.svg View File


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save