Merge lp:~daker/loco-team-portal/fix.616547 into lp:loco-team-portal

Proposed by Adnane Belmadiaf on 2012-05-27
Status: Merged
Approved by: Adnane Belmadiaf on 2012-11-05
Approved revision: 533
Merged at revision: 554
Proposed branch: lp:~daker/loco-team-portal/fix.616547
Merge into: lp:loco-team-portal
Diff against target: 1674 lines (+1291/-172)
14 files modified
loco_directory/common/templatetags/smart_if.py (+401/-0)
loco_directory/events/urls.py (+4/-2)
loco_directory/events/views.py (+73/-4)
loco_directory/media/css/styles.css (+360/-34)
loco_directory/media/fonts/entypo-webfont.svg (+198/-0)
loco_directory/media/fonts/stylesheet.css (+16/-0)
loco_directory/media/js/comments.js (+50/-0)
loco_directory/settings.py (+2/-0)
loco_directory/templates/events/team_event_comment_new.inc.html (+12/-17)
loco_directory/templates/events/team_event_detail.html (+1/-0)
loco_directory/templates/events/team_event_detail.inc.html (+116/-51)
loco_directory/templates/events/team_event_detail_attendee.inc.html (+10/-18)
loco_directory/templates/events/team_event_detail_attendees.inc.html (+10/-32)
loco_directory/templates/events/team_event_detail_comments.inc.html (+38/-14)
To merge this branch: bzr merge lp:~daker/loco-team-portal/fix.616547
Reviewer Review Type Date Requested Status
Chris Johnston 2012-05-27 Needs Fixing on 2012-06-30
Review via email: mp+107553@code.launchpad.net

Commit Message

Fix the event layout

To post a comment you must log in.
528. By Adnane Belmadiaf on 2012-05-27

* Added inline editing of comments
* Added the ability to delete your own comments

Chris Johnston (cjohnston) wrote :

Text conflict in loco_directory/events/views.py
Contents conflict in loco_directory/media/css/newstyle.css
Text conflict in loco_directory/templates/events/team_event_detail.html
Text conflict in loco_directory/templates/events/team_event_detail_comments.inc.html
4 conflicts encountered.

review: Needs Fixing
529. By Adnane Belmadiaf on 2012-09-08

* A lot fixes for the event page.

530. By Adnane Belmadiaf on 2012-09-08

* Minor fix

531. By Adnane Belmadiaf on 2012-09-16

Removes nickname from sreg fields as it is already required by STRICT_USERNAMES

532. By Adnane Belmadiaf on 2012-10-30

Fixed the mugshot url

533. By Adnane Belmadiaf on 2012-10-30

* More fixes

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'loco_directory/common/templatetags/smart_if.py'
2--- loco_directory/common/templatetags/smart_if.py 1970-01-01 00:00:00 +0000
3+++ loco_directory/common/templatetags/smart_if.py 2012-10-30 12:31:21 +0000
4@@ -0,0 +1,401 @@
5+"""
6+A smarter {% if %} tag for django templates.
7+
8+While retaining current Django functionality, it also handles equality,
9+greater than and less than operators. Some common case examples::
10+
11+ {% if articles|length >= 5 %}...{% endif %}
12+ {% if "ifnotequal tag" != "beautiful" %}...{% endif %}
13+"""
14+import unittest
15+from django import template
16+
17+
18+register = template.Library()
19+
20+
21+#==============================================================================
22+# Calculation objects
23+#==============================================================================
24+
25+class BaseCalc(object):
26+ def __init__(self, var1, var2=None, negate=False):
27+ self.var1 = var1
28+ self.var2 = var2
29+ self.negate = negate
30+
31+ def resolve(self, context):
32+ try:
33+ var1, var2 = self.resolve_vars(context)
34+ outcome = self.calculate(var1, var2)
35+ except:
36+ outcome = False
37+ if self.negate:
38+ return not outcome
39+ return outcome
40+
41+ def resolve_vars(self, context):
42+ var2 = self.var2 and self.var2.resolve(context)
43+ return self.var1.resolve(context), var2
44+
45+ def calculate(self, var1, var2):
46+ raise NotImplementedError()
47+
48+
49+class Or(BaseCalc):
50+ def calculate(self, var1, var2):
51+ return var1 or var2
52+
53+
54+class And(BaseCalc):
55+ def calculate(self, var1, var2):
56+ return var1 and var2
57+
58+
59+class Equals(BaseCalc):
60+ def calculate(self, var1, var2):
61+ return var1 == var2
62+
63+
64+class Greater(BaseCalc):
65+ def calculate(self, var1, var2):
66+ return var1 > var2
67+
68+
69+class GreaterOrEqual(BaseCalc):
70+ def calculate(self, var1, var2):
71+ return var1 >= var2
72+
73+
74+class In(BaseCalc):
75+ def calculate(self, var1, var2):
76+ return var1 in var2
77+
78+
79+#==============================================================================
80+# Tests
81+#==============================================================================
82+
83+class TestVar(object):
84+ """
85+ A basic self-resolvable object similar to a Django template variable. Used
86+ to assist with tests.
87+ """
88+ def __init__(self, value):
89+ self.value = value
90+
91+ def resolve(self, context):
92+ return self.value
93+
94+
95+class SmartIfTests(unittest.TestCase):
96+ def setUp(self):
97+ self.true = TestVar(True)
98+ self.false = TestVar(False)
99+ self.high = TestVar(9000)
100+ self.low = TestVar(1)
101+
102+ def assertCalc(self, calc, context=None):
103+ """
104+ Test a calculation is True, also checking the inverse "negate" case.
105+ """
106+ context = context or {}
107+ self.assert_(calc.resolve(context))
108+ calc.negate = not calc.negate
109+ self.assertFalse(calc.resolve(context))
110+
111+ def assertCalcFalse(self, calc, context=None):
112+ """
113+ Test a calculation is False, also checking the inverse "negate" case.
114+ """
115+ context = context or {}
116+ self.assertFalse(calc.resolve(context))
117+ calc.negate = not calc.negate
118+ self.assert_(calc.resolve(context))
119+
120+ def test_or(self):
121+ self.assertCalc(Or(self.true))
122+ self.assertCalcFalse(Or(self.false))
123+ self.assertCalc(Or(self.true, self.true))
124+ self.assertCalc(Or(self.true, self.false))
125+ self.assertCalc(Or(self.false, self.true))
126+ self.assertCalcFalse(Or(self.false, self.false))
127+
128+ def test_and(self):
129+ self.assertCalc(And(self.true, self.true))
130+ self.assertCalcFalse(And(self.true, self.false))
131+ self.assertCalcFalse(And(self.false, self.true))
132+ self.assertCalcFalse(And(self.false, self.false))
133+
134+ def test_equals(self):
135+ self.assertCalc(Equals(self.low, self.low))
136+ self.assertCalcFalse(Equals(self.low, self.high))
137+
138+ def test_greater(self):
139+ self.assertCalc(Greater(self.high, self.low))
140+ self.assertCalcFalse(Greater(self.low, self.low))
141+ self.assertCalcFalse(Greater(self.low, self.high))
142+
143+ def test_greater_or_equal(self):
144+ self.assertCalc(GreaterOrEqual(self.high, self.low))
145+ self.assertCalc(GreaterOrEqual(self.low, self.low))
146+ self.assertCalcFalse(GreaterOrEqual(self.low, self.high))
147+
148+ def test_in(self):
149+ list_ = TestVar([1,2,3])
150+ invalid_list = TestVar(None)
151+ self.assertCalc(In(self.low, list_))
152+ self.assertCalcFalse(In(self.low, invalid_list))
153+
154+ def test_parse_bits(self):
155+ var = IfParser([True]).parse()
156+ self.assert_(var.resolve({}))
157+ var = IfParser([False]).parse()
158+ self.assertFalse(var.resolve({}))
159+
160+ var = IfParser([False, 'or', True]).parse()
161+ self.assert_(var.resolve({}))
162+
163+ var = IfParser([False, 'and', True]).parse()
164+ self.assertFalse(var.resolve({}))
165+
166+ var = IfParser(['not', False, 'and', 'not', False]).parse()
167+ self.assert_(var.resolve({}))
168+
169+ var = IfParser(['not', 'not', True]).parse()
170+ self.assert_(var.resolve({}))
171+
172+ var = IfParser([1, '=', 1]).parse()
173+ self.assert_(var.resolve({}))
174+
175+ var = IfParser([1, 'not', '=', 1]).parse()
176+ self.assertFalse(var.resolve({}))
177+
178+ var = IfParser([1, 'not', 'not', '=', 1]).parse()
179+ self.assert_(var.resolve({}))
180+
181+ var = IfParser([1, '!=', 1]).parse()
182+ self.assertFalse(var.resolve({}))
183+
184+ var = IfParser([3, '>', 2]).parse()
185+ self.assert_(var.resolve({}))
186+
187+ var = IfParser([1, '<', 2]).parse()
188+ self.assert_(var.resolve({}))
189+
190+ var = IfParser([2, 'not', 'in', [2, 3]]).parse()
191+ self.assertFalse(var.resolve({}))
192+
193+ var = IfParser([1, 'or', 1, '=', 2]).parse()
194+ self.assert_(var.resolve({}))
195+
196+ def test_boolean(self):
197+ var = IfParser([True, 'and', True, 'and', True]).parse()
198+ self.assert_(var.resolve({}))
199+ var = IfParser([False, 'or', False, 'or', True]).parse()
200+ self.assert_(var.resolve({}))
201+ var = IfParser([True, 'and', False, 'or', True]).parse()
202+ self.assert_(var.resolve({}))
203+ var = IfParser([False, 'or', True, 'and', True]).parse()
204+ self.assert_(var.resolve({}))
205+
206+ var = IfParser([True, 'and', True, 'and', False]).parse()
207+ self.assertFalse(var.resolve({}))
208+ var = IfParser([False, 'or', False, 'or', False]).parse()
209+ self.assertFalse(var.resolve({}))
210+ var = IfParser([False, 'or', True, 'and', False]).parse()
211+ self.assertFalse(var.resolve({}))
212+ var = IfParser([False, 'and', True, 'or', False]).parse()
213+ self.assertFalse(var.resolve({}))
214+
215+ def test_invalid(self):
216+ self.assertRaises(ValueError, IfParser(['not']).parse)
217+ self.assertRaises(ValueError, IfParser(['==']).parse)
218+ self.assertRaises(ValueError, IfParser([1, 'in']).parse)
219+ self.assertRaises(ValueError, IfParser([1, '>', 'in']).parse)
220+ self.assertRaises(ValueError, IfParser([1, '==', 'not', 'not']).parse)
221+ self.assertRaises(ValueError, IfParser([1, 2]).parse)
222+
223+
224+OPERATORS = {
225+ '=': (Equals, True),
226+ '==': (Equals, True),
227+ '!=': (Equals, False),
228+ '>': (Greater, True),
229+ '>=': (GreaterOrEqual, True),
230+ '<=': (Greater, False),
231+ '<': (GreaterOrEqual, False),
232+ 'or': (Or, True),
233+ 'and': (And, True),
234+ 'in': (In, True),
235+}
236+BOOL_OPERATORS = ('or', 'and')
237+
238+
239+class IfParser(object):
240+ error_class = ValueError
241+
242+ def __init__(self, tokens):
243+ self.tokens = tokens
244+
245+ def _get_tokens(self):
246+ return self._tokens
247+
248+ def _set_tokens(self, tokens):
249+ self._tokens = tokens
250+ self.len = len(tokens)
251+ self.pos = 0
252+
253+ tokens = property(_get_tokens, _set_tokens)
254+
255+ def parse(self):
256+ if self.at_end():
257+ raise self.error_class('No variables provided.')
258+ var1 = self.get_bool_var()
259+ while not self.at_end():
260+ op, negate = self.get_operator()
261+ var2 = self.get_bool_var()
262+ var1 = op(var1, var2, negate=negate)
263+ return var1
264+
265+ def get_token(self, eof_message=None, lookahead=False):
266+ negate = True
267+ token = None
268+ pos = self.pos
269+ while token is None or token == 'not':
270+ if pos >= self.len:
271+ if eof_message is None:
272+ raise self.error_class()
273+ raise self.error_class(eof_message)
274+ token = self.tokens[pos]
275+ negate = not negate
276+ pos += 1
277+ if not lookahead:
278+ self.pos = pos
279+ return token, negate
280+
281+ def at_end(self):
282+ return self.pos >= self.len
283+
284+ def create_var(self, value):
285+ return TestVar(value)
286+
287+ def get_bool_var(self):
288+ """
289+ Returns either a variable by itself or a non-boolean operation (such as
290+ ``x == 0`` or ``x < 0``).
291+
292+ This is needed to keep correct precedence for boolean operations (i.e.
293+ ``x or x == 0`` should be ``x or (x == 0)``, not ``(x or x) == 0``).
294+ """
295+ var = self.get_var()
296+ if not self.at_end():
297+ op_token = self.get_token(lookahead=True)[0]
298+ if isinstance(op_token, basestring) and (op_token not in
299+ BOOL_OPERATORS):
300+ op, negate = self.get_operator()
301+ return op(var, self.get_var(), negate=negate)
302+ return var
303+
304+ def get_var(self):
305+ token, negate = self.get_token('Reached end of statement, still '
306+ 'expecting a variable.')
307+ if isinstance(token, basestring) and token in OPERATORS:
308+ raise self.error_class('Expected variable, got operator (%s).' %
309+ token)
310+ var = self.create_var(token)
311+ if negate:
312+ return Or(var, negate=True)
313+ return var
314+
315+ def get_operator(self):
316+ token, negate = self.get_token('Reached end of statement, still '
317+ 'expecting an operator.')
318+ if not isinstance(token, basestring) or token not in OPERATORS:
319+ raise self.error_class('%s is not a valid operator.' % token)
320+ if self.at_end():
321+ raise self.error_class('No variable provided after "%s".' % token)
322+ op, true = OPERATORS[token]
323+ if not true:
324+ negate = not negate
325+ return op, negate
326+
327+
328+#==============================================================================
329+# Actual templatetag code.
330+#==============================================================================
331+
332+class TemplateIfParser(IfParser):
333+ error_class = template.TemplateSyntaxError
334+
335+ def __init__(self, parser, *args, **kwargs):
336+ self.template_parser = parser
337+ return super(TemplateIfParser, self).__init__(*args, **kwargs)
338+
339+ def create_var(self, value):
340+ return self.template_parser.compile_filter(value)
341+
342+
343+class SmartIfNode(template.Node):
344+ def __init__(self, var, nodelist_true, nodelist_false=None):
345+ self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
346+ self.var = var
347+
348+ def render(self, context):
349+ if self.var.resolve(context):
350+ return self.nodelist_true.render(context)
351+ if self.nodelist_false:
352+ return self.nodelist_false.render(context)
353+ return ''
354+
355+ def __repr__(self):
356+ return "<Smart If node>"
357+
358+ def __iter__(self):
359+ for node in self.nodelist_true:
360+ yield node
361+ if self.nodelist_false:
362+ for node in self.nodelist_false:
363+ yield node
364+
365+ def get_nodes_by_type(self, nodetype):
366+ nodes = []
367+ if isinstance(self, nodetype):
368+ nodes.append(self)
369+ nodes.extend(self.nodelist_true.get_nodes_by_type(nodetype))
370+ if self.nodelist_false:
371+ nodes.extend(self.nodelist_false.get_nodes_by_type(nodetype))
372+ return nodes
373+
374+
375+@register.tag('if')
376+def smart_if(parser, token):
377+ """
378+ A smarter {% if %} tag for django templates.
379+
380+ While retaining current Django functionality, it also handles equality,
381+ greater than and less than operators. Some common case examples::
382+
383+ {% if articles|length >= 5 %}...{% endif %}
384+ {% if "ifnotequal tag" != "beautiful" %}...{% endif %}
385+
386+ Arguments and operators _must_ have a space between them, so
387+ ``{% if 1>2 %}`` is not a valid smart if tag.
388+
389+ All supported operators are: ``or``, ``and``, ``in``, ``=`` (or ``==``),
390+ ``!=``, ``>``, ``>=``, ``<`` and ``<=``.
391+ """
392+ bits = token.split_contents()[1:]
393+ var = TemplateIfParser(parser, bits).parse()
394+ nodelist_true = parser.parse(('else', 'endif'))
395+ token = parser.next_token()
396+ if token.contents == 'else':
397+ nodelist_false = parser.parse(('endif',))
398+ parser.delete_first_token()
399+ else:
400+ nodelist_false = None
401+ return SmartIfNode(var, nodelist_true, nodelist_false)
402+
403+
404+if __name__ == '__main__':
405+ unittest.main()
406
407=== modified file 'loco_directory/events/urls.py'
408--- loco_directory/events/urls.py 2012-06-30 23:44:14 +0000
409+++ loco_directory/events/urls.py 2012-10-30 12:31:21 +0000
410@@ -29,8 +29,10 @@
411 url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/add/$', 'events.views.team_event_new', name='team-event-new'),
412 url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/rss/$', 'events.views.team_events_rss', name='team-events-rss'),
413 url(r'^(?P<team_slug>[a-zA-Z0-9\-\.\+?]+)/ical/$', 'events.views.team_event_list_ical', name='team-event-list-ical'),
414- url(r'^add/$', 'events.views.team_event_select', name='team-event-select'),
415-
416+ url(r'^add/$', 'events.views.team_event_select', name='team-event-select'),
417+ url(r'^comment-update/$', 'events.views.team_event_comment_edit', name='team-event-comment-edit'),
418+ url(r'^comment-delete/(?P<pk>\d+)/$', 'events.views.team_event_comment_delete', name='team-event-comment-delete'),
419+
420 # Old url notations
421 url(r'^team/locations/$', 'events.views.team_event_locations'),
422 url(r'^team/ical/$', 'events.views.teams_event_list_ical'),
423
424=== modified file 'loco_directory/events/views.py'
425--- loco_directory/events/views.py 2012-07-14 20:07:11 +0000
426+++ loco_directory/events/views.py 2012-10-30 12:31:21 +0000
427@@ -1,7 +1,6 @@
428 from django.template import RequestContext
429 from django.http import HttpResponse, HttpResponseRedirect, Http404
430-from django.shortcuts import render_to_response
431-from django.shortcuts import get_object_or_404
432+from django.shortcuts import render_to_response, redirect, get_object_or_404
433 from django.contrib.auth.decorators import login_required
434 from django.utils import simplejson
435 from django.utils.translation import ugettext as _
436@@ -10,7 +9,7 @@
437 from events.models import TeamEvent
438 from events.models import GlobalEvent
439 from teams.models import Team, Country, Continent
440-from events.models import Attendee
441+from events.models import Attendee, TeamEventComment
442
443 from forms import TeamEventForm
444 from forms import TeamEventCommentForm
445@@ -153,7 +152,7 @@
446 profile = create_profile(request.user.username)
447 team_event_comment.commenter_profile = profile
448 team_event_comment.save()
449- request.user.message_set.create(message=_('Comment saved.'))
450+ request.user.message_set.create(message=_('Your comment has been saved.'))
451 return redirect(team_event_object)
452 else:
453 form = TeamEventCommentForm()
454@@ -378,6 +377,34 @@
455 return render_to_response('events/team_event_register.html',
456 context, RequestContext(request))
457
458+@login_required
459+def team_event_comment_new(request, team_slug, team_event_id):
460+ """
461+ create a comment for a team event
462+ """
463+ team_event_object = get_object_or_404(TeamEvent, pk=team_event_id)
464+
465+ if request.method == 'POST':
466+ form = TeamEventCommentForm(data=request.POST)
467+ if form.is_valid():
468+ team_event_comment = form.save(commit=False)
469+ team_event_comment.team_event = team_event_object
470+ from userprofiles.models import create_profile
471+ profile = create_profile(request.user.username)
472+ team_event_comment.commenter_profile = profile
473+ team_event_comment.save()
474+ request.user.message_set.create(message=_('Comment saved.'))
475+ return redirect( team_event_object )
476+ else:
477+ form = TeamEventCommentForm()
478+
479+ context = {
480+ 'team_event_object': team_event_object,
481+ 'form': form,
482+ }
483+ return render_to_response('events/team_event_comment_new.html',
484+ context, RequestContext(request))
485+
486
487 #################################################################
488 # Global Events
489@@ -563,3 +590,45 @@
490 'global_event_object': global_event_object,
491 }
492 return render_to_response('events/global_jam_dashboard.html', context, RequestContext(request))
493+
494+@login_required
495+def team_event_comment_edit(request):
496+ """
497+ update a comment for a team event
498+ """
499+ if request.method == 'POST':
500+ response_dict = {}
501+ id = request.POST.get('id', False)
502+ comment = request.POST.get('comment', False)
503+ if id and comment:
504+ try:
505+ comment_obj = TeamEventComment.objects.get(pk=id)
506+ if comment_obj.commenter_profile.user == request.user:
507+ comment_obj.comment = comment
508+ comment_obj.save()
509+ response_dict.update({'success': True, 'response': comment_obj.comment})
510+ else:
511+ response_dict.update({'success': False, 'response': _('Your are not authorized to edit this comment.') })
512+ except TeamEventComment.DoesNotExist:
513+ response_dict.update({'success': False, 'response': _('This comment does not exist.') })
514+ else:
515+ response_dict.update({'success': False, 'response': _('Missing arguments.') })
516+ else:
517+ response_dict.update({'success': False, 'response': _('You can\'t edit this comment using this method.') })
518+ return HttpResponse(simplejson.dumps(response_dict), mimetype='application/json')
519+
520+@login_required
521+def team_event_comment_delete(request, pk):
522+ """
523+ delete a comment for a team event
524+ """
525+ next = request.GET.get('next', None)
526+ comment = get_object_or_404(TeamEventComment, pk=pk)
527+ if comment.commenter_profile.user == request.user:
528+ comment.delete()
529+ request.user.message_set.create(message=_('Your comment has been removed.'))
530+ if next: redirect_to = next
531+ else: redirect_to = '/'
532+ return redirect(redirect_to)
533+ else:
534+ raise Http404
535
536=== modified file 'loco_directory/media/css/styles.css'
537--- loco_directory/media/css/styles.css 2012-06-18 22:31:29 +0000
538+++ loco_directory/media/css/styles.css 2012-10-30 12:31:21 +0000
539@@ -1,13 +1,30 @@
540 /*
541- * newstyle.css
542+ * styles.css
543 *
544 * Base style for the LoCo Team Portal. This is an implementation
545 * of the ( at the time of this writing ) new Ubuntu branding.
546 *
547 * Author: Michael Hall ( mhall119 )
548 * Author: Paul Tagliamonte ( paultag )
549+ * Author: Adnane Belmadiaf ( daker )
550 */
551
552+* {
553+ outline: none;
554+}
555+
556+ @font-face {
557+ font-family: 'EntypoRegular';
558+ src: url('../fonts/entypo-webfont.eot');
559+ src: url('../fonts/entypo-webfont.eot?#iefix') format('embedded-opentype'),
560+ url('../fonts/entypo-webfont.woff') format('woff'),
561+ url('../fonts/entypo-webfont.ttf') format('truetype'),
562+ url('../fonts/entypo-webfont.svg#EntypoRegular') format('svg');
563+ font-weight: normal;
564+ font-style: normal;
565+}
566+
567+
568 h1.centered {
569 text-align: center;
570 }
571@@ -192,30 +209,6 @@
572 display: inline;
573 }
574
575-.message .content-shim {
576- margin: 0px; /* buffer the bulb in */
577- padding: 5px; /* un-suck the text */
578- background-repeat: no-repeat;
579- background-image: url(../img/infobox-icon.png);
580- padding-left: 30px; /* infobox icon is 22x22 */
581-}
582-
583-.message {
584- width: 70%;
585- margin-left: auto;
586- margin-right: auto;
587- background-color: #FFFFB6;
588- border-radius: 0px;
589- box-shadow: 0px 1px 1px #FFE4B6;
590-}
591-
592-.message { /* noncss 3. XXX: remove me in 20 years. */
593- -webkit-border-radius: 8px;
594- -moz-border-radius: 8px;
595- -moz-box-shadow: 0px 0px 1px #FFE4B6;
596- -webkit-box-shadow: 0px 0px 1px #FFE4B6;
597-}
598-
599 /* UI Errors ( To yell at the user when they don't fill out a form ) */
600
601 /*
602@@ -472,12 +465,43 @@
603 }
604 */
605
606+h3.attendees-title {
607+ display: inline-block;
608+ font-size: 12px;
609+ font-weight: bold;
610+ margin: 0;
611+ max-width: 200px;
612+ overflow: hidden;
613+ text-overflow: ellipsis;
614+ vertical-align: middle;
615+ white-space: nowrap;
616+ text-transform: uppercase;
617+ margin-top: 10px;
618+}
619+ul.attendees {
620+ margin: 0;
621+ padding: 0;
622+}
623+
624 .attendee-cell {
625- padding-top:10px;
626+ height: 32px;
627+ list-style-type: none;
628+ margin: 0;
629+ padding: 0;
630+ margin-top: 10px;
631 }
632
633 .attendee-mugshot {
634- vertical-align: middle;
635+ cursor: pointer;
636+ float: left;
637+ height: 32px;
638+ margin-right: 10px;
639+ width: 32px;
640+}
641+
642+.attendee-infos {
643+ height: 32px;
644+ float: left;
645 }
646
647 .agenda-list {
648@@ -647,11 +671,6 @@
649 width: 300px;
650 }
651
652-.map {
653- min-height: 170px;
654- width: 250px;
655-}
656-
657 /* Blog Styling */
658 article.blog-entry {
659 border: 1px solid #DFDCD9;
660@@ -725,10 +744,317 @@
661 }
662
663 .rsvp-link {
664- font-size: 0.8em;
665- font-weight: bold;
666+ margin: 0 auto;
667+ margin-top: 10px!important;
668+ width: 185px;
669 }
670
671 table.side-table {
672 width: 280px;
673 }
674+
675+
676+/* Comments */
677+
678+h3.comments-nbr {
679+ margin: 0 0 10px 20px;
680+}
681+ol.comments {
682+ list-style: none;
683+ width: 100%;
684+ margin: 0;
685+ padding: 0;
686+ margin-bottom: 10px;
687+}
688+
689+ol.comments::after {
690+ content: ''!important;
691+}
692+
693+ol.comments li {
694+ position: relative;
695+ overflow: auto;
696+}
697+
698+ol.comments li.response {
699+ float: none;
700+ width: auto;
701+ margin: 0;
702+ padding: 20px 20px 0 20px;
703+ font-size: 1em;
704+ line-height: 1.4em;
705+ color: #555;
706+ border-top: 1px dotted rgba(0, 0, 0, 0.2);
707+}
708+
709+ol.comments li:last-child {
710+ border-bottom: none;
711+}
712+
713+ol.comments li div.mugshot {
714+ float: left;
715+ width: 50px;
716+}
717+
718+ol.comments li div.mugshot img {
719+ float: left;
720+ width: 50px;
721+ margin: 3px 10px 0 0;
722+ -webkit-border-radius: 4px;
723+ -moz-border-radius: 4px;
724+ border-radius: 4px;
725+}
726+
727+ol.comments li div.mugshot a:hover img {
728+ opacity: .8;
729+}
730+
731+ol.comments li div.comment-body {
732+ width: 595px;
733+ margin: 0;
734+ margin-left: 10px;
735+ overflow: hidden;
736+ font-size: 12px;
737+ float: left;
738+}
739+
740+ol.comments li div.comment-body div {
741+ margin: 0;
742+ padding: 0;
743+}
744+
745+ol.comments li form {
746+ width: 515px;
747+}
748+
749+ol.comments li div.comment-error{
750+ padding: 5px!important;
751+ background-color:#ffebe8;
752+ border:1px solid #dd3c10
753+}
754+
755+ol.comments li form textarea.edit {
756+ width: 490px;
757+ max-width: 490px;
758+ margin-right: 0;
759+}
760+
761+ol.comments li div.comment-comment a.save {
762+ background: url('../images/bg_btn.png') center 0 repeat-x #DD4814;
763+ padding: 5px 10px 7px 10px;
764+ color: white !important;
765+ -moz-border-radius: 4px;
766+ -webkit-border-radius: 4px;
767+ border-radius: 4px;
768+ font-size: 13px;
769+ text-shadow: none;
770+}
771+
772+ol.comments li a.posted:hover {
773+ text-decoration: none;
774+ color: #777777;
775+
776+}
777+
778+ol.comments li p.comment-meta {
779+ margin: 10px 0 15px 0;
780+ padding: 0;
781+ line-height: 1;
782+ color: #ccc;
783+}
784+
785+ol.comments li p.comment-meta a {
786+ color: #999999;
787+ font-size: 12px;
788+ font-style: italic;
789+}
790+
791+ol.comments li p.comment-meta a:hover {
792+ color: #666;
793+}
794+
795+ol.comments li p.comment-meta span.sep {
796+ margin: 0 3px;
797+}
798+
799+.comment-form {
800+ overflow: auto;
801+ margin: 0 20px 20px 20px;
802+}
803+
804+.comment-form div.mugshot {
805+ float: left;
806+ width: 50px;
807+}
808+
809+.comment-form div.mugshot img {
810+ float: left;
811+ width: 50px;
812+ margin: 5px 10px 0 0;
813+ -webkit-border-radius: 4px;
814+ -moz-border-radius: 4px;
815+ border-radius: 4px;
816+}
817+
818+.comment-form div.mugshot a:hover img {
819+ opacity: .8;
820+}
821+
822+.comment-form form {
823+ width: 597px;
824+ margin: 4px 0 0 10px;
825+ overflow: hidden;
826+ font-size: 12px;
827+ float: left;
828+}
829+
830+
831+#id_comment {
832+ width: 450px!important;
833+ max-width: 600px!important;
834+}
835+
836+.submit-button {
837+ background: transparent url(../images/bg_btn.png) repeat-x top left !important;
838+ -webkit-border-radius: 4px!important;
839+ -moz-border-radius: 4px!important;
840+ border-radius: 4px!important;
841+ cursor: default;
842+ font-size: 14px!important;
843+ text-align: center;
844+ white-space: nowrap;
845+ margin-right: 16px;
846+ margin-top: 0;
847+ height: 27px;
848+ line-height: 27px;
849+ min-width: 54px;
850+ outline: 0;
851+ padding: 0 8px!important;
852+ color: white;
853+ text-shadow: 0 1px rgba(0, 0, 0, 0.1);
854+ color: white!important;
855+ display: block;
856+}
857+
858+
859+.message {
860+ background-color: #FFE99A;
861+ color: #A28348;
862+ position: relative;
863+ margin-bottom: 20px;
864+ border: 1px solid #F1D982;
865+ border-radius: 3px;
866+ -moz-border-radius: 3px;
867+ -webkit-border-radius: 3px;
868+ padding: 10px;
869+ width: 500px;
870+ margin: 0 auto;
871+ margin-bottom: 10px;
872+}
873+
874+/* Event detail */
875+
876+.pagelet h3{
877+ margin-bottom: 0;
878+}
879+
880+.event-partofglobal-event {
881+ line-height: 22px;
882+ font-size: 12px;
883+ font-style: italic;
884+ margin-bottom: 5px;
885+}
886+
887+.map {
888+ border: 1px solid #dedede;
889+ background: #fafafa;
890+ padding: 5px;
891+ margin: 0 20px 0 20px;
892+ border-radius: 2px;
893+ -webkit-border-radius: 2px;
894+ -moz-border-radius: 2px;
895+}
896+
897+.map_img {
898+ width: 642px;
899+ border: 1px solid #dedede;
900+}
901+
902+.box_content {
903+ -moz-border-radius: 4px;
904+ -webkit-border-radius: 4px;
905+ border-radius: 4px;
906+ border: 1px solid #AEA79F;
907+ padding: 0;
908+ background: white;
909+}
910+
911+.sidebar-inner {
912+ padding: 10px;
913+}
914+
915+.pagelet {
916+ padding: 17px 20px 5px 20px;
917+ position: relative;
918+}
919+
920+.event-venue {
921+ padding: 5px 20px 5px 20px;
922+}
923+
924+.event-venue .event-venue-name {
925+ line-height: 22px;
926+}
927+
928+
929+.event-venue .event-venue-city {
930+ line-height: 22px;
931+}
932+
933+.event-venue .event-venue-adress {
934+ line-height: 22px;
935+}
936+
937+.event-infos {
938+ padding: 5px 20px 5px 20px;
939+ width: 350px;
940+ float: left;
941+}
942+
943+/* Pictos */
944+
945+.pictogram {
946+ font-family: 'EntypoRegular';
947+ font-size: 35px;
948+ position: relative;
949+ color: #1a3d51;
950+ margin: 4px 5px 0 0;
951+ width: 10px;
952+ height: 10px;
953+}
954+
955+.pictogram-l {
956+ position: relative;
957+ top: -3px;
958+}
959+
960+.team:after { content: ","; }
961+.link:after { content: ";"; }
962+.calendar:after { content: "P"; }
963+.rss:after { content: "S"; }
964+.tags:after { content: "C"; }
965+.comments:after { content: "9"; }
966+.place:after { content: "0"; }
967+.personne:after { content: "+"; }
968+.announcement:after { content: "K"}
969+.geo:after { content: "2"; font-size: 75px;}
970+
971+.share .fb-like {
972+ position: relative;
973+ top: -2px;
974+}
975+
976+
977+.highlight{
978+ background: #FFE99A;
979+}
980\ No newline at end of file
981
982=== added directory 'loco_directory/media/fonts'
983=== added file 'loco_directory/media/fonts/entypo-webfont.eot'
984Binary files loco_directory/media/fonts/entypo-webfont.eot 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.eot 2012-10-30 12:31:21 +0000 differ
985=== added file 'loco_directory/media/fonts/entypo-webfont.svg'
986--- loco_directory/media/fonts/entypo-webfont.svg 1970-01-01 00:00:00 +0000
987+++ loco_directory/media/fonts/entypo-webfont.svg 2012-10-30 12:31:21 +0000
988@@ -0,0 +1,198 @@
989+<?xml version="1.0" standalone="no"?>
990+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
991+<svg xmlns="http://www.w3.org/2000/svg">
992+<metadata>
993+This is a custom SVG webfont generated by Font Squirrel.
994+Copyright : Creative Commons CC BYSA 2012
995+Designer : Daniel Bruce
996+Foundry : Daniel Bruce
997+Foundry URL : wwwdanielbrucese
998+</metadata>
999+<defs>
1000+<font id="EntypoRegular" horiz-adv-x="1228" >
1001+<font-face units-per-em="2048" ascent="1536" descent="-512" />
1002+<missing-glyph horiz-adv-x="1024" />
1003+<glyph unicode=" " horiz-adv-x="1024" />
1004+<glyph unicode="&#x09;" horiz-adv-x="1024" />
1005+<glyph unicode="&#xa0;" horiz-adv-x="1024" />
1006+<glyph unicode="!" horiz-adv-x="972" d="M103 246q1 10 2 28.5t14.5 35t36.5 34.5q39 31 67.5 44t52 4t33.5 -17t37 -37q43 -43 198.5 114.5t114.5 198.5q-49 49 -55 74q-8 43 49 117q18 23 36 37t35 15t28.5 1t29 -12.5t23.5 -17.5t24.5 -24.5t20.5 -21.5q47 -47 -6 -186t-196.5 -282.5t-283 -196t-186.5 -4.5 l-20 18q-20 20 -24.5 25.5t-18 24t-12.5 28.5z" />
1007+<glyph unicode="&#x22;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
1008+<glyph unicode="#" horiz-adv-x="780" d="M109 971q-18 31 14 49q33 16 47 -16l102 -197q82 23 158 -16t102 -119l136 -385q27 -82 -19.5 -162t-140.5 -113q-96 -29 -179 8t-106 119l-110 396q-20 68 6 136t88 107zM244 614.5q8 -28.5 34.5 -43t55.5 -4.5q27 10 41 37t4 53q-8 29 -34 43.5t-54 4.5q-27 -8 -41 -35 t-6 -55.5z" />
1009+<glyph unicode="$" d="M102 639q0 10 11 18l120 82q8 8 27 13q14 6 29 6h182v194q0 20 21 21h45q20 0 20 -21v-880q0 -20 -20 -21h-45q-20 0 -21 21v450h-182q-8 0 -29 4q-20 8 -27 13l-120 84q-11 4 -11 16zM588 860h350q12 0 29 -6q18 -4 26 -12l121 -82q12 -10 12 -19q0 -10 -12 -16 l-121 -84q-6 -4 -26 -12q-20 -4 -29 -4h-309z" />
1010+<glyph unicode="%" horiz-adv-x="1128" d="M104 264v375q0 12 1 14t18 -2q23 -12 202 -106t193 -101q20 -10 47 -10q25 0 45 10q14 6 193.5 100.5t202.5 106.5q20 10 20 -12v-375q0 -16 -17.5 -32.5t-33.5 -16.5h-821q-16 0 -33 16.5t-17 32.5zM106.5 797.5q4.5 11.5 24.5 11.5h866q20 0 24.5 -11.5t-4.5 -24.5 t-22 -19q-373 -201 -385 -207q-20 -10 -45 -10q-27 0 -47 10q-12 6 -385 207q-12 6 -21.5 19t-5 24.5z" />
1011+<glyph unicode="&#x26;" horiz-adv-x="1005" d="M102 113l52 243l297 295l258 260q55 10 129 -63q72 -72 63 -129l-258 -258l-297 -297zM166 258q33 -18 47 -35q23 -23 37 -47l82 19l24 22q-2 45 -51 96q-23 23 -47.5 36t-36.5 16l-14 2l-23 -25z" />
1012+<glyph unicode="'" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" />
1013+<glyph unicode="(" horiz-adv-x="1126" d="M102 528l369 332v-198q317 0 483 -312q51 -100 70 -186q-88 156 -214 201t-339 45v-224z" />
1014+<glyph unicode=")" d="M102 530l371 330v-137l-217 -193l217 -200v-144zM358 530l371 330v-198q106 0 186 -51.5t118 -124t61.5 -146.5t27.5 -125l4 -51q-88 158 -172 202t-225 44v-224z" />
1015+<glyph unicode="*" horiz-adv-x="1126" d="M102 164q4 20 13.5 54t51.5 119t98.5 150.5t159.5 120t230 54.5v198l369 -330l-369 -344v224q-213 0 -339 -45t-214 -201z" />
1016+<glyph unicode="+" horiz-adv-x="1167" d="M102 51v109q0 47 209 125q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 42 115.5t160.5 60.5t162 -60.5t42.5 -115.5l-14 -90q18 -8 19 -43q-2 -29 -9.5 -44.5t-14.5 -17.5t-14 -7t-10 -17 q-8 -49 -31.5 -76t-23.5 -49q0 -63 36 -98.5t130 -69.5q209 -78 209 -125v-109h-481h-482z" />
1017+<glyph unicode="," d="M102 76v180q0 45 88 80q76 31 105 61.5t29 85.5q0 20 -18.5 45t-26.5 68q-2 10 -18.5 21.5t-20.5 54.5q0 14 4 23.5t8 13.5l4 2q-8 45 -10 80q-4 49 32.5 102t129 53t130 -53t33.5 -102l-10 -80q14 -8 14 -39q-2 -27 -7 -40.5t-11 -14.5t-11 -6t-7 -15 q-8 -43 -26.5 -67.5t-18.5 -45.5q0 -55 28.5 -85.5t104.5 -61.5q188 -76 188 -125v-135h-713zM688 616q0 10 3 17.5t5 9.5l4 2q-6 33 -8 60q-2 37 25.5 76.5t97.5 39.5q68 0 96.5 -40t26.5 -76l-8 -60q10 -6 10 -29q-2 -33 -14.5 -41t-14.5 -16q-6 -33 -19 -51.5t-13 -32.5 q0 -41 21.5 -65.5t78.5 -47.5q113 -45 135 -79q4 -8 7 -59.5t5 -100.5v-47h-229v147q0 53 -30.5 80t-157.5 88q43 31 43 84q0 14 -14.5 32.5t-20.5 51.5q-2 8 -14.5 16t-14.5 41z" />
1018+<glyph unicode="-" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
1019+<glyph unicode="." d="M102 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" />
1020+<glyph unicode="/" d="M102 164v563q0 23 14.5 37t37.5 14h295q-33 -25 -62 -50.5t-39 -39.5l-12 -12h-131v-461h665v55l103 86v-192q0 -20 -15.5 -35.5t-35.5 -15.5h-768q-23 0 -37.5 15.5t-14.5 35.5zM373 342q0 8 1 23.5t9 57.5t22.5 81t45 86t72.5 81t110.5 57.5t152.5 23.5v159l340 -256 l-340 -266v182q-170 0 -248.5 -43t-164.5 -186z" />
1021+<glyph unicode="0" horiz-adv-x="716" d="M102 666q0 106 75 181t181.5 75t181 -75t74.5 -181q0 -211 -223 -519l-33 -45q-10 12 -27.5 36t-61.5 91.5t-77.5 133t-61.5 150.5t-28 153zM219 662q0 -57 41 -97.5t98.5 -40.5t97.5 40t40 97.5t-40 98.5t-98 41q-59 0 -99 -40t-40 -99z" />
1022+<glyph unicode="1" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" />
1023+<glyph unicode="2" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" />
1024+<glyph unicode="3" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" />
1025+<glyph unicode="4" horiz-adv-x="1085" d="M102 512q0 182 129 311t311.5 129t311.5 -129t129 -311t-129 -311t-311.5 -129t-311.5 129t-129 311zM184 475q14 -127 104.5 -217t217.5 -102v196h72v-196q127 12 217 102t104 217h-199v72h199q-14 127 -104 218t-217 103v-198h-72v198q-127 -12 -217 -103t-105 -218 h199v-72h-199z" />
1026+<glyph unicode="5" horiz-adv-x="1024" d="M102 512q0 63 45.5 108.5t108.5 45.5q53 0 92 -33l268 162q-2 8 -2 24q0 63 45.5 108.5t108.5 45.5t108.5 -45t45.5 -108.5t-45.5 -108.5t-108.5 -45q-49 0 -94 30l-268 -159q4 -16 4 -24.5t-4 -25.5l268 -161q43 33 94 32q63 0 108.5 -45t45.5 -108.5t-45.5 -108.5 t-108.5 -45t-108.5 45t-45.5 109q0 16 2 24l-268 160q-41 -31 -92 -31q-63 0 -108.5 45.5t-45.5 108.5z" />
1027+<glyph unicode="6" horiz-adv-x="1089" d="M104 651q0 94 72 160q66 57 156 57t153 -57l60 -53l57 53q66 57 156 57t155 -57q72 -66 72 -160t-72 -159l-368 -338l-369 338q-72 65 -72 159z" />
1028+<glyph unicode="7" horiz-adv-x="1105" d="M102 618h328l123 345l121 -345h330l-269 -202l94 -355l-276 213l-279 -213l95 355z" />
1029+<glyph unicode="8" horiz-adv-x="1126" d="M102 227v316q0 45 43 45h162v-410h-160q-45 0 -45 49zM358 178v410h17q57 0 128.5 75.5t90.5 133.5q6 23 8 66.5t12.5 63t38.5 19.5q74 0 74 -141l-10 -160q129 4 188 4q119 0 119 -149v-246q0 -61 -72.5 -119.5t-152.5 -58.5h-215q-51 0 -109 51t-117 51z" />
1030+<glyph unicode="9" d="M102 307v307q0 41 31 72t72 31h194v-318h359h10v-92q0 -43 -29.5 -72.5t-72.5 -29.5h-256l-154 -154v154h-51q-41 0 -72 29.5t-31 72.5zM461 461v409q0 41 30.5 72t71.5 31h461q43 0 72.5 -31t29.5 -72v-307q0 -43 -29.5 -72.5t-72.5 -29.5h-51v-154l-154 154h-358z" />
1031+<glyph unicode=":" horiz-adv-x="1024" d="M102 410v358q0 41 30 71.5t73 30.5h614q41 0 72 -30.5t31 -71.5v-358q0 -43 -31 -73t-72 -30h-205v-153l-204 153h-205q-43 0 -73 30t-30 73z" />
1032+<glyph unicode=";" horiz-adv-x="983" d="M102 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8zM532 174v72q115 0 185 110q55 88 26 150q-16 37 -63 37q-61 0 -104.5 45t-43.5 108.5t43 108.5 t105 45q150 0 188 -150q39 -143 -41 -309q-82 -172 -227 -209q-33 -8 -68 -8z" />
1033+<glyph unicode="&#x3c;" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" />
1034+<glyph unicode="=" horiz-adv-x="1026" d="M105.5 672.5q9.5 109.5 113.5 197.5q18 14 24.5 29.5t6.5 25t6 19.5t25 17q27 10 48 -10.5t54 -20.5q135 2 204.5 -67.5t164.5 -274.5q16 -35 40.5 -53.5t46 -22.5t45 -23.5t36.5 -56.5q23 -63 -77 -164.5t-259 -161.5q-168 -57 -303.5 -44.5t-157.5 75.5 q-20 57 12.5 115.5t18.5 114.5q-58 196 -48.5 305.5zM193 164q4 -12 51 -23.5t137 -5.5t180 39t163 87t101.5 93t24.5 54q-6 20 -48 31.5t-128 1t-190.5 -49.5t-177.5 -88t-96 -85t-17 -54zM274 231q82 72 224 121q8 4 39 15v-2q14 -41 -18 -84t-89 -64q-99 -39 -156 14z " />
1035+<glyph unicode="&#x3e;" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" />
1036+<glyph unicode="?" horiz-adv-x="1126" d="M102 815l95 33q92 68 155.5 88t99 4t64.5 -51t63.5 -73t81 -63.5t132.5 -20.5t204 52q14 6 22.5 -1t0.5 -19q-98 -141 -169 -218t-114 -92.5t-73.5 -2t-61.5 38t-65.5 40t-95 -4t-140.5 -87.5l92 -362h-104z" />
1037+<glyph unicode="@" horiz-adv-x="1064" d="M102 377q82 47 82 135q0 78 -82 125q12 43 35 86q76 -18 139 45q55 55 35 139q43 23 84 35q51 -82 137 -82q84 0 136 82q41 -12 84 -35q-20 -84 34 -139q63 -63 140 -45q20 -39 37 -86q-84 -47 -84 -125t84 -125q-16 -47 -37 -86q-76 18 -140 -45q-55 -59 -34 -139 q-43 -23 -84 -35q-51 82 -136 82q-86 0 -137 -82q-41 12 -84 35q20 80 -35 139q-55 55 -139 35q-23 43 -35 86zM344 512q0 -78 55.5 -132t133 -54t132 54t54.5 132t-54.5 132t-132 54t-133 -54t-55.5 -132z" />
1038+<glyph unicode="A" horiz-adv-x="1128" d="M109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
1039+<glyph unicode="B" horiz-adv-x="1126" d="M102 852q0 16 10.5 26.5t26.5 10.5h176q51 94 248 94q199 0 250 -94h176q14 0 24.5 -11.5t10.5 -25.5q0 -78 -21.5 -140.5t-64.5 -109.5t-76 -73.5t-90 -63.5q-80 -53 -113.5 -89t-33.5 -87v-68q74 -8 121 -31.5t47 -56.5q0 -39 -67 -65.5t-163 -26.5q-94 0 -160.5 26.5 t-66.5 65.5q0 33 47 56.5t121 31.5v68q0 51 -34 86t-116 90q-57 39 -89 63.5t-76 72.5t-65.5 110.5t-21.5 140.5zM176 817q8 -94 55.5 -153.5t128.5 -116.5q-49 106 -55 270h-129zM369 841.5q0 -12.5 18.5 -29.5t65.5 -32.5t110 -15.5q66 0 113 15.5t64.5 32.5t17.5 29.5 t-17.5 30t-64.5 33t-113 15.5q-63 0 -110 -15.5t-65.5 -33t-18.5 -30zM766 547q82 55 129 115.5t55 154.5h-129q-2 -157 -55 -270z" />
1040+<glyph unicode="C" horiz-adv-x="1189" d="M104 368q4 22 21 33l477 338q25 16 55 17l162 2q31 -4 47 -27l29 -41q132 98 132 216q0 37 -13 77q-10 29 18 39q8 3 14 3q18 0 25 -21q16 -48 16 -94q0 -57 -25 -110q-46 -95 -132 -161l18 -27q16 -23 8 -55l-51 -160q-12 -31 -35 -47l-477 -338q-18 -13 -33 -13 q-17 0 -30 17l-217 314q-9 12 -10 27q0 6 1 11zM723 605q-2 -8 -2 -16q0 -24 14 -44q20 -29 53 -35q8 -1 15 -1q24 0 47 15q34 24 34 65q0 8 -1 17l-31 -18q-4 -2 -14 -2q-20 0 -27 16q-14 27 14 43q2 0 25 12q-24 19 -49 19l-45 -17q-27 -20 -33 -54z" />
1041+<glyph unicode="D" d="M102 205v461q0 41 31 71.5t72 30.5h123q33 0 41 29l32 96q8 29 39 29h348q35 0 41 -29l33 -96q6 -29 39 -29h123q43 0 72.5 -30.5t29.5 -71.5v-461q0 -43 -29.5 -73t-72.5 -30h-819q-41 0 -72 30t-31 73zM358 460.5q0 -106.5 75 -181t181.5 -74.5t181 74.5t74.5 181 t-74.5 181.5t-181 75t-181.5 -75t-75 -181.5zM461 460.5q0 63.5 45 108.5t108.5 45t108.5 -45t45 -108.5t-45 -108.5t-108.5 -45t-108.5 45t-45 108.5zM952 628.5q0 -14.5 11.5 -24.5t26 -10t24.5 10t10 25q0 37 -35 37q-14 0 -25.5 -11.5t-11.5 -26z" />
1042+<glyph unicode="E" horiz-adv-x="1046" d="M102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
1043+<glyph unicode="F" horiz-adv-x="1210" d="M104 475q10 121 107.5 241t220.5 156q100 28 196 29q188 0 353 -110q74 -49 104 -114q24 -50 24 -87q0 -11 -2 -21q-9 -43 -36 -49q-16 -4 -55 10q-30 11 -63 12q-9 0 -19 -1q-43 -4 -84 -47q-24 -36 -24 -62q0 -8 2 -14q9 -29 35 -67t26 -52q0 -18 -22.5 -45 t-65.5 -57.5t-123 -52t-178 -21.5q-190 0 -298 102q-98 93 -98 225q-1 12 0 25zM578 389q0 -31 22.5 -53.5t55 -22.5t55 22.5t22.5 53.5q0 33 -22.5 55.5t-55 22.5t-55 -22.5t-22.5 -55.5z" />
1044+<glyph unicode="G" horiz-adv-x="1169" d="M104 180q45 102 132.5 197.5t181.5 157t181 108.5t142 68l58 20q-16 0 -43 -1t-106 -14.5t-152.5 -39t-166.5 -86t-163 -144.5q-4 30 -4 59q0 203 180 308q135 79 347 79q80 0 171 -11q174 -20 203 -52q2 -2 2 -4q0 -3 -4 -6q-78 -41 -133.5 -111.5t-81 -135t-67.5 -134 t-95 -106.5q-73 -52 -175 -52q-96 0 -216 46q-68 -76 -115 -179q-7 -15 -23 -14q-11 0 -26 6q-29 13 -29 31q0 5 2 10z" />
1045+<glyph unicode="H" horiz-adv-x="800" d="M111 115q-7 19 -7 38q0 39 27 79q41 60 119 90q45 17 87 16q39 0 75 -14v669h82q0 -37 31.5 -80t69.5 -79.5t70.5 -89t32.5 -105.5t-43 -129q-20 -33 -26 -14q-2 6 0 14q10 18 7 58t-13.5 80t-45 74t-83.5 42v-547q2 -51 -39 -98t-107 -72q-46 -17 -89 -17q-29 0 -57 8 q-68 20 -91 77z" />
1046+<glyph unicode="I" horiz-adv-x="1087" d="M104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283 h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" />
1047+<glyph unicode="J" d="M102 338l82 174l-82 174h103l114 -102h183l-127 409h102l230 -409h266h16q10 0 37 -4.5t47.5 -11.5t36.5 -21.5t16 -34.5q0 -33 -38.5 -50.5t-75.5 -19.5l-39 -2h-266l-230 -409h-102l127 409h-183l-114 -102h-103z" />
1048+<glyph unicode="K" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM211 324l106 63q-29 57 -28.5 125t28.5 125l-106 63q-45 -86 -45 -185q0 -107 45 -191zM350 512 q0 -94 65.5 -159.5t159.5 -65.5q92 0 159 65.5t67 159.5t-66.5 159.5t-159.5 65.5q-94 0 -159.5 -65.5t-65.5 -159.5zM385 147q94 -45 187 -45h8q94 0 184 48l-64 104q-61 -29 -125 -29q-66 0 -126 29zM385 874l64 -104q61 29 126 29q63 0 125 -29l64 104q-90 47 -195 48 q-100 -5 -184 -48zM831 387l107 -63q47 88 47 194q-2 98 -47 182l-107 -63q31 -61 31 -125t-31 -125z" />
1049+<glyph unicode="L" horiz-adv-x="1146" d="M102 352q0 96 54.5 175t142.5 114q12 143 118.5 242.5t254.5 99.5q154 0 263 -109.5t109 -263.5q0 -145 -99 -251.5t-243 -118.5q-35 -88 -113.5 -143.5t-176.5 -55.5q-127 0 -218.5 91t-91.5 220zM102 868q0 43 31 75t76 32q43 0 73.5 -32t30.5 -75q0 -45 -30.5 -75.5 t-73.5 -30.5q-45 0 -76 30.5t-31 75.5zM150 868.5q0 -24.5 17 -42t42 -17.5q23 0 40 17.5t17 42t-17.5 41t-39.5 16.5q-25 0 -42 -16.5t-17 -41zM205 352q0 -86 61.5 -146.5t145.5 -60.5q119 0 180 103q-106 23 -184 99.5t-101 182.5q-102 -61 -102 -178zM416 559 q14 -76 70.5 -131t134.5 -72q-2 82 -61.5 141.5t-143.5 61.5zM416 662q125 0 215 -89.5t92 -216.5q90 16 149.5 89t59.5 165q0 106 -77 183t-183 77q-94 0 -166 -59t-90 -149z" />
1050+<glyph unicode="M" d="M102 512q0 14 20.5 45t64.5 73t101.5 80t144.5 63.5t181.5 25.5t181.5 -25.5t144 -63.5t101 -80t64.5 -73t20.5 -45t-20.5 -45t-64.5 -73t-101 -80t-144 -63.5t-181.5 -25.5t-181.5 25.5t-144.5 63.5t-101.5 80t-64.5 73t-20.5 45zM385 512q0 -92 66.5 -156.5 t162.5 -64.5q94 0 161 64.5t67 156.5q0 90 -66.5 155.5t-161 65.5t-162 -65.5t-67.5 -155.5zM500 512q0 45 33.5 78t80.5 33q14 0 10.5 -24t-12 -48.5t1.5 -38.5q6 -8 36 -3t51.5 11t25.5 -8q0 -45 -32.5 -78t-80 -33t-81 33t-33.5 78z" />
1051+<glyph unicode="N" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM537 498v280h71v-252 l154 -153l-51 -49z" />
1052+<glyph unicode="O" horiz-adv-x="860" d="M102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86 t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
1053+<glyph unicode="P" horiz-adv-x="1126" d="M102 154v614q0 41 30 71.5t73 30.5h45v-102h164v102h297v-102h163v102h48q41 0 71.5 -30.5t30.5 -71.5v-614q0 -43 -30.5 -73t-71.5 -30h-717q-43 0 -73 30t-30 73zM205 154h717v409h-717v-409zM297 799v174h72v-174h-72zM758 799v174h71v-174h-71z" />
1054+<glyph unicode="Q" horiz-adv-x="618" d="M104 536q0 16 86 122q90 112 184 215q90 99 98 100q5 -4 -76 -191q-79 -182 -79 -192q2 -5 97.5 -44.5t99.5 -56.5q0 -17 -88 -124q-90 -111 -183 -214q-90 -99 -97 -100q-5 2 35 94.5t81 187.5q39 91 39 100q-2 7 -97 47q-100 42 -100 56z" />
1055+<glyph unicode="R" horiz-adv-x="778" d="M102 115v118q0 37 31 79t69 73t68.5 66.5t30.5 60.5q0 27 -30.5 61.5t-68.5 65.5t-69 72t-31 77v121q0 35 88.5 75t199 40t198.5 -40t88 -75v-121q0 -37 -31 -77.5t-68.5 -71.5t-68.5 -65.5t-31 -61.5q0 -25 31 -60.5t68.5 -66.5t68.5 -73t31 -79v-118q0 -35 -88 -75 t-198.5 -40t-199 40t-88.5 75zM164 840l2 -52q0 -35 92 -122q6 -6 22.5 -21.5t23.5 -22.5l20 -20q12 -12 17 -21.5t11 -20.5t9.5 -23.5t3.5 -24.5q0 -14 -5.5 -29.5t-9.5 -24.5t-18.5 -25.5t-20.5 -23t-26.5 -25.5t-26.5 -26q-92 -88 -92 -125v-67q8 4 68.5 23.5t95.5 45 t35 60.5q0 18 12 25.5t25.5 0t13.5 -25.5q0 -35 34.5 -60.5t95 -45t68.5 -23.5v67q0 35 -94 125q-4 4 -29.5 29t-31.5 32t-20.5 25.5t-18.5 34t-4 33.5t4 33.5t18.5 34t20.5 25.5t31.5 32t29.5 29q94 90 94 122l2 52q-106 -53 -227 -54q-123 1 -225 54zM164 889q-1 -3 -2 -5 q0 -5 6 -7q90 -55 221 -56q135 0 225 51q5 3 6 9q0 10 -22 24q-96 55 -205 56q-125 0 -211 -56z" />
1056+<glyph unicode="S" horiz-adv-x="983" d="M102 240q0 47 34 80.5t81 33.5q49 0 83 -33.5t34 -80.5q0 -49 -34 -83t-83 -34q-47 0 -81 34t-34 83zM102 537v120q221 0 378 -156.5t157 -377.5h-121q0 172 -122 293t-292 121zM102 780v121q322 0 550.5 -228.5t228.5 -549.5h-123q0 272 -192 464.5t-464 192.5z" />
1057+<glyph unicode="T" horiz-adv-x="1208" d="M102 711q209 211 503 211t501 -211l-72 -72q-178 180 -430 180t-430 -180zM246 567q150 150 359.5 150t357.5 -150l-72 -73q-119 121 -286 120.5t-288 -120.5zM389 422q90 90 215 90t215 -90l-71 -72q-59 59 -143.5 59.5t-143.5 -59.5zM504 205q0 43 29.5 72.5t70.5 29.5 q43 0 73 -29.5t30 -72.5t-30 -73t-73 -30q-41 0 -70.5 30t-29.5 73z" />
1058+<glyph unicode="U" horiz-adv-x="921" d="M102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" />
1059+<glyph unicode="V" horiz-adv-x="921" d="M102 154v399q0 23 15.5 42t36.5 19h409v144q0 53 -27.5 82.5t-74.5 29.5q-102 0 -103 -112v-41h-102v20q0 113 52 174.5t152.5 61.5t153 -61.5t52.5 -174.5v-123h92q20 0 40.5 -20.5t20.5 -40.5v-399q0 -20 -14 -41t-35 -27l-61 -18q-43 -16 -101 -17h-297q-57 0 -100 17 l-61 18q-20 6 -34 25.5t-14 42.5z" />
1060+<glyph unicode="W" horiz-adv-x="890" d="M104 476q4 30 29 48q23 16 52.5 12t45.5 -26l121 -160l303 488q14 25 44 31q9 2 18 3q20 0 37 -12q25 -14 31 -44q2 -9 3 -17q0 -20 -12 -37l-356 -576q-23 -33 -58 -32h-4q-35 0 -57 28l-182 242q-15 18 -15 42q-1 5 0 10z" />
1061+<glyph unicode="X" horiz-adv-x="686" d="M102 306.5q0 25.5 19 43.5l141 162l-141 162q-18 16 -18.5 41.5t18 44t44 18.5t42.5 -18l137 -156l135 156q18 18 44 18t42 -18q18 -18 18.5 -44t-18.5 -42l-141 -162l141 -162q18 -18 18.5 -43.5t-18.5 -42.5q-16 -18 -41.5 -18t-44.5 18l-135 154l-137 -154 q-16 -18 -42 -18t-44 18q-19 17 -19 42.5z" />
1062+<glyph unicode="Y" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM272 461h519v104h-519v-104z" />
1063+<glyph unicode="Z" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM274 459h207v-205h105v205h207v104h-207v207h-105v-207h-207v-104z" />
1064+<glyph unicode="[" horiz-adv-x="1064" d="M102 512q0 178 126 304t304.5 126t304.5 -126t126 -304t-126 -304t-304.5 -126t-304.5 126t-126 304zM287 354l88 -88l157 158l156 -158l88 88l-155 158l155 156l-88 90l-156 -158l-157 158l-88 -90l155 -156z" />
1065+<glyph unicode="\" horiz-adv-x="798" d="M102 512q0 51 31 51h533q31 0 30.5 -51t-30.5 -51h-533q-31 0 -31 51z" />
1066+<glyph unicode="]" horiz-adv-x="798" d="M102 512q0 51 31 51h215v215q0 31 51.5 31t51.5 -31v-215h215q31 0 30.5 -51t-30.5 -51h-215v-215q0 -31 -51.5 -31t-51.5 31v215h-215q-31 0 -31 51z" />
1067+<glyph unicode="^" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " />
1068+<glyph unicode="_" horiz-adv-x="675" d="M102 487q92 80 193.5 129.5t155.5 49.5q78 0 34 -166l-71 -275q-16 -66 6 -65q43 0 123 61l30 -41q-88 -88 -180 -134t-143 -46q-102 0 -55 180l61 260q16 59 0 60q-14 0 -56 -18.5t-71 -39.5zM326 897q0 45 36.5 86t98.5 41q49 0 76.5 -28.5t27.5 -71.5q0 -51 -40 -90 t-97 -39q-49 0 -76.5 27.5t-25.5 74.5z" />
1069+<glyph unicode="`" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" />
1070+<glyph unicode="a" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" />
1071+<glyph unicode="b" horiz-adv-x="1150" d="M104 512q0 191 134 328q135 139 329 143h6q191 0 329 -134q140 -136 145 -331v-6q0 -191 -135 -329q-136 -140 -330 -142h-12q-187 0 -323 133q-143 140 -143 338zM389 616h113v7q0 29 18 55q16 25 53 24q41 0 55.5 -20t14.5 -47q0 -18 -16 -41q-8 -14 -19 -19l-6 -4 l-16.5 -11t-20.5 -15t-21.5 -18.5t-17.5 -18.5q-14 -16 -18 -78v-10h108v4q0 10 5 31q6 16 30 34l29 21q47 39 55 49q27 35 27 82q0 80 -55.5 119t-137.5 39q-61 0 -106 -29q-68 -43 -74 -147v-7zM497 290q0 -25 18 -43q19 -19 50 -22h2q29 0 48.5 18.5t21.5 47.5 q0 68 -70 71h-2q-29 0 -48.5 -19t-19.5 -53z" />
1072+<glyph unicode="c" horiz-adv-x="1189" d="M109 94q-5 9 -5.5 18t5.5 17l454 801q12 18 33 18q23 0 31 -18l454 -801q5 -8 5 -17t-5 -18q-10 -16 -30 -16h-912q-20 0 -30 16zM532 180h125v103h-125v-103zM532 360h125v308h-125v-308z" />
1073+<glyph unicode="d" horiz-adv-x="1167" d="M102 512q0 174 122 297t296 123q170 0 292 -120t126 -290h127l-188 -209l-189 209h146q-4 127 -95.5 216t-218.5 89q-131 0 -222 -92t-91 -223t91 -223t222 -92q102 0 187 61l71 -78q-115 -88 -258 -88q-174 0 -296 123t-122 297z" />
1074+<glyph unicode="e" horiz-adv-x="1167" d="M102 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209z" />
1075+<glyph unicode="f" d="M102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109 q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
1076+<glyph unicode="g" horiz-adv-x="1075" d="M102 635l215 184v-112h553q43 0 73 -30t30 -73v-297q0 -43 -30 -72.5t-73 -29.5h-706v143h665v215h-512v-112z" />
1077+<glyph unicode="h" d="M102 614l195 205l195 -205h-123v-266h227l131 -143h-399q-43 0 -73 29.5t-30 72.5v307h-123zM502 819h399q41 0 72 -29.5t31 -72.5v-307h122l-194 -205l-195 205h123v266h-227z" />
1078+<glyph unicode="i" horiz-adv-x="921" d="M102 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM102 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5zM102 716.5 q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5z" />
1079+<glyph unicode="j" d="M102 307.5q0 20.5 15.5 35.5t36.5 15h307q23 0 37 -15t14 -35.5t-14.5 -36t-36.5 -15.5h-307q-20 0 -36 15.5t-16 36zM102 512q0 20 15.5 35.5t36.5 15.5h307q23 0 37 -15.5t14 -35.5t-14.5 -35.5t-36.5 -15.5h-307q-20 0 -36 15.5t-16 35.5zM102 716.5q0 20.5 15.5 36 t36.5 15.5h307q23 0 37 -15.5t14 -36t-14.5 -35.5t-36.5 -15h-307q-20 0 -36 15t-16 35.5zM621 512q0 51 30 51h168v174q0 31 51.5 31t51.5 -31v-174h174q31 0 30.5 -51t-30.5 -51h-174v-174q0 -31 -51.5 -31t-51.5 31v174h-168q-30 0 -30 51z" />
1080+<glyph unicode="k" horiz-adv-x="819" d="M102 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM102 645v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 287v92q0 82 82 82h92q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82zM461 645v92q0 82 82 82h92 q82 0 82 -82v-92q0 -82 -82 -82h-92q-82 0 -82 82z" />
1081+<glyph unicode="l" horiz-adv-x="921" d="M102 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM205 154h512v716h-512v-716zM317 268v88h287v-88h-287zM317 670v90h287v-90h-287zM319 467v92h287v-92h-287z" />
1082+<glyph unicode="m" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM205 154h512v716h-512v-716z" />
1083+<glyph unicode="n" horiz-adv-x="921" d="M102 307v615q0 20 15.5 35.5t36.5 15.5h409q23 0 37 -15.5t14 -35.5v-154h154q23 0 37 -15.5t14 -35.5v-615q0 -20 -14 -35.5t-37 -15.5h-410q-20 0 -35.5 15.5t-15.5 35.5v154h-153q-20 0 -36 15.5t-16 35.5zM205 358h102v359q0 20 14.5 35.5t36.5 15.5h154v102h-307 v-512zM410 154h307v512h-307v-512z" />
1084+<glyph unicode="o" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
1085+<glyph unicode="p" d="M106 690q-3 8 -2 15q0 9 4 17q7 15 21 19l696 254q10 4 18 4q22 0 31 -28l107 -289h-102l-127 154l-222 -154h-182q-55 0 -93 -39t-38 -94v-164zM309 66v483q0 16 11.5 28.5t27.5 12.5h739q16 0 27.5 -12.5t11.5 -28.5v-483q0 -16 -11 -28.5t-28 -12.5h-739 q-16 0 -27.5 12.5t-11.5 28.5zM418 129h614v164l-74 166l-172 -62l-133 -137l-141 176l-94 -219v-88z" />
1086+<glyph unicode="q" horiz-adv-x="1208" d="M102 195v61h103v102h-103v103h103v102h-103v103h103v102h-103v61q0 16 12.5 28.5t28.5 12.5h922q18 0 29.5 -12t11.5 -29v-61h-102v-102h102v-103h-102v-102h102v-103h-102v-102h102v-61q0 -16 -11.5 -28.5t-29.5 -12.5h-922q-16 0 -28.5 12.5t-12.5 28.5zM492 358 l256 154l-256 154v-308z" />
1087+<glyph unicode="r" horiz-adv-x="921" d="M102 154v716q0 41 31 72t72 31h512q43 0 72.5 -31t29.5 -72v-716q0 -43 -29.5 -73t-72.5 -30h-512q-41 0 -72 30t-31 73zM289 289q10 -33 53 -45q20 -6 40 -6q24 0 48 8q88 27 88 100v266q53 -8 69 -51q9 -24 8 -44q0 -17 -5 -32q-4 -10 2 -10q4 0 12 10q26 35 26 73 q0 11 -2 22q-9 49 -34 80.5t-50.5 67.5t-25.5 54h-61v-376q-19 8 -41 7q-24 0 -49 -10q-45 -16 -68 -49q-15 -21 -15 -42q1 -11 5 -23z" />
1088+<glyph unicode="s" horiz-adv-x="1232" d="M104 614q-2 27 6.5 39.5t41.5 12.5h929q33 0 41 -12.5t6 -39.5l-43 -460q-2 -27 -12 -39.5t-43 -12.5h-827q-33 0 -43 12.5t-13 39.5zM190 737l15 133q4 23 20.5 37.5t36.5 14.5h168q51 0 88 -37l29 -29q37 -37 88 -37h350q20 0 38.5 -12t23.5 -29l10 -41h-867z" />
1089+<glyph unicode="t" horiz-adv-x="1210" d="M103 651q0 7 1 12q2 7 7.5 15t8.5 12t12 13l13 14l31 31v-82h858v82l29 -31q4 -4 14 -13.5t13.5 -13.5t8.5 -12t6 -15.5t1 -19.5t-2 -29q-6 -29 -23.5 -130t-36 -211.5t-20.5 -118.5q-10 -51 -61 -52h-715q-53 0 -62 52q-6 25 -39.5 228.5t-40.5 231.5q-3 28 -3 37z M248 717v51q0 23 13 36t26 15h12h612q6 0 14.5 -1t23 -14t14.5 -36v-51h-715zM350 870q0 23 13.5 36.5t25.5 15.5h12h408q6 0 14 -1t22.5 -14.5t14.5 -36.5h-510zM401 440q0 -51 52 -51h305q23 0 36 12.5t13 24.5l2 14v103h-72v-82h-264v82h-72v-103z" />
1090+<glyph unicode="u" horiz-adv-x="903" d="M104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
1091+<glyph unicode="v" horiz-adv-x="1230" d="M104 283q-2 9 -2 18q0 36 35 55l164 111h100l-174 -135h181q10 0 12 -6l43 -115h305l43 115q4 6 12 6h181l-175 135h103l162 -111q35 -20 34 -55q0 -9 -2 -18l-28 -158q-4 -20 -22.5 -33.5t-41.5 -13.5h-835q-51 0 -66 47zM340 688l276 260l277 -260h-154v-252h-245v252 h-154z" />
1092+<glyph unicode="w" horiz-adv-x="1024" d="M0 283q-2 9 -2 18q0 36 35 55l164 109h100l-174 -133h180q8 0 12 -6l43 -115h306l43 115q2 6 12 6h180l-174 133h100l164 -109q35 -20 35 -55q0 -9 -2 -18l-29 -158q-4 -20 -23.5 -34.5t-39.5 -14.5h-836q-20 0 -39.5 14t-25.5 35zM236 694h153v252h246v-252h153 l-276 -260z" />
1093+<glyph unicode="x" horiz-adv-x="1128" d="M104 369q-2 13 -2 26q0 38 19 70l160 385q23 45 75 45h107l-21 -207h-139l262 -217l260 217h-137l-20 207h104q53 0 76 -45l162 -385q17 -33 16 -69q0 -13 -2 -27l-35 -191q-4 -20 -22.5 -35.5t-38.5 -15.5h-727q-20 0 -39 15.5t-23 35.5zM190 326l13 -74 q2 -20 19.5 -35.5t39.5 -15.5h604q23 0 40.5 15t19.5 36l14 74q2 20 -10 35.5t-35 15.5h-662q-20 0 -33.5 -14t-9.5 -37z" />
1094+<glyph unicode="y" d="M102 360q0 76 54.5 129.5t130.5 53.5q4 0 11 -1t11 -1q-4 25 -4 39q0 111 80 188.5t193 77.5q92 0 163.5 -53.5t98.5 -137.5q25 4 41 4q102 0 173.5 -69.5t71.5 -170t-71.5 -170t-173.5 -69.5h-594q-76 0 -130.5 53t-54.5 127z" />
1095+<glyph unicode="z" d="M102 360.5q0 75.5 54.5 128t132.5 52.5h22q-4 25 -4 37q0 111 80 188.5t193 77.5q90 0 162.5 -53.5t99.5 -135.5q12 2 41 2q102 0 172.5 -69.5t70.5 -169.5q0 -98 -71.5 -169t-171.5 -71h-197v195h109l-181 235l-178 -235h107v-195h-254q-78 0 -132.5 53.5t-54.5 129z " />
1096+<glyph unicode="{" horiz-adv-x="716" d="M102 248v528q0 29 16.5 39t41.5 -6l438 -270q16 -12 16 -27l-16 -27l-438 -270q-25 -16 -41.5 -6t-16.5 39z" />
1097+<glyph unicode="|" horiz-adv-x="747" d="M102 219v584q0 68 92.5 67.5t92.5 -67.5v-584q0 -66 -92.5 -66t-92.5 66zM461 219v584q0 68 92 67.5t92 -67.5v-584q0 -66 -92 -66t-92 66z" />
1098+<glyph unicode="}" horiz-adv-x="921" d="M102 512q0 150 104.5 254t254.5 104q147 0 252.5 -104t105.5 -254t-105.5 -254t-252.5 -104q-150 0 -254.5 104t-104.5 254z" />
1099+<glyph unicode="~" horiz-adv-x="819" d="M102 270v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" />
1100+<glyph unicode="&#xa9;" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM328 512q0 68 39 106q37 39 98 39q88 0 125 -67l-64 -33q-10 23 -24 29q-16 10 -27 10q-63 0 -63 -84q0 -35 16 -61q16 -23 47 -23q41 0 57 41l60 -29q-16 -31 -53 -55q-35 -20 -72 -20q-59 0 -102 38q-37 39 -37 109zM600 512q0 68 39 106q37 39 98 39q88 0 125 -67 l-63 -33q-10 23 -25 29q-16 10 -26 10q-63 0 -64 -84q0 -39 16.5 -61.5t47.5 -22.5q39 0 57 41l59 -29q-20 -35 -53 -55q-37 -20 -72 -20q-59 0 -102 38q-37 39 -37 109z" />
1101+<glyph unicode="&#xaa;" horiz-adv-x="798" d="M102 692q6 168 115 236q70 45 170 45q133 0 221 -63.5t88 -186.5q0 -68 -43 -129q-20 -25 -92 -80l-45 -33q-41 -29 -51 -61q-6 -18 -6 -45q0 -14 -17 -15h-131q-16 0 -16 15q4 100 27 127q18 20 51 46.5t57 43.5l25 16q25 20 32 35q29 37 29 70q0 47 -27 82 q-25 37 -94 36q-68 0 -96 -45q-29 -47 -29 -94h-168zM310 233q30 27 69 27h6q47 -2 77 -32q28 -28 28 -70q0 -3 -1 -6q-2 -47 -32 -75q-29 -26 -72 -26h-6q-45 2 -75 31q-28 27 -28 70q0 50 34 81z" />
1102+<glyph unicode="&#xad;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
1103+<glyph unicode="&#xae;" horiz-adv-x="1126" d="M102 256v205h308v-256h-267q-41 0 -41 51zM102 563v205q0 51 41 51h267v-256h-308zM512 205v256h512v-205q0 -20 -15.5 -35.5t-35.5 -15.5h-461zM512 563v256h461q20 0 35.5 -15.5t15.5 -35.5v-205h-512z" />
1104+<glyph unicode="&#xb2;" horiz-adv-x="1191" d="M104 506q-2 203 139.5 348t344.5 150q205 2 350 -139.5t149 -346.5q2 -203 -140 -349t-345 -149q-205 -4 -350.5 138.5t-147.5 347.5zM207 506q4 -160 117.5 -272.5t275.5 -110.5t273.5 117.5t109.5 275.5q-2 162 -116.5 273.5t-276.5 109.5t-273.5 -116.5t-109.5 -276.5 zM362 281q4 27 12.5 68.5t42.5 131.5t77 133q45 45 128 78t144 45l61 11q-4 -27 -11 -69t-41 -132t-79 -133q-45 -45 -128 -78t-144 -45zM524 514q0 -31 20.5 -51.5t50.5 -20.5t50 21q53 53 90 192q-137 -37 -190 -90q-21 -20 -21 -51z" />
1105+<glyph unicode="&#xb3;" horiz-adv-x="1085" d="M102 516q453 254 711 379q23 10 50.5 25.5t38.5 20.5t26.5 9t24 1t16.5 -11t11 -17.5t-1 -23.5t-9 -25.5t-20.5 -40t-25.5 -49.5q-55 -115 -149.5 -293t-160.5 -298l-67 -121l-58 389zM565 553l29 -238l283 525z" />
1106+<glyph unicode="&#xb9;" d="M102 137v600q0 18 17 29l239 152q18 10 35 0l221 -140l224 140q18 10 34 0l240 -152q14 -10 14 -29v-600q0 -20 -16 -31q-8 -4 -16.5 -4t-16.5 4l-223 140l-221 -140q-18 -10 -35 0l-221 140l-223 -140q-16 -10 -33 0q-19 11 -19 31zM170 199l172 108v518l-172 -108v-518 zM410 307l172 -108v518l-172 108v-518zM649 199l172 108v518l-172 -108v-518zM889 307l172 -108v518l-172 108v-518z" />
1107+<glyph unicode="&#xba;" horiz-adv-x="1024" d="M0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
1108+<glyph unicode="&#xc0;" horiz-adv-x="1128" d="M237 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM543 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM665 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11 q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10 t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
1109+<glyph unicode="&#xc2;" horiz-adv-x="1128" d="M174 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM287 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM391 1364zM418 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M897 1872zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10 q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2 q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
1110+<glyph unicode="&#xc3;" horiz-adv-x="1128" d="M362 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM109 183q-5 16 -5 29q0 19 11 30l417 417q-2 18 -2 37q0 30 7 61q10 48 26 64l137 137q13 15 40 16q23 0 56 -11q71 -25 132 -86q63 -63 88 -135q11 -33 11 -55q0 -26 -15 -38 l-140 -139q-16 -16 -63 -27q-29 -6 -61 -6q-19 0 -37 2l-418 -418q-11 -11 -28 -10q-13 0 -29 5q-39 13 -76 50q-39 37 -51 77zM458 487q0 -17 11 -28q13 -13 30 -14q24 0 54 28q20 20 23.5 44t-11 38t-38 10t-44.5 -24q-25 -25 -25 -54zM737 921.5q-2 -1.5 -2 -7.5 q0 -7 3 -21q5 -25 25.5 -62.5t51.5 -68.5q29 -29 68 -49.5t63 -25.5q14 -3 21 -3q6 0 8 2q2 1 1 5q0 7 -3 22q-6 25 -27.5 62.5t-50.5 66.5q-31 31 -69 51t-61 27q-14 4 -21 3q-5 0 -7 -1.5z" />
1111+<glyph unicode="&#xc4;" horiz-adv-x="1105" d="M102 266v492q0 29 15.5 38t38.5 -5l368 -254q14 -10 15 -25l-15 -25l-368 -254q-23 -14 -38.5 -5t-15.5 38zM553 266v492q0 27 16.5 37t36.5 -4l383 -254q14 -10 15 -25l-15 -25l-383 -254q-20 -14 -36.5 -4t-16.5 37z" />
1112+<glyph unicode="&#xc5;" horiz-adv-x="1105" d="M102 512l15 25l383 254q20 14 36.5 3.5t16.5 -36.5v-492q0 -27 -16.5 -37t-36.5 4l-383 254q-15 11 -15 25zM567 512l15 25l368 254q23 14 38.5 4.5t15.5 -37.5v-492q0 -29 -15.5 -38t-38.5 5l-368 254q-15 11 -15 25z" />
1113+<glyph unicode="&#xc7;" horiz-adv-x="819" d="M102 274v478q0 59 76 59q78 0 78 -59v-478q0 -59 -78 -59q-76 0 -76 59zM281 512l12 23l373 235q23 14 37 5t14 -36v-452q0 -27 -14.5 -36t-36.5 5l-373 233q-12 11 -12 23z" />
1114+<glyph unicode="&#xc8;" horiz-adv-x="1046" d="M202 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM508 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM630 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74 q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
1115+<glyph unicode="&#xc9;" horiz-adv-x="819" d="M102 285v454q0 27 14.5 35t35.5 -6l372 -233q12 -10 13 -23l-13 -23l-372 -233q-20 -14 -35 -6t-15 35zM563 274v476q0 59 76 59q78 0 78 -59v-476q0 -59 -78 -59q-76 0 -76 59z" />
1116+<glyph unicode="&#xca;" horiz-adv-x="1046" d="M139 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM252 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM356 1364zM383 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M862 1872zM102 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99z" />
1117+<glyph unicode="&#xcc;" horiz-adv-x="1087" d="M34 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM340 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM462 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49 q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95q-39 -190 -114 -191q-78 0 -117 191h-94z" />
1118+<glyph unicode="&#xce;" horiz-adv-x="1087" d="M-29 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM84 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM188 1364zM215 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM694 1872 zM104 774q-1 6 -1 13q0 30 26 49q8 8 57.5 46t55.5 44q18 16 55 16h494q35 0 57 -16q8 -8 57 -46t56 -44q24 -20 23 -49q0 -6 -1 -13l-98 -663q-10 -29 -41 -29h-600q-31 0 -41 29q-95 636 -99 663zM184 768h721l-114 117h-494zM334 674q49 -283 211 -283q160 0 209 283h-95 q-39 -190 -114 -191q-78 0 -117 191h-94z" />
1119+<glyph unicode="&#xd1;" horiz-adv-x="1024" d="M102 102l23 287l80 -82l143 148l103 -103l-146 -147l80 -80zM573 672l146 147l-80 80l283 23l-21 -287l-80 82l-145 -148z" />
1120+<glyph unicode="&#xd2;" horiz-adv-x="860" d="M-66 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM240 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM362 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20 h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5 t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
1121+<glyph unicode="&#xd4;" horiz-adv-x="860" d="M-129 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM-16 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM88 1364zM115 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227z M594 1872zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136 q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
1122+<glyph unicode="&#xd5;" horiz-adv-x="860" d="M59 1212v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133 q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
1123+<glyph unicode="&#xd6;" horiz-adv-x="1044" d="M102 197l150 151l-82 82l291 23l-23 -293l-82 82l-149 -150zM586 571l22 293l82 -84l150 152l102 -107l-147 -149l82 -82z" />
1124+<glyph unicode="&#xd9;" horiz-adv-x="921" d="M-48 1612q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM258 1614l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM380 1856q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5 t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92q0 113 -102.5 113t-102.5 -113v-92z" />
1125+<glyph unicode="&#xdb;" horiz-adv-x="921" d="M-111 1618q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM2 1618q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM106 1364zM133 1339q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM612 1872 zM102 178v400q0 23 15.5 42t36.5 19h102v72q0 236 205 235q100 0 152.5 -61.5t52.5 -173.5v-72h92q20 0 40.5 -20.5t20.5 -40.5v-400q0 -20 -14 -39.5t-35 -25.5l-61 -21q-53 -16 -101 -16h-297q-47 0 -100 16l-61 21q-20 6 -34 25.5t-14 39.5zM358 639h205v92 q0 113 -102.5 113t-102.5 -113v-92z" />
1126+<glyph unicode="&#xdc;" horiz-adv-x="1124" d="M103 266.5q-3 12.5 26 30.5l821 463q29 16 50.5 4t21.5 -45v-383q0 -33 -23.5 -57.5t-58.5 -24.5h-799q-35 0 -38 12.5z" />
1127+<glyph unicode="&#xe0;" horiz-adv-x="1110" d="M102 110.5q0 20.5 17 36.5l801 801q35 35 71 0q16 -14 16.5 -35.5t-16.5 -35.5l-801 -801q-14 -14 -34 -15q-23 0 -37 15q-17 14 -17 34.5zM211 340q-41 135 28.5 289.5t135.5 220.5q37 33 108.5 12.5t161.5 -86.5l-53 -53q-39 27 -78 44t-58.5 19t-29.5 -2 q-4 -10 -2 -30.5t19.5 -58.5t43.5 -79zM373 156l284 284q45 -33 90.5 -55.5t69 -25.5t33.5 1q4 10 1 34t-25.5 69t-55.5 90l51 51q76 -94 103.5 -176t-6.5 -119q-25 -25 -76 -57.5t-135 -71.5t-166 -46t-168 22z" />
1128+<glyph unicode="&#xe1;" horiz-adv-x="1136" d="M104.5 303.5q-10.5 104.5 29.5 197.5t80 158.5t69 94.5q43 45 151.5 -4.5t221 -162t161.5 -222t6 -152.5q-29 -29 -94 -69t-159.5 -78.5t-199 -28.5t-180 86t-86 180.5zM332 688q-8 -8 2 -48t50 -104.5t97 -121.5q59 -59 123 -98.5t104 -50.5t48 -1q8 8 -2.5 48 t-50 104.5t-97 122t-122 97.5t-104.5 50t-48 2zM555 824.5q-6 21.5 4 39.5l55 99q10 18 31 23t39 -5t24.5 -30.5t-3.5 -39.5l-56 -98q-16 -27 -45 -27q-14 0 -24 9q-19 8 -25 29.5zM713 717.5q0 21.5 14 36.5l98 98q14 16 35 16t37 -16t16 -36.5t-16 -35.5l-96 -98 q-14 -14 -37 -14t-37 14t-14 35.5zM834.5 573.5q5.5 20.5 23.5 30.5l100 55q43 25 70 -20q23 -45 -20 -70l-99 -55q-12 -6 -24 -6q-33 0 -45 27q-11 18 -5.5 38.5z" />
1129+<glyph unicode="&#xe2;" horiz-adv-x="952" d="M102 512l390 389v-196h358v-386h-358v-196z" />
1130+<glyph unicode="&#xe3;" horiz-adv-x="983" d="M102 498l390 387l389 -387h-197v-361h-385v361h-197z" />
1131+<glyph unicode="&#xe4;" horiz-adv-x="983" d="M102 526h197v359h385v-359h197l-389 -389z" />
1132+<glyph unicode="&#xe5;" horiz-adv-x="952" d="M102 317v388h359v196l389 -389l-389 -389v194h-359z" />
1133+<glyph unicode="&#xe7;" horiz-adv-x="952" d="M102 512l390 338v-197h358v-282h-358v-197z" />
1134+<glyph unicode="&#xe8;" horiz-adv-x="880" d="M102 498l338 387l338 -387h-196v-361h-285v361h-195z" />
1135+<glyph unicode="&#xe9;" horiz-adv-x="880" d="M102 526h195v359h285v-359h196l-338 -389z" />
1136+<glyph unicode="&#xea;" horiz-adv-x="952" d="M102 369v284h359l2 197l387 -338l-389 -338l2 195h-361z" />
1137+<glyph unicode="&#xeb;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 512l196 207v-115h209 v-184h-209v-115z" />
1138+<glyph unicode="&#xec;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM365 524l208 195l207 -195 h-114v-209h-185v209h-116z" />
1139+<glyph unicode="&#xed;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 108.5 -260.5t260 -108.5t260 108.5t108.5 260.5q0 154 -108.5 261.5t-260 107.5t-260 -107.5t-108.5 -261.5zM367 500h114v211h185v-211h114 l-207 -195z" />
1140+<glyph unicode="&#xee;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM205 512q0 -152 107.5 -260.5t260.5 -108.5q152 0 260.5 108.5t108.5 260.5t-108.5 260.5t-260.5 108.5q-154 0 -261 -108.5t-107 -260.5zM375 420v184h211v115 l194 -207l-194 -207v115h-211z" />
1141+<glyph unicode="&#xef;" horiz-adv-x="1128" d="M104.5 468q-6.5 11 10.5 28l411 411q14 16 37 16.5t39 -16.5l412 -411q16 -16 10 -27.5t-29 -11.5h-86v-316q0 -14 -1 -21t-8 -13.5t-21 -6.5h-209v316h-209v-316h-201q-18 0 -28.5 6.5t-11.5 13.5t-1 21v316h-86q-22 0 -28.5 11z" />
1142+<glyph unicode="&#xf1;" horiz-adv-x="573" d="M102 51v871q0 51 41 51h277q23 0 37 -15.5t14 -35.5v-871l-184 185z" />
1143+<glyph unicode="&#xf2;" horiz-adv-x="1024" d="M102 205v307h103v-307h307v-103h-307q-43 0 -73 30t-30 73zM307 410v409q0 43 30 73t71 30h411q41 0 72 -31t31 -72v-409q0 -43 -31 -73t-72 -30h-409q-43 0 -73 30t-30 73zM410 410h409v409h-409v-409z" />
1144+<glyph unicode="&#xf3;" horiz-adv-x="1126" d="M102 266v656q0 25 23 43q25 14 49 4l389 -156l391 156q25 10 50 -4q20 -16 20 -43v-656q0 -33 -31 -47l-409 -164q-8 -2 -11 -4h-10h-8l-10 4l-410 164q-33 14 -33 47zM184 287l328 -131v573l-328 131v-573zM246 408v69l207 -82v-69zM246 621v69l207 -82v-69zM614 156 l328 131v573l-328 -131v-573zM676 326v69l207 82v-69zM676 539v69l207 82v-69z" />
1145+<glyph unicode="&#xf4;" horiz-adv-x="1013" d="M102 600q0 131 93.5 223t224.5 92t228 -97t97 -228q0 -90 -45 -164l193 -195q35 -35 6 -61l-47 -49q-33 -33 -70 0l-194 194q-76 -43 -160 -43q-131 0 -228.5 98.5t-97.5 229.5zM201 600q0 -90 68.5 -159.5t158.5 -69.5q92 0 156.5 64.5t64.5 154.5t-69.5 159.5 t-159.5 69.5t-154.5 -64.5t-64.5 -154.5z" />
1146+<glyph unicode="&#xf5;" horiz-adv-x="1024" d="M141 1058v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
1147+<glyph unicode="&#xf6;" horiz-adv-x="1146" d="M102 512q0 47 33 80t80 33t80 -34t33 -79t-33 -79t-80 -34t-80 33t-33 80zM461 512q0 47 32.5 80t79.5 33q45 0 79 -34t34 -79t-34 -79t-79 -34q-47 0 -79.5 33t-32.5 80zM819 512q0 47 33 80t80 33t79.5 -34t32.5 -79t-32.5 -79t-79.5 -34t-80 33t-33 80z" />
1148+<glyph unicode="&#xf9;" horiz-adv-x="903" d="M-43 1520q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM263 1522l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM385 1764q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5 t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
1149+<glyph unicode="&#xfb;" horiz-adv-x="903" d="M-107 1526q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM6 1526q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM110 1272zM137 1247q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM616 1780 zM104 801q-6 47 93.5 89t255 42t254 -42t92.5 -89l-74 -608q-2 -12 -35 -36t-98.5 -44.5t-139 -20.5t-140 20.5t-99.5 44t-35 36.5zM178 790.5q0 -12.5 33 -30t100.5 -32.5t141 -15t140 15t99.5 32.5t33 30t-33 30t-99.5 32.5t-140 15t-141 -15t-100.5 -32.5t-33 -30z" />
1150+<glyph unicode="&#x152;" horiz-adv-x="1906" d="M962 322q100 -58 216 -59q30 0 62 4q151 19 259.5 128t127.5 259q4 31 4 62q0 115 -58 216q55 -31 98 -74q131 -133 131 -317.5t-131 -317.5q-131 -131 -316.5 -131t-316.5 131q-43 44 -76 99zM102 492v141q0 20 21 20h31q20 0 20 -20v-141q0 -68 60.5 -126.5 t195.5 -58.5t195.5 59.5t60.5 125.5v141q0 20 21 20h30q20 0 21 -20v-141q0 -94 -71 -168t-206 -86v-136h133q20 0 21 -20v-62q0 -20 -21 -20h-368q-20 0 -21 20v62q0 20 21 20h133v136q-135 12 -206 86t-71 168zM276 492v161h308v-161q0 -31 -37 -56.5t-117 -25.5 q-82 0 -118 25.5t-36 56.5zM276 725v217q0 31 36 56.5t118 25.5q80 0 117 -25.5t37 -56.5v-217h-308z" />
1151+<glyph unicode="&#x153;" horiz-adv-x="2191" d="M1126 522h125q4 170 126 290t292 120q174 0 297 -123t123 -297t-123 -297t-297 -123q-143 0 -258 88l72 78q84 -61 186 -61q131 0 222 92t91 223t-91 223t-222 92q-127 0 -218 -89t-95 -216h145l-188 -209zM0 256v512q0 41 30.5 71.5t71.5 30.5h820q43 0 72.5 -30.5 t29.5 -71.5v-512q0 -43 -29.5 -72.5t-72.5 -29.5h-820q-41 0 -71.5 29.5t-30.5 72.5zM102 256h820v512h-820v-512z" />
1152+<glyph unicode="&#x2c6;" horiz-adv-x="1146" d="M102 512q0 195 138.5 333t333 138t332.5 -138t138 -333t-138 -333t-332.5 -138t-333 138t-138.5 333zM215 512q0 -131 80 -227l504 503q-98 82 -226 82q-150 0 -254 -104t-104 -254zM319 258zM346 233q100 -80 227 -79q147 0 253 104t106 254q0 129 -82 227zM825 766z " />
1153+<glyph unicode="&#x2dc;" horiz-adv-x="1024" d="M-371 188v482q0 68 78 67h461q76 0 76 -67v-482q0 -66 -76 -65h-461q-78 -1 -78 65z" />
1154+<glyph unicode="&#x2000;" horiz-adv-x="1044" />
1155+<glyph unicode="&#x2001;" horiz-adv-x="2088" />
1156+<glyph unicode="&#x2002;" horiz-adv-x="1044" />
1157+<glyph unicode="&#x2003;" horiz-adv-x="2088" />
1158+<glyph unicode="&#x2004;" horiz-adv-x="696" />
1159+<glyph unicode="&#x2005;" horiz-adv-x="522" />
1160+<glyph unicode="&#x2006;" horiz-adv-x="348" />
1161+<glyph unicode="&#x2007;" horiz-adv-x="348" />
1162+<glyph unicode="&#x2008;" horiz-adv-x="260" />
1163+<glyph unicode="&#x2009;" horiz-adv-x="417" />
1164+<glyph unicode="&#x200a;" horiz-adv-x="114" />
1165+<glyph unicode="&#x2010;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
1166+<glyph unicode="&#x2011;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
1167+<glyph unicode="&#x2012;" d="M102 51v205q18 8 48 17.5t34 11.5q96 35 132 69.5t36 98.5q0 23 -23.5 49t-31.5 76q-2 12 -23.5 24t-25.5 62q0 16 5 26t9 15l6 2q-10 51 -14 90q-4 55 43 115.5t164 60.5q115 0 162 -60.5t43 -115.5l-15 -90q20 -8 21 -43q-4 -49 -25.5 -61.5t-23.5 -24.5 q-8 -49 -32 -76t-24 -49q0 -63 36 -98.5t132 -69.5q186 -70 187 -125v-109h-820zM717 461v102h153v154h103v-154h153v-102h-153v-154h-103v154h-153z" />
1168+<glyph unicode="&#x2013;" horiz-adv-x="1024" d="M102 51v922h820v-922h-820z" />
1169+<glyph unicode="&#x2014;" horiz-adv-x="2048" d="M102 51v922h1844v-922h-1844z" />
1170+<glyph unicode="&#x2018;" horiz-adv-x="1150" d="M104 506q-2 195 134.5 335t330.5 142q195 4 335 -133t142.5 -331.5t-134 -334t-330.5 -143.5q-195 -2 -334.5 134t-143.5 331zM410 508l16 -29q47 35 78 35q8 0 0 -35l-39 -153q-29 -109 35 -109q31 0 86 27.5t108 81.5l-18 24q-49 -37 -74 -37q-12 0 -4 39l43 162 q27 98 -20 98q-31 0 -92.5 -28.5t-118.5 -75.5zM532 750q-2 -29 15.5 -44.5t50.5 -15.5q39 0 62.5 22.5t23.5 53.5q0 59 -61 59q-43 0 -67 -23t-24 -52z" />
1171+<glyph unicode="&#x2019;" horiz-adv-x="1165" d="M104 252q-2 98 84 197q37 35 236 234.5t272 270.5q82 82 181 56q45 -12 79.5 -47t47.5 -82q27 -98 -54 -179l-485 -485q-43 -45 -90 -47q-49 -6 -82 27q-31 25 -28 76t46 96l342 340q27 27 49 0q27 -25 0 -52l-340 -340q-45 -45 -20 -69q8 -8 25 -8q20 2 47 26l485 486 q51 53 35 110q-14 61 -78 78q-57 16 -108 -35l-508 -508q-66 -76 -64 -144.5t53 -119.5q49 -51 119 -53t146 63l505 508q25 25 51.5 0.5t0.5 -51.5l-508 -508q-84 -84 -189 -84q-102 0 -176 74q-72 72 -74 170z" />
1172+<glyph unicode="&#x201c;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
1173+<glyph unicode="&#x201d;" horiz-adv-x="798" d="M102 113v798q0 41 31 72t72 31h389q43 0 72.5 -31t29.5 -72v-798q0 -43 -29.5 -73t-72.5 -30h-389q-41 0 -72 30t-31 73zM184 205h430v676h-430v-676zM328 102.5q0 -20.5 21.5 -36t49.5 -15.5q31 0 51.5 14.5t20.5 37t-20.5 37t-51.5 14.5q-29 0 -50 -15.5t-21 -36z" />
1174+<glyph unicode="&#x2026;" horiz-adv-x="3686" d="M2560 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM2663 205h819v614h-819v-614zM2765 311v92h256v-92h-256zM2765 465v92h256v-92h-256zM2765 618v93h256v-93h-256zM3124 311q0 72 4 72q88 25 88 68 q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM1331 205v614q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM1434 205h819v614 h-819v-614zM1536 311v92h256v-92h-256zM1536 465v92h256v-92h-256zM1536 618v93h256v-93h-256zM1895 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256zM102 205v614 q0 41 30 72t73 31h819q41 0 71.5 -31t30.5 -72v-614q0 -43 -30.5 -73t-71.5 -30h-819q-43 0 -73 30t-30 73zM205 205h819v614h-819v-614zM307 311v92h256v-92h-256zM307 465v92h256v-92h-256zM307 618v93h256v-93h-256zM666 311q0 72 4 72q88 25 88 68q0 16 -29 57t-29 90 q0 113 93 113q51 0 71.5 -28t20.5 -85q0 -49 -28 -90t-28 -57q0 -18 21.5 -36t42.5 -26l22 -6l7 -72h-256z" />
1175+<glyph unicode="&#x202f;" horiz-adv-x="417" />
1176+<glyph unicode="&#x2039;" horiz-adv-x="1208" d="M102 393v180q0 23 17.5 42.5t38.5 19.5h891q20 0 38.5 -19.5t18.5 -42.5v-180q0 -20 -18.5 -40.5t-38.5 -20.5h-101l45 -256h-778l45 256h-102q-20 0 -38 20.5t-18 40.5zM146.5 716q3.5 9 11.5 11q23 10 104.5 38t99.5 28h48v153h389v-153h45q18 0 100 -28t105 -38 q8 -2 11 -11t-3 -17.5t-19 -8.5h-870q-12 0 -18.5 8.5t-3 17.5zM317 178h574l-72 334h-430z" />
1177+<glyph unicode="&#x203a;" horiz-adv-x="1024" d="M102 295q0 78 58 135l153 152q72 72 147 81t130 -47q16 -14 16 -34.5t-16 -36.5q-14 -16 -36 -16.5t-36 16.5q-49 49 -133 -35l-154 -152q-27 -27 -26 -63q0 -35 26 -66q27 -27 66 -26.5t65 26.5l41 43q37 33 72 -2q16 -14 16.5 -35.5t-16.5 -35.5l-41 -41 q-57 -55 -137 -55.5t-137 55.5q-58 57 -58 137zM436 401q-35 37 0 72q14 14 35 14t37 -14q49 -49 123 25l164 161q27 27 26 64q0 35 -26 65q-68 61 -121 9l-51 -52q-37 -33 -72 3q-14 14 -14 34.5t14 36.5l51 51q55 53 130 50.5t134 -60.5q55 -55 56 -137q0 -80 -56 -135 l-164 -162q-76 -76 -153 -76q-64 0 -113 51z" />
1178+<glyph unicode="&#x205f;" horiz-adv-x="522" />
1179+<glyph unicode="&#x2122;" horiz-adv-x="948" d="M102 500l193 331l123 -69q68 -39 94 -105l213 367l57 -35l-108 -188l63 -39q78 -45 100.5 -121t-18.5 -145q-55 -92 -157 -97q49 -90 -5 -182q-41 -72 -117.5 -90t-154.5 25l-66 38l-108 -190l-59 33l213 366q-68 -10 -138 29zM193 520l65 -39q53 -29 102.5 -15.5t78 63 t14 99.5t-65.5 81l-65 36zM350 244l66 -39q53 -31 102 -17.5t78 62.5t15.5 100t-64.5 80l-66 39q0 -2 -2 -6zM512 520l66 -37q53 -29 102 -15.5t77.5 63t15.5 99.5t-64 79l-66 39l-129 -222q0 -4 -2 -6z" />
1180+<glyph unicode="&#xe000;" horiz-adv-x="895" d="M0 895h895v-895h-895v895z" />
1181+<glyph unicode="&#xfb01;" horiz-adv-x="2150" d="M1331 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM1331 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M1331 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" />
1182+<glyph unicode="&#xfb02;" horiz-adv-x="2150" d="M1331 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM1434 154h512v716h-512v-716zM1546 268v88h287v-88h-287zM1546 670v90h287v-90h-287zM1548 467v92h287v-92h-287zM102 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
1183+<glyph unicode="&#xfb03;" horiz-adv-x="3379" d="M2560 307.5q0 20.5 14.5 35.5t37.5 15h614q20 0 35.5 -15t15.5 -35.5t-15.5 -36t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 36zM2560 512q0 20 14.5 35.5t37.5 15.5h614q20 0 35.5 -15.5t15.5 -35.5t-15.5 -35.5t-35.5 -15.5h-614q-23 0 -37.5 15.5t-14.5 35.5z M2560 716.5q0 20.5 14.5 36t37.5 15.5h614q20 0 35.5 -15.5t15.5 -36t-15.5 -35.5t-35.5 -15h-614q-23 0 -37.5 15t-14.5 35.5zM1331 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109 q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118z" />
1184+<glyph unicode="&#xfb04;" horiz-adv-x="3379" d="M2560 154v716q0 41 30 72t73 31h512q41 0 71.5 -31t30.5 -72v-716q0 -43 -30.5 -73t-71.5 -30h-512q-43 0 -73 30t-30 73zM2663 154h512v716h-512v-716zM2775 268v88h287v-88h-287zM2775 670v90h287v-90h-287zM2777 467v92h287v-92h-287zM1331 205v143h109q55 0 107.5 33 t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM1331 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32 q-80 80 -170 80h-109zM1837 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34q-146 -1 -269 118zM102 205v143h109q55 0 107.5 33t82 67.5t84.5 106.5q63 84 103.5 129t120 90t168.5 45h34v123l215 -184l-215 -185v103h-34q-55 0 -108.5 -33 t-83.5 -67.5t-85 -106.5q-49 -63 -76.5 -96t-79 -79t-108.5 -67.5t-125 -21.5h-109zM102 666v143h109q139 0 258 -109q-57 -72 -63 -82q-8 -12 -25 -32q-80 80 -170 80h-109zM608 313q47 59 74 95q0 2 6 9t8 11q90 -90 181 -90h34v102l215 -184l-215 -184v123h-34 q-146 -1 -269 118z" />
1185+</font>
1186+</defs></svg>
1187\ No newline at end of file
1188
1189=== added file 'loco_directory/media/fonts/entypo-webfont.ttf'
1190Binary files loco_directory/media/fonts/entypo-webfont.ttf 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.ttf 2012-10-30 12:31:21 +0000 differ
1191=== added file 'loco_directory/media/fonts/entypo-webfont.woff'
1192Binary files loco_directory/media/fonts/entypo-webfont.woff 1970-01-01 00:00:00 +0000 and loco_directory/media/fonts/entypo-webfont.woff 2012-10-30 12:31:21 +0000 differ
1193=== added file 'loco_directory/media/fonts/stylesheet.css'
1194--- loco_directory/media/fonts/stylesheet.css 1970-01-01 00:00:00 +0000
1195+++ loco_directory/media/fonts/stylesheet.css 2012-10-30 12:31:21 +0000
1196@@ -0,0 +1,16 @@
1197+/* Generated by Font Squirrel (http://www.fontsquirrel.com) on February 10, 2012 */
1198+
1199+
1200+
1201+@font-face {
1202+ font-family: 'EntypoRegular';
1203+ src: url('entypo-webfont.eot');
1204+ src: url('entypo-webfont.eot?#iefix') format('embedded-opentype'),
1205+ url('entypo-webfont.woff') format('woff'),
1206+ url('entypo-webfont.ttf') format('truetype'),
1207+ url('entypo-webfont.svg#EntypoRegular') format('svg');
1208+ font-weight: normal;
1209+ font-style: normal;
1210+
1211+}
1212+
1213
1214=== added file 'loco_directory/media/images/bg_btn.png'
1215Binary files loco_directory/media/images/bg_btn.png 1970-01-01 00:00:00 +0000 and loco_directory/media/images/bg_btn.png 2012-10-30 12:31:21 +0000 differ
1216=== added file 'loco_directory/media/js/comments.js'
1217--- loco_directory/media/js/comments.js 1970-01-01 00:00:00 +0000
1218+++ loco_directory/media/js/comments.js 2012-10-30 12:31:21 +0000
1219@@ -0,0 +1,50 @@
1220+$(document).ready(function(){
1221+
1222+ $(".edit").bind("click", updateText);
1223+
1224+ var orig_comment, new_comment;
1225+
1226+ $(".save").live("click", function (e) {
1227+ $(this).text("Saving...");
1228+
1229+ new_comment = $(this).siblings("form").children(".edit").val();
1230+ var comment_id = $(this).parent().parent().parent().attr('id').match(/\d+/);
1231+ data = 'id=' + comment_id + '&comment=' + new_comment;
1232+ save_obj = $(this);
1233+ alert(comment_id);
1234+
1235+ $.post("/events/comment-update/", data, function (result) {
1236+ if (result.success)
1237+ save_obj.parent().html(result.response.replace(/\n/g, "<br />")).removeClass("selected");
1238+ else
1239+ {
1240+ save_obj.parent().parent().children('div.comment-error').html(result.response);
1241+ save_obj.parent().parent().children('div.comment-error').show();
1242+ save_obj.parent().html(orig_comment);
1243+ }
1244+
1245+ }, "json");
1246+
1247+ $(this).parent().children('.comment-meta').children('.edit').show();
1248+ e.preventDefault();
1249+
1250+ });
1251+
1252+ $(".revert").live("click", function (e) {
1253+ $(this).parent().parent().children('.comment-meta').children('.edit').show();
1254+ $(this).parent().html(orig_comment).removeClass("selected");
1255+ e.preventDefault();
1256+ });
1257+
1258+ function updateText(e) {
1259+ $(this).hide();
1260+ orig_comment = $.trim($(this).parent().parent().children("div.comment-comment").text());
1261+ $(this).parent().parent().children("div.comment-comment").addClass("selected").html('<form ><textarea class="edit">' + orig_comment + ' </textarea> </form><a href="#" class="save">Save</a> or <a href="#" class="revert">Cancel</a>').unbind('click', updateText);
1262+ e.preventDefault();
1263+ }
1264+
1265+ if(window.location.hash) {
1266+ $(window.location.hash).addClass("highlight");
1267+ }
1268+
1269+});
1270
1271=== modified file 'loco_directory/settings.py'
1272--- loco_directory/settings.py 2012-09-08 22:44:15 +0000
1273+++ loco_directory/settings.py 2012-10-30 12:31:21 +0000
1274@@ -184,6 +184,8 @@
1275 # Automatically map lp team membership to ld group membership
1276 OPENID_LAUNCHPAD_TEAMS_MAPPING_AUTO = True
1277
1278+OPENID_SREG_REQUIRED_FIELDS = ['email']
1279+
1280 # Tell django.contrib.auth to use the OpenID signin URLs.
1281 LOGIN_URL = '/openid/login'
1282 LOGIN_REDIRECT_URL = '/'
1283
1284=== modified file 'loco_directory/templates/events/team_event_comment_new.inc.html'
1285--- loco_directory/templates/events/team_event_comment_new.inc.html 2012-06-30 23:38:17 +0000
1286+++ loco_directory/templates/events/team_event_comment_new.inc.html 2012-10-30 12:31:21 +0000
1287@@ -1,24 +1,19 @@
1288 {% load i18n %}
1289
1290+<div class="comment-form">
1291 {% if user.is_authenticated %}
1292-<div class="row">
1293- <section class="span-8">
1294- <form action="." method="post">
1295- <fieldset>
1296- <h3>{%trans "Team Event Comment" %}</h3>
1297- {{ form.as_template }}
1298- </fieldset>
1299- {% if is_popup %}<input type="hidden" name="_popup" value="1">{% endif %}
1300- <input type="submit" name="submit" value="{% trans "Submit" %}" class="submit-button" />
1301- </form>
1302- </section>
1303+ <div class="mugshot">
1304+ <a href="https://launchpad.net/~{{ user.username }}" class="url" rel="contact" title="{{ user.get_full_name }}">
1305+ <img alt="" class="photo fn" src="{% if comment.commenter_profile.mugshot %}{{ comment.commenter_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}">
1306+ </a>
1307+ </div>
1308+ <form action="." method="post">
1309+ <textarea required id="id_comment" rows="10" cols="40" name="comment"></textarea>
1310+ <input type="submit" name="submit" value="{% trans "Submit" %}" class="submit-button" />
1311+ </form>
1312 </div>
1313-
1314 {% else %}
1315-
1316-<div class="row">
1317- <section class="span-8">
1318- {% blocktrans with team_event_object.get_absolute_url as login_next %}To post your comment you need to <a href="/openid/login?next={{login_next}}">login</a> or <a href="/openid/login/?next={{ login_next }}">create</a> a new account{% endblocktrans %}
1319- </section>
1320+<div style="padding:10px;">
1321+ {% blocktrans with team_event_object.get_absolute_url as login_next %}To post your comment you need to <a href="/openid/login?next={{login_next}}">login</a> or <a href="/openid/login/?next={{ login_next }}">create</a> a new account{% endblocktrans %}
1322 </div>
1323 {% endif %}
1324
1325=== modified file 'loco_directory/templates/events/team_event_detail.html'
1326--- loco_directory/templates/events/team_event_detail.html 2012-06-30 23:38:17 +0000
1327+++ loco_directory/templates/events/team_event_detail.html 2012-10-30 12:31:21 +0000
1328@@ -19,6 +19,7 @@
1329 <meta property="og:street-address" content="{{ team_event_object.venue.name }} "/>
1330 <meta property="og:locality" content="{% if team_event_object.venue.city %}{{ team_event_object.venue.city }}{% endif %}"/>
1331 {% endif %}
1332+<script type="text/javascript" src="{{ MEDIA_URL }}js/comments.js"></script>
1333 {{form.media}}
1334 <script type="text/javascript">
1335 $(document).ready(function(){
1336
1337=== modified file 'loco_directory/templates/events/team_event_detail.inc.html'
1338--- loco_directory/templates/events/team_event_detail.inc.html 2012-07-01 13:02:49 +0000
1339+++ loco_directory/templates/events/team_event_detail.inc.html 2012-10-30 12:31:21 +0000
1340@@ -1,57 +1,122 @@
1341 {% load i18n markup %}
1342 <div class="row">
1343- <section class="span-6">
1344- <h2>{{team_event_object.name}}</h2>
1345- {% if team_event_object.description %}
1346- <table id="team-event-basic">
1347- <tr>
1348- <td class="form-item-value">{{ team_event_object.description|markdown:'safe'|linebreaks }}</td>
1349- </tr>
1350- </table>
1351+ <section class="span-9">
1352+ <div class="box_content">
1353+ <div class="pagelet">
1354+ <h3>{{ team_event_object.name }}</h3>
1355+ {% if team_event_object.global_event %}
1356+ <div class="event-partofglobal-event">
1357+ {% trans "This event is part of" %}
1358+ <a href="{{ team_event_object.global_event.get_absolute_url }}">{{team_event_object.global_event.name }}</a>
1359+ </div>
1360+ {% endif %}
1361+ <div class="share">
1362+ <div id="fb-root"></div>
1363+ <script>(function(d, s, id) {
1364+ var js, fjs = d.getElementsByTagName(s)[0];
1365+ if (d.getElementById(id)) {return;}
1366+ js = d.createElement(s); js.id = id;
1367+ js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127188230723188";
1368+ fjs.parentNode.insertBefore(js, fjs);
1369+ }(document, 'script', 'facebook-jssdk'));</script>
1370+ <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
1371+ <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
1372+ <g:plusone size="medium"></g:plusone>
1373+ <a href="http://twitter.com/share" class="twitter-share-button" data-lang="en">Tweet</a>
1374+ <div class="fb-like" data-href="http://loco.ubuntu.com{% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}" data-send="false" data-layout="button_count" data-width="40" data-show-faces="false" data-font="arial"></div>
1375+ </div>
1376+
1377+ {% if team_event_object.global_event %}
1378+ <div>
1379+ <span class="pictogram calendar"></span>
1380+ <span class="pictogram-l">
1381+ {% ifequal team_event_object.local_date_begin|date team_event_object.local_date_end|date %}
1382+ {{ team_event_object.local_date_begin|date:"D, d N Y H:i" }} - {{ team_event_object.local_date_end|date:"H:i T" }}
1383+ {% else %}
1384+ {{ team_event_object.local_date_begin|date:"D, d N Y H:i" }} - {{ team_event_object.local_date_end|date:"D, d N Y H:i T" }}
1385+ {% endifequal %}
1386+ </span>
1387+ </div>
1388+ {% endif %}
1389+
1390+ {% if team_event_object.description %}
1391+ <p>{{ team_event_object.description|markdown:'safe'|linebreaks }}</p>
1392+ {% endif %}
1393+
1394+ {% if team_event_object.announce %}
1395+ <div>
1396+ <span class="pictogram announcement"></span>
1397+ <a class="pictogram-l" href="{{ team_event_object.announce }}">{{team_event_object.announce }}</a>
1398+ </div>
1399+ {% endif %}
1400+ </div>
1401+
1402+ <div class="map">
1403+ <img class="map_img" src="http://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=640x100&scale=1&maptype=roadmap&markers=color:orange%7Clabel:S%7C40.702147,-74.015794&sensor=false">
1404+ </div>
1405+ {% if team_event_object.venue %}
1406+ <div class="event-venue">
1407+ <a title="{% trans "show venue details" %}" href="{{ team_event_object.venue.get_absolute_url }}">
1408+ <div class="event-venue-name">
1409+ {{ team_event_object.venue.name }}
1410+ </div>
1411+ </a>
1412+
1413+ <div class="event-venue-city">
1414+ {% if team_event_object.venue.city %}{{ team_event_object.venue.city }}{% endif %}
1415+ </div>
1416+
1417+ <div class="event-venue-adress">
1418+ {% if team_event_object.venue.address %}{{ team_event_object.venue.address }}{% endif %}{% if team_event_object.venue.spr %}, {{ team_event_object.venue.spr }}{% endif %}
1419+ </div>
1420+ </div>
1421+ {% endif %}
1422+ <div>
1423+
1424+ {% if team_event_object.teameventcomment_set.all %}
1425+ {% include "events/team_event_detail_comments.inc.html" %}
1426 {% endif %}
1427- <h3>{% trans "Details" %}</h3>
1428- {% include "events/team_event_detail_basic.inc.html" %}
1429- <div class="share">
1430- <a href="http://www.reddit.com/submit" onclick="window.location = 'http://www.reddit.com/submit?url=' + encodeURIComponent(window.location); return false"> <img style="padding-bottom: 4px;"src="http://www.reddit.com/static/spreddit7.gif" alt="submit to reddit" border="0" /></a><br />
1431- <div id="fb-root"></div>
1432- <script>(function(d, s, id) {
1433- var js, fjs = d.getElementsByTagName(s)[0];
1434- if (d.getElementById(id)) {return;}
1435- js = d.createElement(s); js.id = id;
1436- js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=127188230723188";
1437- fjs.parentNode.insertBefore(js, fjs);
1438- }(document, 'script', 'facebook-jssdk'));</script>
1439- <div class="fb-like" data-href="http://loco.ubuntu.com{% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}" data-send="false" data-layout="box_count" data-width="40" data-show-faces="false" data-font="arial"></div>
1440- <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
1441- <g:plusone size="tall"></g:plusone>
1442- <a href="http://twitter.com/share" class="twitter-share-button" data-count="vertical" data-lang="en">Tweet</a>
1443- <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
1444- <script src="http://www.stumbleupon.com/hostedbadge.php?s=5"></script>
1445-</div>
1446+ {% include "events/team_event_comment_new.inc.html" %}
1447+ </div>
1448+ </div>
1449 </section>
1450- <section class="span-6 last">
1451- <h3>
1452- {% if team_event_object.registration %}
1453- <a class="rsvp-link" href="{{team_event_object.registration}}" target="external_registration">{% trans 'Register' %}</a>
1454+ <section class="span-3 box_content last">
1455+ <div class="sidebar-inner">
1456+ <div class="event-info">
1457+ {% if team_event_object %}
1458+ {% if team_event_object.channel %}
1459+ <div>
1460+ <span class="pictogram comments"></span>
1461+ {{ team_event_object.channel }}
1462+ </div>
1463+ {% endif %}
1464+
1465+ {% if team_event_object.contact %}
1466+ <div>
1467+ <span class="pictogram personne"></span>
1468+ <a class="pictogram-l" title="{{ team_event_object.contact.realname }}" href="https://launchpad.net/~{{ team_event_object.contact.user }}">{{ team_event_object.contact.realname }}</a>
1469+ </div>
1470+ {% endif %}
1471+
1472+ {% if team_event_object.teams.all %}
1473+ <div>
1474+ <span class="pictogram team"></span>
1475+ {% for team in team_event_object.teams.all %}<a class="pictogram-l" title="{% trans "Get more information about this team" %}" href="{{ team.get_absolute_url }}">{{ team.name }}</a>{% if not forloop.last %},{% endif %}{% endfor %}
1476+ </div>
1477+ {% endif %}
1478+ {% endif %}
1479+ </div>
1480+
1481+ {% if team_event_object.registration %}
1482+ <a class="submit-button rsvp-link" href="{{team_event_object.registration}}" target="external_registration">{% trans 'Register' %}</a>
1483+ {% else %}
1484+ {% if user.is_authenticated and user_is_attending %}
1485+ <a class="submit-button rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Update Registration' %}</a>
1486 {% else %}
1487- {% if user.is_authenticated and user_is_attending %}
1488- <a class="rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Update Registration' %}</a>
1489- {% else %}
1490- <a class="rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Register' %}</a>
1491- {% endif %}
1492+ <a class="submit-button rsvp-link" href="{% url team-event-register team_event_object.first_team.lp_name team_event_object.id %}">{% trans 'Register' %}</a>
1493 {% endif %}
1494- </h3>
1495- {% include "events/team_event_detail_attendees.inc.html" %}
1496- </section>
1497-</div>
1498-
1499-{% if team_event_object.teameventcomment_set.all %}
1500-<div class="row">
1501- <section class="span-12">
1502- <h3>{% blocktrans with team_event_object.teameventcomment_set.all.count as comment_count %}Event Comments ({{ comment_count }}){% endblocktrans %}</h3>
1503- {% include "events/team_event_detail_comments.inc.html" %}
1504- </section>
1505-</div>
1506-{% endif %}
1507-{% include "events/team_event_comment_new.inc.html" %}
1508-
1509+ {% endif %}
1510+ {% include "events/team_event_detail_attendees.inc.html" %}
1511+ </div>
1512+ </section>
1513+</div>
1514
1515=== modified file 'loco_directory/templates/events/team_event_detail_attendee.inc.html'
1516--- loco_directory/templates/events/team_event_detail_attendee.inc.html 2011-11-04 04:15:25 +0000
1517+++ loco_directory/templates/events/team_event_detail_attendee.inc.html 2012-10-30 12:31:21 +0000
1518@@ -1,20 +1,12 @@
1519 {% load i18n %}
1520
1521-<!--Alternative display using mugshots, enable when bug #734520 is fixed.
1522-<tr>
1523- <td class="attendee-cell">
1524- {% for registration in people %}
1525- <a href="https://launchpad.net/~{{registration.attendee_profile.user.username}}" >
1526- <img src="{% if registration.attendee_profile.mugshot %}{{registration.attendee_profile.mugshot}}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" title="{{registration.attendee_profile.realname}}" valign="top" width="32" height="32">
1527- </a>
1528- {% endfor %}
1529- </td>
1530-</tr>-->
1531-
1532-<!--Disable when you have mugshot functionality-->
1533- <tr class="team_event_list_row {% cycle "odd" "even" %}">
1534- <td align="center" class="attendee-cell">
1535- <a href="https://launchpad.net/~{{registration.attendee_profile.user.username}}" >{{registration.attendee_profile.realname}}</a>
1536- {% if registration.guests %}(+{{registration.guests}}){% endif %}
1537- </td>
1538- </tr>
1539+<li class="attendee-cell">
1540+ <div class="attendee-mugshot">
1541+ <a href="https://launchpad.net/~{{ registration.attendee_profile.user.username }}" traget="_blank">
1542+ <img src="{% if registration.attendee_profile.mugshot %}{{ registration.attendee_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}" width="32px" height="32px" alt="{{ registration.attendee_profile.realname }}" class="Zb Gtb">
1543+ </a>
1544+ </div>
1545+ <div class="attendee-infos">
1546+ <a href="https://launchpad.net/~{{ registration.attendee_profile.user.username}}" target="_blank">{{ registration.attendee_profile.realname }} {% if registration.guests %}(+{{registration.guests}}){% endif %}</a>
1547+ </div>
1548+</li>
1549
1550=== modified file 'loco_directory/templates/events/team_event_detail_attendees.inc.html'
1551--- loco_directory/templates/events/team_event_detail_attendees.inc.html 2012-06-20 11:02:00 +0000
1552+++ loco_directory/templates/events/team_event_detail_attendees.inc.html 2012-10-30 12:31:21 +0000
1553@@ -1,50 +1,28 @@
1554 {% load i18n %}
1555
1556-<table id="team-event-attendees" class="basic side-table">
1557 {% if team_event_object.attending %}
1558- <thead>
1559- <tr id="team_event_list_header">
1560- <th>{% trans 'Attending' %} ({{ team_event_object.total_attending }})</th>
1561- </tr>
1562- </thead>
1563- <tfoot>
1564- </tfoot>
1565- <tbody>
1566+ <h3 class="attendees-title">{% trans 'Attending' %} ({{ team_event_object.total_attending }})</h3>
1567+ <ul class="attendees">
1568 {% for registration in team_event_object.attending %}
1569 {% include "events/team_event_detail_attendee.inc.html" %}
1570 {% endfor %}
1571- </tbody>
1572+ </ul>
1573 {% endif %}
1574
1575 {% if team_event_object.maybe_attending %}
1576- <thead>
1577- <tr id="team_event_list_header">
1578- <th>{% trans 'Maybe Attending' %} ({{ team_event_object.total_maybe_attending }})</th>
1579- </tr>
1580- </thead>
1581- <tfoot>
1582- </tfoot>
1583- <tbody>
1584+ <h3 class="attendees-title">{% trans 'Maybe Attending' %} ({{ team_event_object.total_maybe_attending }})</h3>
1585+ <ul class="attendees">
1586 {% for registration in team_event_object.maybe_attending %}
1587 {% include "events/team_event_detail_attendee.inc.html" %}
1588 {% endfor %}
1589- </tbody>
1590+ </ul>
1591 {% endif %}
1592
1593 {% if team_event_object.not_attending %}
1594- <thead>
1595- <tr id="team_event_list_header">
1596- <th>{% trans 'Not Attending' %} ({{ team_event_object.not_attending|length }})</th>
1597- </tr>
1598- </thead>
1599- <tfoot>
1600- </tfoot>
1601- <tbody>
1602+ <h3 class="attendees-title">{% trans 'Not Attending' %} ({{ team_event_object.not_attending|length }})</h3>
1603+ <ul class="attendees">
1604 {% for registration in team_event_object.not_attending %}
1605 {% include "events/team_event_detail_attendee.inc.html" %}
1606 {% endfor %}
1607- </tbody>
1608-{% endif %}
1609-
1610-
1611-</table>
1612+ </ul>
1613+{% endif %}
1614\ No newline at end of file
1615
1616=== modified file 'loco_directory/templates/events/team_event_detail_comments.inc.html'
1617--- loco_directory/templates/events/team_event_detail_comments.inc.html 2012-06-30 23:41:51 +0000
1618+++ loco_directory/templates/events/team_event_detail_comments.inc.html 2012-10-30 12:31:21 +0000
1619@@ -1,17 +1,41 @@
1620-{% load i18n %}
1621+{% load i18n smart_if %}
1622 {% if team_event_object.teameventcomment_set.all %}
1623-<table id="team-event-comments">
1624-{% regroup team_event_object.teameventcomment_set.all by local_date_created|date:"D d M Y" as comment_list %}
1625-{% for comment_date in comment_list %}
1626- <tr>
1627- <th class="form-item-label" scope="row" colspan=2><label>{{comment_date.grouper}}</label></th>
1628- </tr>
1629- {% for comment in comment_date.list %}
1630- <tr>
1631- <th class="form-item-label" scope="row"><a href="https://launchpad.net/~{{comment.commenter_profile.user.username}}">{{comment.commenter_profile.realname}}</a>:</th>
1632- <td class="form-item-value">{{comment.comment|linebreaks}}</td>
1633- </tr>
1634+
1635+<h3 class="comments-nbr">
1636+{% blocktrans with team_event_object.teameventcomment_set.all.count as comment_count %}
1637+ {{ comment_count }} Comments
1638+{% endblocktrans %}
1639+</h3>
1640+
1641+<ol id="comments" class="comments">
1642+ {% for comment in team_event_object.teameventcomment_set.all %}
1643+ <li id="comment-{{ comment.pk }}" class="response">
1644+ <div class="mugshot">
1645+ <a href="https://launchpad.net/~{{ comment.commenter_profile.user.username }}" class="url" title="{{ comment.commenter_profile.user.get_full_name }}">
1646+ <img alt="" class="photo fn" src="{% if comment.commenter_profile.mugshot %}{{ comment.commenter_profile.mugshot }}{% else %}{{MEDIA_URL}}img/default-mugshot.png{% endif %}">
1647+ </a>
1648+ </div>
1649+ <div class="comment-body">
1650+ <a href="https://launchpad.net/~{{ comment.commenter_profile.user.username }}" class="url" title="{{ comment.commenter_profile.user.get_full_name }}">
1651+ {% if comment.commenter_profile.user.get_full_name %}
1652+ {{ comment.commenter_profile.user.get_full_name }}
1653+ {% else %}
1654+ {{ comment.commenter_profile.realname }}
1655+ {% endif %}
1656+ </a>
1657+ <div class="comment-error" style="display:none;"></div>
1658+ <div class="comment-comment">
1659+ {{ comment.comment|linebreaks|urlize }}
1660+ </div>
1661+ <p class="comment-meta">
1662+ <a href="#comment-{{ comment.pk }}" class="posted" title="{{ comment.local_date_created }}">
1663+ {{ comment.local_date_created|date:"d F Y" }}</a>
1664+ {% if comment.commenter_profile.user.username == user.username %}
1665+ ยท <a class="edit" href="#">Edit</a> - <a href="{% url team-event-comment-delete comment.id %}?next={% url team-event-detail team_event_object.first_team.lp_name team_event_object.id %}">Delete</a>
1666+ {% endif %}
1667+ </p>
1668+ </div>
1669+ </li>
1670 {% endfor %}
1671-{% endfor %}
1672-</table>
1673+</ol>
1674 {% endif %}

Subscribers

People subscribed via source and target branches